module signed_add(input CLK,RST,
input [12:0] A,B,//input parameter A={1'b,12'b}={sign,value}
//B={1'b,12'b}={sign,value}
output [13:0] C); //output C=A+B C={1'b,13'b}={sign,value}
reg [13:0] c;
always @(posedge CLK,negedge RST)
if(!RST)begin
c<=13'b0;
end else begin
if(A[12]==0&&B[12]==0)begin //if(A is positive and B is positive )
c<={1'b0,{1'b0,A[11:0]}+{1'b0,B[11:0]}};
end
if(A[12]==1&&B[12]==0)begin //if(A is negative and B is positive )
if(A[11:0]>B[11:0]) c<={1'b1,{1'b0,A[11:0]}-{1'b0,B[11:0]}};
else c<={1'b0,{1'b0,B[11:0]}-{1'b0,A[11:0]}};
end
if(A[12]==0&&B[12]==1)begin //if(A is positive and B is negative )
FPGA有符号加法器
最新推荐文章于 2023-11-22 16:04:33 发布
本文介绍了如何使用Verilog在FPGA上实现13位有符号加法器。加法器的输入A和B包含12位数值和1位符号位,输出C为14位,其中符号位用于表示正负数。通过使用modelsim进行仿真,得到了延迟一个时钟周期的正确结果。
摘要由CSDN通过智能技术生成