図5-14 に示す よ う に、Device DNA は 57ビ ッ ト の値です。2 つの最上位ビ ッ ト は常に 1 お よ び 0 です。 残 り の 55 ビ ッ ト は Spartan-6 FPGA 固有の も のです。
動作
図5-14 に、DNA_PORT デザ イ ンプ リ ミ テ ィ ブの一般的な機能を示 し ます。FPGA アプ リ ケーシ ョ ンは、 最初に DNA_PORT プ リ ミ テ ィ ブ をデザ イ ン内で イ ン ス タ ン シエー ト し てお く 必要があ り ま す (図5-13 参照)。
Device DNA を読み出すには、 まず FPGA アプ リ ケーシ ョ ンが DNA_PORT 出力シ フ ト レ ジ ス タ に ID の値を送信 し ます。READ 入力は、CLK の立ち上が り エ ッ ジでアサー ト さ れ る 必要があ り ま す (表5-51 参照)。 こ れに よ り 、 出力シ フ ト レ ジ ス タ に ID の 57 ビ ッ ト すべてが並行 し て読み込ま れます。ID の ビ ッ ト 56 は常に 1 であ る ため、DOUT 出力 も 1 です。READ 操作は SHIFT 操作 よ
り 優先 さ れます。
ID 値の読み出 し を継続す る には、表5-51 に示す よ う に、CLK の立ち上が り エ ッ ジの後で SHIFT を アサー ト す る 必要があ り ます。 こ れで、 出力シ フ ト レ ジ ス タ の値が DOUT 出力にシ フ ト さ れま す。DIN 入力の値は、 シ フ ト レ ジ ス タ にシ フ ト さ れます。
CLK が High の と き に SHIFT が Low か ら High に遷移す る と 、初期 ク ロ ッ ク エ ッ ジが誤っ た も の にな る ため、 こ れは避け て く だ さ い。SHIFT は CLK が Low の と き 、 ま たは CLK の立ち下が り エ ッ ジでのみアサー ト す る のが理想的です。
READ と SHIFT の両方が Low の場合、 出力シ フ ト レ ジ ス タ の値が保持 さ れ、DOUT の値 も 変わ り ません。
X-Ref Target - Figure 5-14
図 5-14 : DNA_PORT の動作
56 55 54 0
0 1 55-Bit Unique Device Identifier (Device DNA)
Factory Programmed, Unchangeable
56 0
DIN 57-Bit Bit Loadable Shift Register DOUT
READ = 1 SHIFT=1
UG380_c5_14_052009
CLK
Read = 0
表 5-51 : DNA_PORT の動作
動作 DIN READ SHIFT CLK シ フ ト レ ジ ス タ DOUT
HOLD X 0 0 X 前の値を保持 前の値を保持
READ X 1 X ↑ 57 ビ ッ ト の ID をすべて読み込み ID のビ ッ ト 56 (常に 1)
SHIFT DIN 0 1 ↑ DIN を ビ ッ ト 0 にシ フ ト し 、
シ フ ト レ ジ ス タ の値を DOUT にシ フ ト
シ フ ト レ ジ ス タ の ビ ッ ト 56 注記 :
X = Don’t Care
- ¦ = 立ち上が り ク ロ ッ クエ ッ ジ
ID メ モ リ の仕様
図5-14 に、DNA メ モ リ の一般的な特性を示 し ます。FPGA の ID 値は、 ワース ト ケース の推奨動 作状態で継続 し て使用 し た場合、 最低 10 年間保持 さ れ ます。ID は表5-51 に定義 さ れてい る よ う に READ 動作を使用 し て最低 3000 万サ イ ク ル読み出す こ と がで き ます。 こ れは、Spartan-6 FPGA の動作寿命で考え る と 11 秒ご と に 1 回の読み出 し に相当 し ます。
ID の拡張
図5-15 に示す と お り 、DNA_PORT プ リ ミ テ ィ ブ を使用す る ほ と ん ど のアプ リ ケーシ ョ ン で、DIN デー タ 入力が ス タ テ ィ ッ ク な値に接続 さ れてい ます。
図5-16 の よ う に、DOUT シ リ アル出力ポー ト を DIN シ リ アル入力ポー ト に接続す る と ID の長 さ を延長で き ます。 こ の よ う にす る と 、ID を任意の長 さ に拡張で き ます。 し か し 、 こ の場合で も 、57 ビ ッ ト の繰 り 返 し パ タ ーンで、 各パ タ ーンに 55 ビ ッ ト のみです。図5-16 にはバ ッ フ ァ ーが 1 つ含 まれてお り 、 ユーザーに よ る DNA ロ ジ ッ ク 拡張に対応す る ロ ジ ッ ク 挿入、 ま たはホール ド タ イ ム 要件を満たすループバ ッ ク 遅延を示 し てい ます。
ま た、FPGA の ロ ジ ッ ク リ ソ ー ス を使用 し て ID に ビ ッ ト を追加す る こ と も 可能です。図5-17 に 示す よ う に、FPGA アプ リ ケーシ ョ ンは DNA_PORT の DIN シ リ アル入力を介 し て追加の ビ ッ ト を挿入で き ます。 ロ ジ ッ ク リ ソ ース を利用す る 場合は、 固定値のビ ッ ト を追加す る こ と も 、Device DNA か ら 計算 し た変数のビ ッ ト を追加す る こ と も で き ます。
X-Ref Target - Figure 5-15
図 5-15 : 定数でシ フ ト
X-Ref Target - Figure 5-16
図 5-16 : 巡回シ フ ト DIN DOUT
DNA_PORT
READ SHIFT CLK
UG380_c5_15_052009
DIN DOUT DNA_PORT
READ SHIFT CLK
UG380_c5_16_021010
JTAG に よ るデバイ ス ID へのア ク セス
FPGA の内部デバ イ ス ID と 、DIN 入力にシ フ ト さ れ る 値は、ISC_DNA コ マ ン ド を使用 し JTAG ポ ー ト を 介 し て 読 み 出 す こ と が で き ま す。 こ の 場 合、ISC_DNA コ マ ン ド を 発 行 す る 前 に
ISC_ENABLE を読み込む必要があ り ます。
図5-14 に示す よ う に、 デバ イ ス がシ フ ト DR ス テー ト に入 る と 、ISC_DNA コ マ ン ド に続いて ID のビ ッ ト 56 が TDO JTAG 出力に出力 さ れます。Device DNA の残 り のビ ッ ト お よ びレ ジ ス タ への 入力のデー タ は、JTAG コ ン ト ロ ー ラ ーがシ フ ト DR ス テー ト の と き に順次シ フ ト 出力 さ れ ま す。
こ の動作が完了す る と き 、ISC_DISABLE コ マ ン ド を発行す る 必要があ り ます。
iMPACT に よ るデバイ ス ID へのア ク セス
ISE 10.1 (お よ びそれ以降のバージ ョ ン) の iMPACT ソ フ ト ウ ェ アで も Device DNA 値を読み出す こ と が で き ま す。FPGA か ら Device DNA を 読 み 出 す に は、 バ ッ チ コ マ ン ド readDna -p
<position>を実行 し ます。
ビ ッ ト ス ト リ ームの圧縮
FPGA ビ ッ ト ス ト リ ームはデフ ォ ル ト で圧縮 さ れてい ませんが、Spartan-6 FPGA は基本的な ビ ッ ト ス ト リ ーム圧縮をサポー ト し ます。こ の圧縮は と て も 単純な も のですが、アプ リ ケーシ ョ ンに よ っ ては効果的です。ISE ビ ッ ト ス ト リ ームジ ェ ネ レー タ ーは、FPGA ビ ッ ト ス ト リ ームに重複す る コ ン フ ィ ギ ュ レーシ ョ ン デー タ フ レーム がないか を調べ ます。 こ れ ら の重複は次の よ う なデザ イ ン で発生す る こ と がほ と ん ど です。
• 未使用のブ ロ ッ ク RAM ま たはハー ド ウ ェ ア乗算器を使用す る FPGA デザ イ ン
• ロ ジ ッ ク 使用率の低い FPGA デザ イ ン (多 く の場合、FPGA ア レ イ が空)
重複す る デー タ の確認後、ISE ソ フ ト ウ ェ アに よ る 圧縮 さ れた FPGA ビ ッ ト ス ト リ ームの生成が可 能にな り ます。FPGA の コ ン フ ィ ギ ュ レーシ ョ ン時に、 内部の コ ン フ ィ ギ ュ レーシ ョ ン コ ン ト ロ ー
ラ ーが重複 し たデー タ フ レーム を複数の位置に コ ピー し ます。
圧縮量は確定的な も のではあ り ません。 ソ ース FPGA デザ イ ン を変更す る と 、 圧縮 さ れた ビ ッ ト ス ト リ ーム のサ イ ズが増大 し ま す。 ほぼ空の FPGA デザ イ ン には全体的に大 き な圧縮要素があ り ま す。 同様に、 ブ ロ ッ ク RAM カ ラ ムが空の FPGA デザ イ ンに も 大 き な圧縮要素があ り ます。
図 5-17 : ビ ッ ト ス ト リ ーム固有の コ ー ド
UG380_c5_17_052009
DIN DOUT DNA_PORT
READ SHIFT CLK Application Code
DIN DOUT
READ SHIFT CLK READ
SHIFT CLK
圧縮 さ れた ビ ッ ト ス ト リ ームの大 き な利点は次の と お り です。
• メ モ リ フ ッ ト プ リ ン ト の縮小
• 不揮発性 メ モ リ のプ ロ グ ラ ム時間の高速化
• コ ン フ ィ ギ ュ レーシ ョ ン時間の高速化
BitGen の-g compressオプシ ョ ン を使用す る と 圧縮が有効にな り ます。
パ ラ レ ルプ ラ ッ ト フ ォーム フ ラ ッ シ ュ PROM には、 独自の圧縮 メ カ ニズ ムがあ り ます。 詳細は、
『Platform Flash PROM ユーザーガ イ ド 』 (UG161) の 「XCFxxP 圧縮の復元お よ び ク ロ ッ ク オプ シ ョ ン」の章を参照 し て く だ さ い。
リ ー ド バ ッ ク および
コ ン フ ィ ギ ュ レーシ ョ ンの検証
Spartan®-6 デバ イ ス では、SelectMAP、ICAP、 お よ び JTAG イ ン タ ーフ ェ イ ス を介 し て コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ を読み出す こ と がで き ます。 リ ー ド バ ッ ク 検では、 ユーザー メ モ リ エ レ メ ン ト (LUT RAM、SRL16、 お よ びブ ロ ッ ク RAM) のその時点での値 を含め、 すべて の コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ セルを読み出す こ と が可能です。
コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ を読み出すには、 リ ー ド バ ッ ク を開始す る コ マ ン ド シーケ ン ス を デバ イ ス に送信す る 必要があ り ます。リ ー ド バ ッ ク が開始す る と 、デバ イ スは コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ の内容 を SelectMAP ま た は JTAG イ ン タ ー フ ェ イ ス に出力 し ま す。「SelectMAP イ ン タ ーフ ェ イ ス か ら の コ ン フ ィ ギ ュ レーシ ョ ンレ ジ ス タ へのア ク セ ス」に、IEEE Std 1149.1 JTAG の コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ の読み出 し 手順が記載 さ れてい ます。
リ ー ド バ ッ ク コ マ ン ド シーケ ン ス は、 マ イ ク ロ プ ロ セ ッ サ、CPLD、 ま たは FPGA ベース のシ ス テ ムか ら 送信で き ます。 ま た、iMPACT で JTAG ベース の リ ー ド バ ッ ク 検証を実行す る こ と も 可能 です。iMPACT はザ イ リ ン ク ス の ISE® で提供 さ れてい る デバ イ ス プ ロ グ ラ ミ ン グ ソ フ ト ウ ェ ア で、Spartan-6 デバ イ ス のすべての リ ー ド バ ッ ク お よ び比較機能をサポー ト し てお り 、 コ ン フ ィ ギ ュ レーシ ョ ンエ ラ ーの有無を レ ポー ト す る 機能 も あ り ます。
デバ イ ス か ら コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ の内容が読み出 さ れ る と 、 次に リ ー ド バ ッ ク ビ ッ ト ス ト リ ーム と コ ン フ ィ ギ ュ レ ーシ ョ ン ビ ッ ト ス ト リ ーム が比較 さ れ、 エ ラ ーの有無が判定 さ れ ま す。 こ の処理の詳細は、「 リ ー ド バ ッ クデー タ の検証」で説明 し ます。
リ ー ド バ ッ ク を実行する ためのデザイ ンの準備
JTAG ま たは SelectMAP を使用 し て リ ー ド バ ッ ク を行 う 場合、 次の 2 点を必ずビ ッ ト ス ト リ ーム に設定 し て く だ さ い。BitGen セキ ュ リ テ ィ 設定では、 リ ー ド バ ッ ク の禁止を解除 し (-g Security :none)、 ビ ッ ト ス ト リ ーム の暗号化は使用 し ないで く だ さ い。 ま た、SelectMAP イ ン タ ーフ ェ イ ス を利用 し て リ ー ド バ ッ ク を行 う 場合は、BitGen の persist オプシ ョ ン を-g Persist:Yesに設 定す る 必要があ り ます。 こ の設定を行っ ておかない と SelectMAP デー タ ピ ンは コ ン フ ィ ギ ュ レー シ ョ ン後にユーザー I/O と な り 、 その後の コ ン フ ィ ギ ュ レーシ ョ ンが行え な く な り ます。 バ ウ ン ダ リ ス キ ャ ン ポー ト を使用 し て リ ー ド バ ッ ク を行 う 場合は、 最初に挙げたセキ ュ リ テ ィ お よ び暗号 化のオプシ ョ ン以外に特別な設定は必要あ り ません。 ま た、 こ れ ら の要件は ICAP で リ ー ド バ ッ ク す る と き に適用す る 必要はあ り ません。
リ ー ド バ ッ ク コ マ ン ド シーケ ン ス
Spartan-6 FPGA コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ は、JTAG、SelectMAP、ICAP イ ン タ ーフ ェ イ ス
ジ ッ ク か ら ブ ロ ッ ク RAM へのア ク セ ス中、ユーザーデザ イ ンか ら こ のブ ロ ッ ク RAM はア ク セ ス で き ませんが、FPGA デザ イ ンがア ク テ ィ ブ ま たはシ ャ ッ ト ダ ウ ン状態で も リ ー ド バ ッ ク は実行可 能です。
SelectMAP イ ン タ ー フ ェ イ スか ら の コ ン フ ィ ギ ュ レーシ ョ ン レ ジ ス タ へのア ク セス
SelectMAP イ ン タ ーフ ェ イ ス か ら コ ン フ ィ ギ ュ レーシ ョ ン メ モ リ を読み出すには、 イ ン タ ーフ ェ イ ス を 書 き 込み制御用に設定 し て FPGA へ コ マ ン ド を 送信 し 、 次に読み出 し 制御用に設定 し て、
デー タ をデバ イ ス か ら 読み出す必要があ り ます。SelectMAP イ ン タ ーフ ェ イ ス の書 き 込みお よ び読 み出 し は、RDWR_B 入力に よ っ て決定 し ます。SelectMAP デー タ ピ ンは、 イ ン タ ーフ ェ イ ス が書 き 込み制御に設定 さ れてい る と き (RDWR_B = 0) は入力で、 読み出 し 制御に設定 さ れてい る と き (RDWR_B = 1) は出力です。
CSI_B 信号は、RDWR_B 信号を ト グルす る 前にデ ィ アサー ト す る 必要があ り (CSI_B = 1)、 そ う し なければ ABORT が発生 し ます (155ページの 「SelectMAP の ABORT」参照)。
SelectMAP イ ン タ ーフ ェ イ ス におけ る 書 き 込み制御 と 読み出 し 制御間の変更手順は、次の と お り で す。
1. CSI_B をデ ィ アサー ト す る 。 2. RDWR_B を ト グルす る 。
RDWR_B = 0 : 書 き 込み制御 RDWR_B = 1 : 読み出 し 制御 3. CSI_B を アサー ト す る 。
4. CSI_B お よ び RDWR_B は CCLK に同期す る 。 5. 図6-1 に、 こ の手順を図示 し ます。
コ ン フ ィ ギ ュ レーシ ョ ン レ ジ ス タ の読み出 し 手順 (SelectMAP)
最 も 簡潔な読み出 し 処理は、COR0 ま たは STAT レ ジ ス タ な どの コ ン フ ィ ギ ュ レーシ ョ ンレ ジ ス タ に対 し て実行 さ れます。 レ ジ ス タ に よ っ ては読み出 し ア ク セ ス がない も のがあ り ますが、 ア ク セ ス のあ るすべてのレ ジ ス タ は、SelectMAP イ ン ターフ ェ イ ス を介 し た読み出 し が可能です。SelectMAP イ ン ターフ ェ イ ス か ら STAT レ ジ ス タ を読み出す手順は、 次の と お り です。
1. デバ イ ス にバス幅検出シーケ ン ス と 同期 ワー ド を書 き 込む。
2. デバ イ ス に 「STAT レ ジ ス タ 読み出 し 」 パケ ッ ト ヘ ッ ダーを書 き 込む。
X-Ref Target - Figure 6-1
図 6-1 : SelectMAP ポー ト の書き込みおよび読み出 し 制御間の変更 CSI_B
RDWR_B
DATA[0:7]
UG380_c6_01_042909 WRITE
Byte n Byte 0 Byte n
CCLK
Byte 0
READ