Verilog HDL 数字系统设计及实践 第3章 Verilog行为描述.ppt_第1页
Verilog HDL 数字系统设计及实践 第3章 Verilog行为描述.ppt_第2页
Verilog HDL 数字系统设计及实践 第3章 Verilog行为描述.ppt_第3页
Verilog HDL 数字系统设计及实践 第3章 Verilog行为描述.ppt_第4页
Verilog HDL 数字系统设计及实践 第3章 Verilog行为描述.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VerilogHDL数字系统设计及实践,第3章Verilog行为描述,学习指南,【知识目标】(1)了解initial和always语句的概念;(2)了解块语句及过程赋值语句的概念和形式;(3)理解条件语句,多路分支语句和循环语句的功能特点;(4)理解各种时序控制的机制及形式。【技能目标】(1)能够建立各种基本的行为模型。【重点难点】(1)非阻塞赋值与阻塞赋值的区别;(2)各种时序控制机制的特点及应用。,3.1Verilog的基本描述形式,对于模块内具体电路功能逻辑的描述,通常有下面3种方式:,(1)数据流描述方式:使用连续赋值语句对数据流行为进行描;(2)行为描述方式:使用结构化过程语句对时序行为进行描述。其中结构化过程语句包括两种语句:initial语句和always语句。(3)层次化描述方式:使用原语或模块的实例化对电路结构进行描述(其中原语包括内建门级原语,开关级原语,用户自定义原语,3.2结构化过程语句,结构化过程语句包含两种:initial语句和always语句,它们也是行为描述方式的基本语句。所有行为描述的其他语句(如过程赋值语句)必须包含在这两种语句当中。,3.2.1initial语句,一条initial语句从仿真的0时刻开始执行,但是只执行一次。如果initial语句中包含了多条行为语句,那么需要用begin和end将其组合成块语句如果只包含了单条行为语句则不必使用begin和end。,3.2.2always语句类似于initial语句,各个always语句同样是从仿真0时刻开始并行执行,但不同之处在于always语句在执行完所有内部的语句后会立刻从头开始重新执行,并循环往复,一直到仿真结束。因为always循环执行这一特性,通常我们需要给它加上时序控制,否则其会变成一个无限循环过程,从而造成仿真死锁,,3.3顺序块和并行块,3.4过程赋值语句,过程赋值语句指在initial语句或always语句中对变量进行赋值的语句,它们只能对寄存器、整数等变量进行赋值。这些变量数据在被赋值后,值保持不变,直到下一个过程赋值语句对它们赋新的值。,阻塞赋值语句:阻塞赋值语句用“=”作为赋值符。阻塞语句按顺序执行,在下一条语句执行之前,上一条赋值语句必须执行完毕。,非阻塞赋值语句:非阻塞语句用“16)flag=1;仿真会一直监视括号内的表达式的值,当其值为真时,后面的语句得以执行。,(3).时序控制语句在可综合代码中应用在进行电路综合的时候,延迟控制语句会被综合工具自动忽略,即当作没有延迟处理。而事件控制语句并不是所有的使用形式都可以被综合。事件控制语句通常与always语句联合使用,用来构建时序逻辑中常见的电路单元。,3.9时序控制,图3.2带异步复位的锁存器,/example_3_2:一个带异步复位的电平敏感锁存器modulelatch_rst(inputi_reset,inputi_clk,inputi_d,outputrego_q);always(i_resetori_clkori_d)beginif(i_reset)o_q=1b0;elseif(clk)o_q=d;endendmodule,其综合后的结构为一个带异步复位的锁存器:,思考与练习,1.设计一个时钟信号,周期为20个时间单位,占空比30%。2.请将一个位宽为8,地址范围为64的寄存器数组进行初始化,所有位均设置为1。3.设计一个带同步复位的D触发器。(清零端低电平有效,在时钟上升沿执行清零操作)4.请描述如下的一个电路模型:在每一个时钟上升沿检查输入信号pwd(位宽为8),如果其值为55H或者AAH,输出信号flag为1,并显示pwd的值,否则flag为0,并显示“error!”。5.看下面的一段代码initialbegina=1b0;b=1b0;c=1b1;#10b=1b1;#5c=1b0;#15d=a,b,c;end请问每条语句执行的仿真时刻是多少?仿真结束后,各变量值是多少?,思考与练习,6.上题的代码改写如下initialbegina=1b0;b=1b0;c=1b1;b=#101b1;c=#51b0;d=#15a,b,c;end请问每条语句执行的仿真时刻是多少?仿真结束后,各变量值是多少?7.请设计一个可选择的计算单元,输入a,b位宽为8,输出结果ret为9位,如下图,思考与练习,8.有如下一段代码initialbeginb=1b0;#0b=1b1;c=#1b;end请问c的最终值是多少?9.有如下一段代码initialwhile(enable)#20clk=clk;请将上面的代码用always和wait语句改写,实现同样的行为。10.有一个模块fadder_4,其功能为4位全加器,输入端口为A3:0(加数1),B3:0(加数2),输出端口为S3:0(和),C(进位)。请写一个testbench测试此全加器,要求测试所有加数的组合。11.请设计一个门控时钟信号,周期为20个时间单位,占空比30%,门控信号为enable,当门控信号为高,输出时钟信号,当门控信号为低,无时钟输出为低。要求时钟切换时无毛刺。,思考与练习,12.如下一段代码:always()if(!reset)q=0;elseif(!set)q=1;请问如果此代码描述的是一个异步复位和异步置位的触发器,括号内应该是();如果此代码描述的是一个同步复位和同步置位的触发器,括号内应该是()A.posedgeclockornegedgeresetB.posedgeclockC.posedgeclockornegedgere

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论