《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM和NAND Flash的FPGA加載配置在TD-LTE中的實(shí)現(xiàn)
基于ARM和NAND Flash的FPGA加載配置在TD-LTE中的實(shí)現(xiàn)
來源:電子技術(shù)應(yīng)用2012年第7期
董宏成,魏 楊
重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065
摘要: 提出一種基于ARM和NAND Flash的FPGA加載配置的設(shè)計(jì)。選取Virtex-5系列的XC5VSX95T和ARM11系列的S3C6410處理器作為硬件平臺,研究了利用NAND Flash自啟動、以8 bit的SelectMAP模式配置FPGA的流程及實(shí)現(xiàn)。介紹了其配置原理、軟硬件實(shí)現(xiàn)過程以及實(shí)現(xiàn)結(jié)果分析,重點(diǎn)分析了ARM+NAND的控制方法。該方案已在TD-LTE無線綜合測試儀表中成功應(yīng)用,是一套靈活和高效的FPGA配制方法。
中圖分類號: TN929.5
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2012)07-0026-04
Implementation of FPGA configuration based on ARM and NAND Flash in TD-LTE
Dong Hongcheng,Wei Yang
College of Communications and Information Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: A kind of FPGA configuration based on ARM and NAND Flash was proposed in this article. Selecting Virtex-5-series XC5VSX95 and ARM11-series S3C6410 processor as the hardware platform and introducing the FPGA configuration process and implementation of 8 bit SelectMAP mode by using NAND Flash. This paper described the configuration principle, hardware and software implementation process and implementation results, and put emphasis on the control method on ARM and NAND Flash. It is a flexible and efficient FPGA configuration method, the final solution has been applied successfully in TD-LTE wireless comprehensive test system.
Key words : FPGA configuration;S3C6410;SelectMAP mode;NAND Flash

    TD-LTE無線綜合測試儀平臺的主要功能是測試接收端與發(fā)射端信號的差異,即接收和發(fā)射端信號的誤碼率等性能的優(yōu)劣,其物理層采用通用的FPGA+DSP+ARM硬件架構(gòu),具有開發(fā)周期短、可擴(kuò)展性好等優(yōu)點(diǎn)。

    現(xiàn)場可編程門陣列FPGA是基于門陣列方式為用戶提供可編程資源,其內(nèi)部邏輯結(jié)構(gòu)的形成是由配置數(shù)據(jù)決定的。由于SRAM的易失性,每次上電時(shí),都必須對FPGA重新進(jìn)行配置、完成下行鏈路OFDM信號以及底層交互相關(guān)信號的產(chǎn)生等功能。
    對于FPGA配置,大多數(shù)是采用將配置數(shù)據(jù)存放在FPGA組成的系統(tǒng)上[1-2]或者將配置數(shù)據(jù)存放在使用者自己攜帶的外部存儲器中的實(shí)現(xiàn)方式,后者在系統(tǒng)上電時(shí)需由其他外部控制器讀出配置數(shù)據(jù)再傳送給FPGA進(jìn)行配置。本文提出在TD-LTE無線綜合測試儀平臺上,通過嵌入式微處理器ARM將配置數(shù)據(jù)存放于NAND Flash[3]中,由Flash上電啟動讀出配置數(shù)據(jù)再對FPGA進(jìn)行配置。這種方法不但修改、升級簡便,而且由于NAND Flash在寫入數(shù)據(jù)時(shí)都需要先擦除再寫入,所以具有很好的保密性[4],并且可以方便地存儲大容量配置數(shù)據(jù)或多個(gè)配置數(shù)據(jù)文件等。本文介紹了TD-LTE無線綜合測試儀平臺上電后自動加載對FPGA器件進(jìn)行配置的設(shè)計(jì)與實(shí)現(xiàn)的新方法,對無線TD-LTE系統(tǒng)的底層控制實(shí)現(xiàn)具有重要意義。
1 配置原理
1.1 配置模式

    Xilinx公司為其FPGA系列產(chǎn)品提供了多種數(shù)據(jù)配置方式,在TD-LTE綜合測試儀的研究中選用的是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ū)動,而且總是每個(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)試及檢測方便,本文選擇8 bit總線寬度。該模式所用到的配置引腳為模式選擇M[2:0]、配置時(shí)鐘CCLK、配置復(fù)位PROGRAM_B、配置完成DONE、配置數(shù)據(jù)8 bit并行輸入DATA[0:7]和CRC[6]校驗(yàn)信號INIT_B、片選信號CS_B、回讀信號BUSY以及從SelectMAP模式使能信號PDWR_B,其中的時(shí)鐘控制信號可編程實(shí)現(xiàn)。在綜合測試儀中,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綜合測試儀的設(shè)計(jì)要求并考慮到測試的方便性,采用8 bit從SelectMAP模式對XC5VSX95T進(jìn)行配置是較好選擇。
2 總體實(shí)現(xiàn)及流程
2.1 配置流程

    圖1給出了FPGA配置流程框圖。在上電時(shí),PROGRAM_B輸入上的邏輯低電平將會復(fù)位配置邏輯,并且使FPGA保持在清空配置存儲器的狀態(tài)。只要PROGRAM_B引腳保持低電平,則FPGA將繼續(xù)清空它的配置存儲器并使INIT_B信號保持為低電平以表明配置存儲器在被清空。當(dāng)PROGRAM_B被釋放時(shí),F(xiàn)PGA將繼續(xù)使INIT_B保持為低電平,直到完成清空所有的配置存儲器。只要INIT_B信號變?yōu)楦唠娖綍r(shí),表明清除動作完成,配置就可以開始了。在INIT_B的上升沿,模式選擇引腳M[2:0]被采樣,以決定配置模式,若為110,則采用從SelectMAP模式。此后配置文件信息在CCLK的控制下由D[0:7]共8個(gè)配置引腳并行輸入XC5VSX95T中。配置數(shù)據(jù)在CCLK的上升沿采樣一個(gè)字節(jié)。在配置期間芯片會自動進(jìn)行CRC錯誤檢驗(yàn),若發(fā)生了CRC校驗(yàn)錯誤,則INIT_B引腳將被置低。當(dāng)最后的CRC校驗(yàn)成功完成后,F(xiàn)PGA進(jìn)入啟動時(shí)序。這個(gè)時(shí)序期間將會釋放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的存儲器存放入Flash中,以ARM處理器作為主設(shè)備,F(xiàn)PGA作為從設(shè)備。系統(tǒng)上電后,ARM通過讀取相應(yīng)的配置文件對FPGA進(jìn)行配置,256 MB的DDR SDRAM作為程序運(yùn)行空間,將NAND Flash中代碼移至SDRAM中運(yùn)行。
2.2.1 外圍芯片
    (1)S3C6410
    S3C6410基于ARM1176JZF-S處理器核,是一類低功率、高性價(jià)比、高性能、用于手持和移動等終端設(shè)備的通用RISC處理器。其主頻芯片可達(dá)667 MHz,采用64/32 bit的內(nèi)部總線架構(gòu),擁有比S3C2440、S3C2410等更加豐富的接口。
    在S3C6410中,由系統(tǒng)時(shí)鐘控制邏輯生成所需要的系統(tǒng)時(shí)鐘信號,用于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(頁)×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信號線相連接,如圖3所示。采用S3C6410的通用接口GPN10、GPN12、GPN13分別控制INIT_B、DONE、PRORAM_B,用ARM的外部存儲器雙端口RAM的寫使能信號nWE控制CCLK,同時(shí)其數(shù)據(jù)線DATA[0:7]作為信息輸入的D[0:7]。

 

 

2.3 軟件設(shè)計(jì)
    根據(jù)圖2 FPGA配置時(shí)序圖,主設(shè)備ARM編程要實(shí)現(xiàn)各信號的時(shí)序要求。ARM軟件控制設(shè)計(jì)流程如圖4所示,其中應(yīng)用代碼包含F(xiàn)PGA 的配置驅(qū)動。
2.3.1 比特文件的下載
    對所設(shè)計(jì)的FPGA在Xilinx公司的ISE10.1軟件平臺上運(yùn)用Verilog語言編譯運(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í)沒有對電纜的插拔要求,只需要通過相應(yīng)軟件操作即可。
2.3.2 從NAND啟動
    將初始化代碼和應(yīng)用代碼燒寫到Flash后,ARM處理器以NAND Flash模式啟動時(shí),內(nèi)置的NAND Flash控制器將訪問控制接口,將其第0塊前8 KB的代碼自動加載到內(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 對FPGA發(fā)送配置數(shù)據(jù)
    在S3C6410中,通用接口的大多數(shù)引腳都是多功能引腳,可以通過端口配置寄存器選擇相應(yīng)的引腳功能。對于端口N,控制寄存器GPNCON用于設(shè)定引腳的輸入、輸出或者特殊的功能。如圖3硬件連接框圖所示,數(shù)據(jù)寄存器GPNDAT[10]對應(yīng)GPN10引腳上的數(shù)據(jù),在時(shí)鐘產(chǎn)生的同時(shí)對其寫1、0、1實(shí)現(xiàn)INIT_B的初始時(shí)序控制。NAND Flash啟動完成初始化后,應(yīng)用代碼實(shí)現(xiàn)從Flash相應(yīng)存儲區(qū)域讀出FPGA配置信息到一段可用地址(如DDR SDRAM中以0x59 000 000開始的存儲區(qū)),然后從將其中的數(shù)據(jù)寫到雙端口RAM中,由FPGA與雙端口RAM的數(shù)據(jù)線復(fù)用,完成配置數(shù)據(jù)加載到FPGA,實(shí)現(xiàn)配置。
    由于采用了寫使能信號nWE作為配置時(shí)鐘CCLK,向雙端口RAM的地址線中寫配置信息即產(chǎn)生時(shí)鐘,并且在nWE寫使能信號的上升沿來實(shí)現(xiàn)數(shù)據(jù)采集的功能。
3 實(shí)現(xiàn)結(jié)果及分析
    實(shí)現(xiàn)結(jié)果如圖5、圖6所示,圖中解釋了FPGA的CCLK、INIT_B、PROGRAM_B幾個(gè)控制信號的變化以及部分配置數(shù)據(jù)。其中,橫縱坐標(biāo)分別表示時(shí)間變化和在相應(yīng)時(shí)間變化中的信號采樣值,縱坐標(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自動CRC校驗(yàn)過程,在CRC校驗(yàn)完畢,D10拉高后開始傳送配置信息。圖6為FPGA配置部分波形展開圖。


    SelectMAP模式中總線寬度為8 bit的配置方案在TD-LTE綜合測試儀表中已經(jīng)成功實(shí)現(xiàn)。這種配置方式也可以用在其他具有相似硬件環(huán)境的情況,如果采用16 bit或者32 bit的傳輸,相應(yīng)地時(shí)速會成倍提高。
    本文介紹的系統(tǒng)采用了ARM+NAND Flash的FPGA配置模式,外圍利用SDRAM和DP_RAM的硬件電路,實(shí)現(xiàn)FPGA自動加載配置。這種方法靈活且具有保密性,修改、升級簡便,可實(shí)現(xiàn)多任務(wù)電路結(jié)構(gòu)重構(gòu)和自動重載,滿足自動配置的要求,同時(shí)也有益于整個(gè)系統(tǒng)啟動,方便了整個(gè)系統(tǒng)啟動控制,對無線TD-LTE系統(tǒng)的底層控制實(shí)現(xiàn)具有重要意義,應(yīng)用范圍非常廣泛。
參考文獻(xiàn)
[1] 梅安華,田建生,劉歡,等.基于PCI總線的FPGA配置系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測量與控制,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。