Verilog 带参数例化(paramete)

在Verilog中用parameter来定义常量,即用parameter定义一个标识符表示一个常量,提高可读性。

module 模块名1

	parameter 参数名1 = 数据1; //用关键字 parameter 声明,只能赋值一次。

	#(
		parameter 参数名 = 默认值;		//有多个时
		     	  参数名 = 默认值;
	)

endmodule

//可以用在源文件,不能用在仿真之中
模块名1 例化名1(
    .a(A)
);
//可以用在源文件,不能用在仿真之中
模块名1 例化名1(
    .a(A)
);
defparam 例化名1.参数名1 = 数据2;


//或者
//可以用在仿真之中或源文件
模块名1 
#(
    .参数名1(数据2)
)
例化名1(
    .a(A)
);

举例 参数加法器

module adder_carry_para_parameter
    #(parameter N = 4)		//	parameter N = 4     也可以
    (
    input [N-1:0]a, b,
    input [N-1:0]sum,
    output cout
    );
    //常数声明
    localparam N1 = N-1;
    wire [N:0]sum_ext;
    assign sum_ext = {1'b0,a}+{1'b0,b};
    assign sum = sum_ext[N1:0];
    assign cout = sum_ext[N];
endmodule

//例化
module adder_insta(
    input [3:0]a4, b4
    input [3:0]sum4,
    output c4,
    input [7:0]a, b,
    input [7:0]sum,
    output c8
);
    
    //实例化8位加法器
    adder_carry_para_parameter #(.N(8))unit1	//覆盖原本默认值
    (.a(a8), .b(b8), .sum(sum8), .cout(c8));	//和端口连接一样有顺序和命名端口连接
    
    //实例化4位加法器
    adder_carry_para_parameter unit2		//与默认值一样
    (.a(a4), .b(b4), .sum(sum4), .cout(c4));
endmodule
``
  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值