andy_mqy 发表于 2011-3-11 11:49:03

新手学习Verilog 遇到的问题请教各位!

学习Verilog时,看到书中有这样一段程序:

module random_pulse( dout );
   output dout;//定义10位输出变量
    reg dout;          //声明该变量为寄存器变量,没有说明位数,默认不是1位寄存器吗?
   ..
   ..
   ..
endmodule

dout变量先定义为10位,之后声明是1位寄存器变量,合乎语法吗?还有,有时说明变量为input 或output,然后还要说明是reg型,有时候不用说明,在什么情况需要说明,什么情况不需要说明?请教各位指点,多谢!

andy_mqy 发表于 2011-3-11 11:51:59

自己先顶一下。

jason0726 发表于 2011-3-11 18:36:14

基本语法,看书就知道了。

xiangxiaowei 发表于 2011-3-12 12:05:31

output dout;
reg dout;
这种写法是正确的。这两个语句和下面的两种语句功能相同
1.
output dout;
reg dout;
2.
output dout;
reg dout;
你可以分别用不同的语句写这个代码,然后看看rtl schematic视图,可以看到dout都是10位输出。我建议你还是按照第一种写法来写,这样不会引起别人的误解。
至于为什么要用reg定义变量,是因为在always语句块里面,赋值的类型必须是reg类型的变量。还要注意的是,不能在多个always语句块里面对同一个reg变量多次赋值。当然reg还有其它的用处,书上有完整的解释。
因为我是上个学期开始学verilog,讲的不对的地方,请大家多多指教。
不过呢,这种问题我觉得你还是应该多看看书再来问,毕竟这是基本的语法问题。

chuchuang 发表于 2011-3-27 23:34:07

输出一般定义 wire reg
页: [1]
查看完整版本: 新手学习Verilog 遇到的问题请教各位!