Verilog的模組與埠 語法

2021-06-10 11:25:07 字數 1562 閱讀 8588

模組

模組的定義以關鍵字module開始,模組名、埠列表、埠宣告和可選的引數宣告必須出現在其他部分的前面,endmodule語句必須為模組的最後一條語句。埠是模組與外部環境互動的通道,只有在模組有埠的情況下才需要有埠列表和埠宣告。模組內部的5個組成部分是:變數宣告、資料流語句、低層模組例項、行為語句塊以及任務和函式。

埠埠是模組與外界環境互動的介面。對外部環境來講,模組內部是不可見的,對模組的呼叫只能通過其埠進行。這種特點為設計者提供了很大的靈活性:只要介面保持不變,模組內部的修改並不會影響到外部環境。常將埠成為終端。(terminal)

埠列表:

在模組的定義中包括乙個可選的埠列表。如果模組和外部環境沒有交換任何訊號,則可以沒有埠列表。

埠宣告

埠列表中的所有埠必須在模組中進行宣告,verilog中的埠具有以下三種了型別:input、output、和inout

。在verilog中,所有的埠隱含地宣告為wire型別,因此如果希望埠具有wire資料型別,將其宣告為三種型別之一即可:如果輸出型別的埠需要儲存數值,則必須將其顯式的宣告為reg資料型別。

不能將input和inout型別的埠宣告為reg資料型別,這是因為reg型別的變數是用於儲存數值的,而輸入埠只反映與其相連的外部訊號的變化,並不能儲存這些訊號的值。

注意,在verilog中,也可以使用ansi c風格進行埠宣告。這種風格的宣告的優點是避免了埠名在埠列表和埠宣告語句中的重複。如果宣告中未指明埠的資料型別,那麼預設埠具有wire資料型別。

如:module     fulladd4(output reg [3:0] sum,

output reg c_out,

input [3:0] a,b,

input c_in);

…………

endmodule     

埠連線規則

將乙個埠看成由相互鏈結的兩個部分組成,一部分位於模組內部,另一部分位於模組外部。當在乙個模組中呼叫(例項引用)另乙個模組時,埠之間的連線必須遵守一些規則。

輸入埠:從模組內部來講,輸入埠必須為線網資料型別,從模組外部來看,輸入埠可以連線到線網或者reg資料型別的變數。

輸出埠:從模組內部來講,輸出埠可以是線網或者reg資料型別,從模組外部來看,輸出必須連線到線網型別的變數,而不能連線到reg型別的變數。

輸入/輸出埠(必須為wire)

從模組內部來講,輸入/輸出埠必須為線網資料型別;從模組外部來看,輸入/輸出埠也必須連線到線網型別的變數。

位寬匹配

在對模組進行呼叫的時候,verilog允許埠的內、外兩個部分具有不同的位寬。一般情況下,verilog**器會對此警告。

未連線埠

verilog允許模組例項的埠保持未連線的狀態。例如,如果模組的某些輸出埠只用於除錯,那麼這些埠可以不與外部訊號連線。

埠與外部訊號的連線

在對模組呼叫的時候,可以使用兩種方法將模組定義的埠與外部環境中的訊號連線起來:按順序連線以及按名字連線。但兩種方法不能混合在一起使用。

順序埠連線:

需要連線到模組例項的訊號必須與模組宣告時目標埠在埠列表中的位置保持一致。

Verilog 模組和埠

模組定義以關鍵字module開始,模組名 埠列表 埠宣告和可選的引數宣告必須出現在其他部分的前面,endmodule語句必須為模組的最後一條語句。模組內部的5個組成部分是 變數宣告 資料流語句 低層模組例項 行為語句塊以及任何和函式。在模組的組成部分中,只有module 模組名 endmodule必...

verilog讀書筆記 4 模組和埠

模組定義以關鍵字module開始,模組名 埠列表 埠宣告和可選的引數宣告必須出現在其他部分的前面,endmodule語句必須為模組的最後一條語句。模組內部的5個組成部分是 變數宣告 資料流語句 低層模組例項 行為語句塊以及任何和函式。在模組的組成部分中,只有module 模組名 endmodule必...

verilog基礎 模組埠 使用方法總結

模組的定義以關鍵字module開始,模組名 埠列表 埠宣告和可選的引數宣告必須出現在其他部分的前面,endmodule語句必須為模組的最後一條語句。埠是模組與外部環境互動的通道,只有在模組有埠的情況下才需要有埠列表和埠宣告。模組內部的5個組成部分是 變數宣告 資料流語句 低層模組例項 行為語句塊以及...