Verilog-HDL講習会 追加資料(4) 組合せ回路記述 · 3 nビット加算器 •...
Transcript of Verilog-HDL講習会 追加資料(4) 組合せ回路記述 · 3 nビット加算器 •...
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ビット加算器モジュール
全加算器モジュール
77
前回設計した全加算器を読込み前回通りに設計していれば「first_verilog」フォルダに
「topmodule_first_verilog.v」というファイルがあるはず
ファイルのチェックウインドウが開きますがそのまま「OK」
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」に設定
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]
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のみ全ての桁を記述する必要はない)
2525
課題: 信号選択回路 (2-MUX)
11110011110100011110101001000000yx2x1s
2-MUXx1
x2y
s
選択信号s が0のときはx1 を選択,s が 1 のときはx2 を選択する回路