Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2315850
  • 博文数量: 846
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 9499
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-04 19:54
个人简介

日日行,不怕千万里;时时学,不怕千万卷

文章分类

全部博文(846)

文章存档

2010年(36)

2009年(418)

2008年(346)

2007年(46)

我的朋友

分类:

2007-11-25 20:13:42

在设计的代码中,对于任何整数直都要指明其位数,否则会用默认的系统总线
位数.以下是综合的时候的简单的例子,一个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) |
给主人留下些什么吧!~~

chinaunix网友2009-01-08 21:08:43

谢谢啦