0 导言
跟着现代信息技能的快速开展,数字信号处理技能在军用和民用商场都得到了广泛的运用,一同日趋杂乱的信号处理需求也对处理渠道提出了更高的要求,特别是在无线通讯、人工智能、航空航天等高科技领域信号处理实时性高,数据量大,数据交互及处理算法杂乱度高,依托单个处理器的传统处理计划现已无法满意这些需求,高度集成的多处理器嵌入式体系逐渐成为高速信号处理渠道的干流计划,依据“DSP+FPGA”的协同处理架构凭仗其超强的处理才能和广泛的工程化运用优势,现已成为通用信号处理渠道的首选。选用“DSP+FPGA”的信号处理体系明显提高了运算速度和数据处理才能,但一同不可避免地引入了处理器之间的数据交流问题,跟着交互频率和数据量的急剧添加,对芯片间的高速数据传输要求越来越高,传统的同享总线已无法满意高功用嵌入式体系的数据交互需求,成为了处理渠道功用进一步提高的瓶颈。因而,需求高功用互联体系结构来处理嵌入式处理器之间的数据交互问题,高速串行Rapid IO总线正是依据该需求规划的新式高功用互连总线技能,该总线以其高带宽、低延时、低功耗及高可靠性等优势为嵌入式体系内部互连供给了杰出的处理计划。本文规划一种依据SRIO总线的DSP与FPGA通讯互连架构,其间多核DSP TMS320C6678的SRIO接口模块选用4x接口方法装备,每路接口传输速率为3.125 Gb/s,理论传输速率到达10 Gb/s,一同运用DSP片上DDR3操控器模块扩展2 GB高速缓存进行数据读写,然后完结体系内部数据高速传输及同享存储。
1 Rapid IO协议架构介绍
Rapid IO体系架构是为了满意高功用嵌入式体系互连需求而规划的一种体系级互连技能,它支撑芯片间以及板间的互连与通讯,广泛运用于多处理器、多存储器及通用信号处理渠道等的交互衔接。Rapid IO的数据传输操作依据数据包的恳求与呼应,数据包是点对点通讯设备的音讯载体,通讯进程首先由主控器材宣布一个恳求业务,并将该恳求业务以包的方法传输给方针器材,方针器材收到恳求业务后履行相应操作并发生呼应业务回来给通讯的建议方,建议方接纳到呼应包后一次通讯操作完结。Rapid IO互连体系结构共分为三层,分别为逻辑层、传输层和物理层。逻辑层为协议最高层,界说了悉数操作协议和包格局,为端点器材建议和完结业务供给必要的信息;传输层处于协议中间层,界说了Rapid IO的地址空间、寻址机制和用于包交流的路由信息;物理层处于协议最底层,首要界说电气特性、包传输机制、流量操控及初级过错办理等器材级接口细节,Rapid IO协议层次结构如图1所示。
2 依据SRIO的互连体系规划
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=clk*MPY*RATE=312.5MHz*5*2bit=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.