今回はLattice製FPGA MachXO3LF Starter Kitについて紹介します。
MachXO3LF Starter KitはLUT規模は小さいものの、
3千円程度とお手頃な価格で入手することができます。
また、開発環境Diamondもフリーライセンスで利用できるため、
気軽に始めることができます。
特に開発環境のDiamondがダウンロードサイズ1GB前後、
インストール後が5GB前後で他社の開発環境に比べて
コンパクトな点も気に入っています。
今回はMachXO3LFのSPI Flashからのロードする設定方法を紹介します。
■Starter Kitのちょっとした注意点
MachXO3LFとMachXO3Lの2種類ある点です。
・MachXO3LFはFPGA内にFlashを内蔵しており、
何度も書き換えが可能なタイプ。
・MachXO3LはNVCM(Non-Volatile Configuration Memory、
ワンタイム・プログラマブル)という数回のみ書き換え可能な
メモリを内蔵しているタイプです。
製品実装等ので将来、書き換えることがない場合にMachXO3Lを使用しますが、
一般的なホビー用途や検討では何度も書き換え可能な
MachXO3LFが適切といえます。
最初に詳しく調べもせずに誤ってMachXO3Lを買ってしまいました…
後に改めてMachXO3LFを購入。
■MachXO3LF/MachXO3L Starter Kitについて
両タイプもSPI Flashが実装されています。
購入時にデモプログラムが書き込まれており、
MachXO3LはSPI Flashにデモコードが書き込まれており、
FPGAにはSPI Flashからプログラムをロードするコンフィグが
書き込まれています。
そのため、プログラムの書き換えはSPI Flashに
任意のbitデータを書き込んで使用します。
一方、MachXO3LFはデモプログラムは内蔵Flashに書き込まれています。
そのため、プログラムの書き換えは内蔵Flashを書き換えればよいのですが、
せっかくなので内蔵メモリでなく、外部のSPI Flashから読み込みます。
ただ、どのように外部のSPI Flashから読み込むのか、
情報が少なく、少し苦戦したため、
覚書として今回紹介することにしました。
@MachXO3LF内蔵Flashに外部SPIブートの設定書き込み
プロジェクトを生成する際のグローバル設定は下記のように設定します。
ポイントは
・MASTER_SPI_PORTをENABLEにする
・CONFIGURATIONをEXTERNALにする
です。
他の設定は任意です。
グローバル設定を保存しプロジェクトを合成します。
そのあと、SPI Flashに書き込むBitstream File
内蔵Flashに書き込むJEDEC Fileの2つを生成します。
続いて、外部SPI Flashから起動するための
設定ファイル(コンフィグレーション)を内蔵Flashも書き込みます。
その際にBitstream File全体でなく、
設定ファイル(コンフィグレーション)のみを書き込むことがポイントです。
書き込む際のOperationに「FLASH CFG〜」を選択します。
設定ファイル(コンフィグレーション)のみの「CFG」がポイントです。
これでMachXO3LFは外部SPIから起動するようになります。
A外部SPI Flashにプログラム書き込み
Starter Kitに搭載のSPI FlashはSpasion製
SPI-S25FL208Kを搭載しています。
SPI FlashオプションにSPI-S25FL208Kを選択して、
Bit Streamファイルを選択して書き込みます。
電源再投入でSPI Flashからプログラムを読み込みます。
今回は今回はMachXO3LFのSPI Flashから
ロードする設定方法を紹介しました。
FPGAを扱ったことが少ないため、
SPI Flashから読み込む設定をどのように書き込めばよいのか、
いろいろ探してしまいました。
書き込み時にプログラム全体を書き込むのでなく、
設定ファイル(コンフィグレーション)のみを書き込むことで、
SPI Flashから読み込むことができました。
SPI Flashから読み込めることが確認できたので、
Starter Kitを使っていろいろ実験してみたいと思います。