推荐答案
测试一下
题目
下列说法正确的是
A.在always语句中赋值的变量,可以是wire也可以是reg
B.reg变量一定被综合为寄存器
C.always块只能用来描述组合逻辑
D.在assign语句中赋值的变量要定义为wire
参考答案与知识点
参考答案
D。选项A错误:在Verilog中,always语句内赋值的变量必须定义为reg类型,wire类型只能用于assign连续赋值。选项B错误:reg变量是否被综合为寄存器取决于always块的写法,若always块采用电平敏感列表(如always @(*))描述组合逻辑,reg变量综合后为组合逻辑;只有采用边沿敏感列表(如always @(posedge clk))描述时序逻辑时,reg变量才会综合为寄存器。选项C错误:always块既可以描述组合逻辑(如always @(*)),也可以描述时序逻辑(如always @(posedge clk)),还可以描述锁存器。选项D正确:assign语句是连续赋值语句,其左侧必须是网络类型(wire或tri等),不能是reg类型;而reg类型变量只能在always或initial等过程块中被赋值。因此,只有D说法正确。
涉及知识点
- Verilog中reg与wire的赋值规则
- always块中变量必须为reg类型
- reg变量综合结果与always块写法关系
- always块可描述组合逻辑与时序逻辑
- assign语句左侧必须为wire类型