1.在计算机运算中常常要比较数字的大小。两个4位有符号数X=x3x2x1x0,Y=y3y2y1y0,可以用图3.45所示的减法器实现X-Y。3种输出结果意义如下:
1.如果结果是0,Z=1,否则Z=0;
2.如果结果是负数,N=1,否则N=0;
3.如果发生算数溢出V=1,否则V=0;
2.其代码如下展示:
module comparator(X,Y,V,N,Z);
parameter n=32;
input [n-1:0]X,Y;
output reg V,N,Z;
reg [n-1:0] S;
reg [n:0] C;
integer k;
always@(X,Y)
begin
C[0]=1'b1;
for(k=0;k<n;k=k+1)
begin
S[k]=(X[k]&~Y[k])|(X[k]&C[k])|(~Y[k]&C[k]);
C[k+1]=(X[k]&~Y[k])|(X[k]&C[k])|(~Y[k]&C[k]);
end
V=C[n]^C[n-1];
N=S[n-1];
Z=!S;
end
endmodule
module tb_compar();
reg [31:0]x, y;
wire v, n, z;
integer k;
initial
x=32'h00000000;
always@(y)
for(k=0; k<32; k=k+1)
x=x+32'h00000001;
initial
#10 y=1'b0;
always #10 y=~y;
comparator li(x,y,v,n,z);
endmodule
3.完成截图
4.该实验完成视频地址:p96图3.47视频_哔哩哔哩_bilibili