admin 管理员组

文章数量: 888526

verilog 有符号数 无符号数比较大小

最近写的一个工程里面要用到有符号数无符号数的比较大小,贴出代码供大家取用。

如果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
 

本文标签: verilog 有符号数 无符号数比较大小