71
1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~ 31, July, 2013 鹿児島大学 中原 啓貴

Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

1

Verilog-HDL 講習会DE0編(9) 順序回路記述(4)

~複雑な状態遷移図~

31, July, 2013 鹿児島大学 中原 啓貴

Page 2: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

DE0_Default もどきを作ってみよう (DE0ボードの電源を入れたときの動作)

2

3Hzのクロック に同期して 4桁同時に

カウントアップ

25 Hzのクロックに同期して 4ビット毎に左右にスライド

Page 3: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

回路を並列に動作させる •  なにも一つの回路で制御する必要はない! •  今回は2つの状態遷移図に分けよう!

3

Page 4: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

LEDGスライドの状態遷移図

4

000 001 010

101 100 011

Reset LEDG <= 11110 _00000; is_right_shift <= 1;

NONE LEDG <= 01111 _00000; is_right_shift <= 1;

is_right_shift == 1; LEDG <= 00111 _10000;

is_right_shift == 1; LEDG <= 00011_11000;

is_right_shift == 1; LEDG <= 00001_11100;

110

is_right_shift == 1; LEDG <= 00000_11110;

is_right_shift == 1; LEDG <= 00000_01111;

NONE LEDG <= 00000_11110; is_right_shift == 0;

is_right_shift == 0; LEDG <= 00001_11100;

is_right_shift == 0; LEDG <= 00011_11000;

is_right_shift == 1; LEDG <= 00111 _10000;

is_right_shift == 0; LEDG <= 01111_00000;

is_right_shift == 0; LEDG <= 11110_00000;

Page 5: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

カウントアップの状態遷移図

5

000 001 010 011

111 110 101 100

Reset HEX_D <= 1000000; HEX_DP <= 0;

NONE HEX_D <= 1111001; HEX_DP <= 1;

NONE HEX_D <= 0100100; HEX_DP <= 0;

NONE HEX_D <= 0110000; HEX_DP <= 1;

NONE HEX_D <= 0011001; HEX_DP <= 0;

NONE HEX_D <= 0010010; HEX_DP <= 1;

NONE HEX_D <= 0000010; HEX_DP <= 0;

NONE HEX_D <= 1111000; HEX_DP <= 1;

NONE HEX_D <= 1000000; HEX_DP <= 0;

Page 6: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

どうやって実装するか? •  並列動作する回路なので独立に設計 •  各回路の設計後、1つにまとめる

6

Page 7: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

まずはLEDGスライド回路を 設計してFPGA上で動作させる

7

Page 8: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

8

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

DE0付属のCD-ROM ”Demonstrations”内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_9_LEDG_Slide¥ 内にコピー

Page 9: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

DE0_TOP.qpfをダブルクリックしてQuartus IIを起動

9

Pin Plannerを開いてみると ピン配置が終わっている!

Page 10: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLを入力

10

ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力

コード入力したら保存を忘れずに!

Page 11: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

そろそろモジュール階層を 意識して記述しましょう

•  最後に各回路をマージするので、サブ・ モジュールにLEDGスライド回路を記述する •  サブ・モジュールは別のVerilog-HDLファイルに記述する ‒ 可読性を上げるため •  トップモジュールにべた書きは読みにくい!! •  トップモジュールはFPGA外部の信号線定義のみに留める

‒ 次の設計のときに読み込んで再利用可能 •  FPGAボードが変ってもインスタンス化して接続し直すだけで再利用可能

11

Page 12: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLファイルの新規追加

12

新規作成をクリック

Verilog HDL Fileを 選択し「OK」

Page 13: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

タイミングの生成 •  50MHz (DE0ボードのクロック)から25Hzをどうやって生成?

13

25 Hz ということは, 1周期= 1 / 25 = 0.04 [sec]

25Hz

ということは, 0.04 / 2 = 0.02 [sec] 毎にHigh と Low を切り替えればよい

50MHz 50 MHz ということは, 1周期= 1 / 50x106 = 0.02x10-6 [sec]

つまり, 0.02 / (0.02 x 10-6) = 100,000 クロック毎に High と Lowを切り替えればよい

Page 14: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (LEDG_Slide.v)

14

Page 15: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (LEDG_Slide.v)

15

Page 16: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

16

入力するVerilog-HDL (LEDG_Slide.v)

Page 17: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

LEDG_Slide.vを入力したら保存

17

保存ボタンをクリック

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

Page 18: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

保存するとタブの表示が変ります

18

Page 19: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (DE0_TOP.v)

•  単にLEDG_Slideをインスタンス化するだけ

19

リセット信号は押しボタン[0]とした. 負論理であることに注意!

Page 20: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

コンパイルを行うとプロジェクトに 認識されます

20

Page 21: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

シミュレーションの設定

21

Project Navigatorで 「DE0_TOP」を右クリックし 「Settings」を選択

Simulation を選択

Tool name は「ModelSim-Altera」

Format は 「Verilog-HDL」

Time scale は「1 ns」

Page 22: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

テストベンチ・テンプレート生成

22

Processing -> Startメニューから

Start Test Bench Template Writer を選択

Page 23: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

テストベンチ 読み込み設定

23

Project Navigatorで 「DE0_TOP」を右クリックし 「Settings」を選択

Compile test benchを選択し, Test Benches... をクリック New... をクリック

Page 24: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

テストベンチ設定

24

Test bench name は「DE0_TOP」

Top level module in test bench は「DE0_TOP_vlg_tst」

テストベンチファイルを追加

Page 25: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

テストベンチファイル読み込み

25

プロジェクトを置いているフォルダに 「simulation」フォルダができているので、 「modelsim」フォルダをクリック。 すると、テンプレート「DE0_TOP.vt」が あるはず。

テストベンチ「DE0_TOP.vt」を選択

Page 26: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

確認を行う

26

Page 27: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

シミュレーションの設定確認

27

Page 28: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

ModelSim起動

28

Page 29: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

29

テストベンチを編集

1. Library タブをクリック

2. rtl_work を展開

3. DE0_TOP_vlg_tst を右クリックし 「Edit」を選択

Page 30: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

30

タイム スケールを 確認

Page 31: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するテストベンチ

31

Page 32: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

32

ReCompile を実行し シミュレーションの準備を行います

DE0_TOP_vlg_tst を右クリックし 「ReCompile」を選択

Page 33: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

波形をWaveウインドウに追加

33

Page 34: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

LEDG_Slideの信号を追加

34

Page 35: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Gen_CLK25Hzの信号を追加

35

Page 36: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

表示を見やすくするため, Divider を追加しましょう

36

右クリックして「Add」を選択し 「New Divider」を選択

Page 37: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

コマンドラインに run 50ms を入力

37

Add Cursor をクリックしカーソルを追加

25Hz間隔になっているか チェックしてみよう

Page 38: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

FPGA上で動作を確認

38

25 Hzのクロックに同期して 4ビット毎に左右にスライド

Page 39: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

次はカウントアップ回路を 設計してFPGA上で動作させる

39

Page 40: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

40

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

DE0付属のCD-ROM ”Demonstrations”内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_9_CountUp_7SEG¥ 内にコピー

Page 41: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

DE0_TOP.qpfをダブルクリックしてQuartus IIを起動

41

Pin Plannerを開いてみると ピン配置が終わっている!

Page 42: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLを入力

42

ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力

コード入力したら保存を忘れずに!

Page 43: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLファイルの新規追加

43

新規作成をクリック

Verilog HDL Fileを 選択し「OK」

Page 44: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

タイミングの生成 •  50MHz (DE0ボードのクロック)から3Hzをどうやって生成?

44

3Hz ということは, 1周期= 1 /3 = 0.04 [sec]

3Hz

ということは, 0.04 / 2 = 0.02 [sec] 毎にHigh と Low を切り替えればよい

50MHz 50 MHz ということは, 1周期= 1 / 50x106 = 0.02x10-6 [sec]

つまり, 0.02 / (0.02 x 10-6) = 100,000 クロック毎に High と Lowを切り替えればよい

自分で考えてみよう

Page 45: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (CountUp_7SEG.v)

45

Page 46: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (CountUp_7SEG.v)

46

Page 47: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

47

入力するVerilog-HDL (CountUp_7SEG.v)

Page 48: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

CountUp_7SEG.vを保存

48

保存ボタンをクリック

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

Page 49: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するVerilog-HDL (DE0_TOP.v)

49

Page 50: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

入力するテストベンチ

50

Page 51: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

シミュレーションで動作を確認

51

Page 52: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

FPGA上で動作を確認

52

3Hzのクロック に同期して 4桁同時に

カウントアップ

Page 53: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

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

53

Page 54: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

54

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

DE0付属のCD-ROM ”Demonstrations”内の "DE0_Top"フォルダの ファイル全てを C:¥verilog¥DE0_tutorial_9_DE0_Default¥ 内にコピー

Page 55: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

DE0_TOP.qpfをダブルクリックしてQuartus IIを起動

55

Pin Plannerを開いてみると ピン配置が終わっている!

Page 56: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

【準備】先程設計したVerilog-HDLファイルをコピーしておく 2個のファイル「LEDG_Slide.v」「CountUp_7SEG.v」を C:\verilog\DE0_tutorial_9_DE0_Defaultにコピー

56

Page 57: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLを入力

57

ダブルクリック Verilog-HDLの テンプレートが 表示されるので コードを入力

コード入力したら保存を忘れずに!

Page 58: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

先程設計したVerilog-HDL ファイルを読み込みましょう

58

右クリックして 「Settings ...」を 選択

「Files」を選択 「...」を選択

Page 59: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

Verilog-HDLファイルの選択

59

先程コピーしたファイル 「CountUp_7SEG.v」 「LEDG_Slide.v」 を選択して「開く」を クリック

Page 60: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

60

【Tips】他のファイルをインスタンシェーション(呼出し)する場合は, コピペすると楽!

Verilog-HDLの記述 (DE0_Top.v)

「LEDG_Slide」をテキストエディタで 開いて, モジュール宣言部をコピペ

Page 61: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

あとは信号を記述しましょう

61

Page 62: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

同様にコピペ…

62

「CountUp_7SEG」を テキストエディタで 開いて, モジュール宣言部をコピペ

Page 63: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

記述するVerilog-HDL (DE0_TOP.v)

63

Page 64: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

今回設計した回路

64

DE0_Top

LED_Slide_inst

CountUp_7SEG_inst

CLOCK_50 RESET_N

LEDG

CLOCK_50 RESET_N

HEX_D

HEX_DP

CLOCK_50

BUTTON[0] LEDG

HEX0_D HEX0_DP HEX1_D HEX1_DP HEX2_D HEX2_DP HEX3_D HEX3_DP

Page 65: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

【別ファイルで設計するメリット】 FPGAボードを変更しても使い回しできる!

65

Spartan III FPGA Boardに変更!! (インスタンシエーションの信号名を付け替えるだけでOK)

LED_Slide_inst

CountUp_7SEG_inst

CLOCK_50 RESET_N

LEDG

CLOCK_50 RESET_N

HEX_D

HEX_DP

CLK50

PUSH[0] LED_GREEN

HEX0_D HEX0_DP HEX1_D HEX1_DP HEX2_D HEX2_DP

7セグが減っても増えてもOK

Page 66: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

別ファイルで設計するメリットはたくさんある!

•  FPGAボードが変わっても、インスタンシエーョン時に信号線名を変えるだけでOK •  回路を分割設計するので, 設計対象が小さくなる. ‒ 設計がしやすくなる ‒ ミスも減る ‒ バグ検出も容易

•  設計毎に過去の資産として使い回しできる

66

Page 67: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

コンパイルを行う

67

「保存アイコン」を クリックして保存

「コンパイルアイコン」を クリックして コンパイルを行う

コンパイル後、このウインドウが 表示されればOK

Page 68: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

コンパイル後, 読み込んだファイルがProject Navigator に表示されます

68

Page 69: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

FPGA上で動作を確認

69

3Hzのクロック に同期して 4桁同時に

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

Page 70: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

まとめ •  複雑な回路は並列化して状態遷移図をわける ‒ 設計が楽になるので、是非わけましょう! ‒ Verilog-HDLファイルを読み込む方法を学習 ‒ 状態遷移図間の通信は次回で

•  所望のクロックを生成する方法を学習 ‒ 入力周波数から所定の周波数を 生成できるようになった • ただし、誤差あり • 入力周波数以上の周波数は生成できない…  (実はFPGA内のある回路を使うとできます)

70

Page 71: Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複 …hirokinakaharaoboe.net/pdf/DE0_tutorial_9.pdf1 Verilog-HDL 講習会DE0編(9) 順序回路記述(4) ~複雑な状態遷移図~

課題 •  下記のLEDGを指定した周波数で点滅する回路を作成し, FPGA上で動作を確認 ‒ LEDG[0]: 2 Hz ‒ LEDG[1]: 1 Hz ‒ LEDG[2]: 0.333 Hz ‒ LEDG[3]: 0.5 Hz

•  各LED表示回路毎にプロジェクトを作成して, 全てが完成したら1つのプロジェクトに読み込むように設計しよう

71