20064|0

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

verilog 模块的引用(例化) [复制链接]

定义模块

CODE:

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

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

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

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

CODE:
Design u_2(  .(端口1(u_1的端口1),
                     .(端口2(u_1的端口2),
                      .(端口3(u_1的端口3),
                     ……   );//推荐这种引用法引用模块时,注意对运用参数编写的模块的灵活引用。
Q:

CODE:

以下是对一个模块的例化:

m1 #(`UART_FIFO_REC_WIDTH) m1_inst(

.clk(  clk  ),

   ..........

);

该模块中定义的第一个参数是 parameter fifo_width = `UART_FIFO_WIDTH;

在另一个专门的文件里定义了:

`define UART_FIFO_WIDTH 8

`define UART_FIFO_REC_WIDTH  11

一开始我以为#(`UART_FIFO_REC_WIDTH)的意思是延时那么多,方便仿真。。。后来觉得不对,不是延时,因为又不是在做赋值。。。

编译后看RTL图发现,该模块UART_FIFO_WIDTH的值全部替换成了UART_FIFO_REC_WIDTH的值,到这里我大概明白这里的用意了。觉得很奇怪,以前从没遇到过。。。
这个意思就是:

CODE:
module  Decode(A,F);

parameter  Width=1,Polarity=1;

……
endmodule

引用时:

CODE:
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的引用一样使用 ” .

CODE:
module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);            

CODE:
module  half  adder  (co ,  sum,  a ,  b);
output co ,  sum;
input a,b;

parameter and_delay=2;
parameter xor_delay=4;

and  #and_delay u_1(co,a,b);
xor #xor_delay u_2(sum,a,b);

参数的用户定制方法有以下两种:
1.  通过 defparam关键宇重新定义模块中的参数:
2.  直接在实例化模块时代入参数。

有意思的是,两家最大的 PLD 供应商 Altera 和 XiIinx 的通用模块定制恰好分别采用了这两种方法。
比如在 Altera 的 Quartus II 开发环境中用 MegaWiard 工具定制一个宽度为 8bit ,深度为32bit 的单口 RAM,对比使用 Xilinx 设计工具 ISE 中的 CORE Generator 产生一个单端口 8 位宽、 32 位深的 RAM ,注意观察 二者RAM 的参数是如何代入的。

更多参考《设计与验证VerilogHDL》P54

[ 本帖最后由 逍遥 于 2009-12-10 13:15 编辑 ]
此帖出自FPGA/CPLD论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表