当前位置: 首页 > article >正文

【verilog教程】verilog带参数例化

1. verilog 带参数例化

当一个模块被另一个模块引用例化时,高层模块可以对低层次模块的参数值进行改写。

2. defparam

可以用关键字 defaram 通过模块层次调用的方法,来改写低层次模块的参数值。

示例如下

defparam u_ram.MASK = 7 ;

ram u_ram(
	.clk (clk) ,
	.a   (a  ) ,
	.d   (d  ) ,
	.en  (en ) ,
	.wr  (wr ) ,
	.q   (q  )
);

/// 此模块的MAKSK已经被上层模块传参为7
module ram #( 

	parameter MASK = 3 
)(

	input wire 		 clk 	,
	input wire [7:0] a		,
	input wire [7:0] d		,
	input wire       en		,
	input wire		 wr    	,

	output reg [7:0] q	
);

reg [7:0] mem [0:(1<<7)-1] ;

always @(posedge clk) begin
	if(en && wr) begin
		mem[a] <= d & mask ;
	end
	else if(en && !wr) begin
		q <= mem[a] & mask ;
	end
end

endmodule

3. 带参数模块例化

示例如下

ram #(
	.aw(4) ,
	.dw(4) 
)
u_ram(
	.clk 	(clk		) ,
	.a 		(a[aw-1:0]	) ,
	.d 		(d			) ,
	.en 	(en			) ,
	.wr 	(wr			) ,
	.q		(q			)
);

/// 此模块下的aw,dw都被上层模块传参为4
module ram #(

	parameter aw = 2 ,
	parameter dw = 3
(
	input wire 			clk ,
	input wire [aw-1:0] a   , /// 现在a的位宽为3,原始为1
 	input wire [dw-1:0] d   , /// 现在b的位宽为3,原始为2
	input wire 			en  ,
	input wire			wr  ,
	output reg [dw-1:0] q   
);
	...
	...
	...
	
endmodule

笔记

实际工作中,带参数例化的情况较多。



http://www.kler.cn/a/416250.html

相关文章:

  • HarmonyOS NEXT应用元服务开发Intents Kit(意图框架服务)综述
  • mysql之基本常用的语法
  • 性能监控框架的底层原理
  • Spring Boot教程之十三:更改Spring Boot的默认端口
  • 摄像头原始数据读取——V4L2(userptr模式,V4L2_MEMORY_USERPTR)
  • 【单片机的结构和组成】
  • 深度学习:利用GPU进行训练
  • 牛客练习赛132
  • A-star算法
  • 扩散模型_Diffusion Model
  • 【小白学机器学习35】数据表:整洁数据表,交叉表/列联表,以及两者转化pd.pivot_table()
  • 依赖倒置原则:Java实践篇
  • 【大数据学习 | Spark调优篇】常用的shuffle优化
  • 如何快速上手UPR ---查看资源检测报告
  • 【论文复现】Modnet 人像抠图
  • 24.11.26 神经网络 参数初始化
  • 阿里云CDN:稳定性究竟如何?
  • set up RAGFlow on your Mac
  • VSOMEIP主要流程的时序
  • 五、基于 Guava EventBus事件驱动架构实现动态扩展的技术方案