0
点赞
收藏
分享

微信扫一扫

arcgis for js点击聚合要素查询其包含的所有要素

晚熟的猫 2024-12-02 阅读 7

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
end
else if(en && !wr) begin
q <= mem[a]
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

笔记

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


举报

相关推荐

0 条评论