Verilog中assign语句讲解

Verilog中assign语句讲解

ID:40763129

大小:20.15 KB

页数:3页

时间:2019-08-07

Verilog中assign语句讲解_第1页
Verilog中assign语句讲解_第2页
Verilog中assign语句讲解_第3页
资源描述:

《Verilog中assign语句讲解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Verilog中assign用法:assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。assign的功能属于组合逻辑的范畴,应用范围可概括为以下三点:   (1)持续赋值;   (2)连线;   (3)对wire型变量赋值,wire是线网,相当于实际的连接线,如果要用assign直接连接,就用wire型变量。wire型变量的值随时变化。其实以上三点是相通的。 要更好的把握assign的使用,Verilog中有几个要点需要深入理解和掌握:  (

2、1)在Verilogmodule中的所有过程块(如initial块和always块)、连续赋值语句(如assign语句)和实例引用都是并行的。在同一module中这三者出现的先后顺序没有关系。  (2)只有连续赋值语句assign和实例引用语句可以独立于过程块而存在于module的功能定义部分。  (3)连续赋值assign语句独立于过程块,所以不能在always过程块中使用assign语句。Wire类型概念:Wire主要起信号间连接作用,用以构成信号的传递或者形成组合逻辑。因为没有时序限定,wire的赋值语句通常和其他block语句并行执行。Wi

3、re不保存状态,它的值可以随时改变,不受时钟信号限制。除了可以在module内声明,所有module的input和output默认都是wire型的。Reg类型概念:Reg是寄存器的抽象表达,作用类似通常编程语言中的变量,可以储存数值,作为参与表达式的运算,通常负责时序逻辑,以串行方式执行。Reg可以保存输出状态。状态改变通常在下一个时钟信号边沿翻转时进行。赋值方式Wire有两种赋值方式1.在定义变量时赋初值,方式是用=。如果之后没有再做赋值,初值会一直保留,(是否可以给逻辑?)wirewire_a=1’b0;2.用assign语句赋值,等式右边可以

4、是wire,reg,一个常量或者是逻辑运算Wirewire_a;Wirewire_b;Wirewire_c;Regreg_a;assignwire_b=wire_a;assignwire_c=reg_a;assignwire_d=wire_b&wire_c;如果不赋值,wire的默认状态是高阻态,即z。对reg的使用通常需要有触发条件,在always的block下进行。触发条件可以是时钟信号上升沿。赋值语句可以是=或者<=。如果是从reg到reg,则形成组合逻辑,如果是从reg到reg,则构成一个寄存器,形成时序逻辑。Wirewire_a;Wire

5、wire_b;Regreg_a;Regreg_b;Always@(posedgeclk)BeginReg_b=reg_a;Reg_c=wire_a

6、wire_b;endReg在声明时候不赋初值。未赋值的reg变量处于不定态,即x。Verilog中wire和reg区别:1.在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always@中赋值;2.但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或

7、者时序逻辑,能存储数据,有驱动能力,在always@模块表达式左侧被赋值。3.两个共同具有性质:都能用于assign与always@模块表达式的右侧。使用方式在引用一个module时,输入端口可以是wire型,也可以reg型。这里可以把对input的赋值看作一个assign语句,使用的变量相当于等号右边的变量,所以两者都可以。而对于输出端口,必须使用reg型,而不能是wire型。同样用assign的角度考虑,module的输出在等号右边,而使用的变量成了等号左边,assign语句等号左边只能是wire型。位宽这是个使用注意事项。所有的wire和re

8、g在声明时如果不做特殊声明,只有1位。这个对于熟悉其他编程语言的人是一个容易犯错的地方。执行wirewire_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高电平是能缓冲器case分支语

9、句casex分支语句casez分支语句cellcmos门级原语config配置deassign停止过程化语句赋值defau

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。