李耀南 王 謙
(西安電子工程研究所 西安 710100)
雷達(dá)總站進(jìn)行聯(lián)調(diào)時(shí),某些分系統(tǒng)可能需要經(jīng)常修改調(diào)試FPGA程序,而配置新程序時(shí)一般都需要斷電、連接JTAG下載電纜;通電;配置;再斷電;斷開JTAG下載電纜;通電測(cè)試等一系列步驟。這樣的步驟很繁瑣,將大部分時(shí)間浪費(fèi)在無(wú)意義的拔插JTAG下載電纜上。如果在雷達(dá)正常工作時(shí),通過內(nèi)部設(shè)備實(shí)時(shí)對(duì)FPGA在線配置新調(diào)試程序,將極大地提高調(diào)試的效率。針對(duì)以上問題,本文提出了一種利用系統(tǒng)內(nèi)的單板機(jī)通過CPCI總線訪問一片F(xiàn)PGA從而對(duì)另一片F(xiàn)PGA進(jìn)行實(shí)時(shí)配置的方法。
FPGA配置模式[1]種類很多,依據(jù) FPGA能否主動(dòng)加載配置數(shù)據(jù)可分為主模式、從模式和JTAG模式。主模式是指由被配置FPGA內(nèi)部產(chǎn)生配置所需的時(shí)鐘信號(hào)(稱為CCLK),且被配置FPGA主動(dòng)加載片外非易失性存儲(chǔ)器中的配置比特流數(shù)據(jù)。從模式是通過外部的主智能終端(如處理器或DSP等)建立配置所需的時(shí)序[2],將配置數(shù)據(jù)加載到FPGA中,F(xiàn)PGA在配置過程中是被動(dòng)的。JTAG模式主要用于調(diào)試,可將計(jì)算機(jī)中的bit文件通過JTAG配置電纜加載到FPGA中,斷電即丟失。
Xilinx FPGA的主配置模式可分為主串行(Master Serial)模式、主并行(Master SelectMAP)模式。在主配置模式中,F(xiàn)PGA的配置數(shù)據(jù)來自PROM,配置時(shí)鐘CCLK由被配置FPGA內(nèi)部產(chǎn)生。
從配置模式下,F(xiàn)PGA配置數(shù)據(jù)的存儲(chǔ)介質(zhì)不僅僅是PROM,還可以是FLASH、硬盤、網(wǎng)絡(luò),甚至在處理器的運(yùn)行代碼中[3],配置時(shí)鐘CCLK來自外部設(shè)備。從模式依據(jù)配置比特流位寬分為從串行(Slave Serial)和從并行(Slave SelectMAP)模式,如圖1所示。
圖1 常用的從配置模式示意圖
由此可見,若要利用單板機(jī)和外部FPGA對(duì)等待配置的FPGA的進(jìn)行遠(yuǎn)程配置,則只可以使用從模式中的從串行和從并行模式。
FPGA的配置模式可通過FPGA的配置管腳M2、M1、M0的上拉或者下拉來選擇,不同系列的FPGA的配置選擇也不完全相同,下面以XILINX的VIRTEX4系列FPGA的配置為例,來講述FPGA的從串行配置模式和從并行配置模式。
如圖2所示,等待配置的 FPGA的型號(hào)為4vsx55(下面簡(jiǎn)稱該FPGA為4vsx55),生成配置邏輯的FPGA型號(hào)為2vp40(下面簡(jiǎn)稱該FPGA為2vp40)。要對(duì)4vsx55進(jìn)行從串行配置,首先要將其配置管腳 M2、M1、M0 置為‘1’、‘1’、‘1’,硬件上的4vsx55 的 CCLK、DIN、PROG_B、INIT_B、DONE 等信號(hào)也要與2vp40的IO管腳連接,另外CCLK、PROG_B、INIT_B、DONE等信號(hào)還要進(jìn)行相應(yīng)的上下拉。
圖2 FPGA從串行配置模式示意圖
4vsx55的配置文件既可用最常用的.bit文件也可用.bin文件(.bit文件和.bin文件的區(qū)別就在于,.bin只包含配置數(shù)據(jù),沒有前面的header information),生成.bit或.bin文件時(shí)應(yīng)選擇相應(yīng)的配置時(shí)鐘,該配置時(shí)鐘頻率決定了CCLK的頻率。該配置文件存放在單板機(jī)上。系統(tǒng)上電后,2vp40已經(jīng)由PROM完成了主并配置且開始運(yùn)行。對(duì)4vsx55配置前可先將配置文件通過CPCI總線傳至2vp40,2vp40暫時(shí)將其存放在外掛的SDRAM中,從而保證了在CCLK時(shí)鐘周期到來前4vsx55的DIN輸入管腳的串行配置數(shù)據(jù)有足夠的建立時(shí)間。
從串行配置時(shí)序如圖3所示,2vp40通過給4vsx55的PROG_B一個(gè)脈寬大于300ns的負(fù)脈沖信號(hào)啟動(dòng)配置,在PROG_B的信號(hào)拉低后,INIT_B的信號(hào)會(huì)隨之變低,當(dāng)PROG_B的信號(hào)拉高后,同時(shí)開始檢測(cè)INIT_B是否抬高,檢測(cè)到INIT_B的上升沿時(shí),表明4vsx55已經(jīng)做好準(zhǔn)備,開始接收向DIN傳送的與CCLK同步的串行配置數(shù)據(jù)(注意:這里的CCLK在上升沿時(shí)刻采樣配置數(shù)據(jù))[4]。若數(shù)據(jù)全部正確接收完成后,DONE信號(hào)抬高,這時(shí)再多保持3個(gè)CCLK的時(shí)鐘周期,以保證4vsx55配置完成后開始正常運(yùn)行;否則INIT_B變低,說明配置出錯(cuò)才停止。整個(gè)配置過程需要比配置文件比特長(zhǎng)度更多的時(shí)鐘周期,而多余的部分時(shí)鐘要用于建立時(shí)序,尤其當(dāng)4vsx55被配置為等待DCM時(shí)。
圖3 從串行配置時(shí)序
如圖4所示,要對(duì)4vsx55進(jìn)行從并行配置,首先要將其配置管腳 M2、M1、M0 置為‘1’、‘1’、‘0’,硬件上的 4vsx55 的 CCLK、DIN、PROG_B、CS_B、RDWR_B、INIT_B、DONE、BUSY 等信號(hào)也要與2vp40的IO管腳連接,另外 CCLK、PROG_B、INIT_B、DONE等信號(hào)還要進(jìn)行相應(yīng)的上下拉。
圖4 FPGA從并行配置模式示意圖
.bit文件和.bin文件并沒有按字節(jié)進(jìn)行位翻轉(zhuǎn),而并行加載要求位翻轉(zhuǎn),因此2vp40在向4vsx55送配置數(shù)據(jù)時(shí)應(yīng)按字節(jié)進(jìn)行位翻轉(zhuǎn)之后再傳送。
從并行配置時(shí)序如圖5所示,2vp40通過給4vsx55的PROG_B一個(gè)脈寬大于300ns的負(fù)脈沖信號(hào)啟動(dòng)配置,在PROG_B的信號(hào)拉低后,INIT_B的信號(hào)會(huì)隨之變低,當(dāng)PROG_B的信號(hào)拉高后,同時(shí)開始檢測(cè)INIT_B是否抬高,檢測(cè)到INIT_B的上升沿時(shí),表明4vsx55已經(jīng)做好準(zhǔn)備,CS_B相應(yīng)地置低可使能并行數(shù)據(jù)總線,(若是不回讀配置回報(bào)信息則RDWR_B可始終置為低),這時(shí)開始接收向D[7:0]傳送的與CCLK同步的并行配置數(shù)據(jù)(注意:這里的CCLK在上升沿時(shí)刻采樣配置數(shù)據(jù),并行的配置數(shù)據(jù)是配置文件按字節(jié)進(jìn)行位翻轉(zhuǎn)之后的)。若數(shù)據(jù)全部正確接收完成后,DONE信號(hào)抬高,表明4vsx55配置完成后開始正常運(yùn)行;否則INIT_B變低,說明配置出錯(cuò)才停止。整個(gè)配置過程可以始終保持CCLK時(shí)鐘周期。
值得注意的是,對(duì)FPGA的PROM而言,串行模式的DIN和并行模式的D0是同一根線,而對(duì)FPGA而言卻不一定,SPARTAN3系列是同一根線,而VIRTEX4系列是兩根獨(dú)立的信號(hào)線。
很明顯可以看出,從串行模式用的是1根數(shù)據(jù)線配置,而從并行模式用的是8根數(shù)據(jù)線,所以從并行模式的配置速度幾乎是從串行模式的八倍之多。
圖5 從并行配置時(shí)序
本文提供的方法解決了產(chǎn)品運(yùn)行時(shí)實(shí)時(shí)調(diào)試程序的問題,對(duì)工程設(shè)計(jì)有一定的借鑒意義。本方法進(jìn)一步還可讓FPGA在不同的模式下配置不同的程序,實(shí)現(xiàn)FPGA運(yùn)行時(shí)重構(gòu)[5],可應(yīng)用于多種模式分時(shí)復(fù)用FPGA資源的場(chǎng)合,對(duì)于節(jié)約產(chǎn)品成本有一定幫助。
[1]Virtex-4 Configuration Guide[OL].www.xilinx.com,2008.
[2]劉瑞賢.基于分子計(jì)算的并行處理機(jī)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2009.
[3]郎永輝.基于多軟核并行處理的數(shù)字圖像處理算法的研究 [D].長(zhǎng)春:長(zhǎng)春工業(yè)大學(xué),2010.
[4]張國(guó)斌等.FPGA開發(fā)全攻略[OL].wenku.baidu.com,2009.
[5]鄭文榮,孫朝江,劉少偉 .復(fù)雜系統(tǒng)的多FPGA可重構(gòu)設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量技術(shù),2012,35(9):96-98.