exStickGEのボードファイルを作ってみた

技術紹介

Vivadoにはボードファイルと呼ばれる機能があります.
この機能を使うとブロックデザインでぽちぽちポートを作成しそれに適したIPを別途生成する
作業が一度に完了し,xdcファイルによるポートの指定が必要なくなります.
Xilinx社のリファレンスボードやDigilent社の開発ボードにはボードファイルが
付属もしくは公開されているため簡単に使用することができます.

せっかくなので弊社のexSitckGE用のボードファイルを作成しました.
その使い方について解説します.

バージョンはVivado,Vitisどちらも2020.1です.

ボードファイルの追加

まずボードファイルを追加する必要があります.
GitHubのリポジトリからダウンロードします.
配置場所ですがWindowsで初期設定のインストール場所だと以下のフォルダです.

フォルダ内にコピーすれば完了です.

注意点はHDMI入出力はDigilent社のIPを使用する指定がしてあるので
別途リポジトリでIPが使えるようにしないといけません.
また,後述しますがDIPスイッチはそのまま使うことができないので
別途xdcファイルを指定する必要があります.

実際に使ってみる

ボードファイルが登録されたのでVivadoから使ってみます.
exStickGEでMicroBlazeを動かしLチカを試します.

プロジェクトの作成

Vivadoから新プロジェクトの作成,適当な名前をつけます.

Add Constraintsまでそのまま進めます.
ボード上にDIPスイッチが存在するのですが,プルダウンしないと使えないので
別途xdcファイルで指定します.(今回は使う予定はありませんが)
リポジトリ内に”constraints.xdc”があるので追加します.

次にDefault Partで今回の目玉であるボードを指定します.
FPGAの種類xc7a200tsbga484をわざわざ探し出すことなく指定することができます.

exSitckGE
が選択されているのを確認してFinishで完了です.

今回はシリアル通信の入出力は汎用ポートから行う予定で
ボードファイルには定義されていないので別途xdcファイルで指定します.
Sourcesから先程追加したxdcファイルに追記します.
以下の4行を追記してください.

ブロックダイアグラムの作成

左のFlow NavigatorからCreate Block Designで作成します.

Boardタブから定義済みのインターフェイスが表示されます.

今回はexStickGEを生成するのでまずクロックから作っていきます.

Clock Sources->System Differential Clockをダブルクリック
接続先IPの指定が出てくるのでCLK_IN1_Dが選択されたままOK

生成されたIPをダブルクリックして設定を変更します.
Output Clocksタブで以下のように変更します.

MIGを動かすためにAdd IPからClocking Wizardをもう一個追加します.
以下の設定に変更します.

次にMIGを追加します.
External Memory->DDR3 SDRAMをダブルクリック
そのままOKで作成します.

次にLEDを追加します.
GPIO->3 LEDsで作ります.

次はMicroBlazeです.
Add IPからMicroBlazeを追加,上部のRun Block Automatinをクリック
余裕があるのでローカルメモリを128KB,キャッシュを64KBにしておきます.

デバッグ用にシリアル通信モジュールも追加します.
Add IPからAXI Uartliteを追加します.
自動で生成されたUART入出力ピンはuart_rtlからUARTに名前を変更しておきます.

最後の追加はリセットです.
Reset->System Resetをダブルクリック
設定は以下の図のようにします.

最後に配線を調整します.
clk_wiz_1clk_in1clk_wiz0CLK100M
MIGに接続されているclk_ref_isys_clk_iのポートを削除
MIGのclk_ref_iclk_wiz_0CLK200M
MIGのsys_clk_iclk_wiz_1CLK310M
上部のRun Connection Automationをクリックし全てにチェックを入れOK

以下の画像が完成図です.

保存したら左のFlow NavigatorからPROJECT MANAGERに移動しSourcesから
ブロックデザインを右クリックし,Create HDL Wrapperをクリック
そのままOKをクリックし完成です.

Generate Bitstreamでビットファイルを生成します.
生成されたらVitisで続きを行うためハードウェアファイルをエクスポートします.
メニューバーからFile->Export->Export Hardware …から
OutputInclude bitstreamを選択し最後まで進めます.

VitisでLチカ

Vitisを起動しVivadoのプロジェクトフォルダ内にワークスペースを指定します.

Create Application Projectからxsaファイルは先程エクスポートしたものを指定し
名前はtest,テンプレートはHello Worldを指定しておきます.

helloworld.cを以下に書き換えます.

プロジェクトをビルドします.
シリアル通信モジュールをFPGAと接続します.
ピンアサインは以下のとおりです.

実際に実行してみましょう
上部のメニューからDebug Configurationを開きSingle Application Debug
ダブルクリックしデバッグ用の設定を作成します.

デバッグを開始してResumeボタンを押せばシリアル通信で文字列が出力され
LEDがチカチカします.

無事に動作確認ができました!

まとめ

ボードファイルを使うことで比較的簡単にブロックダイアグラムで
組むことができるようになりました.
主なピンアサインをxdcファイルで指定する必要がなく明瞭になるのと
間違いが抑えられることから便利な仕組みです.
このボードファイルを作ることは結構面倒なのでそこがネックですが…

コメント

  1. […] 前回作成したボードファイルを使用します. […]

タイトルとURLをコピーしました