陈术涛,俞鹏先,沈志,王春联,金敏
(中国航天科工集团第九总体设计部,湖北 武汉 430040)
摘要:详细介绍了TI公司TMS320C6678多核DSP高速外设模块EMIF16(外部存储器接口)的功能及特性,利用EMIF模块扩展存储空间大、通信速度快、硬件接口电路简单、性能稳定等特点,设计并实现了一种基于EMIF模块的DSP与FPGA异步通信接口,重点描述了接口通信系统架构设计和具体软件实现。测试验证表明基于该接口可进行DSP与FPGA之间多种格式数据传输,接口运行稳定可靠,扩展了TMS320C6678多核DSP处理芯片与外部器件通信系统接口的设计方式。
关键词:EMIF;DSP;FPGA;异步接口
中图分类号:TN911; TP39文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.07.007
引用格式:陈术涛,俞鹏先,沈志,等.基于高速外设模块的多核DSP与FPGA通信系统设计[J].微型机与应用,2017,36(7):22-25.
0引言
随着信息与通信技术的快速发展和进步,其在图像处理、模式识别、雷达信号处理、电子对抗、无线通信、导航定位等领域得到越来越深入的应用,随之而来的对硬件平台高效稳定通信能力的需求也在同步增长。目前,信号处理系统的硬件平台大多采用高度集成的嵌入式系统,基于DSP+FPGA的硬件架构设计凭借其超强的处理能力和广泛的工程应用等优势,已经成为当前通用数字信号处理平台的首选。TMS320C6678多核高速DSP芯片是目前TI公司最新推出的高性能数字信号处理芯片,处理能力领先,基于该芯片的硬件处理平台市场应用前景广泛。本文针对TMS320C6678DSP芯片和Xilinx公司Kintex7系列FPGA组成的信号处理系统进行研究,设计了一种基于EMIF16模块的DSP与FPGA通信接口。该接口充分利用EMIF接口高速、稳定、设计简单等特性,同时配合FPGA逻辑处理能力强、可编程等优点进行接口逻辑设计,工作性能稳定,数据处理能力强,功能灵活可扩展,可适应多种通信需求,很好地解决了DSP与FPGA之间的通信问题。
1EMIF16接口模块特征
1.1EMIF16接口简介
图1EMIF16接口模块框图EMIF16是DSP芯片自带的外部存储器接口模块,其主要功能是支持内核CPU对外部扩展存储空间的访问,EMIF16可与ASRAM、NOR Flash、NARD Flash等类型的异步存储设备连接,异步访问地址空间最大可扩展为256 MB,接口模块提供4个片选信号,每个片选信号可选中64 MB独立存储空间。该接口模块具有可编程能力,通过设置模块控制寄存器的不同参数可调节接口读写时序和传输数据宽度等传输特性,EMIF16模块接口结构如图1所示[1]。
由图1可见,EMIF16模块框图主要由一系列信号引脚组成,各接口管脚功能如下:EMIFD[15:0]表示EMIF模块读写数据的16位数据总线;EMIFA[23:0]表示EMIF模块访问存储空间的24位地址总线;EMIFCE[3:0]表示EMIF模块片选信号,低电平有效,分别对应DSP的CE0~CE3片选区间;EMIFBE[1:0]表示EMIF模块字节使能信号;EMIFWE表示EMIF模块写操作使能信号,低电平有效;EMIFOE表示EMIF模块输出使能信号,低电平有效;EMIFWAIT[1:0]表示EMIF模块等待信号;EMIFRnW表示EMIF模块的读写使能信号[2]。通过对上述的数据总线、地址总线及控制信号的编程设计实现EMIF16接口与外部存储器的通信功能。
1.2EMIF16接口连接及异步读写时序
EMIF16模块外接不同类型存储芯片时信号管脚的接口设置也不相同,本系统设计的通信系统中多核DSP的EMIF16模块接口直接与FPGA连接,由FPGA端设计多个FIFO空间供DSP进行读写,EMIF16模块外接时序设计采用8-bit NOR Flash接口时序,具体接口框图如图2所示[3]。
EMIF16接口的每个读/写周期分为三个阶段:建立时间(Setup)、触发时间(Strobe)和保持时间(Hold),每个阶段的相应参数都可通过对EMIF16模块控制寄存器编程进行设置,具体参数设置在接口驱动程序中实现。接口读写时序参数是EMIF接口设计中较为重要的参数,DSP端与FPGA端接口时序必须保持一致才能实现数据稳定传输,EMIF异步读时序如图3所示,EMIF异步写时序如图4所示。
图3、图4中Setup、Strobe、Hold等参数设置皆以EMIF16时钟周期为基准,本系统设计中EMIF16模块默认使用DSP系统输出时钟中的SysClk7时钟信号,该时钟频率为芯片主频的1/6分频,本系统中使用的TMS320C6678多核DSP主频配置为1 GHz,所以EMIF16接口时钟频率可达到166.67 MHz,能够满足高速串行通信需求[4]。
2DSP与FPGA通信系统设计
本文设计的DSP与FPGA通信接口基于图2所示的异步 8bit NOR Flash接口连接图要求进行硬件电路设计,同时,基于该硬件平台设计一种通信应用系统,实现DSP与FPGA之间数据的稳定快速传输,本系统所设计的通信系统架构如图5所示。
图5描述了一种基于EMIF16接口模块的DSP与FPGA通信系统应用框图。FPGA端提供多个8 bit宽的FIFO供DSP进行读写,DSP端除了使用EMIF模块外,同时调用了CPU中断系统资源配合消息传输。FPGA将消息写入FIFO后发送相应控制信号触发DSP中断,DSP收到读消息中断后启动EMIF接口读取消息;DSP端发送消息时可直接将数据写入EMIF模块对应的寄存器,EMIF模块在异步写周期内将数据写入FPGA提供的存储FIFO中。此框架中FPGA端的读/写存储区分别提供多个FIFO进行通信,从而使该系统可进行多种类别或者多协议的消息通信,提高了系统应用的适应性;在DSP数据接收端使用了缓存机制设计,EMIF接口模块接收的每一条消息首先存入缓存区,然后再由CPU对缓存区消息逐条进行校验和处理,这样操作不仅提高了EMIF模块接收消息的效率,而且将接收消息和处理消息两个CPU主要线程进行了分离,防止消息在未处理时被覆盖或者篡改,保证了缓冲区数据的完整性和正确性,从而提高信号处理的稳定与可靠性。
3通信系统软件设计与实现
3.1通信接口软件设计
根据EMIF16模块接口特性,系统可扩展访问地址空间最大为256 MB, 存储地址范围为0x70000000~0x7FFFFFFF,平均分为4个CE地址空间,每个CE空间支持外接NAND、NOR及SRAM存储器,每个CE空间都有单独的异步配置寄存器(ACR)对其使用配置,EMIF16模块寄存器地址空间为0x20C00000~0x20C00FF,共256 B,该地址空间内包括EMIF16模块的版本及状态寄存器(RCSR)、异步等待周期寄存器 (AWCCR)、4个异步配置寄存器(ACR)及EMIF模块中断相关寄存器(IRR、IMR、IMSR、IMCR)等。要实现本系统所设计的通信接口功能,首先需对DSP的EMIF16模块进行驱动初始化编程,即对上述相应寄存器进行编程配置,寄存器编程配置时可根据需要进行重点位域编码,与系统功能实现无关的寄存器位域可选择默认值配置。驱动配置完成后方可进行上层应用系统的设计及实现,本系统所设计的基于EMIF16接口的DSP与FPGA异步通信系统软件流程如图6所示。
如图6所示,基于EMIF的接口通信程序完成系统初始化后即可与外界进行通信,本文所设计的通信系统主要完成消息的接收与发送功能:接收端采用被动接收模式,需依靠系统告知EMIF模块进行数据接收,本系统设计中使用中断辅助实现数据接收功能,系统中使用GPIO9管脚上升沿信号作为中断事件触发CPU中断,当FPGA端将数据准备好后即对GPIO9管脚进行拉高电平操作,DSP端收到GPIO9上升沿信号后触发INT9,CPU收到中断信号后执行中断服务函数,在中断服务函数中对消息接收控制寄存器(RCR)进行判断并执行相应消息接收操作;发送端采用主动发送模式,由CPU直接操作EMIF模块进行数据发送,为了保证DSP与FPGA发送消息的稳定性,每次DSP发送消息时需查询FPGA端对应准备状态,当消息发送控制寄存器(TCR)对应状态准备完成时才能进行消息发送。
3.2通信控制寄存器设计
消息接收控制寄存器(RCR)和发送控制寄存器(TCR)是通信系统中为保障系统稳定执行而设计的辅助寄存器,并非芯片内部固有寄存器,辅助寄存器RCR和TCR由FPGA芯片设计提供,具体位域所表示的信息根据系统需求制定。DSP芯片端在进行读写操作时对指定地址进行访问即可获得寄存器当前有效信息,通过辅助寄存器的实时值分析可以判定系统当前通信过程中消息类型及系统工作状态等信息,从而保证通信过程的可控性与稳定性。
接收消息控制寄存器如表1所示,当某类消息已经准备好接收时,其对应的标志位RxTypeX会被FPGA置1,反之则置0;发送端采用主动发送模式,由CPU直接操作EMIF模块进行数据发送,为了保证DSP与FPGA发送消息的稳定性,每次DSP发送消息时需查询FPGA端对应准备状态,当发送控制寄存器(TCR)对应状态准备完成时才能进行消息发送,发送控制寄存器如表2所示,当某类消息准备好发送时,其对应的标志位TxRdyX会被FPGA置1,反之则置0。
RC:接收消息总标志。
RxTypeA:1:消息类型为A;0:无该类型消息。
RxTypeB:1:消息类型为B;0:无该类型消息。
RxTypeC:1:消息类型为C;0:无该类型消息。
RxTypeD:1:消息类型为D;0:无该类型消息。
RSV:保留。
TC:发送消息准备状态总标志。
TxRdyA:1:A类消息准备好;0:未准备好。
TxRdyB:1:B类消息准备好;0:未准备好。
TxRdyC:1:C类消息准备好;0:未准备好。
TxRdyD:1:D类消息准备好;0:未准备好。
RSV:保留。
3.3接口测试与验证
针对上文所设计的接口和系统流程进行了测试与验证,选取CE0空间地址设置多个8 bit宽的FIFO,其中FIFO0地址为0x71000000,用于接收DSP端发送来的数据,数据流向为从DSP到FPGA,测试数据采用升序;FIFO1地址为0x71010000,用于向DSP端发送数据,数据流向为从FPGA到DSP,测试数据采用降序。测试结果如图7、图8所示。
实验结果表明,本文设计的DSP与FPGA之间的通信系统能够按照设计要求工作,传输数据长度及地址可以根据需要进行多种配置,经过多次测试,数据读写正确,接口工作稳定,满足系统设计需求。
4结束语
本系统实现了基于EMIF16模块的DSP与FPGA异步通信接口,系统设计简单、性能稳定,实现了DSP与FPGA之间的双向高速通信,扩展了多核DSP处理芯片与外图界的通信方式。采用DSP与FPGA联合设计的方式,可实现多种格式的高速数据传输,同时软件架构设计简洁稳定,有利于工程实现及应用。
参考文献
[1] Texas Instruments. TMS320C6678 multicore fixed and floatingpoint digital signal processor[S].2014.
[2] 卞红雨.TMS320C6000系列DSP的CPU与外设[M].北京:清华大学出版社,2007.
[3] Texas Instruments.External Memory Interface (EMIF16) for KeyStone devices user guide[S].2011.
[4] Texas Instruments.KeyStone architecture external memory interface (EMIF16) user guide[S].2011.