0

Verilog で 16 ビット ALU を書き込もうとしています。私の入力は16ビットのAin、Bin、および16ビットの出力です。

両方の入力の 2 の補数の加算と減算を行う必要があります。そのため、「+」および「-」演算子を使用できるかどうか疑問に思っています。Ain+BinAin-Bin

また、特定の値 N だけ A のビットを左回転する必要があります。A を複製して 32 ビットを形成し、それを N ビット左にシフトする次のような結果になりました。しかし、問題は、それを再び 16 ビットに減らす必要があることですが、どうすればそれを行うことができますか?

out <=({A,A}<<N);

4

1 に答える 1

0

はい、+-2 つの数値を加算または減算する場合は、演算子を使用できます。

結果を切り捨てて 16 ビットに戻したい場合は、結果を 16 ビット ワイヤ/レジスタに割り当てるだけで、自動的に上位ビットが削除され、下位 16 ビットが に割り当てられoutます。場合によっては、これにより lint 警告が発生する可能性があるため、最初に結果を中間変数に割り当ててから、明示的な部分選択を実行することをお勧めします。

wire [15:0] out;
wire [15:0] A;
wire [31:0] A_rotate;

A_rotate = {A,A} << N;
out = A_rotate[15:0];
于 2013-08-28T14:30:32.127 に答える