FPGA設計流程
FPGA設計流程包括以下關鍵步驟,如圖9.8所示。
1. 設計輸入
2. 設計仿真與綜合
3.設計實現
4.設備編程。
圖9.8 FPGA設計流程
設計輸入
在設計進入之前,需要根據設計規范進行設計規劃。設計規范需要轉換為體系結構和微體系結構。設計架構和微架構包括將總體設計分解為小模塊,以實現預期功能。在架構設計階段,需要估計內存、速度和功率的需求。根據需要,需要為實現選擇FPGA設備。
使用Verilog(.v)或VHDL(.vhd)文件完成設計輸入。設計輸入后,需要對設計進行仿真,以確保設計的功能正確性。這稱為功能仿真。
設計仿真與綜合
在功能仿真期間,將輸入集應用于設計,以檢查設計的功能正確性。盡管在后期的設計周期中可能會出現時間或面積、電源問題,但設計師至少對設計的功能有把握。
硬件設計工程師的主要目標是生成高效的硬件。綜合是將設計抽象的一個層次轉換為另一個層次的過程。在邏輯綜合中,HDL被轉換成網絡表。網絡列表獨立于設備,可以采用標準格式,如電子設計互換格式(EDIF)。
設計實施
該設計經歷了translate, map and place and route等步驟。在設計實現過程中,EDA工具將設計轉換為所需格式,并根據所需區域將其映射到FPGA。EDA工具通過使用實際邏輯單元或宏單元來執行映射。在映射過程中,EDA工具使用宏單元、可編程互連和IO塊。專用模塊,如乘法器、DSP和BRAM,也使用供應商工具進行映射。這些塊被放置在FPGA內部的預定義幾何體上,并通過使用可編程互連來實現預期功能。這一步稱為布局和布線。
為了檢查設計計時性能以及是否滿足約束,將執行時序分析,該分析稱為布局后STA。在STA期間,使用與可編程互連相關聯的延遲來檢查時序路徑。提取RC延遲并將其用于時序分析也稱為反向注釋。
設備編程
FPGA通過使用特定于供應商或專有的位流文件進行編程。位流是需要加載到FPGA中以執行特定硬件設計的二進制數據文件。
如果設計針對特定的FPGA,則EDA工具將生成設備利用率摘要。
用FPGA實現邏輯
現代FPGA的體系結構包括CLB陣列、塊RAM、乘法器、DSP、IOB和數字時鐘管理器(DCM)。延遲鎖定環(DLL)用于賦值具有均勻時鐘偏移的時鐘。XILINX SPARTAN系列FPGA的平面圖如下圖所示。
可配置邏輯塊
如下圖所示,基本CLB由LUT、觸發器和多路復用器邏輯組成。配置數據保存在鎖存器中。CLB體系結構取決于供應商,由多個LUT、觸發器、多路復用器和鎖存器組成。下面的Verilog代碼是使用單個四輸入LUT實現的,稱為組合邏輯。
圖9.9 Xilinx基本CLB結構
下面的Verilog功能塊在實現過程中使用單LUT和單寄存器,因此該邏輯稱為時序邏輯。
圖9.9所示的CLB也用于實現16位移位寄存器。LUT可以級聯以設計較長尺寸的移位寄存器,也可以用于設計的流水線。
輸入-輸出塊(IOB)
輸入-輸出塊用于建立邏輯與外部世界的接口,由具有三態控制機制的寄存器和緩沖器的數量組成。該塊可用于寄存器輸入和寄存器輸出。
圖9.10 Xilinx基本IO塊
現代FPGA的IOB結構非常復雜,可以包含許多IO控制支持,其中可能包括DDR、專用高速接口。基本IO塊結構如圖9.10所示。
Block RAM
XILINX Spartan-7系列支持可配置18 kbit塊的形式組織的200 MHz塊RAM。每個塊RAM包含18432位,其中16kbit賦值用于數據存儲,其余2kbit賦值用于奇偶校驗。塊RAM可用作單端口存儲器或雙端口存儲器,并具有獨立的端口訪問。每個端口與獨立時鐘、時鐘啟用和寫啟用同步。讀取操作本質上也是同步的,需要啟用時鐘。塊RAM的應用是存儲數據、FIFO設計、緩沖區和堆棧,甚至是在設計復雜的狀態機時。單端口RAM如圖9.11所示。
圖9.11 Xilinx單端口Block RAM
數字時鐘管理器(DCM)
Xilinx設備系列使用延遲鎖定環(DLL),Altera使用鎖相環(PLL)作為時鐘管理器。DCM、DLL的作用是提供對相移、時鐘偏移和時鐘頻率的完全控制。DCM、DLL支持以下功能。
相移?時鐘偏移消除
頻率綜合。
DCM由可變延遲線和時鐘賦值網絡組成,基本框圖如圖9.12所示。
圖9.12 Xilinx基本DLL塊
乘法器
所有Spartan7 FPGA都有兩個18位輸入,并生成36位輸出。乘法器為嵌入式塊,每個設備有4~104個嵌入式乘法器塊。嵌入式乘法器的主要優點是,與基于CLB的乘法器相比,它需要更少的功耗。它們用于以最小的通用資源實現快速算術函數。可以使用路由資源級聯乘法器,下圖顯示了配置為22位乘以16位的乘法器,以生成38位輸出的乘法器可用于有符號或無符號數字乘法。乘法器廣泛應用于DSP應用中?;緣K如圖9.13所示。
圖9.13 Xilinx基本乘法器塊
FPGA中仿真概念
Verilog復雜邏輯設計指南-奇偶校驗生成器和校驗器及筒式移位器
Verilog時序電路設計指南
Verilog時序邏輯硬件建模設計(五)異步計數器&總結
Verilog時序邏輯硬件建模設計(四)移位寄存器
Verilog時序邏輯硬件建模設計(三)同步計數器
Verilog時序邏輯硬件建模設計(二)同步和異步復位
Verilog時序邏輯硬件建模設計(一)鎖存器D-latch和觸發器Flip-Flop
Verilog組合邏輯設計指南
組合邏輯硬件建模設計(二)算術電路
Verilog 里面,always,assign和always@(*)區別
組合邏輯硬件建模設計(一)邏輯門
數字硬件建模-重新從另一方面理解Verilog(二)
數字硬件建模-從另一方面理解Verilog(一)
數字硬件建模綜述
審核編輯 :李倩
-
FPGA
+關注
關注
1626文章
21678瀏覽量
602040 -
仿真
+關注
關注
50文章
4048瀏覽量
133431
原文標題:FPGA設計流程
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論