PLDフューズファイルについて


1997. 7


PLDのフューズデータのフォーマットとしては、JEDECフォーマットが事実上の標準として利用されています。これはちょうどROMライタとHEXファイルの関係と同じです。PLDコンパイラは、この形式でコンパイル結果を出力し、PLDライタはこの形式のフューズデータを読み込むことになります。

JEDECフォーマットフューズデータは、STX(0x01)で始まりETX(0x02)までの間に記述されます。この中にさまざまな定義やデータなどのブロックが入ります。それぞれのブロックのデリミタには*を使用することになっています。CRやLFは空白文字として扱われます。次に例としてGAL16V8のフューズデータで説明しましょう。


^B                    ← STX
GAL16V8*QP20*QF2194*  ← 20pin PLDで、論理フューズ数 2194本。デバイス名は必須ではありません。
G0*F0*                ← プロテクト無し。論理フューズのデフォルト値 0 。
L0000 11110111111111111111111111111111*  ← 論理フューズ #0 から #31 まで指定。
L0256 01100111111111111111111111111111*  ← 論理フューズ #256 から #287 まで指定。
L0288 01111101111011111111111111111111*
L0320 01111101111111101111111111111111*
L1056 11111101111011111101111111111111*
L1088 11111101111111101101111111111111*
L1568 11111101111011111111111111011111*

               中 略

L1792 11111101110111011101110111011110*
L1824 11111101111011111111111111111101*
L1856 11111101111111101111111111111101*
L1888 11111101111111111110111111111101*
L1920 11111101111111111111111011111101*
L1952 11111101111111111111111111101101*
L2048 11111111*
L2128 1111111111111111111111111111111111111111111111111111111111111111*
L2192 01*
C6B22*     ← フューズデータのチェックサム。
^CF66A     ← ETX。続く 4桁の 16進数は、BCC(STXからETXまでの文字コードのサム)です。

【各ブロックの意味】

QP<n>

PLDのピン数を指定するブロックです。例えば、24pin PLDならQP24となります。

QF<n>

論理フューズマップのサイズを指定するブロックです。例えば、2048本の論理フューズがあるなら、QF2048となります。

G<n>

書き込み後 PLDにプロテクトをかけるかを指定します。G0ならフューズデータ読み出し可能、G1なら読み出し禁止となります。

F<n>

フューズデータのデフォルト値(0か1)を指定します。Lブロックで転送されなかったフューズデータはこの値を取ります。

L<n> <FuseData...>

論理フューズの値。例えばPALの場合、1で該当するフューズを切断、0で残し(接続)ます。Lに続く数値は論理フューズ番号(アドレス)で、その後のデータがそのフューズ番号から順にフューズマップに入力されます。そのブロックのフューズの値がFブロックで指定した値と全て同じ場合は、そのLブロックは省略できます。論理フューズ番号とフューズの位置はそれぞれのデバイスごとに違いますが、大抵のSPLDではデバイスの論理図と JEDECファイルに見えるフューズの配置が一致します。

C<hhhh>

論理フューズデータのチェックサム。フューズマップをバイト単位で区切り、そのバイトを全て加算した値の下位16ビットを4桁の16進数で示します。

V<n> <test vector>

ファンクションテスト用ベクター。ファンクションチェック機能のあるPLDライタで利用されます。