首页 / 专利库 / 广播 / 数字视频广播 / 一种基于FPGA的网络传输实时音视频纠错方法及系统

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

阅读:814发布:2020-05-13

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

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。

说明书全文

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

技术领域

[0001] 本发明涉及数字视频广播技术领域,尤其是一种远程传输音视频的纠错恢复技术。

背景技术

[0002] SMPTE:电影与电视工程师学会;
[0003] FEC:前向纠错;
[0004] FIFO:先进先出存储器
[0005] RTP:实时传输协议;
[0006] IP:网络之间互连的协议。
[0007] 数字视频广播网络进行远程数据传输时存在丢包现象,特别是在传输距离长、网络环境差的情况下。这将严重影响视频广播的接收,使接收的电视节目出现卡顿、赛克,丢包更严重的情况将使接收端无法正常工作。对数字视频广播的数据流进行差错控制传输很有必要,实时音视频纠错恢复相当关键,而且实现起来具有一定复杂度。
[0008] SMPTE为了解决这一问题,制定了关于实时音视频传输的FEC相关标准(SMPTE-2022-1-2007,SMPTE-2022-2-2007)。
[0009] 现有的实现方案中,比较典型的方案是在FPGA内部分别给FEC包和RTP包分配少量RAM(方案1)或者是将FEC包和RTP包分别存储在2片SDRAM中(方案2),或者是在ARM等嵌入式系统中实现(方案3)。
[0010] 方案1的实现简单,也不占用外部存储资源,但是FPGA内部的RAM资源是有限的,由于所缓存的数据包有限制,且该方案不能解决数据包的抖动问题,纠错能也很弱。
[0011] 方案2可以解决方案1的不足,但是使用2片SDRAM不是很经济。
[0012] 方案3对于低速的数据流恢复尚可,无力处理高速数据流,特别是丢包率高的网络。

发明内容

[0013] 本发明针对上述存在的问题,提供一种基于FPGA的网络传输实时音视频纠错方法及系统。本发明不仅是标准的数据接收端的纠错恢复的高效实时实现,而且能够解决数据包的传输抖动问题及实现数据整体时延功能。
[0014] 本发明提供的一种基于FPGA的网络传输实时音视频纠错方法,包括:
[0015] 网络数据包接口处理步骤:
[0016] 接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
[0017] 将数据包的目标IP地址及目标端口号与本机系统设定的IP地址及端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头,以便读取时判断其数据包类型;
[0018] 纠错恢复检测步骤:包括第一控制状态、第二控制状态、第三控制状态及第四控制状态;
[0019] 第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
[0020] 第二控制状态为:当所述输入缓存中的数据大于一个数据包时,将进行数据包存储步骤,数据包存储步骤包括:
[0021] 根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
[0022] 且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
[0023] 将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
[0024] 其中,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状态;
[0025] 第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
[0026] 第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则进入纠错恢复步骤,恢复该缺失的RTP包;
[0027] 纠错恢复步骤:
[0028] 根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
[0029] 将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包将其与上次缓存的结果进行异或运算并改写上次缓存结果;
[0030] 以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
[0031] 将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
[0032] 数据包存储步骤进一步包括:RTP包的包序号由0到65535进行循环,给每个RTP包分配的存储大小为16×1024比特,存储器位宽为16比特,RTP包的存储地址每隔16384×1024进行循环;RTP数据包的包序号用16比特二进制数表示,取其低14位并在该14位后补10比特0即得该RTP包在外部存储器的包首地址,并将RTP包存储到其包首地址对应的存储区中。
[0033] 数据包存储步骤进一步包括:FEC包按照到包的先后顺序进行存储,存储器位宽为16比特,FEC包的存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特。
[0034] 数据包存储步骤进一步包括:在FPGA内部使用位宽为1bit,长度为16384的存储区;当一个RTP包存入外部存储器时,将其包序号的低14位作为所述存储区的地址,将该地址对应位置1,当读出该RTP包时,将该地址对应为清0。
[0035] 所述最小值为L×D+3;其中L、D分别为数据矩阵的长和宽。
[0036] 本发明还提供了一种基于FPGA的网络传输实时音视频纠错系统,包括:
[0037] 网络数据包接口处理单元,用于:
[0038] 接收并拼接网络数据,当接收到的数据足以构成一个数据包时,对数据包进行解包并提取数据包的目标IP地址及目标端口号;
[0039] 将数据包的目标IP地址及目标端口号与本机的目标IP地址及目标端口号进行比较,如果相同则将数据包存入本机输入缓存中;存储数据包的同时将从该数据包中获取的数据包类型添加到数据包的包头;
[0040] 纠错恢复控制单元,用于:控制本机在第一控制状态、第二控制状态、第三控制状态及第四控制状态下;
[0041] 第一控制状态为:监测第二控制状态、第三控制状态及第四控制状态的触发条件,若满足触发条件则进入相应的控制状态,其中第二控制状态、第三控制状态、第四控制状态的优先级依次降低,完成所述相应控制状态的功能后返回第一控制状态;
[0042] 第二控制状态为:当所述输入缓存中的数据大于一个数据包时,启动数据包存储单元;
[0043] 数据包存储单元用于:
[0044] 根据数据包类型将输入缓存中的RTP包存储到FPGA外部的存储器中,将输入缓存中的FEC包存储到FPGA内部的存储器中;
[0045] 且将RTP包按照数据包自身的序号顺序存储,并记录每个序号对应的RTP包的存储情况以及外部存储器中RTP包的总数;
[0046] 将FEC包按照到达本机的先后顺序存储,并记录每个FEC包的状态及每个FEC包关联的首个RTP包序号、关联RTP包序号偏移量、关联RTP包总数;
[0047] 其中,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状态;
[0048] 第三控制状态为当输出缓存中的RTP包总数小于设定包数目时,外部存储器输出一个RTP包到输出缓存;
[0049] 第四控制状态为当外部存储器中RTP包的总数大于最小值时,反复查询每个FEC包的状态;当查询到某个FEC包的状态为第五状态时,则进一步根据RTP包的存储情况查询该FEC包关联的RTP包是否到齐,如果仅有一个关联的RTP包缺失,则启动纠错恢复单元,恢复该缺失的RTP包;
[0050] 纠错恢复单元,用于:
[0051] 根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量后读取RTP包;
[0052] 将上一个读取到的RTP包序号加上关联RTP包序号偏移量后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包,将其与上次缓存的结果进行异或运算并改写上次缓存结果;
[0053] 以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
[0054] 将异或运算的结果回写到外部存储器中需要回复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
[0055] 进一步,还包括数据包输出单元,用于将输出缓存中的RTP包输出到下一处理单元;其中,网络数据包接口处理单元的工作时钟为25MHz;数据包存储单元、纠错恢复控制单元、纠错恢复单元的工作时钟均为100MHz;数据包输出单元的工作时钟为27MHz。
[0056] 综上所述,由于采用了上述技术方案,本发明的有益效果是:
[0057] 1.采用高效的恢复处理方法,避免现有技术中的种种缺陷,提高了系统的纠错处理能力,复杂度降低,运算效率显著提高,从而减少了系统的时延。
[0058] 2.本发明提出了一种RTP包及FEC包的存储方式,有利于进一步降低运算复杂度,同时节省了存储空间。
[0059] 3.本发明仅需要使用一外部存储器,在保证纠错能力的前提下,降低了存储成本。附图说明
[0060] 本发明将通过例子并参照附图的方式说明,其中:
[0061] 图1为本发明一个具体实施例的系统框图
[0062] 图2为RTP包的包序号与其在外部SDRAM中的存储位置对照表。
[0063] 图3为FEC包在内部RAM中的存储位置一览表。
[0064] 图4为FEC包的状态寄存器FEC_STATUS中数值的含义。

具体实施方式

[0065] 本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合。
[0066] 本说明书中公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
[0067] 本发明公开了一种实时音视频纠错的实现方法及系统。
[0068] 其中,方法实施例包括以下步骤:
[0069] 1.网络数据包接口处理步骤
[0070] 网络数据包到来后,将每次4比特的数据拼接成16比特后数据进行解包并提取目标IP地址和目标端口号,将该二项参数与本地设置的进行比较,如果相同则将数据包缓存到16比特位宽的输入FIFO,在存储的同时获取数据包类型、长度信息并添加到数据包头部给后续单元使用。在其他实施例中也可以将接收的4比特数据拼接成8比特或32比特数据等。
[0071] 2.纠错恢复RTP包的检测步骤
[0072] 控制本机在第一、二、三、四控制状态下工作。
[0073] 第一控制状态:监测第二、三、四控制状态的触发条件,满足则进入相应状态,其中第二、三、四控制状态的优先级依次降低,完成所述相应控制状态的功能后控制本机返回第一控制状态。
[0074] 第二控制状态:当缓存FIFO中的数据包大于一个时启动数据包存储步骤。
[0075] 2.1数据包存储步骤:
[0076] 当输入FIFO中的数据大于一个数据包的长度时,控制模块将读取FIFO缓存中的一个数据包,从读取的数据包中的数据头部判断其为FEC包或者为RTP包,从而进行分别缓存。FEC包存储到FPGA内部RAM,RTP数据包存储到外部的SDRAM。
[0077] 2.1.1 为了方便运算及提高存取速度,本实施例中,FEC包和RTP数据包的存取规则如下:
[0078] RTP包存储规则:RTP数据包的包序号由0到65535进行循环,本实施例设计存储地址每隔16384×1024进行循环,给每个RTP包分配的存储大小为16×1024比特。将存储空间设计为大于一个数据包的长度是出于简化存储设计,而每存储16384个RTP包进行循环是基于节约存储考虑。如果降低整体数据包的可调时延时间可以进一步缩减RTP包的存储循环长度,以节约存储空间,例如为每个RTP包分配16×1024比特的空间,存储地址每隔8192×1024进行循环。
[0079] RTP数据包的包序号可用16比特二进制数表示,取其低14位并在该14比特后补10比特零即得该RTP数据包所存储到FPGA外部SDRAM中的包首地址。具体参见图2。
[0080] FEC包存储规则:其按照到包先后顺序存储,其存储地址每隔64×1024进行循环,每个FEC包分配的存储大小为16×1024比特,具体FEC包存储地址和FPGA内部RAM对应关系见图3。
[0081] 2.1.2 FEC包及数据RTP包状态标识存储
[0082] RTP数据包的存储或者读出(这里的读出指RTP包读出到输出FIFO以备去下一处理单元,而不是FEC纠错过程中的读出)都将进行标识。标识方法是在FPGA内部使用位宽为1bit,长度为16384的RAM。当RTP数据包读入时,根据其包序号值的低14位,以该值作为RAM地址,将其值置1,读出该RTP数据包时,将其包序号值相应的RAM地址处的值清0。
[0083] RTP包在SDRAM中的数目用RTP_TOTAL寄存器标识,写入一个RTP包时将该寄存器值加1,读出(指读出到输出FIFO以备进入下一处理单元)时则减1,在标识该RTP数据包号处的对应地址单元写1或者0。
[0084] 对于FEC包,其标识相对复杂一些。在对FEC包存储的过程中,将获取到的FEC包所关联的首个RTP包序号RTP_SEQ、每个关联RTP包序号偏移量RTP_SEQ_DIS、以及该FEC包一共关联的RTP包数目RTP_SEQ_NUM,并使用寄存器缓存,纠错恢复时将使用这些参数。同时建立该FEC包的状态寄存器FEC_STATUS,用以标识该FEC包当前所处状态。
[0085] 其具体值所表示含义见图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状态。
[0086] 第三控制状态为当输出FIFO中的RTP包总数小于设定包数目时,在SDRAM存储器中输出一个RTP包到输出FIFO缓存;
[0087] 第四控制状态:在SDRAM中的RTP包数大于最小值时(这里最小值为L×D+3;其中L、D分别为数据矩阵的长和宽;数据矩阵的长和宽在SMPTE-2022-1-2007中均有定义),反复查询每个FEC包所对应的FEC_STATUS的状态,如果其中一个FEC包的状态指示值在第五状态时将进行进一步查询,检查该FEC包相关联的RTP数据包是否完全到齐(利用RAM中的相关RTP数据包的标识位进行),如果发现仅有1bit的RTP数据包的标识位为0,将进行FEC包的恢复工作,对该缺失的RTP包进行恢复,否则控制本机回到第一控制状态。
[0088] 在第四控制状态下每次只查询一个FEC包状态,恢复RTP包也为1个,下次所查询的FEC包的序号将加一。在FEC包所对应的FEC_STATUS的状态值为第六状态后,不管RTP包标识位查询是否满足纠错条件都将对所查询的FEC包状态位恢复成第0状态,以便未来到达FEC包的写入。
[0089] 2.2 RTP数据包的纠错恢复步骤:
[0090] 根据所述FEC包关联的首个RTP包序号读取首个RTP包;如果首个RTP包序号即为所要恢复的RTP包序号,则将所述首个RTP包序号加上关联RTP包序号偏移量RTP_SEQ_DIS后读取RTP包;
[0091] 将读取到的上一个RTP包序号加上关联RTP包序号偏移量RTP_SEQ_DIS后读取下一个RTP包;如果相加结果为需要恢复的RTP包号,则将该相加的结果再加上关联RTP包序号偏移量RTP_SEQ_DIS读取RTP包,将第一次、第二次所读取的RTP包进行异或运算并缓存,以后每读取一个RTP包与上次缓存的结果进行异或运算并改写上次缓存结果;
[0092] 以此类推,直到读取该FEC包的关联RTP包总数-1个RTP包,并进行RTP包总数-2次异或运算;
[0093] 将异或运算的结果回写到外部存储器中需要恢复的RTP包的存储位置,并改写恢复后RTP包的存储情况,同时外部存储器中的RTP包总数加1。
[0094] 本发明还提供了一种与上述方法步骤一一对应的系统,包含网络数据包接口处理单元、数据包存储单元、纠错恢复RTP包的检测单元、RTP数据包的纠错恢复单元。这些功能模块均在FPAG内部由其逻辑电路实现。
[0095] 在另一系统实施例中,还包括数据包输出单元,用于将输出缓存中的RTP包输出到下一处理单元这些处理单元。
[0096] 系统时钟如图1所示,网络数据包接口处理单元采用时钟频率为25MHZ(clk1),数据包存储单元、纠错恢复RTP包的检测单元及RTP数据包的纠错恢复单元采用的时钟频率为100MHZ(clk2);数据包输出单元采用的时钟频率为27MHZ(clk3)。clk1满足网络数据输入接口时钟要求,clk2的高速时钟能实现高效的FEC纠错,clk3则满足ASI接口芯片的差分信号转换时钟要求。
[0097] 本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈