FPGA - VerilogHDL 語法架構
基本定義
- Verilog 最重要的部分,負責描述模組的電路架構與功能
- 主要有四種層次的描述:(高階→低階 )
- 行為層次(Behavior Level) // allways @(*) begin Out2 = In1 & In2; end
- 資料流層次(Dataflow Level) // assign Out1 = In1 & In2;
- 邏輯閘層次(Gate Level) // and and1( Out1, In1, In2 );
- 電晶體層次(Switch Level)
- 行為層次與資料流層次合稱"暫存器轉換層次 RTL(Register Transfer Level )"
- 通常在撰 寫Verilog 時,只會接觸行為、資料流、邏輯閘層次而已
1. 結構模式 (Structural Modeling) : 描述網路連線 (netlist) 的方式,元件和元件之間如何連接起來。
- 模組 (Model):透過輸出入 (I/O) 與其他模組連接起來,模組內可以包含元件 (instance)、子模組、訊號 (signal) 等。
- 模組是靜態 (static) 且平行執行 (concurrent) 的單位。
2. 行為模式 (Behavioral Modeling) : 有順序關係 (sequencing),更加彈性,同時可用來寫電路與測試程式 (testbench)。
- 平行:Initial , Always — 事件驅動模式 (Concurrent, event-triggered processes)
- 控制:Assignment, if else, case — 進行順序控制,可加上延遲一段時間 #time 的概念。
(筆記) Verilog module建議的coding style (SOC) (Verilog)
module 模組名稱
parameter宣告
port宣告
wire,reg宣告
initial begin // 初始化設定區塊
end
assign資料處理層級之描述
引用較低階模組別名
always行為層級之描述區塊 begin
// 資料處理與指定等描述
// task與function的使用
end
function與task的宣告
endmodule
(原創) Verilog testbench建議的coding style (SOC) (Verilog)
module 模組名稱;
將input宣告為reg
將output宣告為wire
引用欲測試的module別名
initial begin
//設定reg初始值
end
always處理變化值
endmodule
參考資料:
Verilog (2) – 硬體語言的基礎 (作者:陳鍾誠)