2、由连续赋值语句(assign)赋值的变量能否是reg类型的?在always模块中被赋值的变量能否是wire类型的?如果不能是wire类型,那么必须是什么类型的?它们表示的一定是实际的寄存器吗?逻辑比较运算符小于等于“<=”和非阻塞赋值大于等于“<=”的表示完全一样的,为何Verilog在语句解释和编译时不会搞错?
还是先说一下我自己的理解,如果有什么出入的地方欢迎大家一起讨论!
assign赋值的变量必须是wire类型,好像如果该成reg型编译时会提示错误。
Verilog语法规定在“always”模块中被赋值的每一个信号都必须定义成reg型,至于它是否一定是实际的寄存器?这点是我不知道的,希望高人指点。
最后一个问题?我也在等待答案,呵呵
我说的个人理解:
always模块的REG型不一定就对应实际的寄存器,关键看语法表达。为啥ALWAYS模块一定需要信号是REG型,这是因为编译器决定。编译器看到关键字always就会检查always模块的寄存器变量是否是REG型。至于你说的条件比较<= 与赋值<=怎样区分开, 其实编译可以从关键字区别。条件比较前面有关键词,比如IF 等等。