Verilog-HDL講習会 追加資料(4) 組合せ回路記述 · 3 nビット加算器 •...

27
1 1 Verilog-HDL講習会 追加資料(4) 組合せ回路記述 22, June, 2012

Transcript of Verilog-HDL講習会 追加資料(4) 組合せ回路記述 · 3 nビット加算器 •...

11

Verilog-HDL講習会追加資料(4)組合せ回路記述

22, June, 2012

22

先週の復習:全加算器

x_iny_in

carryin

carryout

sumout

半加算器

11111

10011

10101

01001

10110

01010

01100

00000

carryout

sumout

carryiny_inx_in

33

nビット加算器• 全部の加算器を記述していると面倒!

x0

x1

x2

y0

y1

y2

0 s0

s1

s2

s3

x2 x1 x0+)y2 y1 y0--------------s3 s2 s1 s0

44

モジュール• 共通部分を読出し→記述量を減らす

– C言語における「関数」のようなものx0

x1

x2

y0

y1

y2

0 s0

s1

s2

s3

x2 x1 x0+)y2 y1 y0--------------s3 s2 s1 s0

3ビット加算器モジュール

全加算器モジュール

55

モジュールを実装してみよう• 以下のプロジェクトを作成する(前回までの資料を参考に)

ISimであることを確認

66

前回の設計を読込む

右クリック

77

前回設計した全加算器を読込み前回通りに設計していれば「first_verilog」フォルダに

「topmodule_first_verilog.v」というファイルがあるはず

ファイルのチェックウインドウが開きますがそのまま「OK」

88

3ビット加算器のVerilog-HDL記述を追加

右クリック

99

Verilog-HDLの名前を設定

今回は「three_bit_adder」に設定する

1010

その他の設定はデフォルトのままでOK

1111

入力するVerilog-HDL

1212

モジュールの記述方法

(モジュール名) (インスタンス名) (ポート・リスト);

最後にセミコロン「;」をつける!

モジュール名:topmodule_first_verilog

インスタンス名:inst_1

1313

x0

x1

x2

y0

y1

y2

0 s0

s1

s2

s3

three_bit_adder

inst_1

inst_2

inst_3

w0

w1

Verilog-HDLと回路の対応を確認

1414

注意• 途中でソースを追加した場合は, トップモジュールを指定してください!

トップモジュールに指定したいモジュールを右クリック

「Set as Top Module」を選択

「Top Module」アイコンがつきます

1515

論理合成→シミュレーションで動作確認

論理合成を行う

シミュレーションモードに切り替える

テストベンチの追加

「Verilog Text Fixture」を選択

「testbench_threebit_adder」に設定

1616

複数のモジュールがある場合シミュレーション対象を選択

今回はトップモジュール「three_bit_adder」をシミュレーションします

1717

テストベンチ記述例

ここを記述

1818

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

テストベンチをクリック

「Simulate Behavioral Model」をクリック

「+」をクリックしてメニューを展開する

1919

ビット幅指定• 同じ属性を持った信号をまとめる

– 記述量の削減– コードの可読性向上

x[0]

x[1]

x[2]

y[0]

y[1]

y[2]

0 s[0]

s[1]

s[2]

s[3]

x[2] x[1] x[0]+)y[2] y[1] y[0]----------------------s[3] s[2] s[1] s[0]

2020

ビット幅指定• 以下のプロジェクトを作成

2121

準備• p6 ~ p10 までを行う

– ただし, 新規作成するVerilog-HDLファイル名は「topmodule_bitwidth」とする

「topmodule_bitwidth」に設定

2222

入力するVerilog-HDL

ビット幅の宣言:(属性) [(ビット幅-1):0] (信号名);

ビットの指定:(信号名)[(ビットインデックス)]

複数ビットの指定:(信号名)[(インデックス):(インデックス)]

入力したら保存をして、トップモジュールを「topmodule_bitwidth」に設定しておく

2323

テストベンチ記述例

ここを記述

Verilog-HDLの定数の記述:(ビット幅)'(基数)(数値)

例:8'b0010_1001(区切り「_」をつけても可)

16'h1ffe(16進数は4ビットを表現するので4桁x4ビット=16ビット)

8'd255(10進数で255=8'b1111_1111)

32'b0(例外として0のみ全ての桁を記述する必要はない)

2424

シミュレーションの実行

右クリック

「Radix」から「Unsigned Decimal」を選択10進表示になる!

2525

課題: 信号選択回路 (2-MUX)

11110011110100011110101001000000yx2x1s

2-MUXx1

x2y

s

選択信号s が0のときはx1 を選択,s が 1 のときはx2 を選択する回路

2626

課題1• 選択回路(2-MUX)をVerilog-HDLで記述し、FPGA上で動作させよ– 選択信号, 入力信号はスライドスイッチ– 出力信号はLED

スライドスイッチ

LED

2727

課題2• モジュール記述を用いて4-MUX をVerilog-HDLで記述しなさい– 可能ならば, ビット幅指定記述も用いる

• シミュレーションを行い, 動作することを示せ

2-MUXx1

x2

2-MUX

2-MUXx3

x4

y

s1 s2