附录A verilog源代码.pdf

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

附录A Verilog源代码 本书第 1 版和第 2 版所附 Verilog 源代码采用了 IEEE 1364-1995 标准[340] 。本书充分利 用 IEEE 1364-2001(在 IEEE 书店大概 100 美元可以购买到)规定的标准,对第三版做出了 一些修订,该标准花费 100 美元就可以从 IEEE 书店得到[341,342] 。现在在所有主要设计工 具中都已采用 Verilog 2001 修订,文献[343~345]和本书简要回顾了一下所用到的最重要的 新功能。如果想要了解全部新功能请查询文献[341], 这里仅回顾已实现的新功能。 ● 1364-1995 ( Kernighan 标准 中的实体说明要求所有的端口出现两次 类似于 和 Ritchie C ) 编码 ,第一次是在端口清单中,然后是在端口数据类型说明中,如 module iir_pipe (x_in, y_out, clk); // Interface parameter W = 14; // Bit width -1 input clk; input [W:0] x_in; // Input output [W:0] y_out; // Result ... 注意,所有的端口(x_in, y_out 和 clk)都定义了两次。1364-2001 标准(请参阅语言参考 手册 12.3.4 节)不再需要这样的重复说明,即,新编码如下所示: module iir_pipe // Interface # (parameter W = 14) // Bit width -1 (input clk, input signed [W:0] x_in, // Input output [W:0] signed [W:0] y_out) ,// Result ● 1364-2001 标准支持有符号数据类型,从而简化了有符号算术运算。在符号定义行, 在输入、输出、寄存器或布线关键字之后引入有符号关键字: reg signed [W:0] x, y; 有符号和无符号类型之间的转换可以通过$signed 和$unsigned 转换函数实现,请参阅 语言参考手册 4.5 节。对于有符号常数,在连字符和基数之间引入小写的 s 或大写的 S, E2 数字信号处理的 FPGA 实现(第 3 版) 如sd90 就表示有符号常数 90 。有符号算术运算可以使用原有的除法或乘法运算符。对于2 的幂因子可以使用新的左移()或右移()算术运算符,请参阅语言参考手册 4.1.23 节。 可以看到 3 个移位运算符用于区别其中使用两个移位符号的无符号移位。有符号或 0 扩展 是根据数据类型自动进行的。从 IIR 滤波器示例中可以用新运算符代替旧类型的运算符: ... y = x+{y[W],y[W:1]}+{{2{y[W]}},y[W:2]}; ... //i.e,x+y/2+y/4; 1364-2001 Verilog 类型运算符使用如下除法运算符: y = x+y/ sd2 + y/ sd4; // div with/uses 92 LEs 注意:在为常数定义有符号除法时,下列代码 y = x+y/2 + y/4; 在 Quartus II 的 4.0 、4.2 、5.0、5.1 版本下将呈现出错误的仿真结果,但在 Web 版 6.0 中会正确运行。或者也可以使用算术右移运算符实现2 的幂的除法。 y = x+ (y 1) + (y2); // div with uses 60 LEs

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档