verilog行为建模.ppt

verilog行为建模.ppt

ID:49285505

大小:1.06 MB

页数:61页

时间:2020-02-03

verilog行为建模.ppt_第1页
verilog行为建模.ppt_第2页
verilog行为建模.ppt_第3页
verilog行为建模.ppt_第4页
verilog行为建模.ppt_第5页
资源描述:

《verilog行为建模.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第五讲 行为建模结构化的过程语句过程赋值语句时序控制。条件语句分支语句循环语句顺序块和并行块行为级描述是对系统的高抽象级描述。在这个抽象级,注重的是整个系统的功能而不是实现。Verilog有高级编程语言结构用于行为描述,包括:wait,while,ifthen,case和forever,for等Verilog的行为建模是用一系列以高级编程语言编写的并行的、动态的过程块来描述系统的工作。随着设计复杂程度的不断提高,在设计早期对所采用的算法和各种整体结构进行全面的评价变得十分重要,这时需要进行行为描述。行为描述:从电路的外部行为角度

2、进行描述,即描述电路的输入与输出之间的关系。5.1结构化过程语句Verilog中有两种结构化过程语句:initial和always语句,是行为建模的两种基本语句,所有的行为语句只能出现在这两种结构化过程语句里。每个initial语句和always语句代表一个独立的执行过程(或过程块)。这两种语句不能嵌套使用。verilog本质上是并发的,这些块并发执行,而不是顺序执行。1.initial语句只能执行一次一个模块中若有多个initial块,则它们同时执行。块内若有多条语句,需要用begin和end将它们组合,一条语句则不需要。mo

3、dulestimulus;regx,y,a,b,m;initialm=1’b0;//一条语句,无需begin-endinitialbegin//多条语句,需begin-end#5a=1’b1;#25b=1’b0;endinitialbegin#10x=1’b0;#25y=1’b1;endendmodule时间    所执行语句0m=1’b0;a=1’b1;10x=1’b0;30b=1’b0;35y=1’b1;Initial块语句在仿真期间只执行一次,一般用于初始化、信号监视、生成仿真波形等。也可用变量声明的方式来进行初始化。//

4、定义时钟变量regclock;//设置值为0initialclock=0;//不用上术方法,只直接在变//量声明时初始化regclock=0;在变量声明的同时进行初始化同时进行端口/数据声明和初始化moduleadder(sum,co,a,b,ci);outputreg[7:0]sum=0;//初始化8位sumoutputregco=0;//初始化1位coinput[7:0]a,b;inputci;…..endmodule2.always语句循环执行按顺序执行其中的语句,最后一条语句执行完后,再次执行第一条语句moduleclo

5、ck_gen(clock);outputclock;regclock;initialclock=1’b0;always#10clock=~clock;endmodulealways语句从仿真0时刻起,每隔10个时间单位执行一次clock信号取反操作。5.2过程赋值语句在过程块中的赋值称为过程赋值。在过程赋值语句中表达式左边的信号必须是寄存器类型(如reg类型)在过程赋值语句等式右边可以是任何有效的表达式,数据类型也没有限制。如果一个信号没有声明则缺省为wire类型。使用过程赋值语句给wire赋值会产生错误。Verilog包括两种

6、过程赋值语句阻塞赋值非阻塞赋值1.阻塞赋值语句使用“=”作为赋值符阻塞赋值语句按顺序执行,一条语句完全执行完后,才执行下一条语句,即有“阻塞”作用。regx,y,z;reg[15:0]reg_a,reg_b;intergetcounter;//所有的行为语句放在initial或always块内initialbeginx=0;y=0;z=1;counter=0;reg_a=16’b0;reg_b=reg_a;#15reg_a[2]=1’b1;#10reg_b[15:13]={x,y,z}count=count+1;endTime0

7、Time15Time252.非阻塞赋值语句使用“<=”作为赋值符非阻塞赋值语句并行执行,即一条语句不会“阻塞”其它语句执行,充许赋值调度。regx,y,z;reg[15:0]reg_a,reg_b;intergetcounter;//所有的行为语句放在initial或always块内initialbeginx=0;y=0;z=1;counter=0;reg_a=16’b0;reg_b=reg_a;#15reg_a[2]<=1’b1;#10reg_b[15:13]<={x,y,z}count<=count+1;endreg_a[2

8、]=1在15时刻执行reg_b[15:13]={x,y,z}在时刻10执行。count=count+1在时刻0执行此处仅为说明阻塞和非阻塞之区别,不要在同一个块内同时使用两种语句。非阻塞赋值常用来描述多个数据并发传输的行为。always@(posedgecloc

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

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

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