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

溜息日和

プログラミングとか機械学習とか統計力学とかいろいろ

Verilog-HDL講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

はじめに

サブモジュールを作って,順序回路を記述する際のQuartus II 13.0の使い方を記す.

やること

  • 3Hzのクロックに同期して4桁同時にカウントアップ
  • 25Hzのクロックに同期して4bit毎に左右にスライド

もう少し詳細に

  • 回路を並列に動作させる
  • 2つの状態遷移図に分ける (状態遷移図に関してここ参照)

指針

  • 各状態遷移をサブモジュールに記述し,最後にマージする
  • 各サブモジュールは別のVerilog-HDLファイルに記述
    • 可読性の向上
    • トップモジュールはFPGAの外部の信号定義のみに留める
    • インスタンス化して再接続することで再利用可能

状態遷移1: LEDGスライド回路

ピンの自動割り振り

作業フォルダを作成
Demonstrations/DE0_Topフォルダの全てを作業フォルダにコピペ
作業フォルダ内のDE0_TOP.qpfをダブルクリック

DE0_TOP.vの記述


保存
メニューバー新規作成,Verilog HDL Fileを選択OK

ファイル名「LEDG_Slide.v」として保存
コンパイル

テストベンチの準備

デバイス名を右クリック「settings」「EDA TOOL Setting」「Simulation」

  • 「Tool name」「ModelSim-Altera」を選択
  • 「Format for output netlist」「Verilog-HDL」を選択
  • 「Time scale」を「1 ns」

メニューバー「Processing」「start」「Start Test Bench Template Writer」

デバイス右クリ「settings」「EDA TOOL Setting」「Simulation」「NatlevLink setting」「Compile test bench」にチェック
「test Benches」「New」「test bench and simulation files」の「…」をクリック,作業フォルダ/simulation/modelsim内の「**.vt」open

  • test bench name「**」
  • top level module in test benchに「**_vlg_tst」

Test bench and simulation filesでadd後ok

テストの実行

ModelSimが起動
rtl_workを展開,「DE0_TOP_vlg_tst」を右栗editを選択
「'timescale 1 ns/ 1 ps」を確認,以下記述
修正したら保存,右栗recompile,右栗simulate

状態遷移2: カウントアップ回路

ピンの自動割り振り

作業フォルダを作成
Demonstrations/DE0_Topフォルダの全てを作業フォルダにコピペ
作業フォルダ内のDE0_TOP.qpfをダブルクリック

DE0_TOP.vの記述


保存
メニューバー新規作成,Verilog HDL Fileを選択OK

ファイル名「CountUp_7SEG.v」として保存
コンパイル

テストベンチの準備

デバイス名を右クリック「settings」「EDA TOOL Setting」「Simulation」

  • 「Tool name」「ModelSim-Altera」を選択
  • 「Format for output netlist」「Verilog-HDL」を選択
  • 「Time scale」を「1 ns」

メニューバー「Processing」「start」「Start Test Bench Template Writer」

デバイス右クリ「settings」「EDA TOOL Setting」「Simulation」「NatlevLink setting」「Compile test bench」にチェック
「test Benches」「New」「test bench and simulation files」の「…」をクリック,作業フォルダ/simulation/modelsim内の「**.vt」open

  • test bench name「**」
  • top level module in test benchに「**_vlg_tst」

Test bench and simulation filesでadd後ok

テストの実行

ModelSimが起動
rtl_workを展開,「DE0_TOP_vlg_tst」を右栗editを選択

修正したら保存,右栗recompile,右栗simulate

設計した各回路を読み込んで1つの回路に統合する

ピンの自動割り振り

作業フォルダを作成
Demonstrations/DE0_Topフォルダの全てを作業フォルダにコピペ
作業フォルダ内のDE0_TOP.qpfをダブルクリック

各サブモジュールの取り込み方

2個のファイル「LEDG_Slide.v」「CountUp_7SEG.v」を\verilog\DE0_tutorial_9_DE0_Defaultにコピー
Quartus II起動,DE0_TOP右栗,「Setting」「Files」「...」「LEDG_Slide.v」「CountUp_7SEG.v」を選択
DE0_TOP.vに以下を記述

コンパイル

以下同様に



コンテンツ一覧に戻る

広告を非表示にする