FPGAボードのBasys 3を買った
SystemVerilogの勉強のためにVivadoが使えるFPGAボードが欲しかったので、DigilentのBasys 3を購入しました。ちなみにAcademic料金で購入するとかなり安くなるので、大学等に所属している人はAcademic登録することをおすすめします。
store.digilentinc.com
Ubuntu 14.04上で環境構築した時のメモを残しておきます。
ちなみにボードはこんな感じです。
Vivadoのインストール
Vivado Design SuiteからVivadoのインストーラを落とします。
WebPACKを選択してあとはデフォルトの設定のままインストールすれば大丈夫でした。
インストール先は標準から変更したほうがいいかもしれない(後述)ですが、ここではデフォルトの/opt/Xilinxにしました。
起動を簡単にするために~/.bashrcに
alias vivado='sudo /opt/Xilinx/Vivado/2016.2/bin/vivado'
のようにインストール先に合わせたaliasを設定しておくと便利です。
sudoをつけないとUSB経由での書き込みができませんでした。
また、起動時にパーミッション関係のエラーが出たのですが、これは/opt以下に一般ユーザーで書き込めないことが原因なので
sudo chmod 777 /home/Xilinx
とすれば解決しました。インストール先を変えればこの作業は必要ないのかもしれませんが、試していないので分かりません。
最初のプロジェクト
http://ece.wpi.edu/~rjduck/Basys3%20Vivado%20Decoder%20Tutorial.pdfが分かりやすいので参照するといいでしょう。
一応ここにも書いておきます。
- vivadoを起動したら「Create New Project」をクリック→「Next」→プロジェクト名とディレクトリを指定して「Next」→RTL project typeを指定して「Next」
- Parts選択画面で「Family: Artix-7」 「Package: cpg236」 「Speed grade: -1」を指定して出てくる「xc7a35tcpg236-1」を選択して「Next」→「Finish」
- 画面左側のProject Managerから「Add Sources」をクリック→「Add or create design sources」を選択して「Next」→「Create File」をクリックし、File typeはSystemVerilog、File nameはdecoder.svを指定して「OK」(ここでmodule指定のウィンドウが開くが別にここで指定する必要はないのでCancelしてもよい)
- SourcesのDesign Sources->Non-module Files->decoder.svをクリックしてファイルを開く
- 以下を入力する
module decoder( input [2:0] sw, output reg [7:0] led ); always @ (sw) case (sw) 3'b000: led = 8'b00000001; 3'b001: led = 8'b00000010; 3'b010: led = 8'b00000100; 3'b011: led = 8'b00001000; 3'b100: led = 8'b00010000; 3'b101: led = 8'b00100000; 3'b110: led = 8'b01000000; 3'b111: led = 8'b10000000; endcase endmodule
- Project Managerの「Run Synthesis」をクリックして論理合成する
- Add Sourcesから「Add or create constraints」を選択して、Create Fileからdecoder.xdcを作成する
- Constraints以下のdecoder.xdcにBasys3/Resources/XDC at master · Digilent/Basys3 · GitHubのxdcファイルをコピペして、sw0〜sw2とled0〜led7のコメントアウトを解除する
- 「Run Implementation」と「Generate Bitstream」を実行する
- BASYS 3をUSBでつないで電源を入れ、「Open Hardware Manager」→「Open Target」→「Auto Connect」→「Program Device」をクリックし、bitファイルを書き込む
- sw0〜2をON・OFFするとその2進数に対応するLEDが光るデコーダのプログラムが書き込まれる
デコーダの動作 pic.twitter.com/rHynw0u2gB
— 川奈 清 (@kivantium) 2016年9月16日
あとはSystemVerilogの文法をマスターすればこれを応用していろいろなものが作れるはずです。
SystemVerilogの文法については次の記事で書きます。