佐藤(俊)/春プロ第3回
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[佐藤(俊)/春のプロジェクト]]
*マルチプレクサと算術論理演算回路 [#nbd857dc]
**case文 [#g65fd61f]
引数の値によって動作が変化。
defaultはどの引数がどの値にも当てはまらなかった場合に実行。
always中でdefaultを省略すると、設計ツールは非同期ラッチを生成してしまう
可能性がある。
case(引数)
値1: 動作定義 ;
値2: 動作定義 ;
...
default: 動作定義;
endcase
例
always @(a or b or c or f)
case(f)
2'b00: s = a;
2'b01: s = b;
2'b10: s = c;
default: s = 1'bx;
endcase
**define [#s92e7193]
`define ADD 5'b00000
とすると`ADDは5b'00000に置き換えられる。
定義された値を用いる場合は`を付け`ADDとする。
**ALUでの大小比較 [#x0ccc91b]
x = a + 16'h8000
y = b + 16'h8000
として比較
Verilog HDLのビット列が符合なし2進数表現として扱われることへの対策。
16'h8000を加算することで、負の数を含む2の補数表現を、非負整数に変換している。
よって、非負整数なので、符合なし2進数と見なすことができる。
終了行:
[[佐藤(俊)/春のプロジェクト]]
*マルチプレクサと算術論理演算回路 [#nbd857dc]
**case文 [#g65fd61f]
引数の値によって動作が変化。
defaultはどの引数がどの値にも当てはまらなかった場合に実行。
always中でdefaultを省略すると、設計ツールは非同期ラッチを生成してしまう
可能性がある。
case(引数)
値1: 動作定義 ;
値2: 動作定義 ;
...
default: 動作定義;
endcase
例
always @(a or b or c or f)
case(f)
2'b00: s = a;
2'b01: s = b;
2'b10: s = c;
default: s = 1'bx;
endcase
**define [#s92e7193]
`define ADD 5'b00000
とすると`ADDは5b'00000に置き換えられる。
定義された値を用いる場合は`を付け`ADDとする。
**ALUでの大小比較 [#x0ccc91b]
x = a + 16'h8000
y = b + 16'h8000
として比較
Verilog HDLのビット列が符合なし2進数表現として扱われることへの対策。
16'h8000を加算することで、負の数を含む2の補数表現を、非負整数に変換している。
よって、非負整数なので、符合なし2進数と見なすことができる。
ページ名: