网站大量收购独家精品文档,联系QQ:2885784924

Verilog HDL项目式教程 课件 项目4 行为建 模.pptx

Verilog HDL项目式教程 课件 项目4 行为建 模.pptx

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

任务4.1结构化过程语句always

任务4.2过程赋值语句

任务4.3选择语句

任务4.4循环语句

任务4.5块语句(begin/end)

任务4.6任务和函数语句

任务4.7流水线设计;任务4.1结构化过程语句always

;always语句是行为建模的基本语句,每个always语句代表一个独立的执行过程,也称为进程。与C语言不同,Verilog在本质上是并发的而非顺序的,Verilog的各个always进程也是并发执行的,而不是顺序执行的。

always语句对应着实际的硬件电路。always@(*)通常对应组合逻辑电路。always@(posedgeclk)对应时序逻辑电路,相当于一个D触发器和一个组合逻辑电路,其中组合逻辑电路的输出直接连接D触发器的数据输入端。

always语句包括的所有行为语句构成了一个always语句块。每个always语句块在满足一定的条件后即执行其中的第一条语句,然后按顺序执行随后的语句,直到最后一条执行完成后,再次等待always语句块的执行条件,等条件满足后又从第一条语句开始执行,循环往复。因此,always语句通常用于对数字电路中一组反复执行的活动进行建模。;【例4-1】使用always语句描述D触发器。

例4-1的综合结果如图4-1所示。

从综合结果来看,例4-1实现了一个上升沿触发的D触发器。

上述电路设计涉及的知识点有always语句、非阻塞赋值语句。

下面对这些知识点进行说明。

(1)?always语句。

always语句是行为建模的典型特征。例4-1的程序在时钟上升沿将数据d赋予触发器输出q,功能同D触发器一样。

;always语句由于其不断重复执行的特性,只有和一定的时序控制结合在一起才有用。always@(posedgeclk)语句表示只有在clk上升沿才开始执行always语句块,否则不执行。这种时序控制是always语句最常用的。

always的时序控制可以是沿触发的,也可以是电平触发的,可以是单个信号或多个信号,中间需要用关键字or或“,”连接。

例如:;沿触发的always块常用来描述时序逻辑,如果符合可综合风格要求,则可用综合工具将其自动转换为表示时序逻辑的寄存器组和门级逻辑;而电平触发的always块常用来描述组合逻辑和带锁存器的组合逻辑,如果符合可综合风格要求,则可转换为表示组合逻辑的门??逻辑或带锁存器的组合逻辑。一个模块中可以有多个always块,它们都是并行运行的。

(2)always语句对应的电路。

always@(*)通常对应组合逻辑电路。always@(posedgeclk)对应的是时序逻辑电路,相当于一个D触发器和一个组合逻辑电路,其中组合逻辑电路的输出直接连接D触发器的数据输入端。

本书建议每个always语句块通常都实现且仅实现一个输出变量。这是因为一个D触发器通常仅有一个输出变量Q,这种实现方法与实际电路的对应关系清晰明了。

(3)非阻塞赋值语句。

q=d;中使用的是非阻塞赋值语句。非阻塞赋值语句是过程赋值语句的一种类型。读者应掌握阻塞赋值语句和非阻塞赋值语句的特征。;任务4.2?过程赋值语句;过程赋值语句的更新对象是寄存器、整数等。这些类型的变量在被赋值后,其值将保持不变,直到被其他过程赋值语句赋予新值。

过程赋值语句与数据流建模中的连续赋值语句是不同的。首先,连续赋值语句总是处于活动状态,任意一个操作数的变化都会导致表达式的重新计算以及重新赋值,但过程赋值语句只有在执行到的时候才会起作用。其次,更新对象不同,连续赋值语句的更新对象是线网,而过程赋值语句的更新对象是寄存器、整数等。最后,形式不同,过程赋值语句不使用assign。

过程赋值语句与连续赋值语句又有相同之处,即两者可以使用的运算符是完全相同的。连续赋值语句中使用的运算符在过程赋值语句中同样适用,而且含义完全相同。

Verilog包括两种类型的过程赋值语句:阻塞赋值语句和非阻塞赋值语句。;下面通过5个示例来说明两种赋值方式的不同。这5个示例的设计目标都是实现3位移位寄存器,它们分别采用了阻塞赋值方式和非阻塞赋值方式。

【例4-2】采用阻塞赋值方式描述移位寄存器1。综合结果如图4-2所示。;【例4-3】采用阻塞赋值方式描述移位寄存器2。综合结果如图4-3所示。;【例4-4】阻塞赋值方式描述的移位寄存器3。综合结果如图4-4所示。;【例4-5】采用非阻塞赋值方式描述移位寄存器1。【例4-6】采用非阻塞赋值方式描述移

文档评论(0)

lai + 关注
实名认证
内容提供者

精品资料

版权声明书
用户编号:7040145050000060

1亿VIP精品文档

相关文档