在设计的代码中,对于任何整数直都要指明其位数,否则会用默认的系统总线
位数.以下是综合的时候的简单的例子,一个counter计数器
错误的写法:
counter [4:0]<= counter[4:0] +1;
这时,综合器会产生warning,
Warning: Verilog HDL assignment warning at counter.v(28): truncated value with size 32 to match size of target (4)
原因是我们没有指定1的位数,这个时候会用其默认的32位,也就相当于是:
counterp[4:0] <= counter[4:0] + 32'b1 ;了这样就是用32位的数据去匹配5位的变量,所以会产生警告。
正确写法:
counter[4:0] <= counter [4:0] + 1'b1;
这样就匹配了,综合的时候就不会有警告了!
另外,在一些始能信号的时候也容易忽视这一点,如应该写成:
load_en = 1'b1;
而不能写成
load_en = 1;
总之,对于整数前面一定要加上与之对应的位数,千万不能省略,省略的话就
会用默认的32位了.
阅读(5703) | 评论(1) | 转发(0) |