首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

verilog 模块实例化级参数传递

verilog 模块实例化级参数传递

网上搜来的,保存下来


http://blog.163.com/xiada_action/blog/static/74234602201083111032903/


定义模块 :












module  Design(端口1,端口2,端口3……);








1)引用时,严格按照模块定义的端口顺序来连接,不用标明原模块定义时规定的端口名。


Design u_1(u_1的端口1,u_1的端口2,u_1的端口3,u_1的端口……);//和Design对应






2)引用时用 “ . ” 符号,标明原模块定义时规定的端口名:
















Design u_2(  .(端口1(u_1的端口1),




























.(端口2(u_1的端口2),




























.(端口3(u_1的端口3),








































……  
);  




  















//推荐这种引用法




引用模块时,注意对运用参数编写的模块的灵活引用。


module  Decode(A,F);




parameter  Width=1,Polarity=1;




……


endmodule




引用时:


module Top;




wire [3:0] A4;




wire [4:0] A5;




wire [15:0] F16;




wire [31:0] F32;




Decode  


u_D1(A4,F16);  














//u_D1使用默认参数,Width为1,Polarity为1




Decode  #(4,0)  u_D2(A4,F16);  














//u_D2的Width为4,Polarity为0




Decode  #(5)  
u_D3(A5,F32);  













//u_D3的Width为4,Polarity为0


endmodule






传递的方法:


#(4,0)这个参数改变方法是内容对应于被引用的module的,参数的改变还可以像module的引用一样使用 ” . “


1、module_name #( parameter1, parameter2) inst_name( port_map);



2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);

返回列表