Xilinx社FPGA Artix-7の立ち上げ
現在、Digilent社のcmod A7というFPGAボードを入手して、動作テストをしている。
本ボードはDigilent社のサイトに立ち上げの手順Cmod A7 Programming Guide [Reference.Digilentinc]
が示されているが、2018年現在ではすでにXilinx VivadoのGUIが変化しており、この通りに実行
しようとしても項目が見当たらない部分が多いので、本ページに手順を示す。
本ページの内容は、Vivado 2017.4の仕様に基づいている。Xilinx社はGUIの更新が激しく、本ページの内容もいつまで追従できるかわからない(特に、hardware managerあたりは改善の余地が大きく、現在のままで放置されるとは考えにくい)
ことには注意を要する。
- プロジェクトの作成(今回は、Digilent社のページに掲載されているdemo.zipを使用する)
Vivadoを立ち上げ、Quick Startからcreate Projectを選択>RTL projectを選択する。
Add Sources のGUIから、btn_led.vを追加する。
Add Constarins のGUIから、CmodA7_B.xdc を追加する。
パーツリストで Artix-7 cpg236-1を選択する。デバイスの区分で絞り込めるので、以下の図に示した内容を指定することで適切なパーツが指定できる。
以上の操作でプロジェクトの作成が完了する。
- プロジェクト内での設定
※マスターブートに使用するSPI FLASH書き込みの設定(ここは元サイトに画像があるので、画像掲載は割愛する)
tool > edit device propertiesを開き、
- general >Enable Bitstream Compression をTRUEにする(要求容量が減り、書き込み時間が少なくなる
- Configuration Rate MHzを33にする
- Cofiguration ModesでMaster SPIx4をチェックする
- プロジェクト内の各ステップの実行
すでにサンプルプログラムのソースは用意されているので、まずRun Synthesis を実行し、次にRun Implementationを実行する。
Runが終わったらopen designを選択する。(これは必須操作ではないが、今回は段階的に実行する)
- Generate Bitstreamを実行する
Runが終わったら、Generate Memory Configuration File を選択してOKを押す。この部分の操作により、マスターブートに必要なSPI FLASHに書き込むコンフィギュレーションファイルが生成される。
- Write Memory Configuration File内の設定
Generate Memory Configuration Fileの実行により、コンフィギュレーションファイルの生成GUIが立ち上がる。
※この部分の流れがわかりにくいので、将来GUIが変更される可能性が高い。
(必須ではないが)FORMATは BINを選択する。
- メモリ設定ははCustomではなく、Memory Partを選択して n25q32-3.3v-spi-x1_x2_x4 を選ぶ。
...をクリックするとパーツ選択GUIが立ち上がるので、以下のように設定して対象を絞り込み、3.3V品のマイクロン社製FLASHを選択する。
- Filename はこれから保存するファイルの名前を指定するので、自由につけてよいが、元のbitファイルと類似した名前が望ましい。
Options内の設定を追加する。
- SPIx4 を選択する(x4で高速化)
- Load bitstream filesをチェックする
この操作でファイル指定ウインドウが選択できるようになるので、Bitfileの部分にgenerate Bitstreamで作った.bitファイルを指定する。生成されたファイルは、プロジェクトフォルダ内のPJ名.runs>impl_1にある。
- ターゲットデバイスの接続
- この段階まで来たら、USBケーブルでターゲットデバイスをつなぐ。念のため、デバイスマネージャで新しいCOMを認識していることを確認する。
- プロジェクトGUIのProgram and Debug内から、Open Target>認識しているデバイスを選択する。ローカルホストサーバーを立ち上げ、現在接続中のcmod A7を選択する。
※手順が間違っていた、あるいはUSB端子との接触が悪かったからか、この作業でブルースクリーンが頻発した。デバイスをつなげる前にctrl+sでプロジェクトを保存しておくと安全である。
この段階でプログラムをJTAGで書き込むことも可能なので、hardware manager内でデバイス名を右クリック>Program Deviceを選択し、プログラムの動作をテストしておくとよい。
- コンフィギュレーションメモリの登録
- Open Hardware Manager > Add Confgiuration Memory Device を選択し、Generate Memory Configuration Fileで設定したのと同じSPI FLASHをHardware Managerに登録する。
- Hardware Managerに登録されたSPI Flashを右クリックし、Program Configuration fileを選択する
先ほど作ったBINファイルを選択して、Apply > OK で書き込まれる
- マスターブートのチェック
Hardware Manager内のxc7a35t_0を選択して右クリック >Boot from Configuration memory deviceを選ぶと、これまでの手順を正しく実行していれば、SPI FLASHからFPGAがブートする。demoのプログラムでは、ボード上の2つのボタンを押すことで2つのLEDがそれぞれ点灯する。
以上がデモプログラムのプロジェクト作成、各種設定、デバイスへの書き込み、動作チェックの一通りの手順である。
一度プロジェクトを作って動作確認できれば、プロジェクトを流用してSPI FLASHなどの設定を毎回する必要がなくなるので、今後の実装の手間が省ける。
本プロジェクトをスターと地点とし、次は内蔵クロックを使用する例を実装する予定である。