用verilog實現有符號數的加法

2021-06-18 00:24:41 字數 884 閱讀 3778

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位二進位制表示法所對應正負數。進一步觀察,我們發現兩種型別數的加減法是一樣的,做加...