Verilog-HDL Tutorial (5)
- 5. 5
課題: 信号選択回路 (2-MUX)
s x1 x2 y
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 0
1 1 1 1
2-MUX
x1
x2
y
s
選択信号 s が0のときは x1 を選択,
s が 1 のときは x2 を選択する回路
- 27. 27
複雑な条件式の記述
• 条件演算子や論理式
‒ 複雑な条件分岐の記述は困難
‒ 可読性が悪い
• If文を使いたい!
assign f = ( c1 == 1'b0) ?
( ( c2 == 1'b0) ? 2'b00 : 2'b01)
: ((c2 == 1'b0) ? 2'b10 : 2'b11);
if( c1 == 1'b0) {
if( c2 == 1'b0) {
f = 2'b00;
} else {
f = 2'b01;
}
} else {
if( c2 == 1'b0) {
f = 2'b10;
} else {
f = 2'b11;
}
}
- 29. 29
解説
• Function文
‒ 関数のようなもの
‒ モジュール呼び出しと異なり、モジュール内に記述
• 呼び出し: assign = (Function名)(ポート・リスト);
• 関数:
function (ビット幅)(Function名);
(ポート宣言);
(関数記述, if文など)
代入は assign 不要. ただし, (Function名)=(値);
endfunction
癖がある記述なので、たくさん書いて慣れよう!
C言語の中括弧「 { 」「 } 」は
「begin」「end」になります
変数の順序が一致
しなければならない!