Verilog HDL中模块参数传递的方法
生活随笔
收集整理的這篇文章主要介紹了
Verilog HDL中模块参数传递的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、參數傳遞
- 二、參數傳遞方法
- 1.方法一
- 2.方法二
- 3.方法三
- 總結
前言
“parameter”是Verilog HDL中的一個關鍵字,代表著參數型常量,即用parameter來定義一個標識符代表一個常量,這樣可以提高程序的可讀性與可維護性。
例如:
parameter max_time = 10; //定義參數max_time為常量10
參數型常量在Verilog HDL中通常用來定義時間延遲和數據位寬。
一、參數傳遞
一方面,對于一個Verilog HDL模塊而言,在實際中可能時間常量需要設置一個相對較大的值,這樣才能符合設計預期,但是如果我們在仿真中依舊采用這樣一個較大的值會導致仿真時間過長,耽誤開發速度,因此可以仿真平臺中(Testbench)利用參數傳遞改變底層模塊中所設置的時間參數。
另一方面,如果我們在另一個模塊中例化我們已經有的模塊,但是又希望更改其中的一些參數值,這時利用參數傳遞就能很便捷地、靈活地通過頂層對底層的參數值進行更改。
二、參數傳遞方法
1.方法一
方法一是通過在例化過程中使用#(A)進行參數的傳遞。
例如:
module T( //模塊一,底層。a,b,c);......parameter Width = 6, mem_num = 3;...... endmodulemodule Y( //模塊二,頂層。d,e,f);......T #(5,7) T_inst0( //這樣的話Width=5,mem_num =7;.a(),.b(),.c());...... endmodule2.方法二
方法二是頂層在在例化時,在例化模塊名前使用#(.(參數1),.(參數2))
例如:
module T( //模塊一,底層。a,b,c);......parameter Width = 6, mem_num = 3;...... endmodulemodule Y( //模塊二,頂層。d,e,f);......T #(.Width(5) ,.mem_num(7)) T_inst0( //這樣的話Width=5,mem_num =7;.a(),.b(),.c());...... endmodule3.方法三
當在多個層次的模塊中改變參數,就可以用”defparam“關鍵字。
例如:
module T( //模塊一,底層。a,b,c);......parameter Width = 6, mem_num = 3;...... endmodulemodule Y( //模塊二,頂層。d,e,f);......T T_inst0( .a(),.b(),.c());defparam T_inst0.Width = 5;defparam T_inst0.mem_num = 7;//這樣的話Width=5,mem_num =7;...... endmodule總結
以上就是在Verilog HDL程序設計中,相對都層次模塊中的參數進行改變時可以用到的參數傳遞方法。
總結
以上是生活随笔為你收集整理的Verilog HDL中模块参数传递的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蜘蛛侠电脑壁纸(蜘蛛侠电脑壁纸logo)
- 下一篇: Verilog HDL中位运算符、逻辑运