Verilog实例化时的参数传递

Posted agllero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Verilog实例化时的参数传递的主要内容,如果未能解决你的问题,请参考以下文章

具有DATA-IN和DATA-OUT的verilog中的可重新配置的存储器实例作为参数传递

尽管将 Python multiprocessing.Lock 作为目标函数参数传递,但在并行化时为无

c#中关于启动进程时的参数传递问题

verilog语法实例学习

JS怎么样调用IOS并且传递参数?

verilog HDL-参数型数据对像 与‘define