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
 

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值