每日几问

奔跑的蜗牛   2011-10-31 17:04 楼主

2、由连续赋值语句(assign)赋值的变量能否是reg类型的?在always模块中被赋值的变量能否是wire类型的?如果不能是wire类型,那么必须是什么类型的?它们表示的一定是实际的寄存器吗?逻辑比较运算符小于等于“<=”和非阻塞赋值大于等于“<=”的表示完全一样的,为何Verilog在语句解释和编译时不会搞错?

回复评论 (3)

还是先说一下我自己的理解,如果有什么出入的地方欢迎大家一起讨论!

assign赋值的变量必须是wire类型,好像如果该成reg型编译时会提示错误。

Verilog语法规定在“always”模块中被赋值的每一个信号都必须定义成reg型,至于它是否一定是实际的寄存器?这点是我不知道的,希望高人指点。

最后一个问题?我也在等待答案,呵呵

点赞  2011-10-31 17:15

我说的个人理解:

  always模块的REG型不一定就对应实际的寄存器,关键看语法表达。为啥ALWAYS模块一定需要信号是REG型,这是因为编译器决定。编译器看到关键字always就会检查always模块的寄存器变量是否是REG型。至于你说的条件比较<= 与赋值<=怎样区分开, 其实编译可以从关键字区别。条件比较前面有关键词,比如IF 等等。

一个为理想不懈前进的人,一个永不言败人! http://shop57496282.taobao.com/ 欢迎光临网上店铺!
点赞  2011-10-31 19:47

回复 板凳 eeleader 的帖子

恩,讲得很有道理,希望大家都能来一起讨论。
点赞  2011-11-1 10:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复