文档详情

附录A verilog源代码.pdf

发布:2017-05-29约11.4万字共67页下载文档
文本预览下载声明
附录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
显示全部
相似文档