Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2509529
  • 博文数量: 319
  • 博客积分: 9650
  • 博客等级: 中将
  • 技术积分: 3881
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 21:05
文章分类

全部博文(319)

文章存档

2017年(5)

2016年(10)

2015年(3)

2014年(3)

2013年(10)

2012年(26)

2011年(67)

2010年(186)

2009年(9)

分类:

2010-06-08 17:04:39

wire型,意为连线型,一般用于组合逻辑(CL)之中。verilog HDL模块中的输入输出信号类型默认时自动定义为wire型。

reg型,意为寄存器型,既可以用组合逻辑实现,亦可用于时序逻辑中,即用触发器(filp-flop)实现。

wire型和reg型在verilog HDL语法中的区别在于,wire型数据通常用assign语句赋值,reg型数据必须被放在过程语句中(如initial、always)中,通过过程赋值语句赋值。

同样一个组合电路,不光可以用wire型数据来写,实际上也可以用reg型数据写:

未标题-1

(1) wire写法

wire cl_a;

assign cl_a = a ?A : B;

(2) reg写法

reg cl_a;

 or A or B)

begin

if(a)

cl_a = A;

else

cl_a = B;

end

(3)reg写法2

reg cl_a;

 or A or B)

begin

cl_a = a? A : B;

end

需要注意的是,reg型在用于组合逻辑时,always(parameter)中的参数为组合逻辑的参数;reg型参数在always中赋值采用阻塞赋值。

下面举出reg型数据使用触发器实现的例子:

reg f_a;

 clk)

begin

f_a <= a ? A : B;

end

对应该电路实现为:

未标题-2

reg型在用触发器实现时,always(parameter) 中的参数通常为时钟边沿,这是由触发器的性质决定的,reg型参数在always中复制采用非阻塞赋值。

From:http://blog.csdn.net/leonsc/archive/2009/09/11/4547696.aspx

阅读(9370) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~