1、首先讲讲语法方面的不同
(1)、parameter常量的定义和使用
parameter constant_name = constant_value;
本模块中使用:用constant_value去代替常量的值
实例模块使用:通过 #( .变量名1(变量值1), .变量名2(变量值2), ........)使用
module_name #( .W(4) , .N(10) ) module_instance(
端口连线;
)
parameter DATA_WIDTH = 8; // 定义数据位的宽度
parameter ADDR_WIDTH = 16; // 定义地址位的宽度
parameter CNT_MAX = 25'd24_999_999; //定义计数最大值
//下面三个都可以
#(
parameter WIDTH = 3,N = 5
)
parameter WIDTH = 3,N = 5;
parameter WIDTH = 3;
parameter N = 5;
调用
用CNT_MAX取代模块中的常量25'd24_999_999的值
cnt
#(
.WIDTH(4),.N(10) // 将模块的常量参数值改变了
)
cnt_ins
(
.CLK(CLK)
.RST_N(RST_N)
.CLK_OUT(CLK_OUT)
)
(2)、`define常量的定义
`define constant_name constant_value //后面不要分号
//定义
`define IADDR_WRITE