基于ARM和NAND Flash的FPGA加載配置在TD-LTE中的實(shí)現(xiàn)
摘 要: 提出一種基于ARM和NAND Flash的FPGA加載配置的設(shè)計(jì)。選取Virtex-5系列的XC5VSX95T和ARM11系列的S3C6410處理器作為硬件平臺(tái),研究了利用NAND Flash自啟動(dòng)、以8 bit的SelectMAP模式配置FPGA的流程及實(shí)現(xiàn)。介紹了其配置原理、軟硬件實(shí)現(xiàn)過程以及實(shí)現(xiàn)結(jié)果分析,重點(diǎn)分析了ARM+NAND的控制方法。該方案已在TD-LTE無線綜合測(cè)試儀表中成功應(yīng)用,是一套靈活和高效的FPGA配制方法。
關(guān)鍵詞: FPGA配置;S3C6410;SelectMAP模式;NAND Flash
TD-LTE無線綜合測(cè)試儀平臺(tái)的主要功能是測(cè)試接收端與發(fā)射端信號(hào)的差異,即接收和發(fā)射端信號(hào)的誤碼率等性能的優(yōu)劣,其物理層采用通用的FPGA+DSP+ARM硬件架構(gòu),具有開發(fā)周期短、可擴(kuò)展性好等優(yōu)點(diǎn)。
現(xiàn)場(chǎng)可編程門陣列FPGA是基于門陣列方式為用戶提供可編程資源,其內(nèi)部邏輯結(jié)構(gòu)的形成是由配置數(shù)據(jù)決定的。由于SRAM的易失性,每次上電時(shí),都必須對(duì)FPGA重新進(jìn)行配置、完成下行鏈路OFDM信號(hào)以及底層交互相關(guān)信號(hào)的產(chǎn)生等功能。
對(duì)于FPGA配置,大多數(shù)是采用將配置數(shù)據(jù)存放在FPGA組成的系統(tǒng)上[1-2]或者將配置數(shù)據(jù)存放在使用者自己攜帶的外部存儲(chǔ)器中的實(shí)現(xiàn)方式,后者在系統(tǒng)上電時(shí)需由其他外部控制器讀出配置數(shù)據(jù)再傳送給FPGA進(jìn)行配置。本文提出在TD-LTE無線綜合測(cè)試儀平臺(tái)上,通過嵌入式微處理器ARM將配置數(shù)據(jù)存放于NAND Flash[3]中,由Flash上電啟動(dòng)讀出配置數(shù)據(jù)再對(duì)FPGA進(jìn)行配置。這種方法不但修改、升級(jí)簡(jiǎn)便,而且由于NAND Flash在寫入數(shù)據(jù)時(shí)都需要先擦除再寫入,所以具有很好的保密性[4],并且可以方便地存儲(chǔ)大容量配置數(shù)據(jù)或多個(gè)配置數(shù)據(jù)文件等。本文介紹了TD-LTE無線綜合測(cè)試儀平臺(tái)上電后自動(dòng)加載對(duì)FPGA器件進(jìn)行配置的設(shè)計(jì)與實(shí)現(xiàn)的新方法,對(duì)無線TD-LTE系統(tǒng)的底層控制實(shí)現(xiàn)具有重要意義。
1 配置原理
1.1 配置模式
Xilinx公司為其FPGA系列產(chǎn)品提供了多種數(shù)據(jù)配置方式,在TD-LTE綜合測(cè)試儀的研究中選用的是Virtex-5系列芯片XC5VSX95T。Virtex-5提供了如表1所示的幾種不同的配置模式,其中的從SelectMAP模式最高可以支持32 bit總線寬度[5]。在每次芯片上電初始化完畢后,芯片將以采樣模式引腳M[2:0]決定配置模式。
1.2 配置方案
本文在FPGA+ARM+NAND的硬件環(huán)境下,將ARM作為主控制器,介紹從SelectMAP模式或者從串行模式的配置方案,其中串行模式需要的I/O資源較少,但速度較慢;從SelectMAP模式需要的I/O資源較多,但速度較快。
(1)在串行配置模式下,F(xiàn)PGA在每個(gè)CCLK周期載入一個(gè)比特的數(shù)據(jù),CCLK引腳由外部時(shí)鐘源來驅(qū)動(dòng),而且總是每個(gè)數(shù)據(jù)字節(jié)的最高位先被寫到DIN引腳。從串行配置模式需要用到的配置引腳為模式選擇M[2:0]設(shè)置為111、配置時(shí)鐘CCLK、配置復(fù)位PROGRAM_B、初始化狀態(tài)INIT_B、配置完成DONE和配置數(shù)據(jù)D_IN。其中,ARM除了控制PROGRAM_B、INIT_B外,還需要控制時(shí)鐘CCLK、配置數(shù)據(jù)在CCLK的上升沿采樣一個(gè)比特。通過ARM拉低再拉高相應(yīng)的GPIO產(chǎn)生CCLK上升沿時(shí)序,延時(shí)程序則由for循環(huán)實(shí)現(xiàn),由時(shí)鐘控制和比特文件的載入需要分別控制可以知道串行配置耗時(shí)是比較多的。
(2)SelectMAP模式提供了與 Virtex配置邏輯之間的一個(gè)8 bit雙向數(shù)據(jù)總線接口。從SelectMAP模式支持8、16、32 bit總線寬度。為了利于系統(tǒng)的調(diào)試及檢測(cè)方便,本文選擇8 bit總線寬度。該模式所用到的配置引腳為模式選擇M[2:0]、配置時(shí)鐘CCLK、配置復(fù)位PROGRAM_B、配置完成DONE、配置數(shù)據(jù)8 bit并行輸入DATA[0:7]和CRC[6]校驗(yàn)信號(hào)INIT_B、片選信號(hào)CS_B、回讀信號(hào)BUSY以及從SelectMAP模式使能信號(hào)PDWR_B,其中的時(shí)鐘控制信號(hào)可編程實(shí)現(xiàn)。在綜合測(cè)試儀中,F(xiàn)PGA的數(shù)據(jù)線與雙端口RAM的數(shù)據(jù)線共用,并且將雙端口RAM的寫使能作為CCLK。因此不需要單獨(dú)控制,直接向雙端口RAM中寫數(shù)據(jù)可同時(shí)實(shí)現(xiàn)時(shí)鐘的產(chǎn)生和數(shù)據(jù)的傳送。
在從SelectMAP模式中使用寫使能nWE作為時(shí)鐘線,在傳輸配置信息和時(shí)鐘控制上都節(jié)約了很多時(shí)間。因此,根據(jù)TD-LTE綜合測(cè)試儀的設(shè)計(jì)要求并考慮到測(cè)試的方便性,采用8 bit從SelectMAP模式對(duì)XC5VSX95T進(jìn)行配置是較好選擇。
2 總體實(shí)現(xiàn)及流程
2.1 配置流程
圖1給出了FPGA配置流程框圖。在上電時(shí),PROGRAM_B輸入上的邏輯低電平將會(huì)復(fù)位配置邏輯,并且使FPGA保持在清空配置存儲(chǔ)器的狀態(tài)。只要PROGRAM_B引腳保持低電平,則FPGA將繼續(xù)清空它的配置存儲(chǔ)器并使INIT_B信號(hào)保持為低電平以表明配置存儲(chǔ)器在被清空。當(dāng)PROGRAM_B被釋放時(shí),F(xiàn)PGA將繼續(xù)使INIT_B保持為低電平,直到完成清空所有的配置存儲(chǔ)器。只要INIT_B信號(hào)變?yōu)楦唠娖綍r(shí),表明清除動(dòng)作完成,配置就可以開始了。在INIT_B的上升沿,模式選擇引腳M[2:0]被采樣,以決定配置模式,若為110,則采用從SelectMAP模式。此后配置文件信息在CCLK的控制下由D[0:7]共8個(gè)配置引腳并行輸入XC5VSX95T中。配置數(shù)據(jù)在CCLK的上升沿采樣一個(gè)字節(jié)。在配置期間芯片會(huì)自動(dòng)進(jìn)行CRC錯(cuò)誤檢驗(yàn),若發(fā)生了CRC校驗(yàn)錯(cuò)誤,則INIT_B引腳將被置低。當(dāng)最后的CRC校驗(yàn)成功完成后,F(xiàn)PGA進(jìn)入啟動(dòng)時(shí)序。這個(gè)時(shí)序期間將會(huì)釋放DONE引腳(變?yōu)楦唠娖?,F(xiàn)PGA釋放全局三態(tài)(GTS),激活I(lǐng)/O引腳,釋放全部置位復(fù)位(GSR) 和全局寫使能(GWE)有效,開始執(zhí)行配置區(qū)的邏輯。此后芯片進(jìn)入正常工作狀態(tài)。配置時(shí)序圖如圖2所示。
2.2 硬件設(shè)計(jì)
本系統(tǒng)采用的嵌入式微處理器為S3C6410[7],將FPGA配置文件下載到ARM的存儲(chǔ)器存放入Flash中,以ARM處理器作為主設(shè)備,F(xiàn)PGA作為從設(shè)備。系統(tǒng)上電后,ARM通過讀取相應(yīng)的配置文件對(duì)FPGA進(jìn)行配置,256 MB的DDR SDRAM作為程序運(yùn)行空間,將NAND Flash中代碼移至SDRAM中運(yùn)行。
2.2.1 外圍芯片
(1)S3C6410
S3C6410基于ARM1176JZF-S處理器核,是一類低功率、高性價(jià)比、高性能、用于手持和移動(dòng)等終端設(shè)備的通用RISC處理器。其主頻芯片可達(dá)667 MHz,采用64/32 bit的內(nèi)部總線架構(gòu),擁有比S3C2440、S3C2410等更加豐富的接口。
在S3C6410中,由系統(tǒng)時(shí)鐘控制邏輯生成所需要的系統(tǒng)時(shí)鐘信號(hào),用于CPU的ARMCLK、AXI/AHB總線外設(shè)的HCLK和APB總線外設(shè)的PCLK。本系統(tǒng)中,采用12 MHz的外部晶體作為S3C6410的外部時(shí)鐘,ARMCLK:HCLK×2:HCLK:PCLK分別設(shè)置為553 MHz:266 MHz:133 MHz:66 MHz。
(2)NAND Flash
系統(tǒng)采用K9F1G08U0C型的128 MB×8 bit的NAND Flash。該芯片總共有1024塊,每塊有64(頁(yè))×2 GB的容量。額定電壓為3.3 V,支持隨機(jī)讀寫功能。
(3)雙端口RAM
采用IDT70V28L系列的雙端口RAM,其寫使能nWE作為配置文件加載控制時(shí)鐘CCLK。
2.2.2 硬件連接
S3C6410與XC5VSX95T以及雙端口RAM主要通過CCLK、PROGRAM_B、DONE、D[0:7]和INIT_B信號(hào)線相連接,如圖3所示。采用S3C6410的通用接口GPN10、GPN12、GPN13分別控制INIT_B、DONE、PRORAM_B,用ARM的外部存儲(chǔ)器雙端口RAM的寫使能信號(hào)nWE控制CCLK,同時(shí)其數(shù)據(jù)線DATA[0:7]作為信息輸入的D[0:7]。
2.3 軟件設(shè)計(jì)
根據(jù)圖2 FPGA配置時(shí)序圖,主設(shè)備ARM編程要實(shí)現(xiàn)各信號(hào)的時(shí)序要求。ARM軟件控制設(shè)計(jì)流程如圖4所示,其中應(yīng)用代碼包含F(xiàn)PGA 的配置驅(qū)動(dòng)。
2.3.1 比特文件的下載
對(duì)所設(shè)計(jì)的FPGA在Xilinx公司的ISE10.1軟件平臺(tái)上運(yùn)用Verilog語(yǔ)言編譯運(yùn)行后產(chǎn)生4.25 MB的.bit文件。將此.bit文件通過ARM仿真器RVDS4.1的調(diào)試環(huán)境Realview Debugger加載到ARM的一段可用內(nèi)存中。主要方法:在Target選項(xiàng)中選擇Load Binary,內(nèi)存選擇為以DDR SDRAM的0x59 000 000作為暫時(shí)存放.bit文件起始地址的內(nèi)存區(qū)。這樣做的好處是不需要進(jìn)行額外的下載電纜連接操作,使芯片系統(tǒng)重構(gòu)時(shí)沒有對(duì)電纜的插拔要求,只需要通過相應(yīng)軟件操作即可。
2.3.2 從NAND啟動(dòng)
將初始化代碼和應(yīng)用代碼燒寫到Flash后,ARM處理器以NAND Flash模式啟動(dòng)時(shí),內(nèi)置的NAND Flash控制器將訪問控制接口,將其第0塊前8 KB的代碼自動(dòng)加載到內(nèi)部SRAM中,而片內(nèi)SRAM被映射到地址0x0,上電后運(yùn)行實(shí)現(xiàn)初始化硬件等基本功能。利用片內(nèi)SRAM中的代碼把NAND Flash中的程序代碼復(fù)制到DDR SDRAM以0x51 000 000作為起始地址的內(nèi)存中去,通過MMU實(shí)現(xiàn)0x51 000 000到0x0的映射,采用PC指針實(shí)現(xiàn)跳轉(zhuǎn)至0x0執(zhí)行應(yīng)用代碼。
2.3.3 對(duì)FPGA發(fā)送配置數(shù)據(jù)
在S3C6410中,通用接口的大多數(shù)引腳都是多功能引腳,可以通過端口配置寄存器選擇相應(yīng)的引腳功能。對(duì)于端口N,控制寄存器GPNCON用于設(shè)定引腳的輸入、輸出或者特殊的功能。如圖3硬件連接框圖所示,數(shù)據(jù)寄存器GPNDAT[10]對(duì)應(yīng)GPN10引腳上的數(shù)據(jù),在時(shí)鐘產(chǎn)生的同時(shí)對(duì)其寫1、0、1實(shí)現(xiàn)INIT_B的初始時(shí)序控制。NAND Flash啟動(dòng)完成初始化后,應(yīng)用代碼實(shí)現(xiàn)從Flash相應(yīng)存儲(chǔ)區(qū)域讀出FPGA配置信息到一段可用地址(如DDR SDRAM中以0x59 000 000開始的存儲(chǔ)區(qū)),然后從將其中的數(shù)據(jù)寫到雙端口RAM中,由FPGA與雙端口RAM的數(shù)據(jù)線復(fù)用,完成配置數(shù)據(jù)加載到FPGA,實(shí)現(xiàn)配置。
由于采用了寫使能信號(hào)nWE作為配置時(shí)鐘CCLK,向雙端口RAM的地址線中寫配置信息即產(chǎn)生時(shí)鐘,并且在nWE寫使能信號(hào)的上升沿來實(shí)現(xiàn)數(shù)據(jù)采集的功能。
3 實(shí)現(xiàn)結(jié)果及分析
實(shí)現(xiàn)結(jié)果如圖5、圖6所示,圖中解釋了FPGA的CCLK、INIT_B、PROGRAM_B幾個(gè)控制信號(hào)的變化以及部分配置數(shù)據(jù)。其中,橫縱坐標(biāo)分別表示時(shí)間變化和在相應(yīng)時(shí)間變化中的信號(hào)采樣值,縱坐標(biāo)D9、D10、D11分別表示CCLK、INIT_B、PROGRAM_B,D0:D7作為數(shù)據(jù)線D[0:7]。其中時(shí)鐘的產(chǎn)生可以通過向雙端口RAM某個(gè)可用地址中寫數(shù)據(jù)來實(shí)現(xiàn)(這里寫的是0x8)。圖5中,D10一段連續(xù)低電平是FPGA自動(dòng)CRC校驗(yàn)過程,在CRC校驗(yàn)完畢,D10拉高后開始傳送配置信息。圖6為FPGA配置部分波形展開圖。
SelectMAP模式中總線寬度為8 bit的配置方案在TD-LTE綜合測(cè)試儀表中已經(jīng)成功實(shí)現(xiàn)。這種配置方式也可以用在其他具有相似硬件環(huán)境的情況,如果采用16 bit或者32 bit的傳輸,相應(yīng)地時(shí)速會(huì)成倍提高。
本文介紹的系統(tǒng)采用了ARM+NAND Flash的FPGA配置模式,外圍利用SDRAM和DP_RAM的硬件電路,實(shí)現(xiàn)FPGA自動(dòng)加載配置。這種方法靈活且具有保密性,修改、升級(jí)簡(jiǎn)便,可實(shí)現(xiàn)多任務(wù)電路結(jié)構(gòu)重構(gòu)和自動(dòng)重載,滿足自動(dòng)配置的要求,同時(shí)也有益于整個(gè)系統(tǒng)啟動(dòng),方便了整個(gè)系統(tǒng)啟動(dòng)控制,對(duì)無線TD-LTE系統(tǒng)的底層控制實(shí)現(xiàn)具有重要意義,應(yīng)用范圍非常廣泛。
參考文獻(xiàn)
[1] 梅安華,田建生,劉歡,等.基于PCI總線的FPGA配置系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2005,13(4):375-377.
[2] 王爾申,張淑芳,胡青.嵌入式GPS接收機(jī)系統(tǒng)的FPGA配置方法研究[J].計(jì)算機(jī)工程與應(yīng)用,2009,45(4):86-88.
[3] 128 M×8 bit NAND flash memory REV 0.2[EB].Samsung Electronics.2008.
[4] 柔性材料.數(shù)據(jù)銷毀背后的16條法則[EB/OL].(2010-04-16)[2012-1-9].http://www.mcplive.cn/index.php/article/index/id/5347/page/4.htm.
[5] Xilinx, Inc.Virtex-5 FPGA Configuration User Guide[EB].UG191(v3.1) April 25,2008.
[6] Yang Wenlong,Wang Lingli,Zhou Xuegong.CRC circuit design for SRAM-Based FPGA configuration bit correction[J].IEEE,2010(11).
[7] S3C6410X RISC Microprocessor User's Manual[EB].Samsung Electronics.REV 1.10.2008.