第6章.数据流建模jiao.pptVIP

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HDL语言硬件设计 第六章 数据流建模 概述 在电路规模较小的情况下,由于包含的门数比较少,因此使用门级建模进行设计是很合适的。随着芯片集成度的迅速提高,现在已经没有任何一家设计公司从门级结构的角度进行整个数字系统的设计。 目前普遍采用的设计方法是借助于计算机辅助设计工具,自动将电路的数据流设计直接转换为门级结构,这个过程也称为逻辑综合。 随着逻辑综合工具的功能不断地完善,数据流建模已经成为主流的设计方法。数据流设计可以使得设计者根据数据流来优化电路,而不必专注于电路结构的细节。为了在设计过程中获得最大的灵活性,设计者常常将门级、数据流级和行为级的各种方式结合起来使用。 在数字设计领域,RTL(Register Transfer Level,寄存器传输级)通常是指数据流建模和行为级建模的结合。 6.1 连续赋值语句 连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值,必须以关键词assign开始,其实例如下: 连续赋值语句特点: 1.连续赋值语句的左值必须是一个标量或向量线网,或者是标量或向量线网的拼接,而不能是向量或向量寄存器。 2.连续赋值语句总是处于激活状态。只要任意一个操作数发生变化,表达式就会被立即重新计算,并且将结果赋给等号左边的线网; 3.操作数可以是标量或向量的线网或寄存器,也可以是函数调用; 4.赋值延迟用于控制对线网赋予新值的时间,根据仿真时间单位进行说明。赋值延迟类似于门延迟,对于描述实际电路中的时序是非常有用的。 隐式连续赋值:Verilog提供了另一种对线网赋值的简便方法:在线网声明的同时对其进行赋值。 隐式线网声明:如果一个信号名被用在连续赋值语句的左侧,那么Verilog编译器认为该信号是一个隐式声明的线网。如果线网被连接到模块的端口上,则Verilog编译器认为隐式声明线网的宽度等于模块端口的宽度。 6.2 延迟 指定延迟的方法有三种:普通赋值延迟、隐式赋值延迟和线网声明延迟。 普通赋值延迟 上式中,如果in1和in2中的任意一个发生变化,那么在计算表达式 in1 in2的新值并将新值赋给语句左值之前,会产生10个时间单位的延迟。如果在此10个时间单位期间,即左值获得新值之前,in1或in2的值再次发生变化,那么在计算表达式的新值时会取in1或 in2的当前值。我们称这种性质为惯性延迟。也就是说,脉冲宽度小于赋值延迟的输入变化不会对输出产生影响。 隐式连续赋值延迟 隐式连续赋值等效于声明一个线网并且对其进行连续赋值。如下例: 线网声明延迟 Verilog允许在声明线网的时候指定一个延迟,这样对该线网的任何赋值都会被推迟指定的时间。 6.3 表达式、操作符和操作数 表达式 表达式由操作符和操作数构成,其目的是根据操作符的意义计算出一个结果值。如ab,in1|in2 等。 操作数 可以是常数、整数、实数、线网、寄存器、时间、位选(向量线网或向量寄存器的一位)、域选(向量线网或向量寄存器的一组选定的位)以及存储器和函数调用。如表达式中的a、b、in1、in2均为操作数。 操作符 操作符对操作数进行运算并产生一个结果。如表达式中的、| 均为操作符。 6.4 操作符类型 Verilog提供了许多种类型的操作符,分别是算术、逻辑、关系、等价、按位、缩减、移位、拼接和条件操作符。这些操作符中的一部分与C语言中的操作符类似。每个操作符都用一个符号来表示。 6.4.1 算术操作符 算术操作符可以分为两种:双目操作符和单目操作符。 双目操作符 双目操作符对两个操作数进行算术运算,包括乘(*)、除(/)加(+)、减(-)、求幂(**)和取模(%)。如果操作数的任意一位为x,那么运算结果的全部位为x。取模运算的结果是两数相除的余数部分,它同C语言中的取模运算是一样的。 单目操作符 + 和 - 操作符也可以作为单目操作符来使用,这时它们表示操作数的正负。单目的 + 和 - 操作符比双目操作符具有更高的优先级。如:-4,+5。 在Verilog内部,负数是用其二进制补码来表示的。建议使用整数或实数来表示负数,而避免使用sss ’base nnn的格式来表示负数,这是因为它们将被转换为无符号的2进制补码形式,这样会产生意想不到的结果。 6.4.2 逻辑操作符 逻辑操作符包括逻辑与()、逻辑或(| |)和逻辑非(!)。操作符和 | | 是双目操作符,而!是单目操作符。逻辑操作符执行的规则为: 逻辑操作符计算结果是一个1位的值:0表示假,1表示真,x表示不确定; 如果一个操作数不为0,则等价于逻辑1(真);如果它等于0,则等价于逻辑0(假);如果它的任意一位为x或z,则它等价

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档