対象機種
SZ130-U00
現象
OPB SPIを使用したプロジェクトをコンパイルした際、SPIフラッシュの読み書きができなくなる現象を確認しました。 以下の組み合わせで現象を確認しています。
- ISE 8.2i
- EDK 8.2i
- OPB SPI v1.00d
対策方法
EDK 8.2iでは OPB SPIが新しくなっています。 OPB SPIのコアのバージョンを変更することで対応します。
ISE version | 8.1i | 8.2i |
Core Version | v1.00d | v1.00e |
BEGIN opb_spi
PARAMETER INSTANCE = spi_flash
PARAMETER HW_VER = 1.00.e <-- 変更
PARAMETER C_FIFO_EXIST = 1
PARAMETER C_BASEADDR = 0xFF000000
PARAMETER C_HIGHADDR = 0xFF0001FF
PARAMETER C_OPB_SCK_RATIO = 16 <-- 変更
BUS_INTERFACE SOPB = d_opb_v20
PORT SS = SPI_SS
PORT SCK = SPI_SCK
PORT MISO = SPI_MISO
PORT MOSI = SPI_MOSI
END
ダウンロードページのfpga_projから修正済みのファイルをダウンロードできます。
注意点
v1.00dではシステムクロックを2分周して SPIのクロックを生成していました。 しかし、新しい v1.00eでは 2分周が非サポートに変更されています。 このためサポートされている 16分周を使う必要がありますが、ブート時間など SPIフラッシュへのアクセス速度が低下してしまいます。 Linuxのブート時間比較では、倍近く時間がかかるようになってしまいます。
Core Version | v1.00d | v1.00e |
ブート所要時間 | 18秒 | 35秒 |
現在、よりよい対応策を検討中ですので、ご了承ください。