クイックスタート
FPGA開発におけるHello World Lチカ を通して,開発の手順に慣れよう
はじめに
この章では,FPGA開発におけるHello World,すなわち最初に試してみるサンプルとして Lチカ を題材に,開発の手順に慣れてみましょう. Lチカ とは,「LEDをチカチカさせる」の略です.
単にLEDとチカチカさせるだけ,なのですが,開発の手順を身につけるには十分です.また,実際多くの信号制御は何かしらの規則にしたがって信号をON/OFFしていることですから,すべての信号制御はLチカの応用にあるとも言えます.簡単ですが大事ですよ.
プロジェクトの用意
プロジェクト名と格納先を決めます.ここでは,ホームディレクトリの下のVivadoというフォルダの下にプロジェクトを格納することとし,名前をproject_1としています.
これでプロジェクトの完成です.Product FamilyがZynq-7000に,Project Summaryの表示を見ると,Project partがZybo Z7-20と,Z7-20向けのプロジェクトができていることがわかります.
ファイルの作成
作成したプロジェクトで,LEDをチカチカさせるためのデザインを追加していきます.ここではVivadoのウィザードを使ってデザインファイルを用意する方法ですすめていきます.
デザインの修正
ウィザードで作成したtopモジュールは雛形でしかないので,このままでは,もちろん所望の動作はしません.次の内容で書き変えてください.スペースの都合上,作成されたコメントは取り除いています.ファイルを編集するときには気をつけてください.また,リスト中のコメントは説明上のものですので,実際には入力する必要はありません.
|
|
追加箇所は多くないので,少し詳しくみてみましょう.
追加箇所(1)
数値演算に必要なライブラリ,今回の場合でいうと``+'‘演算を利用するために use ieee.numeric_std.all
という前置きをしています.
追加箇所(2)
LEDチカチカの,``チカチカ'‘というタイミングを制御するためのカウンタ変数を定義です.+演算を利用したいので unsigned
型で定義しています.
追加箇所(3)
いわば処理の本体です.一行目の代入文は,定義したcounter変数の23bit目を出力ポートであるledに接続することを意味しています. unsigned
の1bitですので std_logic
に型変換しています.次のprocess文では,clkが立ち上がることにcounterに1を足すことを意味しています.すなわち,(3)で追加した部分では,clkの立ち上がり8M回毎にledの'1’と'0’が反転する回路を定義していることになります.
まずは合成してみる
ファイルの編集がおわったら合成してみましょう.といっても,左サイドにあるFlow Navigatorの中にあるRun Synthesisをクリックするだけです.
I/Oの設定
合成が完了したことでデザインがVivadoに受け付けられることが確認できました.しかし,これでそのままFPGAでデザインが動くわけではありません.I/Oピンの設定をしていないからです.HDLのデザイン上は,入力ポートclkと出力ポートのledを定義しましたが,Vivadoは,このポートをFPGAのどのピンに割り当てていいか分かりません.FPGAを使った開発では人手でこの割り当てを決める必要があります.
ピンの割当ては合成結果を下敷にGUIで行なうことができます.まずは,合成結果を表示します.
もし,うっかり合成後のダイアログを閉じてしまったり,ピン配置を指定しないまま次のステップにすすんでしまった場合には,Flow Navigatorの中にあるOpen Synthesized Designをクリックしましょう.
合成結果が表示できたら,LayoutのI/O PlanningをクリックしてI/O設定用のモードに変更します.
画面下のI/O割当て表でピン配置を決定します.clkとledのPackage pinを,それぞれ,K17とM14に決め,どちらもI/O stdをLVCMOS33を選択します.
割り当て結果の保存先ファイルを指定/作成するダイアログが表示されますのでtopと入力してOKをクリックします.top.xdcというファイルに割り当て情報が保存されます.
合成・配置配線
ピン配置がおわったので,FPGA向けの書き込みファイルを作成します.Flow Navigatorの中にあるGenerate bitstreamをクリックするだけです.
制約ファイルの保存
おそらく先のピン配置の変更が保存されていないので,図\ref{fig:file_save_dialog}のダイアログが開くことでしょう.もちろん保存してください.
制約ファイルの指定(最初だけ)
はじめは,保存先のファイルが用意されていないので,図\ref{fig:xdc_config}のダイアログが開きます.ここでは,HDLモジュールと同じ名前のtopというファイル名にします.なお,拡張子はxdcで自動的に付与されます.
合成・配置配線の開始
指定したピン配置の設定によって合成からやりなおしになります.``Yes'‘をクリックしてフローをすすめます.
配置配線結果の確認
配置配線後,どのようにFPGA上に回路が配置されたかを確認することができます.今回は指定していませんが,動作クロックの指定を行った場合などには,正しくクロックの指定ができているか,その指定にあった回路ができているか,を確認する必要があります.
今回は,まず雰囲気だけみてみましょう.合成後の図\ref{fig:completed}のダイアログで,Open Implementation DesignにチェックをいれてOKをクリックするか,Navigator FlowでOpen Implemnetation Designをクリックします.
実機での動作確認
できあがったデータをFPGAボードにダウンロードして動作させてみましょう.
まずは,FPGAとパソコンをUSBケーブルで接続します.ここで,JP5のジャンパをJTAGに,JP16のジャンパをUSB側にセットしておいてください.
書き込みの手順は次の通りです.
これでFPGAボード上のLED LD0が点滅するはずです.
課題
- 点滅の間隔を変えてみよう
- FPGA上のほかのLEDも点滅させてみよう