数据传输方法、装置及可读存储介质与流程

文档序号:33699362发布日期:2023-03-31 17:44阅读:36来源:国知局
数据传输方法、装置及可读存储介质与流程

1.本技术涉及通信技术领域,尤其涉及一种数据传输方法、装置及可读存储介质。


背景技术:

2.现有的低时延高速率场景中,因为低时延的要求可能无法保证反馈重传机制,错误的传输块(transport block,tb)直接被丢弃,会造成系统性能的巨大损失,那么如何利用错误的传输块中正确的数据包信息来提升高可靠低时延业务的性能是一个重要的问题。一个传输块包含一个媒体接入控制(medium access control,mac)协议数据单元(protocol data unit,pdu)。其中,网络编码技术作为一个重要的候选技术,其可以通过对若干个大小相同的原数据进行编码获得编码数据包(简称为编码包),并通过对编码数据包进行译码恢复原数据。换言之,编码包融合了若干个原数据的信息,因此可以用来恢复任意相关的原数据。该技术是一种可以有效改善无线通信系统传输性能的方法。
3.现有新一代无线接入技术(new radio access technology,nr)/5g中,考虑将网络编码技术应用在层二(包括分组数据汇聚协议(packet data convergence protocol,pdcp)层,无线链路控制(radio link control,rlc)层以及mac层)的某一层或者某两层之间。当mac层的一个tb传输错误时,实际上这个错误的tb中只有个别数据包出现比特错误,大多数数据包还是能够保持正确的。如何将网络编码技术应用在mac层,以有效利用传输错误的tb中正确的数据包成为了未来应用的一个重要难点。


技术实现要素:

4.本技术实施例提供一种数据传输方法、装置及可读存储介质,可以将网络编码技术应用在mac层,以期有效利用传输错误的tb中正确的数据包、以恢复出传输错误的原数据,从而提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
5.下面从不同的方面介绍本技术,应理解的是,下面的不同方面的实施方式和有益效果可以互相参考。
6.第一方面,本技术提供一种数据传输方法,该方法包括:第一设备生成p个第一mac pdu,再将这p个第一mac pdu承载在p个tb上,传输承载这p个第一mac pdu的p个传输块,其中一个第一mac pdu承载于一个tb上。这p个第一mac pdu包含k个第一数据包和q个第二数据包,且该k个第一数据包和该q个第二数据包按照预设规则排列。这里的第一数据包是原数据包,具体的,原数据包的定义可见下文描述,此处不赘述。第二数据包是编码包,比如冗余包。其中,每个原数据包包括一个原数据包包头或一个编码包包头,每个编码包(或冗余包)包括一个编码包包头。这里,原数据包包头的大小与编码包包头的大小可以相等。
7.上述预设规则用于表示原数据包和编码包(或冗余包)在这p个第一mac pdu中的位置。可选的,该预设规则可以是收发两端自行协商的,也可以是预设的,还可以是其他方式确定的,以使收发两端均知道该预设规则。也就是说,根据该预设规则,可以推导出/推算出原数据包和编码包(或冗余包)分别在这p个第一mac pdu中的位置。
8.本技术中的预设可以理解为设置、预先设置、预先定义、存储、预存储、预协商、预配置、固化、或预烧制。
9.这p个第一mac pdu中每个第一mac pdu包含整数个数据包,且每个第一mac pdu中除最后一个数据包外其他数据包的大小相等。其中,这p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外其他数据包的大小均等于数据包预设大小(l),该最后一个数据包的大小小于或等于该数据包预设大小(l)。
10.上述k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个原数据是p个第二mac pdu分别执行分割操作而得到。这里的分割操作可以是对每个第二mac pdu进行等大小分割。应理解,第二mac pdu的大小可能不是分割大小的整数倍,故第二mac pdu经过等大小分割而剩余的原数据可能小于分割大小,即第二mac pdu的分割得到的最后一个原数据的大小可能小于分割大小。
11.上述k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。其中,网络编码操作至少包括网络编码本身和加编码包包头,还可以进一步包括填充操作或其他操作,在此不予赘述。
12.上述p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。
13.一种实现方式中,如果k与n相等,且q与m相等,则上述p个第一mac pdu总共包括n个第一数据包和m个第二数据包。该n个第一数据包是n个原数据分别加包头(即原数据包包头或编码包包头)而得到,该m个第二数据包是对该n个原数据进行网络编码操作而生成。该n个原数据是p个第二mac pdu分别执行分割操作而得到。其中,该n个原数据为一个网络编码分组或一个网络编码窗,对该网络编码分组或网络编码窗(即这n个原数据)进行网络编码可以得到与该网络编码分组对应的编码数据(即该m个第二数据包分别包含的编码数据)。
14.另一种实现方式中,如果k与n不相等(即k大于n),或q与m不相等(即q大于m),则该k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。换句话说,上述q个第二数据包中的至少一个第二数据包的数据部分与这k个第一数据包中的至少一个第一数据包的数据部分满足网络编码关系。或者,该q个第二数据包中的全部或部分第二数据包是这k个第一数据包中的全部或部分第一数据包的数据部分经过网络编码操作而得到。该k个原数据是p个第二mac pdu分别执行分割操作而得到。该n个原数据为一个网络编码分组或一个网络编码窗,该k个原数据中剩余的k-n(可能为0)个原数据属于另一个网络编码分组或另一个网络编码窗。也就是说,这p个第一mac pdu包含的数据包可能来自两个不同的网络编码分组或网络编码窗。
15.其中,上述第二mac pdu是rlc层传输至mac层的数据(即rlc pdu)生成的mac pdu。也就是说,该第二mac pdu是rlc层传输至mac层的数据添加mac层附加信息而生成/得到的。应理解,关于“网络编码分组”的含义,可参见下文实施例的描述,此处不赘述。
16.可见,本方案通过约束每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,还约束原数据包和编码包在一个或多个第一mac pdu中的排列
顺序(位置),隐含了数据包的位置信息,以使接收端/译码端的mac层可以识别出tb中每个数据包的位置和边界,从而可以利用传输错误的tb中正确的数据包来恢复出传输错误的原数据,以实现将网络编码技术应用在mac层,提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
17.第二方面,本技术提供一种数据传输装置,该数据传输装置可以是第一设备或第一设备中的芯片或电路。该数据传输装置包括:生成模块,用于生成p个第一mac pdu,该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照预设规则排列;传输模块,用于传输承载该p个第一mac pdu的p个传输块,一个第一mac pdu承载在一个传输块上。这里的第一数据包是原数据包,第二数据包是编码包或冗余包。其中,每个原数据包包括一个原数据包包头或编码包包头,每个编码包(或冗余包)包括一个编码包包头。这里,原数据包包头的大小与编码包包头的大小可以相等。
18.上述预设规则用于表示原数据包和编码包(或冗余包)在这p个第一mac pdu中的位置。
19.这p个第一mac pdu中每个第一mac pdu包含整数个数据包,且每个第一mac pdu中除最后一个数据包外其他数据包的大小相等。
20.上述k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个原数据是p个第二mac pdu分别执行分割操作而得到。上述k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。
21.上述p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。
22.一种实现方式中,如果k与n相等,且q与m相等,则上述p个第一mac pdu总共包括n个第一数据包和m个第二数据包。该n个第一数据包是n个原数据分别加包头(即原数据包包头或编码包包头)而得到,该m个第二数据包是对该n个原数据进行网络编码操作而生成。该n个原数据是p个第二mac pdu分别执行分割操作而得到。
23.另一种实现方式中,如果k与n不相等(即k大于n),或q与m相等(即q大于m),则该k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。该k个原数据是p个第二mac pdu分别执行分割操作而得到。
24.其中,上述第二mac pdu是rlc层传输至mac层的数据(即rlc pdu)生成的mac pdu。也就是说,该第二mac pdu是rlc层传输至mac层的数据添加mac层附加信息而生成/得到的。
25.第三方面,本技术提供一种数据接收方法,该方法包括:第二设备获取p个传输块,该p个传输块上承载p个第一mac pdu;再对该p个传输块进行译码操作,以得到n个原数据,并将该n个原数据进行合并,以得到一个或多个第二mac pdu。其中一个第一mac pdu承载于一个tb上。这p个第一mac pdu包含k个第一数据包和q个第二数据包,且该k个第一数据包和该q个第二数据包按照预设规则排列。这里的第一数据包是原数据包,第二数据包是编码包或冗余包。其中,每个原数据包包括一个原数据包包头或一个编码包包头,每个编码包(或冗余包)包括一个编码包包头。这里,原数据包包头的大小与编码包包头的大小可以相等。
26.上述预设规则用于表示原数据包和编码包(或冗余包)在这p个第一mac pdu中的
位置。
27.这p个第一mac pdu中每个第一mac pdu包含整数个数据包,且每个第一mac pdu中除最后一个数据包外其他数据包的大小相等。
28.上述k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个原数据是p个第二mac pdu分别执行分割操作而得到。应理解,上述将n个原数据进行合并的过程是p个第二mac pdu进行分割操作的逆过程。
29.上述k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。
30.上述p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。
31.一种实现方式中,如果k与n相等,且q与m相等,则上述p个第一mac pdu总共包括n个第一数据包和m个第二数据包。该n个第一数据包是n个原数据分别加包头(即原数据包包头或编码包包头)而得到,该m个第二数据包是对该n个原数据进行网络编码操作而生成。该n个原数据是p个第二mac pdu分别执行分割操作而得到。
32.相应地,结合第三方面,在一种可能的实现方式中,第二设备的译码操作包括:若该p个传输块中存在循环冗余校验(cyclic redundancy check,crc)错误的传输块,则第二设备的mac层根据该crc错误的传输块中编码块(coding block,cb)crc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。第二设备的mac层再对该p个传输块中校验正确的数据包进行译码,获得n个原数据。其中,tb的crc和cb的crc均可以在第二设备的物理(physical,phy)层实现。具体的,第二设备的物理层接收到tb之后,对该tb进行crc并进行cb crc;若第二设备的phy层判断该tb的crc错误,仍然将crc错误的tb递交给mac层。第二设备的mac层再根据phy层的cb crc结果,和该crc错误的tb中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。当然,如果第二设备的phy层判断该tb的crc正确,也需要将该tb递交给mac层。可理解的,本技术中无论tb的crc正确与否,phy层均会向mac层递交该tb。
33.应理解,因为第二设备(译码端/接收端)知晓每个编码块(cb)的大小,并且也知晓tb中每个数据包的大小,所以第二设备可以根据这个tb中每个数据包的大小和每个编码块的大小、以及cb crc的校验结果确定cb与数据包的映射关系,从而找出这个tb中校验错误(或正确)的数据包。这里,每个编码块(cb)的大小可以是固定值,也可以不是固定值(即编码块的大小不相等,比如第二设备依据一定规则或指示中的一项或多项确定每个cb的大小),第二设备能够知晓每个编码块的大小即可。
34.可见,本方案针对k与n相等且q与m相等的情况,提供一种译码流程和操作,根据crc错误的tb中的cb crc结果和cb与数据包的映射关系可以确定出crc错误的tb中哪些数据包是正确的,哪些数据包是错误的,从而利用tb中正确的数据包来进行译码,以恢复出原数据。从而可以提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
35.另一种实现方式中,如果k与n不相等(即k大于n),或q与m不相等(即q大于m),则该k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编
码操作而生成。该k个原数据是p个第二mac pdu分别执行分割操作而得到。
36.相应地,结合第三方面,在一种可能的实现方式中,第二设备的译码操作包括:第二设备的mac层从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到。若该p个传输块中存在crc错误的传输块,则第二设备的mac层根据该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。第二设备再对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据。其中,tb的crc和cb的crc均在第二设备的phy层实现。具体的,第二设备的物理层接收到tb之后,对该tb进行crc并进行cb crc;若第二设备的phy层判断该tb的crc错误,仍然将crc错误的tb递交给mac层。第二设备的mac层再根据phy层的cb crc结果,和该crc错误的tb中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。当然,如果第二设备的phy层判断该tb的crc正确,也需要将该tb递交给mac层。可理解的,本技术中无论tb的crc正确与否,phy层均会向mac层递交该tb。
37.可见,本方案针对k与n不相等(即k大于n),或q与m不相等(即q大于m)的情况,提供一种译码流程和操作,根据phy层的tb crc结果和cb crc结果判断这p个传输块中属于同一网络编码分组的原数据包和编码包是否正确,利用这些原数据包和编码包中正确的数据包来进行译码,以恢复出原数据。从而可以提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
38.其中,经过译码操作得到的第二mac pdu去除mac层附加信息而得到的数据是mac层需要向上层(如rlc层)递交的数据。
39.第四方面,本技术提供一种数据接收装置,该数据接收装置可以是第二设备或第二设备中的芯片或电路。该数据接收装置包括:获取模块,用于获取p个传输块,该p个传输块上承载p个第一mac pdu;译码模块,用于对该p个传输块进行译码操作,以得到n个原数据;合并模块,用于将该n个原数据进行合并,以得到一个或多个第二mac pdu。其中一个第一mac pdu承载于一个tb上。这p个第一mac pdu包含k个第一数据包和q个第二数据包,且该k个第一数据包和该q个第二数据包按照预设规则排列。这里的第一数据包是原数据包,第二数据包是编码包或冗余包。其中,每个原数据包包括一个原数据包包头或一个编码包包头,每个编码包(或冗余包)包括一个编码包包头。这里,原数据包包头的大小与编码包包头的大小可以相等。
40.上述预设规则用于表示原数据包和编码包(或冗余包)在这p个第一mac pdu中的位置。
41.这p个第一mac pdu中每个第一mac pdu包含整数个数据包,且每个第一mac pdu中除最后一个数据包外其他数据包的大小相等。
42.上述k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个原数据是p个第二mac pdu分别执行分割操作而得到。应理解,上述将n个原数据进行合并的过程是第二mac pdu进行分割操作的逆过程。
43.上述k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。
44.上述p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。
45.一种实现方式中,如果k与n相等,且q与m相等,则上述p个第一mac pdu总共包括n个第一数据包和m个第二数据包。该n个第一数据包是n个原数据分别加包头(即原数据包包头或编码包包头)而得到,该m个第二数据包是对该n个原数据进行网络编码操作而生成。该n个原数据是p个第二mac pdu分别执行分割操作而得到。
46.相应地,结合第四方面,在一种可能的实现方式中,上述译码模块包括确定单元和译码单元。确定单元,用于当该p个传输块中存在crc错误的传输块时,根据对该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包;译码单元,用于对该p个传输块中校验正确的数据包进行译码,获得n个原数据。
47.另一种实现方式中,如果k与n不相等(即k大于n),或q与m不相等(即q大于m),则该k个第一数据包是k个原数据分别加包头(即原数据包包头或编码包包头)而得到。该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头(即原数据包包头或编码包包头)而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。该k个原数据是p个第二mac pdu分别执行分割操作而得到。
48.相应地,结合第四方面,在一种可能的实现方式中,上述确定单元,用于从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到;上述确定单元,还用于当该p个传输块中存在crc错误的传输块时,根据该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包;上述译码单元,用于对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据。
49.其中,经过译码操作得到的第二mac pdu去除mac层附加信息而得到的数据是mac层需要向上层(如rlc层)递交的数据。
50.上述任一方面的一种可能的实现方式中,如果k与n相等,且q与m相等,则n和m均可以基于上述p个第一mac pdu包含的数据包总数(n)和编码码率(cr)确定。
51.其中,编码码率可以指示原数据包个数与总数据包的个数的比值,可选的,其可以为该原数据包个数与总数据包的个数的比值本身,也可以为冗余包个数与总数据包的个数的比值,或是,原数据包个数与冗余包个数的比值,或,其他可以指示原数据包个数与总数据包的个数的比值的量,在此不予限定。
52.具体的,p是预设值。比如,p是半静态配置好的值。或者,p是收发两端(即第一设备和第二设备)提前协商好的值,或者,协议预先确定的值。
53.可选的,n和m可以分别通过下述公式计算得出:
54.或者,
55.n=n-m;
56.其中,n表示上述p个第一mac pdu包含的数据包总数。cr表示编码码率,为原数据包个数与总数据包的个数的比值,该总数据包的个数为原数据包个数与原数据包编码生成的编码包的个数之和。
[0057][0058]
ni表示上述p个第一mac pdu中第i个第一mac pdu包含的数据包个数。
[0059]
符号表示向上取整,符号表示向下取整。下文不再赘述。
[0060]
可见,本方案在k与n相等,且q与m相等的情况下,以预设数量(即p个)的第二mac pdu为基准对象,生成一定数量的原数据包和编码包,将这些原数据包和编码包放在预设数量的tb上进行传输,以使译码端(即第二设备)能够获知编码端(即第一设备)传输的原数据包个数和编码包个数,有利于译码端的译码,比如判断是否能够正常译码(即接收正确的数据包个数是否大于或等于n)等。
[0061]
可选的,上述第一数据包的包头为原数据包包头。该原数据包包头的大小等于上述编码包包头的大小。比如,上述原数据包包头的大小等于预设包头大小(h),上述编码包包头的大小也等于预设包头大小(h)。
[0062]
这样,译码端/接收端(即第二设备)可以根据预设包头大小清晰识别出一个数据包中哪部分是包头,哪部分是数据,便于后续译码;也无需在包头中携带包头长度信息指示,可减少信令字段的开销。
[0063]
可选的,上述预设规则包括:该p个第一mac pdu中每个第一mac pdu包含的最后一个数据包是原数据包。在此预设规则下,上述原数据包包头中包括原始/编码(original/coded,o/c)字段,上述编码包包头包括o/c字段和编码因子(coeff id)字段。可选的,原数据包包头和编码包包头还包括块标识(block id)字段/偏移(offset)字段。
[0064]
可见,本方案通过约束每个第一mac pdu的最后一个数据包是原数据包,可以充分利用传输资源。这是因为,如果某个第一mac pdu的最后一个数据包是编码包且不完整(比如大小小于数据包预设大小),则这个编码包既不能参与译码(因为信息不完整),当这个编码包传输错误时也不能通过其他传输正确的数据包恢复出来。而如果第一mac pdu的最后一个数据包是原数据包,虽然其大小可能也小于数据包预设大小,但是如果该原数据包传输正确,其可以参与译码以恢复出其他传输错误的原数据,如果该原数据包传输错误,也可以通过其他传输正确的数据包恢复出该原数据包的原数据,从而可以充分利用传输资源。
[0065]
其中,o/c字段用于指示该o/c字段所在的数据包是原数据包还是编码包。其中,o/c字段设置为第一值(比如0)时,表示第一指示信息,用来指示该o/c字段所在的数据包是原数据包。o/c字段设置为第二值(比如1)时,表示第二指示信息,用来指示该o/c字段所在的数据包是编码包。编码因子(coeff id)字段用于指示码本的索引。这里的码本可以是范德蒙码本、柯西码本、或,随机码本等中的一种或多种。偏移字段用于指示上述p个第一mac pdu中该偏移字段所在的第一mac pdu相对于起始第一mac pdu的偏移值。块标识(block id)字段用于指示包含该block id字段的数据包所在的网络编码分组的标识,可选的,该块标识可以为序列号(sequence number,sn)。
[0066]
应理解,如果包头(即原数据包包头和编码包包头)中携带o/c字段,可以有利于译码端(即第二设备)区分原数据包和编码包。如果包头(即原数据包包头和编码包包头)中携带block id字段/offset字段,便于译码端(即第二设备)区分哪些数据包中的数据来自一个网络编码分组,从而确定哪些数据包可以一起译码。编码包包头中携带编码因子字段,以使译码端(即第二设备)能够根据该编码因子字段的指示构建相应的系数因子矩阵,进行译
码。另外,本方案设计的包头开销很小,并且原数据包包头和编码包包头设计简单明了,不需要引入分割级联信息以及每个数据包的sn等字段信息,减少了头信息的冗余。
[0067]
可选的,包头还可以包括预留字段,以支持后续扩展。
[0068]
可选的,上述预设规则包括:如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小,则该最后一个数据包是原数据包;如果上述p个第一mac pdu中最后一个第一mac pdu包含的最后一个数据包的大小、等于数据包预设大小(l),则该最后一个数据包可以是编码包,也可以是原数据包。在此预设规则下,上述原数据包包头中包括o/c字段,上述编码包包头包括o/c字段和编码因子字段。可选的原数据包包头和编码包包头还包括block id字段/offset字段。
[0069]
可见,本方案不严格约束每个第一mac pdu的最后一个数据包是原数据包,而是通过最后一个数据包与l的大小比较,来确定最后一个数据包是原数据包还是编码包,其实现更为灵活。
[0070]
可选的,在上述两条预设规则(即“p个第一mac pdu中每个第一mac pdu包含的最后一个数据包是原数据包”和“如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小,则该最后一个数据包是原数据包;如果上述p个第一mac pdu中最后一个第一mac pdu包含的最后一个数据包的大小、等于数据包预设大小,则该最后一个数据包可以是编码包,也可以是原数据包”)的任一条预设规则基础上,该预设规则还包括:该p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外的其他数据包中原数据包位于编码包之前。此预设规则下,原数据包包头可以不携带任何字段,编码包包头携带编码因子字段即可。当然,原数据包包头和编码包包头也可以携带o/c字段,和/或,block id字段/offset字段。
[0071]
可见,本方案通过约束p个第一mac pdu中各个数据包的排列顺序,可以无需在原数据包包头中携带任何字段,从而可以减少信令开销。
[0072]
可选的,上述网络编码操作包括填充操作和编码操作。该填充操作用于对该n个原数据中大小小于数据包预设大小与预设包头大小之差的原数据进行填充。该编码操作包括块编码或滑动窗口编码(也称为卷积编码)。若该编码操作包括滑动窗口编码,且该滑动窗口编码的滑动窗口大小固定不变或配置的,则编码包包头可以不新增字段。如果该滑动窗口编码的滑动窗口大小可变,则编码包包头中还可以包括关联深度字段。该关联深度字段用于指示该关联深度字段所在的第一mac pdu之前的第一mac pdu的个数。该滑动窗口编码为对该关联深度字段所在的第一mac pdu与该关联深度字段指示的历史第一mac pdu中的原数据一起进行编码。比如,关联深度字段指示的个数为1,则滑动窗口编码是对关联深度字段所在的第一mac pdu与该第一mac pdu之前的1个第一mac pdu中的原数据一起进行编码。也就是说,关联深度字段用于译码端/收端获知哪几个mac pdu中的原数据是一起编码的,以支持译码端/收端的译码。
[0073]
可见,本方案除了支持块编码,还支持滑动窗口编码,丰富了mac层适用的编码类型。
[0074]
上述任一方面的一种可能的实现方式中,如果k与n不相等,或q与m不相等,则n是预设的原数据包总个数,m基于n和编码码率(cr)确定。
[0075]
其中,编码码率可以指示原数据包个数与总数据包的个数的比值,即,编码码率可
以不是该比值本身,也可以为其他比值,其可以指示原数据包个数与总数据包的个数的比值即可。
[0076]
可选的,m可以通过下述公式计算得出:
[0077]
或者,
[0078]
其中,cr表示编码码率,为原数据包个数与总数据包的个数的比值,该总数据包的个数为原数据包个数与原数据包编码生成的编码包的个数之和。
[0079]
可见,本方案在k与n不相等,或q与m不相等的情况下,预设一个网络编码分组中原数据的个数,或者说预设原数据包总个数,结合编码码率生成一定数量的编码包,将这些原数据包和编码包按预定义的规则排放在tb上进行传输,以使译码端(即第二设备)能够获知编码端(即第一设备)传输的编码包个数,有利于译码端的译码,比如结合预设规则判断哪些数据包是编码包等。
[0080]
可选的,上述第一数据包的包头为原数据包包头或编码包包头,上述第二数据包也包括编码包包头,第一数据包的包头与第二数据包的包头的大小相等,比如可以等于预设包头大小(h)。
[0081]
可选的,上述预设规则包括:如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小(l),则该最后一个数据包是原数据包。换句话说,如果某个第一mac pdu包含的最后一个数据包的大小,等于数据包预设大小(l),则允许这个第一mac pdu包含的最后一个数据包是编码包,当然也可以是原数据包。当然,如果上述p个第一mac pdu中每个第一mac pdu包含的最后一个数据包的大小、都小于数据包预设大小,则这每个第一mac pdu包含的最后一个数据包是原数据包。在此预设规则下,上述第一数据包的包头和第二数据包的包头中均包括block id字段,和coeff id字段。可选的,上述第一数据包的包头和第二数据包的包头还包括o/c字段。第一数据包的包头中的o/c字段指示该o/c字段所在的数据包是原数据包,也就是说该o/c字段设置为第一值(比如0)。第二数据包的包头中的o/c字段指示该o/c字段所在的数据包是编码包,也就是说该o/c字段设置为第二值(比如1)。
[0082]
其中,第一数据包的包头中编码因子(coeff id)字段指示单位向量,第二数据包的包头中编码因子(coeff id)字段用于指示码本的索引。这里的码本可以是范德蒙码本、柯西码本、随机码本等中的一种或多种。本方案在第一数据包的包头中也携带编码因子字段,用于指示单位向量;便于译码端(即第二设备)结合包头中编码因子字段的指示构建相应的系数因子矩阵,从而利用该系数因子矩阵进行译码。另外,本方案设计的包头开销很小,并且设计简单明了,可以不引入分割级联信息以及每个数据包的sn等字段信息,减少了头信息的冗余。可选的,包头还可以包括预留字段,以支持后续扩展。
[0083]
可见,本方案通过约束一个第一mac pdu包含的最后一个数据包的大小小于数据包预设大小(l)时,该最后一个数据包是原数据包,可以充分利用传输资源。
[0084]
可选的,在前述预设规则(即“如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小,则该最后一个数据包是原数据包”)的基础上,该预设规则还包括:上述p个第一mac pdu中的上述n个第一数据包和上述m个第二数据包满足原数据包位于编码包之前的关系。换句话说,这p个第一mac pdu中的n个第一数据包和m个第二数据包满
足先原数据包后编码包的顺序排列。对于剩余的k-n个原数据包和q-m个编码包,在满足前述预设规则的条件下,可以位于该m个第二数据包后。在此预设规则下,上述第一数据包的包头和第二数据包的包头中均包括block id字段,和coeff id字段。可选的,该第一数据包的包头和第二数据包的包头中还包括o/c字段。第一数据包的包头中的o/c字段指示该o/c字段所在的数据包是原数据包,也就是说该o/c字段设置为第一值(比如0)。第二数据包的包头中的o/c字段指示该o/c字段所在的数据包是编码包,也就是说该o/c字段设置为第二值(比如1)。
[0085]
可见,本方案还通过约束由一个网络编码分组生成的原数据包和编码包的排列顺序,使数据包之间边界(指一个数据包的起始位置或结束位置)清晰(即可通过数据包预设大小推算出每个数据包在第一mac pdu中的位置),从而可以支持译码端/收端(即第二设备)识别出哪些是原数据包哪些是编码包。
[0086]
可选的,在前述预设规则(即“如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小,则该最后一个数据包是原数据包”和“p个第一mac pdu中的上述n个第一数据包和上述m个第二数据包满足原数据包位于编码包之前的关系”)的基础上,该预设规则还包括:如果上述n个第一数据包的最后一个第一数据包所在的第一mac pdu的大小不是数据包预设大小(l)的整数倍,则该第一mac pdu的最后一个数据包是上述k个第一数据包中除该n个第一数据包外的其他第一数据包,比如下一个网络编码分组中的第一数据包;如果上述m个第二数据包的任一第二数据包所在的第一mac pdu不是数据包预设大小(l)的整数倍,则该任一第二数据包所在的第一mac pdu的最后一个数据包是上述k个第一数据包中除该n个第一数据包外的其他第一数据包,比如下一个网络编码分组中的第一数据包。在上述预设规则下,上述第一数据包的包头和第二数据包的包头中均包括coeff id字段。可选的,该第一数据包的包头和第二数据包的包头中还包括o/c字段,和/或block id字段。第一数据包的包头中的o/c字段指示该o/c字段所在的数据包是原数据包,也就是说该o/c字段设置为第一值(比如0)。第二数据包的包头中的o/c字段指示该o/c字段所在的数据包是编码包,也就是说该o/c字段设置为第二值(比如1)。
[0087]
可见,本方案通过约束原数据包和编码包的排列方式,可以充分利用传输资源。
[0088]
上述任一方面的一种可能的实现方式中,上述p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外其他数据包的大小均等于数据包预设大小(l),该最后一个数据包的大小小于或等于数据包预设大小(l)。上述原数据包包头和编码包包头的大小等于预设包头大小(h)。
[0089]
可见,本方案使除每个第一mac pdu的最后一个数据包外其他数据包的大小相等,从而使每个第一mac pdu包含的数据包之间边界清晰,进而可以支持译码端(即第二设备)对每个tb通过数据包预设大小l进行隐含划分,从而识别出每个数据包的位置和边界信息,支持译码端(即第二设备)利用cb crc来识别错误tb中接收正确的数据包,从而利用接收正确的相关数据包联合译码以恢复出原数据或者生成反馈信息。
[0090]
上述任一方面的一种可能的实现方式中,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小(记为tbsi)、该第i个第一mac pdu包含的数据包个数(记为ni)、以及数据包预设大小(l)确定。而该第i个第一mac pdu包含的数据包个数(ni)基于这个第一mac pdu的大小(tbsi)和上述数据包预设大小(l)
确定。具体的,第i个第一mac pdu包含的最后一个数据包的大小满足下述公式:
[0091][0092]
其中,表示该第i个第一mac pdu包含的最后一个数据包的大小,tbsi表示该第i个第一mac pdu的大小,ni表示该第i个第一mac pdu包含的数据包个数,l表示数据包预设大小。
[0093]
第i个第一mac pdu包含的数据包个数ni满足下述公式:
[0094][0095]
上述任一方面的一种可能的实现方式中,上述p个第二mac pdu中第i个第二mac pdu的大小(记为yi)基于这p个第一mac pdu中第i个第一mac pdu包含的原数据包个数(ni)、数据包预设大小(l)、预设包头大小(h)、以及第i个第一mac pdu包含的最后一个数据包的大小确定。其中,第i个第一mac pdu包含的原数据包个数基于这个第一mac pdu包含的数据包个数(ni)和预设规则确定。具体的,第i个第二mac pdu的大小满足下述公式:
[0096][0097]
其中,yi表示该第i个第二mac pdu的大小,表示该第i个第一mac pdu包含的原数据包个数,h表示预设包头大小,表示该第i个第一mac pdu包含的最后一个数据包的大小。
[0098]
上述任一方面的一种可能的实现方式中,上述p个第一mac pdu还包括这k+q个数据包中每个数据包分别进行crc而得到的预设大小(或固定比特)的crc码。其中,一个数据包进行crc而得到的该预设大小/固定比特的crc码位于该数据包的末尾比特后,且该crc码与该数据包的末尾比特紧邻。
[0099]
可选的,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小(tbsi)、该第i个第一mac pdu包含的数据包个数(ni)、数据包预设大小(l)、以及crc码的预设大小/固定比特(r)确定。而该第i个第一mac pdu包含的数据包个数(ni)基于这个第一mac pdu的大小(tbsi)和上述数据包预设大小(l)确定。具体的,第i个第一mac pdu包含的最后一个数据包的大小满足下述公式:
[0100][0101]
其中,表示该第i个第一mac pdu包含的最后一个数据包的大小,tbsi表示该第i个第一mac pdu的大小,ni表示该第i个第一mac pdu包含的数据包个数,l表示数据包预设大小,r表示数据包的crc码的预设大小。
[0102]
第i个第一mac pdu包含的数据包个数ni满足下述公式:
[0103][0104]
相应地,由于编码端(即第一设备)在每个数据包的末尾比特后引入了预设大小/固定比特的crc码,那么译码端(即第二设备)可以不借助phy层的cb crc结果判断数据包的正确与否;而可以结合每个数据包末尾比特后的crc码来判断这个数据包正确与否。具体
的,译码端(即第二设备)的译码操作包括:第二设备从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到;若该p个传输块中存在crc错误的传输块,则第二设备对该crc错误的传输块中的每个数据包进行crc得到校验结果,并根据该校验结果和该数据包的末尾比特后的crc码,确定该crc错误的传输块中校验正确的数据包;第二设备对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据。
[0105]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小(记为yi)基于这p个第一mac pdu中第i个第一mac pdu包含的原数据包个数(ni)、数据包预设大小(l)、预设包头大小(h)、第i个第一mac pdu包含的最后一个数据包的大小、以及crc码的预设大小/固定比特(r)确定。其中,第i个第一mac pdu包含的原数据包个数基于这个第一mac pdu包含的数据包个数(ni)和预设规则确定。具体的,第i个第二mac pdu的大小满足下述公式:
[0106][0107]
其中,yi表示该第i个第二mac pdu的大小,表示该第i个第一mac pdu包含的原数据包个数,h表示预设包头大小,表示该第i个第一mac pdu包含的最后一个数据包的大小,r表示数据包的crc码的预设大小。
[0108]
可见,本方案在每个数据包的末尾比特后引入预设比特的crc码,以支持译码端/收端(即第二设备)在tb的crc错误的情况下,按照数据包预设大小l和crc码的预设大小/固定比特r之和(即l+r)对第一mac pdu或者tb进行划分,从而清晰地定位tb/第一mac pdu中的数据包,即得到每个数据包的边界和位置,并对数据包进行crc,判断错误tb中每个数据包的对错;无需借助tb的cb crc,从而可以更加准确地对每个数据包做出判断,比cb crc更加精确。
[0109]
上述任一方面的一种可能的实现方式中,上述分割操作包括按照数据包预设大小(l)与预设包头大小(h)之差(l-h)进行等大小分割。
[0110]
第五方面,本技术提供一种通信装置,该通信装置可以包括处理器和存储器,可选的包括收发器。其中,该存储器用于存储计算机程序,该收发器用于收发各种数据包或信号,该计算机程序包括程序指令,当该处理器运行该程序指令时,使得该通信装置执行上述第一方面、或上述第三方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法。其中,收发器可以为通信装置中的射频模块,或,射频模块和天线的组合,或,芯片或电路的输入输出接口。
[0111]
第六方面,本技术提供一种可读存储介质,该可读存储介质上存储有程序指令,当其在计算机上运行时,使得计算机执行上述第一方面、或上述第三方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法。
[0112]
第七方面,本技术提供一种包含程序指令的程序产品,当其运行时,使得上述第一方面、或上述第三方面、或其中任一方面的任意一种可能的实现方式描述的数据传输方法被执行。
[0113]
第八方面,本技术提供一种装置,该装置可以以芯片的形式实现,也可以为设备的形式,该装置包括处理器。该处理器用于读取并执行存储器中存储的程序,以执行上述第一方面、第三方面中的一项或多项,或,其中任一方面的任意可能的实现方式中的一项或多项
提供的数据传输方法。可选的,该装置还包括存储器,该存储器与该处理器通过电路连接。进一步可选的,该装置还包括通信接口,该处理器与该通信接口连接。该通信接口用于接收待处理的数据包和/或信息,该处理器从该通信接口获取该数据包和/或信息,并对该数据包和/或信息进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
[0114]
可选的,上述的处理器与存储器可以是物理上相互独立的单元,或者,存储器也可以和处理器集成在一起。
[0115]
第九方面,本技术提供一种通信系统,该通信系统包括上述任一方面中的第一设备和上述任一方面中的第二设备。
[0116]
实施本技术实施例,可以将网络编码技术应用在mac层,以期有效利用传输错误的tb中正确的数据包、以恢复出传输错误的原数据,从而提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
附图说明
[0117]
为了更清楚地说明本技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
[0118]
图1是本技术实施例提供的无线通信系统的架构示意图;
[0119]
图2是本技术实施例提供的应用场景示意图;
[0120]
图3是本技术实施例提供的通信系统的简化示意图;
[0121]
图4是随机线性网络编码的示意图;
[0122]
图5是本技术实施例提供的数据传输方法的第一种示意流程图;
[0123]
图6是本技术实施例提供的数据传输方法的第二种示意流程图;
[0124]
图7是本技术实施例提供的原数据包包头的格式示意图;
[0125]
图8是本技术实施例提供的编码包包头的格式示意图;
[0126]
图9是本技术实施例提供的rlc层到mac层的协议栈示意图;
[0127]
图10a是本技术实施例提供的编码端数据传输的第一种示意图;
[0128]
图10b是本技术实施例提供的编码端数据传输的第二种示意图;
[0129]
图11是本技术实施例提供的滑动窗口编码的示意图;
[0130]
图12a是本技术实施例提供的译码端数据传输的第一种示意图;
[0131]
图12b是本技术实施例提供的译码端数据传输的第二种示意图;
[0132]
图13是本技术实施例提供的数据传输方法的第三种示意流程图;
[0133]
图14a是本技术实施例提供的编码端数据传输的第三种示意图;
[0134]
图14b是本技术实施例提供的编码端数据传输的第四种示意图;
[0135]
图15是本技术实施例提供的数据传输方法的第四种示意流程图;
[0136]
图16a是本技术实施例提供的编码端数据传输的第五种示意图;
[0137]
图16b是本技术实施例提供的编码端数据传输的第六种示意图;
[0138]
图17是本技术实施例提供的数据传输装置的结构示意图;
[0139]
图18是本技术实施例提供的数据接收装置的结构示意图;
[0140]
图19是本技术实施例提供的通信装置的结构示意图。
具体实施方式
[0141]
下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
[0142]
为了便于清楚描述本技术实施例的技术方案,在本技术的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一mac pdu和第二mac pdu仅仅是为了区分不同的信息,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
[0143]
本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c;a和b;a和c;b和c;或a和b和c。其中a,b,c可以是单个,也可以是多个。
[0144]
可以理解,在本技术中,“当

时”、“若”以及“如果”均指在某种客观情况下装置会做出相应的处理,并非是限定时间,且也不要求装置实现时一定要有判断的动作,也不意味着存在其它限定。
[0145]
本技术中的“同时”可以理解为在相同的时间点,也可以理解为在一段时间段内,还可以理解为在同一个周期内,具体可以结合上下文进行理解。
[0146]
本技术中对于使用单数表示的元素旨在用于表示“一个或多个”,而并非表示“一个且仅一个”,除非有特别说明。
[0147]
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。
[0148]
可以理解,在本技术各实施例中,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
[0149]
为便于理解本技术实施例提供的技术方案,下面将对本技术实施例提供的数据传输方法的系统架构和应用场景进行说明。可理解的,本技术实施例描述的系统架构和应用场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定。
[0150]
无线通信系统中包括通信设备,通信设备间可以利用空口资源进行无线通信。其中,通信设备可以包括网络设备和终端设备,网络设备还可以称为基站设备。空口资源可以包括时域资源、频域资源、码资源和空间资源中至少一个。
[0151]
参见图1,图1是本技术实施例提供的无线通信系统的架构示意图。如图1所示,该无线通信系统包括接入网设备100(如图1中的node1和node2)和ue 200,可选的还包括核心网设备(corenetwork,cn)300。其中,接入网设备100可配置有多个天线,ue 200也可配置有多个天线。接入网设备和核心网设备可以统称为网络设备,或,网络侧设备,接入网和核心网可以统称为网络侧。在该无线通信系统中,node1和node2均可以与多个ue通信。但应理解,与node1通信的ue和与node2通信的ue可以是相同的,也可以是不同的。图1中示出的ue 200可同时与node1和node2通信,但这仅示出了一种可能的场景,在某些场景中,ue可能仅
与node1或node2通信,本技术对此不做限定。
[0152]
应理解,接入网设备和终端还可包括与信号发送和接收相关的多个部件(例如,处理器、调制器、复用器、解调器或解复用器等中的一项或多项)。
[0153]
本技术实施例涉及到的网络设备包括接入网设备,例如基站(base station,bs),bs可以是网络侧的一种用于发射或接收信号的实体,也是一种部署在无线接入网中能够和终端进行无线通信的设备。基站(bs)可以是固定的,也可以是移动的。其中,基站可能有多种形式,比如宏基站、微基站、中继站和接入点等。示例性地,本技术实施例涉及到的基站可以是5g中的基站或lte中演进的基站(evolved node b,enb)。其中,5g中的基站还可以称为发送接收点(transmission reception point,trp)或5g基站(next-generation node b,gnb)。基站还可以与如下名称进行替换,比如:节点b(nodeb)、发射点(transmitting point,tp)、主站menb、辅站senb、多制式无线(multi standard radio,msr)节点、家庭基站、网络控制器、接入节点、无线节点、传输节点、收发节点、基带单元(baseband unit,bbu)、射频拉远单元(remote radio unit,rru)、有源天线单元(active antenna unit,aau)、射频头(remote radio head,rrh)、集中式单元(centralized unit,cu)、分布式单元(distributed unit,du)、定位节点、iab宿主(iab donor)等。本技术实施例中,用于实现网络设备的功能的装置可以是网络设备;也可以是能够支持网络设备实现该功能的装置,例如芯片系统、或通信模块、或调制解调器等,该装置可以被安装在网络设备中。在本技术实施例提供的技术方案中,以用于实现网络设备的功能的装置是网络设备,以网络设备是基站为例,描述本技术实施例提供的技术方案。基站可以支持相同或不同接入技术的网络。本技术的实施例对网络设备所采用的具体技术和具体设备形态不做限定。
[0154]
本技术实施例涉及到的终端设备还可以称为终端、用户设备(user equipment,ue)、移动台(mobile station,ms)、移动终端(mobile terminal,mt)等,其可以是用户侧的一种用于接收或发射信号的实体,如手机;其可以部署在陆地上,包括室内或室外、手持或车载;也可以部署在水面上(如轮船等);还可以部署在空中(例如飞机、气球和卫星上等)。ue包括具有无线通信功能的手持式设备、车载设备、可穿戴设备或计算设备。示例性地,ue可以是手机(mobile phone)、平板电脑或带无线收发功能的电脑。终端设备还可以是虚拟现实(virtual reality,vr)终端设备、增强现实(augmented reality,ar)终端设备、工业控制中的无线终端、无人驾驶中的无线终端、远程医疗中的无线终端、智能电网中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端等等。本技术实施例中,用于实现终端的功能的装置可以是终端;也可以是能够支持终端实现该功能的装置,例如芯片系统、或通信模块、或调制解调器等,该装置可以被安装在终端中。本技术实施例中,芯片系统可以由芯片构成,也可以包括芯片和其他分立器件。本技术实施例提供的技术方案中,以用于实现终端的功能的装置是终端,以终端是ue为例,描述本技术实施例提供的技术方案。本技术的实施例对终端设备所采用的具体技术和具体设备形态不做限定。
[0155]
可选的,ue也可以用于充当基站。例如,ue可以充当调度实体,其在车辆外联(vehicle-to-everything,v2x)、设备到设备(device-to-device,d2d)或点对点(peer to peer,p2p)等中的ue之间提供侧行链路信号。
[0156]
可选的,ue还可以用于充当中继节点。例如:ue可以充当中继设备(relay),或者接
入回传一体化(integrated access and backhaul,iab)节点,用于为终端设备提供无线回传服务。
[0157]
本技术实施例提供的技术方案可以应用于通信设备间的无线通信。通信设备间的无线通信可以包括:网络设备和终端间的无线通信、网络设备和网络设备间的无线通信以及终端和终端间的无线通信。在本技术实施例中,术语“无线通信”还可以简称为“通信”,术语“通信”还可以描述为“数据传输”、“信息传输”或“传输”。
[0158]
本技术实施例提供的数据传输方法主要针对长期演进(long term evolution,lte)或nr等协议框架,可应用于多种移动通信场景中。比如,基站和用户设备(user equipment,ue)之间、或ue和ue之间独立组网(standalone,sa)场景的点对点传输、基站和用户设备的多跳/中继(relay)传输、多个基站和用户设备的双连接(dual connectivity,dc)或多连接等场景。参见图2,图2是本技术实施例提供的应用场景示意图。如图2所示,图2示出了四种应用场景,分别是点对点单连接、多跳单连接、双连接、以及多跳多连接。应理解的,本技术实施例提供的数据传输方法可以应用于图2所示的各种应用场景中,还应理解,图2仅是示例性的,从业务场景角度而言,本技术实施例提供的数据传输方法还适用于诸多场景,包括但不限于诸如扩展现实(extended reality,xr)业务中的数据编码、上行大容量场景等。此外,图2不对适用于本技术的网络架构产生限制,并且本技术不限制上行、下行、接入链路、回传(backhaul)链路、侧链路(sidelink)等传输。
[0159]
参见图3,图3是本技术实施例提供的通信系统的简化示意图。为了简单起见,图3仅示出了基站110、ue 120以及网络130。基站110包括接口111和处理器112。处理器112可选地可以存储程序114。基站110可选地可以包括存储器113。存储器113可选地可以存储程序115。ue 120包括接口121和处理器122。处理器122可选地可以存储程序124。ue 120可选地可以包括存储器123。存储器123可选地可以存储程序125。这些组件一起工作,以提供本技术中描述的各种功能。例如,处理器112和接口111一起工作以提供基站110与ue 120之间的无线连接。处理器122和接口121共同作用,实现ue 120的下行传输和/或上行传输。
[0160]
网络130可以包括一个或多个网络节点130a、130b,以提供核心网功能。网络节点130a、130b可以是5g核心网节点,或更早一代(例如4g、3g或2g)核心网节点。例如,网络130a、130b可以是接入管理功能(amf)、移动性管理实体(mme)等。网络130还可以包括公共交换电话网络(pstn)、分组数据网络、光网络、互联网协议(ip)网络中的一个或多个网络节点。广域网(wan)、局域网(lan)、无线局域网(wlan)、有线网络、无线网络、城域网和其他网络,以使ue 120和/或基站110之间能够进行通信。
[0161]
处理器(例如,处理器112和/或处理器122)可包括一个或多个处理器并实现为计算设备的组合。处理器(例如,处理器112和/或处理器122)可分别包括以下一种或多种:微处理器、微控制器、数字信号处理器(dsp)、数字信号处理设备(dspd)、专用集成电路(asic)、现场可编程门阵列(fpga)、可编程逻辑器件(pld)、选通逻辑、晶体管逻辑、分立硬件电路、处理电路或其它合适的硬件、固件和/或硬件和软件的组合,用于执行本技术中所描述的各种功能。处理器(例如,处理器112和/或处理器122)可以是通用处理器或专用处理器。例如,处理器112和/或处理器122可以是基带处理器或中央处理器。基带处理器可用于处理通信协议和通信数据。中央处理器可用于使基站110和/或ue 120执行软件程序,并处理软件程序中的数据。
[0162]
接口(例如,接口111和/或121)可包括用于实现与一个或多个计算机设备(例如,ue、bs和/或网络节点)之间的通信。在一些实施例中,接口可以包括用于耦合有线连接的电线、或用于耦合无线收发器的管脚、或用于无线连接的芯片和/或管脚。在一些实施例中,接口可以包括发射器、接收器、收发器和/或天线。接口可以被配置为使用任何可用的协议(例如3gpp标准)。
[0163]
本技术中的程序在广义上用于表示软件。软件的非限制性示例是程序代码、程序、子程序、指令、指令集、代码、代码段、软件模块、应用程序、软件应用程序等。程序可以在处理器和/或计算机中运行,以使基站110和/或ue 120执行本技术中描述的各种功能和/或过程。
[0164]
内存(例如存储器113和/或存储器123)可存储由处理器112、122在执行软件时操纵的数据。存储器113、123可以使用任何存储技术实现。例如,存储器可以是处理器和/或计算机能够访问的任何可用存储介质。存储介质的非限制性示例包括:ram、rom、eeprom、cd-rom、可移动介质、光盘存储器、磁盘存储介质、磁存储设备、闪存、寄存器、状态存储器、远程挂载存储器、本地或远程存储器组件,或能够携带或存储软件、数据或信息并可由处理器/计算机访问的任何其它介质。
[0165]
内存(例如存储器113和/或存储器123)和处理器(例如处理器112和/或处理器122)可以分开设置或集成在一起。存储器可以用于与处理器连接,使得处理器能够从存储器中读取信息,在存储器中存储和/或写入信息。存储器113可以集成在处理器112中。存储器123可以集成在处理器122中。处理器(例如处理器112和/或处理器122)和存储器(例如处理器112和/或处理器122)可以设置在集成电路中(例如,该集成电路可以设置在ue或基站或其他网络节点中)。
[0166]
上述内容简要阐述了本技术实施例的系统架构和可能的应用场景,为更好地理解本技术实施例的技术方案,下面将简要介绍网络编码技术和本技术涉及的一些术语。
[0167]
常用的网络编码方案包括块编码(如随机线性网络编码(random linear network coding,rlnc))、滑窗编码、卷积网络编码(convolutional network coding,cnc)等。下面以块编码为例进行简要说明。块编码方案以网络编码分组(一个网络编码分组中包括若干个大小相同的原数据)为单元,通过构建编码系数矩阵对原数据进行编码并加包头信息得到一组编码数据包。任两个编码数据包的大小相同。通常,编码系数矩阵中的系数在有限域,如伽罗华域(galoisfield,gf)中随机选取。参见图4,图4是随机线性网络编码的示意图。如图4所示,编码系数矩阵(即图4中的a
(w+r)
×w)大小为(w+r)
×
w,即(w+r)行w列,通过对一个包含w个原数据的网络编码分组(图4中的xw×1)进行网络编码,得到w+r个编码数据(图4中的y
(w+r)
×1),对应的码率(冗余)表示为w/(w+r)。其中,编码系数矩阵在gf(q)域中随机选择系数,q表示伽罗华域的大小,伽罗华域的取值为区间[0,q-1]。w和r均是正整数。应理解,块编码方案中,编码数据块(这里的编码数据块是指对一个包含w个原数据的网络编码分组进行网络编码得到w+r个编码数据)之间没有关联,即编码操作对每个独立的网络编码分组进行,每个网络编码分组的冗余(码率)可以相同,也可以不相同。编码端/发送端对生成的w+r个编码数据统一加包头信息后发送,译码端/接收端接收到w个正确且线性无关的编码数据包时,即可正确译码并恢复出w个原数据。这是因为编码数据包融合了若干个原数据的信息,所以接收端可以用编码数据包来恢复原数据。在本技术中,术语“编码数据包”还可以简
称为“编码包”,两者可替换使用。
[0168]
下面对本技术涉及的一些术语进行介绍。
[0169]
编码包:编码包是对一个网络编码分组中的多个原数据进行网络编码生成。编码包包括系统包和冗余包两类。在本技术中,编码包包括冗余包,可选的还包括系统包。
[0170]
系统包:由原数据乘以为单位向量的编码系数生成的编码数据加编码包包头,或是,原数据直接加编码包包头得到。
[0171]
冗余包:由对原数据进行网络编码生成,冗余包的编码系数为非单位向量。在本技术实施例中,术语“冗余包”还可以简称为“校验包”,两者可替换使用。
[0172]
原数据包:对原数据直接添加原数据包包头或编码包包头而得到,也即原数据包包括系统包。在本技术下文的一些实施例中(比如下文实施例三),原数据包也可以称为系统包,具体参见下文描述,此处不展开说明。
[0173]
网络编码分组:分组码相关的术语,分组码中网络编码分组是包含了多个原数据的集合。例如,将每w个原数据分为一个网络编码分组进行独立网络编码可以得到与该网络编码分组对应的编码数据。在本技术实施例中,术语“网络编码分组”还可以称为“网络编码块”,“编码分组”,“网络编码窗”。
[0174]
有限域:也称伽罗华域,是仅含有限个元素的域,可进行加法、减法、乘法和除法运算,且加、减、乘和除运算结果不会超出域的集合。
[0175]
协议数据单元(protocol data unit,pdu):协议实体之间传递的数据单元,pdu包含来自上层的信息和当前层的实体附加的信息,这个pdu会被传送到下一较低的层。
[0176]
服务数据单元(service data unit,sdu):协议层之间传递的数据单元,是来自上层的数据或者要传给上层的数据。
[0177]
编码码率(code rate):可以是指示原数据包的个数与总数据包个数(总数据包个数为原数据包的个数与编码包的个数之和)的比值,可选的,其可以是原数据包个数与总数据包的个数的比值本身,也可以为冗余包个数与总数据包的个数的比值,或是,原数据包个数与冗余包个数的比值,或,其他可以指示原数据包个数与总数据包的个数的比值的量,在此不予限定。
[0178]
网络编码层:网络编码层是指具有网络编码功能的协议层,网络编码层可以是具有网络编码功能的无线资源控制(radio resource control,rrc)层,业务数据适配协议(service data adaptation protocol,sdap),分组数据汇聚层协议(packet data convergence protocol,pdcp)层,回传适配协议(backhaul adaptation protocol,bap)层,无线链路控制(radio link control,rlc)层,媒体接入控制(media access control,mac)层,或物理层(physical layer,phy)等协议层中的一项或多项。本技术主要涉及具有网络编码功能的mac层。网络编码层也可以是除上述协议层以外的一个新协议层,例如,该新协议层可以在mac层之下,或者在mac层和phy层之间,新协议层的位置在本技术中可以不予限定。在本技术实施例中,术语“网络编码层”也可以称为“编解码层”,“编译码层”,“网络编解码层”,“网络编译码层”,“网络编/解码层”,“网络编/译码层”或者其它名称,在本技术中不进行限定。
[0179]
对应于网络编码的译码:网络编码的译码是网络编码的逆过程,利用接收到的编码数据,通过对编码数据对应矩阵的逆矩阵与编码数据相乘可以恢复出原数据包。
[0180]
应理解,因为网络编码技术需要原数据的大小均相同,而现有nr协议中,任何一层对应的sdu或者pdu大小都无法保证是相同的,所以nr/5g系统中不能直接支持网络编码技术,即不能在不做任何处理的基础上直接对原数据进行编码,需要填充(padding)、分割、以及级联等操作中的一项或多项操作,即需要通过分割、级联、和/或填充等方式来得到大小相同的原数据,进而编码生成编码包。
[0181]
又因为网络编码技术和nr通信协议及系统中,不支持在tb错误的情况下识别错误tb中正确的数据包并进行译码。所以,为了支持错误tb中校验正确的数据包能够译码恢复校验错误的数据包,从而将正确的数据包和恢复出的数据包传输到上层,需要进行相应设计。
[0182]
一种实现方式中,可以在tb包含的数据包中引入头信息指示,比如指示每个tb中数据包的边界位置(即起始位置或末尾位置)。但此实现方式会引入头开销,且开销较大,同时其设计流程复杂。
[0183]
因此,本技术实施例提供一种数据传输方法,不仅可以识别出错误tb中正确的数据包,利用该正确的数据包译码恢复出校验错误的数据包,提升高可靠低时延业务的性能,减少重传时延和提高传输的可靠性;还可以简化包头设计,减少指示信息带来的冗余。
[0184]
下面将结合更多的附图对本技术提供的技术方案进行详细说明。
[0185]
本技术提供的技术方案通过多个实施例来详细说明,具体参考下文各个实施例的描述。应理解,本技术下文中各个实施例所描述的技术方案可以任一组合形成新的实施例且所涉及概念或方案相同或相似的部分可以相互参考或组合。下面分别对各个实施例进行详细说明。
[0186]
可选的,本技术提供的技术方案可通过第一设备和第二设备来实现。其中,第一设备既可以是网络设备,如基站;也可以是终端设备,如ue;第二设备既可以是网络设备,如基站;也可以是终端设备,如ue。本技术的所有实施例均以第一设备作为编码端(或发送端)来描述,第二设备作为译码端(或接收端)来描述;但在实际应用中,第一设备也可以作为译码端(或接收端),第二设备作为编码端(或发送端);本技术对此不作限定。另外,在一次数据传输过程中,假设第一设备是编码端,第二设备是译码端;在另一次数据传输过程中,第一设备可以是译码端,第二设备是编码端,或者第一设备还是编码端,第二设备还是译码端。换句话说,编码端和译码端是针对通信双方而言,在一次通信过程中,通信的一方是编码端,另一方就是译码端。
[0187]
实施例一
[0188]
参见图5,图5是本技术实施例提供的数据传输方法的第一种示意流程图。如图5所示,该数据传输方法包括但不限于以下步骤:
[0189]
s101,第一设备生成p个第一媒体接入控制层mac协议数据单元pdu,该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,该k个第一数据包是k个原数据分别加包头而得到,该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头而得到,该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。
[0190]
s102,第一设备传输承载该p个第一mac pdu的p个传输块。
[0191]
可选的,数据包包括包头和包体两部分,包体也就是数据包中的数据。上述第一数据包是原数据包,第一数据包的包头为原数据包包头或编码包包头。上述第二数据包是编码包且包括编码包包头。原数据包可以理解为未经过网络编码的数据包或编码系数为单位向量的数据包(即系统包),编码包可以理解为经过网络编码的数据包。本技术中的编码包(这里指第二数据包)包括冗余包,可选的还可以包括系统包。在一些实施例中,本技术中的编码包可以与冗余包替换使用。其中,每个原数据包包括一个原数据包包头或一个编码包包头,每个编码包包括一个编码包包头。本技术中,原数据包包头的大小与编码包包头的大小可以相等。
[0192]
可选的,上述预设规则用于表示原数据包和编码包在这p个第一mac pdu中的位置。该预设规则可以是收发两端自行协商的,也可以是预设的,还可以是其他方式确定的,以使收发两端均知道该预设规则。也就是说,根据该预设规则,可以推导出/推算出原数据包和编码包分别在这p个第一mac pdu中的位置。
[0193]
本技术中的预设可以理解为设置、预先设置、预先定义、存储、预存储、预协商、预配置、固化、或预烧制。本技术中的固定的值的含义是该值收发双方已知,收发双方已知该值的方式可以为协议预设,比如预烧制,配置,或,协商,在此不予限定。因而在本技术中,预设和固定结合上下文的描述可以相互替换。
[0194]
可选的,上述k个原数据是p个第二mac pdu分别执行分割操作而得到。这里的分割操作可以是对每个第二mac pdu进行等大小分割,应理解,某个第二mac pdu的剩余部分可以不足分割的大小,即,某个第二mac pdu的最后一个数据包的大小可以小于分割的大小。那么,上述n个原数据就是这p个第二mac pdu中的部分或全部第二mac pdu分别执行分割操作而得到。
[0195]
其中,第二mac pdu是rlc层传输至mac层的数据生成的mac pdu。换句话说,第二mac pdu可以理解为rlc层传输至mac层的数据(即rlc pdu)添加mac层附加信息(比如,mac控制元素(controlelement,ce)等)而生成/得到的。或者说,第二mac pdu是未经过网络编码的mac pdu。
[0196]
可选的,上述n个原数据为一个网络编码分组,对该网络编码分组(即这n个原数据)进行网络编码可以得到与该网络编码分组对应的编码数据(即上述m个第二数据包分别包含的编码数据)。上述k个原数据中剩余的k-n个原数据属于另一个网络编码分组,对这另一个网络编码分组进行网络编码可以得到与该另一个网络编码分组对应的编码数据(即上述q个第二数据包中剩余的q-m个第二数据包分别包含的编码数据)。
[0197]
可选的,p,k,q,n和m均为正整数。k可以大于或等于n,q可以大于或等于m。当k等于n,且q等于m时,说明这p个第一mac pdu包含的全部原数据包来自一个网络编码分组,且这p个第一mac pdu包含的全部编码包是这个网络编码分组经过网络编码操作而生成。具体的,当k等于n,且q等于m时,该数据传输方法的具体实现过程参见下文实施例二的描述,这里不赘述。当k不等于n(即k大于n),或q不等于m(即q大于m)时,说明这p个第一mac pdu包含的原数据包来自两个不同的网络编码分组,或这p个第一mac pdu包含的编码包是两个不同的网络编码分组分别经过网络编码操作而生成。具体的,当k不等于n,且q不等于m时,该数据传输方法的具体实现过程参见下文实施例三的描述,这里不赘述。当然,当k等于n,且q等于m时,也可以采用下文实施例三描述的数据传输方法。
[0198]
可选的,一个第一mac pdu承载在一个传输块上。一个传输块的大小基于物理资源和调度算法确定。
[0199]
以上步骤s101和步骤s102是作为发送端的第一设备所执行的步骤;相对应的,作为接收端的第二设备执行以下步骤:
[0200]
s103,第二设备获取p个传输块,该p个传输块上承载p个第一mac pdu。
[0201]
该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照前述预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,该k个第一数据包包括k个原数据和原数据包包头/编码包包头,该k个第一数据包中的n个第一数据包包括该k个原数据中的n个原数据和原数据包包头/编码包包头,该q个第二数据包中的m个第二数据包和该n个原数据满足网络编码关系。
[0202]
s104,第二设备对该p个传输块进行译码操作,以得到n个原数据,并将该n个原数据进行合并,以得到一个或多个第二mac pdu。
[0203]
可选的,第二设备接收到p个传输块,或从存储空间(如buffer)中读取到p个传输块。每个传输块上承载一个第一mac pdu。第二设备再对这p个传输块进行译码操作,以得到n个原数据,并将这n个原数据进行合并,以得到一个或多个第二mac pdu。其中,将n个原数据进行合并的过程是编码端/发送端(即第一设备)对第二mac pdu进行分割操作的逆过程。第二设备可以将得到的这一个或多个第二mac pdu分别除去mac层附加信息后向上层递交。具体的,第二设备的具体译码过程可参见下文实施例中的描述,这里不赘述。
[0204]
可见,本技术实施例将网络编码技术应用在mac层,以使译码端/收端可以利用编码包的信息恢复出传输错误的原数据,从而提高高可靠低时延业务的性能,减少重传时延和提高传输的可靠性。
[0205]
前述实施例一简述了本技术提供的数据传输方法,下文实施例二、三、四分别结合具体场景,比如,k与n的大小关系,q与m的大小关系,详细阐述本技术提供的数据传输方法。
[0206]
实施例二
[0207]
本技术实施例二主要介绍以一个或多个第二mac pdu(即rlc层传到mac层的数据添加mac层附加信息而生成/得到的)为基准对象,结合编码码率的要求,对这一个或多个第二mac pdu进行分割,和网络编码操作,生成一定数量的原数据包和编码包,并将生成的原数据包和编码包组成第一mac pdu后承载在tb上进行传输。
[0208]
参见图6,图6是本技术实施例提供的数据传输方法的第二种示意流程图。如图6所示,该数据传输方法包括但不限于以下步骤:
[0209]
s201,第一设备生成p个第一mac pdu,该p个第一mac pdu包含的n个第一数据包和m个第二数据包按照预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,该n个第一数据包是n个原数据分别加原数据包包头而得到,该m个第二数据包是对该n个原数据进行网络编码操作而生成,该n个原数据是p个第二mac pdu分别执行分割操作而得到。
[0210]
s202,第一设备传输承载该p个第一mac pdu的p个传输块。
[0211]
可选的,上述p个第一mac pdu总共包含n个第一数据包和m个第二数据包,这n个第一数据包和m个第二数据包在这p个第一mac pdu中按照预设规则排列。本技术实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包、或者第二数据包称为冗余包。
本技术实施例中的原数据包可以理解为未经过网络编码的数据包,编码包(或冗余包)可以理解为经过网络编码的数据包。其中,本技术实施例的每个编码包包括一个编码包包头,本技术实施例的每个原数据包包括一个原数据包包头。本技术实施例中,原数据包包头的大小与编码包包头的大小可以相等。
[0212]
可见,本技术实施例在第一mac pdu中携带冗余包,当译码端/收端(即第二设备)接收到的tb中某个原数据包出错时,可以通过冗余包联合接收正确的原数据包进行译码,以恢复出接收错误的这个原数据包,从而不需要重传错误的tb,有利于提高高可靠低时延业务的性能,减少重传次数和重传时延。
[0213]
可选的,上述p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等。其中,每个第一mac pdu中除最后一个数据包外,其他数据包的大小均等于数据包预设大小(记为l)。每个第一mac pdu中最后一个数据包的大小小于或等于该数据包预设大小(l)。这是因为第一mac pdu的大小基于tb的大小确定,tb的大小又基于物理资源及调制与编码策略(modulation and coding scheme,mcs)等信息确定,所以第一mac pdu的大小可能不是数据包预设大小(l)的整数倍。因此,第一mac pdu包含的最后一个数据包的大小可能会小于该数据包预设大小(l),当然,也有可能第一mac pdu包含的最后一个数据包的大小等于l。其中,因为数据包包括包头和包体两部分,所以数据包的大小可以理解为包头和包体两部分的大小总和。本技术实施例中,包头的大小为预设的,比如可以是固定值,即原数据包包头的大小与编码包包头的大小相等,示例性的,原数据包包头的大小和编码包包头的大小均等于预设包头大小(记为h)。所以每个第一mac pdu中除最后一个数据包外,其他数据包的包体的长度为l-h。
[0214]
可见,本技术实施例中通过设计原数据包包头和编码包包头的大小相同,以使除每个第一mac pdu的最后一个数据包外其他数据包的大小相等,从而使每个第一mac pdu包含的数据包之间边界(指一个数据包的起始位置或结束位置)清晰(即可通过数据包预设大小推算出每个数据包在第一mac pdu中的位置),进而可以支持每个tb通过数据包预设大小l进行隐含划分,从而识别出每个数据包的位置和边界信息,支持译码端/收端(即第二设备)利用编码块(coding block,cb)循环冗余校验(cyclic redundancy check,crc)来识别错误tb中接收正确的数据包,从而利用接收正确的相关数据包联合译码以恢复出原数据或者生成反馈信息。比如,反馈信息可以请求第一设备重传crc错误的传输块。或者,反馈信息可以请求第一设备重传编码包,以使第二设备接收到重传的编码包后,利用该重传的编码包和p个传输块中校验正确的数据包联合进行译码。
[0215]
可选的,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小(记为tbsi)、该第i个第一mac pdu包含的数据包个数(记为ni)、以及数据包预设大小(l)确定。而该第i个第一mac pdu包含的数据包个数(ni)基于这个第一mac pdu的大小(tbsi)和上述数据包预设大小(l)确定。具体的,第i个第一mac pdu包含的最后一个数据包的大小满足下述公式(1-1),第i个第一mac pdu包含的数据包个数(ni)满足下述公式(1-2)。
[0216]
[0217][0218]
其中,公式(1-1)中表示第i个第一mac pdu包含的最后一个数据包的大小。i的取值为1到p(包含1和p这两个端点)的正整数。公式(1-2)中符号表示向上取整。下文涉及相同符号表示相同含义,不再赘述。公式(1-1)和公式(1-2)中的tbsi已知,基于用于承载第i个第一mac pdu的tb的大小确定。
[0219]
可选的,上述p个第一mac pdu包含的n个第一数据包是n个原数据分别加原数据包包头或编码包包头而得到,该p个第一mac pdu包含的m个第二数据包是对该n个原数据进行网络编码操作而生成。其中,这n个原数据为一个网络编码分组。该n个原数据是p个第二mac pdu分别执行分割操作而得到。这里的分割操作包括等大小分割,比如按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)进行等大小分割。应理解,某个第二mac pdu的剩余部分可以不足分割的大小(即l-h)。该网络编码操作包括编码、加编码包包头等操作,还可以包括填充操作。填充操作用于对这n个原数据中大小小于数据包预设大小与预设包头大小之差(即l-h)的原数据进行填充,以使填充后的大小等于l-h。编码操作包括块编码(比如极大距离可分(maximum distance separable,mds)码或rlnc码)或滑动窗口编码(也称为卷积编码)。
[0220]
可选的,上述第二mac pdu是rlc层传输至mac层的数据生成的mac pdu,换句话说,第二mac pdu是rlc层传输至mac层的数据(即rlc pdu)添加mac层附加信息(比如,macce等)而生成/得到的。或者说,第二mac pdu是未经过网络编码的mac pdu。
[0221]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小(记为yi)基于这p个第一mac pdu中第i个第一mac pdu包含的原数据包个数(ni)、数据包预设大小(l)、预设包头大小(h)、以及第i个第一mac pdu包含的最后一个数据包的大小确定。其中,第i个第一mac pdu包含的原数据包个数基于这个第一mac pdu包含的数据包个数(ni)和预设规则确定。
[0222]
如果该预设规则包括每个第一mac pdu的最后一个数据包是原数据包,则第i个第二mac pdu的大小满足下述公式(1-3)。如果由预设规则确定出第i个第一mac pdu包含的最后一个数据包是编码包,则第i个第二mac pdu的大小满足下述公式(1-4)。简言之,如果一个第一mac pdu包含的最后一个数据包不是原数据包,则该第一mac pdu对应的第二mac pdu的大小就不包括最后一个数据包的包体大小。
[0223][0224][0225]
其中,公式(1-3)和公式(1-4)中表示第i个第一mac pdu包含的原数据包个数。
[0226]
可选的,上述p,n以及m均是正整数。其中,p是预设值,p设为1,或p设为2,3,或4等。或者,p是半静态配置好的值。或者,p是收发两端(即第一设备和第二设备)提前协商好的值,p的值至少在本次通信结束之前不改变。换句话说,本技术实施例预设用于编码的第二mac pdu的个数,也就是说,本技术实施例以预设数量的第二mac pdu为基准对象(或者说作为网络编码分组),生成一定数量的原数据包和编码包,将这些原数据包和编码包放在预设数量的tb上进行传输。n和m可以基于p个第一mac pdu包含的数据包总数(记为n)和编码码
率(记为cr)确定。具体的,m满足下述公式(1-5)或下述公式(1-6),n满足下述公式(1-7)。
[0227][0228][0229]
n=n-m.........................................................(1-7)
[0230]
应理解,n表示p个第一mac pdu包含的原数据包总个数,m表示这p个第一mac pdu包含的编码包总个数。公式(1-5)中符号表示向上取整,公式(1-6)中符号表示向下取整。下文涉及相同符号表示相同含义,不再赘述。
[0231]
当然,原数据包总个数(即n)也可以是这p个第一mac pdu包含的数据包总数n与编码码率cr的乘积再向上或向下取整而得到,即或相应地,编码包总个数(即m)为m=n-n。示例性的,在实际中,为了拥有足够的冗余,以使收端/译码端可以成功译码,在计算编码包总个数时,可以采用上述公式(1-5)进行计算;或采用公式计算。
[0232]
可选的,本技术实施例中的编码码率(cr)可以是预设值,也可以是通过高层信令配置的,还可以是每次通信前收发两端(即第一设备和第二设备)通过物理层信令配置的,本技术实施例不做限制。由上述公式(1-5)和上述公式(1-6)可知,本技术中的编码码率与实际编码码率可能不相同。如果编码包总个数(即m)采用上述公式(1-5)计算得出,则实际编码码率小于或等于这里的编码码率cr;如果编码包个数(即m)采用上述公式(1-6)计算得出,则实际编码码率大于或等于这里的编码码率cr。
[0233]
应理解,编码码率cr可以是原数据包个数与总数据包个数的比值。本技术实施例中总数据包个数可以是原数据包个数和冗余包个数之和。
[0234]
可选的,上述p个第一mac pdu包含的数据包总数(n)为该p个第一mac pdu各自包含的数据包个数之和,其数学表达式如下述公式(1-8)所示。
[0235][0236]
应理解,如果p等于1,则上述公式(1-8)中n等于n1。换句话说,p等于1时,n是这个第一mac pdu包含的原数据包个数,m是这个第一mac pdu包含的编码包个数。
[0237]
可选的,上述原数据包包头的大小为h(比如2字节),其可以全部是预留字段,也可以包括原始/编码(original/coded,o/c)字段、块标识(block id)字段/偏移(offset)字段中的一种或多种。上述编码包包头的大小也为h(比如2字节),其包括编码因子(coeff id)字段,用于指示码本的索引。这里的码本可以是范德蒙码本、柯西码本、随机码本等。应理解,本技术中编码因子字段与coeff id字段可相互替换使用。上述编码包包头还可以包括o/c字段,block id字段/offset字段中的一种或多种。其中,o/c字段用于指示该o/c字段所在的数据包是原数据包还是编码包。例如,o/c字段设置为0时,表示该o/c字段所在的数据包是原数据包;o/c字段设置为1时,表示该o/c字段所在的数据包是编码包。或者,o/c字段设置为1时,表示该o/c字段所在的数据包是原数据包,o/c字段设置为0时,表示该o/c字段所在的数据包是编码包。应理解,原数据包包头中的o/c字段设置为第一值(比如0),即设置为第一值的o/c字段为第一指示信息,用来指示该o/c字段所在的数据包是原数据包。同理,编码包包头中的o/c字段设置为第二值(比如1),即设置为第二值的o/c字段为第二指示信
息,用来指示该o/c字段所在的数据包是编码包。上述偏移字段用于指示上述p个第一mac pdu中该偏移字段所在的第一mac pdu相对于起始第一mac pdu的偏移值。块标识(block id)字段用于指示包含该block id字段的数据包所在的网络编码分组的标识或序列号(sequence number,sn)。应理解,本技术中的“指示”可以为显式指示,也可以为隐式指示,本技术不做限定。
[0238]
可选的,如果上述编码操作是滑动窗口编码,且该滑动窗口编码的滑动窗口大小固定不变或为配置的,则编码包包头可以不新增字段。如果该滑动窗口编码的滑动窗口大小可变,则上述编码包包头中还包括关联深度字段。该关联深度字段用于指示该关联深度字段所在的第一mac pdu之前的第一mac pdu的个数。换句话说,该关联深度字段用于指示该关联深度字段所在的第一mac pdu与历史的多少个第一mac pdu中的原数据一起进行编码。也就是说,关联深度字段用于译码端/收端获知哪几个mac pdu中的原数据是一起编码的,以支持译码端/收端的译码。示例性的,假设关联深度字段指示的个数是1,表示该关联深度字段所在的第一mac pdu与该第一mac pdu之前的1个第一mac pdu中的原数据一起进行编码。假设关联深度字段指示的个数是2,表示该关联深度字段所在的第一mac pdu与该第一mac pdu之前的2个第一mac pdu中的原数据一起进行编码。
[0239]
可见,本技术实施例设计的数据包的包头开销很小,可以实现对一个错误的mac pdu或者tb进行盲检测的效果,得到每个数据包的具体位置和边界信息,可以有效利用tb的编码块(coding block,cb)循环冗余校验(cyclic redundancy check,crc)结果获取错误tb中正确的数据包来进行译码或者生成反馈信息。另外,本技术实施例的原数据包包头和编码包包头设计简单明了,不需要引入分割级联信息以及每个数据包的sn等字段信息,减少了头信息的冗余,并且原数据包包头中的预留字段支持后续扩展。
[0240]
可选的,上述预设规则包括:上述p个第一mac pdu中每个第一mac pdu包含的最后一个数据包是原数据包。在此预设规则下,上述原数据包包头中包括o/c字段,上述编码包包头包括o/c字段和编码因子字段。可选的,原数据包包头和编码包包头还包括block id字段/offset字段。
[0241]
可见,本技术实施例约束每个第一mac pdu的最后一个数据包是原数据包,可以充分利用传输资源。这是因为,如果最后一个数据包是编码包,其大小又小于数据包预设大小(l),说明这个数据包不完整,既不能参与译码,也不能通过其他正确的数据包恢复出来。而如果第一mac pdu的最后一个数据包是原数据包,虽然其大小可能也小于数据包预设大小,但是如果该原数据包传输正确,其可以参与译码以恢复出其他传输错误的原数据,如果该原数据包传输错误,也可以通过其他传输正确的数据包恢复出该原数据包的原数据,从而可以充分利用传输资源。
[0242]
可选的,上述预设规则包括:如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小,则该最后一个数据包是原数据包;如果上述p个第一mac pdu中最后一个第一mac pdu包含的最后一个数据包的大小、等于数据包预设大小(l),则该最后一个数据包可以是编码包,当然也可以是原数据包。也就是说,对于前p-1个第一mac pdu(除最后一个第一mac pdu外的p-1个第一mac pdu)而言,每个第一mac pdu包含的最后一个数据包的大小不管是小于还是等于数据包预设大小,都是原数据包;只有最后一个第一mac pdu包含的最后一个数据包的大小刚好等于数据包预设大小时,才可以是编码包。在此预设
规则下,上述原数据包包头中包括o/c字段,上述编码包包头包括o/c字段和编码因子字段。可选的原数据包包头和编码包包头还包括block id字段/offset字段。
[0243]
可见,本技术实施例不严格约束每个第一mac pdu的最后一个数据包是原数据包,而是通过最后一个数据包与l的大小比较,来确定最后一个数据包是原数据包还是编码包,其实现更为灵活。
[0244]
示例性的,参见图7,图7是本技术实施例提供的原数据包包头的格式示意图。如图7的7a所示,原数据包包头的长度为2字节(byte),其包括o/c字段,o/c字段的长度可以是1比特(bit),剩余比特(共15个比特)表示预留。如图7的7b所示,原数据包包头的长度为2byte,其包括o/c字段和block id字段/offset字段,o/c字段的长度可以是1比特(bit),block id字段/offset字段的长度可以是7比特,剩余比特(共8比特,1字节)表示预留。参见图8,图8是本技术实施例提供的编码包包头的格式示意图。如图8的8a所示,编码包包头的长度为2byte,其包括o/c字段和coeff id字段,o/c字段的长度可以是1bit,coeffid字段的长度可以是8bit,剩余比特(共7bit)表示预留。如图8的8b所示,编码包包头的长度为2byte,其包括o/c字段、block id字段/offset字段、以及coeff id字段,o/c字段的长度可以是1bit,block id字段/offset字段的长度可以是7比特,coeffid字段的长度可以是8bit。应理解,本技术中的“大小”和“长度”可以相互替换使用,其单位为比特(bit)或字节(byte)等,在此不予限定。
[0245]
可选的,上述预设规则包括:(1)上述p个第一mac pdu中每个第一mac pdu包含的最后一个数据包是原数据包。或者,如果上述p个第一mac pdu中最后一个第一mac pdu包含的最后一个数据包的大小、等于数据包预设大小(l),则该最后一个数据包可以是编码包;如果该p个第一mac pdu中任一个第一mac pdu包含的最后一个数据包的大小、小于数据包预设大小(l),则这个第一mac pdu包含的最后一个数据包是原数据包。(2)上述p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外的其他数据包中原数据包位于编码包之前,换句话说,其余数据包按照先原数据包后编码包的顺序排列。其中,如果译码端/接收端(即第二设备)已知数据包预设大小l和编码码率cr(也就是等效已知原数据包总个数n和编码包总个数m),那么在此预设规则下,原数据包包头中可以全部是预留字段,编码包包头中可以只包括编码因子字段。也就是说,在此规则下,o/c字段和block id字段/offset字段均是可选的。
[0246]
可见,本技术实施例通过约束p个第一mac pdu中各个数据包的排列顺序,无需在原数据包包头中携带任何字段,从而可以减少信令开销。
[0247]
上述内容介绍了第一mac pdu的结构和特性,下面介绍第一设备生成满足前述特性和结构的第一mac pdu的一种可能实现方式。
[0248]
步骤1:第一设备根据第一mac pdu的大小和数据包预设大小(l),确定该第一mac pdu包含的数据包个数。
[0249]
可选的,一个第一mac pdu需要一个tb来承载,所以第一mac pdu与tb存在一一对应的关系。因此,第一设备根据某个tb的大小确定该tb上能够承载的第一mac pdu的大小,再根据该第一mac pdu的大小和数据包预设大小(l)确定这个第一mac pdu能够包含的数据包个数。示例性的,这个第一mac pdu能够包含的数据包个数采用上述公式(1-2)计算得出。
[0250]
步骤2:第一设备根据该第一mac pdu包含的数据包个数、该第一mac pdu的大小以
及该数据包预设大小(l),确定该第一mac pdu包含的最后一个数据包的大小。
[0251]
可选的,因为第一mac pdu的大小可能不是数据包预设大小(l)的整数倍,所以第一mac pdu包含的最后一个数据包可能会小于该数据包预设大小(l)。因此,第一mac pdu包含的最后一个数据包的具体大小需要计算得出。具体的,第一设备采用上述公式(1-1)计算得出该第一mac pdu包含的最后一个数据包的大小。
[0252]
可选的,因为第一mac pdu包含的最后一个数据包可能不等于l,所以为了提高传输资源的利用率,可以约束每个第一mac pdu的最后一个数据包是原数据包。这样,第一mac pdu的最后一个数据包(是原数据包),可以参与译码端/收端的译码。
[0253]
步骤3:第一设备确定该第一mac pdu对应的第二mac pdu的大小,根据该第二mac pdu的大小向rlc层请求数据,并对从rlc层请求到的数据(rlc pdu)添加mac附加信息生成第二mac pdu。
[0254]
可选的,针对该第一mac pdu,第一设备可以采用上述公式(1-3)或上述公式(1-4)计算得出第二mac pdu的大小,再由第二mac pdu计算出向rlc层请求的数据(即rlc pdu)的大小,再向rlc层请求数据。具体的,第二mac pdu的大小减去mac层添加的封装信息(即mac层附加信息),即为rlcpdu的大小。其中,第一设备具体采用上述公式(1-3)计算第二mac pdu的大小,还是采用上述公式(1-4)计算第二mac pdu的大小,可以通过预设规则确定。如果通过预设规则确定出该第一mac pdu包含的最后一个数据包是编码包,则第一设备采用上述公式(1-4)计算。反之,如果通过预设规则确定出该第一mac pdu包含的最后一个数据包是原数据包,则第一设备采用上述公式(1-3)计算。
[0255]
步骤4:第一设备重复执行上述步骤1至步骤3,以得到p个第一mac pdu包含的数据包总数(n)和p个第二mac pdu。
[0256]
可选的,如果p等于1,则步骤4可以不存在;也就是说,如果p等于1,则无需重复执行上述步骤1-步骤3。
[0257]
可选的,如果p大于1,则上述步骤1-步骤3需要执行p次,以获得p个第一mac pdu分别包含的数据包个数、和p个第二mac pdu。第一设备可采用上述公式(1-8)计算得出p个第一mac pdu包含的数据包总数(n)。第一设备可以针对每个第一mac pdu,得到与之对应的第二mac pdu的大小,从而确定需要向rlc层请求的数据的大小,再向rlc层请求相应大小的数据,从而生成p个第二mac pdu。其中,p是已知值。p个第一mac pdu包含的数据包的包头大小相等,即等于预设包头大小(h)。
[0258]
步骤5:第一设备根据p个第一mac pdu包含的数据包总数(n)和编码码率(cr)确定该p个第一mac pdu(能够)包含的原数据包总个数(n)和编码包总个数(m)。
[0259]
可选的,第一设备可以采用上述公式(1-5)或公式(1-6)计算该p个第一mac pdu(能够)包含的编码包总个数(m),即确定m的值。第一设备可以采用上述公式(1-7)计算该p个第一mac pdu(能够)包含的原数据包总个数(n),即确定n的值。
[0260]
步骤6:第一设备对该p个第二mac pdu中的每个第二mac pdu分别进行分割操作,得到n个原数据。
[0261]
可选的,针对每个第二mac pdu,第一设备分别按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)进行等大小分割。应理解,某个第二mac pdu的剩余部分可以不足分割的大小(即l-h),也即,某个第二mac pdu的最后一个数据包的大小可以小于分割的大小。
这样,分割得到的n个原数据的大小可以不完全相等。
[0262]
步骤7:第一设备对该n个原数据添加原数据包包头而得到n个第一数据包,并对该n个原数据进行网络编码操作生成m个第二数据包。
[0263]
可选的,第一设备对每个原数据添加原数据包包头得到原数据包(即第一数据包)。因为上述分割操作得到的n个原数据不完全相等,而网络编码需要进行编码的多个数据的大小均相同。因此,第一设备首先对这n个原数据中大小小于数据包预设大小(l)与预设包头大小(h)之差(即l-h)的原数据进行填充操作,以使填充后的数据的大小等于l-h。第一设备再对这n个大小为(l-h)的数据进行编码,例如,块编码或滑动窗口编码等,生成m个编码数据。第一设备对该m个编码数据分别添加编码包包头而得到m个编码包(即第二数据包)。其中,原数据包包头和编码包包头的设计参见前文相关描述,这里不再赘述。
[0264]
步骤8:第一设备将该n个第一数据包和该m个第二数据包按照预设规则构造p个第一mac pdu。
[0265]
可选的,第一设备按照每个第一mac pdu的最后一个数据包放置原数据包,其余数据包按照先原数据包后编码包的顺序排列,构造出p个第一mac pdu。
[0266]
步骤9:第一设备将该p个第一mac pdu承载在p个tb上,传输该p个tb。
[0267]
可选的,本技术实施例可以在mac层内增加网络编码(network coding,nc)功能,上述步骤s201-步骤s202(或者上述步骤s1-步骤s9)可以由第一设备中的mac层实现。
[0268]
参见图9,图9是本技术实施例提供的rlc层到mac层的协议栈示意图。图9以nc功能位于mac层内为例。如图9所示,rlc层实体(即实现rlc层功能的实体)通过对部分rlc sdu进行分割,形成rlc pdu,传输到mac层,mac层实体(即实现mac层功能的实体)对rlc pdu(也称作mac sdu)进行级联操作,并添加mac层附加信息(比如,mac控制元素(control element,ce)等),得到mac pdu,即为第二mac pdu。
[0269]
第二mac pdu作为网络编码的原数据,mac层对其进行网络编码和添加编码包包头生成编码包,并对原数据添加原数据包包头生成原数据包;再将原数据包和编码包组成第一mac pdu后承载在tb上进行传输。一个tb用来承载一个第一mac pdu,tb的大小(或长度)由分配给该tb的物理资源数及调制与编码策略(modulation and coding scheme,mcs)决定。tb大小的确定可以参考现有技术中的方案,或以后出现的方案,在此不予限定。
[0270]
可见,本技术实施例在mac层实现网络编码方案,无需对mac pdu进行分割级联以获得等效的数据包进行编码生成编码包,更无需在包头中携带分割级联的指示信息,减少了包头开销和降低了实现复杂度。本技术实施例还通过利用第一mac pdu的大小以及数据包预设大小l,将每个第一mac pdu划分成规则的数据包(即除最后一个数据包外,其他数据包的大小等于l,最后一个数据包也可计算得出),方便译码端/接收端通过tb的大小识别出每个数据包的边界信息,从而支持译码端/接收端从接收错误的tb中获得正确的数据包进行译码,或者生成反馈信息。
[0271]
为更好地理解编码端/发送端(即第一设备)的数据传输流程,下面结合几个示例进行举例说明。
[0272]
一个示例中,以p等于1为例。参见图10a,图10a是本技术实施例提供的编码端数据传输的第一种示意图。如图10a所示,以nc功能位于mac层内为例。假设计算得出的第一mac pdu包含的数据包个数为4,根据第一mac pdu包含的数据包个数和编码码率(cr)计算得出
的m为1,n为3,也就是第一mac pdu总共包含1个编码包和3个原数据包。mac层按照上述公式(1-3)或公式(1-4)计算这第一mac pdu能够包含的原数据(即第二mac pdu)的大小,并向上层请求数据。mac层接收到上层传传递下来的第二mac pdu后,按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对这个第二mac pdu进行等大小分割,得到3个原数据,分别表示为data1,data2,data3。其中,data1的大小等于data2等于l-h,data3的大小小于l-h。对data1,data2,data3分别添加原数据包包头(如图10a中的header)得到原数据包pkt1~pkt3。由于data3的大小小于l-h,所以需要对data3进行填充(padding),以使填充后的大小等于l-h,继而对data1,data2以及填充后的data3进行块编码,生成1个编码数据edata1。对编码数据edata1添加编码包包头(如图10a中的nc_header)得到编码包epkt1。将最后一个数据包固定为原数据包,如图10a的原数据包pkt3,其余数据包按照先原数据包pkt1、pkt2;然后编码包epkt1的顺序排列,构成第一mac pdu。将第一mac pdu承载在tb上进行传输。
[0273]
另一个示例中,以p等于2为例。参见图10b,图10b是本技术实施例提供的编码端数据传输的第二种示意图。如图10b所示,以nc功能位于mac层内为例。假设计算得出的2个第一mac pdu包含的数据包总数为8,根据这2个第一mac pdu包含的数据包个数和编码码率(cr)计算得出的m为1,n为7,也就是第一mac pdu总共包含1个编码包和7个原数据包。mac层按照上述公式(1-3)或公式(1-4)计算每个第一mac pdu能够包含的原数据(即第二mac pdu)的大小,并向上层请求数据。mac层接收到上层传递下来的这2个第二mac pdu(如图10b中的pdu1和pdu2)后,按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对每个第二mac pdu分别进行等大小分割。pdu1经过等大小分割而得到4个原数据,分别表示为data1~data4;pdu2经过等大小分割而得到3个原数据,分别表示为data5~data7。其中,data1~data3,data5~data6的大小均等于l-h,data4和data7的大小小于l-h。对data1~data7分别添加原数据包包头(如图10b中的header)得到原数据包pkt1~pkt7。由于data4和data7的大小小于l-h,所以需要对data4和data7进行填充(padding),以使填充后的data4和data7的大小等于l-h,继而对data1~data3,data5~data6以及填充后的data4和data7进行编码,生成1个编码数据edata1。这里的编码可以是块编码,也可以是滑动窗口编码,图10b以块编码为例。对编码数据edata1添加编码包包头(如图10b中的nc_header)得到编码包epkt1。将每个第一mac pdu的最后一个数据包固定为原数据包,如图10b的原数据包pkt4和原数据包pkt7,其余数据包按照先原数据包pkt1~pkt3和pkt5~pkt6;然后编码包epkt1的顺序排列,分别构成2个第一mac pdu。将这2个第一mac pdu分别承载在tb上进行传输。
[0274]
参见图11,图11是本技术实施例提供的滑动窗口编码的示意图。其中,以滑动窗口的大小为2个第二mac pdu的大小为例,且每次滑动的大小为1个第二mac pdu;也就是说,相邻2个第二mac pdu联合编码。如图11所示,对编码窗1中的2个第二mac pdu(如图11中的pdu1和pdu2)联合编码,生成编码包epkt1。应理解,在对pdu1和pdu2联合编码之前,需确定本次编码的原数据包个数(即n的值)和编码得到的编码包个数(即m的值)。下一步,滑动编码窗,从编码窗1的位置滑动到编码窗2的位置,对此时编码窗2内的2个第二mac pdu(如图11中的pdu2和pdu3)联合编码,即对pdu2中的原数据data5~data7以及pdu3中的原数据data8~data10联合编码,生成编码包epkt2。依次类推,每个编码窗可以有不同的编码码率。应理解,在对pdu2和pdu3联合编码之前,同样也需要确定本次编码的原数据包个数(即n的值)和编码得到的编码包个数(即m的值)。这里,n和m的确定方式参考前文的描述,此处不
再赘述。还应理解,因为滑动窗口编码会把历史已经编码过的原数据和未经过编码的原数据一起进行编码,所以采用滑动窗口编码时,还可以在编码包包头中携带一个字段(称为关联深度字段),用于指示这个编码包所在的第一mac pdu与历史的几个第一mac pdu中的原数据一起进行编码。例如,图11中编码包epkt2的编码包包头中关联深度字段设置为1,表示这个编码包epkt2所在的第一mac pdu与历史的一个第一mac pdu中的原数据一起进行编码。
[0275]
因为干扰、噪声等因素,第一设备传输的tb不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,本技术实施例在发送端/编码端的mac层引入网络编码,以使第二设备接收到足够多(至少n个)正确且线性无关的数据包时,可以通过这些数据包恢复出丢失的原数据。下面继续介绍图6中的译码端,即第二设备,的数据接收流程。
[0276]
s203,第二设备获取p个传输块,该p个传输块上承载p个第一mac pdu。其中,p个第一mac pdu所包含的n个第一数据包和m个第二数据包按照前述预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外的其他数据包的大小相等。该n个第一数据包包括n个原数据和包头,该m个第二数据包与前述n个原数据满足网络编码关系,其中,前述n个原数据为p个第二mac pdu被分割得到。
[0277]
s204,若该p个传输块中存在循环冗余校验crc错误的传输块(tb),则第二设备根据该crc错误的传输块中编码块cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。
[0278]
s205,第二设备对该p个传输块中校验正确的数据包进行译码,获得n个原数据,将该n个原数据进行合并,以得到p个第二mac pdu。
[0279]
可选的,第二设备的物理层(phy层)可以每接收到一个传输块,就对其进行crc和cb crc。或者,第二设备的phy层等待接收到p个传输块后,再对每个传输块分别进行crc和cb crc。p是正整数,且p是预设值,或者高层信令配置好的值,或者收发两端(即第一设备和第二设备)提前协商好的值。如果某个传输块的crc正确,说明该传输块上的所有信息均正确,则第二设备的phy层可以将该传输块递交给mac层,第二设备的mac层可以对该传输块上承载的第一mac pdu按照数据包预设大小(l)进行等大小分割,并将分割而得到的数据包(即正确的数据包)存储在存储空间(如buffer)中。
[0280]
如果某个传输块的crc错误,则第二设备的phy层仍然将该传输块递交给mac层进行下一步处理。也就是说,本技术实施例中无论tb的crc正确与否,phy层均会向mac层递交该tb。第二设备的mac层再根据crc错误的传输块上承载的第一mac pdu的大小(记为tbsj)、数据包预设大小(l),按照上述公式(1-2)计算出该传输块中包含的数据包个数(记为nj)。其中,该传输块包含的前(n
j-1)个数据包的大小均为数据包预设大小l。第二设备的mac层可以根据该传输块中包含的数据包个数(nj)、该传输块上承载的第一mac pdu的大小(tbsj)、数据包预设大小(l),确定该传输块包含的最后一个数据包的大小(记为l

sys
)。其中,l

sys
=tbs
j-(n
j-1)*l。j的取值范围与上述i的取值范围相同,均为1到p(包括1和p这两个端点)的正整数;j和i可以相等,也可以不相等。第二设备的mac层根据该传输块中每个数据包的大小,以及该传输块的每个编码块的大小,确定每个编码块与数据包的映射关系。第二设备的mac层根据phy层的每个编码块的校验结果,和每个编码块与数据包的映射关系,
确定该crc错误的传输块中校验正确的数据包,也可以确定该crc错误的传输块中校验错误的数据包。其中,第二设备可以根据预设规则,确定该crc错误的传输块中校验错误的数据包是否为原数据包。如果该crc错误的传输块中校验错误的数据包不是原数据包,也就是说,该crc错误的传输块中校验错误的数据包是编码包,则可以直接将该crc错误的传输块中校验正确的数据包存储在存储空间(如buffer)中。
[0281]
如果该crc错误的传输块中校验错误的数据包是原数据包,则执行步骤s205。具体的,第二设备的mac层获取p个传输块中校验正确的数据包。如果该p个传输块中校验正确的数据包个数大于或等于n,第二设备的mac层再根据该p个传输块包含的数据包总数(n)、和上述编码码率(cr),按照上述公式(1-5)或上述(1-6)计算编码包总个数(m),按照上述公式(1-7)计算原数据包总个数(n)。一种实现方式中,如果数据包的包头(指原数据包包头和编码包包头)中没有o/c字段,则第二设备的mac层根据上述预设规则、该编码包总个数(m)、以及该原数据包总个数(n)确定该p个传输块中校验正确的数据包中哪些是原数据包哪些是编码包。另一种实现方式中,如果数据包的包头(指原数据包包头和编码包包头)中有o/c字段,则第二设备的mac层根据p个传输块中校验正确的每个数据包中包头的o/c字段确定该数据包是原数据包还是编码包。第二设备的mac层获取该p个传输块中校验正确的编码包的编码包包头中的编码因子字段,根据这些编码因子字段的指示和该p个传输块中校验正确的原数据包,构建系数因子矩阵。其中,原数据包对应的编码系数可以是单位向量。第二设备的mac层可以利用该系数因子矩阵对该p个传输块中校验正确的原数据包中的原数据和编码包中的编码数据进行译码,以恢复出校验错误的原数据包中的原数据。应理解,如果校验错误的原数据包是crc错误的传输块中的最后一个数据包,且该传输块包含的最后一个数据包中原数据的大小小于l-h(即l

sys-h《l-h,相当于l

sys
《l),则恢复出的原数据需要去掉编码时填充的填充比特。其中,该p个传输块中校验正确的所有原数据包去除原数据包包头后与恢复出的原数据,共n个原数据。第二设备的mac层将该n个原数据(如果有填充比特,则这里是去掉填充比特后的原数据)进行合并,以得到p个第二mac pdu。具体的,该n个原数据按照各自对应的原数据包在第一mac pdu中的前后顺序进行合并。第二设备的mac层将该p个第二mac pdu分别除去mac层附加信息后向上层(比如rlc层)递交,以进行进一步处理。
[0282]
如果上述p个传输块中校验正确的数据包个数小于n,说明接收正确且线性无关的数据包个数不足以支持译码,第二设备可以生成反馈信息并向第一设备反馈。例如,反馈信息可以请求第一设备重传这个crc错误的传输块。或者,反馈信息可以请求第一设备重传编码包(重传的编码包个数大于或等于n与这p个传输块中校验正确的数据包个数之差),以使第二设备接收到重传的编码包后,利用该重传的编码包和p个传输块中校验正确的数据包联合进行译码。
[0283]
当然,如果上述p个传输块中不存在crc错误的传输块,或crc错误的传输块中校验错误的数据包是编码包,则第二设备的mac层可以直接对该p个传输块上承载的p个第一mac pdu按照数据包预设大小(l)分别进行等大小分割,并对分割而得到的n个原数据包分别去除原数据包包头,得到n个原数据。第二设备再将该n个原数据进行合并,以得到p个第二mac pdu。
[0284]
换句话说,上述译码端的数据传输过程包括:接收端(即第二设备)接收到承载第一mac pdu的tb后,首先进行crc,对于crc校验正确的tb,可以直接得到所有的原数据包和
编码包,并进行相应的译码操作。对于tb校验错误的情况:获取crc错误的tb的大小tbs,并根据数据包预设大小l,按照上述公式(1-2)推断得到该tb中包含的数据包个数以及每个数据包的大小;对每个数据包进行头解析,根据o/c字段判断其为原数据包还是编码包;根据tb的cb crc结果,可以得到每个cb的对错,再根据cb与数据包的映射关系和cb的校验结果,判断数据包的对错;得到正确的数据包,进行译码,或生成反馈信息。
[0285]
为更好地理解译码端/接收端(即第二设备)的数据传输流程,下面结合两个示例进行举例说明。
[0286]
一个示例中,以p等于1为例。参见图12a,图12a是本技术实施例提供的译码端数据传输的第一种示意图。如图12a所示,以nc功能位于mac层内为例。tb中承载的第一mac pdu包含4个数据包,分别是原数据包pkt1~pkt3和编码包epkt1。其中,编码包epkt1是通过原数据包pkt1~pkt3中的原数据一起编码生成的。虽然这个tb的crc错误,但是根据数据包预设大小l,可以推断得到每个数据包的边界和位置。再结合这个tb对应的cb crc结果,假设第五个cb错误。根据cb的大小以及cb与数据包的映射关系,可以得出原数据包pkt3错误,原数据包pkt1和pkt2以及编码包epkt1正确。继而,利用正确的原数据包(pkt1~pkt2)和编码包(epkt1)一起译码,可以恢复一个长度为l-h的等效数据。因为原数据包pkt3是最后一个数据包且实际长度(l

sys
)小于l,所以需要根据原数据包pkt3中原数据data3的实际长度(即l

sys-h),将长度为l-h的等效数据从头(这里指这个等效数据包的第一个比特)开始截取长度等于l

sys-h的数据,将该数据作为原数据data3。也就是说,去除长度为l-h的等效数据中的填充比特,得到实际的原数据data3。当一个完整的第二mac pdu被正确恢复后,则将其去掉mac层附加信息后递交到上层做进一步处理。
[0287]
另一个示例中,以p等于2为例。参见图12b,图12b是本技术实施例提供的译码端数据传输的第二种示意图。如图12b所示,以nc功能位于mac层内为例。第一个tb中承载的第一mac pdu包含4个数据包,分别是原数据包pkt1~pkt4,第二个tb中承载的第一mac pdu包含4个数据包,分别是原数据包pkt5~pkt7和编码包epkt1。也就是说,2个tb包含的数据包总数为8。假设第一个tb的crc错误,根据cbcrc结果以及cb和数据包的映射关系可知,原数据包pkt3错误,其余数据包正确。对正确接收的数据包(原数据包pkt1,pkt2,pkt4,pkt5~pkt7;编码包epkt1)进行译码,恢复出错误的原数据包pkt3中的原数据data3,并将完整正确的第二mac pdu去掉mac层附加信息后递交到上层处理。
[0288]
可见,本技术实施例提供了一种mac层的网络编码实现方式,发送端/编码端(即第一设备)可以借助数据包预设大小(l)以及编码码率(cr)构建一个或者若干个mac pdu(这里是上文的第一mac pdu)的原数据包和编码包的数量以及排列方式,进而确定构成mac pdu(这里是上文的第一mac pdu)的原数据(即上文的第二mac pdu)大小。同时,本技术实施例隐含了数据包的位置信息,即接收端/译码端(即第二设备)可以识别出tb中每个数据包的位置和边界,再利用tb中cbcrc结果以及cb的长度与数据包的映射关系获取正确的数据包,再通过解析正确的数据包的包头可以识别出原数据包和编码包。最后,联合正确的编码包和原数据包进行译码,恢复丢失的原数据。本技术实施例对时延敏感、高速率业务,尤其是无法保证重传时,支持从错误的tb中获取正确的数据包,并且借助冗余包对丢失的原数据进行恢复,可以改善低时延高速率业务(如xr业务)的性能,减少重传时延和提高传输的可靠性。
[0289]
实施例三
[0290]
本技术实施例三主要介绍以预设的原数据包总个数为基准进行网络编码,按照编码码率生成一定数量的编码包,并将得到的原数据包和编码包组成第一mac pdu后承载在tb上进行传输。
[0291]
参见图13,图13是本技术实施例提供的数据传输方法的第三种示意流程图。如图13所示,该数据传输方法包括但不限于以下步骤:
[0292]
s301,第一设备生成p个第一mac pdu,该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,该k个第一数据包是k个原数据分别加原数据包包头或编码包包头(后续简称为包头)而得到,该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加原数据包包头或编码包包头而得到,该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成,该k个原数据是p个第二mac pdu分别执行分割操作而得到。其中,k不等n,或q不等于m。
[0293]
s302,第一设备传输承载该p个第一mac pdu的p个传输块。
[0294]
可选的,上述p个第一mac pdu总共包含k个第一数据包和q个第二数据包,这k个第一数据包和q个第二数据包在这p个第一mac pdu中按照预设规则排列。这k个第一数据包中存在n个第一数据包是由一个网络编码分组(包括n个原数据)加包头而得到,剩余的k-n(可能等于0)个第一数据包是另外一个网络编码分组中的k-n个原数据分别加包头而得到。也就是说,这k个第一数据包中的原数据可能来自两个不同的网络编码分组。换句话说,这k个第一数据包是k个原数据分别加包头而得到,这k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据(即一个网络编码分组)分别加包头而得到。相应地,一个网络编码分组经过网络编码可以生成编码包。上述q个第二数据包中存在m个第二数据包是对该n个原数据(即一个网络编码分组)进行网络编码操作而生成,剩余的q-m(可能等于0)个第二数据包是另外一个网络编码分组进行网络编码操作而生成。也就是说,这q个第二数据包可能由两个不同的网络编码分组编码生成。
[0295]
其中,k,n,q,m均为正整数,k大于或等于n,q大于或等于m。本技术实施例中,k不等于n(相当于k》n),或q不等于m(q》m)。当然,本技术实施例提供的技术方案也适用于k等于n且q等于m的情况,由于前述实施例二已针对k等于n且q等于m的情形进行详细介绍,这里主要以k不等于n,或q不等于m为例进行介绍。
[0296]
可选的,第一数据包的包头为编码包包头,即本技术实施例中的第一数据包是编码系数为单位向量的数据包,第二数据包是编码系数不为单位向量的数据包。本技术实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包。本技术实施例中每个第一数据包的包头为编码包包头,也就是说本技术实施例中每个原数据包的包头为编码包包头;每个第二数据包(即编码包或冗余包)包括一个编码包包头。本技术实施例中,第一数据包的包头的大小与第二数据包的包头的大小可以相等,示例性的,均等于预设包头大小(h)。
[0297]
可选的,上述n为预设的原数据包(即第一数据包)总个数。n可以是预设值。或者,n是半静态配置好的值。或者,n是收发两端(即第一设备和第二设备)提前协商好的值,n的值至少在本次通信结束之前不改变。换句话说,本技术实施例预设一个网络编码分组中原数
据的个数,或者说预设原数据包(即第一数据包)总个数,结合编码码率生成一定数量的编码包,将这些原数据包(即第一数据包)和编码包(即第二数据包)按预定义的规则排放在tb上进行传输。因为n已知,所以m可以基于n和编码码率(cr)确定。具体的,m满足下述公式(2-1)或下述公式(2-2)。m表示编码包(即第二数据包)总个数。
[0298][0299][0300]
其中,编码码率(cr)可以是预设值,也可以是半静态配置的,还可以是每次通信前收发两端(即第一设备和第二设备)动态配置的,本技术实施例不做限制。由上述公式(2-1)和上述公式(2-2)可知,本技术中的编码码率与实际编码码率可能不相同。如果编码包总个数(即m)采用上述公式(2-1)计算得出,则实际编码码率小于或等于这里的编码码率cr;如果编码包总个数(即m)采用上述公式(2-2)计算得出,则实际编码码率大于或等于这里的编码码率cr。应理解,编码码率cr可以是原数据包个数与总数据包个数的比值。本技术实施例中总数据包个数是原数据包个数和冗余包个数之和。
[0301]
可见,本技术实施例通过预设原数据包总个数(n),并且按照编码码率(cr)计算编码包总个数(m),当预设的原数据包总个数较多时,实际编码码率可以更加准确地逼近编码码率(cr)。另外,本技术实施例可以解决第一mac pdu较小时,对应的数据包总个数(n)也比较少,实际编码码率与编码码率(cr)相比不够精确的问题。
[0302]
可选的,上述p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等。其中,每个第一mac pdu中除最后一个数据包外,其他数据包的大小均等于数据包预设大小(l)。每个第一mac pdu中最后一个数据包的大小小于或等于该数据包预设大小(l)。
[0303]
可选的,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小参见前述实施例二中的相应描述,此处不再赘述。
[0304]
可选的,上述k个第一数据包中的n个第一数据包是上述k个原数据中的n个原数据分别加编码包包头而得到。上述q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。换句话说,上述q个第二数据包中的至少一个第二数据包的数据部分与这k个第一数据包中的至少一个第一数据包的数据部分满足网络编码关系。或者,该q个第二数据包中的全部或部分第二数据包是这k个第一数据包中的全部或部分第一数据包的数据部分经过网络编码操作而得到。
[0305]
其中,上述k个原数据是p个第二mac pdu分别执行分割操作而得到。上述k个原数据中的n个原数据是p个第二mac pdu中的部分或全部第二mac pdu分别执行分割操作而得到。这n个原数据为一个网络编码分组。这里的分割操作包括等大小分割,比如按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)进行等大小分割。应理解,某个第二mac pdu的剩余部分可以不足分割的大小(即l-h),即该第二mac pdu的最后一个数据包的大小可以小于分割的大小。该网络编码操作至少包括网络编码本身、和加编码包包头,可选的还包括填充等操作。填充操作用于对这n个原数据中大小小于数据包预设大小与预设包头大小之差(即l-h)的原数据进行填充,以使填充后的大小等于l-h。编码操作包括块编码(比如mds
码或rlnc码)。
[0306]
可选的,上述第二mac pdu是rlc层传输至mac层的数据生成的mac pdu,换句话说,第二mac pdu是rlc层传输至mac层的数据(即rlc pdu)添加mac层附加信息(比如,mac ce等)而生成/得到的。或者说,第二mac pdu是未经过网络编码的mac pdu。上述p个第二mac pdu中第i个第二mac pdu的大小(yi)参见前述实施例二中的相应描述,此处不再赘述。
[0307]
可选的,编码包包头的大小为预设包头大小h(比如2字节)。该编码包包头包括编码因子(coeff id)字段。第一数据包的包头中编码因子(coeff id)字段指示单位向量,第二数据包的包头中编码因子(coeff id)字段用于指示码本的索引。这里的码本可以是范德蒙码本、柯西码本、随机码本等。应理解,本技术中编码因子字段与coeff id字段可相互替换使用。该第一数据包的包头和该第二数据包的包头还可以包括o/c字段,block id字段中的一种或多种。其中,第一数据包的包头中o/c字段设置为第一值(比如0),用于指示该o/c字段所在的数据包是原数据包,第二数据包的包头中o/c字段设置为第二值(比如1),用于指示该o/c字段所在的数据包是编码包。block id字段的含义可参考前述实施例二中的相应描述,此处不再赘述。
[0308]
可选的,上述预设规则包括:如果一个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小(l),则该最后一个数据包是原数据包。换句话说,如果某个第一mac pdu包含的最后一个数据包的大小,等于数据包预设大小(l),则允许这个第一mac pdu包含的最后一个数据包是编码包,当然也可以是原数据包。当然,如果上述p个第一mac pdu中每个第一mac pdu包含的最后一个数据包的大小、都小于数据包预设大小,则这每个第一mac pdu包含的最后一个数据包是原数据包。在此预设规则下,上述第一数据包的包头和上述第二数据包的包头中均包括block id字段,和coeff id字段。可选的,上述第一数据包的包头和第二数据包的包头还包括o/c字段。第一数据包的包头中o/c字段设置为第一值(比如0),第二数据包的包头中o/c字段设置为第二值(比如1)。
[0309]
可见,本技术实施例通过约束一个第一mac pdu包含的最后一个数据包的大小小于数据包预设大小(l)时,该最后一个数据包是原数据包,可以充分利用传输资源。
[0310]
可选的,上述预设规则还包括:上述p个第一mac pdu中的上述n个第一数据包和上述m个第二数据包满足原数据包位于编码包之前的关系。换句话说,这p个第一mac pdu中的n个第一数据包和m个第二数据包满足先原数据包后编码包的顺序排列。也就是说,这p个第一mac pdu中由同一个网络编码分组添加原数据包包头生成的原数据包和进行编码生成的编码包满足先原数据包后编码包的顺序排列。对于剩余的k-n个原数据包和q-m个编码包,在满足前述预设规则(即“p个第一mac pdu中的n个第一数据包和m个第二数据包满足原数据包位于编码包之前的关系”)的条件下,可以位于该m个第二数据包后。具体的,上述预设规则为:如果某个第一mac pdu包含的最后一个数据包的大小,小于数据包预设大小(l),则该最后一个数据包是原数据包;且上述n个第一数据包和上述m个第二数据包满足原数据包位于编码包之前的关系。在此预设规则下,上述第一数据包的包头和上述第二数据包的包头中均包括coeff id字段。可选的,该第一数据包的包头和该第二数据包的包头中还包括block id字段。进一步的,该第一数据包的包头和该第二数据包的包头中还包括o/c字段。第一数据包的包头中o/c字段设置为第一值(比如0),第二数据包的包头中o/c字段设置为第二值(比如1)。
[0311]
可见,本技术实施例通过约束由一个网络编码分组生成的原数据包和编码包的排列顺序,使数据包之间边界(指一个数据包的起始位置或结束位置)清晰(即可通过数据包预设大小推算出每个数据包在第一mac pdu中的位置),从而可以支持译码端/收端(即第二设备)识别出哪些是原数据包哪些是编码包。另外,还通过在第一数据包的包头和第二数据包的包头中携带block id字段,可以使每个正确接收的数据包都有明确的网络编码分组id,也就是可以明确得知哪些数据包来自同一个网络编码分组,有利于译码。
[0312]
可选的,上述预设规则还包括:如果上述n个第一数据包的最后一个第一数据包所在的第一mac pdu的大小不是数据包预设大小(l)的整数倍,则该第一mac pdu的最后一个数据包是上述k个第一数据包中除该n个第一数据包外的其他第一数据包,比如下一个网络编码分组中的第一数据包;如果上述m个第二数据包的任一第二数据包所在的第一mac pdu不是数据包预设大小(l)的整数倍,则该任一第二数据包所在的第一mac pdu的最后一个数据包是上述k个第一数据包中除该n个第一数据包外的其他第一数据包,比如下一个网络编码分组中的第一数据包。前述m个第二数据包的最后一个第二数据包所在的第一mac pdu在该最后一个第二数据包后还有剩余的大小时,该最后一个第二数据包后紧跟下一个网络编码分组的第一数据包。具体的,上述预设规则为:如果某个第一mac pdu包含的最后一个数据包的大小小于数据包预设大小(l),则该最后一个数据包是原数据包;且上述n个第一数据包和上述m个第二数据包满足原数据包位于编码包之前的关系;如果该n个第一数据包的最后一个第一数据包所在的第一mac pdu的大小不是数据包预设大小(l)的整数倍,则该第一mac pdu的最后一个数据包是该k个第一数据包中除该n个第一数据包外的其他第一数据包;如果该m个第二数据包的任一第二数据包所在的第一mac pdu不是数据包预设大小(l)的整数倍,则该任一第二数据包所在的第一mac pdu的最后一个数据包是该k个第一数据包中除该n个第一数据包外的其他第一数据包。
[0313]
其中,如果译码端/接收端(即第二设备)已知数据包预设大小l和编码码率cr(也就是等效已知原数据包总个数n和编码包总个数m),那么在该预设规则下,上述第一数据包的包头和上述第二数据包的包头中均包括coeff id字段。可选的,该第一数据包的包头和该第二数据包的包头中还包括o/c字段,和/或block id字段。第一数据包的包头中o/c字段设置为第一值(比如0),第二数据包的包头中o/c字段设置为第二值(比如1)。
[0314]
可见,本技术实施例通过严格约束原数据包和编码包的排列方式,可以减少包头开销。另外,还通过在第一数据包的包头和第二数据包的包头中携带coeff id字段,以支持译码端/收端(即第二设备)利用coeff id字段构建系数因子矩阵来进行译码。
[0315]
为更好地理解编码端/发送端(即第一设备)的数据传输流程,下面结合两个示例进行举例说明。
[0316]
一个示例中,参见图14a,图14a是本技术实施例提供的编码端数据传输的第三种示意图。其中,图14a以上述预设规则中每个第一mac pdu包含的最后一个数据包是原数据包为例。如图14a所示,nc功能位于mac层内。假设n等于8,结合编码码率(cr)计算得出m等于2。基于前述公式(1-2)计算得出第1个第一mac pdu能够包含4个数据包,第2个第一mac pdu能够包含3个数据包,第3个第一mac pdu能够包含1个数据包,第4个第一mac pdu能够包含5个数据包。mac层按照上述公式(1-3)或公式(1-4)计算每个第一mac pdu能够包含的原数据(即第二mac pdu)的大小,并向上层请求数据。mac层每接收到一个第二mac pdu(如图14a中
的pdu1~pdu4),就按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对这个第二mac pdu分别进行等大小分割。pdu1经过等大小分割而得到4个原数据,分别表示为data1~data4;pdu2经过等大小分割而得到3个原数据,分别表示为data5~data7;pdu3的大小刚好等于l-h,作为一个原数据,表示为data8;pdu4经过等大小分割而得到3个原数据,分别表示为data9~data11。其中,因为n等于8,则原数据data1~data8是一个网络编码分组,原数据data9~data11是另一个网络编码分组中的原数据。data1~data3,data5~data6,以及data8的大小均等于l-h,data4和data7的大小小于l-h。对data1~data8分别添加编码包包头(如图14a中的nc_header)得到原数据包pkt1~pkt8。对data9~data11分别添加编码包包头得到原数据包pkt9~pkt11。由于data4和data7的大小小于l-h,所以需要对data4和data7进行填充(padding),以使填充后的data4和data7的大小等于l-h,继而对data1~data3,data5~data6,data8以及填充后的data4和data7进行块编码,生成2个编码数据,分别表示为edata1和edata2。分别对编码数据edata1和edata2添加编码包包头(如图14a中的nc_header)得到编码包epkt1和epkt2。因为前3个第一mac pdu只能放置8个数据包,所以对原数据包pkt1~pkt8和编码包epkt1~epkt2而言,按照先原数据包后编码包的规则进行排列;则编码包epkt1~epkt2与原数据包pkt9~pkt11顺序放置在第4个第一mac pdu中。这里,p就等于4,k等于11(8+3),q等于2。将第一mac pdu承载在tb上进行传输。
[0317]
另一个示例中,参见图14b,图14b是本技术实施例提供的编码端数据传输的第四种示意图。如图14b所示,nc功能位于mac层内。假设n等于8,结合编码码率(cr)计算得出m等于2。基于前述公式(1-2)计算得出第1个第一mac pdu能够包含4个数据包,第2个第一mac pdu能够包含3个数据包,第3个第一mac pdu能够包含2个数据包,第4个第一mac pdu能够包含4个数据包。mac层按照上述公式(1-3)或公式(1-4)计算每个第一mac pdu能够包含的原数据(即第二mac pdu)的大小,并向上层请求数据。mac层每接收到一个第二mac pdu(如图14b中的pdu1~pdu4),就按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对这个第二mac pdu分别进行等大小分割。pdu1经过等大小分割而得到4个原数据,分别表示为data1~data4;pdu2经过等大小分割而得到3个原数据,分别表示为data5~data7;pdu3经过等大小分割而得到2个原数据,表示为data8和data9;pdu4经过等大小分割而得到2个原数据,分别表示为data10~data11。其中,因为n等于8,则原数据data1~data8作为一个网络编码分组,原数据data9~data11作为另一个网络编码分组中的部分或全部原数据。data1~data3,data5~data6,以及data8的大小均等于l-h,data4,data7以及data9的大小均小于l-h。对data1~data8分别添加编码包包头(如图14a中的nc_header)得到原数据包pkt1~pkt8。对data9~data11分别添加编码包包头得到原数据包pkt9~pkt11。由于data4和data7的大小小于l-h,所以需要对data4和data7进行填充(padding),以使填充后的data4和data7的大小等于l-h,继而对data1~data3,data5~data6,data8以及填充后的data4和data7进行块编码,生成2个编码数据,分别表示为edata1和edata2。分别对编码数据edata1和edata2添加编码包包头(如图14b中的nc_header)得到编码包epkt1和epkt2。假设上述预设规则为:一个第一mac pdu包含的最后一个数据包的大小小于l时,这个数据包是原数据包;且对原数据包pkt1~pkt8和编码包epkt1~epkt2而言,先原数据包后编码包的规则进行排列;另外,由同一个网络编码分组生成的原数据包和编码包优先紧邻。那么,原数据包pkt8放置在第3个第一mac pdu中的起始位置,由于除pkt8之外剩余的大小小于l,
pkt8后紧跟下一个网络编码分组中的起始原数据包pkt9。编码包epkt1~epkt2与原数据包pkt10~pkt11顺序放置在第4个第一mac pdu中。这里,p就等于4,k等于11(8+3),q等于2。将第一mac pdu承载在tb上进行传输。
[0318]
因为干扰、噪声等因素,第一设备传输的tb不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,本技术实施例在发送端/编码端的mac层引入网络编码,以使第二设备接收到足够多正确且线性无关的数据包时,可以通过这些数据包恢复出丢失的原数据。下面介绍图13中的译码端的数据接收流程。
[0319]
s303,第二设备获取p个传输块,该p个传输块上承载p个第一mac pdu。
[0320]
s304,第二设备从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到。
[0321]
s305,若该p个传输块中存在循环冗余校验crc错误的传输块,则第二设备根据该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。
[0322]
s306,第二设备对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据,将该n个原数据进行合并,以得到一个或多个第二mac pdu。
[0323]
可选的,第二设备的phy层可以每接收到一个传输块,就对其进行crc和cb crc。如果某个传输块的crc正确,说明该传输块上的所有信息均正确,则第二设备的phy层可以将该传输块递交给mac层,第二设备的mac层可以对该传输块上承载的第一mac pdu按照数据包预设大小(l)进行等大小分割,并将分割而得到的数据包(即正确的数据包)存储在存储空间(如buffer)中。
[0324]
如果某个传输块的crc错误,则第二设备的phy层仍然将该传输块递交给mac层进行下一步处理。也就是说,本技术实施例中无论tb的crc正确与否,phy层均会向mac层递交该tb。第二设备的mac层再根据crc错误的传输块上承载的第一mac pdu的大小(记为)、数据包预设大小(l),按照前述公式(1-2)计算出该传输块中包含的数据包个数(记为tbsj)。其中,该传输块包含的前(n
j-1)个数据包的大小均为数据包预设大小l。第二设备的mac层可以根据该传输块中包含的数据包个数(nj)、该传输块上承载的第一mac pdu的大小(tbsj)、数据包预设大小(l),确定该传输块包含的最后一个数据包的大小(记为l

sys
)。其中,l

sys
=tbs
j-(n
j-1)*l。j和i可以相等,也可以不相等。第二设备的mac层根据该传输块中每个数据包的大小,以及该传输块的每个编码块的大小,确定每个编码块与数据包的映射关系。第二设备的mac层根据phy层的每个编码块的校验结果,和每个编码块与数据包的映射关系,确定该crc错误的传输块中校验正确的数据包,也可以确定该crc错误的传输块中校验错误的数据包。其中,第二设备可以根据预设规则,确定该crc错误的传输块中校验错误的数据包是否为原数据包。如果该crc错误的传输块中校验错误的数据包不是原数据包,也就是说,该crc错误的传输块中校验错误的数据包是编码包,则可以直接将该crc错误的传输块中校验正确的数据包存储在存储空间(如buffer)中。
[0325]
第二设备的mac层获取该p个传输块上承载的p个第一mac pdu,并对该p个第一mac pdu分别按照数据包预设大小l进行等大小分割,获得k+q个数据包。如果数据包的包头中存在block id字段,则第二设备的mac层可以从该k+q个数据包中确定出block id字段相同的n+m个数据包。如果该n+m个数据包的包头(指原数据包包头和编码包包头)中有o/c字段,则
第二设备的mac层根据每个数据包的包头中o/c字段的指示,确定该数据包是原数据包还是编码包,从而从这n+m个数据包中确定出哪些是原数据包哪些是编码包,总共得到n个原数据包(即n个第一数据包)和m个编码包(即m个第二数据包)。该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到。如果该n+m个数据包的包头(指原数据包包头和编码包包头)中没有o/c字段,则第二设备的mac层根据上述预设规则从该n+m个数据包中确定出n个第一数据包和m个第二数据包。如果数据包的包头中不存在block id字段,说明通过包头携带的信息无法区分哪些数据包是由同一个网络编码分组生成。因为n是预设值或信令配置的值或收发两端协商的值,所以结合编码码率,按照上述公式(2-1)或上述公式(2-2)可以计算得出m。第二设备的mac层再根据n的值,m的值,以及该k+q个数据包在该p个第一mac pdu中的位置(即上述预设规则),从该k+q个数据包中确定出n个第一数据包和m个第二数据包。
[0326]
应理解,上述步骤s304和步骤s305的执行顺序不做限定。例如,步骤s304在步骤s305之前执行,或者步骤s304在步骤s305之后执行,或者步骤s304和步骤s305同时执行。
[0327]
如果上述crc错误的传输块中校验错误的数据包是原数据包,则第二设备的mac层确定该校验错误的原数据包是否是上述n个第一数据包中的一个。一种实现方式中,如果该校验错误的原数据包中包括block id字段,则第二设备的mac层判断该校验错误的原数据包中block id字段的值是否与这n个第一数据包中的任一第一数据包中的block id字段的值相同。如果相同,则说明该校验错误的原数据包是这n个第一数据包中的一个。如果不相同,则说明该校验错误的原数据包不属于这n个第一数据包。另一种实现方式中,如果该校验错误的原数据包中不包括block id字段,则第二设备的mac层根据该n个第一数据包在p个传输块中的位置(基于上述预设规则确定)和该校验错误的原数据包在上述crc错误的传输块中的位置,确定该校验错误的原数据包是否是该n个第一数据包中的一个。如果该校验错误的原数据包是这n个第一数据包中的某个原数据包,则第二设备的mac层获取该n个第一数据包和m个第二数据包中校验正确的数据包。如果该n个第一数据包和m个第二数据包中校验正确的数据包个数大于或等于n,第二设备的mac层获取该n个第一数据包和m个第二数据包中校验正确的每个原数据包的包头中的编码因子字段、和每个编码包的编码包包头中的编码因子字段。第二设备的mac层根据这些编码因子字段的指示,构建系数因子矩阵。其中,第一数据包的包头中编码因子字段指示单位向量。第二设备的mac层可以利用该系数因子矩阵对该n个第一数据包和m个第二数据包中校验正确的原数据包的原数据和编码包的编码数据进行译码,以恢复出校验错误的原数据包中的原数据。应理解,如果校验错误的原数据包是crc错误的传输块中的最后一个数据包,且该传输块包含的最后一个数据包中原数据的大小小于l-h(即l

sys-h《l-h,相当于l

sys
《l),则恢复出的原数据需要去掉编码时填充的填充比特。其中,该n个第一数据包中校验正确的所有原数据包去除包头后与恢复出的原数据,共n个原数据。第二设备将该n个原数据(如果有填充比特,则这里是去掉填充比特后的原数据)进行合并,以得到一个或多个第二mac pdu。具体的,该n个原数据按照各自对应的原数据包在第一mac pdu中的前后顺序进行合并。第二设备的mac层将该一个或多个第二mac pdu分别除去mac层附加信息后向上层(比如rlc层)递交,以进行进一步处理。
[0328]
如果上述p个传输块中校验正确的数据包个数小于n,说明接收正确且线性无关的数据包个数不足以支持译码,第二设备可以生成反馈信息并向第一设备反馈。
[0329]
如果上述校验错误的原数据包不属于这n个第一数据包,则第二设备可以直接将该n个第一数据包分别去除包头,得到n个原数据。第二设备将该n个原数据按照上述预设规则进行合并,以得到一个或多个第二mac pdu。第二设备将该一个或多个第二mac pdu分别除去mac层附加信息后向上层(比如rlc层)递交,以进行进一步处理。
[0330]
当然,如果上述p个传输块中不存在crc错误的传输块,或crc错误的传输块中校验错误的数据包是编码包,则第二设备可以直接从该p个传输块上承载的p个第一mac pdu中确定出n个第一数据包。第二设备再将该n个第一数据包分别去除包头,得到n个原数据。第二设备将该n个原数据按照上述预设规则进行合并,以得到一个或多个第二mac pdu。第二设备将该一个或多个第二mac pdu分别除去mac层附加信息后向上层(比如rlc层)递交,以进行进一步处理。
[0331]
应理解,译码端的数据接收过程可以理解为编码端的逆过程。
[0332]
示例性的,编码端以前述图14a为例。相应的译码过程如下:第二设备接收到4个tb。第二设备对接收到的这4个tb分别进行crc,假设第一个tb的crc错误。第二设备再获取第一个tb中的cb crc结果,假设第4个编码块的crc错误。第二设备根据第一个tb中每个编码块与数据包的映射关系,确定第4个编码块对应原数据包pkt3。第二设备获取正确的原数据包pkt1~pkt2,pkt4~pkt7,以及编码包epkt1~epkt2,对其进行译码,以恢复出错误的原数据包pkt3中的原数据data3。第二设备再将正确的原数据data1~data2,恢复出的data3,以及data4~data8合并为第二mac pdu(如前述图14a中的pdu1~pdu3)递交到上层处理。应理解,原数据data1~data8的合并过程为图14a中pdu1~pdu3分割成data1~data8的逆过程。
[0333]
可见,本技术实施例提供了另一种mac层的网络编码实现方式,通过预设原数据包总个数(n),再结合编码码率(cr)确定编码包总个数(m),并将得到的原数据包和编码包按照预设规则组成mac pdu(这里是上文的第一mac pdu)后承载在tb上进行传输。此种实现方式中,每次通信的第一mac pdu的个数不固定,换句话说,本技术实施例不再以一个或者若干个mac pdu(这里是上文的第二mac pdu)为基准构成一组原数据包和编码包。本技术实施例从预设原数据包总个数的角度提供一种mac层网络编码方案,对时延敏感、高速率业务,尤其是无法保证重传时,支持从错误的tb中获取正确的数据包,并且借助冗余包(编码包的一种)对丢失的原数据进行恢复,可以改善低时延高速率业务(如xr业务)的性能,减少重传时延和提高传输的可靠性。
[0334]
实施例四
[0335]
本技术实施例四主要介绍在前述实施例二和前述实施例三的基础上,在每个数据包的末尾比特后引入预设或固定比特的crc码的mac层网络编码方案。
[0336]
参见图15,图15是本技术实施例提供的数据传输方法的第四种示意流程图。如图15所示,该数据传输方法包括但不限于以下步骤:
[0337]
s401,第一设备生成p个第一mac pdu,该p个第一mac pdu包含的该k个第一数据包和该q个第二数据包按照预设规则排列,该p个第一mac pdu还包含每个数据包分别进行crc而得到的预设大小(或固定比特)的crc码,一个数据包进行crc而得到的该预设大小的crc码位于该数据包的末尾比特后;该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等,该k个第一数据包是k个原数据分别加包头
而得到,该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头而得到,该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成,该k个原数据是p个第二mac pdu分别执行分割操作而得到。
[0338]
s402,第一设备传输承载该p个第一mac pdu的p个传输块。
[0339]
可选的,上述p个第一mac pdu包含k个第一数据包和q个第二数据包,还包括这k+q个数据包中每个数据包分别进行crc而得到的预设大小(或固定比特)的crc码。其中,一个数据包进行crc而得到的该预设大小/固定比特的crc码位于该数据包的末尾比特后,且该crc码与该数据包的末尾比特紧邻。为便于描述,将crc码的预设大小记为r。这k个第一数据包和q个第二数据包在这p个第一mac pdu中按照预设规则排列。
[0340]
本技术实施例中的第一数据包可以称为原数据包,第二数据包可以称为编码包、或者第二数据包称为冗余包。本技术实施例中第一数据包的包头为一个原数据包包头或一个编码包包头,也就是说每个原数据包包括一个原数据包包头或一个编码包包头;每个编码包(或冗余包)包括一个编码包包头。本技术实施例中,原数据包包头的大小与编码包包头的大小可以相等。示例性的,原数据包包头的大小和编码包包头的大小均等于预设包头大小(h)。
[0341]
可选的,上述p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等。其中,每个第一mac pdu中除最后一个数据包外,其他数据包的大小均等于数据包预设大小(l)。每个第一mac pdu中最后一个数据包的大小小于或等于该数据包预设大小(l)。
[0342]
可选的,上述p,k,q,n,m均为正整数,k大于或等于n,q大于或等于m。一种实现方式中,p是预设值,或者半静态配置好的值,或者收发两端(即第一设备和第二设备)提前协商好的值。此实现方式中,k等于n,且q等于m,n和m的值具体参考前述实施例二中的描述,此处不再赘述。此实现方式中,上述p个第一mac pdu总共包含n个第一数据包和m个第二数据包。这n个第一数据包是n个原数据分别加原数据包包头而得到,这m个第二数据包是对该n个原数据进行网络编码操作而生成。其中,这n个原数据为一个网络编码分组。该n个原数据是p个第二mac pdu分别执行分割操作而得到。
[0343]
另一种实现方式中,n是预设值,或者半静态配置好的值,或者收发两端(即第一设备和第二设备)提前协商好的值。此实现方式中,k大于n,或q大于m,n和m的值具体参考前述实施例三中的描述,此处不再赘述。上述k个第一数据包中存在n个第一数据包是由一个网络编码分组(包括n个原数据)加编码包包头而得到,剩余的k-n(可能等于0)个第一数据包是另外一个网络编码分组中的k-n个原数据加编码包包头而得到。这k个第一数据包是k个原数据分别加编码包包头而得到。这k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据(即一个网络编码分组)分别加编码包包头而得到。上述q个第二数据包中存在m个第二数据包是对该n个原数据(即一个网络编码分组)进行网络编码操作而生成,剩余的q-m(可能等于0)个第二数据包是另外一个网络编码分组进行网络编码操作而生成。上述k个原数据是p个第二mac pdu分别执行分割操作而得到。
[0344]
其中,第二mac pdu是rlc层传输至mac层的数据生成的mac pdu,换句话说,第二mac pdu是rlc层传输至mac层的数据(即rlc pdu)添加mac层附加信息(比如,mac ce等)而生成/得到的。
[0345]
可选的,因为在每个数据包的末尾比特后引入了预设大小/固定比特的crc码,而第一mac pdu的大小不会因引入预设大小/固定比特的crc码而改变,所以在每个数据包的末尾比特后引入预设大小/固定比特的crc码,将导致这个第一mac pdu能够包含的原数据(即第二mac pdu)的大小减少,因此针对每个第一mac pdu需要重新计算其包含的数据包个数,和其能够包含的原数据(即第二mac pdu)的大小等。
[0346]
上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小(tbsi)、该第i个第一mac pdu包含的数据包个数(ni)、数据包预设大小(l)、以及crc码的预设大小/固定比特(r)确定。而该第i个第一mac pdu包含的数据包个数(ni)基于这个第一mac pdu的大小(tbsi)和上述数据包预设大小(l)确定。具体的,第i个第一mac pdu包含的最后一个数据包的大小满足下述公式(3-1),第i个第一mac pdu包含的数据包个数(ni)满足下述公式(3-2)。
[0347][0348][0349]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小(记为yi)基于这p个第一mac pdu中第i个第一mac pdu包含的原数据包个数(ni)、数据包预设大小(l)、预设包头大小(h)、第i个第一mac pdu包含的最后一个数据包的大小、以及crc码的预设大小/固定比特(r)确定。其中,第i个第一mac pdu包含的原数据包个数基于这个第一mac pdu包含的数据包个数(ni)和预设规则确定。
[0350]
如果由该预设规则确定出第i个第一mac pdu包含的最后一个数据包是原数据包,则第i个第二mac pdu的大小满足下述公式(3-3)。如果由预设规则确定出第i个第一mac pdu包含的最后一个数据包是编码包,则第i个第二mac pdu的大小满足下述公式(3-4)。示例性的,如果第i个第一mac pdu包含的最后一个数据包的大小小于数据包预设大小l,则该最后一个数据包是原数据包,第i个第二mac pdu的大小满足下述公式(3-3)。如果第i个第一mac pdu包含的最后一个数据包的大小等于数据包预设大小l,且该最后一个数据包是编码包,则第i个第二mac pdu的大小满足下述公式(3-4)。
[0351][0352][0353]
其中,公式(3-3)和公式(3-4)中表示第i个第一mac pdu包含的原数据包个数。
[0354]
可选的,上述原数据包包头和编码包包头的实现方式参考前述施例二或前述实施例三中的相应描述,此处不再赘述。具体的,如果p的值固定(即预设值,或配置好的值,或收发两端协商好的值),上述原数据包包头和编码包包头的实现方式参考前述施例二中的相应描述。如果n的值固定(即预设值,或配置好的值,或收发两端协商好的值),上述编码包包头的实现方式参考前述施例三中的相应描述。
[0355]
可选的,上述预设规则参考前述实施例二或前述实施例三中的相应描述,此处不再赘述。具体的,如果p的值固定,上述预设规则参考前述施例二中的相应描述。如果n的值固定,上述预设规则参考前述施例三中的相应描述。
[0356]
为更好地理解编码端/发送端(即第一设备)的数据传输流程,下面结合两个示例
进行举例说明。
[0357]
一个示例中,在前述实施例二的基础上,在每个数据包的末尾比特后添加固定比特的crc码。参见图16a,图16a是本技术实施例提供的编码端数据传输的第五种示意图。如图16a所示,p等于2,nc功能位于mac层内。假设计算得出的2个第一mac pdu包含的数据包总数为8,根据这2个第一mac pdu包含的数据包个数和编码码率(cr)计算得出的m为1,n为7,也就是第一mac pdu总共包含1个编码包和7个原数据包。mac层按照上述公式(3-3)或公式(3-4)计算每个第一mac pdu能够包含的原数据(即第二mac pdu)的大小。mac层接收到这2个第二mac pdu(如图16a中的pdu1和pdu2)后,按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对每个第二mac pdu分别进行等大小分割。pdu1经过等大小分割而得到4个原数据,分别表示为data1~data4;pdu2经过等大小分割而得到3个原数据,分别表示为data5~data7。其中,data1~data3,data5~data6的大小均等于l-h,data4和data7的大小小于l-h。对data1~data7分别添加原数据包包头(如图16a中的header)得到原数据包pkt1~pkt7。由于data4和data7的大小小于l-h,所以需要对data4和data7进行填充(padding),以使填充后的data4和data7的大小等于l-h,继而对data1~data3,data5~data6以及填充后的data4和data7进行编码,生成1个编码数据edata1。这里的编码可以是块编码,也可以是滑动窗口编码,图16a以块编码为例。对编码数据edata1添加编码包包头(如图16a中的nc_header)得到编码包epkt1。分别对原数据包pkt1~pkt7和编码包epkt1进行crc,生成预设大小(r)的crc码。每个第一mac pdu的最后一个数据包固定为原数据包,如图16a的原数据包pkt4和原数据包pkt7,其余数据包按照先原数据包pkt1~pkt3和pkt5~pkt6;然后编码包epkt1的顺序排列,分别构成2个第一mac pdu。其中,每个数据包进行crc而生成的crc码位于这个数据包的末尾比特后。将第一mac pdu承载在tb上进行传输。
[0358]
另一个示例中,在前述实施例三的基础上,在每个数据包的末尾比特后添加固定比特的crc码。参见图16b,图16b是本技术实施例提供的编码端数据传输的第六种示意图。其中,图16a以预设规则中每个第一mac pdu包含的最后一个数据包是原数据包为例。如图16b所示,n等于8,结合编码码率(cr)计算得出m等于2;nc功能位于mac层内。基于前述公式(1-2)计算得出第1个第一mac pdu能够包含4个数据包,第2个第一mac pdu能够包含3个数据包,第3个第一mac pdu能够包含1个数据包,第4个第一mac pdu能够包含5个数据包。mac层按照上述公式(3-3)或公式(3-4)计算每个第一mac pdu能够包含的原数据(即第二mac pdu)的大小。mac层每接收到一个第二mac pdu(如图16b中的pdu1~pdu4),就按照数据包预设大小(l)与预设包头大小(h)之差(即l-h)对这个第二mac pdu分别进行等大小分割。pdu1经过等大小分割而得到4个原数据,分别表示为data1~data4;pdu2经过等大小分割而得到3个原数据,分别表示为data5~data7;pdu3的大小刚好等于l-h,作为一个原数据,表示为data8;pdu4经过等大小分割而得到3个原数据,分别表示为data9~data11。其中,因为n等于8,则原数据data1~data8是一个网络编码分组,原数据data9~data11是另一个网络编码分组中的原数据。data1~data3,data5~data6,以及data8的大小均等于l-h,data4和data7的大小小于l-h。对data1~data8分别添加编码包包头(如图16b中的nc_header)得到原数据包pkt1~pkt8。对data9~data11分别添加编码包包头得到原数据包pkt9~pkt11。由于data4和data7的大小小于l-h,所以需要对data4和data7进行填充(padding),以使填充后的data4和data7的大小等于l-h,继而对data1~data3,data5~data6,data8以及填充
后的data4和data7进行块编码,生成2个编码数据,分别表示为edata1和edata2。分别对编码数据edata1和edata2添加编码包包头(如图16b中的nc_header)得到编码包epkt1和epkt2。分别对原数据包pkt1~pkt11和编码包epkt1~epkt2进行crc,生成预设大小(r)的crc码。因为前3个第一mac pdu只能放置8个数据包,所以对原数据包pkt1~pkt8和编码包epkt1~epkt2而言,按照先原数据包后编码包的规则进行排列;则编码包epkt1~epkt2与原数据包pkt9~pkt11顺序放置在第4个第一mac pdu中。其中,每个数据包进行crc而生成的crc码位于这个数据包的末尾比特后。这里,p就等于4,k等于11(8+3),q等于2。将第一mac pdu承载在tb上进行传输。
[0359]
可见,本技术实施例通过在每个数据包的末尾比特后引入固定比特的crc码,在译码端/收端(即第二设备)可以无需借助crc错误的tb中cb crc结果,而是按照数据包预设大小l和crc码的预设大小r之和(l+r)对第一mac pdu或者tb进行划分,得到每个数据包的位置和边界,继而直接对每个数据包进行crc判定每个数据包的对错。在crc正确的数据包中,通过解析包头判断该数据包是原数据包还是编码包,继而联合正确接收的原数据包和编码包进行译码,或者生成反馈信息。
[0360]
因为干扰、噪声等因素,第一设备传输的tb不一定都能被第二设备正确接收,也就是说,在传输过程中可能发生丢包的情况。所以,本技术实施例在发送端/编码端的mac层引入网络编码,以使第二设备接收到足够多正确且线性无关的数据包时,可以通过这些数据包恢复出丢失的原数据。下面介绍图15中译码端的数据接收流程。
[0361]
s403,第二设备获取p个传输块,该p个传输块上承载p个第一mac pdu。
[0362]
s404,第二设备从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到。
[0363]
s405,若该p个传输块中存在循环冗余校验crc错误的传输块,则第二设备对该crc错误的传输块中的每个数据包进行crc得到校验结果,并根据该校验结果和该数据包的末尾比特后的crc码,确定该crc错误的传输块中校验正确的数据包。
[0364]
s406,第二设备对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据,将该n个原数据按照该预设规则进行合并,以得到一个或多个第二mac pdu。
[0365]
可选的,本技术实施例中步骤s403的实现方式可参考前述图13所示实施例中的步骤s303的实现方式;或者,本技术实施例中步骤s403的实现方式可参考前述图6所示实施例中的步骤s203的实现方式;此处不再赘述。
[0366]
可选的,第二设备的phy层对获取到的每个传输块进行crc。如果某个传输块的crc错误,则第二设备的phy层仍然将该传输块递交给mac层进行下一步处理。第二设备的mac层可以将该传输块按照数据包预设大小l与预设大小/固定比特r之和(即l+r)进行等大小分割,得到多个数据段。一个数据段包括一个数据包和该数据包经过crc而生成的预设大小/固定比特的crc码。换句话说,一个数据段的前l大小的数据是一个数据包,后r大小的数据是该数据包经过crc而生成的crc码。第二设备的mac层对每个数据段中的数据包进行crc得到校验结果,再比较该校验结果与该数据段中的crc码是否匹配;如果该校验结果与该数据段中的crc码匹配,则确定该数据段中的数据包校验正确。反之,如果该校验结果与该数据段中的crc码不匹配,则说明该数据段中的数据包校验错误。从而,第二设备的mac层可以确
定出该crc错误的传输块中校验正确的数据包,也可以确定该crc错误的传输块中校验错误的数据包。其中,第二设备的mac层可以根据预设规则,确定该crc错误的传输块中校验错误的数据包是否为原数据包。如果该crc错误的传输块中校验错误的数据包不是原数据包,也就是说,该crc错误的传输块中校验错误的数据包是编码包,则可以直接将该crc错误的传输块中校验正确的数据包存储在存储空间(如buffer)中。
[0367]
可选的,第二设备的mac层获取该p个传输块上承载的p个第一mac pdu,并对该p个第一mac pdu分别按照数据包预设大小l与预设大小/固定比特r之和(即l+r)进行等大小分割,获得k+q个数据包。第二设备的mac层可以从该k+q个数据包中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到。具体确定方式可参考前述实施例三中的相应描述,此处不再赘述。
[0368]
应理解,上述步骤s404和步骤s405的执行顺序不做限定。例如,步骤s404在步骤s405之前执行,或者步骤s404在步骤s405之后执行,或者步骤s404和步骤s405同时执行。
[0369]
可选的,如果上述crc错误的传输块中校验错误的数据包是原数据包,则第二设备的mac层确定该校验错误的原数据包是否是上述n个第一数据包中的一个。具体确定方式可参考前述实施例三中的相应描述,此处不再赘述。
[0370]
如果该校验错误的原数据包是这n个第一数据包中的某个原数据包,则执行步骤s406。其中,本技术实施例中步骤s406的实现方式可参考前述图13所示实施例中的步骤s306的实现方式;或者,本技术实施例中步骤s403的实现方式可参考前述图6所示实施例中的步骤s205的实现方式;此处不再赘述。
[0371]
可见,本技术实施例提出的mac层网络编码方案,不仅可以改善低时延高速率业务(如xr业务)的性能,减少重传时延和提高传输的可靠性。本技术实施例还在每个数据包的末尾比特后引入固定比特的crc码,以支持译码端/收端(即第二设备)在tb的crc错误的情况下,按照数据包预设大小l和crc码的预设大小/固定比特r之和(即l+r)对mac pdu(这里是上文中的第一mac pdu)或者tb进行划分,从而清晰地定位tb/mac pdu(这里是上文中的第一mac pdu)中的数据包,即得到每个数据包的边界和位置,并对数据包进行crc,判断错误tb中每个数据包的对错;无需借助tb的cb crc结果。此外,本技术实施例可以更加准确地对每个数据包做出判断,比cb crc结果更加精确。例如,某个cb对应2个数据包,且该cb的crc错误,此时,按照cb crc的判定原则,会认为这2个数据包都校验错误。但实际上可能是其中一个数据包中的某个比特出错,另一个数据包是正确的。因此,本技术实施例通过直接在数据包的后面紧跟固定比特的crc码,可以将被cb crc误判为校验错误的数据包更正为校验正确,进而可以更准确地获取到tb/mac pdu(这里是上文中的第一mac pdu)中所有校验正确的数据包。
[0372]
上述内容详细阐述了本技术的方法,为便于更好地实施本技术实施例的上述方案,本技术实施例还提供了相应的装置或设备。
[0373]
本技术实施例可以根据上述方法示例对第一设备和第二设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面将结合图17至图19详细描述本技术实施例
的装置。
[0374]
在采用集成的单元的情况下,参见图17,图17是本技术实施例提供的数据传输装置的结构示意图。该数据传输装置可以为第一设备或者可以设置于第一设备中的芯片或电路。如图17所示,该数据传输装置包括:生成模块11和传输模块12。
[0375]
生成模块11,用于生成p个第一mac pdu,该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照预设规则排列;传输模块12,用于传输承载该p个第一mac pdu的p个传输块,一个第一mac pdu承载在一个传输块上。
[0376]
其中,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等。该k个第一数据包是k个原数据分别加包头而得到,该k个原数据是p个第二mac pdu分别执行分割操作而得到。该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头而得到。该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成。该第二mac pdu是无线链路控制层传输至媒体接入控制层的数据生成的mac pdu。该预设规则用于表示原数据包和编码包在该p个第一mac pdu中的位置。p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。该第一数据包是原数据包且该第一数据包的包头为原数据包包头或编码包包头,该第二数据包是编码包且包括编码包包头。原数据包包头和编码包包头的大小相等。
[0377]
可选的,上述k与n相等,且q与m相等。也就是说,上述p个第一mac pdu总共包括n个原数据包和m个编码包。第一数据包的包头为原数据包包头。n和m均基于该p个第一mac pdu包含的数据包总数和编码码率确定。其中,p为预设值。n和m分别为:
[0378]
或者,
[0379]
n=n-m;
[0380]
其中,n表示该p个第一mac pdu包含的数据包总数。cr表示编码码率,为原数据包个数与总数据包的个数的比值,该总数据包的个数为原数据包个数与原数据包编码生成的编码包的个数之和。
[0381][0382]
ni表示该p个第一mac pdu中第i个第一mac pdu包含的数据包个数。
[0383]
可选的,上述预设规则包括:该p个第一mac pdu中每个第一mac pdu包含的最后一个数据包是原数据包。
[0384]
可选的,上述预设规则包括:若该p个第一mac pdu中每个第一mac pdu包含的最后一个数据包的大小、小于数据包预设大小,则该最后一个数据包是原数据包;若该p个第一mac pdu中最后一个第一mac pdu包含的最后一个数据包的大小、等于该数据包预设大小,则该最后一个数据包是编码包或原数据包。
[0385]
上述两种预设规则下,原数据包包头包括第一指示信息,该第一指示信息用于指示该第一指示信息所在的数据包是原数据包。编码包包头包括第二指示信息和编码因子字段,该第二指示信息用于指示该第二指示信息所在的数据包是编码包,该编码因子字段用于指示码本的索引。可选的,原数据包包头和编码包包头还包括块标识字段或偏移字段,该偏移字段用于指示该p个第一mac pdu中该偏移字段所在的第一mac pdu相对于起始第一mac pdu的偏移值。该块标识字段用于指示包含该块标识字段的数据包所在的网络编码分
组的标识。
[0386]
可选的,上述预设规则还包括:该p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外的其他数据包中原数据包位于编码包之前。此预设规则下,原数据包包头可以不携带任何字段,编码包包头携带编码因子字段即可。
[0387]
可选的,上述网络编码操作包括填充操作和编码操作。该编码操作包括块编码或滑动窗口编码。该填充操作用于对该n个原数据中大小小于数据包预设大小与预设包头大小之差的原数据进行填充。若该编码操作包括滑动窗口编码,上述编码包包头中还包括关联深度字段。该关联深度字段用于指示该关联深度字段所在的第一mac pdu之前的第一mac pdu的个数。该滑动窗口编码为对该关联深度字段所在的第一mac pdu与该关联深度字段指示的历史第一mac pdu中的原数据包一起进行编码。
[0388]
可选的,上述k与n不相等,或q与m不相等。上述第一数据包的包头为编码包包头。
[0389]
上述n为预设的原数据包总个数,该m基于该n和编码码率确定。其中,m为:
[0390]
或者,
[0391]
cr表示编码码率。
[0392]
可选的,上述预设规则包括:若该p个第一mac pdu中每个第一mac pdu包含的最后一个数据包的大小、小于数据包预设大小,则该最后一个数据包是原数据包。此预设规则下,上述编码包包头包括块标识字段和编码因子字段,其中,该第一数据包的包头中编码因子字段指示单位向量,该第二数据包的包头中编码因子字段用于指示码本的索引。该块标识字段用于指示包含该块标识字段的数据包所在的网络编码分组的标识。
[0393]
可选的,上述预设规则还包括:该p个第一mac pdu中的该n个第一数据包和该m个第二数据包满足原数据包位于编码包之前的关系。此预设规则下,该编码包包头包括编码因子字段。该编码包包头还可以包括块标识字段。其中,该第一数据包的包头中编码因子字段指示单位向量,该第二数据包的包头中编码因子字段用于指示码本的索引。该块标识字段用于指示包含该块标识字段的数据包所在的网络编码分组的标识。
[0394]
可选的,上述预设规则还包括:若该n个第一数据包的最后一个第一数据包所在的第一mac pdu的大小不是数据包预设大小的整数倍,则该最后一个第一数据包所在的第一mac pdu的最后一个数据包是该k个第一数据包中除该n个第一数据包外的其他第一数据包;若该m个第二数据包的任一第二数据包所在的第一mac pdu不是数据包预设大小的整数倍,则该任一第二数据包所在的第一mac pdu的最后一个数据包是该k个第一数据包中除该n个第一数据包外的其他第一数据包。此预设规则下,该编码包包头包括编码因子字段。该第一数据包的包头中编码因子字段指示单位向量,该第二数据包的包头中编码因子字段用于指示码本的索引。
[0395]
可选的,上述p个第一mac pdu中除每个第一mac pdu包含的最后一个数据包外其他数据包的大小均等于数据包预设大小,该最后一个数据包的大小小于或等于该数据包预设大小。
[0396]
可选的,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小、该第i个第一mac pdu包含的数据包个数、以及数据包预设大小确定。该第i个第一mac pdu包含的数据包个数基于该第i个第一mac pdu的大小和该
数据包预设大小确定。
[0397]
可选的,第i个第一mac pdu包含的最后一个数据包的大小为:
[0398][0399]
其中,表示该第i个第一mac pdu包含的最后一个数据包的大小,tbsi表示该第i个第一mac pdu的大小,ni表示该第i个第一mac pdu包含的数据包个数,l表示该数据包预设大小;
[0400]
第i个第一mac pdu包含的数据包个数ni为:
[0401][0402]
可选的,上述p个第一mac pdu中第i个第一mac pdu包含的最后一个数据包的大小基于该第i个第一mac pdu的大小,该第i个第一mac pdu包含的数据包个数,数据包预设大小,以及数据包的循环冗余校验crc码的预设大小确定。该第i个第一mac pdu包含的数据包个数基于该第i个第一mac pdu的大小,该数据包预设大小,以及数据包的crc码的该预设大小确定。该p个第一mac pdu还包含每个数据包分别进行crc而得到的该预设大小的crc码,一个数据包进行crc而得到的该预设大小的crc码位于该数据包的末尾比特后。
[0403]
可选的,上述第i个第一mac pdu包含的最后一个数据包的大小为:
[0404][0405]
其中,表示该第i个第一mac pdu包含的最后一个数据包的大小,tbsi表示该第i个第一mac pdu的大小,ni表示该第i个第一mac pdu包含的数据包个数,l表示该数据包预设大小,r表示数据包的crc码的该预设大小;
[0406]
该第i个第一mac pdu包含的数据包个数ni为:
[0407][0408]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小基于该p个第一mac pdu中第i个第一mac pdu包含的原数据包个数、数据包预设大小、预设包头大小、以及该第i个第一mac pdu包含的最后一个数据包的大小确定。该第i个第一mac pdu包含的原数据包个数基于该第i个第一mac pdu包含的数据包个数和该预设规则确定。
[0409]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小为:
[0410][0411]
其中,yi表示该第i个第二mac pdu的大小,表示该第i个第一mac pdu包含的原数据包个数,h表示该预设包头大小,表示该第i个第一mac pdu包含的最后一个数据包的大小。
[0412]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小基于该p个第一mac pdu中第i个第一mac pdu包含的原数据包个数、数据包预设大小、预设包头大小、该第i个第一mac pdu包含的最后一个数据包的大小、以及数据包的crc码的预设大小确定。该第i个第一mac pdu包含的原数据包个数基于该第i个第一mac pdu包含的数据包个数和该预设规则确
定。该p个第一mac pdu还包含每个数据包分别进行crc而得到的该预设大小的crc码,一个数据包进行crc而得到的该预设大小的crc码位于该数据包的末尾比特后。
[0413]
可选的,上述p个第二mac pdu中第i个第二mac pdu的大小为:
[0414][0415]
其中,yi表示该第i个第二mac pdu的大小,表示该第i个第一mac pdu包含的原数据包个数,h表示该预设包头大小,表示该第i个第一mac pdu包含的最后一个数据包的大小,r表示数据包的crc码的该预设大小。
[0416]
可选的,上述分割操作包括按照数据包预设大小与预设包头大小之差进行等大小分割。
[0417]
可选的,上述原数据包包头和上述编码包包头的大小等于预设包头大小。
[0418]
其中,上述生成模块11也可以称为处理模块,上述传输模块12也可以称为收发模块。
[0419]
应理解,该数据传输装置可对应执行前述任一实施例,并且该数据传输装置中的各个单元的上述操作或功能分别为了实现前述任一实施例中第一设备的相应操作,其技术效果参见前述任一实施例中的技术效果,为了简洁,在此不再赘述。
[0420]
参见图18,图18是本技术实施例提供的数据接收装置的结构示意图。该数据接收装置可以为第二设备或者可以设置于第二设备中的芯片或电路。如图18所示,该数据接收装置包括:获取模块21、译码模块22、以及合并模块23。
[0421]
获取模块21,用于获取p个传输块,该p个传输块上承载p个第一mac pdu,该p个第一mac pdu包含的k个第一数据包和q个第二数据包按照预设规则排列,该p个第一mac pdu中每个第一mac pdu包含整数个数据包且除最后一个数据包外其他数据包的大小相等;该k个第一数据包是k个原数据分别加包头而得到,该k个原数据是p个第二mac pdu分别执行分割操作而得到;该k个第一数据包中的n个第一数据包是该k个原数据中的n个原数据分别加包头而得到;该q个第二数据包中的m个第二数据包是对该n个原数据进行网络编码操作而生成;该第二mac pdu是无线链路控制层传输至媒体接入控制层的数据生成的mac pdu;该预设规则用于表示原数据包和编码包在该p个第一mac pdu中的位置;译码模块22,用于对该p个传输块进行译码操作,以得到n个原数据;合并模块23,用于将该n个原数据按照该预设规则进行合并,以得到一个或多个第二mac pdu。其中,p,k,q,n和m均为正整数,且k大于或等于n,q大于或等于m。该第一数据包是原数据包且第一数据包的包头为原数据包包头和编码包包头,该第二数据包是编码包且包括编码包包头。
[0422]
可选的,上述k与n相等,且q与m相等。也就是说,上述p个第一mac pdu总共包括n个原数据包和m个编码包。上述第一数据包的包头为原数据包包头。n和m均基于该p个第一mac pdu包含的数据包总数和编码码率确定。
[0423]
上述译码模块22包括确定单元221和译码单元222。确定单元221,用于当该p个传输块中存在循环冗余校验crc错误的传输块时,根据该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包。译码单元222,用于对该p个传输块中校验正确的数据包进行译码,获得n个原数据。
[0424]
可选的,上述k与n不相等,或q与m不相等。上述第一数据包的包头为编码包包头。上述n为预设的原数据包总个数,该m基于该n和编码码率确定。
[0425]
上述确定单元221,用于从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到;上述确定单元221,还用于当该p个传输块中存在crc错误的传输块时,根据该crc错误的传输块中cbcrc的校验结果,以及该crc错误的传输块中包含的数据包个数和每个数据包的大小,确定该crc错误的传输块中校验正确的数据包;上述译码单元222,用于对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据。
[0426]
可选的,上述p个第一mac pdu还包含每个数据包分别进行crc而得到的预设大小(或固定比特)的crc码,一个数据包进行crc而得到的该预设大小的crc码位于该数据包的末尾比特后。
[0427]
上述译码模块22还包括循环冗余校验单元223。上述确定单元221,用于从该p个传输块中确定出n个第一数据包和m个第二数据包,该m个第二数据包是该n个第一数据包包含的n个原数据进行网络编码操作而得到;上述循环冗余校验单元223,用于当该p个传输块中存在循环冗余校验crc错误的传输块时,对该crc错误的传输块中的每个数据包进行crc得到校验结果;上述确定单元221,还用于根据该校验结果和该数据包的末尾比特后的crc码,确定该crc错误的传输块中校验正确的数据包;上述译码单元222,用于对该n个第一数据包和m个第二数据包中校验正确的数据包进行译码,获得n个原数据。
[0428]
其中,上述获取模块21、上述译码模块22、以及上述合并模块23可以集成为一个模块,例如处理模块。上述获取模块21可以包括收发单元,用于收发数据包或信息等。
[0429]
应理解,该数据接收装置可对应执行前述任一实施例,并且该数据接收装置中的各个单元的上述操作或功能分别为了实现前述任一实施例中第二设备的相应操作,其技术效果参见前述任一实施例中的技术效果,为了简洁,在此不再赘述。
[0430]
可选的,以上各实施例的生成模块可以对应于编码器,译码模块可以对应于译码器。编码器或译码器可以由硬件电路或软件来实现。除生成模块和译码模块,以及和收发单元对应的模块之外的模块的功能可以由处理器来实现。
[0431]
参见图19,图19是本技术实施例提供的通信装置的结构示意图。如图19所示,本技术实施例提供的通信装置1000可用于实现上述方法实施例中描述的方法,可以参见上述方法实施例中的说明。该通信装置1000可以是前述第一设备和前述第二设备中的任意一种,或者,该通信装置1000可以是前述图17所示的数据传输装置和前述图18所示的数据接收装置中的任意一种。
[0432]
通信装置1000包括一个或多个处理器1001。处理器1001可以是通用处理器或者专用处理器等。例如可以是基带处理器、或中央处理器。基带处理器可以用于对通信协议以及通信数据进行处理,中央处理器可以用于对装置(如,通信设备、基站或芯片等)进行控制,执行软件程序,处理软件程序的数据。该装置可以包括收发单元,用以实现信号的输入(接收)和输出(发送)。例如,装置可以为芯片,该收发单元可以是芯片的输入和/或输出电路,或者通信接口。该芯片可以用于通信设备或接入网设备(比如基站)。又如,装置可以为通信设备(比如ue)或接入网设备(比如基站),该收发单元可以为收发器,射频芯片等。
[0433]
通信装置1000包括一个或多个处理器1001,该一个或多个处理器1001可实现前述
任一实施例中第一设备、或第二设备的方法。该处理器1001可以实现图17中生成模块11的功能,或者,实现图18中译码模块22和合并模块23的功能。可选的,该处理器1001还可以进一步实现图17中传输模块12的功能,或,实现图18中获取模块的功能。
[0434]
可选的,处理器1001除了实现前述任一实施例的方法,还可以实现其他功能。
[0435]
可选的,一种设计中,处理器1001也可以包括指令1003,所述指令可以在所述处理器上被运行,使得通信装置1000执行上述任一方法实施例中描述的方法。
[0436]
在又一种可能的设计中,通信装置1000也可以包括电路,所述电路可以实现前述任一方法实施例中第一设备或第二设备的功能。
[0437]
在又一种可能的设计中,通信装置1000中可以包括一个或多个存储器1002,其上存有指令1004,所述指令可在所述处理器上被运行,使得通信装置1000执行上述任一方法实施例中描述的方法。可选的,所述存储器中还可以存储有数据。可选的处理器中也可以存储指令和/或数据。例如,所述一个或多个存储器1002可以存储上述实施例中所描述的第一数据包,或者上述实施例中所涉及的其他信息。所述处理器和存储器可以单独设置,也可以集成在一起。
[0438]
在又一种可能的设计中,通信装置1000还可以包括收发单元1005以及天线1006,或者,包括通信接口。收发单元1005可以称为收发机、收发电路、或者收发器等,用于通过天线1006实现装置的收发功能。所述通信接口(图中未示出),可以用于核心网设备和接入网设备,或是,接入网设备和接入网设备之间的通信。可选的,该通信接口可以为有线通信的接口,比如光纤通信的接口。可选的,通信接口可以实现图17中传输模块12的功能,或者图18中获取模块21的功能。
[0439]
处理器1001可以称为处理单元,对装置(比如通信设备)进行控制。
[0440]
应理解,在本技术实施例中的处理器可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0441]
还应理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random access memory,ram)可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0442]
上述实施例,可以全部或部分地通过软件、硬件(如电路)、固件或其他任意组合来
实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线,例如光纤,或是无线,例如红外、无线、微波等,方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘。
[0443]
本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第一设备的方法步骤;或者当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第二设备的方法步骤。
[0444]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有程序指令,当其在计算机上运行时,使得该计算机执行前述实施例所描述的第一设备的方法步骤;或者当该计算机程序代码在计算机上运行时,使得该计算机执行前述实施例所描述的第二设备的方法步骤。
[0445]
本技术实施例还提供一种装置,该装置可以为芯片。该芯片包括处理器。该处理器用于读取并执行存储器中存储的计算机程序,以执行前述任一实施例的任意可能的实现方式中的方法。可选的,该芯片还包括存储器,该存储器与该处理器通过电路或电线连接。进一步可选的,该芯片还包括通信接口,该处理器与该通信接口连接。该通信接口用于接收待处理的数据和/或信号,该处理器从该通信接口获取该数据和/或信号,并对该数据和/或信号进行处理,并通过该通信接口输出处理结果。该通信接口可以是输入输出接口。
[0446]
可选的,上述的处理器与存储器可以是物理上相互独立的单元,或者,存储器也可以和处理器集成在一起。
[0447]
本技术的另一实施例中,还提供一种通信系统,该通信系统包括第一设备和第二设备。该第一设备和该第二设备可以执行前述任一实施例中的方法。
[0448]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
[0449]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1