基于EMIF和SRIO接口的片间高速通信系统的制作方法

文档序号:20838581发布日期:2020-05-22 17:11阅读:2165来源:国知局
基于EMIF和SRIO接口的片间高速通信系统的制作方法

本发明属于高速通信领域,特别涉及一种基于emif和srio接口的片间高速通信系统。



背景技术:

目前,数字信号处理技术快速发展,数字信号处理系统已经广泛应用于军用、民用领域,数字信号处理器(dsp)和现场可编辑门阵列(fpga)在数字信号处理系统中应用最为广泛。为了将fpga并行高速处理能力和dsp对复杂算法的处理能力相结合,需要以dsp+fpga为核心搭建数字信号处理平台,而实现片间高速实时通信至关重要,emif总线为并行数据总线,srio为高速串行接口,均是成熟的片间接口技术。

中国专利cn109446126a公开了一种基于emif总线的dsp与fpga高速通信系统及方法,支持对数据存储模块同时进行读写操作,也无须将通信数据一次全部写入数据存储模块,只需要较少数据存储资源,实现dsp与fpga双向数据的高速和实时通信,可以满足大量数据并行处理的需求,适用于低成本低功耗数字信号处理系统。但当需要大批量数据传输速率达到gb/s以上时,单纯的emif并行数据总线已经不能满足传输需求。



技术实现要素:

本发明的目的在于提供一种适用于高速信号处理系统的片间通信,利于完成大批量快速数据的传输,且具有灵活性高、适配性强等特点的片间高速通信系统。

实现本发明目的的技术解决方案为:一种基于emif和srio接口的片间高速通信系统,包括fpga端emif接口模块、fpga端srio接口模块、gtx模块、dsp端emif接口模块、dsp端srio接口模块、ddr3外部存储模块、dsp内部cpu模块、电源模块以及时钟模块;

所述fpga端emif接口模块,用于实现fpga对emif总线传输的指令进行读写控制;

所述fpga端srio接口模块,用于实现fpga对srio接口进行协议配置及数据读写控制;

所述gtx模块,用于实现片间批量数据高速串行传输;

所述dsp端emif接口模块,用于实现dsp对emif总线传输的指令进行读写控制;

所述dsp端srio接口模块,用于实现dsp对srio接口进行协议配置及数据读写控制;

所述ddr3存储模块,用于缓存片间传输的批量数据;

所述dsp内部cpu模块,用于处理片间中断信号及收发命令、数据;

所述电源模块,用于给系统供电;

所述时钟模块,用于提供系统所需的各种时钟。

本发明与现有技术相比,其显著优点为:1)结合了emif并行接口和srio串行接口,emif接口可用于片间命令控制字传输,srio接口可用片间高速数据传输,两者也可独立运行,方便灵活,系统适配性强;2)适用于高速信号处理系统的片间通信,利于完成大批量快速数据的传输。

下面结合附图对本发明作进一步详细描述。

附图说明

图1为本发明基于emif和srio接口的片间高速通信系统的结构图。

图2为本发明中电源模块结构图。

图3为本发明中时钟模块结构图。

具体实施方式

结合图1,本发明提出了一种基于emif和srio接口的片间高速通信系统,包括fpga端emif接口模块1、fpga端srio接口模块2、gtx模块3、dsp端emif接口模块4、dsp端srio接口模块5、ddr3外部存储模块6、dsp内部cpu模块7、电源模块8以及时钟模块9;

fpga端emif逻辑控制模块1,用于实现fpga对emif总线传输的指令进行读写控制;

fpga端srio接口模块2,用于实现fpga对srio接口进行协议配置及数据读写控制;

gtx模块3,用于实现片间批量数据高速串行传输;

dsp端emif接口模块4,用于实现dsp对emif总线传输的指令进行读写控制;

dsp端srio接口模块5,用于实现dsp对srio接口进行协议配置及数据读写控制;

ddr3存储模块6,用于缓存片间传输的批量数据;

dsp内部cpu模块7,用于处理片间中断信号及收发命令、数据;

电源模块8,用于给系统供电;

时钟模块9,用于提供系统所需的各种时钟。

emif接口和srio接口相互独立,emif并行接口作为命令控制字的传输通道,srio高速串行接口作为批量数据传输通道。

进一步地,在其中一个实施例中,fpga采用xc7k410t型号的fpga芯片。

进一步地,在其中一个实施例中,dsp芯片采用tms320c6678型号的dsp芯片。

进一步地,在其中一个实施例中,fpga端emif接口模块配置方式为:fpga端设置若干位宽16、深度1的读写fifo存储空间,每个fifo空间对应dsp的一个地址空间,同时设置中断控制信号供dsp判断从fpga读取数据的时机。

进一步地,在其中一个实施例中,fpga端srio接口模块配置方式为:fpga采用serialrapidioip核对srio接口模块进行配置,采用rapidio包封装形式,模块对外接口分为用户接口和物理接口,模块外配有中断控制信号。

进一步地,在其中一个实施例中,gtx模块对应fpga芯片内部的gtx收发器,是srioip核物理层硬件基础。

进一步地,在其中一个实施例中,dsp端emif接口模块的可编程参数配置方式如下:

1)setup建立时间,指在存储周期开始与读或写选通脉冲有效之间的时间,最小值是1。

2)srtobe数据稳定时间,指在读或写有效和失效之间的时间,最小值是1。

3)hold保持时间,指从禁用读或写选通脉冲到周期结束之间的时间,最小值为1。

4)turnaround片选切换时间。

5)datawidth异步设备的数据总线的宽度(8/16位)。

6)setup、strobe、hold参数根据emif16的时钟周期计算。fpga以100m频率读写,r_setup+r_srtobe+r_hold=10ns=fpga的读写周期,同样的,w_setup,w_strobe和w_hold也满足上式。选择总线宽度为16bit。

在.cmd文件中完成emif空间的地址映射,在主程序中定义一个数组,将其地址映射到上面的存储空间中,然后对该数组操作即可。

进一步地,在其中一个实施例中,dsp端srio接口模块的可编程参数配置方式如下:

fpga给dspsrioclk引脚的参考时钟是156.25mhz,配置链接速率为3.125gbps,通过srio_serdes_cfgpll寄存器倍频实现。链接速率是参考时钟的20倍时应进行10倍频,采样时一个pll时钟采两个数据,对应寄存器的8-1位为00101000b,0位显然要置1使pll使能,最后srio_serdes_cfgpll寄存器的值为0x251,可以通过芯片支持库(csl)进行配置,同样的方法可以配置srio_serdes_cfgtx和srio_serdes_cfgtx寄存器。选择4x工作模式,只需要一个端口,在程序中将port0使能,port1-3禁用。

实施例中是dsp主动去读取fpga端的数据,所以数据包选择nread类型。其它参数还有接收的数据大小、原地址、目的地址、目的设备和源设备id。srio作为一个端点器件,是根据目标id来接收数据包的,实施例中采用本地接收方式,srio只接收那些id与自己本地id相同的数据包。当接收到fpga发过来的数据准备完成的信号后,dsp即进入中断服务子程序中开始接收数据。配置完lsu_reg5之后数据即开始发送,首先通过keystone_srio_lsu_transfer()将上面初始化好的lsu寄存器的值写入lsu寄存器中,然后通过keystone_srio_wait_lsu_completion()函数返回的completioncode判断传输状态,若传输正确,则退出中断,返回主程序处;若传输错误,则根据相应的返回值做出不同的判断。

进一步地,在其中一个实施例中,dsp内部cpu模块用于处理片间中断信号,具体实现gpio引脚8的上升沿触发中断,并将其映射到dsp的cpu中断号4的步骤如下:

1)首先在主函数中完成gpio的初始化,设置引脚8为输入状态,上升沿中断,关闭全局中断,同时清除所有的下降沿中断。

2)编写中断向量表,一般用汇编语言编写。在中断向量表中需要完成中断服务函数声明、定义中断向量入口地址的工作。

3)完成中断初始化,c6678提供了三个中断控制器intmux1、intmux2、intmux3,每个控制4个中断,其中intmux1控制4-7中断,intmux2控制8-11中断,intmux3控制12-15中断。首先设置intmux1将gpint8对应的第82号事件映射到中断4上,然后将中断清除寄存器evtclr每一位置1清除所有中断事件,再设置ier寄存器使能我们需要的中断4,在istr寄存器中自写入中断向量表的起始地址。

4)编写中断服务函数,进入中断后首先要清除设置的中断事件,c6678一共有4组事件标志寄存器mevtflag,每组32个,整个系统的128个事件产生的标志都在这,通过读取mevtflag可以获取中断标志,gpint8对应事件号是82,应该在第三组中,即mevtflag,获得中断标志后再使用事件清除寄存器evtclr,将对应的事件清除。

进一步地,在其中一个实施例中,ddr3外部存储模块包括4片内存颗粒,其中两片供fpga使用,两片供dsp使用。

作为一种具体示例,内存颗粒具体采用mt41k256m16内存颗粒。

进一步地,在其中一个实施例中,结合图2,电源模块8包括:两片ltm4633三输出10a降压型微型模块稳压器,分别给dsp和fpga供电;tps51200电源调节芯片,产生0.75v电压,为ddr3外部存储模块6供电;tps54620和tps74401芯片(产生1.5v电压),分别用于给gtx模块3和ddr外部存储模块6供电。

进一步地,在其中一个实施例中,结合图3,时钟模块9包括一块25mhz晶振和cdcm6208时钟芯片,其中25mhz晶振用于产生fpga所需的主时钟,cdcm6208时钟芯片用于产生其余所需时钟。

综上所述,本发明提出的基于emif和srio接口的片间高速通信系统实现了fpga与dsp间的双向高速实时通信,既可以通过emif总线传输命令控制字,又可以通过srio高速串行接口进行批量数据传输,适用于以fpga和dsp为核心的协同数字信号处理系统,灵活性和适配性强。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1