FPGA等效門數的計算方法有兩種: 1. 把 FPGA基本單元,(如 LUT+FF,ESB/BRAM)和實現相同功能的標準門陣列比較,門陣列中包含的門數即為該 FPGA 基本單元的等效門數, 然后乘以基本單元和數目就可以得到 FPGA門數估計值; 2. 分別用 FPGA和標準門陣列實現相同的功能,從中統計出 FPGA的等效門數,這種方法比較多的依賴于經驗數據。 對于第一種方法,FPGA 包括 LUT/FF/RAM 等資源,分析各種資源等效門數時,總原則是等效原則,就是實現相同的功能,在標準門陣列中需要的門數就是 FPGA該資源等效門數,例如實現一個帶寄存器輸出的 4 輸入 XOR,在 FPGA中需要用一個 LUT和 1 個 FF實現,在標準門陣列中一般要用21 個與非門實現,于是 1 個 LUT+1 個 FF 等效于 21 個門。對 ESB(BRAM),由于用標準門陣列實現 1bit 的 RAM 時一般需要4 個門,因此 ESB/BARM 做 RAM 使用時,1bit 等效 4 個門,對 Altera FPGA 中一個 2048bit的 ESB,等效門數為 8K。光靠這些數據還不能比較準確地計算出 FPGA 的等效門數。因為這只是一種簡單情況,實際情況要復雜很多。例如,如果實現的是帶寄存器輸出地 2 輸入 XOR,FPGA 也要用 1 個 LUT+FF,而標準門陣列只需要 8 個NAND,于是 1 個 LUT+1 個 FF 只等效于 8 個門。同時特定功能的實現,在不同的標準門陣列系列中需要的門數也不一樣,因此等效門的計算只能是個大概的數值。 也就是說對于某一具體型號 FPGA 的門數估計,與 FPGA 資源的用途有密切關系。LUT 用于實現 2 輸入 XOR和 4 輸入 XOR 等效門數不一樣(分別為 1 和 13);FF 不帶異步清零、復位、時鐘使能和帶這些端口的等效門數不同(分別為 8 和 13);ESB(BRAM)做 RAM 使用時,1bit 等效 4 個門,1 個2048bit 的 BRAM 等效 8K門,但是做查找表使用時可能只相當于不到 200 門。因此估計 FPGA 的等效門數需要做更細致的分析。 圖1 顯示了 EP20K 系列的等效門數等參數 下面以 EP20K1000E為例詳細說明 FPGA等效門數的估計方法。 1.計算邏輯陣列的等效門數 估算 EP20K1000E 的門數時,把 FPGA 特定資源和 LCA300K 標準邏輯陣列的門數(LSI LCA300K Data Book)比較,可以對 FPGA 等效門做出估計。FPGA一個 LUT+FF等效門數計算如圖 2 所示 即 LUT+FF等效于 8~21 個門,上限和下限分別由實現簡單函數、復雜函數分別界定。 APEX20K 的等效門數也可以根據經驗數據獲得,把超過 100 個針對 4 輸入 LUT 的設計用FPGA實現,同時用 LCA300K gate arrays 和Design Compiler 實現,比較相同的設計 FPGA 所用的 LE數目和 LCA300K所用的門數可知,每個 LE相當于 12 個門。EP20K1000E有 38400個 LE,于是相當于 46 萬門。 2.計算 ESB的等效門數 RAM 中一個 bit 所需要的門數與RAM 的體系結構、工藝、廠商等有關,一般而言 1bit相當于 4 個門,Altera也采用這個標準,這樣可以方便地估計 ESB 等效門數。 計算 ESB 等效門數也可以采用和 LSI LCA300K比較的方法,即通過與實現相同容量 RAM 在LCA300K 所用的門數相比較,從而得到 ESB 的每一 bit 相當于多少門,從而計算出 ESB 的等效門數,參考圖 3。 從上表可見,4gates/bit 是一個比較合適的估計,于是 EP20K1000E的 ESB 等效門數為 160 ESBs X 2,048 bits per ESB X 4 gates per bit = 1,310,720 gates,即約為130 萬門。 總而言之,對 EP20K1000E,LUT+FF 等效門數約為 46 萬(經驗數值),ESB 全用作 RAM 時等效門數約為 130 萬,所以最大系統門數為 170 萬。 結論: FPGA等效門數估計方法可以是把 FPGA資源基本單元(如 LUT+FF,ESB)和實現相同功能的標準門陣列相比得到FPGA基本單元等效的門數, 然后乘以單元的個數得到整個FPGA等效門數。也可以是實 現很多設計,和用標準門陣列相比,從中統計出等效門數。 FPGA的等效門數估計一般分為LUT+FF和ESB(BRAM)兩部分,LUT+FF 等效于 8~21 個門,典型值為 12;ESB做 RAM使用時,一般相當于4 門/bit,此時估計出的門數最多,如果 ESB 做乘積項/LUT 則等效門數大大減小,例如對EP20K1000E,前者為130 萬,后者為2萬。 |