找回密码
 注册
搜索
查看: 857|回复: 4

[讨论] 判断二进制数大小如何让它可综合呢?

[复制链接]
发表于 2006-7-13 08:29:00 | 显示全部楼层 |阅读模式
如题,以下是我的一段代码,请大家给点建议阿。


reg [5:0] a;
reg [6:0] count;
input rst;

always @(posedge clk)
        begin
        if(rst)count<=7'b0;
        else
        count<=count+'b1;
        end
always @(count)
       begin
       if(count<=a)count_b<='b0;         //为何这样做比较行不通呢,哪位指点一下阿。先谢谢了
       else
       count_b<=count_b+'b1;
       end
发表于 2006-7-13 19:14:00 | 显示全部楼层
always @(count or a)
点评回复

使用道具 举报

发表于 2006-11-8 00:04:00 | 显示全部楼层
reg [5:0] a;
reg [6:0] count;


-----
两个参数的位宽不一样,没有用过Verilog,在VHDL里这样肯定不行!!!
点评回复

使用道具 举报

发表于 2006-11-27 17:39:00 | 显示全部楼层
if(count<=a)没问题的,是因为没有
reg[6:0] count_b;
原因:count_b要计数,必须要寄存
我验证了5,6位,位宽不一样原来也可以比较,它可以通过compile。//呵呵我也是刚知道
点评回复

使用道具 举报

发表于 2006-12-25 12:57:00 | 显示全部楼层
module com(rst,clk,a,count_b);
input rst;
input clk;
input [5:0] a;
output [6:0]count_b;
reg [6:0] count;
reg [6:0]count_b;
always @(posedge clk)
        begin
        if(rst)count<=7'b0;
        else
        count<=count+'b1;
        if(count<=a)count_b<='b0;   
        else
        count_b<=count_b+'b1;
        end
endmodule
较好的写法,如果将是reg a(即a为中间变量),则要求对a赋值才行;如果分成两个always模块,则优化成一个模块;a的位宽没问题,count_b要定义。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-29 18:22 , Processed in 0.045950 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表