Verilog 模块有两种编辑方法:原理图输入和 verilog 代码输入方式。原理图输入的方式
胜在结构清晰,而代码输入方式则更便于移植和仿真。(一般我们都用 Modelsim进行仿真, 目前还无法对原理图输入的方法进行仿真。不过可以把原理图转换成 verilogHDL文件再进 行仿真,方法是菜单栏 File-->Creat/Updata-->CreatHDLdesignfilesformcurrentfile)
三,Parameter 参数传递
Verilog 中可以用 parameter 定义一个标识符代表一个常量,有助于提高程序的可读 性,同时也方便了模块例化的可维护性和可扩展性,简单举例:可以对总线的位宽进行 parameter 的定义,这样就可以很方便地修改总线容量。由于它是 verilog 所特有的参数传递 方法,我们在这里详细说明一下,Parameter语法格式如下:
parameter 参数名 1 = 表达式, 参数名 2 = 表达式, ....... 参数名 n = 表达式;
(这里建议参数名使用大写字母,方便和变量区分开,而表达式必须是常量表达式。)
举例
module Box( X,Y);
parameter LENTH = 100, WIDTH = 50, HIGH = 25;
...... endmodule
以下是在 verilog 文件中例化模块时传递参数常用的两种方法:
1、module_name #( parameter1, parameter2) inst_name( port_map);
例如例化上面模块 Box #(80,40,20) box_1( X1, Y1) ;
Box_1 中实际引用的 LENTH , WIDTH, HIGH 分别为 80,40,20。
2、defparam
defparam heirarchy_path.parameter_name = value;
还是用上面的例子:
module Top( X,Y);
Box box_2( X2,Y2);
endmodule
module Annotate;
defparam
Top.box_2. LENTH =80; Top.box_2. WIDTH =40; Top.box_2. HIGH =20;
endmodule
Box_2 中实际引用的 LENTH , WIDTH, HIGH 分别为 80,40,20。
在原理图文件中传递参数的方法比较简单,例化的 Box 模块如下图,参数以表格的方 式在例化的 block/symbol 旁边出现,我们只需要修改表格中的值就可以了。