1. 補碼簡介
補碼只不過是用來表示帶符號數而已.補碼的原則是:
正數的補碼是其本身,也就是原碼.
負數的補碼是各位取反後加1.也就是其反碼加1.
eg1:
+0 :0_000_0000
-0 :反碼:1_111_1111,加1後溢位了,仍然為:0_000_0000;
所以正負0的補碼表示是一樣的。
eg2:
+1 :0_000_0001 ;
-1 :1_111_1111 ;
eg3:
+4 :0_000_0100 ;
-4 :1_000_1001 ;
2. verilog實現補碼加法
實現功能:diff + ipred ,並且clip;
其中 diff 可正可負,ipred為正數。
function [pix_width-1:0] complty_adder
input [pix_width-1:0] diff;
input [pix_width-1:0] ipred;
input sign;
reg [pix_width :0] complty_of_diff;//最高位用來做符號位
reg [pix_width+1:0] sum; //加之後可能會進製
complty_of_diff = sign ? + 1'b1 : ;
complty_adder[pix_width-1:0] = complty_of_diff[pix_width+1] ? } : complty_of_diff[pix_width] ? } : complty_of_diff[pix_width-1:0];
endfunction
Verilog 有符號數與無符號數運算
無符號數運算,左值位寬不夠,發生截斷的現象 2.兩個無符號數運算,賦值給乙個有符號的數。可以看出,右側先按照無符號數進行運算,取得的運算結果按照左側的符號進行資料顯示。3.兩個無符號數運算,無符號數賦負值 補碼 按照該補碼對應的正值進行處理。結果同上。4.有符號數和無符號數運算,賦值給有符號數。補碼...
Verilog 帶符號數操作
1 之前的筆記寫過 補碼 可知在fpga綜合成電路的時候最底層都是以補碼的形式在運算,正數的補碼就是本身,負數的補碼要取反 1。2 那麼verilog中程式設計的時候對程式設計人員來說,其實想不到現在的編譯器 quartus ii 9.1和ise10.1沒有問題,更高的版本應該更加可以了 都支援ve...
Verilog有符號數運算
在數位電路中,出於應用的需要,我們可以使用無符號數,即包括0及整數的集合 也可以使用有符號數,即包括0和正負數的集合。在更加複雜的系統中,也許這兩種型別的數,我們都會用到。有符號數通常以2的補碼形式來表示。圖1列出了4位二進位制表示法所對應正負數。進一步觀察,我們發現兩種型別數的加減法是一樣的,做加...