...

ispJTAGによるLatticeECP/EC FPGA用 SPIフラッシュメモリの

by user

on
Category: Documents
12

views

Report

Comments

Transcript

ispJTAGによるLatticeECP/EC FPGA用 SPIフラッシュメモリの
TN1078_04.0J
Oct. 2005
ispJTAGによるLatticeECP/EC FPGA用
SPIフラッシュメモリのプログラミング
はじめに
すべてのSRAMタイプFPGAのように、LatticeECPTM/LatticeECTMデバイスはパワーアップ時にコンフィグレ
ーション(構成)される必要があります。以下の方法でこのコンフィグレーションが可能です。
1. シリアル・ペリフェラル・インターフェイス(SPI)ブートメモリ
2. 伝統的なFPGAブートメモリ
3. JTAG
4. マイクロプロセッサ・インターフェイス
ブートメモリが望まれる場合、SPIアプローチは伝統的なFPGAブートメモリに対して多くの利点を提供しま
す:
1. SPIデバイスは複数のベンダから入手可能で、安定供給を確実にします。
2. SPIメモリのコストは伝統的なFPGAブートメモリより最大75%安価です。
3. SPIメモリは8ピン・パッケージで入手でき、伝統的なFPGAブートメモリに用いられるパッケージよ
りかなり小スペースです。
すべてのブートメモリのように、SPIシリアル・フラッシュメモリは、FPGAを構成するデータでプログラム
される必要があります。LatticeECP/ECデバイスと組み合わせて用いられるSPIメモリをプログラムするため
には3つのオプションがあります。SPIメモリは(1)スタンドアロン・プログラマを用いて、ボードから取
り外した状態でプログラムします。(2)メモリのSPIインターフェイスを使用して、オンボードでプログラ
ムできます。または、(3)メモリはJTAGによってLatticeECP/ECデバイスを通してオンボードでプログラ
ムします。
このテクニカルノートはJTAGインターフェイスを用いて、SPIメモリをオンボードでプログラムする方法に
ついてを詳しく述べます。
関連ドキュメント
以下のドキュメントがラティス・ウェブサイト(www.latticesemi.com)からダウンロードできます。
・ LatticeECPとECTM - 業界標準SPIシリアル・フラッシュメモリによる低コストFPGAのコンフィグ
レーション
・ LatticeECP/ECファミリ・ハンドブック
・ ラティス・テクニカルノートTN1053、LatticeECP/EC sysCONFIGTM(日本語版TN1053J)
使用ガイド
・ ispDOWNLOAD® ケーブル、データシート
ハードウェアとソフトウェア要件
・ ispDOWNLOADケーブル∼USBかパラレルのどちらか。部品番号についてはispDOWNLOAD Cable
Data Sheetを参照してください。
・ 適切にインストールされたispLEVER®4.2またはそれ以降
・ 適切にインストールされたispVM® System14.3またはそれ以降
LatticeECP/EC
20-1
SPI Flash
TN1078_04.0J
Oct. 2005
SPIとSPIXの違い
市場で入手できるSPIシリアル・フラッシュメモリの大多数は、16進数03(03H)という共通の読み出しオ
ペ・コード(Operation Code)をサポートしていますので、これらは時々SPI3デバイスと呼ばれます。FPGA
シリコンの中にこの読み出しオペ・コード03Hを固定配線することによって、LatticeECP/ECデバイスはこ
れらのデバイスとの直接接続を可能とします。
LatticeECP/ECのSPIXモードは、異なる読み出しオペ・コードをサポートするSPIシリアル・フラッシュ・
デバイスへのインターフェイスを容易にします。SPID[7:0]ピンに配線されたPCB上のプルアップ/プルダウ
ン抵抗で、その特定のフラッシュ・デバイスがどのオペ・コードをサポートするかをFPGAに伝えることで
可能にします。パワーアップ時にコンフィグレーション・モード・ピンCFG2/CFG1/CFG0のレベル(値)
が 001 の場合、FPGAはフラッシュメモリにアクセスするためにPCB上で固定配線で与えられたオペコー
ドを用います。
表20-1 デバイス・コンフィグレーション・コード
CFG2
CFG1
CFG0
コンフィグレーション・モード
0
0
0
SPI3 フラッシュ
0
0
1
SPIX フラッシュ
1
0
0
マスタ・シリアル
1
0
1
スレーブ・シリアル
1
1
0
マスタ・パラレル
1
1
1
スレーブ・パラレル
X
X
X
IspJTAG(常時優先)
注: SPIシリアル・フラッシュメモリを使用する場合は 000'か 001'に設定されなければなりません。
メーカーとデバイス・ファミリ
表20-2 “SPI3”互換フラッシュメモリのメーカ
メーカ
デバイスファミリ
ST Microelectronics
M25P
Wnbond
W25P
Silicon Storage Technology
SST25VF
Spansion
S25FL
PMC
Pm25LV
Atmel
AT25F
注: これはメーカやデバイス・ファミリの完全なりストを意味するものではありません。
SPIシリアル・フラッシュメモリのサイズ
表20-3で表わされるように、FPGAのロジック規模はSPIシリアル・フラッシュメモリのサイズ要件を決定し
ます。ispLEVERに圧縮オプションを用いることによって、より小さいサイズのフラッシュメモリを使用で
きます。
表20-3 フラッシュメモリ・サイズの選択
LatticeECP/EC
ファミリ
デバイス
最大構成ビット
サイズ (Mb)
LatticeECP/EC
EC1
EC3
必要なブートメモリ
圧縮なし(Mb)
標準的な圧縮比
0.6
1
25%
1.1
2
25%
ECP/EC6
1.8
2
25%
ECP/EC10
3.1
4
25%
ECP/EC15
4.3
8
25%
20-2
SPI Flash
TN1078_04.0J
Oct. 2005
ECP/EC20
5.3
8
25%
ECP/EC33
7.9
8
25%
注: 圧縮後のサイズが圧縮前より大きくなることがあり得ます。設計完了後に確認する必要があります。
ハードウェア
このセクションはSPIシリアル・フラッシュメモリを物理的に配線する方法を説明します。
SPIシリアル・フラッシュ・インターフェイス
8ピンSPIシリアル・フラッシュ・メモリの標準ピン配置は以下(上面図)に示されます。
図20-1 8ピンSPIフラッシュ・メモリ、標準ピン配置
注;SPI Iシリアル・フラッシュへの信号をドライブするバンクのVCCIOは、SPIシリアル・フラッシュメモリ
のVCCに合わせる必要があります。(現在は電圧が3.3Vですが、将来フラッシュ・チップのプロセス技術が進
み変わるかもしれません。) LatticeECP/ECのパッケージでは、これら信号はバンク3にあります。
SPIインターフェイスは以下の信号から成る4線シリアル・インターフェースです。
1. CS ∼ チップ・セレクト入力。デバイス動作をイネーブルします。Highのとき、デバイスはスタンバ
イ状態で、出力はトライステートになります。Lowのとき、デバイスがパワーアップして、命令(オペ
コード)を書いたりデータをデバイスと読み書きできます。
2. CLK ∼ シリアル・クロック入力。タイミングをインターフェイスに提供します。シリアル・データ
入力(DI)はCLKの立ち上がりエッジでラッチされます。シリアルデータ出力はCLKの立ち下がりエッ
ジの後に変化します。
3. DI ∼ シリアルデータ入力。デバイスがイネーブルされているとき、このピンから命令、アドレス、
およびデータをシリアルに書き込みます。データはCLKの立ち上がりエッジでラッチされます。
4. DO ∼ シリアルデータ出力。デバイスがイネーブルされているとき、このピンからデータとステータ
スがシリアルに読み出されます。データはCLKの立ち下がりエッジでシフトアウトされます。
また、SPIインターフェイスは以下の2つの機能をサポートします。
1. HOLD ∼ 入力。デバイスのCSをネゲートしないでポーズ(pause)されることを可能にします。HOLD
がLowの場合、DOはトライステートになり、DIとCLKは無視されます。
複数のデバイスが同じSPI信号を共有しているとき、この機能は役に立ちます。
2. WP ∼ ライト・プロテクト入力。ステータス・レジスタのブロック・プロテクト・ビットに不注意に
書くことを防ぐために用いられます。
注:標準のLatticeECP/EC SPIインターフェイスは基本的な4線インターフェイスをサポートしますが、必要な
場合、ユーザはこれらの追加機能を自由に実装することができます。
LatticeECP/EC
20-3
SPI Flash
TN1078_04.0J
Oct. 2005
ispJTAGインターフェイス
ispJTAGインターフェイスはIEEE1149.1バウンダリ・スキャンとIEEE1532インシステム・コンフィグレー
ションの両方をサポートします。1x10、1x8 と 2x5パラレルポート・ダウンロード・ケーブル・ヘッダーの
標準ピン配置は表20-4に示します。1x10ヘッダが推奨されますが、最終的には入手性などの要因により選択
されるでしょう。新ダウンロードケーブルは全てフライワイヤ形式で提供され、どのヘッダタイプにも使用
できます。表20-4の方向はケーブル側から見ています。例えば、 出力 とあるのはケーブルからFPGAへ
の出力を示します。
表20-4 ダウンロードヘッダのピン配置
ピン名称
VCCJ
TDO
TDI
PROGRAMN
TRST
TMS
GND
TCK
DONE
INITN
1x10
1
2
3
4
5
6
7
8
9
10
1x8
1
2
3
4
5
6
7
8
2X5
6
7
5
10
9
3
2, 4, 8
方向
―
入力
出力
出力
出力
出力
―
出力
入力
入力
記 述
3.3v, or 2.5v
テストデータ出力
テストデータ入力
FPGAコンフィグを強制開始
テストリセット。N/A
テストモードセレクト
グランド
テストクロック
FPGAコンフィグ完了。オプション
FPGAコンフィグ開始準備OK。オプション
1. VCCJ ∼ JTAGのVCC 。ispDOWNLOADケーブルに電源を供給
2. TDO ∼ テストデータ出力。テスト・デバイスからケーブルまでの読み出しシリアルデータ
3. TDI ∼ テストデータ入力。ケーブルを介してデバイスに書き込まれるシリアルデータ
4. PROGRAMN ∼ Lowにアサートされると、コンフィグレーション・シーケンスを開始する
5. TRST ∼ テストリセット。未使用のため、非接続にする
6. TMS ∼テスト・モード選択。IEEE1149.1ステート・マシンを制御する
7. TCK ∼ テスト・クロック出力。IEEE1149.1ステート・マシンの動作クロック
8. GND ∼ デジタル・グランド
9. DONE ∼ オプションでUSBのみ。オープン・ドレイン、内部プルアップ。FPGAコンフィグレーショ
ン・シーケンスが完了したことを示す
10.、INITN ∼ オプションでUSBのみ。オープン・ドレイン、内部プルアップ。FPGAが構成される準備
ができていることを示す。Lowの場合は準備ができていないか、或いはコンフィグレーション中に何ら
かのエラーが発生したことを示す
注: DONEとINITNピンの使用はオプションですが、コンフィグレーションが成功したかどうかをispVMシス
テムがチェックすることを可能にします。DONEかINITNがコネクタに配線される場合、ispVMシステムのケ
ーブルとI/Oポート・セットアップ(Cable and I/O Port Setup)セクションで適切なダイアログボックスを
チェックしなければなりません。その他の詳細については、このドキュメントのソフトウェア・セクション
を参照してください。
LatticeECP/EC
20-4
SPI Flash
TN1078_04.0J
Oct. 2005
接続図
図20-2の接続図は、ispJTAGコネクタ、FPGA、およびSPIシリアル・フラッシュをどのように配線するかを
示します。
図20-2 ハードウェア接続図
・ダウンロード・ヘッダは、ピン間0.1インチの標準スペースです。
・4.7Kプルダウン抵抗はVCCの立ち上がり間の偽クロックパルスを防ぎます。クロック線の近くに抵
抗を置いて、スタブの長さをできるだけ短く保ってください。
・CCLK周波数は50MHzくらい高くなり得ますので、この配線を十分に短く保つことが必要です。
・SPIシリアル・フラッシュへの信号をドライブするバンクのVCCIOは、SPIシリアル・フラッシュメ
モリのVCCに合わせる必要があります。(現在は電圧が3.3Vですが、将来フラッシュ・チップのプロセ
ス技術が進み変わるかもしれません。)すべてのパッケージにおいて、これらの信号はI/Oバンク3に位
置しています。
・コンフィグレーションの間、CCLKがSPIシリアル・フラッシュのCLKピンをドライブします。しか
し、FPGAがいったんコンフィグレーションを完了すると、CCLKはトライステートになります。CCLK
ピンはユーザ設計内では使用できません。
LatticeECP/EC
20-5
SPI Flash
TN1078_04.0J
Oct. 2005
・オンボードでSPIフラッシュをプログラムする場合は、FPGAファブリック内に生成する ソフト
SPIインターフェイス を使用しますが、CCLKはSPIシリアル・フラッシュにアクセスするためのク
ロックを供給する汎用I/Oピン(GPIO)と接続する必要があります。このGPIOピンは ソフトSPIイ
ンターフェイス の一部であり、パッケージ・タイプによって異なります。SPIインターフェイスの
ピンに関する全リストは表20-5にまとめられています。
・ispLEVERのプリマップ・プリファレンス・エディタ(Pre-Map Preference Editor)を用いること
などで、SPIシリアル・フラッシュに配線する他のピンと共に、このGPIOピンもロック(固定)しな
ければなりません。
表20-5 LatticeECP/ECをSPIシリアル・フラッシュメモリと配線するためのピン位置
デバイス名
ECP33
EC33
ECP20
EC20
ECP15
EC15
ECP10
EC10
ECP6
EC6
EC3
EC1
FPGA
ピン機能
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
GPIO
CCLK
CSSPIN
SISPI
SPIDO
SPI 信号
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
CLK
CLK
/CS
DI
DO
fpBGA
672
AB26
V20
Y25
W25
W26
AB26
V20
Y25
W25
W26
fpBGA
484
Y21
T20
V21
U21
V22
Y21
T20
V21
U21
V22
Y21
T20
V21
U21
V22
Y21
T20
V21
U21
V22
Y21
T20
V21
U21
V22
FpBGA
256
M13
L15
M16
K16
J16
M13
L15
M16
K16
J16
M13
L15
M16
K16
J16
M13
L15
M16
K16
J16
1
PQFP
208
TQFP
144
TQFP
100
113
130
121
123
124
113
130
121
123
124
113
130
121
123
124
113
130
121
123
124
77
94
85
87
88
77
94
85
87
88
77
94
85
87
88
52
66
57
59
60
52
66
57
59
60
1. SPIは4線インターフェイスで、本表は図20-2内の該当するこれら4線とGPIOを示すものである
LatticeECP/EC
20-6
SPI Flash
TN1078_04.0J
Oct. 2005
ソフトウェア
LatticeECP/EC FPGAでは、ispJTAGプログラムの一部を用いて、4線インターフェイスをSPIシリアル・フ
ラッシュのインターフェイスにリダイレクトすることによって、ispJTAGを介してSPIシリアル・フラッシュ
のプログラミングをします。
ユーザはまた、FPGAがユーザ論理を実行している間、ispJTAGから自由にSPIシリアル・フラッシュの読み
書きアクセスや、いわゆるバックグラウンド・コンフィグレーション・アップデートなどの機能を実行でき
ます。この場合はクロック用GPIOの使用に加えて、ソフトSPIインターフェイスをユーザの設計中に予め取
り込んでおく必要があります。
プログラミング手順
ispJTAG®を通してSPIシリアル・フラッシュをプログラムするために、FPGAはソフトSPIインターフェイ
スを含んでいければなりません。ispVM®システムとispDOWNLOAD®ケーブルでSPIシリアル・フラッシュ
メモリをプログラムすることで、ユーザにとってはトランスペアレントになります。ソフトウェアは単にソ
フトSPIインターフェイスのビットストリームをFPGAにロードし、その後ユーザ・ビットストリームをフラ
ッシュメモリにロードします。SPIシリアル・フラッシュのプログラミングがいったん完了すると、FPGA
はフラッシュメモリを読むことによって、自分自身を構成します。この場合もソフトウェアがユーザにとっ
てすべてトランスペアレントに動作しますので、他のシリアル・ブート・デバイスをプログラムするのと何
ら変わりません。
以下の手順はFPGAを選択し、SPIシリアル・フラッシュを選択し、そしてSPIシリアル・フラッシュをプロ
グラムするプロセスについて説明します。
これ以降のスクリーンショットはispVM®システム15.4からのものです。
図20-3 スキャン完了のメインウィンドウ
LatticeECP/EC
20-7
SPI Flash
TN1078_04.0J
Oct. 2005
1. ispDOWNLOADケーブルを適切なヘッダーに接続し、ボードに電源を入れます。
2. ispVMシステム・ソフトウェアを始動します。
3. メインウィンドウから、ツールバーに位置するScanボタンをクリックします。LatticeECP/ECデバイスは
自動的に検出されます。もしそうでない場合は、ispJTAGの接続をチェックし、ボードの電源が投入されて
いることを確認します。結果として、スクリーンは図20-3のようになります。
4. 次にIndexカラムのNumberをダブルクリックし、図20-4に示すようにデバイス情報(Device Information)
ウィンドウを開けます。
図20-4 デバイス情報 (Device Information)
5. Device Access Options下で、SPI Flash Programmingか、Advanced SPI Flash Programmingを選択
します。LatticeECP/ECのビットストリーム・ファイルが1本で、その動作を停止してSPIフラッシュをプロ
グラムする場合は、前者を選択します。LatticeECP/ECのビットストリーム・ファイルが2本以上でマージす
る場合、或いはLatticeECP/ECの動作を停止せずに(バックグランドで)SPIフラッシュをプログラムする場
合は、後者を選択します。バックグランド書き込みでは、ソフトSPI IPを設計中にインスタンスしておく必
要があります。
a. SPIフラッシュ・プログラミング SPI Flash Programming
i. Device Access Optionsプルダウンで、SPI Flash Programmingを選択します。図20-5に示
されるフラッシュデバイス選択窓が表示されます。
LatticeECP/EC
20-8
SPI Flash
TN1078_04.0J
Oct. 2005
図20-5 SPIシリアル・フラッシュ・デバイス・ダイアログ
ii. Selectボタンをクリックすると、図20-6のウィンドーが表示されますので、ターゲットのフラッシ
ュデバイスを選択します。
図20-6 SPIシリアル・フラッシュ・デバイス選択ダイアログ
iii. ターゲットSPIフラッシュ・デバイスを選択し、OKボタンをクリックします。選択されたデバイスが図
20-7のように表示されます。
図20-7 SPIシリアル・フラッシュ・デバイス・ダイアログで選択デバイスを表示
iv. OKボタンをクリックします。図20-8のようにデバイス情報が表示されます。
LatticeECP/EC
20-9
SPI Flash
TN1078_04.0J
Oct. 2005
図20-8 SPIシリアル・フラッシュ・デバイス情報ダイアログ
v. Data FileセクションでBrowseボタンをクリックし、SPIフラッシュにプログラムするLatticeECP/ECの
ビットストリーム・ファイルを選択します。その後OKボタンをクリックすると、図20-9のようにispVMメ
イン・ウィンドーに戻りますので、ステップ6に進みます。
LatticeECP/EC
20-10
SPI Flash
TN1078_04.0J
Oct. 2005
図20-9 メイン・ウィンドー(SPI Flash Programming)
b. アドバンストSPIフラッシュ・プログラミング Advanced SPI Flash Programming
i. 図20-4のDevice Access Optionsプルダウンで、Advanced SPI Flash Programmingを選択
します。
ii. FPGAローダ・セットアップ・ダイアログが現れます。
iii. CPLD or FPGA Deviceをクリックし選択すると、図20-10のようになります。
図20-10 FPGA選択デバイス・ウィンドウ
LatticeECP/EC
20-11
SPI Flash
TN1078_04.0J
Oct. 2005
iv. FPGA Loader Application Specific Data Fileフィールドには自動的にソフトSPI IPが選択
されます。もし、設計者独自のSPIインターフェイスを使用する場合は、そのビットストリー
ム・ファイルをブラウズして選択します。
v. OperationフィールドではFast Programを選択します。
vi. Configuration Data Fileをクリックし選択すると図20-11が現れます。
vii. Configuration Data FileフィールドのBrowseをクリックし、ispLEVERで生成したユーザ
のコンフィグレーションファイルを選びます。複数のビットストリームをマージしてSPIフラ
ッシュに書き込む場合は、 Merging Multiple Configuration Data Filesオプションを用いま
す。これは1つのSPIフラッシュから複数のFPGAを構成するためのものです。
図20-11 コンフィグレーション・データ・セットアップ
viii. 左枠内のFlash Deviceをクリックし選択します。図20-12が表示されます。
ix. Flash DeviceフィールドでSelectをクリックし、所望のデバイスを選択します。この例では
ST Microのデバイスを選択しています。
x. Operationフィールドでドロップダウン・メニューからErase, Program, Verifyを選択しま
す。
xi. OKをクリックしてFPGAローダを終了します。ispVMメインメニューに戻り、図20-13のよ
うになります。
LatticeECP/EC
20-12
SPI Flash
TN1078_04.0J
Oct. 2005
図20-12 フラッシュデバイスの選択
図20-13 メインウィンドー(Advanced SPI Flash Programming)
LatticeECP/EC
20-13
SPI Flash
TN1078_04.0J
Oct. 2005
6. メインプロジェクト・ウィンドーのメニューバーでOptions > Cableを、続いてI/O Port Setupをクリッ
クします。図20-14が表示されます。
7. 正しいケーブルタイプ(USBかパラレル)が選択されていること、PROG, DONE, INIT各ボックスが実際
のコネクタ接続に準じて正しく選択・非選択されていることを確認します(このドキュメントの 接続図 セ
クションを参照してください)。
図20-14 ケーブルとI/Oポート・セットアップ
8. OKをクリックします。
9. メインプロジェクト・ウィンドウから、ツールバーの緑色のボタンGOをクリックします。 これによりダ
ウンロード・プロセスが始まります。
10. ダウンロードが成功したら、新しいコンフィグレーションでFPGAを構成するために、ユーザは、FPGA
に電源を再投入するか、FPGAのPROGRAMNピンをLowにしなければなりません。
FPGA設計へのSPIインターフェイスの取り込み
FPGAが動作している間、例えばバックグラウンド・コンフィグレーション・アップデートを可能にするた
めに、JTAGからSPIシリアル・フラッシュにアクセスする手段として、ユーザの設計にソフトSPIインター
フェイスをインスタンスしなければなりません。ユーザの設計とソフトSPIインターフェイスを含むコンフ
ィグレーション・ビットストリームがいったん作成されると、プログラミング・シーケンスは上で詳しく述
べられたものと同じになります(ステップ5を参照)。
LatticeECP/EC
20-14
SPI Flash
TN1078_04.0J
Oct. 2005
サンプル・コード
以下のサンプル・コードは単純なVHDLとVerilogファイルで、どのようにソフトSPIインターフェイスのネッ
トリスト・ファイルをインスタンスするかを示しています。ネットリスト・ファイルはトップ・デザイン・
ファイルと同じディレクトリに置く必要があります。以下の例では、ネットリスト・ファイルはSPITOP.ngo
となってます。ネットリスト・ファイルはラティス・ウェブサイトから無償で入手できます
(http://www.latticesemi.com/dynamic/view_document.cfm?document_id=9167)。
VHDL
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity design_top is
port ( rst : in std_logic;
sclk : in std_logic;
cnt_out : out std_logic_vector(7 downto 0);
*
*
*
-- SPI Serial Flash pins
SPI_C : out std_logic; -- clock
SPI_D : out std_logic; -- data input
SPI_SN : out std_logic; -- chip select
SPI_Q : in std_logic -- data output
);
end;
architecture behave of design_top is
--Instantiate the file
component SPITOP
port (
SPI_PIN_C : out std_logic;
SPI_PIN_D : out std_logic;
SPI_PIN_SN : out std_logic;
SPI_PIN_Q : in std_logic
);
end component;
--User code
signal cnt: std_logic_vector(7 downto 0);
begin
process(sclk, rst)
begin
if rst = ‘1’ then
cnt <= (others => ‘0’);
elsif rising_edge(sclk) then
cnt <= cnt + 1;
end if;
end process;
cnt_out <= cnt;
*
*
*
-- SPITOP port map
spi_ip: SPITOP port map
(
SPI_PIN_C => SPI_C,
SPI_PIN_D => SPI_D,
SPI_PIN_SN => SPI_SN,
SPI_PIN_Q => SPI_Q
LatticeECP/EC
20-15
SPI Flash
TN1078_04.0J
Oct. 2005
);
end behave;
Verilog
module design_top(rst, sclk, cnt_out, spi_c, spi_d, spi_sn, spi_q) ;
input sclk, rst;
output [7:0] cnt_out;
// SPI Serial Flash pins
input spi_q;
output spi_d, spi_sn, spi_c;
reg [7:0] cnt_out;
// User code
always @ (posedge sclk or posedge rst)
begin
if (rst)
cnt_out = 2’h00;
else
cnt_out = cnt_out + 1;
end
// Instantiate Soft SPI Interface
SPITOP spi_ip
(
.SPI_PIN_C(spi_c),
.SPI_PIN_D(spi_d),
.SPI_PIN_SN(spi_sn),
.SPI_PIN_Q(spi_q)
);
endmodule
module SPITOP (SPI_PIN_C, SPI_PIN_D, SPI_PIN_SN, SPI_PIN_Q);
input SPI_PIN_D, SPI_PIN_SN, SPI_PIN_C ;
output SPI_PIN_Q;
endmodule
ソフトSPIインターフェイスはJTAGをSPIシリアル・フラッシュ・インターフェイスに接続するためにのみ
必要です。SPIデバイスをユーザ設計で用いる場合(例えばスクラッチパッド・メモリとしてなど)、直接
SPIピンにアクセスすることができるためソフトSPI インターフェイスは不要です。この場合FPGAコンフィ
グレーション・データの開始アドレスは必ずゼロでなければなりませんので、ユーザ定義のメモリ・スペー
スとして使用する場合は、コンフィギュレーション・データよりも上位アドレスに配置しなければなりませ
ん。あり得る最大コンフィグレーション・サイズより上位にアドレスを選ぶことを勧めます。例えば、
LatticeECP/EC20デバイスが用いらる場合、5.3Mbより上でスクラッチパッド開始アドレスを選択します(表
20-3を参照)。
LatticeECP/EC
20-16
SPI Flash
TN1078_04.0J
Oct. 2005
ピン配置のロック
ユーザがしなければならないことの最後は、どのピンがSPIシリアル・フラッシュ・デバイスに接続される
かをispLEVER®に与えることです(図20-2と表20-5を参照)。ispLEVER®プロジェクト・ナビゲータ(Project
Navigator)ウィンドウの左側からプロジェクトのデバイス・パッケージ名をクリックした後、右ウィンドウ
内のPre-Map Preference Editorの上をダブルクリックします(図20-15)。
図20-15 プリマップ・プリファレンス・エディタ(Pre-Map Preference Editor)の選択
これによりエディタが起動し、図20-16のように表示されます。プリマップ・プリファレンス・エディタは、
設計内の様々なI/Oにピン番号や他のアトリビュートなどを割り当てるツールです。
図20-16は672fpBGAの適切なピン選択を示し、またI/Oのタイプ適切な選択(この場合LVCMOS_3.3)を示
しています。パッケージごとに異なるピンの選択が必要です。詳細については表20-5と図20-2の接続図を参
照してください。
ピン・アトリビュートのすべてを入力した後に、プリファレンス・エディタを保存して閉じます。プロジェ
クトナビゲータの右側のウィンドウを下にスクロールし、Generate Bitstream Dataをダブルクリックしま
す(図20-17)。ビット・ストリームがいったん生成された後は、このドキュメントの プログラミング手
順 セクションの記述に従います。
図20-16 プリファレンス・エディタ
LatticeECP/EC
20-17
SPI Flash
TN1078_04.0J
Oct. 2005
図20-17 ビットストリーム・データの生成(Generate Bitstream Data)
デザインにあたっての考慮事項
以下のヒントは、SPIシリアル・フラッシュをLatticeECP/ECデバイスと用いる場合、ファーストパス・サク
セスを確実にする手助けとなるでしょう。
PROGRAMNピンオープンのままにするか、ボタンに配線する、或いはマイクロプロセッサに接続するなど
が有り得ます。PROGRAMNピンはパワーアップ時にHiでなければならず、またプルダウン低抗を接続しな
いでください。このピン内部には弱いプルアップ抵抗ががありますが、必要であれば10KΩの外部プルアッ
プ抵抗を付加してください。
INITNピンはオープンのままにするか、マイクロプロセッサやステータスレジスタに接続する、または他の
LatticeECP/ECデバイスに接続することができます。コンフィグレーション時に、このピンをLowに保持す
ると、デバイスはコンフィグレーションを開始しません。このピンにはプルダウン低抗を接続しないでくだ
さい。このピン内部には弱いプルアップ抵抗がありますが、必要であれば10KΩの外部プルアップ抵抗を付
加してください。このピンは8mAのドライブ能力があります。より大きい電流が必要なLEDをドライブする
場合、外部ドライバ/バッファを用いてください。
DONEピンはオープンのままにするか、マイクロプロセッサやステータスレジスタに接続する、または他の
ラティス・デバイスのDONEピンと接続することができます。
他デバイスのDONEピンとこのピンをOR接続する場合、チェーンのDONEピンのすべてを、(ソースコード
内のアトリビュートによるか、ispLEVERを用いて)オープン・ドレインに設定する必要があります。また、
約10Kのプルアップ抵抗を付加する必要があります。
コンフィグレーションの間、このピンをLowに保持することは、LatticeECP/ECがウェイクアップする(ユ
ーザ論理が起動する)のを妨げることになります。このピンにはプルダウン低抗を接続しないでくださいこ
のピン内部には弱いプルアップ抵抗ががありますが、必要である場合、10KΩの外部プルアップ抵抗を付加
してください。このピンは8mAのドライブ能力があります。より大きい電流が必要なLEDをドライブする場
合、外部ドライバ/バッファを用いてください。
SPIピンのすべてがI/Oバンク3の一部です。したがって、バンク3のVCCIOをSPIシリアル・フラッシュと同じ
電圧に接続しなければなりません。
LatticeECP/EC
20-18
SPI Flash
TN1078_04.0J
Oct. 2005
SPIシリアル・フラッシュを利用するとき、ユーザI/OとしてSPIピンを使用することは推奨しません。やむ
を得ずユーザI/OとしてSPIピンの1つ以上を用いなければならない場合、I/Oタイプや(入力か出力かの)方
向を変えないでください。例えば、用いたいSPIピンがコンフィグレーション時に入力である場合、そのピ
ンを出力ではなく入力として用い、またタイプもLVCMOS33にしなければなりません。
ispLEVERプリファレンス・エディタでConfig_ModeをSPI3にし、かつソフトIPをインスタンスしようとす
ると、コードをコンパイルするときに警告が出ます。これはソフトIPが、SPIシリアル・フラッシュのプロ
グラミング時に通常のI/OとしてSPI3ポートの使用する必要があるためです。Config_ModeをSPI3の代わり
にNoneかJTAGを選択することによって、この警告を避けることができます。
Config_ModeをSPI3に設定するか、またはソフトIPをソースコード内にインスタンスする(プリファレンス・
エディタかソースコードでSPIピンを割り当てる)と、SPIピンは配置配線ツールによって使用されることか
ら保護されます。
もしConfig_ModeをNoneかJTAGに設定する、あまたはソフトIPをインスタンスしていないと、SPIピンは配
置配線ツールによって使用されることから保護されません。この場合、SPIピンに対してProhibit Site "<pin
number>"というコマンド(制約)を用いることで、配置配線ツールがこれらのピンを用いるのを妨げるよう
にします。デザインに必要なI/O数が不足している場合、配置配線ツールに可能な限り柔軟性を与えたい場合、
これは特に役に立ちます。 Prohibit 指定を設定するために、プリファレンス・エディタでパッケージ・ビ
ュー(Package View)を用いることができます。
ispVMプログラム・ソフトウェアによってサポートされているSPIシリアル・フラッシュを選択するようにし
てください。最新版ispVMソフトウェアでサポートするSPIシリアル・フラッシュベンダかどうかチェックし
てください。ispVMソフトウェアはラティスウェブサイトwww.latticesemi.comから無料で利用できます。SPI
シリアル・フラッシュが最新ソフトウェアでサポートされていない場合、Latticeテクニカルサポートにお知
らせください。
本ドキュメント表20-5のピン以外に、CCLKをドライブするためにGPIOピンを選択した場合、SPIソフトIP
をソースコードにインスタンスする必要があります。 SPIインターフェイスを持つFPGAデザイン のセク
ションを参照して下さい。
まとめ
新しい低コストLatticeECP/ECファミリを低コスト、サード・パーティのSPIシリアル・フラッシュメモリと
組み合わせることによって、技術者は現在、非常に費用効率がよいシステム・ソリューションを活用するこ
とができます。また、コスト節減に加えて、設計はスペースファクタに優れる8ピン・パッケージという利
益も得ることができます。伝統的なコンフィグレーション方法に加えて、この新しい機能が最新のラティス・
ツールによって完全にサポートされます。
テクニカル・サポート支援
ホットライン: 1-800-LATTICE (North America)
+1-408-826-6002 (Outside North America)
e-mail: [email protected]
インターネット: www.latticesemi.com
LatticeECP/EC
20-19
SPI Flash
Fly UP