淘宝客单页网站程序,农家乐网站开发,沈阳免费做网站,网络营销方案毕业设计Verilog参数
Verilog参数执行以下操作#xff1a;
•允许您创建易于重用和扩展的参数化代码。
•使代码更可读、更紧凑、更易于维护。
•将此类功能描述为#xff1a;
○ 总线尺寸
○ 建模设计单元中某些重复元素的数量
•是常数。对于参数化模块的每个实例化#xf…Verilog参数
Verilog参数执行以下操作
•允许您创建易于重用和扩展的参数化代码。
•使代码更可读、更紧凑、更易于维护。
•将此类功能描述为
○ 总线尺寸
○ 建模设计单元中某些重复元素的数量
•是常数。对于参数化模块的每个实例化默认运算符值可以被覆盖。
•相当于VHDL泛型。不支持空字符串参数。
使用Generics命令行选项重新定义在顶级中定义的Verilog参数设计块。这允许您在不修改源代码的情况下修改设计。这该功能对IP核心生成和流测试非常有用。
参数示例Verilog
从编码示例下载编码示例文件。 Filename: parameter_1.v // A Verilog parameter allows to control the width of an instantitated // block describing register logic // // // File:parameter_1.v // module myreg (clk, clken, d, q); parameter SIZE 1; input clk, clken; input [SIZE-1:0] d; output reg [SIZE-1:0] q; always (posedge clk) begin if (clken) q d; end endmodule module parameter_1 (clk, clken, di, do); parameter SIZE 8; input clk, clken; input [SIZE-1:0] di; output [SIZE-1:0] do; myreg #8 inst_reg (clk, clken, di, do); endmodule 参数和生成示例Verilog 以下编码示例说明了如何使用控制重复元素的创建参数并为构造生成。有关详细信息请参阅生成语句。 文件名parameter_generate_for_1.v // // A shift register description that illustrates the use of parameters and // generate-for constructs in Verilog // // File: parameter_generate_for_1.v // module parameter_generate_for_1 (clk, si, so); parameter SIZE 8; input clk; input si; output so; reg [0:SIZE-1] s; assign so s[SIZE-1]; always (posedge clk) s[0] si; genvar i; generate for (i 1; i SIZE; i i1) begin : shreg always (posedge clk) begin s[i] s[i-1]; end end endgenerate endmodule Verilog参数和属性冲突 Verilog参数和属性冲突可能是由于以下原因引起的 •参数和属性可以应用于Verilog代码中的实例和模块。 •属性也可以在约束文件中指定。 Verilog使用限制 Vivado合成中的Verilog使用限制包括以下内容 •区分大小写 •阻塞和非阻塞分配 •整数处理 区分大小写 Vivado synthesis支持Verilog区分大小写尽管存在名称冲突的可能性。 •由于Verilog区分大小写因此模块、实例和信号的名称可以理论上通过改变资本化而变得独特。 ○ Vivado合成可以合成实例和信号名称仅相差资本化。 ○ 当模块名称仅因大写而不同时Vivado合成会出错。 •不要仅依靠大写来使对象名称唯一。单独的资本化可以导致混合语言项目出现问题。 阻塞和非阻塞分配 Vivado合成支持阻塞和非阻塞分配。 •请勿混合分配阻塞和非阻塞。 •尽管Vivado合成在没有错误的情况下合成了设计但混合阻塞和非阻塞分配可能会在模拟过程中导致错误。有关Vivado模拟的Verilog格式的更多信息请参阅Vivado设计套件用户指南逻辑仿真UG900。 不可接受的示例一 不要对同一信号的不同比特混合块和非块分配。 always (in1) begin if (in2) out1 in1; end else out1 in2; Unacceptable Example Two Do not mix blocking and non-blocking assignments for different bits of the same signal. if (in2) begin out1[0] 1b0; out1[1] in1; end else begin out1[0] in2; out1[1] 1b1; end 整数处理 Vivado合成在某些情况下处理整数的方式与其他合成工具不同。在里面在这些情况下整数必须以特定的方式进行编码。 Verilog案例语句中的整数处理 不带大小写的整数以防项表达式可能导致不可预测的结果。Verilog案例语句中的整数处理示例在下面的编码示例中事例项表达式4是一个未大小的整数它导致不可预测的结果。要解决此问题请将事例项表达式的大小调整为4到3位如中所示以下示例 reg [2:0] condition1; always (condition1) begin case(condition1) 4 : data_out 2; // Generates faulty logic 3d4 : data_out 2; // Does work endcase end 连接中的整数处理 Verilog串联中的无符号整数可能会导致不可预测的结果。如果您使用表达式它会执行以下操作 •将表达式指定给临时信号。 •在级联中使用临时信号。 reg [31:0] temp; assign temp 4b1111 % 2; assign dout {12/3,temp,din}; Verilog-2001属性和元评论 Verilog-2001属性 •Verilog-2001属性将特定信息传递给合成工具等程序。 •Verilog-2001属性被普遍接受。 •在模块声明中为运算符或信号的任何位置指定Verilog-2001属性和实例化。 •尽管编译器可能支持其他属性声明但Vivado synthesis会忽略他们 •使用Verilog-2001属性设置以下方面的约束 ○ 单个对象例如 单元 例子 网 ○ 设置以下合成约束 -完整案例 -平行案例 Verilog元注释 •Verilog元注释可由Verilog解析器理解。 •Verilog元注释设置了对单个对象的约束例如 ○ 单元 ○ 例子 ○ 网 •Verilog元注释设置合成指令 ○ 并行_C和完全_C ○ translate_on和translate_off ○ 所有特定于工具的指令例如syn_shareing Verilog元评论支持 Vivado合成支持 •C风格和Verilog风格的元评论 ○ C样式 /* ...*/ •C型注释可以是多行 ○ Verilog风格 // ... Verilog风格的注释在行的末尾。 •关闭和打开翻译 // synthesis translate_on // synthesis translate_off • Parallel Case // synthesis parallel_case full_case // synthesis parallel_case // synthesis full_case • Constraints on individual objects Verilog Meta Comment Syntax // synthesis attribute [of] ObjectName [is] AttributeValue Verilog Meta Comment Syntax Examples // synthesis attribute RLOC of u123 is R11C1.S0 // synthesis attribute HUSET u1 MY_SET // synthesis attribute fsm_extract of State2 is yes // synthesis attribute fsm_encoding of State2 is gray