文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.014
中文引用格式: 張德民,,童慶,,劉貽靜,等. 一種基于TMS320C6A8168的FPGA動態(tài)配置方法[J].電子技術應用,,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容量,、速度、資源等方面的局限性,,在完成某些復雜嵌入式系統(tǒng)的設計中存在很大困難。然而將復雜的系統(tǒng)設計分割為若干獨立模塊[1],,每個模塊由單個FPGA實現(xiàn),,并輔以多FPGA間的有效接口,則能很好地解決FPGA規(guī)模的局限性問題,。另一方面,,同一套硬件設備可加載不同的配置文件到多FPGA系統(tǒng)[2]中,以實現(xiàn)設備功能多變的應用需求,。例如:在移動通信信令分析儀中,,為了兼容全球移動通信系統(tǒng)(Global System for Mobile communication,GSM),、時分同步碼分多址(Time Division-Synchronous Code Division Multiple Access,,TD-SCDMA)、分時長期演進(Time Division Long Term Evolution,,TD-LTE),、頻分雙工LTE(Frequency Division Duplexing LTE,F(xiàn)DD-LTE)等不同的通信制式,,就必須動態(tài)地對多FPGA進行配置,。
1 Multi FPGA配置方案
傳統(tǒng)多FPGA系統(tǒng)的解決方案大致可分為分散配置方案和集中配置方案兩種,配置結構如圖1所示,。
圖1 傳統(tǒng)配置方案的配置結構
分散配置方案中各FPGA分別采用主模式加載外部帶電可擦寫可編程只讀存儲器(EEPROM)中的配置文件完成配置,,需要設計多個獨立的配置電路,從而增加了系統(tǒng)的復雜度和成本,。集中配置會出現(xiàn)EEPROM容量不足,,以及系統(tǒng)中的多片F(xiàn)PGA無法在不同版本的配置文件之間進行智能切換等問題。針對以上配置的不足,,本文設計了基于ARM,、SD卡、EMAC和串口的多FPGA命令選擇配置方案,,該方案使用ARM的人機交互接口讀取用戶選擇命令,,控制接口和數(shù)據(jù)接口按照配置時序完成配置,,實現(xiàn)了用戶可根據(jù)設備不同的功能要求,自主選擇FPGA配置文件[3-4],。
2 基于ARM的多FPGA串口命令選擇配置的硬件設計
本方案選用TI公司雙核處理器TMS320C6A8168作為系統(tǒng)的主控芯片,。網(wǎng)卡選用LSI公司的ET1011C千兆網(wǎng)卡來加載網(wǎng)絡端的 FPGA文件,大大提升了文件加載的效率,。SD卡選用傳輸速度30 MB/s,、容量16 GB的 Kingston存儲器,存儲通用啟動引導程序(Universal boot loader,,U-boot)映像文件,。輔助 FPGA采用專門應用于系統(tǒng)集成度高和安全性非常關鍵的非易失性領域Spartan-3AN系列的FPGA XC3S400AN。整個硬件電路框圖如圖2所示,。
圖2 Multi FPGA配置電路圖
配置程序以及配置文件放在PC上,,上電后ARM執(zhí)行根據(jù)硬件信息定制的U-boot,并通過串口在超級終端上打印配置文件選擇信息及對應的設備功能說明,;然后根據(jù)用戶輸入的命令先將所選配置文件從PC通過TFTP方式下載到內存DDR,,再通過配置程序將DDR中的文件通過輔助FPGA分次寫入待配置FPGA中,依次完成對FPGA的配置,。其中FPGA的配置文件為.bit格式,,加載配置文件的格式為.out,SD卡的啟動引導文件為MLO,,U-boot為u-boot.bin,。整個文件的布局如圖3所示[5]。
圖3 各個文件布局
3 基于ARM的多FPGA串口命令選擇配置的軟件設計
系統(tǒng)上電后,,ARM加載SD卡中的U-boot代碼完成系統(tǒng)軟硬件環(huán)境的初始化,,然后將用戶所選的配置文件依次拷貝到DDR中指定的位置。通過執(zhí)行配置代碼,,利用FPGA邏輯可變性,,按照時序[6]將DDR中的配置文件通過XC3S400AN依次寫入到4片待配置FPGA中,實現(xiàn)所有FPGA的配置[7],??偭鞒倘鐖D4所示。
圖4 燒寫配置代碼的流程圖
3.1 U-boot代碼的設計
根據(jù)已有的C6A8168 U-boot代碼更改[8-10],,在U-boot/
common/main.c源代碼打印倒計時啟動代碼后面添加部分代碼如下:
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語句能夠實現(xiàn)對環(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對應的命令為: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í)行該代碼,,以實現(xiàn)將配置文件加載到輔助FPGA中實現(xiàn)對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-;
此時U-boot編譯分為兩步:
第一步:$ make distclean
$ make ti8168_evm_min_sd
$ make u-boot.ti
先用make distclean 將之前的編譯過程中生成的代碼刪除,,其次由于SD卡啟動時U-boot鏡像文件通常小于125 KB,,所以此處用make ti8168_evm_min_sd來實現(xiàn)SD卡啟動時配置,;運用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卡啟動的第二階段,。
經(jīng)過以上兩步可以得到MLO和u-boot.bin啟動文件,。
3.3 TFTP的配置用于EMAC加載PC上的FPGA配置文件
考慮到加載速度問題,本方案采用千兆網(wǎng)口加載,,選擇PC作為服務器使用,。基帶板的IP與PC的IP在同一網(wǎng)絡中:將PC和基帶板中的EMAC網(wǎng)卡的IP分別設置為192.168.1.11,、192.168.1.22,,子網(wǎng)掩碼為255.255.255.0,網(wǎng)關為192.168.1.1,;此時,上電時在倒計時3 s之內,,通過按下選擇對應的FPGA配置文件的按鍵,,就會利用TFTP方式從PC上加載所選擇的代碼。沒有在倒計時3 s之內按下選擇按鍵,,根據(jù)U-boot 會加載默認的配置文件,。
4 數(shù)據(jù)測試及結果
根據(jù)測試對象及環(huán)境的不同,加載不同制式的配置文件使儀表兼容GSM,、TD-SCDMA,、TD-LTE、FDD-LTE 4種通信網(wǎng)絡,,滿足不同環(huán)境的測試環(huán)境以及5 M,、10 M、15 M,、20 M 4種帶寬,,模擬單小區(qū)多用戶、單天線,、多天線等配置,,實現(xiàn)了動態(tài)加載配置文件的需求。
在移動通信信令分析儀中對該方案測試配置時間,。在不同的ARM時鐘頻率和平均配置文件下多次測得并完成FPGA配置所需的時間如表1所示,。
5 結論
本方案通過ARM的啟動選擇性地加載FPGA配置文件,實現(xiàn)基帶系統(tǒng)的上電自啟動,。并且從系統(tǒng)結構,、原理設計,、硬件構造、軟件實現(xiàn)等方面給出具體實現(xiàn),,其中軟硬件設計較為獨立完整,,在通信電子、計算機領域具有一定的應用價值,。
參考文獻
[1] 張倩莉,,于芳,劉忠立,,等.結合用戶約束文件的高效多FPGA系統(tǒng)分割方法[J].哈爾濱工業(yè)大學學報,,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動態(tài)配置方法及實現(xiàn)[J].通信技術,2012,,45(3):105-110.
[4] 張承暢.多FPGA系統(tǒng)的關鍵問題及應用研究[D].重慶:重慶大學,,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] 紀斌.Xilinx FPGA上電時序分析與設計[J].電訊技術,,2012,,52(4):591-594.
[7] 李飛飛,蘇延川,,王鵬.基于DSP的FPGA配置方法研究與實現(xiàn)[J].現(xiàn)代電子技術,,2011,34(24):60-62.
[8] 楊宗富.基于ARM的系統(tǒng)啟動過程研究與系統(tǒng)移植[D].北京:北方工業(yè)大學,,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.