Verilog實例化時的參數傳遞


類似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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM