一种面向应用的多通道SRIODMA传输系统及方法与流程

文档序号:25038304发布日期:2021-05-11 17:11阅读:427来源:国知局
一种面向应用的多通道SRIO DMA传输系统及方法与流程

本发明涉及智能变电站二次系统测试与仿真的数据处理与传输领域,具体涉及一种面向应用的多通道sriodma传输系统,还涉及一种面向应用的多通道sriodma传输方法。



背景技术:

随着智能变电站大规模推广应用,在变电站中二次设备如合并单元、保护装置、智能终端、测控装置等设备的测试与仿真也越来越广泛。采用继保测试仪、合并单元测试仪等测试仪器,由于这些测试仪接口数量少、数据计算能力弱、总线带宽低等特性,往往只能单体设备测试,不能整间隔或多台保护装置或者保护装置与合并单元、智能终端整体测试与仿真。整间隔或多台设备的整体测试与仿真,更具备测试与仿真的完备性、充分性,更能接近实际变电站的运行情况。然而,多个二次设备如合并单元、保护装置、智能终端、测控装置等整体测试与仿真,对整个测试仿真平台的计算能力、数据传输能力、处理时间的实时性等提出了更高的要求。

具有较强计算能力的dsp和数据传输能力的fpga往往是最为合适的方案,dsp负责各个报文任务(sv、goose、ft3、模拟量功率源等)的计算、状态控制、组包等,而fpga负责将这些报文按照一定的实时性收或发到对应的光网口、ft3口、da转换器等。当测试仿真系统需要模拟整间隔或整站的这些ied时,各个报文任务(sv、goose、ft3、模拟量功率源等)的计算量与数据传输量也将相对较大,各报文带宽估算如下:sv的数据量按照极限带宽1gbps;goose变位事件按照2毫秒极限变位、每个事件最大800字节,则goose极限流量为160mbps;ft3接口按照18个接口流量为28.8mbps;模拟量功率,按照24路电压、27路电流配置,则带宽为261.12mbps;总体带宽为1.449gbs。因此,dsp与fpga之间的数据通信成为整个系统性能的关键。

一般地,dsp与fpga大量数据传输采用srio总线,该总线具有总线带宽大、协议开销小等特点。srio总线可以是dsp主动发起dma的数据读写,也可以是fpga发起数据读写。往往现有的这些srio的dma传输都采用分层模式,即处在应用层的报文收发任务将数据计算整理好后放在各自应用侧的内存空间,统一由处在驱动层的srio收发数据程序将各个应用层数据拷贝到驱动层并逐个再打包及添加必要的标示字段;当接收fpga侧的数据时,fpga先通过中断方式告知dsp,再由dsp侧的驱动层srio接收程序主动读取fpga侧的数据,并按照一定的包格式解出对应应用层的数据,拷贝到应用层内存空间。这种多次拷贝、多次组封包、多种包分类的处理方式,导致占用了大量的dsp处理时间,并且也无法保证数据量大实时性高的sv、模拟量等应用要求。



技术实现要素:

本发明的目的是针对现有技术存在的上述缺陷,提供一种面向应用的多通道sriodma传输系统,还提供一种面向应用的多通道sriodma传输方法。

本发明的上述目的通过以下技术方案实现:

一种面向应用的多通道sriodma传输系统,包括dsp子系统和fpga子系统,

dsp子系统包括:dsp、srio收发硬件模块、多个dma下行源缓冲存储器和多个dma上行目的缓冲存储器;

fpga子系统包括:srio控制模块、dma下行虚拟控制模块、dma上行虚拟控制模块、外部接口、多个dma下行目的缓冲存储器和多个dma上行源缓冲存储器,

每个应用程序对应一个dma虚拟通道,dma虚拟通道包括dma下行虚拟通道和dma上行虚拟通道,

dma下行虚拟通道包括分别与应用程序对应的dma下行源缓冲存储器、dma下行虚拟控制模块、dma下行目的缓冲存储器,

dma下行虚拟控制模块包括用于存储dma下行源缓冲存储器的状态的第一下行通道寄存器、用于存储dma下行源缓冲存储器中待传输的发送数据的传输长度的第二下行通道寄存器、以及用于存储dma下行源缓冲存储器中待传输的发送数据的首地址,

dma上行虚拟通道包括分别与应用程序对应的dma上行源缓冲存储器、dma上行虚拟控制模块、dma上行目的缓冲存储器,

dma上行虚拟控制模块包括用于存储dma上行目的缓冲存储器的存储状态的第一上行通道寄存器、用于存储dma上行源缓冲存储器中待传输的接收数据的传输长度的第二上行通道寄存器、以及用于存储dma上行源缓冲存储器中待传输的接收数据的首地址的第三上行通道寄存器。

dma下行源缓冲存储器包括第一下行源乒乓存储器和第二下行源乒乓存储器,

第一下行通道寄存器的第0位和第1位分别对应着dma下行源缓冲存储器的第一下行源乒乓存储器和第二下行源乒乓存储器的当前状态,

dma上行目的缓冲存储器包括第一上行目的乒乓存储器和第二上行目的乒乓存储器,

第一上行通道寄存器的第0位和第1位分别对应着第一上行目的乒乓存储器和第二上行目的乒乓存储器的空闲状态。

一种面向应用的多通道sriodma传输方法,包括数据发送步骤:

步骤100、dsp启动后dsp的发送任务获取并初始化dma下行源缓冲存储器,

步骤101、当发送任务有发送数据发送时,dsp采用寄存器总线emif查询dma下行虚拟控制模块的第一下行通道寄存器,确定dma下行源缓冲存储器处于传输完成状态;

步骤102、发送任务将多个发送数据包依次填入到dma下行源缓冲存储器中,第一个发送数据包从第5字节开始,直到将dma下行源缓冲存储器放置满为止,且保证最后一个发送数据包的完整性,当待传输的发送数据包填充完dma下行源缓冲存储器后,将dma下行源缓冲存储器的首4字节的32位修改为如下定义:

第7至0比特位:待发送的发送数据包的流水号,每次组包完后加1;

第15至8比特位:当前待传输的发送数据包的个数;

第31至16比特位:当前待传输的发送数据包的总字节数,

步骤103、发送任务通过寄存器总线emif将待传输的发送数据的传输长度写入dma下行虚拟控制模块的第二下行通道寄存器,将dma下行源缓冲存储器的首地址作为待传输的发送数据源首地址写入dma下行虚拟控制模块的第三下行通道寄存器,并且将dma下行虚拟控制模块的第一下行通道寄存器修改为传输未完成,

步骤104、dma下行虚拟控制模块按照发送周期轮询,确定有数据需要被调度的dma下行虚拟通道有数据,按照预设的dma下行虚拟通道的通道带宽值、优先级、srio总线的有效带宽对各个dma下行虚拟通道的待传输的发送数据进行发送,即根据dma下行虚拟通道的通道带宽值,计算发送周期中dma下行虚拟通道需要发送的字节数,根据发送周期中dma下行虚拟通道需要发送的字节数和srio总线的有效带宽,计算dma下行虚拟通道在发送周期中占用的调度时间,根据dma下行虚拟通道的优先级,依次按照dma下行虚拟通道对应的调用时间对待发送数据进行发送;

对待发送数据进行发送时,dma下行虚拟控制模块首先读取dma下行虚拟通道对应的第一下行通道寄存器,确认dma下行虚拟通道是否有需要待传送的发送数据,如果有需要待传输的发送数据,则读出第二下行通道寄存器中记载的待输送的发送数据的传输长度,读出第三下行通道寄存器中记载的待传输的发送数据的首地址,依据待输送的发送数据的传输长度和待传输的发送数据的首地址,产生dma读请求的avalone总线时序,

步骤105、dma下行虚拟控制模块将dma读请求的avalone总线时序发送给srio控制模块,srio控制模块将dma读请求的avalone总线时序打包成srionread命令以串行数据格式通过srio总线发送到dsp侧的srio收发硬件模块;

步骤106、在dsp侧的srio收发硬件模块收到srionread命令后,解析出对应的待传输的发送数据的传输长度和待传输的发送数据的首地址,并在dsp侧以待传输的发送数据的传输长度和待传输的发送数据的首地址为依据从dma下行源缓冲存储器中读出对应的待传输的发送数据,并按照srio协议的resp包格式生成对应的resp数据包回应给fpga侧的srio控制模块;

步骤107、fpga侧的srio控制模块收到dsp侧的srio收发硬件模块的resp数据包后,解析成avalone总线读响应时序;

步骤108、dma下行虚拟控制模块从srio控制模块获得avalone总线读响应时序后,将对应的待传输的发送数据写入到dma下行目的缓冲存储器中;

步骤109、fpga侧对应的发送模块通过查看dma下行虚拟通道的dma下行目的缓冲存储器的非空标识,读出待传输的发送数据并通过fpga侧对应的外部接口将待传输的发送数据发送出去。

一种面向应用的多通道sriodma传输方法,还包括数据接收步骤:

步骤200、dsp启动后dsp的接收任务获取并初始化dma上行目的缓冲存储器,

步骤201、接收任务通过寄存器总线emif清除dma上行虚拟控制模块的第一上行通道寄存器,

初始化第三上行通道寄存器为dma上行目的缓冲存储器的首地址,

dsp侧的接收任务将轮询各个dma上行虚拟通道对应第一上行通道寄存器,如果第一上行通道寄存器反映dma上行目的缓冲存储器缓冲有接收数据,则进入步骤207,否则进入步骤202;

步骤202、fpga侧的接收模块实时接收外部接口进来的接收数据包,并将接收数据包标记时间戳,缓存到dma上行源缓冲存储器中,

接收数据包依次填入到dma上行源缓冲存储器,第一个接收数据包从第5字节开始,后续的接收数据包依次靠后排布,直到将dma上行源缓冲存储器放置满为止,且最后一个接收数据包的完整,当待传输的接收数据包填充完毕后,将dma上行源缓冲存储器的首4字节的32位修改为如下定义:

第7至0比特位:待传输的接收数据包的流水号,每次组包完后加1;

第15至8比特位:当前待传输的接收数据包的个数;

第31至16比特位:当前待传输的接收数据包的总字节数;

当前待传输的接收数据包的总字节数更新到第二上行通道寄存器,

步骤203、dma上行虚拟控制模块按照接收周期轮询,确定需要被调度的dma上行虚拟通道,按照预设的dma上行虚拟通道的通道带宽值、优先级、srio总线的有效带宽对各个dma上行虚拟通道的待传输的接收数据进行接收,即根据dma上行虚拟通道的通道带宽值,计算接收周期中dma上行虚拟通道需要传输的接收数据的字节数,根据接收周期中dma上行虚拟通道需要接收的字节数和srio总线的有效带宽,计算dma上行虚拟通道在接收周期中占用的调度时间,根据dma上行虚拟通道的优先级,依次按照dma上行虚拟通道对应的调用时间对待传输的接收数据进行接收,

对待传输的接收数据进行接收时,dma上行虚拟控制模块根据dma上行虚拟通道的优先级,查看对应的dma上行源缓冲存储器是否有待传输的接收数据,若有待传输的接收数据,则设定第三上行通道寄存器的值为dma上行源缓冲存储器的待传输的接收数据的首地址,

设定第二上行通道寄存器的值为dma上行源缓冲存储器中的待传输的接收数据长度;

确定dma上行目的缓冲存储器的首地址,

dma上行虚拟控制模块获取dma上行源缓冲存储器中待传输的接收数据的传输长度、dma上行源缓冲存储器中的待传输的接收数据首地址、dma上行目的缓冲存储器的首地址后,产生dma写请求的avalone总线时序,

步骤204、dma上行虚拟控制模块将dma写请求的avalone总线时序发送给srio控制模块,该srio控制模块将应用程序的dma写请求的avalone总线时序打包成srionwrite命令以串行数据格式通过srio总线发送到dsp侧的srio收发硬件模块,

步骤205、在dsp侧的srio收发硬件模块收到srionwrite命令后,解析、识别到srio的dma写请求,解析出dma写请求的dma上行源缓冲存储器中待传输的接收数据的传输长度、dma上行源缓冲存储器中的待传输的接收数据首地址、dma上行目的缓冲存储器的首地址后,将待传输的接收数据顺序写到dma上行目的缓冲存储器中,

步骤206、dma上行虚拟控制模块将dma上行虚拟通道的待传输的接收数据传输完成后,将第一上行通道寄存器的值修改为表征dma上行目的缓冲存储器为满状态,

步骤207、接收任务处理dma上行目的缓冲存储器的接收数据,

步骤208、dma上行虚拟通道中的接收任务处理完成dma上行目的缓冲存储器的接收数据,将第一上行通道寄存器的值修改为表征为dma上行目的缓冲存储器为空状态。

本发明与现有技术相比,具有以下优点和有益效果:

第一,本发明提出的面向应用的多通道sriodma传输系统,能够虚拟出多个传输逻辑通道,应用与应用之间、通道与通道间彼此耦合度小、独立性高,便于独立应用与管理;

第二,本发明采用的多通道sriodma传输系统和方法,能够按照应用带宽、优先级、实时性等灵活配置,满足应用层的多种需求;

第三,本发明提出的面向应用的sriodma传输方法,减少数据传输中多次封包、解包、数据拷贝的次数,提高了系统的传输效率。

附图说明

图1为sriodma传送硬件示意图;

图2为本发明的整体结构示意图;

图3为sv发送任务对应的dma下行虚拟通道组成示意图;

图4为sv接收任务对应的dma上行虚拟通道组成示意图;

图5为dma下行多应用程序调度进程示意图;

图6为srio控制模块(srioip)的avalon-mmread时序示意图;

图7为dma上行多应用程序调度进程示意图;

图8为srio控制模块(srioip)的avalon-mmwrite时序示意图。

具体实施方式

为了便于本领域普通技术人员理解和实施本发明,下面结合实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。

一种面向应用的多通道sriodma传输系统,包括dsp子系统和fpga子系统。

dsp子系统包括:dsp、外部内存ddr3和srio收发硬件模块,dsp子系统的外部内存ddr3对应不同的应用程序划分为多个dma下行源缓冲存储器和多个dma上行目的缓冲存储器。

fpga子系统包括:srio控制模块(srioip)、dma下行虚拟控制模块、dma上行虚拟控制模块、外部内存ddr3和外部接口,fpga子系统的外部内存ddr3对应不同的应用程序划分为多个dma下行目的缓冲存储器和多个dma上行源缓冲存储器,外部接口与应用程序一一对应。

应用程序包括:sv发送任务、模拟量发送任务、ft3发送任务、goose发送任务、其他发送任务、sv接收任务、模拟量接收任务、ft3接收任务、goose接收任务、其他接收任务等;

外部接口包括sv发送模块、模拟量发送模块、ft3发送模块、goose发送模块、其他发送模块、sv接收模块、模拟量接收模块、ft3接收模块、goose接收模块、其他接收模块等;

每个应用程序对应一个dma虚拟通道,dma虚拟通道包括dma下行虚拟通道和dma上行虚拟通道,dsp子系统至fpga子系统为下行,fpga子系统至dsp子系统为上行。

dma下行虚拟通道包括分别与应用程序对应的dma下行源缓冲存储器、dma下行虚拟控制模块、dma下行目的缓冲存储器。

dma下行虚拟控制模块包括第一下行通道寄存器、第二下行通道寄存器和第三下行通道寄存器。

第一下行通道寄存器用于存储dma下行源缓冲存储器的存储状态;

第二下行通道寄存器用于存储dma下行源缓冲存储器中待传输的发送数据的传输长度;

第三下行通道寄存器用于存储dma下行源缓冲存储器中待传输的发送数据的首地址。

本实施例中,dma下行源缓冲存储器包括第一下行源乒乓存储器dsram1_a和第二下行源乒乓存储器dsram1_b。

dma下行目的缓冲存储器包括第一下行目的乒乓存储器fdram1_a和第二下行目的乒乓存储器fdram1_b。

第一下行通道寄存器的第0位和第1位分别对应着dma下行源缓冲存储器的第一下行源乒乓存储器dsram1_a和第二下行源乒乓存储器dsram1_b的当前状态,

如果第一下行通道寄存器的第0位为1,则第一下行源乒乓存储器dsram1_a下行传输未完成;如果第一下行通道寄存器的第0位为0,则第一下行源乒乓存储器dsram1_a下行传输完成;

如果第一下行通道寄存器的第1位为1,则第二下行源乒乓存储器dsram1_b下行传输未完成;如果第一下行通道寄存器的第1位为0,则第二下行源乒乓存储器dsram1_b下行传输完成;

dma上行虚拟通道包括分别与应用程序对应的dma上行源缓冲存储器、dma上行虚拟控制模块、dma上行目的缓冲存储器。

dma上行虚拟控制模块包括第一上行通道寄存器、第二上行通道寄存器和第三上行通道寄存器。

第一上行通道寄存器用于存储dma上行目的缓冲存储器ddram1的存储状态;

第二上行通道寄存器用于存储dma上行源缓冲存储器中待传输的接收数据的传输长度;

第三上行通道寄存器用于存储dma上行源缓冲存储器中待传输的接收数据的首地址。

在本实施例中,dma上行源缓冲存储器fsram1包括两片大小一样功能相同的第一上行源乒乓存储器fsram1_a和第二上行源乒乓存储器fsram1_b,形成乒乓操作。

dma上行目的缓冲存储器ddram1有两个大小相同、以乒乓模式操作的第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b。

第一上行通道寄存器的第0位和第1位分别对应着第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b的空闲状态,

如果第一上行通道寄存器的第0位为1,则第一上行目的乒乓存储器ddram1_a为非空闲,如果第一上行通道寄存器的第0位为0,则第一上行目的乒乓存储器ddram1_a为空闲;

如果第一上行通道寄存器的第1位为1,则第二上行目的乒乓存储器ddram1_b为非空闲,如果第一上行通道寄存器的第1位为0,则第二上行目的乒乓存储器ddram1_b为空闲。

dsp通过寄存器总线与各个dma下行虚拟控制模块和各个dma上行虚拟控制模块连接。

dsp与fpga之间的高速srio总线采用4个物理通道、2.5gbps/通道,同时双向最大理论通信带宽10gbps,10b8b/8b10b转换后有效可用带宽为8gbps,进一步保留一定余量设置有效用户带宽为80%,即6.4gbps。

整个应用角度看,应用程序可分为sv发送任务、模拟量发送任务、goose发送任务、ft3发送任务,其他发送任务,以及相对应的这些接收任务,本发明将这些应用程序一一绑定到预先定义的dma虚拟通道上,每个应用独立占用该dma虚拟通道带宽、内存,彼此独立互不影响。各个应用与dma虚拟通道对应关系为:第一dma下行虚拟通道对应sv发送任务,第二dma下行虚拟通道对应模拟量发送任务,第三dma下行虚拟通道对应ft3发送任务,第四dma下行虚拟通道对应goose发送任务;第一dma上行虚拟通道对应sv接收任务,第二dma上行虚拟通道对应模拟量接收任务,第三dma上行虚拟通道对应ft3接收任务,第四dma上行虚拟通道对应goose接收任务;并预留备用通道n,可作为其他发送、接收任务的扩展。

另外,还包含dsp与fpga交互的寄存器总线,该寄存器总线用来交互dsp侧与fpga侧dma传输时的dma下行虚拟控制模块中的第一下行通道寄存器、第二下行通道寄存器和第三下行通道寄存器,以及dma上行虚拟控制模块中的第一上行通道寄存器、第二上行通道寄存器和第三上行通道寄存器。

一种面向应用的多通道sriodma传输方法,为方便该方法能够让技术领域人员实施,如下分别以第一dma下行虚拟通道和第一dma上行虚拟通道的操作过程作为实施实例说明。

以sv发送任务通过dma下行虚拟通道进行sv发送数据的传输为例,一种面向应用的多通道sriodma传输方法,包括以下步骤:

步骤100,dsp启动后dsp的sv发送任务获取并初始化dma下行源缓冲存储器dsram1,

本实施例中,dma下行源缓冲存储器dsram1有两个大小相同、以乒乓模式操作的第一下行源乒乓存储器dsram1_a和第二下行源乒乓存储器dsram2_b组成,每个第一下行源乒乓存储器和第二下行源乒乓存储器的最大为32150字节。

步骤101,当sv发送任务有sv数据发送时,首先dsp采用寄存器总线emif查询dma下行虚拟控制模块的第一下行通道寄存器,第一下行通道寄存器标志dma下行源缓冲存储器的状态,确定dma下行源缓冲存储器处于传输完成状态;

在本实施例中,第一下行通道寄存器的第0位和第1位分别对应着dma下行源缓冲存储器的第一下行源乒乓存储器dsram1_a和第二下行源乒乓存储器dsram1_b的当前状态,如果第一下行通道寄存器的第0位为1,则第一下行源乒乓存储器dsram1_a下行传输未完成,第一下行通道寄存器的第1位为1,则第二下行源乒乓存储器dsram1_b下行传输未完成,需要等待,否则可以继续步骤102。

步骤102,sv发送任务将多个sv发送数据包依次填入到dma下行源缓冲存储器中,第一个sv发送数据包从第5字节开始,后续的sv发送数据包依次靠后排布,直到能将dma下行源缓冲存储器放置满为止,但必须保证最后一个sv发送数据包的完整性,即如果剩下的字节数据不足以放置一个待放的sv发送数据包时,余下空间空余,如图3所示。当待传输的sv发送数据包填充完dma下行源缓冲存储器后,将dma下行源缓冲存储器的首4字节的32位修改为如下定义:

第7至0比特位:待传输的sv发送数据包的流水号tx_ch1_dma_stream,每次组包完后加1,即dma下行源缓冲存储器填充完sv发送数据包后加1,作为后续接收侧验证是否丢包的依据;

第15至8比特位:当前待传输的sv发送数据包的个数tx_ch1_dma_pack_num;

第31至16比特位:当前待传输的sv发送数据包的总字节数tx_ch1_dma_byte_len。

上述填充过程中,dma下行源缓冲存储器的第一下行源乒乓存储器dsram1_a和第二下行源乒乓存储器dsram2_b进行交替填充。

步骤103:sv发送任务通过寄存器总线emif将待传输的sv发送数据的传输长度tx_ch1_dma_byte_len写入dma下行虚拟控制模块的第二下行通道寄存器,将dma下行源缓冲存储器的待传输的sv发送数据的首地址写入dma下行虚拟控制模块的第三下行通道寄存器,并且将dma下行虚拟控制模块的第一下行通道寄存器修改为传输未完成。

步骤104,dma下行虚拟控制模块按照每250u的发送周期轮询哪些dma下行虚拟通道有sv发送数据需要被调度,即通过各个dma下行虚拟通道对应的第一下行通道寄存器查询是否需要有sv发送数据需要被调度发送,按照预设的dma下行虚拟通道的通道带宽值、优先级、srio总线的有效带宽对各个dma下行虚拟通道的待传输的sv发送数据进行传输。即根据dma下行虚拟通道的通道带宽值,计算发送周期中dma下行虚拟通道需要发送的字节数,根据发送周期中dma下行虚拟通道需要发送的字节数和srio总线的有效带宽,计算dma下行虚拟通道在发送周期中占用的调度时间,根据dma下行虚拟通道的优先级,依次按照dma下行虚拟通道对应的调用时间对待传输的sv发送数据进行传输;

优先级1为最高,最优先调度,依次次之。在本实施例中,各个dma下行虚拟通道的通道带宽值及优先级设置如下:

第一dma下行虚拟通道带宽设置为1gbps,分割到250us发送周期中,即调度数据量为1g*250*10-6/8=31250字节,调度时间为31250*8/6400mbps=39.0625us,该通道优先级为1;

第二dma下行虚拟通道带宽设置为261.12mbps,分割到250us发送周期中,即调度数据量为261.12m*250*10-6/8=8160字节,调度时间为8160*8/6400mbps=10.2us,该通道优先级为2。

第三dma下行虚拟通道带宽设置为163.84mbps,分割到250us发送周期中,即调度数据量为163.84m*250*10-6/8=5120字节,调度时间为5120*8/6400mbps=6.4us,该通道优先级为3;

第四dma下行虚拟通道带宽设置为28.8mbps,分割到250us发送周期中,即调度数据量为28.8m*250*10-6/8=900字节,调度时间为900*8/6400mbps=1.125us,该通道优先级为4;

上述6400mbps为srio总线的有效带宽。

合计调度占用时间为:39.0625+10.2+6.4+1.125=56.7875us;调度空闲时间为:250us-56.7875us=193.2125us。各个dma下行虚拟通道的调度时序图见图5。

在250us周期中,先用39.0625us发送优先级为1的第一dma下行虚拟通道的sv数据包、再用10.2us发送优先级为2的第二dma下行虚拟通道的模拟量数据包、再用6.4us发送优先级为3的第三dma下行虚拟通道的goose数据包、再用1.125us发送优先级为4的第四dma下行虚拟通道的ft3数据包。

dma下行虚拟控制模块首先按照如上定义的通道优先级读取dma下行虚拟通道对应的第一下行通道寄存器,确认dma下行虚拟通道是否有需要待传输的sv发送数据,如果有需要待传输的sv发送数据,再读出第二下行通道寄存器和第三下行通道寄存器,即待dma下行源缓冲存储器的待传输的sv发送数据的传输长度和dma下行源缓冲存储器的待传输的发送数据的首地址。

在本实施例中,第一下行通道寄存器的第0位和第1位任何一位为1则表示该dma下行虚拟通道有需要待传送的数据(第0位为1,第一下行源乒乓存储器dsram1_a有待传输的sv发送数据,第1位为1,第二下行源乒乓存储器dsram2_b有待传输的sv发送数据),再读出第二下行通道寄存器和第三下行通道寄存器,即dma下行源缓冲存储器的待传输的sv发送数据的传输长度和dma下行源缓冲存储器的待传输的sv发送数据的首地址。

进一步的依据dma下行源缓冲存储器的待传输的sv发送数据的传输长度和dma下行源缓冲存储器的待传输的sv发送数据的首地址,产生dma读请求的avalone总线时序,该avalone总线是intelsrio控制模块(srioip)提供的dma请求总线,如图6所示。

步骤105,dma下行虚拟控制模块按照步骤104的方式将dma读请求的avalone总线时序发送给srio控制模块(srioip),该srio控制模块(srioip)将dma读请求的avalone总线时序打包成srionread命令以串行数据格式通过srio总线发送到dsp侧的srio收发硬件模块;

步骤106,在dsp侧的srio收发硬件模块收到srionread命令后,解析、识别到一个srio的dma读请求,并进一步解析出该dma读请求的dma下行源缓冲存储器的待传输的sv发送数据的传输长度和dma下行源缓冲存储器的待传输的sv发送数据的首地址,并在dsp侧以dma下行源缓冲存储器的待传输的sv发送数据的传输长度和dma下行源缓冲存储器的待传输的sv发送数据的首地址为依据从dsp侧的dma下行源缓冲存储器中读出对应地址的待传输的sv发送数据,并按照srio协议的resp包格式生成对应的resp数据包回应给fpga侧的srio控制模块(srioip);

步骤107,fpga侧的srio控制模块(srioip)收到dsp侧的srio收发硬件模块的resp数据包后,解析成avalone总线读响应时序,作为步骤105的avalone总线的后续操作。

步骤108,dma下行虚拟控制模块从srio控制模块(srioip)获得avalone总线读响应时序后,将对应的待传输的sv发送数据写入到dma下行目的缓冲存储器fdram1中;

本实施例中,dma下行目的缓冲存储器fdram1由两个容量一样、乒乓操作的第一下行目的乒乓存储器fdram1_a和第二下行目的乒乓存储器fdram1_b组成,并轮流乒乓读写。

步骤109,fpga侧对应的sv发送模块通过查看dma下行虚拟通道的dma下行目的缓冲存储器fdram1的非空标识,以乒乓操作读出待传输的sv发送数据并通过fpga侧对应的外部接口将待传输的sv发送数据发送出去。

其他dma下行虚拟通道,也可以依据上述方法传输各自应用程序的数据到fpga侧对应的外部接口。

以sv接收任务通过dma上行虚拟通道进行sv接收数据的传输为例,一种面向应用的多通道sriodma传输方法,包括以下步骤:

步骤200,dsp启动后dsp的sv接收任务获取并初始化dma上行目的缓冲存储器ddram1,

在本实施例中,dma上行目的缓冲存储器ddram1有两个大小相同、以乒乓模式操作的第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b组成,第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b的最大为32150字节。

步骤201,sv接收任务通过寄存器总线emif清除dma上行虚拟控制模块的第一上行通道寄存器,第一上行通道寄存器反映dma上行目的缓冲存储器ddram1的存储状态,

在本实施例中,第一上行通道寄存器的第0位和第1位分别对应着dma上行虚拟通道的第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b的当前状态,当sv接收任务第一次初始化或读空对应的第一上行目的乒乓存储器ddram1_a和第二上行目的乒乓存储器ddram1_b后,清除第一上行通道寄存器的状态寄存器。

初始化第三上行通道寄存器为dma上行目的缓冲存储器ddram1的首地址,

在本实施例中,第三上行通道寄存器存储dma上行虚拟通道的第一上行目的乒乓存储器ddram1_a或第二上行目的乒乓存储器ddram1_b的首地址,当第一上行通道寄存器的第0位为0时,将第一上行目的乒乓存储器ddram1_a的首地址赋值到第三上行通道寄存器,当第一上行通道寄存器的第1位为0时,将第二上行目的乒乓存储器ddram1_b首地址赋值到第三上行通道寄存器。

dma上行虚拟通道的配置完成,将等待fpga子系统写入数据到对应的dma上行目的缓冲存储器ddram1中,即dsp侧的sv接收任务将轮询各个dma上行虚拟通道对应的第一上行通道寄存器,第一上行通道寄存器反映dma上行目的缓冲存储器ddram1为是否缓冲有sv接收数据,如果缓冲有sv接收数据,则进入步骤207,否则进入步骤202;

在本实施例中,第一上行通道寄存器的第0位为1反映第一上行目的乒乓存储器ddram1_a内缓冲有sv接收数据,第一上行通道寄存器的第1位为1,即反映第二上行目的乒乓存储器ddram1_b内缓冲有sv接收数据。

步骤202,fpga侧的sv接收模块实时接收光网口进来的sv以太网数据包,并将sv接收数据包标记时间戳,缓存到dma上行源缓冲存储器fsram1中,

在本实施例中,dma上行源缓冲存储器fsram1包括两片大小一样功能相同的第一上行源乒乓存储器fsram1_a和第二上行源乒乓存储器fsram1_b,形成乒乓操作。

接收的以太网sv接收数据包,依次填入到dma上行源缓冲存储器fsram1,第一个sv接收数据包从第5字节开始,后续的sv接收数据包依次靠后排布,直到能将dma上行源缓冲存储器fsram1放置满为止,但必须保证最后一个sv接收数据包的完整性,即如果剩下的字节数据不足以放置一个待放置的sv接收数据包时,余下空间空余,如4所示。当待传输的sv接收数据包填充完毕后,将dma上行源缓冲存储器fsram1的首4字节的32位修改为如下定义:

第7至0比特位:待传输的sv接收数据包的流水号rx_ch1_dma_stream,每次组包完后加1,作为后续接收侧验证是否丢包的依据;

第15至8比特位:当前待传输的sv接收数据包的个数rx_ch1_dma_pack_num;

第31至16比特位:当前待传输的sv接收数据包的总字节数rx_ch1_dma_byte_len。

并且,当sv接收模块组包待传输数据完成后,将当前待传输的sv接收数据包的个数rx_ch1_dma_byte_len更新到第二上行通道寄存器,第二上行通道寄存器作用为待传输数据长度寄存器。

在本实施例中,dma上行源缓冲存储器fsram1中的第一上行源乒乓存储器fsram1_a和第二上行源乒乓存储器fsram1_b,形成乒乓操作填入以太网sv接收数据包。

步骤203:dma上行虚拟控制模块按照每250us的接收周期轮询哪些dma上行虚拟通道需要被调度,即轮询dma上行源缓冲存储器fsram1是否有待传输的sv接收数据,按照预设的dma上行虚拟通道的通道带宽值、优先级、srio总线的有效带宽对各个dma上行虚拟通道的待传输的sv接收数据进行接收,即根据dma上行虚拟通道的通道带宽值,计算接收周期中dma上行虚拟通道需要传输的sv接收数据的字节数,根据接收周期中dma上行虚拟通道需要接收的字节数和srio总线的有效带宽,计算dma上行虚拟通道在接收周期中占用的调度时间,根据dma上行虚拟通道的优先级,依次按照dma上行虚拟通道对应的调用时间对待传输的sv接收数据进行接收。

优先级1为最高,最优先调度,依次次之。各个dma上行虚拟通道带宽值及优先级设置如下:

第一dma上行虚拟通道的带宽设置为1gbps,分割到250us接收周期中,即调度数据量为1g*250*10-6/8=31250字节,调度时间为31250*8/6400mbps=39.0625us,该通道优先级为1;

第二dma上行虚拟通道的带宽设置为261.12mbps,分割到250us接收周期中,即调度数据量为261.12m*250*10-6/8=8160字节,调度时间为8160*8/6400mbps=10.2us,该通道优先级为2;

第三dma上行虚拟通道的带宽设置为163.84mbps,分割到250us接收周期中,即调度数据量为163.84m*250*10-6/8=5120字节,调度时间为5120*8/6400mbps=6.4us,该通道优先级为3;

第四dma上行虚拟通道的带宽设置为28.8mbps,分割到250us接收周期中,即调度数据量为28.8m*250*10-6/8=900字节,调度时间为900*8/6400mbps=1.125us,该通道优先级为4;

合计调度占用时间为:39.0625+10.2+6.4+1.125=56.7875us;调度空闲时间为:250us-56.7875us=193.2125us。dma上行数据调度时序图见图7。

即在250us周期中,先用39.0625us发送优先级为1的第一dma上行虚拟通道的sv数据包、再用10.2us发送优先级为2的第二dma上行虚拟通道的模拟;量数据包、再用6.4us发送优先级为3的第三dma上行虚拟通道的goose数据包、再用1.125us发送优先级为4的第四dma上行虚拟通道的ft3数据包。

对待传输的sv接收数据进行接收时,dma上行虚拟控制模块根据dma上行虚拟通道的优先级,查看对应的dma上行源缓冲存储器fsram1是否有待传输的sv接收数据,若有待传输的sv接收数据,并设定第三上行通道寄存器的值为有待传输的sv接收数据的dma上行源缓冲存储器fsram1中的待传输的sv接收数据首地址。

设定第二上行通道寄存器的值为dma上行源缓冲存储器fsram中的待传输的sv接收数据长度;

确定dma上行目的缓冲存储器的首地址。

dma上行虚拟控制模块获取dma上行源缓冲存储器中待传输的sv接收数据的传输长度、dma上行源缓冲存储器中的待传输的sv接收数据首地址、dma上行目的缓冲存储器的首地址后,产生dma写请求的avalone总线时序,该avalone总线是intelsrio控制模块(srioip)提供的dma请求总线,如图8所示。

步骤204:dma上行虚拟控制模块将dma写请求的avalone总线时序发送给srio控制模块(srioip),该srio控制模块(srioip)将sv接收任务的dma写请求的avalone总线时序打包成srionwrite命令以串行数据格式通过srio总线发送到dsp侧的srio收发硬件模块。

步骤205,在dsp侧的srio收发硬件模块收到srionwrite命令后,解析、识别到srio的dma写请求,并进一步解析出该dma写请求对应的dma上行源缓冲存储器中待传输的sv接收数据的传输长度、dma上行源缓冲存储器中的待传输的sv接收数据首地址、dma上行目的缓冲存储器的首地址后,并依此为依据将待传输的sv接收数据顺序写到dsp侧的ddr3内的dma上行目的缓冲存储器中。

步骤206,dma上行虚拟控制模块将dma上行虚拟通道的待传输的sv接收数据传输完成后,对第一上行通道寄存器进行置1,表征对应的dma上行目的缓冲存储器ddram1为满状态,

在本实施例中,如果待传输的sv接收数据上传到第一上行目的乒乓存储器ddram1-a则第一上行通道寄存器的第0位置1,如果待传输的sv接收数据上传到第二上行目的乒乓存储器ddram1-b则第一上行通道寄存器的第1位置1。

步骤207,第一上行通道寄存器进行置1则表明dma上行目的缓冲存储器ddram1有sv接收数据更新,sv接收任务处理dma上行目的缓冲存储器ddram1的更新的sv接收数据,

在本实施例中,第一上行通道寄存器的第0位为1则表示第一上行目的乒乓存储器ddram1-a中有dma上行数据更新,第一上行通道寄存器的第1位为1则表示第二上行目的乒乓存储器ddram1-b中有数据更新;进一步的,sv接收任务读出、处理、应用该dma上行虚拟通道中的第一上行目的乒乓存储器ddram1-a或第二上行目的乒乓存储器ddram1-b中的数据。

步骤208,dma上行虚拟通道中的sv接收任务处理完成dma上行目的缓冲存储器ddram1的更新的sv接收数据,将对应的第一上行通道寄存器清零,即dsp侧的sv接收任务释放该dma上行虚拟通道的dma上行目的缓冲存储器的控制权,可以让fpga侧的dma上行虚拟控制模块再次传输数据到该的dma上行目的缓冲存储器。

在本实施例中,即为将对应的第一上行通道寄存器中第0位或第1位清零,

其他dma上行虚拟通道,也可以依据上述方法将fpga侧各个接口的应用程序的数据传输到dsp侧对应的应用程序。

需要指出的是,本发明中所描述的具体实施例仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例作各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或超越所附权利要求书所定义的范围。

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