学問の小部屋

ここは学問の黒板です。

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あたりは改善の余地が大きく、現在のままで放置されるとは考えにくい)
ことには注意を要する。

  1. プロジェクトの作成(今回は、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を選択する。デバイスの区分で絞り込めるので、以下の図に示した内容を指定することで適切なパーツが指定できる。

以上の操作でプロジェクトの作成が完了する。

  1. プロジェクト内での設定

※マスターブートに使用するSPI FLASH書き込みの設定(ここは元サイトに画像があるので、画像掲載は割愛する)
tool > edit device propertiesを開き、

  • general >Enable Bitstream Compression をTRUEにする(要求容量が減り、書き込み時間が少なくなる
  • Configuration Rate MHzを33にする
  • Cofiguration ModesでMaster SPIx4をチェックする
  1. プロジェクト内の各ステップの実行

すでにサンプルプログラムのソースは用意されているので、まずRun Synthesis を実行し、次にRun Implementationを実行する。
Runが終わったらopen designを選択する。(これは必須操作ではないが、今回は段階的に実行する)

  1. Generate Bitstreamを実行する

Runが終わったら、Generate Memory Configuration File を選択してOKを押す。この部分の操作により、マスターブートに必要なSPI FLASHに書き込むコンフィギュレーションファイルが生成される。

  1. 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にある。

  1. ターゲットデバイスの接続
  • この段階まで来たら、USBケーブルでターゲットデバイスをつなぐ。念のため、デバイスマネージャで新しいCOMを認識していることを確認する。
  • プロジェクトGUIのProgram and Debug内から、Open Target>認識しているデバイスを選択する。ローカルホストサーバーを立ち上げ、現在接続中のcmod A7を選択する。

※手順が間違っていた、あるいはUSB端子との接触が悪かったからか、この作業でブルースクリーンが頻発した。デバイスをつなげる前にctrl+sでプロジェクトを保存しておくと安全である。
この段階でプログラムをJTAGで書き込むことも可能なので、hardware manager内でデバイス名を右クリック>Program Deviceを選択し、プログラムの動作をテストしておくとよい。

  1. コンフィギュレーションメモリの登録
  • 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 で書き込まれる

  1. マスターブートのチェック

Hardware Manager内のxc7a35t_0を選択して右クリック >Boot from Configuration memory deviceを選ぶと、これまでの手順を正しく実行していれば、SPI FLASHからFPGAがブートする。demoのプログラムでは、ボード上の2つのボタンを押すことで2つのLEDがそれぞれ点灯する。

以上がデモプログラムのプロジェクト作成、各種設定、デバイスへの書き込み、動作チェックの一通りの手順である。
一度プロジェクトを作って動作確認できれば、プロジェクトを流用してSPI FLASHなどの設定を毎回する必要がなくなるので、今後の実装の手間が省ける。
本プロジェクトをスターと地点とし、次は内蔵クロックを使用する例を実装する予定である。