« 保護ダイオードの効果 | トップページ | JTAGを使ったFPGA真贋判定装置の設計開始 »

2022.04.16

XILINXのコンフィギュレーションにS25FS128Sを使うべきではない理由

1.8V対応のSPI ROMで、8ピンSOICパッケージで、128Mbitくらいの容量がもので、かつ、現時点で入手可能なものとしてCypressのS25FS128SAGMFI101というのがあるのですが、これはXILINX FPGAのコンフィギュレーションに使うことができないとされています。

似たような型番のS25FL128Sというのは3.3Vですがコンフィグに使うことができて、Vivadoも対応しています。

S25FS128SAGMFI101がなぜ使えないかというと、S25FL128とS25FS128Sのコマンド体系に微妙な違いがあるからです。

7シリーズのFPGAはSPI ROMからコンフィグしようとしたとき、最初にFast Readというコマンド(0x0B)を発行してビットストリームの先頭を読み出します。そして、データバス幅がx2やx4になっていると、デュアルまたはクアッド読み出しのコマンドを発行して、2ビット幅や4ビット幅でコンフィギュレーションしようとします。

なお、デュアル読み出しのコマンドは3Bまたは3C、クアッド読み出しのコマンドは6Bまたは6Cです。※128bit以上だとアドレスが3バイトになるのでコマンド3Cが使われる。それ以下は3B

 

S25FL128L(3.3Vの動作するほうのROM)では、3B 3Cまたは6B 6Cのコマンドは用意されているのですが、

S25fl_20220416153701

S25FS(1.8Vの対応していないほうのROM)では、なんと、3B 3Cのコマンドがないのです。

S25fscmd

これが原因で、S25FSをコンフィグROMとして使うことができないのです。

XILINX FPGAが対応しているROMのファミリの一覧はAnswer 65463に書かれているのですが、

https://support.xilinx.com/s/article/65463?language=ja

ここにS25FSには3B 3Cコマンドがないことは書かれていました。

Answer

 

それなら、SPIのビット幅をx2ではなく、x1にすれば使えるかというと、使えました

そもそもSPI ROMのビット幅をx2やx4にするには、VivadoのXDCファイルに

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 1 [current_design]

という行を書くのですが、ここを2にするとDualになって、4にするとQuadになります。

デフォルトは1なので、x1サイズのSPI ROMを使うようなBitStreamを作ればS25FSからでもFPGAはコンフィグはできます。ただし遅くなりますし、Vivadoが対応していないので自分でツールを作らなければならなくなります。

 

x1幅にすればコンフィグROMとして使えないことはありませんが、S25FSはセクタの構成がややこしいので、ページイレースやセクタイレースはうまくいきませんでした。書き込みの前に全消去をしたほうがいいです。

S6a7jtagw_20220416155701

それからS25FLとIDCODEが同じなのも憎いです。必要なコマンドが入っていないのに、IDCODEを同じにするな(# ゚Д゚)と思います。

 

さて、現時点でDigikeyで購入可能な1.8V QSPI ROMで、FPGAのコンフィグに使えそうなものはないかというと、MX25U12835FM2I-10Gがいいかもしれません。なぜならば、 D:\Xilinx\Vivado\2020.1\data\xicom\xicom_cfgmem_part_table.csv に記載があって、Vivadoからでも使えそうな感じだからです。しかしながら「新しい設計には推奨できません 」と書かれているので、すぐになくなって長納期化する可能性もあります。

Kintex-7やArtix-7のボードでBank0を1.8Vにすると、入手可能なROMの選択肢がほとんどないのが厳しいですね。

 

|

« 保護ダイオードの効果 | トップページ | JTAGを使ったFPGA真贋判定装置の設計開始 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 保護ダイオードの効果 | トップページ | JTAGを使ったFPGA真贋判定装置の設計開始 »