Verilog 模块参数重定义(转)

摘要:
Verilog重载模块参数:当一个模块引用另一个模块时,高级模块可以更改由低级模块的参数定义的参数值。以下两种方法可用于更改低级模块的参数值:1)defparam重新定义参数语法:defparamath_ name=value;低级模块的参数可以通过分层路径名重新定义,如以下示例所示:moduletop(…..)input;输出defparamU1.Para1=1

Verilog重载模块参数:

当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式:

1)defparam 重定义参数
语法:defparam path_name = value ;
低层模块的参数可以通过层次路径名重新定义,如下例:

module top ( .....)
    input....;
    output....;
    defparam U1 . Para1 = 10 ;
    M1 U1 (..........);
endmodule

module M1(....);
    parameter para1 = 5 ;
    input...;
    output...;
    ......
endmodule

在上例中,模块M1参数 para1 的缺省值为5,而模块top实例了M1后将参数的值改为10。

2) 实例化时传递参数
在这种方法中,实例化时把参数传递进去,如下例所示:

module top ( .....)
    input....;
    output....;
    M1 #( 10 ) U1 (..........);
endmodule

在该例中,用#( 10 )修改了上例中的参数para1,当有多个参数时,用逗号隔开,如#( 10 , 5 )

defparam可综合性问题:一般情况下是不可综合的.
提示:不要使用defparam语句!

[例1]
module mod ( out, ina, inb);
    …
    parameter cycle = 8, real_constant = 2.039,
    file = "/user1/jmdong/design/mem_file.dat";
    …
endmodule


module test;
    …
    mod mk(out,ina,inb); // 对模块mod的实例引用
    defparam mk.cycle = 6, mk.file = "../my_mem.dat"; 
    // 参数的传递
endmodule
[例2]
module mod ( out, ina, inb);
    …
    parameter cycle = 8, real_constant = 2.039,
    file = "/user1/jmdong/design/mem_file.dat";
    …
endmodule


module test;
    …
    mod # (5, 3.20, "../my_mem.dat") mk(out,ina,inb); 
    // 对模块mod的实例引用
endmodule

建议用此方法!

免责声明:文章转载自《Verilog 模块参数重定义(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ExtJS 4.2 教程-06:服务器代理(proxy)【STM32】MDK中寄存器地址名称映射分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CAD中批量打印

同事在网上找各种软件来实现CAD图的批量打印,总是问题多多。"进行查看4.先在CAD测试一次,结果帮助文档写好lisp代码,然后用批量处理工具来实现批量打印即可。...

Jenkins配置git进行构建失败:Error cloning remote repo 'origin'的解决思路

出现如下的错误:Errorcloningremoterepo'origin'解决思路:1、第一时间发现应该是权限问题,那么可以切换成git协议或者https的协议去获取。...

postgresql笔记

一旦任何有价值的对象被转移到新所有者,可以使用DROPOWNED命令删除被删除角色所拥有的任何剩余对象。此外,DROPOWNED不会删除整个数据库或表空间。因此,如果角色有任何尚未转移到新所有者的数据库或表空间,则需要手动删除它们。DROPOWNED还将注意到,对于不属于目标角色的对象,删除授予目标角色的任何特权。因为REASSIGNOWNED不会接触这些对...

安装samba服务器实现Linux mint和Windows共享文件

安装samba服务器以实现Linuxmint和Windows共享文件。在Linuxmint普通用户下执行命令:sudoapt-geinstallsamba、installsamba和打开smb。conf配置文件,并执行命令gedit/etc/samba/smb-Coff,如果您想安装gedit(sudoapt-geinstallgedit),还可以使用Lin...

go语言游戏服务端开发(一)——架构

本教程以Go语言为例。特别是游戏服务进程有更新上线时,稳定性还没有被线上并发验证,宕机的几率会增加,数据丢失的风险也会增加。为了减轻风险,可以考虑把数据缓存跟服务进程分离。对于轻中度游戏,游戏的通信量不会很多,没必要每个分服都有一个长连接socket网关。假设一个分服同时连接服务器的客户端有5k,一台机器的socket网关能支持5w个玩家。因此网关需要参与服...

2022年可用QQ机器人框架

4.小李子机器人官网:https://xiaolz.cn评估:支持多个Q登录和论坛似乎是目前最活跃的。它支持许多api,可以满足许多需求。没有限制,但有很多错误。...