张德民,董晓朋,张爱平,王华华
(重庆邮电大学 重庆市移动通信技术重点实验室,重庆 400065)
2013年12月,工信部正式向三大运营商发布4G牌照,标志着我国的4G产业正式进入商用阶段。LTE项目是3G的演进,它改进了3G的空中接入技术,采用OFDM技术和MIMO技术作为其无线网络演进的唯一标准。LTE系统提出了下行峰值速率可达100 Mb/s,上行可达50 Mb/s的目标[1]。如此大的上下行峰值速率,对LTE系统的硬件平台的处理速度提出了更高的要求。
通用DSP芯片虽然已经能满足算法控制结构复杂、运算速度高、寻址方式灵活等需求,但是传统的DSP芯片由于依然采用串行结构,对于上行信道中的一些需要处理数据量大、处理速度高,但是对于上行信道中的一些运算结构相对简单的底层数字信号处理算法,例如DFT以及IFFT运算,并没有优势可言[2]。
DSP+FPGA开发平台与仅采用DSP处理器的传统应用相比,能够将系统性能提升一个数量级以上。FPGA处理器具有硬件结构可重构的特点,适合算法结构固定、运算量大的前端数字信号处理,可以释放DSP带宽以处理其他功能,FPGA在数字信号处理领域显示出自己特有的优势[3]。目前以DSP作为主处理器,FPGA作为协处理器的硬件架构已经广泛应用于数字图像处理、汽车制造、移动通信等领域。TD-LTE系统中,以DSP+FPGA作为实现算法的硬件平台核心已是大势所趋,而如何使DSP与FPGA高效快速地实现双向数据通信也成为急需解决的问题。基于此,本文主要介绍了一种实现DSP双向通信的实现方案.
方案基于LTE系统上行共享信道,方案设计总体框图如图1所示。数据通信主要基于EMIF接口实现,DSP通过EMIF接口向FPGA发送数据。由于在FPGA中设计的模块较多,而且许多模块都需要从DSP获取配置信息和数据信息,为了使各个模块能够正确接收数据,FPGA中设计了EMIF解析模块,根据EMIF接口中的地址信号EA以及片选信号CE确定当前从EMIF接口接收的数据应当分配给哪一个模块。
图1 方案基本框图
LTE系统中,上行数据要在特定的子帧中发送,因此需要根据TD-LTE系统对时序的要求,设计时序控制模块,即Timer模块。在LTE系统中一个子帧的持续时间为 30 720个 Ts(Ts=1/30 720 ms),对系统的 122.88 MHz进行时钟计数,当时钟计数达到122 880时,一个子帧结束,通过一个GPIO接口向DSP发送中断信号,告知DSP该子帧已经结束,并通过EMIF接口向DSP发送子帧号以及帧号,使DSP进入中断函数进行相关操作。
图1中,DFT模块主要用于完成预编码功能;IFFT模块主要用于完成基带信号生成功能;TX模块将基带信号的I/Q(虚部与实部)两路数据经过并串变换后合成一路数据,并且将得到的数据发送至中频。
图2 平台架构图
平台架构如图2所示,DSP芯片采用TI公司的TMS320C6455,该芯片为定点DSP芯片,时钟主频可达1.2 GHz,芯片的处理速度高达每秒 9 600万条(MIPS)指令,能够满足LTE复杂的编码算法对处理速度的要求。C6455芯片采用了两级存储结构,层一的RAM容量为32 KB,用于程序和数据的高速存储,这一段存储区离CPU较近,被分成了高速数据缓存区L1D和高速程序缓冲区L1P;层二则由数据和程序共享,共2 096 KB。两个通用寄存器组分别包含32个位宽为32的寄存器,寄存器组可以被用作存储数据或地址指针。C6455芯片的外设和接口主要有:内部集成总线(I2C)接口、外部存储器接口(EMIF)、多通道缓冲串行端口(McBSP)、高速串行收发器(SRIO)以及通用输入输出端口(GPIO)[4]。
DSP芯片的EMIF接口主要用来完成FPGA与DSP的高速数据传输。EMIF采用异步传输机制,接口的输出时钟频率很高,可以达到 200 MHz,数据位宽可以配置为 8 bit、16 bit、32 bit或者 64 bit,数据传输速率较快,可以满足LTE系统对DSP与FPGA数据交互速率的要求。DSP芯片的GPIO接口通过转接芯片与Virtex-6芯片相连,在硬件平台上共有32条GPIO线连接DSP芯片与FPGA芯片。数据交互是基于EDMA(增强型直接存取)完成的,需要DSP芯片调用EDMA将数据搬到指定地址,再发往 FPGA。
根据设计的需要,选用了两片FPGA芯片,分别是Xilinx公司的Virtex6 XC6VSX475T芯片和Spartan芯片。Virtex6芯片用于实现LTE上行算法以及系统的整体时序控制,该芯片具有真正的六输入查找表(LUT)结构(64 bit ROMs),在芯片上嵌入了64位宽的分布式RAM和32位宽的分布式移位寄存器查找表(SRL32),强大的 36 KB Block RAM/FIFO,增强型的 25×18 DSP48E1 slices以及有 840个用户I/O接口,内嵌了零延迟缓冲、时钟相位偏移和时钟综合的数字管理器(DCM)和锁相环(PLL),且包含多种IP核,可以高效地实现FFT、DFT物理层等算法。
方案中涉及到的软件设计主要有:EMIF接口软件在CCS环境下的设计以及逻辑控制模块在ISE编译环境下的设计。
设计中,主要通过EMIF接口实现DSP与FPGA的双向数据通信,即DSP既可以通过EMIF接口向FPGA发送编码数据和配置信息,同时也可以读取FPGA产生的同步信号。DSP与FPGA通信的存储映射区为0xD000 0000-0xD07FF FFFF,因此DSP需要调用EDMA将数据搬移至映射区的指定地址区域。DSP的EMIF读写周期可以分为三个阶段,即读写建立(Setup)、读写选通(Strobe)和读写保持(Hold)。 通过调试得出当 Setup、Strobe和 Hold长度分别设置为 1、2、1个时钟时,读写过程较为稳定。设计中通过EMIFA_CE5CFG寄存器的值设置EMIF接口的传输模式以及读写建立、读写选通和读写保持的时钟周期。
DSP首先要进行初始化,并且向FPGA发送复位信号与配置信息,例如系统带宽配置、RB配置以及上下行配置等,初始化FPGA内的寄存器。对于配置信息的发送并不需要EDMA参与,只需将配置信息直接写入对应映射区的对应地址中,DSP便可以将信息通过EMIF接口发送至FPGA。
为了避免基带算法在一个子帧内重复执行,设置编码完成标志Havedone,DSP与FPGA初始化完成以后,实现传送编码数据的具体流程如下:
(1)FPGA执行时序控制模块,子帧结束时通过GPIO向DSP发送中断信号。
(2)DSP接收到FPGA发送的中断后,执行中断函数,DSP将子帧号与帧号读取到事先约定好的映射区地址中,同时将编码完成标志位Havedone置为0。其中子帧号与帧号由FPGA中的时序控制模块产生。
(3)根据当前子帧号以及参考文献[1]中的上下行配置表判断当前子帧是否为上行子帧的前一子帧,并且判断标志位Havedone是否为零,如果上述两个条件均满足则进行基带算法处理并将标志位Havedone置为1。调用EDMA,将编码后数据搬移到映射区指定地址并通过EMIF发送至FPGA。
(4)FPGA通过EMIF解析模块,解析出数据的用户数据,以及数据在RAM区中存放的地址。
时序控制模块持续运行,上述过程循环执行。
在对FPGA的设计中通过调用IOBUF原语实现双向I/O端口。IOBUF原语中共有4个端口,分别是输出端口O、输入端口I、双向端口I/O和控制端口T。该原语会在FPGA中例化为一个三态门,I/O端口直接与顶层I/O端口相连,端口T控制三态门中数据流的方向,当T为零时I/O作为FPGA的输出端口,反之I/O端口作为FPGA的输入端口。IOBUF原语调用一次只能传输1 bit数据,因此需要使用循环生成块循环调用该原语,以实现64 bit数据并行传输。
为了解决DSP与FPGA数据处理的同步问题,设计了系统时序控制模块,即Timer模块。
模块采用122.88 MHz的时钟,应用计数器原理,每计数到122 879,计数器清零并产生一次子帧中断,子帧号加1。当子帧号等于9时,子帧号清零,帧号加1,当帧计数到1 023,帧号清零。在TD-LTE中无线帧传输速率为 30.72 MHz(一个无线帧长度为 Tf=307 200×Ts=10 ms),因此子帧计数寄存器右移2位,输出作为子帧计数的值(0~30 719)[5-6],其中子帧计数的值是后续模块实现的基础,常作为发送端和接收端发送和接收数据的地址。
在实际调试中发现,若采用LUT生成计数器自加的方法,当计数器的值作为后续模块取值地址时,由于路径延迟和时钟抖动可能导致计数产生误差,所以调用DSP48原语库<COUNTER_LOAD_MACRO>实现计数功能,调用<EQ_COMPARE_MACRO>实现计数器清零及初始化[7]。
FPGA把从DSP接收到的数据分配给相应的子模块,同时在运行时,FPGA要整合子模块发往DSP的信息,以适应双向端口的要求。为了完成上述功能,FPGA软件设计中设置了EMIF解析模块。
EMIF解析模块的数据分配功能主要通过配置FPGA子模块的使能信号实现,具体步骤如下:
(1)DSP配置为写模式,根据EMIFA_CE5CFG寄存器的配置确定AWE、CE信号的发送时序,AOE为持续高电平。
(2)DSP在发送数据的同时,根据发送数据的目的模块不同,将数据写入到映射区不同的地址中。EMIF将数据在映射区中地址的22到3位作为EA信号随同数据一起发送至FPGA。
(3)EMIF解析模块中,根据EA信号高四位,将发往目标子模块的使能信号配置成与CE相同的时序,而发往其他子模块的使能信号持续为高。
(4)FPGA子模块接收到的使能信号为低电平且AWE信号为高电平,则通过ED携带的数据对模块中的相应寄存器进行配置。如果使能信号与AWE信号同时为低电平,则将ED数据写入相应RAM区。
EMIF解析模块的数据整合功能主要由以下步骤实现:
(1)FPGA完成数据处理或子帧结束时,向DSP发送中断信号。
(2)DSP根据中断类型,确定读取数据到映射区的地址,根据EMIFA_CE5CFG寄存器的配置,将 AWE、CE信号进行配置,此时EA信号高4位为0000,AWE为持续高电平,表示DSP只读不写。
(3)EMIF解析模块根据EMIF接口地址信号的15到12位的值,将对应FPGA子模块的返回值赋值给emif_ED_Out。
(4)将emif_ED_Out信号与FPGA的双向I/O端口相连,以emif_CE_N和emif_AOE_N同时为低作为FPGA输出数据的标志,其中emif_CE_N即CE信号,emif_AOE_N即AOE信号。
图3 DSP映射区数据
图4 FPGA接收数据时序图
图3与图4分别是DSP通过EMIF接口向FPGA发送的数据截图和FPGA通过EMIF接口接收到数据的chipscope截图,图中emif_CE_N即 CE信号,emif_AWE_N即AWE信号,设计中将DE_PUSCH_cs与DE_PUSCH_write同时为低作为FPGA的RAM区接收数据的标志,对比图5与图6,当标志信号满足要求时,数据稳定且与DSP发送的数据一致,可以将数据正确发送至FPGA。
图5 DSP读取同步信息时序图
图6 DSP映射区中同步信息
图5为DSP通过EMIF接口读取同步信息的时序图。设计中将emif_CE_N与emif_AOE_N同时为零作为DSP回读数据的标志,即以上当两信号均为低电平,DSP通过ED线将数据emif_Data_Out读入相应地址的映射区。对比图5与图6可以看出,与EA对应的DSP映射区地址中写入的数据与DSP读取的同步信息一致,其中地址0xD000 8028中的数据为0x00000160即十进制352,而0x00003EE9表示映射区中与同步信息地址相邻的数据,与本次读取过程无关。
本文根据国家重大专项“射频一致性测试仪表开发”的需求,基于EMIF接口设计了一种DSP与FPGA的双向数据通信方案。方案中充分利用了FPGA时序控制能力强的特点,采用FPGA作为总体时序控制芯片。在FPGA中设计了DSP数据分配与整合模块和双向I/O端口,使DSP与FPGA的数据通信更加灵活,简化系统设计,增加数据处理稳定性。通过软件仿真、板级验证[7]发现,该方案数据通信速率达到1.2 Gb/s且错误率较低,目前该方案已应用于项目中。
[1]沈嘉,索士强,全海洋,等.3GPP长期演进(LTE)技术原理与系统设计[M].北京:人民邮电大学出版社,2008.
[2]姜楠,马迎建,冯翔.DSP和FPGA并行通信方法研究[J].电子测量技术,2008,31(10):146-148.
[3]田耘,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2008.
[4]于凤芹.TMS320C6000 DSP结构原理与硬件设计[M].北京:北京航空航天大学出版社,2008.
[5]3GPP TS 36.211 v10.6.0:Physical channels and modulation(Release 9)[S].2012,6.
[6]3GPP TS 36.212 v10.6.0:Multiplexing and channel coding.(Release 9)[S].2012,6.
[7]夏宇闻.Verilog数字系统设计教程(第 2版)[M].北京:北京航空航天大学出版社,2008.