劉光文,李淯陽,成 亮(重慶金美通信有限責任公司,重慶 400030)
?
CPLD加Flash在線升級及配置FPGA
劉光文,李淯陽,成 亮
(重慶金美通信有限責任公司,重慶400030)
摘 要:基于Xilinx公司的Vertext4 FPGA嵌入式系統采用Flash作為BootLoader以及操作系統目標文件的存儲介質。如果將FPGA的目標文件通過以太網接口發送給處理器,處理器接收到FPGA的目標文件后將其存儲到Flash的空閑空間,然后利用CPLD模擬產生配置時序,將Flash中的FPGA目標文件按相應的時序送給FPGA配置管腳,即可實現FPGA的上電配置。其優勢在于省去了專用的配置PROM,并且能夠完美地支持FPGA目標文件在線升級。實踐證明,該方法具有很強的通用性,在嵌入式系統中具有很強的實用價值。
關鍵詞:嵌入式;系統;配置;處理器;目標文件;在線升級
基于FPGA的嵌入式系統技術已經得到了廣泛、深入的應用,包括工業控制領域、網絡應用、消費類電子產品、成像和安全產品等領域。
目前大規模FPGA均通過把設計生成的目標文件配置到芯片內部的SRAM完成其邏輯功能,具有可重復編程性,可靈活實現各種邏輯功能,FPGA的這種特性使其在現代電子系統設計中得到了廣泛應用。但基于SRAM工藝的FPGA是易失性的,系統掉電后SRAM內的數據將全部丟失,需要外接ROM保存其配置數據,系統每次上電時必須重新配置數據才能正常工作。通常設計時采用兩種方案保存FPGA的目標文件,一是使用專用的PROM,如Xilinx公司的XCFxx系列PROM來提供FPGA的配置時序[1],上電時自動加載PROM中的目標文件到FPGA的SRAM中;另一種是在含有微控制器的嵌入式系統中,采用其他非易失性存儲器來存儲目標文件,如EEPROM、Flash等,使用CPLD模擬FPGA的配置時序將ROM中的目標文件置入FPGA中。與前面一種方案相比,后者成本更低,并且可完美支持在線升級。
2.1主串配置原理
Xilinx公司的Vertext4系列FPGA采用90nm工藝的,該芯片具有高性能、低功耗、可無限次編程等特點,并且內部嵌入了IBM公司的高性能PPC405 (Power PC)硬核處理器[2],可完美支持Vxworks操作系統[3]。芯片支持從串、主串、從并、主并、JTAG等方式進行配置[4],與主串配置相關的引腳功能及配置如下:
(1)M[2:0]:配置模式選擇。M2,M1,M0均接下拉電阻,即M[2:0]=000時為主串模式。
(2)CCLK:配置時鐘,由被配置FPGA提供時鐘信號,上升沿有效。
(3)DIN:串行數據輸入位。
(4)PROG_B:低電平異步復位FPGA內部邏輯位。內部配置邏輯復位后,等該引腳為高電平時才能配置FPGA。
(5)INIT_B:由低電平到高電平跳變時,采樣配置模式選擇管腳M[2:0],確定配置模式;配置過程中若出現配置錯誤,INIT_B將呈現低電平。
(6)DONE:復位及配置過程中為低電平,配置成功后為高電平。
2.2配置時序的捕獲及確認
Xilinx公司的目標編程文件有“.bit”、“.bin”、“.mcs”等格式,其中.bit格式用作JTAG下載,其他2種格式用作專用PROM編程。系統產生配置文件時首先需生成專用PROM編程文件“.bin”文件,然后將該文件存儲到FLASH或PROM中。
使用十六進制編輯程序例如“UltraEdit”將“.bin”文件打開查看其內容,可以發現其頭部是以0xFFFFFFFF和0xAA995566開始,如圖1所示。

圖1 查看FPGA配置文件內容
為了確認主串配置時是高位先發還是低位先發,通過示波器捕獲配置時序,對比配置文件內容,可以確認使用的是高位先發順序。如圖2所示。

圖2 串行數據為高位先發順序
2.3在線升級原理
設計首先需要在嵌入式系統的軟件程序中加入FTP服務器功能,對于使用VxWorks操作系統的嵌入式系統來說只需勾選相應的FTP服務器組件即可實現。然后使用計算機登入嵌入式系統的FTP服務器,將FPGA的目標文件按特定名稱上傳到FTP服務器。FTP服務器在檢測到特定名稱的文件后會通知處理器處理該文件,處理器隨即開始讀取該文件并將文件寫入到Flash中指定的區域,寫入后刪除該文件,結束本次升級,為下一次在線升級做好準備[5]。
3.1硬件框圖
硬件上總體分為3個部分:Flash芯片、CPLD芯片及FPGA主芯片。Flash采用的是2片Intel公司的16位寬、16Mbyte容量的TE28F128J3C芯片[6],共同組成32位寬、32Mbyte容量的存儲器;CPLD采用Xilinx公司的XC95144芯片[7];FPGA使用了Xilinx公司的XC4VFX60芯片。具體硬件框圖如圖3所示。

圖3 硬件整體框圖
3.2CPLD實現流程
CPLD配置FPGA的邏輯流程如下:
(1)系統上電后,CPLD將PROG_B置為低電平,復位FPGA內部邏輯重新配置FPGA,延時100μs充分復位內部邏輯后,再將PROG_B置為高電平。
(2)將PROG_B置高電平大于300ns后,FPGA會將INIT_B置為高電平,CPLD采樣到INIT_B變為高電平后,CPLD根據FPGA送來的配置時鐘CCLK的上升沿串行地將配置數據送給FPGA,在CCLK的每個上升沿,都有1個Bit的數據被傳遞給DIN。
(3)32個CCLK時鐘后,CPLD將Flash地址加1,然后將Flash數據線上的數據采樣加載到內部移位寄存器;然后再使用32個CCLK時鐘周期將移位寄存器內的數據串行地傳遞給DIN,然后再將Flash地址加1,一直循環。
(4)所有配置數據傳送完成,CRC校驗無誤,則DONE呈現高電平,否則為低電平。
(5)CPLD采樣到DONE為高后,立即釋放Flash控制信號,進入等待狀態。FPGA則釋放全局三態(GTS),激活IO管腳,釋放全部置位復位(GSR)和全局寫使能(GWE)有效,開始執行配置區里的邏輯,如果FPGA要重新配置,可由CPLD再次將PROG_B拉低,則DONE信號會由高變低,重新進入配置狀態。
為了驗證實驗結果,在嵌入式系統正常運行的情況下,使用1臺PC機作為FTP客戶端,通過以太網接口登錄嵌入式系統的FTP服務器,然后將FPGA目標文件“a.bin”上傳到FTP服務器。處理器收到文件并解析出該文件后,將該文件從0地址開始寫入到Flash的底層空間,如圖4所示。

圖4 在線升級示意圖
CPLD程序也設計為從0地址開始加載FPGA目標文件并配置FPGA。具體配置時序如圖5所示。

圖5 CPLD配置FPGA的波形
從圖5左邊部分可以看出,CPLD從0地址開始累加讀取Flash數據,Flash前4個地址讀出的數據依次為0xFFFFFFFF、0xAA995566、0x20000000、0x30008001,然后并行數據被轉換為串行數據送到DIN。
圖5右邊部分,可以看到地址已經累加到0xA03C3,然后DONE信號變為高電平,CPLD在檢測到DONE信號為高電平后,完成配置過程,進入等待狀態。
基于CPLD加FLASH的FPGA主串配置方案原理簡單易行[8],雖然舉例是采用Xilinx公司Vertext4系列的XC4VFX60 FPGA,但稍加修改即可適用于其它系列的FPGA器件,具有很強的通用性和實用性。
另外,FPGA具有可重復配置的靈活性,在嵌入式系統中可以通過串口、網口遠程燒寫Flash重構系統功能,這種在線重構技術,為設備的智能化在線維護、功能重組和在線升級等提供了可能,具有廣闊的應用前景。
參考文獻:
[1]XILINX:Platform Flash In-System Programmable Configuration PROMS[EB/OL].2004/www.xilinx.com.
[2]XILINX:EDK PowerPC Tutorial Ver 3.0[EB/OL].2004/www.xilinx.com.
[3]XILINX:Getting Started with EDK and Wind River VxWorks[EB/OL].2004/www.xilinx.com.
[4]XILINX:Virtex-4 Configuration Guide[EB/OL].2004/www.xilinx.com.
[5]胡啟道,張福洪,戴紹港.基于MCU的FPGA在線配置[J].電子器件,2007,30(3):1049-1056.Hu Qidao,Zhang Fuhong,Dai Shaogang.Online Configure FPGA Based on MCU[J].Electronic Devices,2007,30 (3):1049-1056.
[6]Intel:Intel StrataFlash?Memory(J3)28F256J3,28F128J3,28F640J3,28F320J3(x8/x16)Datasheet [EB/OL].2004/http://www.intel.com.
[7]XILINX:XC95144XLHighPerformanceCPLD [EB/OL].2007/www.xilinx.com.
[8]王小峰,周吉鵬.一種FPGA在線配置flash的方法[J].電子器件,2006,29(3):902-904.Wang Xiaofeng,Zhou Jipeng.Online Configure flash by FPGA[J].Electronic Devices,2006,29(3):902-904.
Online Update and Configure FPGA By CPLD and Flash
Liu Guangwen,Li Yuyang,Cheng Liang
(Chongqing Jinmei Communication Co.,Ltd.,Chongqing 400030,China)
Abstract:The embedded system,based on Xilinx Vertext4 FPGA,usually uses Flash as storage medium to save BootLoader and operating system object file.If the FPGA object file is sent to processor via Ethernet port,it will be saved to free space in Flash by processor,and the CPLD generates a time sequence and sends the FPGA object file to FPGA through the pin configuration,then the power-on configuration is simulated and realized.It has advantage of saving a dedicated configuration PROM and supporting FPGA object file online updating perfectly.The practice proves that it is a universal solution and has lots of practical utility in embedded system.
Key words:Embedded;System;Configuration;Processor;Object file;Online update
DOI:10.3969/j.issn.1002-2279.2016.02.001
中圖分類號:TP317.4
文獻標識碼:A
文章編號:1002-2279(2016)02-0001-03
作者簡介:劉光文(1982-),男,四川省遂寧市人,助理工程師,學士,主研方向:FPGA邏輯設計、硬件電路設計。
收稿日期:2015-05-29