概要
BitstreamとMicroBlazeのソフトウェアを外部SPI Flashに書き込んで、
FPGAの電源を入れれば自動的にコンフィギュレーションされるように設定します。
SDKプロジェクトをSPIに書き込む方法はいくつかありますが、恐らくこの方法が一番簡単です。
環境
- Vivado 2018.3
- 使用するボード: Digilent Cmod A7-35T (なんでもいいです)
1. Vivadoプロジェクトの用意
SPI Flashに書き込みたいVivadoプロジェクトを用意。
今回は、以前GPIO割り込みをMicroBlazeで実装したプロジェクトを使って説明をしていきます。(SPIとかIICコアが追加されていますが、無視して大丈夫です。)
予め一度Generate Bitstreamを実行しておく。
2. SPI Flashを使う設定
Open Implementation Designをクリックし、IMPLEMENTED DESIGN画面を開く
(これを開かないと一部の設定画面が開けない)
-bin_fileにチェックを入れて、Flashに書き込むためのbinファイルを生成する設定に変更
**Configure additional bitstream settings.**をクリック
GeneralタブのEnable Bitstream CompressionをTRUEに変更し、生成されるBitstreamを圧縮
ConfigurationタブのConfiguration Rate (MHz)を33に設定 (速すぎる場合は値を小さくしてもよい)
Configuration ModesタブでSPI Flashとの接続方法を選択
今回使用するボードではMaster SPIx4で接続されている。
ボードに合わせた設定にする。
OKを押して設定を保存
3. 書き込むSDKプロジェクトの選択
GPIO割り込みプロジェクトではSDKプロジェクトも作成し、
<Vivadoプロジェクトルート>/<Vivadoプロジェクト名>.sdk/<SDKプロジェクト名>/Debug/<SDKプロジェクト名>.elf
にelfファイルが生成されている。
Vivadoの**Tools -> Assosiate ELF Files...**を選択し、Design Sources側のmicroblaze_0に、Add Filesで実行したいSDKプロジェクトのelfファイルを追加
Generate Bitstreamを実行
このとき、圧縮されたBitstreamとelfファイルがひとつにまとめられたbinファイルが
<Vivadoプロジェクトルート>/<Vivadoプロジェクト名>.runs/impl_1/<トップモジュール名>.bin
に生成されている。
4. Flashの書き込み
FPGAボードをPCに接続し、Open Hardware ManageでFPGAボードと接続
FPGAデバイス名で右クリックし、**Add Configuration Memory Device...**をクリック
FPGAボードに搭載されているSPI Flashの型番を検索し、OKをクリック
今回使用するボードでは「n25q32-3.3v-spi-x1_x2_x4」が搭載されていた。
SPI Flash名で右クリックし、Program Configuration Memory Deviceをクリック
Configuration fileに生成したbinファイルを選択しOKで書き込む
書き込みが完了したらFPGAボードを切断