一种fpga+dsp结构上基于srio总线传输视频数据的实现方法

文档序号:7802213阅读:742来源:国知局
一种fpga+dsp结构上基于srio总线传输视频数据的实现方法
【专利摘要】本发明公开了一种FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,该方法中FPGA主要负责视频数据传输和视频接口扩展,视频数据通过FPGA的SRIO总线传输至DSP芯片。该方法设计思想主要包括在传输时仅使用SWRITE、NREAD和DOORBELL三种SRIO事务,采用多个缓冲队列重新组织视频数据,规定视频数据在缓冲队列、传输过程和处理过程中的数据单元和以FPGA作为SRIO传输的控制核心。本发明提出的SRIO传输方法能够减少FPGA逻辑资源和存储资源的消耗,降低SRIO传输程序复杂度,发挥FPGA并行控制优势,减少DSP在视频传输过程的时间开销,从而在占用较少FPGA资源情况下完成高速视频传输。
【专利说明】—种FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法
【技术领域】
[0001]本发明属于嵌入式视频处理领域,特别涉及一种FPGA+DSP结构上基于SRIO总线传输视频数据的低复杂度实现方法。
【背景技术】
[0002]为设计具有较高处理性能和具备灵活接口扩展能力的视频处理系统,使用现场可编程门阵列(FPGA)和通用数字信号处理器(DSP)作为处理核心的研究逐渐增多。其中,FPGA可以满足多数视频处理应用中的接口需求,但是FPGA在完成视频处理算法时,程序开发难度大、开发周期长。相比之下,DSP是一种专用于数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。以FPGA+DSP结构作为核心的硬件结构,其中DSP负责实现图像处理算法,FPGA负责实现接口电路及一些图像预处理工作以减轻DSP负担可以有效提高DSP处理性能,FPGA与DSP间的高速互连传输是视频处理系统正常工作的基本如提之一。
[0003]Serial Rapid I/O(SRIO)总线是一种高可靠、高效能和具有良好扩展性的开放总线标准,已经成为高性能嵌入式系统中高速互连的主要传输方式之一。现有申请号CN101562559的专利“一种串行Rapid I/O链路数据传输的方法及装置”,提出了一种使用SRIO链路传输数据的方法,该方法中发送端向接收端发的数据传输请求中包括数据传输类型信息,接收端根据接收到的数据类型信息分配接收缓冲区并接收数据。此方法若用来传输视频数据,则需要DSP判断数据类型并计算数据存放地址,DSP干预数据传输过程。申请号为CN102186076A的专利“一种实时码率预分配的图像压缩方法及图像压缩装置”与申请号为CN103177455A的专利“基于多核DSP的KLT运动目标跟踪算法的实现方法”均实现了FPGA到DSP的SRIO数据传输,由FPGA将视频数据直接打包发给DSP,DSP接收到数据包后要做数据包解析等繁琐工作,导致DSP不能专注于视频处理。
[0004]SRIO总线需要底层协议支持才能实现高速可靠的数据传输,DSP厂商提供了包括简洁接口的SRIO示例程序;FPGA厂商提供了 SRIO IP核,IP核提供十分灵活的SRIO控制机制,也给用户程序设计带来较大的难度,用户需要实现SRIO IP核繁琐的控制过程。本发明提出了一种FPGA+DSP结构上基于SRIO总线传输视频数据的低复杂度实现方法,能够减少FPGA资源消耗,降低程序复杂度,利用FPGA并行优势,使得DSP可以专注于视频处理基本不需要参与SRIO传输过程。

【发明内容】

[0005]针对实时视频数据传输需求,本发明涉及一种FPGA+DSP结构上基于SRIO总线传输视频数据的低复杂度实现方法,该方法能够减少视频数据通过SRIO传输时FPGA逻辑资源和存储资源的消耗,降低SRIO传输程序复杂度,发挥FPGA和DSP各自优势,FPGA负责视频传输控制,DSP专注于视频处理过程。[0006]为实现上述目的,本发明采用下述技术方案:FPGA负责视频数据传输和视频接口扩展,视频数据通过FPGA与DSP间的SRIO总线传输,DSP主要负责视频数据处理。FPGA作为SRIO传输的控制核心,仅采用三种SRIO事务完成视频数据传输,采用多个缓冲队列重新组织视频数据,并规定视频数据在缓冲队列、传输过程和处理过程中的数据单元。
[0007]一种FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,该方法的步骤如下:
[0008]步骤(I)、FPGA采集打包格式(Packed format)的视频数据按照视频分量种类(Y、Cb, Cr)写入各自视频缓冲队列,将缓冲队列中视频分量按照平面格式(Planner format)组成视频行写入SRIO发送缓冲队列;
[0009]步骤(2)、FPGA采用SWRITE事务将视频数据写入DSP外部存储器中的视频缓冲区,一帧视频数据写入完成后FPGA采用DOORBELL事务通知DSP,DSP进入中断处理该帧视频数据;
[0010]步骤(3)、一帧视频数据处理结束后,DSP采用DOORBELL事务通知FPGA,FPGA采用NREAD事务读取DSP视频缓冲区中的视频数据;
[0011]步骤(4)、FPGA读取的视频数据按照平面格式组成视频行写入SRIO接收缓冲队列,SRIO接收缓冲队列中视频数据按照视频分量种类不同写入各自视频缓冲队列,等待输出。
[0012]其中,所述SRIO传输方法中仅采用三种SRIO事务,SWRITE、NREAD和DOORBELL事务,SffRITE和NREAD事务用于收发视频数据,DOORBELL事务用于同步FPGA与DSP间的视频传输过程。
[0013]其中,所述SRIO传输方法中采用三种分量(Y、Cb、Cr)的视频缓冲队列完成视频数据重新组织,采用SRIO收发缓冲队列完成视频数据的传输缓冲。
[0014]其中,所述SRIO传输方法中规定视频数据单元,在SRIO收发缓冲队列中以视频行为存储单元,在SRIO传输过程中以视频数据包为传输单元,在DSP视频缓冲区中以视频矩阵为存储单元。
[0015]其中,所述SRIO传输方法中FPGA是SRIO传输的控制核心,除少量同步数据外(DSP发送的DOORBELL事务)FPGA负责视频数据收发控制工作,主动发起SRIO收发数据请求。
[0016]本发明与现有技术相比的优点在于:
[0017]1、本发明仅采用三种SRIO事务完成视频数据传输,采用直接10传输方式(SWRITE和NREAD事务)传递视频数据,直接10方式使得传输过程对DSP完全透明;采用最简单的消息传递方式(DOORBELL事务)同步FPGA和DSP数据传输;在SRIO程序设计时无需考虑其他事务,可以节省FPGA逻辑资源,降低FPGA上的SRIO程序设计复杂度。
[0018]2、本发明采用多个缓冲队列,缓冲队列便于视频采集模块与SRIO传输模块、视频输出模块与SRIO传输模块间数据的跨时钟域读写同步控制,降低FPGA上SRIO读写缓冲设计复杂度;多个缓冲队列的设计使得FPGA上的SRIO传输过程形成视频流,能够有效节省对FPGA存储资源的占用,利用内部存储资源即可满足程序需求。
[0019]3、本发明规定视频数据在缓冲队列、视频传输和存储时的处理单元,可以有效降低FPGA上SRIO地址计算过程复杂度,进而节省FPGA逻辑资源。[0020]4、本发明传输方法以FPGA为SRIO传输控制核心,DSP基本不需要参与SRIO传输控制工作,SRIO视频数据传输过程对DSP基本透明,DSP可以专注于视频处理计算。
【专利附图】

【附图说明】
[0021]图1是三分量缓冲队列结构示意图;
[0022]图2是FPGA端SRIO程序结构示意图;
[0023]图3是SRIO用户程序IREQ模块结构示意图;
[0024]图4是SRIO视频数据单元示意图。
【具体实施方式】
[0025]下面以720X576分辨率YCbCr4:2:2视频为例,进一步说明本发明的【具体实施方式】。
[0026]FPGA采集打包格式的YCbCr4:2:2视频数据,为三种分量设置各自视频缓冲队列,用于分离并暂存视频分量,如图1所示。在分离过程中同时完成视频采样格式转换工作(YCbCr4:2:2转为YCbCr4:2:0)。采集到的视频数据按照顶场和底场及视频分量顺序依次输入,舍弃顶场中Cr数据和底场中Cb数据,剩余视频数据按照分量不同存入对应视频缓冲队列。当一个完整视频行的分量数据都写入各自视频缓冲队列后,分别读取各视频缓冲队列,以视频行为单位将720字节Y分量和360字节Cb (或Cr)写入SRIO发送缓冲队列(TxFifo)。至此,SRIO发送缓冲队列中已经存入以平面格式视频行为单位的YCbCr4:2:0视频数据,等待发送。
[0027]FPGA厂商(以Xilinx为例)提供的SRIO IP核使用户可以在其基础上实现SRIO收发数据。为控制IP核完成SRIO数据收发,用户程序需要按照IP核四个端口的时序要求编写,并组织SRIO事务包信息。本发明用户程序对应IP核四个端口设计实现四个模块,如图2所示。FPGA作为SRIO互连结构核心,多数SRIO事务由FPGA用户程序主动发起。FPGA用户程序中最重要的模块是IREQ模块和IRESP模块,通过这两个端口的数据量最大。IREQ模块是FPGA向DSP发送所有请求的端口,是待处理视频数据流的发送端口 ;IRESP模块是FPGA接收DSP所有响应数据的端口,是处理后视频数据流接收端口。
[0028]用户程序IREQ模块分为四个模块:C0N、TIK、IGEN和TxFifo,如图3所示。
[0029](I)CON是整个IREQ模块的核心控制部分,是一次SRIO请求事务包的起点,它负责检测是否发送数据、控制何时发送数据以及组织数据包信息,CON监控TxFifo状态,控制TIK完成数据包发送;
[0030](2) TIK负责具体的数据组织工作,产生数据包包头信息,传递包头信息到IGEN,监控IGEN状态并向CON反馈;
[0031](3) IGEN负责与IP核的IREQ端口协同,将组织好的数据包信息传递给IP核,数据包分为包头信息和数据信息,IGEN的包头信息来自TIK,数据信息可以直接取自TxFifo或接收TIK传递的数据;
[0032](4)TxFifo是发送数据缓冲队列。用户程序IREQ模块结构如图3所示,视频数据依次流经TxFifo和IGEN,最终由IGEN传递到IP核的IREQ端口通过链路发出。
[0033]CON是FPGA端所有SRIO请求的发起者,也是FPGA控制SRIO通路数据收发的核心,使用CON模块请求事务状态机完成SRIO通路控制工作。本状态机包含六种状态:INIT、RDY (Ready)、Sff(SffRITE)、DB (DOORBELL)、NR(NREAD)和 SEND 状态。INIT 状态是状态机的初始状态,当SRIO硬件初始化成功后进入RDY状态,否则继续等待;
[0034](I) RDY状态表示SRIO链路正常,当发送请求来临并且IP核就绪时,进入对应发送请求状态,若SRIO链路异常进入INIT状态;
[0035](2) NR、DB和SW状态分别是发送NREAD事务、DOORBELL事务和SWRITE事务状态,分别组织各自事务信息,当IP核状态就绪时进入SEND状态,否则等待,若SRIO链路出现异常进入RDY状态;
[0036](3) SEND状态为SRIO请求事务发送状态,CON模块将组织好的数据信号传递给TIK模块,命令TIK模块开始组织数据包头,并发送SRIO数据包,当TIK完成数据接收进入RDY状态,否则继续等待,若出现链路异常进入RDY状态。
[0037]FPGA的三种SRIO请求事务发送控制是CON模块的重点,也是FPGA控制整个SRIO传输过程的重点。事务发送控制主要是控制事务发送时机和组织事务信息。三种事务操作控制如下:SWRITE事务以TxFifo中数据量为触发条件,当TxFifo中数据多于一行(720字节Y,360字节Cb或Cr)数据量时,即可组织SWRITE事务完成一行视频数据发送;
[0038](I)DOORBELL事务以发送视频数据量为触发条件,当成功发送一帧视频数据时,即可组织DOORBELL事务通知DSP,解除该帧视频缓冲区读写锁;
[0039](2)NREAD事务以IRESP模块中的SRIO接收缓冲区(RxFifo)中数据量和DSP的DOORBELL事务通知为触发条件,当DSP解锁一帧处理后视频缓冲区后,并且RxFifo中有多于一行的剩余空间,即可组织NREAD事务完成一行视频数据的读取。
[0040]另外,规定三种事务发送优先级由高到低分别为NREAD、D00RBELL和SWRITE事务。当NREAD事务发出后,DSP的SRIO硬件接口就可以开始组织响应数据包,响应数据包数据量大,时间紧迫程度高,需要尽早开始响应数据包组织,同时NREAD和DOORBELL事务占用发送周期少,因此NREAD发送优先级最高;DSP收到DOORBELL事务后解锁视频缓冲区,能够尽早开始DSP视频处理工作,因此DOORBELL优先级高于SWRITE事务。
[0041]组织事务信息是事务发送控制的另一个重点部分,主要工作是SWRITE和NREAD事务的存储地址计算,以SWRITE地址计算方法为例说明。SRIO事务的最大有效数据载荷是256字节,FPGA发送的每个SWRITE事务包中携带的数据将被按顺序写入DSP的视频缓冲区中的连续存储空间,为实现高效SRIO传输过程应尽量使用高载荷SWRITE事务包。因此,在综合考虑采集视频过程特点和视频存储计算特点后,如图4所示,规定:
[0042](I)TxFifo中数据按视频行(图中L标示)排列,每行按照720字节Y、360字节Cb (或Cr)数据顺序排列;
[0043](2)每个SWRITE事务包中数据只能包含一种分量(即Y/Cb/Cr中的一种),数据存储地址依此连续递增;
[0044](3)在DSP视频缓冲区中数据按视频帧(图中F标示)存储,每帧数据中同一分量连续存储,组成各分量矩阵,便于DSP完成视频处理。
[0045]在这种存储结构下,CON需要实现为每个SWRITE事务设置特定地址和数据长度。CON按行循环发送,720字节的Y数据划分为三个SWRITE包传输,前两个包数据长度为256字节,最后一个包数据长度208字节,包存储地址可以由帧基地址、Y分量偏移量和行偏移量计算获得,三个包存储地址连续增加;360字节Cb (或Cr)数据采用两个SWRITE事务发送,每个数据包长度为180字节,存储地址由帧基地址、Cb/Cr分量偏移量和行偏移量计算获得。
[0046]SRIO用户程序的IRESP模块主要负责接收解析DSP发送的NREAD响应事务包数据,相比IREQ模块设计简单。IRESP模块主要包括IHAN和RxFifo两部分,IHAN负责接收解析数据包,RxFifo是接收数据缓冲队列。IHAN接收解析数据工作由IHAN模块事务解析状态机控制完成。IHAN状态机只包括三个状态:INIT、RDY和RECV状态。INIT状态是初始状态,表示当前SRIO硬件链路连接仍未建立成功,当SRIO链路建立成功后进入RDY状态,否则等待;RDY状态表示当前IHAN模块处于空闲状态,可以接收响应事务,当响应事务到来时,进入RECV状态,当SRIO链路断开时,进入ΙΝΠ状态;RECV状态表示当前正在接收IP核IRESP端口数据信息,同时完成向RxFifo写入操作,当数据接收完成时,进入RDY状态,当SRIO链路端口时,进入INIT状态,否则继续接收数据,处于RECV状态。
[0047]DSP端SRIO程序使用DSP厂商提供的例程即可;FPGA端SRIO接收缓冲区及视频分量合并过程与视频分量分离发送过程相反,方法类似。
[0048]本发明未详细公开的部分属于本领域的公知技术。
[0049]以上对本发明所提供的FPGA+DSP结构上基于SRIO总线传输视频数据的低复杂度实现方法进行了详细的说明。对本领域的一般技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的
法律责任。
【权利要求】
1.一种FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,实现FPGA与DSP间视频数据传输,FPGA负责视频数据传输控制和视频接口扩展,DSP负责视频处理,其特征在于包括如下的步骤: 步骤(1) ,FPGA采集打包格式的视频数据按照视频分量种类Y、Cb、Cr写入各自视频缓冲队列,并将缓冲队列中的视频分量按照平面格式组成视频行写入SRIO发送缓冲队列; 步骤(2)、FPGA采用流写SWRITE事务将视频数据写入DSP外部存储器中的视频缓冲区,一帧视频数据写入完成后FPGA采用门铃DOORBELL事务通知DSP,DSP进入中断处理该帧视频数据; 步骤(3)、一帧视频数据处理结束后,DSP采用DOORBELL事务通知FPGA,FPGA采用读操作NREAD事务读取DSP视频缓冲区中的视频数据; 步骤(4)、FPGA读取的视频数据按照平面格式组成视频行写入SRIO接收缓冲队列,SRIO接收缓冲队列中视频数据按照视频分量种类写入各自视频缓冲队列,等待输出。
2.如权利要求1所述FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,其特征在于:所述SRIO传输方法中仅采用三种SRIO事务,SffRITE, NREAD和DOORBELL事务,SffRITE和NREAD事务用于收发视频数据,DOORBELL事务用于FPGA与DSP间同步SRIO视频数据传输;三种事务操作控制如下: (1)SffRITE事务以TxFifo中数据量为触发条件,当TxFifo中数据多于一行数据量时,即组织SWRITE事务完成一行视频数据发送; (2)DOORBELL事务以发送视频数据量为触发条件,当成功发送一帧视频数据时,即组织DOORBELL事务通知DSP,解除该帧视频缓冲区读写锁; (3)NREAD事务以IRESP模块中的SRIO接收缓冲区RxFifo中数据量和DSP的DOORBELL事务通知为触发条件,当DSP解锁一帧处理后视频缓冲区后,并且RxFifo中有多于一行的剩余空间,即组织NREAD事务完成一行视频数据的读取; 另外,三种事务发送优先级由高到低分别为NREAD、DOORBELL和SWRITE事务;当NREAD事务发出后,DSP的SRIO硬件接口就开始组织响应数据包,响应数据包数据量大,时间紧迫程度高,需要尽早开始响应数据包组织,同时NREAD和DOORBELL事务占用发送周期少,因此NREAD发送优先级最高;DSP收到DOORBELL事务后解锁视频缓冲区,能够尽早开始DSP视频处理工作,因此DOORBELL优先级高于SWRITE事务。
3.如权利要求1所述FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,其特征在于:所述SRIO传输方法中采用视频缓冲队列完成视频数据重新组织,采用SRIO收发缓冲队列完成视频数据的传输缓冲。
4.如权利要求1所述FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,其特征在于:所述SRIO传输方法中规定视频数据单元,在SRIO收发缓冲队列中以按照平面格式组织的视频行为存储单元,在SRIO传输过程中以相同视频分量组成有效数据载荷为256Byte的数据包为传输单元,在DSP视频缓冲区中以相同视频分量组成的视频矩阵为存储单元;具体包括如下操作: (1)TxFifo中数据按视频行排列,每行按照720字节Y、360字节Cb或Cr数据顺序排列; (2)每个SWRITE事务包中数据只能包含一种分量,即Y/Cb/Cr中的一种,数据存储地址依此连续递增; (3)在DSP视频缓冲区中数据按视频帧存储,每帧数据中同一分量连续存储,组成各分量矩阵,便于DSP完成视频处理。
5.如权利要求1所述FPGA+DSP结构上基于SRIO总线传输视频数据的实现方法,其特征在于:所述SRIO传输方法中FPGA是SRIO传输的控制核心,除DSP发送的DOORBELL事务外,FPGA 负责视频数据收发控制工作,主动发起SRIO收发数据请求。
【文档编号】H04N19/15GK103986931SQ201410171457
【公开日】2014年8月13日 申请日期:2014年4月25日 优先权日:2014年4月25日
【发明者】姜宏旭, 刘亭杉, 翟东林, 李波, 张萍 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1