在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3390|回复: 3

[求助] 关于求最大值的程序求助

[复制链接]
发表于 2012-4-14 10:31:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
module Verilog2(a,b,c);
input wire [(DATA_WIDTH-1):0] a,b;
output wire [(DATA_WIDTH-1):0] c;
parameter DATA_WIDTH = 12;

wire [(DATA_WIDTH-1):0] x1;
wire [(DATA_WIDTH-1):0] x2;
reg [(DATA_WIDTH-1):0]cmp2max;
assign x1 = a;
assign x2 = b;
always @*
  begin
    if (x1[(DATA_WIDTH-1)] || x2[(DATA_WIDTH-1)])//both are negative or positive
       begin
        if (x1[(DATA_WIDTH-1)])
           cmp2max = x2;
       else
           cmp2max = x1;
       end
    else
      begin
      if (x1[(DATA_WIDTH-2):0] > x2[(DATA_WIDTH-2):0])      
        cmp2max = x1;
      else
       cmp2max = x2;
    end

end
assign c =cmp2max;

endmodule
程序是实现两个二进制数的比较,当正数的时候和负数的时候,可是输出的结果总是x2,不知道怎么回事!
 楼主| 发表于 2012-4-14 10:32:29 | 显示全部楼层
最高位是符号位
发表于 2012-4-14 15:31:18 | 显示全部楼层
逻辑有问题。同正以及同负的情况检测有问题。
一正一负 这个条件 (x1[(DATA_WIDTH-1)] || x2[(DATA_WIDTH-1)])也会成立的!
发表于 2012-4-14 22:17:39 | 显示全部楼层
if (x1[(DATA_WIDTH-1)] || x2[(DATA_WIDTH-1)])改成
if (x1[(DATA_WIDTH-1)] ^ x2[(DATA_WIDTH-1)])
因为你想两者一正一负的时候输出正吧,那你应该在两个数异号时判断最高位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

X

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-6-7 23:48 , Processed in 0.030378 second(s), 10 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表