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