Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Verilog-HDL Tutorial (6)

Ad

1
Verilog-HDL 講習会DE0編(6)
順序回路記述(1)
∼カウンタを例題として∼
12, June, 2013
鹿児島大学
中原 啓貴

Ad

2
•  ピン配置が面倒くさいので、デフォルト
のプロジェクトを読み込みましょう!
(DE0に限った事ではないが、Terasic製品はサンプルCD-ROMの
プロジェクトを改変するのが楽でお勧め)
DE0付属のCD-ROM
Demonstrat...

Ad

DE0_TOP.qpfをダブルクリック
してQuartus IIを起動
3
Pin Plannerを開いてみると
ピン配置が終わっている!

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Prochain SlideShare
Verilog-HDL Tutorial (3)
Verilog-HDL Tutorial (3)
Chargement dans…3
×

Consultez-les par la suite

1 sur 21 Publicité
1 sur 21 Publicité
Publicité

Plus De Contenu Connexe

Plus par Hiroki Nakahara

Publicité

Verilog-HDL Tutorial (6)

  1. 1. 1 Verilog-HDL 講習会DE0編(6) 順序回路記述(1) ∼カウンタを例題として∼ 12, June, 2013 鹿児島大学 中原 啓貴
  2. 2. 2 •  ピン配置が面倒くさいので、デフォルト のプロジェクトを読み込みましょう! (DE0に限った事ではないが、Terasic製品はサンプルCD-ROMの プロジェクトを改変するのが楽でお勧め) DE0付属のCD-ROM Demonstrations 内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_5¥ 内にコピー
  3. 3. DE0_TOP.qpfをダブルクリック してQuartus IIを起動 3 Pin Plannerを開いてみると ピン配置が終わっている!
  4. 4. Verilog-HDLを入力 4 ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力 コード入力したら保存を忘れずに!
  5. 5. 5 いよいよ順序回路編です •  ほぼ全ての実用的な回路は順序回路です •  順序回路の記述法をマスターすることが、 FPGAを使いこなせるかどうかのポイント •  頑張って理解しましょう! ‒ とはいえ、言語ですから 「たくさん書いて慣れろ」
  6. 6. 6 順序回路とは? •  組合せ回路の出力:現在の入力 •  順序回路の出力: ‒  現在の入力+現在の状態 (現在の状態=過去の入力) •  つまり、順序回路は現在と過去の 入力に応じて出力する回路といえる •  過去の入力を記憶  状態を記憶 •  状態を記憶する記述!? 組合せ 回路 組合せ 回路 記憶 素子 外部 入力 外部 出力 外部 入力 外部 出力 状態 出力 状態 入力 組合せ回路 順序回路
  7. 7. 7 例題:4ビットカウンタ •  クロックに同期するカウンタ 4ビット 加算器 4ビット レジスタ クロック 0010 0001 0000 リセット信号
  8. 8. 8 カウンタの記述
  9. 9. 9 解説 4ビット 加算器 4ビット レジスタ レジスタ宣言 レジスタを宣言します クロック信号の 立ち上がり リセット信号の 立ち下がりor (または) に always@ 以下の 処理が行われる
  10. 10. 10 解説(続き) always@( クロック信号 or リセット信号) begin if( クロック信号 )begin (レジスタ初期化); end else begin (順序回路の処理); end end always@() は定型文で記述 レジスタに代入するときは 「 <= 」を使う!(ノンブロッキング代入) 左辺はレジスタ値にする
  11. 11. 11 リセット信号 初期化を記述 クロックを記述 シミュレーション で動作を確認
  12. 12. 12 シミュレーション結果の確認 リセットがかかるまで 値が決まらないので 出力は不定 リセット中は 初期値が出る リセット後は クロックの立ち上がりで カウントする LEDG[3:0]を COUNT_VALUEに纏めた
  13. 13. 13 FPGAボード上に実装してみる 全部点灯する??
  14. 14. 14 原因の考察 •  基準クロック 50MHz に同期 •  LEDの点滅が早すぎる! 4ビット 加算器 4ビット レジスタ クロック (50MHz) 考えてみよう: 50MHz のとき 点滅の間隔は ____[nsec]である. リセット信号
  15. 15. 15 タイミングを調整 タイミング調整用の値を 保持するレジスタ宣言 レジスタ初期化 50MHz カウントしたら LEDを1つインクリメント
  16. 16. 16 FPGAに再度書き込み LEDがゆっくり カウント アップすると 成功
  17. 17. 17 右から左に流れるLED •  以下の動作をする回路を記述せよ ‒ ただし、LEDが切替るのは1秒間隔とする ? 4ビット レジスタ クロック (50MHz) どこを書き換えればよいか? リセット信号
  18. 18. 18 答え •  初期値を与え左シフタを記述するだけ! 加算はコメントアウト 左シフタ 初期値を変更
  19. 19. 19 FPGA上に実現 LEDが右から左へ 点灯すると成功
  20. 20. 20 課題1 ただしLEDの点灯間隔は全て1秒とする 1.  LEDを点滅させよ 2.  スライドスイッチがOFF: ダウンカウンタ スライドスイッチがON: アップカウンタ となる回路を作成せよ 3.  スライドスイッチがOFF: LEDが右→左 スライドスイッチがON: LEDが左→右 となる回路を作成せよ
  21. 21. 21 課題2 ただしLEDの点灯間隔は全て1秒とする 1.  7セグメントLEDがカウントアップする回路を 作成し, DE0ボード上に実現せよ. ただし, 0から 7までのカウントでよい. 2.  1.で作った回路を スライドスイッチがOFF: ダウンカウンタ スライドスイッチがON: アップカウンタ となるように改造せよ

×