[Verilog]Verilogのビット接合演算子{}
1427 ワード
Verilogのビット接合演算子{}
引用:Verilogでは、複数bit(123 bitなど)の変数にどのように値を付けますか?123 bitを連続的に書く1には及ばないでしょうか?16進数に換算して表しますか?1230 bitならどうしますか?この場合、ビットパッチ演算が必要です.
一、Verilogのビット接合演算子
Verilog HDLとC言語は似ていますが、Verilogを学ぶ過程で、つなぎ合わせ演算子{}など、Cとは全く異なる文法に遭遇しました.注意:この{}の使用はC言語とは少しも関係ありません.Verilog言語はコードブロックをbegin-endで表します.
1.2、ビット接合の定義
ビット接合演算子{}は、2つ以上の信号を接合するために使用され、1つの全体の信号、例えば1つのビットフルアダプタが、キャリー出力と結果を接合することができることを示す.例えば加算器: は、a+b+cinがオーバーフロービットを生成すると、ちょうど接合に関与するcoutによって受信されるため、式を簡略化する役割を果たす である.
は、さらに、例えばシフトレジスタにおいて、 という部分がある.上のコードは0とstoreの左側7ビットを接合することによって右に1ビットシフトする操作則storeの値の変化を実現した: 二、テクニックと注意事項
2.1、繰り返し数字法を用いて綴り式の書き方を簡略化する例えば4 bitを表すw
ネスト方式を用いて書く を簡略化する.
2.2、ビット接合演算子の使用に関する注意:ビットの結合式では、各要素の特定のビット数を指定することが望ましい.そうでない場合、デフォルトは32ビットのバイナリ数 である.
三、パラメータでビット幅を指定する
四、参考文献
4.1、参考リンク:Link
引用:Verilogでは、複数bit(123 bitなど)の変数にどのように値を付けますか?123 bitを連続的に書く1には及ばないでしょうか?16進数に換算して表しますか?1230 bitならどうしますか?この場合、ビットパッチ演算が必要です.
一、Verilogのビット接合演算子
Verilog HDLとC言語は似ていますが、Verilogを学ぶ過程で、つなぎ合わせ演算子{}など、Cとは全く異なる文法に遭遇しました.注意:この{}の使用はC言語とは少しも関係ありません.Verilog言語はコードブロックをbegin-endで表します.
1.2、ビット接合の定義
ビット接合演算子{}は、2つ以上の信号を接合するために使用され、1つの全体の信号、例えば1つのビットフルアダプタが、キャリー出力と結果を接合することができることを示す.
module fulladder(a, b, cin, sum, cout);
input a, b, cin;
output sum, cout;
assign {cout, sum} = a + b + cin; //
endmodule
// store[7:0]
store <= {0, store[7:1]};
2.1、繰り返し数字法を用いて綴り式の書き方を簡略化する
{4{w}} <=> {w, w, w, w}
{a, {3{b, c}}} <=> {a, b, c, b, c, b, c}
2.2、ビット接合演算子の使用に関する注意:
三、パラメータでビット幅を指定する
localparam MEM_DUMMY_BIT = 1024;
assign l1_evt_mem_dummy_data = {{(MEM_DUMMY_BIT){1'b0}}, l1_evt_mem_di};
四、参考文献
4.1、参考リンク:Link