はじめに
最近私は趣味のFPGA開発用に、Xilinx社のFPGAを評価するボード(ARTY S7、DIGILENT社)を用いているのですが、開発環境(Vivado)の初期設定では書き込んだ回路が電源を切るたびに消えるようになっています。書き込み速度も速く試作用途にはこれでもいいですが、他のマイコンみたいに保持してほしい状況も出てきます。
そこで、書き込んだ回路が電源を切っても保持されるようにする設定方法を紹介します。
開発環境
- OS : Windows 10 Pro ビルド 17134
- ソフトウェア : Vivado 2018.2
- 開発ボード : ARTY S7
方針
初期設定では、FPGAへの書き込み(コンフィグレーション)をPCから直接行っていますが、FPGAに書き込まれたデータは電源を落とすかFPGAをリセットすると消えてしまうため、上記の現象が発生します。
そこで、ボードに搭載されているSPIフラッシュメモリにコンフィグレーション用のデータをあらかじめ書き込んでおき、電源オン時やリセット時にそこからFPGAへのコンフィグレーションを行うように設定を行います。
方法
ここでは、既に書き込みたい回路のビットストリームを生成できる段階を想定しています。
-
[PROGRAM AND DEBUG]->[Generate Bitstream]を右クリックし、[Bitstream Settings...]をクリックして設定画面に入り、下画像のように[-bin_file*]のチェックボックスをオンにします(この.binファイルがSPIフラッシュメモリに書き込むデータになる)。
-
[PROGRAM AND DEBUG]->[Generate Bitstream]をクリックし、ビットストリームの生成を行います。このあたりでボードをPCに接続しておきます。
-
[Open Hardware Manager]をクリックしマネジャーを起動したのち、[Open Target]->[Auto Connect]とクリックします。
-
[Add Configuration Memory Device]->[xc7s50_0]とクリックし、コンフィグレーションファイルを書き込むメモリを選択する画面を開きます。ここで、書き込むSPIフラッシュメモリは下写真の赤枠で囲ったチップになるので、そのチップのメーカーと型番を特定し、下の図のようにその型番を選択します(私のボードではこれを選択した)。
[OK]クリック後にポップアップが表示された場合は[No]を選択して大丈夫です(再設定可能です)。 -
[Hardware]タブ内に、先ほど追加したメモリが表示されているので、そのうえで右クリックし、[Program Configuration Memory Device]をクリックして設定画面を開きます。
-
下図のように設定します(チェックボックスはお好みで)。赤枠で囲ったところに先ほど作成した.binファイルを選択し、[OK]をクリックすることでプログラミングが始まります。少し時間がかかるので気長に待ちましょう。
-
プログラムの書き込みが終了したら、一度ボード左上のPROGボタンを押します。
まとめ
以上の方法で、FPGAボードに実装した回路を電源を切っても保持することができます。
おそらく他のARTYシリーズでも同様の方法が使えるので、そちらをお持ちの方も試してみてください。