fpga中有符號數的計算


在fpga設計中,所有的算數運算符都是按照無符號數進行的。最近用FPGA做了有符號的計算,來記錄一下

1.如果要完成有符號數計算,對於加、減操作通過補碼處理即可用無符號加法完成。不過在計算的時候要考慮位數的限制,不管在做加法還是減法,結果的位數要比原來的數據多出一位,

這樣計算的時候才不會出現量程的錯誤。

example1:

module signed_yz
(
input clk,rst_n,
input signed [7:0]data,
input signed [7:0]datb,
output signed [8:0]datc
);
assign datc=data+datb;

endmodule

仿真結果圖 :

 

2.對於乘法操作,無符號數直接采用“*”運算符;

有符號數運算可通過定義輸出為 signed 來處理。通過“*”運算符完成有符號數的乘法運算。

example2:

module signed_yz
(
input clk,rst_n,
//unsigned data
input [7:0]udata,
input [7:0]udatb,
output [15:0]udatc,
//signed data
input signed [7:0]data,
input signed [7:0]datb,
output signed [15:0]datc

);

assign udatc=udata*udatb;
assign datc=data*datb;

endmodule

從其 RTL 結構圖可以看到乘法器標注為:
“signed” ,為有符號數乘法器。

 

仿真結果圖 :

      

     以上為FPGA中符號數的計算,記錄一下自己的學習過程,同時也供大家學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM