文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.014
中文引用格式: 張德民,童慶,劉貽靜,等. 一種基于TMS320C6A8168的FPGA動(dòng)態(tài)配置方法[J].電子技術(shù)應(yīng)用,2016,42(9):55-57,61.
英文引用格式: Zhang Demin,Tong Qing,Liu Yijing,et al. A method of FPGA dynamic configuration based on TMS320C6A8168[J].Application of Electronic Technique,2016,42(9):55-57,61q.
0 引言
基帶處理系統(tǒng)中由于FPGA容量、速度、資源等方面的局限性,在完成某些復(fù)雜嵌入式系統(tǒng)的設(shè)計(jì)中存在很大困難。然而將復(fù)雜的系統(tǒng)設(shè)計(jì)分割為若干獨(dú)立模塊[1],每個(gè)模塊由單個(gè)FPGA實(shí)現(xiàn),并輔以多FPGA間的有效接口,則能很好地解決FPGA規(guī)模的局限性問題。另一方面,同一套硬件設(shè)備可加載不同的配置文件到多FPGA系統(tǒng)[2]中,以實(shí)現(xiàn)設(shè)備功能多變的應(yīng)用需求。例如:在移動(dòng)通信信令分析儀中,為了兼容全球移動(dòng)通信系統(tǒng)(Global System for Mobile communication,GSM)、時(shí)分同步碼分多址(Time Division-Synchronous Code Division Multiple Access,TD-SCDMA)、分時(shí)長期演進(jìn)(Time Division Long Term Evolution,TD-LTE)、頻分雙工LTE(Frequency Division Duplexing LTE,F(xiàn)DD-LTE)等不同的通信制式,就必須動(dòng)態(tài)地對(duì)多FPGA進(jìn)行配置。
1 Multi FPGA配置方案
傳統(tǒng)多FPGA系統(tǒng)的解決方案大致可分為分散配置方案和集中配置方案兩種,配置結(jié)構(gòu)如圖1所示。
圖1 傳統(tǒng)配置方案的配置結(jié)構(gòu)
分散配置方案中各FPGA分別采用主模式加載外部帶電可擦寫可編程只讀存儲(chǔ)器(EEPROM)中的配置文件完成配置,需要設(shè)計(jì)多個(gè)獨(dú)立的配置電路,從而增加了系統(tǒng)的復(fù)雜度和成本。集中配置會(huì)出現(xiàn)EEPROM容量不足,以及系統(tǒng)中的多片F(xiàn)PGA無法在不同版本的配置文件之間進(jìn)行智能切換等問題。針對(duì)以上配置的不足,本文設(shè)計(jì)了基于ARM、SD卡、EMAC和串口的多FPGA命令選擇配置方案,該方案使用ARM的人機(jī)交互接口讀取用戶選擇命令,控制接口和數(shù)據(jù)接口按照配置時(shí)序完成配置,實(shí)現(xiàn)了用戶可根據(jù)設(shè)備不同的功能要求,自主選擇FPGA配置文件[3-4]。
2 基于ARM的多FPGA串口命令選擇配置的硬件設(shè)計(jì)
本方案選用TI公司雙核處理器TMS320C6A8168作為系統(tǒng)的主控芯片。網(wǎng)卡選用LSI公司的ET1011C千兆網(wǎng)卡來加載網(wǎng)絡(luò)端的 FPGA文件,大大提升了文件加載的效率。SD卡選用傳輸速度30 MB/s、容量16 GB的 Kingston存儲(chǔ)器,存儲(chǔ)通用啟動(dòng)引導(dǎo)程序(Universal boot loader,U-boot)映像文件。輔助 FPGA采用專門應(yīng)用于系統(tǒng)集成度高和安全性非常關(guān)鍵的非易失性領(lǐng)域Spartan-3AN系列的FPGA XC3S400AN。整個(gè)硬件電路框圖如圖2所示。
圖2 Multi FPGA配置電路圖
配置程序以及配置文件放在PC上,上電后ARM執(zhí)行根據(jù)硬件信息定制的U-boot,并通過串口在超級(jí)終端上打印配置文件選擇信息及對(duì)應(yīng)的設(shè)備功能說明;然后根據(jù)用戶輸入的命令先將所選配置文件從PC通過TFTP方式下載到內(nèi)存DDR,再通過配置程序?qū)DR中的文件通過輔助FPGA分次寫入待配置FPGA中,依次完成對(duì)FPGA的配置。其中FPGA的配置文件為.bit格式,加載配置文件的格式為.out,SD卡的啟動(dòng)引導(dǎo)文件為MLO,U-boot為u-boot.bin。整個(gè)文件的布局如圖3所示[5]。
圖3 各個(gè)文件布局
3 基于ARM的多FPGA串口命令選擇配置的軟件設(shè)計(jì)
系統(tǒng)上電后,ARM加載SD卡中的U-boot代碼完成系統(tǒng)軟硬件環(huán)境的初始化,然后將用戶所選的配置文件依次拷貝到DDR中指定的位置。通過執(zhí)行配置代碼,利用FPGA邏輯可變性,按照時(shí)序[6]將DDR中的配置文件通過XC3S400AN依次寫入到4片待配置FPGA中,實(shí)現(xiàn)所有FPGA的配置[7]??偭鞒倘鐖D4所示。
圖4 燒寫配置代碼的流程圖
3.1 U-boot代碼的設(shè)計(jì)
根據(jù)已有的C6A8168 U-boot代碼更改[8-10],在U-boot/
common/main.c源代碼打印倒計(jì)時(shí)啟動(dòng)代碼后面添加部分代碼如下:
switch (signal_command){
case 'a':{
printf("FPGA1 chose configure file 1\n");
s = getenv ("fpga1_1");
printf("execute command :%s\n",s);
run_command (s, 0);
}
…
}
以上Case語句能夠?qū)崿F(xiàn)對(duì)環(huán)境變量中的fpga1-1指令讀取和解析。其中fpga1-1指令在uboot/common/env_com-mon.c中添加:
#ifdef FPGA1_1_CONFIG_BOOTCOMMAN-D "fpga1_1=
"FPGA1_1_CONFIG_BOOTCOMMAND"\0"
#endif
FPGA1_1CONFIG_BOOTCOMMAND對(duì)應(yīng)的命令為:tftp 0x82000000 fpga1-1.bit,在u-boot/common/ti8168_
evm.h中添加:
# define FPGA1_1_CONFIG_BOOTCOMM-AND
"tftp 0x82000000 fpga1_1.bit;"
# define START_WRITE_CONFIGFILE
"tftp 0x40300000 fpga_init.out;go 0x40300000;"
以上命令利用TFTP方式將配置文件fpga1-1.bit和加載配置文件fpga_init.out下載到DDR的地址中,并執(zhí)行該代碼,以實(shí)現(xiàn)將配置文件加載到輔助FPGA中實(shí)現(xiàn)對(duì)FPGA1的配置[11]。
3.2 U-boot編譯
修改Makefile中ARCH與CROSS_COMPILE:
ARCH ?= arm ;
CROSS_COMPILE?=/opt/DVRRDK_02.00.00.23/ti_tools/cgt_a8/arm-2009q1/bin/arm-none-linux-guneabi-;
此時(shí)U-boot編譯分為兩步:
第一步:$ make distclean
$ make ti8168_evm_min_sd
$ make u-boot.ti
先用make distclean 將之前的編譯過程中生成的代碼刪除,其次由于SD卡啟動(dòng)時(shí)U-boot鏡像文件通常小于125 KB,所以此處用make ti8168_evm_min_sd來實(shí)現(xiàn)SD卡啟動(dòng)時(shí)配置;運(yùn)用make u-boot.ti 編譯代碼,最終生成u-boot.min.sd,然后將u-boot.min.sd重命名為MLO作為u-boot的第一階段;
第二步:$ make distclean
$ make ti8168_evm_config_nand
$ make u-boot.ti
以上代碼編譯生成Nandflash版的u-boot.bin,這里用于SD卡啟動(dòng)的第二階段。
經(jīng)過以上兩步可以得到MLO和u-boot.bin啟動(dòng)文件。
3.3 TFTP的配置用于EMAC加載PC上的FPGA配置文件
考慮到加載速度問題,本方案采用千兆網(wǎng)口加載,選擇PC作為服務(wù)器使用?;鶐О宓腎P與PC的IP在同一網(wǎng)絡(luò)中:將PC和基帶板中的EMAC網(wǎng)卡的IP分別設(shè)置為192.168.1.11、192.168.1.22,子網(wǎng)掩碼為255.255.255.0,網(wǎng)關(guān)為192.168.1.1;此時(shí),上電時(shí)在倒計(jì)時(shí)3 s之內(nèi),通過按下選擇對(duì)應(yīng)的FPGA配置文件的按鍵,就會(huì)利用TFTP方式從PC上加載所選擇的代碼。沒有在倒計(jì)時(shí)3 s之內(nèi)按下選擇按鍵,根據(jù)U-boot 會(huì)加載默認(rèn)的配置文件。
4 數(shù)據(jù)測試及結(jié)果
根據(jù)測試對(duì)象及環(huán)境的不同,加載不同制式的配置文件使儀表兼容GSM、TD-SCDMA、TD-LTE、FDD-LTE 4種通信網(wǎng)絡(luò),滿足不同環(huán)境的測試環(huán)境以及5 M、10 M、15 M、20 M 4種帶寬,模擬單小區(qū)多用戶、單天線、多天線等配置,實(shí)現(xiàn)了動(dòng)態(tài)加載配置文件的需求。
在移動(dòng)通信信令分析儀中對(duì)該方案測試配置時(shí)間。在不同的ARM時(shí)鐘頻率和平均配置文件下多次測得并完成FPGA配置所需的時(shí)間如表1所示。
5 結(jié)論
本方案通過ARM的啟動(dòng)選擇性地加載FPGA配置文件,實(shí)現(xiàn)基帶系統(tǒng)的上電自啟動(dòng)。并且從系統(tǒng)結(jié)構(gòu)、原理設(shè)計(jì)、硬件構(gòu)造、軟件實(shí)現(xiàn)等方面給出具體實(shí)現(xiàn),其中軟硬件設(shè)計(jì)較為獨(dú)立完整,在通信電子、計(jì)算機(jī)領(lǐng)域具有一定的應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 張倩莉,于芳,劉忠立,等.結(jié)合用戶約束文件的高效多FPGA系統(tǒng)分割方法[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2012,44(7):144-148.
[2] LADDHA S,DE K B.EDA tools and design methodology for multi-FPGA designing/prototyp-ing[EB/OL].[2015-1-26].http://www.design-reu-se.c-om/articles/22074/formulti-fpga-designing-prototyping.html.
[3] 陳曦,沈佐峰.一種可靠的FPGA動(dòng)態(tài)配置方法及實(shí)現(xiàn)[J].通信技術(shù),2012,45(3):105-110.
[4] 張承暢.多FPGA系統(tǒng)的關(guān)鍵問題及應(yīng)用研究[D].重慶:重慶大學(xué),2011.
[5] YAN D G,ZHANG C C,TONG R J.A new configuration scheme for multi-FPGA systems based on XCF32P[C].International Conference on Industry,Information System and Material Engineering,2011:1014-1017.
[6] 紀(jì)斌.Xilinx FPGA上電時(shí)序分析與設(shè)計(jì)[J].電訊技術(shù),2012,52(4):591-594.
[7] 李飛飛,蘇延川,王鵬.基于DSP的FPGA配置方法研究與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(24):60-62.
[8] 楊宗富.基于ARM的系統(tǒng)啟動(dòng)過程研究與系統(tǒng)移植[D].北京:北方工業(yè)大學(xué),2014.
[9] PETER B,PATRICK C.Linux for embedded and real-time applications(Third Edition)[M].Great Britain:Elsevier,2013:225-232.
[10] Xilinx Inc.Spartan-3AN FPGA family data sheet[EB/OL].[2015-1-26].http://www.xilinx.com/support/documenta
[11] Texas Instruments Inc.DM816x AM389x PSP flashing tools guide[EB/OL].[2015-1-26].http://processors.wiki.ti.com/
index.php/DM816x_AM389x_PSP_Flashing_Tools_Guide.