fpga新手的verilog困惑
module test(a,b,c,clk);output b,c;
input clk,a;
reg b,c;
always @(posedge clk)
begin
b=a;
c=b;
end
endmodule
我想问下这里,b既然定义的是output,怎么可以这样赋值给c呢,c=b,难道不是要定义b成inout吗?
vhdl中好像就不能出现output型信号在右边赋值给左边的情况。 定义成wire<br>
然后assign 我不是这个意思啊,看到好多这样verilog的例子,我是想大家解释下为什么可以这样用,不是说这个语句错了 always里面当然只能用reg..不可以用wire.<br>
这个语句的意思是,b除了直接输出到外部外,还要经过一个寄存器c,寄存器c的输出也是到外部。寄存器b的的输出有两条path. 不考虑b是输出的时候,它就是一个普通的信号嘛,自然可以赋值给c啦。<br>
输出也就是将b的值输出来。<br>
至于说inout端口,那是b的值纯粹是从外部输入进来的。而这个例子的b值是有输入a的值赋值的,自然不同。 谢谢楼上两位哈,我有点明白了,就是b其是就是输出端口,没有从b端口输入信号。inout好像就是信号可以从端口输出,也可以从此端口输入。但好像VHDL语句坚决不能将output端口放在右边赋值。不知道是不是这样?vhdl学的不是很仔细,能看懂就是了,呵呵。 长见识了,谢谢 终于学懂了,谢谢
页:
[1]