• 沒有找到結果。

System Generator 2.3.1

傳統的 FPGA 開發流程需要編寫大量的程式碼(Verilog 或 VHDL),然後將程 式碼轉換成具體的硬體來實現功能,工作量大。但 FPGA 晶片的資源是有限的,

要想設計出高速、可靠、且佔用較少資源的系統,就必須要求開發人員對具體的 FPGA 晶片有一定的了解。雖然可以通過 Core Generator 使用現成的 IP 來提高性能 並且降低開發難度,但在做系統設計時並不一定能獲得滿足功能要求的 IP,同時 系統工程師難以面面俱到,這部份的工作通常需要專業的硬體工程師來完成。

System Generator[13]-[15]的出現旨在打破這樣的局面,在 MATLAB/Simulink 上搭 建能否 Xilinx FPGA 設計軟體 ISE 溝通的平台(如圖 2.3.1),讓對硬體不甚了解的 系統工程師也可以進行 FPGA 的設計開發。

圖 2.3.1 System Generator 的作用

15

System Generator 有以下的優點及特性 :

 模組的參數化和設計的圖形化使得修改設計變得很方便,明確將控制流與數 據流分開,使得設計結構清晰。

 設計方法多樣性;除了可以使用 System Generator 內建的功能模組設計系統外

,System Generator 也可以導入硬體描述語言、MATLAB 等編寫的程式代碼,

包覆成模組共同作為設計的一部份。

提供方便的模擬/驗證平台;由於 System Generator 是建構在 Simulink 平台上,

所以很容易的能夠透過 MATLAB/Simulink 導入驗證資料,並觀察輸出結果以驗證 系統功能性;System Generator 亦支援 ChipScope 和硬體協同模擬,可以實時的將 FPGA 內的信號變化回覆給開發人員。

圖 2.3.2 System Generator 設計實例示意圖[13]

16

使用 System Generator 進行 FPGA 的設計流程如圖 2.3.3。首先使用 System Generator 進行系統設計,產生副檔名為 mdl 的 Simulink 檔案;再來利用 System Generator 自動產生在 ISE 進一步處理的 RTL(Register Transfer Level)和 IP 程式碼,

同時產生在模擬時需要的 testbench 測試檔案;最後在模擬程式(ISE XST 或 ModelSim)驗證系統是否滿足設計需求後,就算是完成整個設計流程了;由上述流 程可以得知,使用 System Generator 去開發系統並沒有增加設計程序,幾乎和傳統 的設計流程相同。

圖 2.3.3 System Generator 的 FPGA 開發流程[13]

17

Xilinx ISE 2.3.2

ISE 是使用 Xilinx 公司的 FPGA 作為設計平台之開發人員必需熟練的一套軟體 [16]。ISE 主要的功能包括設計輸入、合成(Synthesize)、模擬(Simulation)、實現 (Implement)和下載,涵蓋了 FPGA 一般開發的所有流程(圖 2.3.4)。從功能上來看,

其工作流程無需借助任何第三方軟體的支援。

圖 2.3.4 軟體 ISE 開發流程

18

以下針對幾個比較重要的步驟簡述 :

 模 擬 : 一 般 而 言 , 在 電 路 設 計 的 模 擬 上 可 分 為 Pre-Simulation 跟 Post-Simulation。Pre-Simulation 是針對電路的 function 做模擬,此時只在意由 HDL 所撰寫的程式之功能是否正確,而 Post-Simulation 則是針對合成過且做 完 APR(Auto Place and Route)的電路做模擬,以確保所設計的電路實現在 FPGA 上時,與 Pre-Simulation 的功能一樣。ISE 本身內建一個具有圖形化波 形編輯功能的模擬工具 HDL Bencher,同時提供使用 Mentor Graphic 公司的 ModelSim。

 合成 : 合成工具的功用是將 HDL 轉換成由電路所組成的 Netlist,Netlist 為一 種描述邏輯電路的檔案格式。ISE 的合成工具不但包含 Xilinx 自己提供的 XST,

還可以內嵌 Mentor Graphic 公司的 LeonardoSpectrum 和 Synplicity 公司的 Synplify。

19

1. 選用硬體元件;包括微處理器(Power PC、MicroBlaze)、記憶體、輸出與輸入 週邊等,並且依照它們之間的關係連結成一個完整的硬體架構。

2. 以 C 語言外加一些 I/O 週邊控制指令編寫控制程式,並利用翻譯器將程式碼 翻譯成所使用處理器相對應的機器語言,再載入至適當的記憶體中執行。

Xilinx 公 司 為 了 幫 助 開 發 人 員 完 成 上 述 流 程 , 提 供 了 嵌 入 式 開 發 軟 體 EDK(Embedded Development Kit)[17],它以友善的使用者圖形界面,導引開發人員 簡單地整合系統設計、偵錯、模擬等繁瑣流程。為了完成這些工作,在硬體方面,

EDK 建立了不同的處理器、記憶體、週邊等硬體元件,同時提供各種控制匯流排 將這些元件連結在一起;在軟體方面,EDK 提供驅動程式、程式庫(Library)、翻 譯器(Compiler)、偵錯工具、作業系統等應用程式,配合硬體以完成一個完整的嵌 入式系統。

如上所述,一個完整的 FPGA 嵌入式系統設計,必須完成硬體與軟體兩個部 份的工作,而這些工作都可以在 EDK提供的 EST(Embedded Software Tool)內完成,

其流程如圖 2.3.5 所示。

20

圖 2.3.5 EDK 設計流程

概要的說明,圖 2.3.5 左方為 EDK 處理硬體的流程,右方為處理控制軟體的 流程,中間為最後將硬體與軟體整合起來,把設計載入至 FPGA 內。上述流程在 EST 內的 XPS(Xilinx Platform Software)平台上,藉由系統建立精靈 BSB(Base System Builder Wizard)的引導,可以去選擇硬體元件以搭建欲開發的硬體架構,再 由開發人員完成硬體元件之間的連結關係等工作後,此時系統的完成度已經很高 了。再來利用 SDK(Software Development Kit)處理軟體的部份,主要是將開發人員 的控制程式進行編譯、組譯、連結工作,以便產生可執行檔。最後將控制程式的 執行檔載入至硬體控制電路對應的記憶體內,並產生 FPGA 需要的 bitstream 檔,

下載至 FPGA 晶片內就大功告成了。

21

PlanAhead 是 Xilinx 提供的一種圖形化的 FPGA 設計工具[18],它可以被應用 於 FPGA 開發過程中的不同階段,常见的應用包括用 PlanAhead 進行 RTL 源代碼 的開發、I/O 接腳規劃、RTL 的 Netlist 分析、布局與繞線结果的分析、布局規劃等。

PlanAhead 還可以將 Chipscope 加入設計以輔助測試,進而提高性能。PlanAhead 也可以做各種實現屬性(Implement Property)的不同設置,利用不同的時序约束 (Timing Constraints)、實體约束(Physical Constraints)和布局規劃來提高設計性能。

另外還可以將 ISE 的布局與繞線结果導入 PlanAhead 進行分析,定位關键路徑,找 到影響設計性能的真正原因。PlanAhead 已經被整合進 ISE 11.X 套件以後的版本,

包括合成前/後的接腳規劃(I/O pin planning Post/Pre-Synthesis)、合成後面積/接腳/

邏輯規劃(Floorplan Area/IO/Logic Post-Synthesis)和實現後时序分析/設計規劃 (Analyze Timing/Floorplan Design Post-Implementation)。它替代了以前常用的 PACE 和 Floorplanner 工具。

22

配置介面

相關文件