文/黃瑋芳
本設(shè)計提出了一種基于微處理器對FPGA動態(tài)配置的方案,通過串行將升級配置數(shù)據(jù)送入FPGA中來自動完成升級配置。此設(shè)計不僅使FPGA的升級速度更快、更方便,還減小了系統(tǒng)體積,節(jié)約了成本,解決了現(xiàn)場升級FPGA困難的難題。
本設(shè)計使用motorola公司的MPC8270作為微處理器,對lattice公司的FPGA LFE2M20E進行控制來實現(xiàn)在線升級。
本設(shè)計的在線升級使用FGPA的Slave Serial模式,令FPGA作為從屬器件,由微處理器MPC8270提供配置所需的時序和數(shù)據(jù),完成配置數(shù)據(jù)的下載。
進行在線升級時,先將更新好的配置文件(.bit文件)以二進制形式從計算機下載到MPC8270的內(nèi)存中去,再通過控制配置時序?qū)⑴渲脭?shù)據(jù)串行發(fā)送到FPGA中進行配置。此配置方法不需要任何硬件動作和專業(yè)的軟件,只需要使用CPU的8個I/O口,編一小段程序就可以實現(xiàn)FPGA的動態(tài)配置。
實現(xiàn)在線升級功能,硬件上需要將FPGA的8根信號線: CCLK、DI、DONE、INITN、PROGRAM、CFG0、CFG1、CFG2,分別連接到MPC8270的8個I/O口,其中CLK、DATA、FPGA_PROGRAM、FPGA_CFG0、FPGA_CFG1、FPGA_CFG2為輸出態(tài),STATUS、STATUS1為輸入態(tài)。在升級前,需要對MPC8270的這8個I/O口進行輸入輸出配置。
升級時,先將FPGA編譯生成的.bit文件放入到CPU的內(nèi)存中去,再將CFG0、CFG1、CFG2配置為1、0、1,隨后CPU的FPGA_PROGRAM信號發(fā)一個大于8ns的低脈沖信號,通知FPGA開始編程,同時監(jiān)測INITN和DONE信號。當FPGA接收到CPU發(fā)出的FPGA_PROGRAM低脈沖時,INITN會迅速輸出一個低脈沖,同時將DONE拉低。當CPU監(jiān)測到INITN的低脈沖和DONE由高變低后,知道FPGA已準備好接收升級數(shù)據(jù),可以朝它發(fā)數(shù)據(jù)了,接著將CPU內(nèi)存中的.bit文件通過DI腳串行發(fā)送到FPGA內(nèi),一個CCLK向DI內(nèi)發(fā)送一個bit數(shù)據(jù),當文件發(fā)送完畢后,由于配置文件中已經(jīng)包含了FPGA初始化的一些代碼,所以傳輸完配置文件后,F(xiàn)PGA就可以正常工作了,此時,F(xiàn)PGA會將DONE信號置高,表示升級已完成。
CPU檢測到DONE信號變高后,完成在線升級。如果傳輸中出現(xiàn)了異常,DONE信號將一直為低,如保持低電平時間如果超出升級所需時間,結(jié)束升級并報錯,此時,需要重新升級。
升級配置時序圖如圖1所示。
整個升級過程要嚴格按照配置時序來進行。
軟件部分是通過下載配置文件、配置端口和讀取數(shù)據(jù)來完成升級的。先在PC機上發(fā)命令將升級配置文件(.bit文件)存在MPC8270的內(nèi)存里,然后配置升級所需的端口,利用微處理器的I/O口產(chǎn)生配置時序,串行將升級配置數(shù)據(jù)送入FPGA中自動完成配置。升級主要程序如下:


圖1:升級配置時序圖

本文所描述的FPGA在線升級的設(shè)計已經(jīng)在實際系統(tǒng)中得到了應用,取得了良好效果。本設(shè)計雖然是針對MPC8270和LATTICE的LFE2M20E來實現(xiàn)在線升級的,但對于應用LATTICE公司其它系列的FPGA和其他的微處理器,只要微處理器控制部分稍做改動即可加以應用。這一點在日益興起的軟件無線電系統(tǒng)中具有廣闊的應用前景并能滿足某些用戶對于在線調(diào)試、更新和維護的需求。