文献标识码: 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.