0
我想用verilog編寫一個16位的ALU。 我的輸入是16位Ain,Bin和16位輸出。關於2的補碼和左循環的Verilog問題
我需要對兩個輸入進行2的補碼加法和減法。因此,我想知道我是否可以只使用'+'和' - '運算符。 Ain+Bin
,Ain-Bin
此外,我需要通過我用下面出來一定值N.做A中的位的左旋轉,其中我複製以形成32位,它轉移到由N個左位。但現在問題是我需要再次將其降低到16位,但我該怎麼做?
out <=({A,A}<<N);
確定,所以例如,如果A = 4'b1110,'{A,A}'= 11101110。所以將它左移2位將以10111000結束。因此,如果將此值分配給4位,則out = 4b'1000或4b'1011? – James
它需要較低的4位,所以出來會是'b1000。 – Tim
所以,如果我想獲得高位,我將不得不使用中間值,然後out = A_rotate [31:16]'?實際上有沒有一種方法可以在一個單獨的步驟中完成,而不需要像'out <=({A,A} << N)[31:16]' – James