Verilog中assign语句讲解

更新时间:2023-05-09 07:54:09 阅读: 评论:0

Verilog中assign用法:
assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。
assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:
     (1)持续赋值;
     (2)连线;
     (3)对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变量的值随时变化。其实以上三点是相通的。
   要更好的把握assign的使用,Verilog中有几个要点需要深入理解和掌握:
    (1)在Verilog module中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。在同一module中这三者出现的先后顺序没有关系。
   (2)只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于module的功能定义部分。
   (3)连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。
Wire类型概念:
Wire主要起信号间连接作用,用以构成信号的传递或者形成组合逻辑。因为没有时序限定,wire的赋值语句通常和其他block语句并行执行。
Wire不保存状态,它的值可以随时改变,不受时钟信号限制。
除了可以在module内声明,所有module的input 和output默认都是wire型的。
Reg类型概念:
Reg是寄存器的抽象表达,作用类似通常编程语言中的变量,可以储存数值,作为参与表达式的运算,通常负责时序逻辑,以串行方式执行。
Reg可以保存输出状态。状态改变通常在下一个时钟信号边沿翻转时进行。
赋值方式
Wire有两种赋值方式
1.在定义变量时赋初值,方式是用=。如果之后没有再做赋值,初值会一直保留,(是否可以给逻辑?)
wire wire_a = 1’b0;
2.用assign语句赋值,等式右边可以是wire,reg,一个常量或者是逻辑运算
Wire wire_a;
Wire wire_b;
Wire wire_c;
Reg reg_a;
assign wire_b = wire_a;
assign wire_c =reg_a;
assign wire_d =wire_b & wire_c;
如果不赋值,wire的默认状态是高阻态,即z。
reg的使用通常需要有触发条件,在always的block下进行。触发条件可以是时钟信号上升沿。赋值语句可以是=或者 <=。如果是从reg到reg,则形成组合逻辑,如果是从reg到reg,则构成一个寄存器,形成时序逻辑。
Wire wire_a;
Wire wire_b;
Reg reg_a;
Reg reg_b;
Always @( podge clk)
Begin
              Reg_b =reg_a;
              Reg_c  = wire_a | wire_b;
end
Reg在声明时候不赋初值。未赋值的reg变量处于不定态,即x。
Verilog中wire和reg区别:
1.在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值;
2.但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动能力,在always @模块表达式左侧被赋值。
3.两个共同具有性质:都能用于assign与always @模块表达式的右侧。
使用方式
在引用一个module时,输入端口可以是wire型,也可以reg型。这里可以把对input的赋值看作一个assign语句,使用的变量相当于等号右边的变量,所以两者都可以。
而对于输出端口,必须使用reg型,而不能是wire型。同样用assign的角度考虑,module的输出在等号右边,而使用的变量成了等号左边,assign语句等号左边只能是wire型。
位宽
这是个使用注意事项。所有的wire和reg在声明时如果不做特殊声明,只有1位。这个对于熟悉其他编程语言的人是一个容易犯错的地方。
执行
wire wire_a = 4’he;
语句最后得到的wire_a是0x1,而不是0xe。因为wire_a只取了0xe的最低位的值而省略掉了其他值。所以正确的语句应该是
wire[3:0] wire_a = 4’he;
这样wire_a输出的结果才是一个0xe。
保留字    说明
always    语句重复执行
and    逻辑与实例
assign    过程化持续赋值
automatic    递归调用修饰词
begin    顺序执行语句组开始
buf    缓冲器
bufif0    低电平是能缓冲器
bufif1    高电平是能缓冲器
ca    分支语句
cax    分支语句
caz    分支语句
cell
cmos    门级原语
config    配置
deassign    停止过程化语句赋值
default    分支语句其他选项
defparam    重写参数值
design    配置
disable    中止运行
edge    边沿
el    条件语句
end    begin语句结束
endca    分支语句结束
endconfig    配置结束
endfunction    函数结束
endgenerate    生成结束
endmodule    模块结束
endprimitive    原语结束
endspecify
endtable    真值表结束
endtask    任务结束
event    事件
for    for循环
force    过程化持续赋值
forever    永久执行
fork    同步执行语句
function    函数
generate    生成
genvar    generate循环
highz0    高阻0
highz1    高阻1
if    if语句
ifnone    specify语句
initial    初始化
inout    双向
input    输入
instance    实例
integer    整型
join    fork-join语句
large    强度
liblist    库列表
localparam    本地参数
macromodule    模块
medium    强度
module    模块
nand    逻辑与非
negedge    下降沿
nmos    门级MOS
nor    逻辑或非
noshowcancelled    specify语句
not    逻辑非
notif0    低电平使能非门
notif1    高电平使能非门
or    逻辑或
output    输出
parameter    参数
pmos    MOS原语
podge    上升沿
primitive    原语
pull0    强度
pull1    强度
pulldown    强度
pullup    强度
pulstyle_ondetect    specify语句
pulstyle_onevent    specify语句
rcmos    MOS原语
real    实数
realtime    实数
reg    变量
relea    force relea
repeat    重复
rnmos    门级MOS
rpmos    门级MOS
rtran    门级双向通道
rtranif0    门级双向通道
rtranif1    门级双向通道
scalared    类型修饰符
showcancelled    specify语句
signed    类型修饰符
small    强度
specify
specparam    指定参数
strong0    强度
strong1    强度
supply0    强度
supply1    强度
table    真值表
task    任务
time    时间类型
tran    门级双向通道
tranif0    门级双向通道带控制
tranif1    门级双向通道带控制
tri    网络数据类型
tri0    网络数据类型
tri1    网络数据类型
triand    网络数据类型
trior    网络数据类型
trireg    网络数据类型
u    配置语句
vectored    网络数据类型修饰符
wait    等待
wand    网络数据类型
weak0    强度
weak1    强度
while    while循环
wire    网络数据类型
wor    网络数据类型
xnor    逻辑或非
xor    逻辑或

本文发布于:2023-05-09 07:54:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/101751.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语句   赋值   逻辑   变量   组合   信号   使用   结束
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图