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