Verilog 模块参数重定义(转)
Verilog重载模块参数:
当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式:
1)defparam 重定义参数
语法:defparam path_name = value ;
低层模块的参数可以通过层次路径名重新定义,如下例:
module top ( .....)
input....;
output....;
defparam U1 . Para1 = ;
M1 U1 (..........);
endmodule module M1(....);
parameter para1 = ;
input...;
output...;
......
endmodule
在上例中,模块M1参数 para1 的缺省值为5,而模块top实例了M1后将参数的值改为10。
2) 实例化时传递参数
在这种方法中,实例化时把参数传递进去,如下例所示:
module top ( .....)
input....;
output....;
M1 #( ) U1 (..........);
endmodule
在该例中,用#( 10 )修改了上例中的参数para1,当有多个参数时,用逗号隔开,如#( 10 , 5 )
defparam可综合性问题:一般情况下是不可综合的.
提示:不要使用defparam语句!
[例1]
module mod ( out, ina, inb);
…
parameter cycle = , real_constant = 2.039,
file = "/user1/jmdong/design/mem_file.dat";
…
endmodule module test;
…
mod mk(out,ina,inb); // 对模块mod的实例引用
defparam mk.cycle = , mk.file = "../my_mem.dat";
// 参数的传递
…
endmodule
[例2]
module mod ( out, ina, inb);
…
parameter cycle = , real_constant = 2.039,
file = "/user1/jmdong/design/mem_file.dat";
…
endmodule module test;
…
mod # (, 3.20, "../my_mem.dat") mk(out,ina,inb);
// 对模块mod的实例引用
…
endmodule
建议用此方法!
Verilog 模块参数重定义(转)的更多相关文章
- C++学习笔记 封装 继承 多态 重写 重载 重定义
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- Flask(2)- 装饰器的坑及解决办法、flask中的路由/实例化配置/对象配置/蓝图/特殊装饰器(中间件、重定义错误页面)
一.装饰器的坑以及解决方法 1.使用装饰器装饰两个视图函数,代码如下 from flask import Flask, redirect, render_template, request, sess ...
- Verilog模块概念和实例化#转载自Jason from Lofter
Verilog模块概念和实例化 模块的概念 模块(module)是verilog最基本的概念,是v设计中的基本单元,每个v设计的系统中都由若干module组成. 1.模块在语言形式上是以关键词modu ...
- oracle普通表转分区表(在线重定义方式)
1.1.TAB_TAOBAO_BILL 1.1.1检查下这张表是否可以在线重定义,无报错表示可以,报错会给出错误信息: exec dbms_redefinition.can_redef_table(' ...
- C++ 重载、重写、重定义
出自:http://blog.163.com/clevertanglei900@126/blog/ 1 成员函数重载特征: a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virt ...
- Spring进阶教程之在ApplicationContext初始化完成后重定义Bean
前言 很久没有写博客了,也是两个原因:一是自己觉得一直在班门弄斧,其实自己没什么技术可言:二是很多朋友的问题实际上可以自行解决,我经常觉得不该我来过问,或者是有时候我认为技术还得靠自己钻研,我一两句话 ...
- oracle在线重定义表
在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就 ...
- C++重载,重写,重定义
1.重载:重载是在一个类中,函数名一样,参数类型或参数个数不同的一系列函数需要注意的是,与返回类型无关. class Test { public: void show(); void show(int ...
- insmod module_param 模块参数
模块参数 引导模块时,可以向它传递参数.要使用模块参数加载模块,这样写: insmod module.ko [param1=value param2=value ...] 为了使用这些参数的值,要在模 ...
随机推荐
- Content-Disposition的使用方法
一.作用: 1)希望某类或者某已知MIME类型的文件(比如:*.gif;*txt;*.htm)能够在访问时弹出"文件下载对话框" 2)希望客户端下载时以指定文件名显示 3)希望某文 ...
- POJ 1225 Substrings
http://poj.org/problem?id=1226 题意:给定n个串.求一个最长的串,使得这个串或者其反串在每个串中都出现过? 思路:先在大串里面加入正反串,然后二分,判定即可. #incl ...
- Qt跨线程信号和槽的连接(默认方式是直连和队列的折中)
Qt支持三种类型的信号-槽连接:1,直接连接,当signal发射时,slot立即调用.此slot在发射signal的那个线程中被执行(不一定是接收对象生存的那个线程)2,队列连接,当控制权回到对象属于 ...
- 递归转手工栈处理的一般式[C语言]
是任意形式的递归,是化解的一般式. 主题所谓的“递归调用化解为栈处理”,意思是,将递归函数调用化解为“一个由stack_push stack_pop stack_top等函数调用组成的循环式子”.这里 ...
- 利用php unpack读取c struct的二进制数据,struct内存对齐引起的一些问题
c语言代码 #include <stdio.h> struct test{ int a; unsigned char b; int c; }; int main(){ FILE *fp; ...
- zoj2314 经典 无源汇有上下界最大流 并输出可行流
ZOJ Problem Set - 2314 Reactor Cooling Time Limit: 5 Seconds Memory Limit: 32768 KB Specia ...
- 给logstash 模板添加触发器
- android Handler及消息处理机制的简单介绍
学习android线程时,直接在UI线程中使用子线程来更新TextView显示的内容,会有如下错误:android.view.ViewRoot$CalledFromWrongThreadExcepti ...
- hdu1540-Tunnel Warfare (线段树区间合并)
题意:n个村庄,有三种操作,D x 破坏位置为x的村庄,R 修复上一次被破坏的村庄,Q x 输出含有x村庄的连续村庄的最大个数.线段树搞之,区间合并. ls[maxn]为当前节点左面的连续区间,rs[ ...
- CSS的基本认识
1.定义: 级联样式表(Cascading Style Sheet)简称“CSS”,通常又称为“风格样式表(Style Sheet)”,它是用来进行网页风格设计的. 2.对CSS的基本认识: CSS是 ...