FPGA 語法架構與基本概述

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) – 硬體語言的基礎 (作者:陳鍾誠)

VerilogHDL 教學講義