実験の流れ

Mon, 06 Nov 2017 16:38:04 JST (41d)

実験の流れ

初回講義

環境構築

CPU を設計する環境として xilinx 社が提供している Vivado を用います.

  1. xilinx アカウントの作成
    • xilinx の HPに飛び,右上の Sign In をクリックします.
    • 必要事項を記入し,"Create Account"します.
      • ここで用いるメールアドレスは各人用意してください.
    • 登録したメールアドレスに対し,Account Activation と題されたメールがくるので,メール内のリンクをクリックし,ログインします.
  2. Vivado のインストール
    • 配布された USB 内にある Vivado のインストーラを起動します.
    • 適当な選択肢を選んでいくつか進み,Select Edition to Install の画面で Vivado HL WebPACK を選択し,"Next". vivado0.png
    • 次の Vivado HL WebPACK の画面で下の画像のものを選択して"Next". vivado1.png
    • それ以降は自由に設定し,"Install"します.
    • インストール後,License Manager が起動しますが,Obtain License の好きなものを選択し,"Connect Now"を押します. vivado2.png
    • ログイン画面が出るので,ログインし,次の画面に進んだ後,ページの中央あたりにある Certificate Based Licenses から Vivado Design Suite: HL WebPACK 2015 and Earlier License をチェックし,Generate Node-Locked License を選択します.その後は,"Next"連打で大丈夫です. vivado3.png
    • Product License の画面に飛ぶので,左下にあるダウンロードボタンを押し,ライセンスをダウンロードして下さい. vivado4.png
    • License Manager に戻り.Load License から Copy License を選び,先ほどダウンロードしたライセンスを選択します.

Verilog HDL に慣れる

4bit adder の作成

Verilog によって 4bit adder を記述し,FPGA で動作させます.

 

以下の手順に従って作業していきましょう.

 
  1. Board Fileの追加
    1. zipファイル filevivado-boards-master.zip をダウンロードして解凍します.
    2. 解凍した vivado-boards-master\new\board_files以下を vivado のインストールディレクトリ中のボード定義ファイル格納場所(例: C:\Xilinx\vivado\2016.3\data\board\board_files) 以下にコピーします.
  2. Project の作成
    1. Vivado を起動し,File タブ → New Projectを選択.
      • 最初の画面は "Next" でとばす.
      • Project name を adder4 など適当に設定.
      • Project location は 好きな場所に作成.(C:\workspace など)
      • Create project subdirectory にチェックし,"Next".(これでプロジェクト名のディレクトリが作成される)
    2. RTL Project を選択.

      Do not specify sources at this time にチェックを入れ,"Next".

    3. 上の方にある Boards を選択し,下のリストから Nexys Video を選択し,"Next".
    4. 最後に Project の詳細を確認し "Finish".

      作成したプロジェクトは,プロジェクトのディレクトリ直下にある ".xpr" ファイルとなります.

  3. ソースの作成
    1. 左にある Flow Navigator から Add Sources を選択.
      • Add or create constraints を選択し,"Next".
      • Add Files を選択し,filenexys.xdc を追加し,Copy constraints into project にチェックを入れ,"Finish".

        constraints ファイルは,使用する FPGA の設定ファイルであり,ここで ピンの設定などを行えます.

        FPGA とやり取りする場合にはここで設定した名前をトップモジュールで指定する必要があります.

    2. 次に Add Sources を選択し,Add or create design sources を選択し,"Next".
      • filetop_module.v と,fileadder.v を追加し,Copy sources into project にチェックを入れ,"Finish".

        トップモジュールは,FPGA の入出力と直接つながっているモジュールであり,トップモジュール内に作成したモジュールを配置することで論理回路を作成します.

        Vivado では,特に設定をしなくてもモジュールの関係を読み取り,トップモジュールを設定してくれます.

        Sources の Hierarchy では,トップモジュールであるソースの前に四角が3つ並んだ記号が表示されます.

        ソースの解説はここにあります.

  4. test bench の作成
    • 作成した回路の動作をシミュレートする test bench を作成します.
    1. Add sources を選択し,Add or create simulation sources を選択し,"Next".
    2. Add Files を選択し,filetestbench.v を追加し,Copy sources into project にチェックを入れ,"Finish".
  5. シミュレーション
    • 先ほど作成した test bench でシミュレーションを行います.
    1. Flowタブ → Run Simulation → Run Behavioral Simulation.
    2. 一番右にあるウィンドウの Untitled 1 と書いてあるタブを選択.
      • ここで左にあるツールバーを使って画面を見やすく整形します.
      • 表示されている数字はデフォルトで 16 進数のため,見にくい場合は Name の表示を変更したいもののところで

        右クリック → Radix を選択したあと好きなものに変更できます.

        Binary が 2 進数,Hexadecimal が 16 進数,Octal が 8 進数,Decimal が 10 進数です.

      • 観測する信号を増やしたい場合は Objects からドラッグアンドドロップで追加できます.
  6. FPGA で動かす
    • シミュレーションが問題なく動いたら FPGA で動かしてみます.
    1. ツールバーの Generate Bitstream(歯車みたいなアイコンの左隣)を選択.
    2. しばらくしたら Bitstream Generation Completed と表示されるので,Open Hardware Manager を選択し,"OK".
    3. 上の方に Open target と表示されるので,選択し,Auto Connect.(左の Flow Navigator からも選択可)
    4. 同様に Program device と表示されるので,選択し,表示されたものを選択.
    5. 特になにもいじらずに "Program".

      これで,FPGA に作成した回路が書き込まれます.

      今回作成した adder は,スイッチの右側4つと,左側4つでそれぞれ加算器に入力する 4bit の数値を決定し,結果を LED の点灯によって得ることができます.

ステートマシンの作成

ステートマシンとは,入力と現在の状態によって出力が決まる順序回路のことを言い,今回は以下の仕様を満たすものを作成します.

  • 150円の商品を扱っている自動販売機の作成
    • 入力は100円と50円のみ
    • 入力の合計が150円以上になった場合,商品と金額に応じておつりを出力する
    • 入力の合計が150円未満の場合は入力待ちをし続ける

      状態遷移図は以下の図のようになります.

      state.jpg

  1. Project の作成
    • 上と同様にして Project を新規作成しましょう.
  2. ソースの作成
    1. 上と同様にしてfilenexys.xdc を追加.

      nexys.xdc の Buttons について記述してあるところの38行目のコメントアウトをはずします.

      これによってリセットボタンが cpu_resetn としてトップモジュールから参照できるようになります.

    2. 次に,filetop_module2.vfilevendingmachine.v をダウンロードして追加します.
  3. test bench の作成
    • シミュレーション用の test bench を,上を参考にしながら作成してみましょう.
    1. Add Sources から,Add or create simulation sources を選択し, Create File でファイルを新規作成します.
    2. File type は Verilog で,ファイル名は testbench.v など適当に決め,"OK"を押し,"Finish".

      このとき,Verilog ファイルであることを示す拡張子 ".v" を忘れずにつけましょう.

    3. Define Module というウィンドウが出たら,Port Name, Direction, Bus, MSB, LSB を設定してモジュールの入出力を決定します.
      • Port Name は信号線の名前.トップモジュールなどでは,constraints ファイルで設定した名前を指定することになります.
      • Direction は入力か出力かを表します.inout は双方向信号に対して使います.
      • Bus は 2 ビット以上の信号線の場合にチェックをし,Most Significant Bit(MSB: 最上位ビット) と Least Significant Bit (LSB: 最下位ビット) を指定します.
      • これらの設定は,ファイル編集でも行えるためここですべて設定する必要はありません.
    4. filetestbench.v を参考にしながら test bench を記述しましょう.
  4. シミュレーション
    • adder のときと同様にしてシミュレーションを行います.
  5. FPGA で動かす
    • シミュレーションがうまくいったら FPGA に書き込み実際に動かしてみましょう.
    • スイッチの右端が50円,その隣が100円に対応しています.
    • 出力は LED の右端が光ったら商品,その隣が光ったらおつりが出力されたことを表します.

プロセッサを作る

開発手順


添付ファイル: filestate.jpg 190件 [詳細] filetop_module.v 263件 [詳細] filevivado-boards-master.zip 203件 [詳細] filevivado4.png 172件 [詳細] filevivado3.png 160件 [詳細] filevivado2.png 188件 [詳細] filevivado1.png 166件 [詳細] filevivado0.png 183件 [詳細] filetop_module2.v 252件 [詳細] filevendingmachine.v 256件 [詳細] filetestbench.v 337件 [詳細] fileadder.v 285件 [詳細] filenexys.xdc 310件 [詳細]