fpga中wire和reg的区别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

fpga中wire和reg的区别
wire表⽰直通,即只要输⼊有变化,输出马上⽆条件地反映;reg表⽰⼀定要有触发,输出才会反映输⼊。

wire表⽰直通,即只要输⼊有变化,输出马上⽆条件地反映;reg表⽰⼀定要有触发,输出才会反映输⼊。

不指定就默认为1位wire类型。

专门指定出wire类型,可能是多位或为使程序易读。

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

wire使⽤在连续赋值语句中,⽽reg使⽤在过程赋值语句中。

不指定就默认为1位wire类型。

专门指定出wire类型,可能是多位或为使程序易读。

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

wire使⽤在连续赋值语句中,⽽reg使⽤在过程赋值语句中。

在连续赋值语句中,表达式右侧的计算结果可以⽴即更新表达式的左侧。

在理解上,相当于⼀个逻辑之后直接连了⼀条线,这个逻辑对应于表达式的右侧,⽽这条线就对应于wire。

在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到⼀个变量当中,⽽这个变量可以声明成reg类型的。

根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是⼀个触发器;如果这个条件是某⼀信号的⾼电平或低电平,那么这个硬件模型就是⼀个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是⼀个组合逻辑。

在连续赋值语句中,表达式右侧的计算结果可以⽴即更新表达式的左侧。

在理解上,相当于⼀个逻辑之后直接连了⼀条线,这个逻辑对应于表达式的右侧,⽽这条线就对应于wire。

在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到⼀个变量当中,⽽这个变量可以声明成reg类型的。

根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是⼀个触发器;如果这个条件是某⼀信号的⾼电平或低电平,那么这个硬件模型就是⼀个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是⼀个组合逻辑。

输⼊端⼝可以由wire/reg驱动,但输⼊端⼝只能是wire;输出端⼝可以使wire/reg类型,输出端⼝只能驱动wire;若输出端⼝在过程块中赋值则为reg型,若在过程块外赋值则为net型。

⽤关键词inout声明⼀个双向端⼝, inout端⼝不能声明为reg类型,只能是wire类型;输⼊和双向端⼝不能声明为寄存器类型。

输⼊端⼝可以由wire/reg驱动,但输⼊端⼝只能是wire;输出端⼝可以使wire/reg类型,输出端⼝只能驱动wire;若输出端⼝在过程块中赋值则为reg型,若在过程块外赋值则为net型。

⽤关键词inout声明⼀个双向端⼝, inout端⼝不能声明为reg类型,只能是wire类型;输⼊和双向端⼝不能声明为寄存器类型。

简单来说硬件描述语⾔有两种⽤途:1、仿真,2、综合。

简单来说硬件描述语⾔有两种⽤途:1、仿真,2、综合。

对于wire和reg,也要从这两个⾓度来考虑。

对于wire和reg,也要从这两个⾓度来考虑。

1. 从仿真的⾓度来说,HDL语⾔⾯对的是编译器(如Modelsim等),相当于软件思路。

1. 从仿真的⾓度来说,HDL语⾔⾯对的是编译器(如Modelsim等),相当于软件思路。

这时:这时:
wire对应于连续赋值,如assignwire对应于连续赋值,如assign
reg对应于过程赋值,如always,initialreg对应于过程赋值,如always,initial
2. 从综合的⾓度来说,HDL语⾔⾯对的是综合器(如DC等),要从电路的⾓度来考虑。

2. 从综合的⾓度来说,HDL语⾔⾯对的是综合器(如DC等),要从电路的⾓度来考虑。

这时:这时:
1、wire型的变量综合出来⼀般是⼀根导线;1、wire型的变量综合出来⼀般是⼀根导线;
2、reg变量在always块中有两种情况:2、reg变量在always块中有两种情况:
(1)、always后的敏感表中是(a or b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑(1)、always后的敏感表中是(a or
b or c)形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来⼀般是时序逻辑,会包含触发器(Flip-Flop)(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来⼀般是时序逻辑,会包含触发器(Flip-Flop)
在设计中,输⼊信号⼀般来说你是不知道上⼀级是寄存器输出还是组合逻辑输出,那么对于本级来说就是⼀根导线,也就是wire型。

⽽输出信号则由你⾃⼰来决定是寄存器输出还是组合逻辑输出,wire型、reg型都可以。

但⼀般的,整个设计的外部输出(即最顶层模块的输出),要求是寄存器输出,较稳定、扇出能⼒也较好。

相关文档
最新文档