Verilog HDL 訊號命名參考
Verilog HDL 訊號命名參考
前言
在數位電路設計中,良好的訊號命名原則與 coding style 同等重要。特別是在大型設計專案中,清晰的命名方式不僅能讓代碼更容易維護,也能幫助團隊成員快速理解訊號特性並進行除錯。本文將介紹常用的 Verilog HDL 訊號命名規則。
專案架構
1. FPGA 外部輸入輸出命名
FPGA 的外部接口(top module)使用全大寫字母,並用底線區分單字:
input CLOCK_50 // 50MHz 系統時脈
output LED_STATUS // LED 狀態輸出
input KEY_N // 按鍵輸入(低態動作)
2. 模組內部訊號命名
2.1 子模組輸入輸出命名
-
輸入訊號:前綴
i
(除系統時脈及重置輸入外)input clk // 系統時脈輸入 input nRst // 重置輸入(低態動作) input [7:0] iData // 資料輸入
-
輸出訊號:前綴
o
output oValid // 有效訊號輸出 output [15:0] oResult // 結果輸出
2.2 訊號類型標示
-
暫存器類型:前綴
r
reg rState // 狀態暫存器 reg [7:0] rCounter // 計數器暫存器
-
線網類型:前綴
w
wire wReady // 就緒訊號 wire [15:0] wSum // 總和訊號
2.3 向量類型訊號
-
輸入向量:前綴
iv
input [7:0] ivData // 8位元資料輸入
-
輸出向量:前綴
ov
output [15:0] ovResult // 16位元結果輸出
-
暫存器向量:前綴
rv
reg [31:0] rvBuffer // 32位元緩衝暫存器
-
線網向量:前綴
wv
wire [7:0] wvSum // 8位元總和線網
2.4 特殊訊號標示
- D 觸發器相關:
reg rData_d // D 觸發器輸入端 reg rData_q // D 觸發器輸出端
實際應用範例
訊號邊緣檢測器
module tick_gen (
input clk, // 系統時脈
input nRst, // 重置訊號(低態動作)
input iSignal, // 輸入訊號
output oSignalTick // 訊號上升邊緣脈衝
);
reg [1:0] rvSignal_d, rvSignal_q; // 訊號延遲鏈
// 同步時序邏輯
always @(posedge clk or negedge nRst) begin
if(!nRst)
rvSignal_q <= 2'h0;
else
rvSignal_q <= rvSignal_d;
end
// 組合邏輯
always @(*) begin
rvSignal_d = {rvSignal_q[0], iSignal};
end
// 檢測上升邊緣(01序列)
assign oSignalTick = (rvSignal_q == 2'b01) ? 1'b1 : 1'b0;
endmodule
這個範例展示了:
- 系統訊號(clk, nRst)不加前綴
- 一般輸入加
i
前綴 - 一般輸出加
o
前綴 - 向量型暫存器加
rv
前綴 - D 觸發器相關訊號加
_d
和_q
後綴
命名規範建議
1. 一致性原則
- 在同一專案中保持命名風格一致
- 遵循團隊既定的命名規範
2. 清晰性原則
- 選擇具描述性的名稱
- 避免過於簡略或難以理解的縮寫
結語
良好的訊號命名規範不僅能提高代碼的可讀性,也能減少開發過程中的錯誤。在實際專案中,建議團隊成員共同制定並遵循統一的命名規範,以提高開發效率和代碼品質。