在許多嵌入式系統的實際應用中,需要擴展FP-GA(現場可編程門陣列)模塊,將CPU實現有困難或實現效率低的部分用FPGA實現,如數字信號處理、硬件數字濾波器、各種算法等,或者利用FPGA來擴展I/O接口,如實現多路PWM(脈寬調制)輸出、實現PCI接口擴展等。通過合理的系統軟硬件功能劃分,結合優秀高效的FPGA設計,整個嵌入式系統的效率和功能可以得到最大限度的提高。 在電機控制等許多應用場合,需要產生多路頻率和脈沖寬度可調的PWM波形。本文用Altera公司FPGA產品開發工具QuartusⅡ,設計了6路PWM輸出接口,并下載到FPGA,實現與CPU的協同工作。 1 FPGA概述 PLD(可編程邏輯器件)可分為SPLD(簡單可編程邏輯器件),CPLD(復雜可編程邏輯器件)和FPGA,其實它們只是在起初有一些差別,現在的區別已經比較模糊了,PLD可統稱為FPGA。目前世界上有十幾家生產CPLD/FPGA的公司,知名度較大的有Altera,Xil-inx,Lattice,Actel等,其中Altera和Xilinx占有了60%以上的市場份額。 Altera公司是最大PLD供應商之一,20世紀90年代以后發展很快。主要產品有:MAX3000/7000、FLEX10K、APEX20K、ACEX1K、StratiX、Cyclone等。開發軟件為MaxplusⅡ和QuartusⅡ。普遍認為其開發工具MaxplusⅡ和QuartusⅡ是最成功的FPGA開發平臺之一,配合使用Altera公司提供的免費OEM HDL綜合工具可以達到較高的效率。 對于系統設計人員來說,FPGA是一種可以自己編程的芯片。它從芯片制造廠商那里出來時是內部沒有連線的。用戶可以進行設計輸人(電路圖輸入、狀態機輸入或者HDL輸入);然后進行仿真和驗證;接著用一些專用軟件(如Synopsys FPGA-Compiler、Synplici-ty Synplify、Examplar Leonardo等)進行邏輯綜合;最后使用各個FPGA廠商自身的后端實現的軟件(如Al-tera Quartus、Xilinx ISE等)進行布局布線,生成一個配置所需設計的電路連線關系的二進制流文件,通過一根連接PC機和FPGA芯片的下載線,將配置文件下載到芯片中。 本文以使用QuartusⅡ軟件設計PWM為例,介紹FPGA設計的流程,它包括設計輸入、約束輸入、邏輯綜合、邏輯驗證(綜合后仿真)、布局布線(器件實現)和器件驗證(版圖后仿真)等幾部分。 2 多路PWM的設計實現 PWM技術最初是在無線電技術中用于信號的調制,后來在電機調速中得到了很好的應用。在直流伺服控制系統中,通過專用集成芯片或中小規模數字集成電路構成的傳統PWM控制電路往往存在電路設計復雜、體積大、抗干擾能力差以及設計困難、設計周期長等缺點,因此PWM控制電路的模塊化、集成化已成為發展趨勢。它不僅可以使系統體積減小、重量減輕且功耗降低,同時可使系統的可靠性大大提高。隨著電子技術的發展,特別是ASIC(專用集成電路)設計技術的日趨完善,數字化的EDA(電子設計自動化)工具給電子設計帶來了巨大變革,在電機控制等許多應用場合,需要產生多路頻率和脈沖寬度可調的PWM波形,這可通過FPGA豐富的硬件資源和可以配置I/O引腳來實現。嵌入式系統中FPGA的應用設計關鍵是系統軟硬件功能的劃分。 圖1是實現的3路PWM硬件結構框圖。CPU通過數據線向FPGA寫入定時常數控制PWM的頻率、初始相位和占空比,并通過外部啟動信號控制PWM的啟動。 根據圖1,寫出實現相應功能的Verilog程序描述。部分源程序如下: 圖2顯示了QuartusⅡ中新建一個項目/文件時可選的設計輸入(在Software Files和Other Files標簽中還要其他設計輸入方法選擇),該窗口從菜單"File"→"New"打開,圖中顯示了"Device Design files"標簽下的設計輸入方法有AHDL(Altera 公司開發的HDL語言)、方塊圖/原理圖、EDIF、Verilog和VHDL輸入方法。另外在"Software Files''和"Other Files"標簽下還有TCL語言、波形圖等其他輸入方法。 行為級仿真是在HDL源代碼設計完成之后,通過設計測試平臺文件(激勵和測試矢量)來驗證設計的正確性。邏輯仿真是在邏輯綜合之后,對生成的門級網表進行驗證。測試平臺文件與采用行為級仿真的測試平臺文件,這樣能夠保證設計驗證的一致性。并且,邏輯驗證是一種理想的門級網表,不存在延時信息。器件驗證也稱版圖后仿真,它是在FPGA實現之后,提取出門級網表和延時信息進行驗證,測試平臺文件與行為級一樣。器件驗證結果是比較接近真實硬件的結果。完全通過這3層的驗證,基本上可以保證設計的結果與測試平臺文件一致。 行為仿真和器件仿真也可直接在QuartusⅡ中進行,其中輸入激勵波形和輸出觀察節點在QuartusⅡ波形輸入窗口進行設置,在設計通過功能仿真后,需要進一步選擇器件仿真以驗證設計的正確性。器件仿真時包含了所選擇的對應FPGA估算延時或實際延時信息,故仿真速度較功能仿真慢很多。通過仿真可以及早發現設計中的錯誤,并根據具體情況進行修改,包括修改硬件實現架構、設計代碼、約束條件等一個或多個方面。器件仿真通過后,則可以將設計下載到芯片,進行硬件功能驗證。 圖3是對應PWM的功能仿真結果波形。從圖3中可以看出,在564 ps時刻CPU向PWM寫入新的控制常數后,下一個周期的PWM輸出占空比立刻發生了相應改變。 圖4是相應設計在QuartusⅡ下編譯通過后進行器件仿真的波形,由圖4可見,其時序功能正確。通過器件下載編程方法下載到相應的FPGA,就可以結合整個嵌入式系統進行硬件調試。 4 結束語 在FPGA開發軟件中完成設計以后,軟件會產生一個最終的編程文件,QuartusⅡ中是.pof或.sof。現在的FPGA基本都采用在系統編程方式,對于EEP-ROM/Flask/SRAM工藝的在系統可編程FPGA,廠家提供編程電纜,如Altera公司提供的下載電纜類型有ByteBlasterⅡ并口下載電纜、USB BlasterTMUSB口下載電纜、MasterBlaster 通信纜線(USB或RS-232端口)等,其配置方式可以有主動/被動串行配置方式、JTAG方式等。電纜一端裝在計算機的相應接口上,另一端接至PCB(印制電路板)上的編程插頭,它向系統板上的器件提供配置或編程數據,這就是所謂的ISP(在線系統編程)。 在電機控制等許多應用場合,需要產生多路頻率和脈沖寬度可調的PWM波形,本文通過使用Altera公司FPGA產品開發工具QuartusⅡ,設計了6路PWM輸出接口,并下載到FPGA,實現與CPU的協同工作。在嵌入式系統中通過FPGA擴展系統功能的設計是一種有效的方法。 |