新Verilog HDL数字系统设计——原理、实例及仿真 教学课件 康磊 第1 7章 第4章.pptVIP

新Verilog HDL数字系统设计——原理、实例及仿真 教学课件 康磊 第1 7章 第4章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
    4.1 行为级建模程序结构   行为级建模是指对信号采用行为级的描述(不是结构级的描述)方法来建模。行为级的描述常用于复杂数字逻辑系统的设计中,也就是通过行为级建模把一个复杂的系统分解成可操作的若干个模块,每个模块之间的逻辑关系通过行为模块的仿真加以验证。这样就把一个大的系统合理地分解为若干个较小的子系统,然后将每个子系统用可综合风格的Verilog HDL模块(门级结构或RTL级、算法级、系统级的模块)加以描述。同时,行为级建模也可以用来生成仿真测试信号,对已设计模块进行检测。  通过下面的例子,读者可对行为级建模方式有个初步的概念。   例如:一位全加器的行为级建模。   通过该例,应建立以下概念:   (1) 只有寄存器类型的信号才可以在always和initial 语句中进行赋值,类型定义通过reg语句实现;   (2) 采用行为级描述方式,即直接采用“+”来描述加法,{Count,Sum}表示对位数的扩展,因为两个1?bit相加,产生的和有两位,低位放在Sum变量中,进位放在Count 中;   (3) ?always语句一直重复执行,由敏感列表(always语句括号内的变量)中的变量触发;   (4) ?always语句从0时刻开始;   (5) 在begin和end之间的语句是顺序执行的,属于串行语句。      4.2 过程结构语句   每个过程块是由过程语句(initial或always)和语句块组成的,过程块中有下列部件:过程赋值语句——赋值语句和过程连续赋值语句;时序控制——控制块的执行及块中的语句时序;高级结构(循环,条件语句等)——描述块的功能。   Verilog HDL中的多数过程模块都从属于以下两种过程语句:   initial说明语句;   always说明语句;   一个程序模块可以有多个initial和always过程块。每个initial和always说明语句在仿真的一开始即执行。initial语句常用于仿真中的初始化,initial语句只执行一次,而always语句则是不断地重复执行,直到仿真过程结束。always过程语句是可综合的,在可综合的电路设计中广泛采用。 4.2.1 initial语句   initial语句的语法格式如下:   initial   语句块 其中,语句块的格式为   块定义语句1   时间控制1 行为语句1;   …   时间控制n 行为语句n;   块定义语句2   initial语句不带触发条件,initial过程中的块语句沿时间轴只执行一次,参见图4.1。initial语句通常用于仿真模块中对激励信号的描述,或用于给寄存器变量赋初值,它是面向模拟仿真的过程语句,通常不能被逻辑综合工具所支持。 图4.1 initial语句执行顺序   【例4.1】 用initial语句在仿真开始时对各变量进行初始化。   【例4.2】 用initial语句对存储器进行初始化。 4.2.2 always语句   always过程块是由always过程语句和语句块组成的,其语法格式如下:   always @ 敏感信号表达式     语句块 其中,语句块的格式为   块定义语句1     时间控制1 行为语句1;     …     时间控制n 行为语句n;   块定义语句2   以上的格式中:   (1) 关键词always表明了该过程块是一个“always过程块”。   (2) ?@ 敏感信号表达式是可选项,有敏感事件列表的语句块被称为“由事件控制的语句块”,它的执行要受敏感事件的控制。   (3) “时间控制”用来对过程块内各条语句的执行时间进行控制,它可以是任何一种时间控制方式。   (4) 语句块中的行为语句可以是如下语句中的一种:过程赋值语句(阻塞型或非阻塞型)、过程连续赋值语句、if条件分支语句、case条件分支语句、循环控制语句(forever、repeat、while、for循环控制语句)、wait等待语句、disable中断语句、事件触发语句、任务调用语句(用户定义的任务或系统任务)。 图4.2 always语句执行顺序   【例4.3】 always语句示例(1)。     always # half_period areg = ~areg;   这个例子生成了一个周期为period(=2*half_period)的无限延续的信号波形,常用这种方法来描述时钟信号,作为激励信号来测试所设计的电路。  【例4.4】 always语句示例(2)。       4.3 语 句 块   语句块是由块标志符begin-end或fork-join界定的一组语句,当块语句只包含一条语句时,块标志符可以省略。下面分

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档