CHANG 发表于 2010-6-28 00:54:23

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型信号在右边赋值给左边的情况。

CHAN 发表于 2010-6-28 01:53:35

定义成wire<br>
然后assign

interige 发表于 2010-6-28 03:05:09

我不是这个意思啊,看到好多这样verilog的例子,我是想大家解释下为什么可以这样用,不是说这个语句错了

ANG 发表于 2010-6-28 04:32:08

always里面当然只能用reg..不可以用wire.<br>
这个语句的意思是,b除了直接输出到外部外,还要经过一个寄存器c,寄存器c的输出也是到外部。寄存器b的的输出有两条path.

AAT 发表于 2010-6-28 06:11:58

不考虑b是输出的时候,它就是一个普通的信号嘛,自然可以赋值给c啦。<br>
输出也就是将b的值输出来。<br>
至于说inout端口,那是b的值纯粹是从外部输入进来的。而这个例子的b值是有输入a的值赋值的,自然不同。

longtim 发表于 2010-6-28 06:34:25

谢谢楼上两位哈,我有点明白了,就是b其是就是输出端口,没有从b端口输入信号。inout好像就是信号可以从端口输出,也可以从此端口输入。但好像VHDL语句坚决不能将output端口放在右边赋值。不知道是不是这样?vhdl学的不是很仔细,能看懂就是了,呵呵。

HANG 发表于 2010-6-28 07:20:53

长见识了,谢谢

CHANG 发表于 2010-6-28 08:53:23

终于学懂了,谢谢
页: [1]
查看完整版本: fpga新手的verilog困惑