首页 » 科学 » 多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口

多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口

admin 2025-01-11 18:23:35 0

扫一扫用手机浏览

文章目录 [+]

1 Rapid IO协议架构先容

Rapid IO体系架构是为了知足高性能嵌入式系统互连需求而设计的一种系统级互连技能,它支持芯片间以及板间的互连与通信,广泛运用于多处理器、多存储器及通用旗子暗记处理平台等的交互连接。
Rapid IO的数据传输操作基于数据包的要求与相应,数据包是点对点通信设备的载体,通信过程首先由主控器件发出一个要求事务,并将该要求事务以包的形式传输给目标器件,目标器件收到要求事务后实行相应操作并产生相应事务返回给通信的发起方,发起方吸收到相应包后一次通信操作完成。
Rapid IO互连络统构造共分为三层,分别为逻辑层、传输层和物理层。
逻辑层为协议最高层,定义了全部操作协议和包格式,为端点器件发起和完成事务供应必要的信息;传输层处于协议中间层,定义了Rapid IO的地址空间、寻址机制和用于包交流的路由信息;物理层处于协议最底层,紧张定义电气特性、包传输机制、流量掌握及低级缺点管理等器件级接口细节,Rapid IO协议层次构造如图1所示。

多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口 多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口 科学

2 基于SRIO的互连系统设计

多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口 多核DSP与FPGA高速数据传输系统设计与实现_存放器_接口 科学
(图片来自网络侵删)

2.1 TMS320C6678的SRIO模块特性

TMS320C6678 DSP外围接口丰富,片内集成了基于1x/4x LP-Serial规范的串行Rapid IO外设接口模块,即SRIO。
该模块支持4通道的Rapid IO高速传输,也可配置成1x、2x和4x等多种接口模式,单个通道的传输速率最大可达5 Gb/s,在实际工程化运用中也可灵巧配置到1.25 Gb/s、2.5 Gb/s和3.125 Gb/s利用。

基于Rapid IO的高速传输操作协议由逻辑层定义,SRIO接口逻辑层支持I/O逻辑操作(Direct I/O)和通报(Message Passing)两种数据传输机制,个中I/O逻辑操作包含NREAD、NWRITE、NWRITE_R、SWRITE、Atomic和MAINTENANCE共6种基本I/O操作,通报紧张包括DOORBELL和MESSAGE两种,详细如表1所示。

直接I/O模式是最大略实用的传输办法,主设备可以直接读写从设备的存储器,可通过多种要乞降相应事务直接完成对应存储空间的数据读写,个中SWRITE事务是高效的传输格式,接口实现大略,通信开销小,适用于点对点的大数据直接传输;通报模式利用信箱和信件的办法通报信息,类似以太网的传输办法,吸收方根据内部地址与信箱的映射关系对数据进行读写,适用于包含多个处理器的繁芜系统间通信。
通报机制中包含有一种分外的轻量级通报事务类型,即门铃(Doorbell),门铃数据包仅可添补一个16位大小的数据负载,适用于发送SRIO通信的中断信息,吸收方将收到的门铃事务放到门铃行列步队中,通过解析门铃信息进行相应的相应操作。

2.2 传输系统互联设计

本文设计的DSP与FPGA通信系统基于图2所示的高速串行Rapid IO接口进行互联设计。
在FPGA端选用Xilinx公司的Kintex7系列芯片,FPGA对外接口吸收雷达回波数据或者光学相机采集的图像数据,然后通过4路SRIO高速接口将数据实时传输给DSP芯片,FPGA的SRIO接口采取开拓平台供应的IP核进行设计实现。
DSP端芯片选用TI公司的TMS320C6678高性能多核浮点型处理器,该芯片采取全新的Keystone架构和C66x内核,其内部有8个速率达到1.25 GHz的高性能定点/浮点CPU内核,每个内核的单周期定点性能高达32MAC,浮点性能高达16FLOP,单个CorePac内核中配置了32 KB一级程序存储器(L1P)、32 KB一级数据存储器(L1D)以及512 KB二级局部存储器(L2),高性能的打算能力和高速缓存能力有效地支撑了繁芜图像处理算法的工程化运用需求。
同时6678处理器内部集成了DDR3掌握器模块,带有64 bit位宽的DDR3存储器接口总线,最高速率可达1 600 MTS,可供寻址的空间达到了8 GB,本系统外挂了4片256×64 bit的DDR3 SDRAM,总容量达到2 GB,完备知足系统数据缓存需求,DSP处理器可以通过EDMA的办法直接对DDR3存储器进行读写访问,减少了通过内核CPU读写大数据的资源占用,有效提升系统并走运算效能。

3 通信系统软件设计

3.1 SRIO接口驱动设计

根据上文的互联系统设计,为了实现接口通信功能需进行接口软件设计,DSP真个SRIO外设模块驱动编程紧张有以下几个方面:

(1)通信设备ID设置

SRIO模块支持8位和16位两种模式ID设置,8位的ID可容纳256个单独设备,16位ID可容纳65 536个单独设备,通信双方需采取相同设置模式,但要设置为不同的ID号,本系统采取8位ID模式设置,DSP和FPGA ID号设置如下:

#define SRIO_DSP_BASE_ID (0x00)

#define SRIO_FPGA_BASE_ID (0xFF)

(2)SRIO事情模式配置

SRIO模块可配置成1x、2x和4x等多种端口模式利用,可通过路径掌握寄存器PLM_SP(n)_PATH_CTL的PATH_CONFIG和PATH_MODE浸染域进行编程配置。
本系统采取4x模式配置,单通道速率配置为3.125 Gb/s,详细配置程序如下:

CSL_SRIO_Enable3_125GBaud(hSrio, 0);

CSL_FINS(hSrio->RIO_PLM[0].RIO_PLM_SP_PATH_CTL,SRIO_RIO_PLM_SP_PATH_CTL_PATH_CONFIGURATION, 4);

CSL_FINS(hSrio->RIO_PLM[0].RIO_PLM_SP_PATH_CTL, SRIO_RIO_PLM_SP_PATH_CTL_PATH_MODE, 4);

(3)SerDes模块配置

SRIO接口通过SerDes(Serialize Deserialize)模块吸收和发送高速串行差分旗子暗记,该模块由TX、RX、PLL、S2P(serial-to-parallel)、P2S(parallel-to-serial)及时钟规复等部分组成,初始化配置紧张对PLL模块的SRIO_SERDES_CFGPLL寄存器的MPY域赋值0x00010100,表示PLL倍频5倍,并对ENPLL位赋值1使能PLL; 对SRIO_SERDES_CFGTX[0-3]和SRIO_SERDES_CFGRX[0-3]寄存器的RATE位赋值0x01,表示每个时钟周期采样两位数据,结合时钟倍频配置可以打算出传输速率rate=clkMPYRATE=312.5MHz52bit=3.125 Gb/s,即得到须要的速率,配置功能函数如下:

CSL_BootCfgSetSRIOSERDESConfigPLL(cfgPll);

for(index = 0; index < 4; index++)

{

CSL_BootCfgSetSRIOSERDESRxConfig(index, cfgRx);

CSL_BootCfgSetSRIOSERDESTxConfig(index, cfgTx);

}

(4)LSU模块配置

SRIO的Direct I/O和Message Passing两种传输机制利用不同的传输掌握模块,个中掌握Direct I/O模式包发送的为LSU(Load/Store Unit)模块,系统中一共有8个LSU,每个LSU都有独立的7个寄存器,即LSU_Reg0--LSU_Reg6,Reg0--Reg4用来配置传输掌握信息,REG5、REG6用来存储命令和状态信息,Reg6有只读和只写两种模式,其他寄存器都是可读可写的,LSU寄存器组定义如图3所示。

由图3可见LSU的Reg0~4中紧张配置了Direct I/O传输的掌握信息,如源地址、目的地址、数据长度、设备ID、端口号、优先级等;Reg5寄存器配置门铃信息和包格式等命令信息;Reg6在只读模式下通过Busy和Full位信息确认指令寄存器和影寄存器是否空闲,该两位信息都为0时表示当前LSU可用, LTID位和LCB位信息一起用于确认传输的完成信息(completion code)。

LSU寄存器配置可利用CSL库文件中的API函数CSL_SRIO_SetLSURegx对每一个寄存器单独赋值编程,也可通过编辑构造体SRIO_LSU_TRANSFER变量对ByteCount、DestID、deviceID、TType、FType、Drbll_Info等关键成员变量进行赋值,然后通过API函数CSL_SRIO_SetLSUTransfer完玉成部传输的配置和启动。

3.2 数据传输系统软件设计

本文设计的DSP与FPGA通信系统通信节点较少,传输数据量大,属于点对点的高速数据传输,以是SRIO接口采取Direct I/O传输办法和Doorbell相结合的方案进行数据交互,数据包格式采取Direct I/O办法的SWRITE流写操作,传输方案实现大略,同时通信发起方在数据发送完成后发送Doorbell关照吸收方传输完成,吸收方收到Doorbell后进行相应处理,担保通信过程的实时性和精确性。
详细软件流程如图4所示。

系统上电启动后,软件对DSP系统中时钟、定时器、存储器、中断等必要设备进行初始化,在SRIO模块初始化过程中需等待DSP与FPGA的SRIO接口连接成功才表示初始成功,然后便可以进行自定义的数据传输操作了。
根据TMS320C6678 DSP存储空间配置,本系统中DDR3缓存地址区域为0x80000000—0xFFFFFFFF,大小为2 GB,SRIO接口可直接对存储空间进行读写访问。
根据系统设计FPGA每发送完一组数据后,都将附带发送一个Doorbell作为完成标记,Doorbell的16 bit信息位添补内容为0x0001,表示利用DOORBELL0_ICRR寄存器的ICR1映命中止事宜,系统中设置CPU中断4作为相应Doorbell事宜的CPU中断,DSP收到Doorbell后将触发CPUINT4,程序跳转实行中断相应函数,在中断相应函数中查询中断状态位,对吸收数据包的精确性进行判断,然后通过EDMA模块将数据快速搬移到DDR3指定地址锁存,并调用算法对数据进行处理。
当DSP须要向FPGA端回答应答信息时,DSP程序通过配置LSU寄存器组向FPGA存储地址发送数据,当LSU的Reg0~Reg5配置完成后传输开始,程序软件通过查询LSU传输完成信息与Reg6中记录的LCB位信息进行比较,判断当前传输是否成功。

4 测试与验证

针对上文所设计的SRIO互联系统进行性能测试,系统设计单通道传输速率为3.125 Gb/s,物理层SerDes模块采取8B/10B编码,以是4通道的SRIO接口理论传输速率为3.125×4×8/10=10 Gb/s。
实际测试过程中采取多组长度不同的数据进行测试,每组测试数据多次运行取均匀值,测试结果如表2所示。

测试结果表明,本文设计的DSP与FPGA互联系统能够按照设计需求稳定事情,数据读写精确,传输速率较为稳定,当数据量较大时通信开销占总传输韶光比例减小,整体传输速率超过8 Gb/s,达到理论值10 Gb/s的80%以上,传输效率较为空想。

5 结论

本系统基于TI多核DSP TMS320C6678的SRIO接口模块建立DSP与FPGA之间的高速通信互联系统,采取SRIO模块4x接口模式及每路接口3.125 Gb/s的传输速率实现DSP与FPGA间高速稳定的数据传输,同时利用DSP自带DDR3掌握器模块实现对DSP外部扩展DDR3 SDRAM存储芯片的读写访问,从而实现系统内部数据传输及共享存储。
该系统已经在大视场高分辨率光学图像处理、实时SAR雷达成像等多个工程项目中得到运用验证。

参考文献

[1] Texas Instruments.TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor[Z].2014.

[2] Texas Instruments.KeyStone Architecture Serial Rapid IO(SRIO) User Guide[Z].2012.

[3] Texas Instruments.KeyStone Architecture DDR3 Memory Controller User Guide[Z].2011.

[4] Texas Instruments.TMS320C66x DSP CorePac User Guide[Z].2013.

[5] 王勇,林粤伟,吴冰冰,等.RapidIO嵌入式系统互连[M].北京:电子工业出版社,2006.

作者信息:

陈术涛,沈 志,王春联,胡 奇

(中国航天科工集团第九总体设计部,湖北 武汉430040)

标签:

相关文章