Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第1 5章 第4章.pptVIP

Xilinx FPGA设计与实践教程 教学课件 作者 赵吉成 第1 5章 第4章.ppt

  1. 1、本文档共109页,可阅读全部内容。
  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文档。上传文档
查看更多
4.1 基?本?操?作?符   Verilog语言包括两种操作符。一种是在第三章简单讲述过的位操作,另外还有用于算术、移位、关系等的运算操作,这些运算符与描述Verilog基本数字模块紧密相关,比如加法器、比较器等。本节讨论VerilogHDL语言的运算符操作,同时覆盖所有的RTL级描述。表4-1列举了所有的操作符,同时表4-2列举了这些操作的优先级。 4.1.1 算术操作符   算术操作符包括六种:加法(?+?)、减法(?-?)、乘法(?*?)、除法(?/?)、取模(?%?)和求幂运算(?**?)。其中,加法(?+?)和减法(?-?)操作符可以被用作一元操作符。例如,“-a”在综合时,“+”与“-”操作符可以代表加法与减法而被FPGA的逻辑单元所综合。   乘法运算符(?*?)相对来说比较复杂,其综合时需要依赖于所用的软件综合工具以及所选配的目标硬件。Xilinx公司的Spartan-3 FPGA系列内部含有预制的乘法器模块,Xilinx XST软件可以提供将“*”号乘法操作适配综合到FPGA的乘法器模块当中,在以上两个条件满足的情况下,可以在HDL设计中使用“?*?”符号。针对S3板来说,XC3S200这款FPGA含有20个18?×?18的乘法器资源,所以尽管硬件支持乘法器综合,我们还需要考虑资源包含的数目。   除法(?/?)、取模(?%?)和求幂运算(?**?)操作符通常不可以直接被综合。  4.1.2 移位操作符   移位操作符有四种:逻辑右移(??),逻辑左移(??),算术右移(??)和算术左移(??)。   在逻辑移位运算中,无论是左移还是右移都是用“0”来填补移出的空位。而在算术移位运算时,右移“”操作是用符号位来填补移出的空位;左移“”操作是用“0”来填补移位的空位。对于逻辑左移(??)和算术左移(??)是没有区别的,具体可参考表4-3中的例子。 4.1.3 关系运算符与相等运算符   关系运算符有四种:大于(??)、小于(??)、大于等于(?=?)和小于等于(?=?)。   关系运算符通过比较操作,然后返回布尔值结果,如果值为正确,则返回“1”,否则返回“0”。   相等运算符也有四种:等于(?= =?)、不等于(?!=?)、条件相等(?= = =?)和条件不相等(?!= =?)。   等于运算符(?= =?)和不等于运算符(?!=?)与关系运算符相似,也是返回false和ture的布尔值。需要注意的是,针对X和Z的严格按位比较,是不能被综合的。   例如:   if (a = = 1‘bx)    $ display (a is x); //当a等于x时,这个语句不执行   if (a = = = 1’bx)    $ display (a is x); //当a等于x时,这个语句执行 4.1.4 位操作、复制和逻辑操作运算符   位操作、复制和逻辑操作运算在许多情况下颇为相似,都针对与、或、异或和非操作。下面分别讨论这三种运算符的用法。   1.位运算操作   有四种基本的位操作运算:与()、或(?|?)、异或(?^?)和非(?~?)。   前三种操作都需要两个操作对象,另外,异或与非操作,可以组合在一起构成“异或非”,如“~ ^”或“^ ~”。   这些操作都是针对位来操作的。所以称为位操作符。下面举例来说明位操作符的用法。   例:a,b,c为我们定义的三个位宽为4的信号:    wire [3:0] a,b,c;   执行如下语句:    assign c=a | b;   相当于:    assign c[3] = a[3] | b[3];    assign c[2] = a[2] | b[2];    assign c[1] = a[1] | b[1];    assign c[0] = a[0] | b[0];   2.缩减运算符   缩减运算符包括与、或、非运算。   与位运算操作符不同的是,缩减运算符是单操作数运算符,并且最后的结果是1位的二进制数。单个操作数一般是同一个数据类型。缩减运算的具体运算过程是:第一步先将操作数的第1位与第2位进行与、或、非运算。第二步将运算结果与第3位进行与、或、非运算,依次类推,直至最后1位。比如说输入a为4 bit信号,那么对于输出y却是1 bit信号:   wire [3:0] a;   wire y;   3.逻辑运算符   逻辑运算符包含三种:逻辑与()、逻辑或(?||?)、逻辑非(?!?)。   逻辑运算操作与位操作不一样,如果假设x与z不用,当所有位都为0时,则操作为false。当至少有一位为1时,则操作为tur

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档