Verilog实例化时的参数传递

http://samblack444.blog.163.com/blog/static/37028485201172231633983/

类似VHDL的Generic语句,Verilog也可以在例化时传递参数

例子见http://sutherland-hdl.com/online_verilog_ref_guide/vlog_ref_top.html#8.0%20Module%20Instances

传递的参数是子模块中定义的parameter。

传递的方法:
1、module_name #( parameter1, parameter2) inst_name( port_map);

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

用#方法和port map的写法差不多

3、defparam
defparam heirarchy_path.parameter_name = value;
这种方法与例化分开,参数需要写绝对路径来指定。

参数型常数常用于定义延迟时间和变量宽度,在模块和实例引用时,可通过参数传递改变在被引用模块或实例中已定义的参 数。参数传递的方法如下例子:首先定义一个Adder_16(sum,a,b)实例,然后定义两个参数型常量time_delay和 time_count,然后在顶层模块中调用的时候,可以通过参数传递改变参数型常量的值,从而更为灵活的调用子模块。

    • module adder_16(sum,a,b);
    • parameter time_delay=5,time_count=10;
    • ......
    • endmodule
    • module top;
    • wire[2:0] a1,b1;
    • wire[3:0] a2,b2,sum1;
    • wire[4:0] sum2;
    • adder_16  #(4,8)  AD1(sum1,a1,b1);//time_delay=4,time_count=8
    • adder_16  #(12)   AD2(sum2,a2,b2);//time_delay=12,time_count=10
    • endmodule
时间: 2024-10-29 19:07:33

Verilog实例化时的参数传递的相关文章

C++函数调用时的参数传递-3中传递方式

参数传递即实参向形参传递信息,使形参获得对应的存储空间及初值,C++中函数传递主要有3种方式: 1.按值传递. 以按值传递方式进行参数传递的过程为:首先计算出实参的值,然后给它所对应的形参变量分配存储空间,该空间大小等于该形参类型的长度,然后把实参值存入到为形参分配的存储空间里去,该值即为形参的初值,在函数被调用时使用.而这种方式被调用的函数对实参的值改变不会有任何的影响,也就是说,即使形参的值在函数中被改变,也不会对实参值产生任何影响,实参值仍为被调用之前的值.究其原因还是实参和形参各占独立的

struts2 result类型为redirectAction时的参数传递

action部分 <span style="font-size:18px;"><!-- 根据id获取订单列表 --> <action name="<span style="color:#ff0000;">getOrderListByIdAction</span>" class="com.hcj.action.database.GetOrderListByIdAction"&

verilog中defparam的用法 (verilog调用底层模块(只改变)参数的传递)

当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例: module top ( .....)input....;output....;defparam U1 . Para1 = 10 ;M1 U1 (..........);endmodulemodule M1(....);

verilog中defparam的用法

有机会看下defparam的语法了:如下: 当一个模块引用另外一个模块时,高层模块可以改变低层模块用parameter定义的参数值,改变低层模块的参数值可采用以下两种方式: 1)defparam 重定义参数 语法:defparam path_name = value ; 低层模块的参数可以通过层次路径名重新定义,如下例: module top ( .....)input....;output....;defparam U1 . Para1 = 10 ;M1 U1 (..........);end

&lt;转&gt;verilog hdl中常数声明

1.语法声明:parameter xx = yy;`define XX YY 使用:xx`XX 2.作用域parameter 作用于声明的那个文件:`define 从编译器读到这条指令开始到编译结束都有效,或者遇到`undef命令使之失效. 如果想让parameter或`define作用于整个项目,可以将如下声明写于单独文件,并用`include让每个文件都包含声明文件:`ifndef xx `define xx yy // or parameter xx = yy;`endif `define

对Verilog 初学者比较有用的整理(转自它处)

对Verilog 初学者比较有用的整理(转自它处) ******************************************************************************************************************** *作者: Ian11122840    时间: 2010-9-27 09:04                                                                   

Verilog HDL常用综合语法

前面已经记录了一些组成Verilog的基本组成,可以用这些基本组成来构成表达式.这一节,就来记录一下把这些表达式构成一个文件的各种行为描述语句. ①这里用Verilog基本要素进行的行为描述主要是针对综合来的,也就是可以设计出实际电路来的(行为描述语句有两大子集,一个是面向综合,一个是面向仿真).②行为描述语句一般指放在always语句中.内容提纲如下所示: ·触发事件控制 ·条件语句(if与case语句) ·循环语句 ·任务和函数 ·编译预处理 一.触发事件控制 ①电平敏感事件是指 指定信号的

wtforms Form实例化流程(源码解析)

class LoginForm(Form): #首先执行后得到的结果是UnboundField()对象 name=simple.StringField( label='用户名', validators=[ validators.DataRequired(message='用户名不能为空'), ], widget=widgets.TextInput(), render_kw={'class': 'form-control'} ) pwd=simple.StringField( label='密码'

PHP static 关键字和 self 关键字实例化的区别

在实例化时,static 关键字类似于 self 关键字,但 static 关键字指的是被调用的类,而 self 关键字指的是包含类. 这样说可能不太好理解,接下来举一个例子. 首先创建一个超类 DomainObject ,该类包含功能可被其扩展类共用,其次创建一个子类 Document . 代码如下: abstract class DomainObject { public static function create() { return new self(); } } class Docu