FPGAボード Cmod S7を導入してみた(2)
FPGAボードと開発手順の概要は前回ご紹介しました。今回はLED1つを点灯させるまでの手順をご紹介します。 (Digilent公式もご参照ください。)1.新規プロジェクトの作成
Vivadoを開き、トップ画面で"Create project"を選択します。ウィザードが表示されるので、画像の通りに進めてください。⑥のボード選択ではCmod S7-25を選んでください。デフォルトではインストールされていないので、初回はインストールが必要です。ボードデータは公式ページ3.からダウンロードしてください。2.Constraint fileの追加
Constraint file(.xdc)はデバイスの入出力状態を規定するファイルです。ボード上のI/Oの割り当ては公式のテンプレートが用意されていますので、ダウンロードして解凍しておきます。① Add sourcesでウィザードが表示され、② Add or Create constraints --> ③ Next --> ④Add Filesを選択します。⑤で解凍したテンプレート"Cmod-S7-25-Master.xdc"指定します。⑥にチェックを入れると、.xdcファイルがプロジェクトフォルダ内にコピーされるので、自由に変更できます。Constraint fileが追加できたら、⑦Finishでウィザードを閉じます。
次の場所にConstraint fileが追加されているので、開いて編集します。
\(プロジェクト名)\(プロジェクト名).srcs\constrs_1\imports\digilent-xdc-master
今回は端子E2に接続されたLED1つのみを使用しますので、20行目頭のコメント"#"を外します。また、get portsの端子名をledとしておきます。これで、HDLファイルでledという名前で接続できます。4bitのledはプルダウンです(一方、RGB LEDはプルアップ)。
3.Design Sourceの追加
次に図の手順に従いDesign Sourceを追加します。① Add sourcesでウィザードが表示され、② Add or Create Design sources --> ③ Next --> ④Create Filesを選択します。HDL言語はVerilog, VHDL, SystemVerilogが選択できます(ファイルごとに異なる言語を用いることも可能)。今回はSystemVerilogを使用します(⑤)。SystemVerilogはVerilogが拡張されたもので、基本的な文法は共通しています。完了(⑥)するとI/O設定のウィンドウが開きます(⑦)が、エディタ内で後から変更可能です。作成した.svファイルを開きます。ヘッダやモジュール名(blink)、I/O情報(output led)はファイル作成時に入力したものが含まれています。コードはmodule xxx (xxx);行とendmodule行の間に追記します。LEDの端子をHighに接続するだけなので、HDLコードは以下の1行だけ追加してください。
3.RTL解析
RTL解析ではHDLコードから推定された接続状況を確認できます。今回はLEDの端子をHighに接続しているだけなので自明な結果が表示されるのみです。4.Simulation
ここではHDLコードに基づいて動作シミュレーションが行えます。そのために次の手順でテストベンチを作成します。① Add sourcesでウィザードが表示され、② Add or Create Simulation sources --> ③ Next --> ④Create Filesを選択しテストベンチを作成します(⑤~⑥)。テストベンチは被測定モジュールの入出力を包含した仮想のモジュールで、任意の入力を与えたときの出力をモニタします。テストベンチ自体は仮想のモジュールなので入出力は不要です(⑦)。テストベンチもVerilog, VHDL, SystemVerilogで記載します。これらの言語には実装を前提としないテストベンチ用のコードも用意されています。今回のテストベンチは単純で、ネットの定義とモジュールの宣言の2行を追加します。
Runsimulation --> Run bahavioral simulationをクリックするとシミュレーションがスタートします。デフォルトの設定では、シミュレーションは1us後に一時停止します。今回は定常状態なので1usで十分です。シミュレーション結果を図に示します。自明な結果ですが、led端子がHighとなっていることが分かります。もう少し複雑な回路のシミュレーションは次回ご紹介します。
5.Synthesis
次に①Run synthesisをクリックし論理合成を開始します。単純な回路ですが、環境によっては数分かかります。論理合成が完了すると、③Open synthesized designから合成後の回路を確認できます。今回は単にバッファを繋いだだけになりました。6.Implementation
次に①Run implementationをクリックしチップ内への配置・配線情報の生成を開始します。これも、環境によっては数分かかります。完了後の回路はOpen implemented designから確認できます。また、配置・配線時のレポートも確認できます。7.Generate bitstream
Implementationが完了したらGenerate bitstreamからプログラムファイルを生成します。8.Program
最後にボードへの書き込みです。FPGAボードをUSBでPCに接続してください。Open target --> Auto connectで接続されたハードウェアを自動で検索し、接続してくれます(①)。接続が完了したら、Program device --> xc7s25_0をクリック(③)し、プログラムを行います(④)。USBポートから一番遠いLEDが点灯したら成功です。次回はもう少し複雑な回路のテストベンチについてご説明します。