最近写的一个工程里面要用到有符号数无符号数的比较大小,贴出代码供大家取用。
如果1<2,比较结果compare_flag输出为1,否则输出为零
_signed_flag为1代表作为有符号数比较,0代表作为无符号数比较
module mycomp(
input [31:0] data1,
input [31:0] data2,
input _signed_flag,
output reg compare_flag
);always @(data1 or data2 or _signed_flag)begin
if(_signed_flag==1)begin
if(data1[31]==1&&data2[31]==0)
compare_flag=1;
else if(data1[31]==0&&data2[31]==1)
compare_flag=0;
else if(data1[31]==1&&data2[31]==1)
compare_flag = (data1>data2) ? 1 : 0;
else
compare_flag = (data1<data2) ? 1 : 0 ;end
else if(_signed_flag==0) begin
compare_flag = (data1<data2) ? 1 : 0 ; end
else begin
compare_flag =1'bz; end
end
endmodule
如果1>2,比较结果compare_flag输出为1,否则输出为零
flag为1代表作为有符号数比较,0代表作为无符号数比较
module compg(
input [31:0] data1,
input [31:0] data2,
input flag,
output reg compare_flag
);
always @(data1 or data2 or flag)begin
if(flag==1)begin
if(data1[31]==1&&data2[31]==0)
compare_flag=0;
else if(data1[31]==0&&data2[31]==1)
compare_flag=1;
else if((data1[31]==1)&&(data2[31]==1))
compare_flag = (data1<data2) ? 1 : 0;
else
compare_flag = (data1>data2) ? 1 : 0 ;end
else if(flag==0) begin
compare_flag = (data1>data2) ? 1 : 0 ; end
else begin
compare_flag =1'bz; end
end
endmodule