一种基于FPGA的数据传输系统及传输方法与流程

文档序号:16608565发布日期:2019-01-14 21:21阅读:345来源:国知局
一种基于FPGA的数据传输系统及传输方法与流程

本发明属于视频信号数据控制设计技术领域,具体涉及一种基于fpga的数据传输系统。



背景技术:

对于普通的fpga(现场可编程门阵列)而言,纯逻辑的结构使fpga在浮点运算消耗资源大,目前为了解决fpga运算能力的问题,xilinx推出了zynq-7000系列的fpga,而fpga内部的ps(passiveserial,被动串行的加载方式)模块与pl(progarmmablelogic,可编程逻辑)模块之间数据传输如果使用传统的axi总线访问内存的方式其数据传输速度低,效率低,传统的传输方式需要ps模块在访问每个地址时都需要作出一次交易的发起,从而降低了数据传输速度。



技术实现要素:

本发明的目的在于提供一种基于fpga的数据传输系统,以克服现有技术的不足。

为达到上述目的,本发明采用如下技术方案:

一种基于fpga的数据传输系统,包括ps模块和pl模块,pl模块包括srio模块、lvds模块、ps模块-pl模块、dma模块和fifo存储器;

所述srio模块用于收发数据;srio模块用于对接收到的数据包进行解析,将负载写入fifo存储器;srio模块用于接收来自与dma模块发送通道相连的fifo存储器的输出数据并传出;

fifo存储器用于数据缓存;

所述lvds模块用于接收数据,通过外部传输将视频信号输入到lvds模块,lvds模块用于将接受到的数据写入fifo存储器等待数据读取;

ps模块-pl模块通过axi总线访问ps模块内部存储器,实现参数传递;

dma模块用于实现ps模块与pl模块之间数据的收发,同时用于通过读取fifo存储器中的数据。

进一步的,dma模块包括rx_fifo存储器模块、tx_fifo存储器模块、cmd模块和contrl模块;

rx_fifo存储器模块用于对dma模块接收数据的缓存,等待数据被搬移;

tx_fifo存储器模块用于对dma模块发送数据的缓存,等到数据被读取;

cmd模块用于对ps模块发送的读写指令的接收,解析其中的读地址、读数据大小、读取操作使能、写地址、写数据大小和写操作使能;然后将这些参数以及控制信号发送给contrl模块;

contrl模块用于接收cmd模块的控制信号参数,然后将参数的含义根据axi4_lite总线的时序关系接收来自ps模块的数据或者发送给ps模块;contrl模块根据axi4_stream总线的时序关系接收来自模块外部的fifo存储器的数据,或者对fifo存储器写入数据。

进一步的,ps模块通过emmc、spi、uart、i2c或网口实现与外设的通信。

一种基于fpga的数据传输系统的数据传输方法,其特征在于,接收数据处理:首先在ps模块内部在上电之后完成对于dma模块的初始化,然后当fifo存储器中接收srio模块或lvds模块传入数据后,dma模块控制器读取数据,写入dma模块缓存中;当ps模块发送出读取指令之后,dma接收到读取指令、地址和读取数据长度参数后启动dma模块将缓存中的数据写入到ddr3中的相应的位置;

发送数据处理:首先在ps模块内部在上电之后完成对于dma的初始化,然后对于需要发送的数据按照相应的格式打包,然后将数据写入到ddr3中,发送指令,dma模块接收到发送指令、发送数据的地址和发送数据的长度之后读取相应的数据,然后将数据写入到缓存中,通过srio模块或lvds模块将数据传出。

进一步的,当使用srio模块接收数据时,首先通过差分信号将数据接收,然后由srio模块核对信号进行处理;然后对接收到的数据包进行解析,将负载写入到fifo存储器中,同时通知ps模块接收数据;ps模块给dma模块发送接收指令,然后dma模块接收数据,将数据写入到ps模块的ddr3中。

进一步的,当使用srio模块发送数据时,ps模块将数据按照srio数据包类型打包,然后将数据写入到ddr3中;将发送指令发送给dma模块,dma模块收到指令之后将数据从ddr3中搬移出来,写入fifo存储器中,srio模块读取fifo存储器中的数据,将数据通过差分信号线发送给对端。

进一步的,当使用lvds接收视频数据时,通过两路lvds接收外部的视频数据,lvds模块对数据解析处理后,分别写入各自模块对应的fifo存储器模块中,同时通知ps模块有数据到来,ps模块发送出接收指令,两路dma模块接收到指令后读取fifo存储器数据,将数据搬移到对应的ddr3中。

进一步的,当ps模块和pl模块需要传输设定参数时,使用ps模块-pl模块;ps模块-pl模块参数的收发都是由ps模块发起的,ps模块通过对相应的地址读写完成传输操作,pl模块通过对总线上给出的地址接收或者写入相应的参数。

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

本发明一种基于fpga的数据传输系统,通过设置ps模块以及包括srio模块、lvds模块、ps模块-pl模块、dma模块和fifo存储器的pl模块,利用srio模块和lvds模块进行数据的收发,同时将数据储存在fifo存储器中,利用dma模块接收ps模块对fifo存储器中的数据进行访问,在ps模块内做各种控制、数据的用算,而在pl模块部分主要做数据的传输与控制,充分发挥各自的优点,同时也减少了pl模块中大量的逻辑控制,使整个设计都变的清晰简单,利用dma模块实现ps模块与pl模块之间的数据传输,相比传统的ps模块与pl模块之间使用axi总线之间访问内存的传输方式会快很多,减少了总线上的消耗,由于传统的传输方式需要ps模块在访问每个地址时都需要作出一次交易的发起,而使用dma这种突发的传输方式,减少了ps模块发起操作的次数同时dma这种传输方式在数据搬移过程中不需要ps模块的参与,将ps模块的从数据搬移工作中解放出来,优化了ps模块中的程序,同时为数据处理提供了更多的时间。

一种基于fpga的数据传输方法,利用srio模块和lvds模块进行数据的收发,同时将数据储存在fifo存储器中,利用dma模块接收ps模块对fifo存储器中的数据进行访问,在ps模块内做各种控制、数据的用算,而在pl模块部分主要做数据的传输与控制,充分发挥各自的优点,同时也减少了pl模块中大量的逻辑控制,使整个设计都变的清晰简单,利用dma模块实现ps模块与pl模块之间的数据传输,相比传统的ps模块与pl模块之间使用axi总线之间访问内存的传输方式会快很多,减少了总线上的消耗,由于传统的传输方式需要ps模块在访问每个地址时都需要作出一次交易的发起,而使用dma这种突发的传输方式,减少了ps模块发起操作的次数同时dma这种传输方式在数据搬移过程中不需要ps模块的参与,将ps模块的从数据搬移工作中解放出来,优化了ps模块中的程序,同时为数据处理提供了更多的时间。

附图说明

图1为本发明的结构示意图;

图2为dma模块接收数据流程示意图;

图3为dma模块发送数据流程示意图;

图4为dma模块内部系统结构图。

具体实施方式

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

一种基于fpga的数据传输系统,包括ps模块和pl模块,pl模块包括srio模块、lvds模块、ps模块-pl模块、fifo存储器和dma模块;srio模块、lvds模块与dma模块连接于fifo存储器,ps模块-pl模块和dma模块连接于ps模块;

其中srio模块用于收发数据,当接收到数据之后对数据包进行解析,将负载写入fifo存储器,fifo存储器的输出端连接到dma模块;当srio模块发送数据时,接收来自与dma模块发送通道相连的fifo存储器的输出,将fifo存储器的输出数据连接到srio数据发送接口上;

其中lvds模块用于接收数据,通过外部传输将视频信号输入到lvds模块,lvds模块接收数据后将数据写入fifo存储器等待数据读取;

ps模块-pl模块通过axi总线访问ps模块内部存储器,进行低速数据的收发,从而实现参数的传递;

dma模块用于对ps模块与pl模块之间数据的快速的收发,当ps模块通过查询模式发出读取指令时,dma模块读取相应fifo存储器中的数据,启动dma模块引擎根据指令中的地址将数据写入到ps模块相应的ddr3地址中去;dma模块发送数据时,ps模块首先将数据写入ps模块的ddr3然后,发送指令启动dma模块,同时将地址、长度信息发送给dma模块;dma模块访问ddr3对应的地址,从而读取相应长度的数据。

ps模块中,调用内部的控制器可以实现对外部多模块的控制,如emmc、spi、uart、i2c、网口可以实现与外设的通信,使本系统的功能更加完善。此外,ps模块内部对通过dma模块传输的数据进行处理,根据设计要求可通过多种渠道将数据反馈。通过网口可以实现与上位机之间的通信,从而实现上位机对本系统的控制。

如图1所示,当使用srio模块接收数据时,首先通过差分信号将数据接收,然后由srio模块核对信号进行处理;然后对接收到的数据包进行解析,将负载写入到srio_rx_fifo存储器(fifo存储器)中,同时通知ps模块接收数据;ps模块给dma模块发送接收指令,然后dma模块接收数据,将数据写入到ps模块的ddr3中。

当使用srio模块发送数据时,ps模块将数据按照srio数据包类型打包,然后将数据写入到ddr3中;将发送指令发送给dma模块,dma模块收到指令之后将数据从ddr3中搬移出来,写入srio_tx_fifo存储器中;srio模块读取fifo存储器中的数据,将数据通过差分信号线发送给对端。

当使用lvds接收视频数据时,通过两路lvds接收外部的视频数据;lvds模块对数据解析处理后,分别写入各自模块对应的fifo存储器模块中,同时通知ps模块有数据到来,ps模块发送出接收指令,两路dma模块接收到指令后读取fifo存储器数据,将数据搬移到对应的ddr3中;

当ps模块和pl模块需要传输某些参数时,使用ps模块-pl模块;ps模块-pl模块参数的收发都是由ps模块发起的,ps模块通过对相应的地址读写完成传输操作,pl模块通过对总线上给出的地址接收或者写入相应的参数。

此外,ps模块还具备外部接口,支持两路spi、两路i2c、两路uart、网口、以及emmc,除此之外,ps模块内部会对接收到的数据作出运算和处理,以及根据各种反馈信号对pl模块作出控制。

dma模块接收数据过程如图2所示,首先需要ps模块内部在上电之后完成对于dma模块的初始化,然后当fifo存储器中接收数据后,dma模块控制器读取数据,写入dma模块缓存中;当ps模块发送出读取指令之后,dma接收到读取指令、地址、读取数据长度等参数后启动dma模块将缓存中的数据写入到ddr3中的相应的位置。

dma发送数据过程如图3所示,首先需要ps模块内部在上电之后完成对于dma的初始化,然后对于需要发送的数据按照相应的格式打包,然后将数据写入到ddr3中,发送指令。dma模块接收到发送指令、发送数据的地址、发送数据的长度之后读取相应的数据。然后将数据写入到缓存中。

dma模块如图4所示,包括rx_fifo存储器模块、tx_fifo存储器模块、cmd模块和contrl模块;dma模块是以查询模式为主,只具备单通道的传输;

rx_fifo存储器模块用于对dma模块接收数据的缓存,等待数据被搬移;

tx_fifo存储器模块用于对dma模块发送数据的缓存,等到数据被读取;

cmd模块用于对ps模块发送的读写指令的接收,解析其中的读地址、读数据大小、读取操作使能、写地址、写数据大小和写操作使能;然后将这些参数以及控制信号发送给contrl模块;

contrl模块主要负责接收cmd模块的参数,然后根据参数的含义根据axi4_lite总线的时序关系接收来自ps模块的数据或者发送给ps模块数据;根据axi4_stream总线的时序关系接收来自模块外部的fifo存储器的数据,或者对fifo存储器写入数据。

通过测试传统的pl模块与ps模块之间通过axi总线的内存直接访问模式为12mb/s,而通过本设计中的dma模块传输速度可达35mb/s,相比之下已经提高了3倍的速度。而且使用dma的另外一个优势是,不需要消耗ps模块内部的处理器,启动后数据可以自动搬移,从而优化了ps模块内部的设计,将ps模块从数据搬移工作中解放出来,也为ps模块内部的数据处理提供了更多的时间。

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