Verilog wire和reg分析1

原文地址:http://blog.sina.com.cn/s/blog_5f9b3de40100f6gi.html

作者:飘雨

版权申明:博客版权属于原作者,此处转载仅用于学习


wire和reg的概念

        wire:表示直通,即输入有变化,输出马上无条件地反映(如与、非门的简单连接)。

        reg:表示一定要有触发,输出才会反映输入的状态。

        reg相当于存储单元,wire相当于物理连线。reg表示一定要有触发,没有输入的时候可以保持原来的值,但不直接实际的硬件电路对应。

 两者的区别是:

       1,  寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动。wire使用在连续赋值语句中,而reg使用在过程赋值语句中。

        2, 在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。

        3, 在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:

        a,如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;

        b,如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;

        c,如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。

       4, 对组合逻辑输出变量,可以直接用assign。即如果不指定为reg类型,那么就默认为1位wire类型,故无需指定1位wire类型的变量。当然专门指定出wire类型,可能是多位或为使程序易读。

      5,wire只能被assign连续赋值,reg只能在initial和always中赋值。

端口与wire和reg的关系:

      1, 输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以使wire/reg类型,输出端口只能驱动wire;

      2, 若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型。

     3, 用关键词inout声明一个双向端口,inout端口不能声明为reg类型,只能是wire类型。

     4, 端口 默认信号是wire类型,reg类型要申明。但如果是模块内部信号,必须申明成wire或者reg.

     5,对于always语句而言,被赋值变量要申明成reg。连续赋值assign的时候要用wire


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值