読者です 読者をやめる 読者になる 読者になる

kivantium活動日記

プログラムを使っていろいろやります

FPGAボードのBasys 3を買った

SystemVerilogの勉強のためにVivadoが使えるFPGAボードが欲しかったので、DigilentのBasys 3を購入しました。ちなみにAcademic料金で購入するとかなり安くなるので、大学等に所属している人はAcademic登録することをおすすめします。
store.digilentinc.com

Ubuntu 14.04上で環境構築した時のメモを残しておきます。
ちなみにボードはこんな感じです。
f:id:kivantium:20160916214121j:plain:w400

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が光るデコーダのプログラムが書き込まれる

あとはSystemVerilogの文法をマスターすればこれを応用していろいろなものが作れるはずです。
SystemVerilogの文法については次の記事で書きます。