集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2866|回复: 7

fpga新手的verilog困惑

[复制链接]
CHANG 发表于 2010-6-28 00:54:23 | 显示全部楼层 |阅读模式
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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 10:48 , Processed in 0.130720 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表