Verilog中的端口類型
共分為 input、output、和 inout 三種類型,所有的端口在聲明時默認為 wire 型。
Verilog中的變量類型
reg :本質是存儲器,具有寄存功能;
net :本質是一條沒有邏輯的連線(wire);
Verilog的端口連接規則
端口連接規則分為模塊描述時和模塊調用時兩種情況。
1、模塊描述時
模塊描述時在模塊內部對模塊的端口進行描述,是從內部角度出發,因此將 input 端口看作外界引申進來的一條線,只能為 net 型變量;同理 inout 端口作為有輸入功能的端口,也應該看作 net 型變量。而 output 端口被看作模塊的輸出,既可以直接輸出(如組合邏輯),也可以寄存后輸出(如時序邏輯),因此 output 端口應該設為 reg 型變量。
2、模塊調用時
模塊被調用時是在上級模塊中對下級模塊的例化,描述了其采用何種信號與芯片(即底層模塊)連接,進行驅動或得到輸出。此時是從外部角度出發,上級模塊對下級模塊的輸入既可以想輸入什么就輸入什么,也可以想什么時候輸入就什么時候輸入,所以 input 端口可以為 net/reg 型變量。而 output 端口是上級模塊對下級模塊的被動接收,是下級模塊的一根輸出導線,因此 output 端口只能是 net 型變量;同理 inout 端口也只能是 net 型變量。
綜上所述
模塊描述時,input 端口只能為 net,output 端口可以為 net/reg,inout 端口只能為 net;
模塊調用時,連接模塊input端口的信號可以為 net/reg 型,連接模塊 output 端口的信號只能為 net,連接模塊 inout 端口的信號也只能為 net;