CN105872849A - 一种基于fpga的网络传输实时音视频纠错方法及系统 - Google Patents

一种基于fpga的网络传输实时音视频纠错方法及系统 Download PDF

Info

Publication number
CN105872849A
CN105872849A CN201610189983.7A CN201610189983A CN105872849A CN 105872849 A CN105872849 A CN 105872849A CN 201610189983 A CN201610189983 A CN 201610189983A CN 105872849 A CN105872849 A CN 105872849A
Authority
CN
China
Prior art keywords
bag
state
rtp
packet
rtp bag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610189983.7A
Other languages
English (en)
Other versions
CN105872849B (zh
Inventor
顾明飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Kaitengsifang Sifang Digital Broadcast & Television Equipment Co Ltd
Original Assignee
Chengdu Kaitengsifang Sifang Digital Broadcast & Television Equipment Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Kaitengsifang Sifang Digital Broadcast & Television Equipment Co Ltd filed Critical Chengdu Kaitengsifang Sifang Digital Broadcast & Television Equipment Co Ltd
Priority to CN201610189983.7A priority Critical patent/CN105872849B/zh
Publication of CN105872849A publication Critical patent/CN105872849A/zh
Application granted granted Critical
Publication of CN105872849B publication Critical patent/CN105872849B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/6437Real-time Transport Protocol [RTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64746Control signals issued by the network directed to the server or the client
    • H04N21/64761Control signals issued by the network directed to the server or the client directed to the server
    • H04N21/64776Control signals issued by the network directed to the server or the client directed to the server for requesting retransmission, e.g. of data packets lost or corrupted during transmission from server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/647Control signaling between network components and server or clients; Network processes for video distribution between server and clients, e.g. controlling the quality of the video stream, by dropping packets, protecting content from unauthorised alteration within the network, monitoring of network load, bridging between two different networks, e.g. between IP and wireless
    • H04N21/64784Data processing by the network
    • H04N21/64792Controlling the complexity of the content stream, e.g. by dropping packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于FPGA的网络传输实时音视频纠错方法及系统,涉及数字视频广播技术领域。本发明技术要点包括:将网络远程传输过来的数据包进行解析,对匹配本地IP地址及端口号的数据包进行处理,将校验FEC包及数据RTP包进行判断并分别存入到FPGA内部RAM和外部SDRAM。利用校验FEC包对其关联数据RTP包进行恢复,恢复后的数据RTP包回写SDRAM,控制模块读取SDRAM中完整的数据包进行输出,实现网络远程传输的丢包恢复。

Description

一种基于FPGA的网络传输实时音视频纠错方法及系统
技术领域
本发明涉及数字视频广播技术领域,尤其是一种远程传输音视频的纠错恢复技术。
背景技术
SMPTE:电影与电视工程师学会;
FEC:前向纠错;
FIFO:先进先出存储器;
RTP:实时传输协议;
IP:网络之间互连的协议。
数字视频广播网络进行远程数据传输时存在丢包现象,特别是在传输距离长、网络环境差的情况下。这将严重影响视频广播的接收,使接收的电视节目出现卡顿、马赛克,丢包更严重的情况将使接收端无法正常工作。对数字视频广播的数据流进行差错控制传输很有必要,实时音视频纠错恢复相当关键,而且实现起来具有一定复杂度。
SMPTE为了解决这一问题,制定了关于实时音视频传输的FEC相关标准(SMPTE-2022-1-2007,SMPTE-2022-2-2007)。
现有的实现方案中,比较典型的方案是在FPGA内部分别给FEC包和RTP包分配少量RAM(方案1)或者是将FEC包和RTP包分别存储在2片SDRAM中(方案2),或者是在ARM等嵌入式系统中实现(方案3)。
方案1的实现简单,也不占用外部存储资源,但是FPGA内部的RAM资源是有限的,由于所缓存的数据包有限制,且该方案不能解决数据包的抖动问题,纠错能力也很弱。
方案2可以解决方案1的不足,但是使用2片SDRAM不是很经济。
方案3对于低速的数据流恢复尚可,无力处理高速数据流,特别是丢包率高的网络。
发明内容
本发明针对上述存在的问题,提供一种基于FPGA的网络传输实时音视频纠错方法及系统。本发明不仅是标准的数据接收端的纠错恢复的高效实时实现,而且能够解决数据包的传输抖动问题及实现数据整体时延功能。
本发明提供的一种基于FPGA的网络传输实时音视频纠错方法,包括:
网络数据包接口处理步骤:
接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
将数据包的目标IP地址及目标端口号与本机系统设定的IP地址及端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头,以便读取时判断其数据包类型;
纠错恢复检测步骤:包括第一控制状态、第二控制状态、第三控制状态及第四控制状态;
第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
第二控制状态为:当所述输入缓存中的数据大于一个数据包时,将进行数据包存储步骤,数据包存储步骤包括:
根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
其中,FEC包的状态包括第0状态、第一状态、第二状态、第三状态、第四状态、第五状态及第六状态;第0状态表示FEC包无效;当FEC包到来时,且其后没有RTP包到来时为第一状态;当FEC包到来后,且其后有1个RTP包到来时为第二状态;当FEC包到来后,且其后有2个RTP包到来时为第三状态;当FEC包到来后,且其后有3个RTP包到来时为第四状态;当FEC包进入第四状态后并且FPGA内部存储的非第0状态的FEC包数量小于L+D时进入第五状态;其中L、D分别为数据矩阵的长和宽;进入第五状态后,当外部存储器中有3个以上的RTP包读出到输出缓存时,进入第六状态;第六状态为FEC包无效,且将回到第0状态;
第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则进入纠错恢复步骤,恢复该缺失的RTP包;
纠错恢复步骤:
根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包将其与上次缓存的结果进行异或运算并改写上次缓存结果;
以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
数据包存储步骤进一步包括:RTP包的包序号由0到65535进行循环,给每个RTP包分配的存储大小为16×1024比特,存储器位宽为16比特,RTP包的存储地址每隔16384×1024进行循环;RTP数据包的包序号用16比特二进制数表示,取其低14位并在该14位后补10比特0即得该RTP包在外部存储器的包首地址,并将RTP包存储到其包首地址对应的存储区中。
数据包存储步骤进一步包括:FEC包按照到包的先后顺序进行存储,存储器位宽为16比特,FEC包的存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特。
数据包存储步骤进一步包括:在FPGA内部使用位宽为1bit,长度为16384的存储区;当一个RTP包存入外部存储器时,将其包序号的低14位作为所述存储区的地址,将该地址对应位置1,当读出该RTP包时,将该地址对应为清0。
所述最小值为L×D+3;其中L、D分别为数据矩阵的长和宽。
本发明还提供了一种基于FPGA的网络传输实时音视频纠错系统,包括:
网络数据包接口处理单元,用于:
接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
将数据包的目标IP地址及目标端口号与本机的目标IP地址及目标端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头;
纠错恢复控制单元,用于:控制本机在第一控制状态、第二控制状态、第三控制状态及第四控制状态下;
第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
第二控制状态为:当所述输入缓存中的数据大于一个数据包时,启动数据包存储单元;
数据包存储单元用于:
根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
其中,FEC包的状态包括第0状态、第一状态、第二状态、第三状态、第四状态、第五状态及第六状态;第0状态表示FEC包无效;当FEC包到来时,且其后没有RTP包到来时为第一状态;当FEC包到来后,且其后有1个RTP包到来时为第二状态;当FEC包到来后,且其后有2个RTP包到来时为第三状态;当FEC包到来后,且其后有3个RTP包到来时为第四状态;当FEC包进入第四状态后并且FPGA内部存储的非第0状态的FEC包数量小于L+D时进入第五状态;其中L、D分别为数据矩阵的长和宽;进入第五状态后,当外部存储器中有3个以上的RTP包读出到输出缓存时,进入第六状态;第六状态为FEC包无效,且将回到第0状态;
第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则启动纠错恢复单元,恢复该缺失的RTP包;
纠错恢复单元,用于:
根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包,将其与上次缓存的结果进行异或运算并改写上次缓存结果;
以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
将异或运算的结果回写到外部存储器中需要回复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
进一步,还包括数据包输出单元,用于将输出缓存中的RTP包输出到下一处理单元;其中,网络数据包接口处理单元的工作时钟为25MHz;数据包存储单元、纠错恢复控制单元、纠错恢复单元的工作时钟均为100MHz;数据包输出单元的工作时钟为27MHz。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.采用高效的恢复处理方法,避免现有技术中的种种缺陷,提高了系统的纠错处理能力,复杂度降低,运算效率显著提高,从而减少了系统的时延。
2.本发明提出了一种RTP包及FEC包的存储方式,有利于进一步降低运算复杂度,同时节省了存储空间。
3.本发明仅需要使用一块外部存储器,在保证纠错能力的前提下,降低了存储成本。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为本发明一个具体实施例的系统框图。
图2为RTP包的包序号与其在外部SDRAM中的存储位置对照表。
图3为FEC包在内部RAM中的存储位置一览表。
图4为FEC包的状态寄存器FEC_STATUS中数值的含义。
具体实施方式
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
本发明公开了一种实时音视频纠错的实现方法及系统。
其中,方法实施例包括以下步骤:
1.网络数据包接口处理步骤
网络数据包到来后,将每次4比特的数据拼接成16比特后数据进行解包并提取目标IP地址和目标端口号,将该二项参数与本地设置的进行比较,如果相同则将数据包缓存到16比特位宽的输入FIFO,在存储的同时获取数据包类型、长度信息并添加到数据包头部给后续单元使用。在其他实施例中也可以将接收的4比特数据拼接成8比特或32比特数据等。
2.纠错恢复RTP包的检测步骤
控制本机在第一、二、三、四控制状态下工作。
第一控制状态:监测第二、三、四控制状态的触发条件,满足则进入相应状态,其中第二、三、四控制状态的优先级依次降低,完成所述相应控制状态的功能后控制本机返回第一控制状态。
第二控制状态:当缓存FIFO中的数据包大于一个时启动数据包存储步骤。
2.1数据包存储步骤:
当输入FIFO中的数据大于一个数据包的长度时,控制模块将读取FIFO缓存中的一个数据包,从读取的数据包中的数据头部判断其为FEC包或者为RTP包,从而进行分别缓存。FEC包存储到FPGA内部RAM,RTP数据包存储到外部的SDRAM。
2.1.1 为了方便运算及提高存取速度,本实施例中,FEC包和RTP数据包的存取规则如下:
RTP包存储规则:RTP数据包的包序号由0到65535进行循环,本实施例设计存储地址每隔16384×1024进行循环,给每个RTP包分配的存储大小为16×1024比特。将存储空间设计为大于一个数据包的长度是出于简化存储设计,而每存储16384个RTP包进行循环是基于节约存储考虑。如果降低整体数据包的可调时延时间可以进一步缩减RTP包的存储循环长度,以节约存储空间,例如为每个RTP包分配16×1024比特的空间,存储地址每隔8192×1024进行循环。
RTP数据包的包序号可用16比特二进制数表示,取其低14位并在该14比特后补10比特零即得该RTP数据包所存储到FPGA外部SDRAM中的包首地址。具体参见图2。
FEC包存储规则:其按照到包先后顺序存储,其存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特,具体FEC包存储地址和FPGA内部RAM对应关系见图3。
2.1.2 FEC包及数据RTP包状态标识存储
RTP数据包的存储或者读出(这里的读出指RTP包读出到输出FIFO以备去下一处理单元,而不是FEC纠错过程中的读出)都将进行标识。标识方法是在FPGA内部使用位宽为1bit,长度为16384的RAM。当RTP数据包读入时,根据其包序号值的低14位,以该值作为RAM地址,将其值置1,读出该RTP数据包时,将其包序号值相应的RAM地址处的值清0。
RTP包在SDRAM中的数目用RTP_TOTAL寄存器标识,写入一个RTP包时将该寄存器值加1,读出(指读出到输出FIFO以备进入下一处理单元)时则减1,在标识该RTP数据包号处的对应地址单元写1或者0。
对于FEC包,其标识相对复杂一些。在对FEC包存储的过程中,将获取到的FEC包所关联的首个RTP包序号RTP_SEQ、每个关联RTP包序号偏移量RTP_SEQ_DIS、以及该FEC包一共关联的RTP包数目RTP_SEQ_NUM,并使用寄存器缓存,纠错恢复时将使用这些参数。同时建立该FEC包的状态寄存器FEC_STATUS,用以标识该FEC包当前所处状态。
其具体值所表示含义见图4。第0状态表示FEC包无效;当FEC包到来时,且其后没有RTP包时为第一状态;当FEC包到来后,且其后有1个RTP包时为第二状态;当FEC包到来后,且其后有2个RTP包时为第三状态;当FEC包到来后,且其后有3个RTP包时为第四状态;当FEC包进入第四状态并且FPAG内存中的非第0状态的FEC包数量小于(L+D)后进入第五状态,L、D分别为数据矩阵的长和宽;数据矩阵的长和宽在SMPTE-2022-1-2007中均有定义;进入第五状态后,当外部存储器中有3个以上的RTP包读出到输出缓存时,进入第六状态;第六状态为FEC包无效,且将回到第0状态。
第三控制状态为当输出FIFO中的RTP包总数小于设定包数目时,在SDRAM存储器中输出一个RTP包到输出FIFO缓存;
第四控制状态:在SDRAM中的RTP包数大于最小值时(这里最小值为L×D+3;其中L、D分别为数据矩阵的长和宽;数据矩阵的长和宽在SMPTE-2022-1-2007中均有定义),反复查询每个FEC包所对应的FEC_STATUS的状态,如果其中一个FEC包的状态指示值在第五状态时将进行进一步查询,检查该FEC包相关联的RTP数据包是否完全到齐(利用RAM中的相关RTP数据包的标识位进行),如果发现仅有1bit的RTP数据包的标识位为0,将进行FEC包的恢复工作,对该缺失的RTP包进行恢复,否则控制本机回到第一控制状态。
在第四控制状态下每次只查询一个FEC包状态,恢复RTP包也为1个,下次所查询的FEC包的序号将加一。在FEC包所对应的FEC_STATUS的状态值为第六状态后,不管RTP包标识位查询是否满足纠错条件都将对所查询的FEC包状态位恢复成第0状态,以便未来到达FEC包的写入。
2.2 RTP数据包的纠错恢复步骤:
根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量RTP_SEQ_DIS后读取RTP包;
将读取到的上一个RTP包序号加上关联RTP包序号偏移量RTP_SEQ_DIS后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量RTP_SEQ_DIS读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包与上次缓存的结果进行异或运算并改写上次缓存结果;
以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
本发明还提供了一种与上述方法步骤一一对应的系统,包含网络数据包接口处理单元、数据包存储单元、纠错恢复RTP包的检测单元、RTP数据包的纠错恢复单元。这些功能模块均在FPAG内部由其逻辑电路实现。
在另一系统实施例中,还包括数据包输出单元,用于将输出缓存中的RTP包输出到下一处理单元这些处理单元。
系统时钟如图1所示,网络数据包接口处理单元采用时钟频率为25MHZ(clk1),数据包存储单元、纠错恢复RTP包的检测单元及RTP数据包的纠错恢复单元采用的时钟频率为100MHZ(clk2);数据包输出单元采用的时钟频率为27MHZ(clk3)。clk1满足网络数据输入接口时钟要求,clk2的高速时钟能实现高效的FEC纠错,clk3则满足ASI接口芯片的差分信号转换时钟要求。
本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。

Claims (10)

1.一种基于FPGA的网络传输实时音视频纠错方法,其特征在于,包括:
网络数据包接口处理步骤:
接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
将数据包的目标IP地址及目标端口号与本机系统设定的IP地址及端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头,以便读取时判断其数据包类型;
纠错恢复检测步骤:包括第一控制状态、第二控制状态、第三控制状态及第四控制状态;
第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
第二控制状态为:当所述输入缓存中的数据大于一个数据包时,将进行数据包存储步骤,数据包存储步骤包括:
根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
其中,FEC包的状态包括第0状态、第一状态、第二状态、第三状态、第四状态、第五状态及第六状态;第0状态表示FEC包无效;当FEC包到来时,且其后没有RTP包到来时为第一状态;当FEC包到来后,且其后有1个RTP包到来时为第二状态;当FEC包到来后,且其后有2个RTP包到来时为第三状态;当FEC包到来后,且其后有3个RTP包到来时为第四状态;当FEC包进入第四状态后并且FPGA内部存储的非第0状态的FEC包数量小于L+D时进入第五状态;其中L、D分别为数据矩阵的长和宽;进入第五状态后,当外部存储器中有3个以上的RTP包读出到输出缓存时,进入第六状态;第六状态为FEC包无效,且将回到第0状态;
第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则进入纠错恢复步骤,恢复该缺失的RTP包;
纠错恢复步骤:
根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包将其与上次缓存的结果进行异或运算并改写上次缓存结果;
以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
2.根据权利要求1所述的一种基于FPGA的网络传输实时音视频纠错方法,其特征在于,数据包存储步骤进一步包括:RTP包的包序号由0到65535进行循环,给每个RTP包分配的存储大小为16×1024比特,存储器位宽为16比特,RTP包的存储地址每隔16384×1024进行循环;RTP数据包的包序号用16比特二进制数表示,取其低14位并在该14位后补10比特0即得该RTP包在外部存储器的包首地址,并将RTP包存储到其包首地址对应的存储区中。
3.根据权利要求1所述的一种基于FPGA的网络传输实时音视频纠错方法,其特征在于,数据包存储步骤进一步包括:FEC包按照到包的先后顺序进行存储,存储器位宽为16比特,FEC包的存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特。
4.根据权利要求2所述的一种基于FPGA的网络传输实时音视频纠错方法,其特征在于,数据包存储步骤进一步包括:在FPGA内部使用位宽为1bit,长度为16384的存储区;当一个RTP包存入外部存储器时,将其包序号的低14位作为所述存储区的地址,将该地址对应位置1,当读出该RTP包时,将该地址对应为清0。
5.根据权利要求1所述的一种基于FPGA的网络传输实时音视频纠错方法,其特征在于,所述最小值为L×D+3;其中L、D分别为数据矩阵的长和宽。
6.一种基于FPGA的网络传输实时音视频纠错系统,其特征在于,包括:
网络数据包接口处理单元,用于:
接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
将数据包的目标IP地址及目标端口号与本机的目标IP地址及目标端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头;
纠错恢复控制单元,用于:控制本机在第一控制状态、第二控制状态、第三控制状态及第四控制状态下;
第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
第二控制状态为:当所述输入缓存中的数据大于一个数据包时,启动数据包存储单元;
数据包存储单元用于:
根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
其中,FEC包的状态包括第0状态、第一状态、第二状态、第三状态、第四状态、第五状态及第六状态;第0状态表示FEC包无效;当FEC包到来时,且其后没有RTP包到来时为第一状态;当FEC包到来后,且其后有1个RTP包到来时为第二状态;当FEC包到来后,且其后有2个RTP包到来时为第三状态;当FEC包到来后,且其后有3个RTP包到来时为第四状态;当FEC包进入第四状态后并且FPGA内部存储的非第0状态的FEC包数量小于L+D时进入第五状态;其中L、D分别为数据矩阵的长和宽;进入第五状态后,当外部存储器中有3个以上的RTP包读出到输出缓存时,进入第六状态;第六状态为FEC包无效,且将回到第0状态;
第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则启动纠错恢复单元,恢复该缺失的RTP包;
纠错恢复单元,用于:
根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包,将其与上次缓存的结果进行异或运算并改写上次缓存结果;
以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
7.根据权利要求6所述的一种基于FPGA的网络传输实时音视频纠错系统,其特征在于,RTP包的包序号由0到65535进行循环,给每个RTP包分配的存储大小为16×1024比特,其中位宽为16比特,RTP包的存储地址每隔16384×1024进行循环;RTP数据包的包序号用16比特二进制数表示,取其低14位并在该14位后补10比特0即得该RTP包在外部存储器的包首地址,并将RTP包存储到其包首地址对应的存储区中。
8.根据权利要求6所述的一种基于FPGA的网络传输实时音视频纠错系统,其特征在于,FEC包按照到包的先后顺序进行存储,FEC包的存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特,其中位宽为16比特。
9.根据权利要求7所述的一种基于FPGA的网络传输实时音视频纠错系统,其特征在于,在FPGA内部使用位宽为1bit,长度为16384的存储区;当一个RTP包存入外部存储器时,将其包序号的低14位作为所述存储区的地址,将该地址对应位置1,当读出该RTP包时,将该地址对应为清0。
10.根据权利要求6所述的一种基于FPGA的网络传输实时音视频纠错系统,其特征在于,还包括数据包输出单元,用于将输出缓存中的RTP包输出到下一处理单元;其中,网络数据包接口处理单元的工作时钟为25MHz;数据包存储单元、纠错恢复控制单元、纠错恢复单元的工作时钟均为100MHz;数据包输出单元的工作时钟为27MHz。
CN201610189983.7A 2016-03-30 2016-03-30 一种基于fpga的网络传输实时音视频纠错方法及系统 Active CN105872849B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610189983.7A CN105872849B (zh) 2016-03-30 2016-03-30 一种基于fpga的网络传输实时音视频纠错方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610189983.7A CN105872849B (zh) 2016-03-30 2016-03-30 一种基于fpga的网络传输实时音视频纠错方法及系统

Publications (2)

Publication Number Publication Date
CN105872849A true CN105872849A (zh) 2016-08-17
CN105872849B CN105872849B (zh) 2019-01-08

Family

ID=56627491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610189983.7A Active CN105872849B (zh) 2016-03-30 2016-03-30 一种基于fpga的网络传输实时音视频纠错方法及系统

Country Status (1)

Country Link
CN (1) CN105872849B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331767A (zh) * 2016-09-09 2017-01-11 腾讯科技(深圳)有限公司 一种数据纠错处理方法、终端、服务器及系统
CN107944140A (zh) * 2017-11-24 2018-04-20 中科亿海微电子科技(苏州)有限公司 同步配码的fpga系统及方法
CN109656855A (zh) * 2018-08-16 2019-04-19 浮栅智联科技(苏州)有限公司 在网卡内读写数据的方法、计算存储网络一体化芯片和网卡
CN110727263A (zh) * 2019-10-31 2020-01-24 南方电网调峰调频发电有限公司 一种设备动作顺序异常及监控信号抖动状态的检修方法
CN111326176A (zh) * 2018-12-14 2020-06-23 中移(杭州)信息技术有限公司 基于opus编码的rtp包的检测方法、装置及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633101A (zh) * 2003-12-24 2005-06-29 华为技术有限公司 一种数据包存储的管理方法和装置
US20080072113A1 (en) * 2006-08-30 2008-03-20 Siukwin Tsang Method of locating packet for resend from retry buffer
CN102572008A (zh) * 2010-12-08 2012-07-11 中国电信股份有限公司 通信业务处理方法与系统、网关设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633101A (zh) * 2003-12-24 2005-06-29 华为技术有限公司 一种数据包存储的管理方法和装置
US20080072113A1 (en) * 2006-08-30 2008-03-20 Siukwin Tsang Method of locating packet for resend from retry buffer
CN102572008A (zh) * 2010-12-08 2012-07-11 中国电信股份有限公司 通信业务处理方法与系统、网关设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106331767A (zh) * 2016-09-09 2017-01-11 腾讯科技(深圳)有限公司 一种数据纠错处理方法、终端、服务器及系统
CN107944140A (zh) * 2017-11-24 2018-04-20 中科亿海微电子科技(苏州)有限公司 同步配码的fpga系统及方法
CN109656855A (zh) * 2018-08-16 2019-04-19 浮栅智联科技(苏州)有限公司 在网卡内读写数据的方法、计算存储网络一体化芯片和网卡
CN111326176A (zh) * 2018-12-14 2020-06-23 中移(杭州)信息技术有限公司 基于opus编码的rtp包的检测方法、装置及介质
CN110727263A (zh) * 2019-10-31 2020-01-24 南方电网调峰调频发电有限公司 一种设备动作顺序异常及监控信号抖动状态的检修方法
CN110727263B (zh) * 2019-10-31 2021-02-26 南方电网调峰调频发电有限公司 一种设备动作顺序异常及监控信号抖动状态的检修方法

Also Published As

Publication number Publication date
CN105872849B (zh) 2019-01-08

Similar Documents

Publication Publication Date Title
CN105872849A (zh) 一种基于fpga的网络传输实时音视频纠错方法及系统
US7773599B1 (en) Packet fragment handling
US7616562B1 (en) Systems and methods for handling packet fragmentation
US7782857B2 (en) Logical separation and accessing of descriptor memories
US7680116B1 (en) Optimized buffer loading for packet header processing
US9276853B2 (en) Hashing of network packet flows for efficient searching
CN106452833B (zh) 一种rtu多协议动态加载的数据传输方法
CN101485152A (zh) 用于高性能捆绑重排序的方法、系统及计算机程序产品
US8972815B1 (en) Recovery of media datagrams
CN103685060B (zh) 数据包发送方法及装置
CN101136841B (zh) 基于现场可编程门阵列的隧道实现装置及方法
US7239630B1 (en) Dedicated processing resources for packet header generation
CN105446699A (zh) 数据帧队列管理方法
US7158520B1 (en) Mailbox registers for synchronizing header processing execution
CN105516023A (zh) 一种报文转发方法和装置
US20070005832A1 (en) Frame order processing apparatus, systems, and methods
CN109995548B (zh) 设备管理方法、系统和数据传输方法、系统及终端设备
CN105897929A (zh) 一种视频监控数据备份的方法及装置
US7180893B1 (en) Parallel layer 2 and layer 3 processing components in a network router
CN105357148A (zh) 避免网络交换芯片输出报文乱序的方法及系统
CN115699641A (zh) 通信装置和通信系统
CN103684656A (zh) 基于fpga的自适应链路层差错控制方法及装置
US9319333B2 (en) Instantaneous random early detection packet dropping
US11489765B2 (en) Data processing method and device, and computer readable storage medium
CN104391751A (zh) 一种算法数据处理的同步方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant