熊璐
摘 要: 近年來航天測控任務出現(xiàn)了測控目標多,信息傳輸量大,工作模式多樣化等特點,為了滿足實際測控任務中對設(shè)備的處理能力和靈活性的更高要求,該文實現(xiàn)了一種基于CPCI的動態(tài)可重構(gòu)系統(tǒng)設(shè)計。在基帶設(shè)備中通過應用程序?qū)⑴渲梦募蒀PCI總線根據(jù)需要實時寫入到信號處理板上,并由主控FPGA將配置數(shù)據(jù)加載到核心處理器件FPGA和DSP中。與傳統(tǒng)的FPGA和DSP加載方式相比,這種方法可以在極短的時間實現(xiàn)基帶設(shè)備不同功能和模式的快速切換,不僅節(jié)約了硬件資源同時也使系統(tǒng)具有較大擴展性和靈活性,能夠滿足不同應用需求。該文給出這種可重構(gòu)系統(tǒng)的詳細設(shè)計和工程中的典型應用,該設(shè)計已經(jīng)在實際中應用并取得理想的效果。
關(guān)鍵詞: FPGA; DSP; 動態(tài)配置; CPCI
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2016)08?0104?04
Design and implementation of dynamic reconfigurable system based on CPCI
XIONG Lu
(The 10th Research Institute of CETC, Chengdu 610036, China)
Abstract: In recent years, many features of multi?target, large amount of information transmission, and diversification of work mode have appeared in aerospace tracking and control tasks. In order to meet the higher requirements of the device processing capacity and flexibility in actual observation and control tasks, the design of dynamic reconfigurable system based on CPCI is realized in this paper. In the baseband device, the configuration files are written on the signal processing board through CPCI bus in real time according to requirements, and then the layout data is loaded to FPGA and DSP by main?control FPGA. Compared with traditional loading modes of FPGA and DSP, this method can realize the fast switch of different functions and modes of base band equipment in very short time. It not only saves the resources of system, but also make the system have greater expansibility and flexibility. The design of this kind of reconfigurable system is discussed in detail and the typical application in practical project is given in this paper, which has achieved an ideal effect in practical work.
Keywords: FPGA; DSP; dynamic configuration; CPCI
近年來隨著航天事業(yè)的發(fā)展,測控任務出現(xiàn)了測控目標多,信息傳輸量大,工作模式多樣化等特點,因此對設(shè)備的處理能力和靈活性提出了更高要求。通過動態(tài)實時的重構(gòu)基帶設(shè)備,使其具有不同的測控功能,不僅能夠滿足多種場合的任務需求還節(jié)約了硬件資源和設(shè)備成本,具有靈活、高效等特點。
1 CPCI總線概述
CPCI(Compact Peripheral Component Interconnect)總線是一種高性能局部總線,數(shù)據(jù)總線為32位,可擴展為64位,數(shù)據(jù)傳輸速率[1]為128~528 MB/s。由于CPCI 局部總線獨立于處理器的獨特設(shè)計和其高性能、低成本、開放性等方面的優(yōu)勢,它在航天領(lǐng)域的應用相當廣泛。在本設(shè)計中通過CPCI總線進行配置數(shù)據(jù)流的傳輸,相對于傳統(tǒng)的電纜和網(wǎng)絡下載具有速度快、延時小、可靠性高等特點。
2 硬件實現(xiàn)
圖1為應用于某航天地面測控基帶設(shè)備中CPCI信號處理板卡硬件框圖。FPGA1和FPGA2為Xilinx 公司VIRTEX 6系列FPGA,對ADC采樣中頻輸入信號的數(shù)據(jù)進行功率調(diào)整,數(shù)字濾波,載波恢復,信息提取,位同步,幀同步,信息提取,調(diào)制等處理。DSP為 TI公司的TMS320C6455,實現(xiàn)參數(shù)計算,頻率捕獲,傳輸控制等功能。主控FPGA是采用Xilinx公司的VIRTEX 5 FPGA實現(xiàn),完成板上V6 FPGA和DSP程序的加載,電源管理與各芯片之間的接口控制等功能。雙口RAM用于緩存上報監(jiān)控計算機的數(shù)據(jù)和DSP的配置數(shù)據(jù)。PLX9056為CPCI總線接口芯片,實現(xiàn)PCI協(xié)議到本地總線的轉(zhuǎn)換。監(jiān)控計算機通過CPCI總線將數(shù)據(jù)讀取后進行后續(xù)處理,同時監(jiān)控計算機還可以通過CPCI總線把需要調(diào)制的數(shù)據(jù)注入到FPGA和DSP中,調(diào)制后由DAC轉(zhuǎn)換成模擬中頻信號。通過監(jiān)控計算機的人機交互界面可實現(xiàn)對板卡的參數(shù)控制、狀態(tài)監(jiān)視、信息存儲等功能。
為了實現(xiàn)動態(tài)重構(gòu),以監(jiān)控計算機為主設(shè)備,通過CPCI總線將配置數(shù)據(jù)送到底層板卡上,并控制整個配置流程。主控FPGA作為配置數(shù)據(jù)的通道,與板卡FPGA1,F(xiàn)PGA2,DSP接口,并且設(shè)計了配置狀態(tài)機用于實現(xiàn)FPGA的配置時序。將不同模式的硬件配置文件存放在監(jiān)控計算機硬盤中,通過監(jiān)控軟件實時加載不同的模式配置文件,即可實現(xiàn)系統(tǒng)重構(gòu),完成測控功能切換。
3 FPGA動態(tài)配置
3.1 Xilinx VIRTEX 6系列FPGA配置方式介紹
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)以其高度的靈活性以及豐富的I/O資源與內(nèi)嵌模塊等優(yōu)勢,在航天領(lǐng)域越來越廣泛的應用[2]。Xilinx公司根據(jù)FPGA是否能夠自己主動加載配置數(shù)據(jù)分為主模式、JTAG模式以及從模式[3]。主模式根據(jù)配置數(shù)據(jù)位寬和控制時序的不同又分為Master Serial,Master SPI,Master BPI?Up,Master BPI?Down,Master SelectMap等幾種接口。
主模式加載片外非易失性存儲器中的配置比特流,配置所需的時鐘信號由FPGA內(nèi)部產(chǎn)生,且FPGA控制整個配置過程。在主模式下,F(xiàn)PGA上電后,自動將配置數(shù)據(jù)從相應的外存儲器讀入到FPGA內(nèi)部SRAM中,實現(xiàn)內(nèi)部結(jié)構(gòu)映射。JTAG 模式主要用于調(diào)試,可將PC 中的比特文件流下載到FPGA中,斷電后丟失。
在JTAG模式下,配置時鐘為JTAG接口的TCLK,數(shù)據(jù)直接從TDI進入FPGA,完成相應功能的配置。從模式需要外部的主控設(shè)備(如處理器、微控制器或者DSP等)將數(shù)據(jù)下載到FPGA中,其最大的優(yōu)點在于FPGA的配置數(shù)據(jù)可以放在系統(tǒng)的任何存儲部位,如:硬盤、FLASH、網(wǎng)絡等。
從模式根據(jù)配置數(shù)據(jù)的位寬不同又分為Slave SelectMap和Slave Serial兩種模式。在從模式下,F(xiàn)PGA 作為從屬器件,由相應主控設(shè)備器配置所需的時序,實現(xiàn)配置數(shù)據(jù)的下載。
通過設(shè)置FPGA的MODE引腳的值,可以改變FPGA的配置模式。在本設(shè)計中選用了并行從模式即Slave SelectMap來實現(xiàn)FPGA的動態(tài)配置。
3.2 FPGA動態(tài)配置設(shè)計實現(xiàn)
該模式的配置主要由以下信號進行控制:
PROGRAM_B:為低時復位芯片,復位后INIT_B變成低表示FPGA正在初始化配置存儲,當采樣到MODE引腳的值后,如果沒有發(fā)生CRC錯誤INIT_B將拉高,若發(fā)生CRC錯誤,則INIT_B為低。
RDWR_B:控制配置數(shù)據(jù)的方向,為高時從FPGA讀取配置數(shù)據(jù),為低時向FPGA寫入配置數(shù)據(jù)。
CSI_B:片選信號為低時,使能SelectMap總線。在只有一片F(xiàn)PGA的情況下,可以將此引腳直接接地。
CCLK:配置時鐘。在VIRTEX 6系列FPGA中,CCLK最高[4]可以達到105 MHz。但由于受到PCB工藝布線等因素影響,過高的時鐘往往會受到信號過沖,建立保持時間等的影響,導致配置失敗。因此為了保證配置的可靠性在本設(shè)計中采用主控FPGA產(chǎn)生50 MHz時鐘輸出給待配置FPGA。
D[0∶7]:8 b配置數(shù)據(jù)信號。在Xilinx的ISE開發(fā)環(huán)境中,對FPGA的工程進行編譯,可以生成配置所需的不同二進制文件。FPGA 的配置文件有多種不同的格式,例如BIT,BRT,BIN,MCS,EXO,TEK,HEX等[5]。ISE軟件調(diào)用 Bit Gen 程序可直接生產(chǎn)BIT和BIN文件。由于BIN文件僅有配置數(shù)據(jù)無其他多余信息,因此在本設(shè)計中采用了BIN文件進行配置。
DONE:高有效,表示配置成功。
如圖3所示為主控FPGA中用戶邏輯的模塊劃分框圖及與片外FPGA的配置信號連接圖。地址譯碼及數(shù)據(jù)通路模塊實現(xiàn)與PCI9656的接口,對PCI總線的地址進行譯碼和數(shù)據(jù)傳輸控制。FIFO用于緩存配置數(shù)據(jù)。配置控制模塊實現(xiàn)動態(tài)配置的控制邏輯狀態(tài)機。配置狀態(tài)模塊把FPGA1和FPGA2的狀態(tài)上報到計算機。FPGA1和FPGA2所有需要配置的信號連接到主控FPGA的I/O引腳上。
當需要動態(tài)改變FPGA配置內(nèi)容時,計算機將配置數(shù)據(jù)通過CPCI總線按字節(jié)把配置文件數(shù)據(jù)經(jīng)過PCI9656寫入FIFO中。主控FPGA中的配置控制邏輯檢測到FIFO非空后,并判斷配置哪一塊FPGA后,讀取FIFO中的數(shù)據(jù),并按照圖 2中配置模式的時序把配置數(shù)據(jù)連續(xù)寫入FPGA1或FPGA2中。配置成功后,被配置的FPGA將自動拉高DONE信號電平,此時計算機可通過讀取該信號的值來監(jiān)測被配置FPGA的狀態(tài),判斷是否配置成功。
為了實現(xiàn)圖2配置時序,在主控FPGA配置控制模塊中通過Verilog HDL代碼設(shè)計了具有圖4狀態(tài)轉(zhuǎn)換圖的狀態(tài)機[6]。
IDLE狀態(tài):該狀態(tài)為初始狀態(tài),等待總線配置命令。當需要進行模式切換時,監(jiān)控計算機向映射到內(nèi)存空間的CPCI指定地址寫入0,1,0產(chǎn)生開始配置的脈沖config_pulse。狀態(tài)機檢測到總線的開始配置脈沖后,進入RST狀態(tài)。
RST狀態(tài):在該狀態(tài)下,主控FPGA拉低PROGRAM_B,被配置FPGA進入復位狀態(tài)。為了保證復位的有效性,復位時間[5]至少不低于250 ns。被配置FPGA復位以后,拉高PROGRAM_B,狀態(tài)機進入CHECK_INIT狀態(tài)。
CHECK_INIT狀態(tài):在該狀態(tài)下通過檢測INIT_B信號判斷是否進行狀態(tài)轉(zhuǎn)換。若復位成功,被配置FPGA將清除用于配置的內(nèi)部存儲,并拉低INIT_B。當狀態(tài)機檢測到INIT_B為低后,狀態(tài)進入RW_STROBE狀態(tài)。如果該狀態(tài)下INIT_B仍為高,表示配置失敗,進入CFG_FAIL狀態(tài),結(jié)束配置。
RW_STROBE狀態(tài):在該狀態(tài)下,判斷被配置FPGA的內(nèi)部SRAM是否完成初始化,為下一步寫入配置數(shù)據(jù)做準備。當FPGA內(nèi)部SRAM初始化完成并且沒有發(fā)生CRC錯誤時,INIT_B信號將變高。一旦狀態(tài)機檢測到INIT_B為高,主控FPGA拉低RDWR_B信號,進入SEND_DATA狀態(tài)。當內(nèi)部計時器超過設(shè)定時間1 s,INIT_B還未變高,則進入CFG_FAIL狀態(tài),結(jié)束配置。
SEND_DATA狀態(tài):在該狀態(tài)下,主控FPGA完成將配置數(shù)據(jù)送入待配置FPGA的功能。若FIFO不為空,讀取FIFO中的配置數(shù)據(jù),并將數(shù)據(jù)送入FPGA中。FIFO作為配置數(shù)據(jù)的通道需要被上層應用和配置邏輯監(jiān)測空滿狀態(tài)。上層應用通過CPCI總線讀取FIFO的狀態(tài),若FIFO數(shù)據(jù)半滿則需要向FIFO中寫入一部分配置數(shù)據(jù)塊。監(jiān)控計算機由于在實際應用中有多個線程同時運行并且受到CPCI總線傳輸效率不高的因素影響,雖然采用了DMA傳輸方式,寫入FIFO的數(shù)據(jù)速率仍會低于50 MB/s的配置速率,因此會出現(xiàn)FIFO空的情況。若出現(xiàn)FIFO空,則需要拉高CSI_B信號,當FIFO中有配置數(shù)據(jù)之后才拉低CSI_B,保證配置數(shù)據(jù)的連續(xù)性。若監(jiān)控計算機發(fā)生異常導致FIFO數(shù)據(jù)中斷,將進行超時判斷,超時后進入CFG_FAIL狀態(tài),并結(jié)束配置。寫完配置數(shù)據(jù)后,檢測DONE信號,若為高則表示配置成功,進入CFG_SUCCESS狀態(tài),結(jié)束配置。若檢測到DONE信號一直為低,則進入CFG_FAIL狀態(tài),并結(jié)束配置。
CFG_SUCCESS狀態(tài):前一狀態(tài)若檢測到DONE信號為高,則進入該狀態(tài),表示本次配置成功,并在下一個時鐘周期,進入初始IDLE狀態(tài)。
CFG_FAIL狀態(tài):配置超時或者數(shù)據(jù)傳輸異常,DONE信號無法拉高等情況下,都進入該狀態(tài),表示配置失敗。
4 TMS320C6455DSP動態(tài)加載
4.1 TMS320C6455 DSP概述
TMS320C6455 DSP是TI公司的一款高性能DSP,不僅具有高速的數(shù)據(jù)運算能力,還有豐富的外部接口,如外部存儲器EMIF接口,高速串行接口Serial RapidIO,PCI接口,三速以太網(wǎng)MAC控制器等[7]。
TMS320C6455 DSP內(nèi)部有豐富的存儲資源,它的L2級RAM存儲容量達4 Mb/s,分配的內(nèi)存地址范圍為0x00800000~0x009FFFFF。為了滿足更多應用對內(nèi)存的需求,可以通過DDR2控制接口或EMIFA接口擴展系統(tǒng)的內(nèi)存。
4.2 基于EMIFA接口的啟動過程
DSP的啟動是將程序和數(shù)據(jù)段加載到其內(nèi)部存儲空間,并且初始化內(nèi)部寄存器的過程。通常啟動模式主要有:NOBOOT模式、主機(HPI/PCI接口)模式、EMIFA模式、主I2C模式、從I2C模式、SRIO模式等模式。本設(shè)計中采用了EMIFA片外ROM啟動模式。TMS320C6455 DSP的EMIFA接口能與各種外部設(shè)備接口,如SRAM,F(xiàn)IFO,ROM,F(xiàn)LASH等。EMIFA對應的DSP的地址空間分為4片空間,分別對應的片選信號CE2~CE5,可擴展的地址空間達1 GB。
上電復位后,DSP通過DMA/EDMA控制器,自動將存有程序代碼的片外存儲器中1 KB數(shù)據(jù)搬移到起始地址為0x800000的內(nèi)存中[8]。搬移完成后,DSP將從該地址執(zhí)行程序。通常在這段1 KB程序里存放為Bootloader程序,Bootloader程序?qū)⒈4嬖谄獯鎯ζ髦械钠渌绦驍?shù)據(jù)搬移到DSP L2 RAM空間中,并在搬移完成后讓DSP跳轉(zhuǎn)到程序起始處開始執(zhí)行,此時DSP完成整個啟動過程。
4.3 DSP動態(tài)配置的實現(xiàn)
如圖1所示,DSP的EMIFA CE3的地址數(shù)據(jù)等控制信號通過主控FPGA與雙口RAM和FLASH連接。在板卡上電的初始狀態(tài)下,DSP的EMIFA的CE3信號線通過MAIN FPGA與FLASH連接。當需要進行功能切換時,計算機首先通過CPCI總線將DSP的程序二進制文件寫入雙口RAM中。然后控制主控FPGA將EMIFA CE3的數(shù)據(jù)、地址、控制等信號切換到雙口RAM上。為了讓DSP重新啟動,監(jiān)控軟件向主控FPGA中復位寄存器寫入1,產(chǎn)生復位DSP的脈沖。DSP復位之后,重新開始啟動過程,但通過EMIFA CE3地址空間訪問的內(nèi)存將不再是FLASH,而是片外雙口RAM。DSP加載雙口RAM中的程序數(shù)據(jù)后,實現(xiàn)DSP功能的切換。由于片外雙口RAM比FLASH具有更高的工作時鐘,這種DSP的啟動方式,相對于FLASH加載的方式,不僅可以減少燒寫FLASH的環(huán)節(jié),縮短DSP的啟動時間,而且可通過監(jiān)控軟件的人機界面隨時更改DSP加載的程序內(nèi)容,具有很大的靈活性。
5 結(jié) 語
本系統(tǒng)利用CPCI總線傳輸不同的配置文件實現(xiàn)系統(tǒng)的可重構(gòu),具有簡單,易于開發(fā)的特點。通過應用軟件實際測試,整板(包括2片F(xiàn)PGA,1片DSP)的重構(gòu)時間不超過2 s。CPCI總線結(jié)構(gòu)動態(tài)重構(gòu)系統(tǒng)具有很大的優(yōu)越性,不僅數(shù)據(jù)傳輸速率高,資源利用率高,減小了系統(tǒng)規(guī)模功耗,而且可以對不斷變化的環(huán)境迅速適配。本設(shè)計已應用于實際工程中,并取得了良好的效果。
參考文獻
[1] BUDRUK Ravi, SHANLEY Tom, ANDERSON Don. PCI Express系統(tǒng)體系結(jié)構(gòu)[M].北京:電子工業(yè)出版社,2005.
[2] 王文華,韓雙麗,張宇.航天應用FPGA配置可靠性研究[J].空間科學學報,2011,31(1):106?111.
[3] Xilinx Technology Inc. Virtex?6 FPGA configuration user guide [EB/OL]. (2012?09?11) [2015?04?20]. http://www. xilinx.com/support/documentation/user_guides/ug360.pdf.
[4] Xilinx Technology Inc. Virtex?6 FPGA data sheet: DC and switching characteristics DS152 [EB/OL]. (2011?04?01) [2015?04?20]. http://www.xilinx.com/support/documentation/data_
sheets/ds152.pdf.
[5] 孟龍,郄志鵬,朱江,等.基于CPCI總線的FPGA加載設(shè)計[J].通信技術(shù),2013,46(5):127?129.
[6] Xilinx Technology Inc. A CPLD?based configuration and revision manger for Xilinx platform flash PROMS and FPGAs [EB/OL]. (2005?01?19) [2015?04?22]. http://www.xilinx.com/support/documentation/application_notes/xapp693.pdf.
[7] Texas Instruments Inc. TMS320C6455 fixed?point digital signal processor [EB/OL]. (2012?03?23) [2015?04?10]. http://www.ti.com/lit/ds/symlink/tms320c6455.pdf
[8] Texas Instruments Inc. TMS320C6000 tools: vector table and boot ROM creation[EB/OL]. (2004?04?20) [2015?04?11]. http://www.ti.com/lit/an/spra544d/spra544d.pdf