一种卷积码的数据发送方法及装置与流程

文档序号:12133395阅读:705来源:国知局
一种卷积码的数据发送方法及装置与流程

本发明涉及数字通信领域,尤其涉及一种卷积码的数据发送方法及装置。



背景技术:

图1为现有数字通信系统的示意图。如图1所示,在数字通信系统中,发射端通常包括信源、信源编码器、信道编码器和调制器等部分,接收端通常包括解调器、信道译码器、信源译码器和信宿。信道编码器用于给信息比特按照一定的规则引入冗余信息,以便接收端信道译码器能够在一定程度上纠正信息在信道上传输时发生的误码。

目前,在诸多信道编码技术中,卷积码是广泛被应用的前向纠错编码之一。在中短码长时卷积码的纠错性能优越,而且编译码器的结构简单,因此卷积码通常被用于某些中低带宽的无线通信系统(例如,全球移动通信系统(GSM,Global System for Mobile Communication)、全球微波互联接入(Wimax,Worldwide Interoperability for Microwave Access)系统)的数据信息或者宽带无线通信系统(例如,长期演进(LTE,Long Term Evolution)系统)的控制信息的编码。此外,由于卷积码的硬件成本较低,固定无线宽带系统(例如,无线保真(WIFI,Wireless-Fidelity)系统)中也使用卷积码作为数据信息的编码方式。

卷积码通常用码率、约束长度和生成多项式来描述。在卷积码编码器中,每个输入比特都经过了移位寄存器,从而由编码器产生的输出比特的数目对应于输入比特的数目以及编码器的码率。卷积码编码的一种方法是通过用零来初始化每个移位寄存器(例如强制复位到零状态)以使用“尾比特(tail bit)”刷新编码器,以及在输入数据比特的末端处添加尾比特作为尾部,但这样会这引起帧长度的增加,从而降低实际的传输码率。为了不降低码率,可以采 用咬尾卷积码,咬尾卷积码的移位寄存器使用输入数据的最后几个比特进行初始化,这样编码器仍然保证了移位寄存器的开始和结束状态是相同的。LTE等系统中采用的卷积码就是咬尾卷积码。

图2为LTE系统中采用的卷积码编码器的结构示意图。如图2所示,编码器的移位寄存器的初始值设置为输入数据最后的6个信息比特对应的值,使得移位寄存器的初始和最终状态相同。图2所示为码率为1/3的咬尾卷积码编码器,有一个输入ck,三个输出端口对应的生成多项式如下:G0=133(八进制(octal))、G1=171(octal)、G2=165(octal)。

在通常的数字通信系统中,在设计编码调制方案时,通常设置不同阶数的调制方式(如正交相移键控(QPSK,Quadrature Phase Shift Keyin)、16正交幅度调制(QAM,Quadrature Amplitude Modulation)和64QAM等)和不同的码率(Rate)(如1/2、2/3、3/4和5/6等)。系统调度时按照信道质量和业务需求对每个突发安排一种特定的编码调制方式。为了取得更好的链路适配效果,每种码在变换码率的时候最好能做到比较小的粒度。

对于数据信息的编码来说,通过对低码率的母码进行删余(puncture)来得到更高码率的编码,该方法被归纳为速率匹配(RM,Rate Matching)。对于LTE等现代通信系统来说,系统还需要通过速率匹配支持混合自动重传请求(HARQ,Hybrid Automatic Repeat reQuest)过程,然而,LTE的HARQ只针对采用了Turbo码编码的数据信息,而采用卷积码编码的控制信息则不支持HARQ功能。

混合自动重传请求(HARQ)是一种数字通信系统中极其重要的链路自适应技术。接收端对其接收的HARQ数据包进行译码,若译码正确则反馈确认(ACK,Acknowledgement)信号给发送端,通知其发送新的HARQ数据包;若译码失败则反馈未确认(NAK,Negative Acknowledgment)信号给发送端,请求发送端重新发送HARQ数据包。接收端通过对多次重传的数据包进行递增冗余(IR,Increasing Redundancy)或Chase合并译码,可以提高其译码成功概率,实现链路传输的高可靠性要求。

随着物联网等新型应用的蓬勃发展,在200K左右的窄带带宽上,开发基于LTE标准的小数据量的无线通信技术逐渐成为了热点需求之一。如果 将卷积码移植到窄带LTE系统的数据信道中,用于替代昂贵的Turbo编码,可以起到降低物联网设备的成本和节省能耗的作用。然而,目前的LTE标准并不支持卷积码的HARQ。其他的一些通信系统,例如Wimax系统,虽然支持卷积码的HARQ,但是,其速率匹配都是采用几种固定删余图样的打孔方式,只能产生1/2,2/3,3/4,5/6等固定码率的HARQ子包,速率匹配的方式不够灵活。

此外,为了增强窄带物联网系统的覆盖,还可以考虑通过对信息数据编码后再进行多次重复传输,这样可以增强接收信号。与HARQ的不同之处是,多次重复传输不需要接收端反馈ACK或NAK信号;相同之处是接收端同样也要进行合并译码。如何合理选择每次传输的数据包,使得接收端合并后具有更灵活的码率及更好的性能,这是和HARQ场景一样需要解决的问题。



技术实现要素:

为了解决上述技术问题,本发明提供一种卷积码的数据发送方法及装置,能够产生码率灵活的卷积码待传输数据包。

为了达到上述技术目的,本发明提供一种卷积码的数据发送方法,包括:对输入信息块的数据比特进行卷积码编码,并将编码后的数据比特组成循环缓存区;确定在所述循环缓存区中读取组成待传输数据包的数据比特的起始位置;从所述起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成待传输数据包,并发送所述待传输数据包。

本发明还提供一种卷积码的数据发送装置,包括:编码缓存模块,用于对输入信息块的数据比特进行卷积码编码,并将编码后的数据比特组成循环缓存区;起始位置确定模块,用于确定在所述循环缓存区中读取组成待传输数据包的数据比特的起始位置;数据读取发送模块,用于从所述起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成待传输数据包,并发送所述待传输数据包。

在本发明中,对输入信息块的数据比特进行卷积码编码,并将编码后的数据比特组成循环缓存区;确定在循环缓存区中读取组成待传输数据包的数 据比特的起始位置;从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成待传输数据包,并发送待传输数据包。如此,本发明能够产生码率灵活的卷积码待传输数据包,解决了现有技术中如何合理选择每次传输的数据包以使得接收端合并后具有更灵活的码率及更好的性能的问题。

在本发明实施例中,对输入信息块的数据比特进行卷积码编码,输出r个校验比特流,并将r个校验比特流分别输入到大小相等的子块交织器,根据给定的重排向量,分别对输入到各个子块交织器的比特流进行列间重排,并将重排后的数据比特组成循环缓存区;确定在循环缓存区中读取待传输数据包的数据比特的起始位置;从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成待传输数据包,并发送待传输数据包。如此,本发明实施例基于循环缓存的速率匹配,产生码率灵活的卷积码待传输包,使得卷积码的数据重传达到最优的重传效果,特别适用于兼容LTE技术的窄带通信场景。

附图说明

图1为现有数字通信系统的示意图;

图2为LTE系统中采用的卷积码编码器的结构示意图;

图3为本发明实施例提供的卷积码的数据发送方法的流程图;

图4为本发明实施例一中确定的待传输数据包起始位置的示意图;

图5为本发明实施例二中确定的待传输数据包起始位置的示意图;

图6为本发明实施例三中确定的待传输数据包起始位置的示意图;

图7为本发明实施例四中确定的待传输数据包起始位置的示意图;

图8为本发明一实施例提供的卷积码的数据发送装置的示意图。

具体实施方式

以下结合附图对本发明的实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本发明,并不用于限定本发明。

图3为本发明实施例提供的卷积码的数据发送方法的流程图。如图3所示,本发明实施例提供的卷积码的数据发送方法包括以下步骤:

步骤11:对输入信息块的数据比特进行卷积码编码,并将编码后的数据比特组成循环缓存区。

于此,步骤11包括:

对输入信息块的数据比特进行卷积码编码,输出r个校验比特流,其中,r为大于或等于2的整数;

将卷积码编码输出的r个校验比特流输入到大小相等的子块交织器;

根据给定的重排向量,分别对输入到各个子块交织器的校验比特流进行列间重排。

进一步地,步骤11还包括:对重排后的t个校验比特流进行比特交错,其中,t为正整数,且2≤t≤r。其中,所述对重排后的t个校验比特流进行比特交错包括:对重排后的t个校验比特流中的数据比特,按照先后顺序交替排列。

步骤12:确定在循环缓存区中读取组成当前待传输数据包的数据比特的起始位置。

于此,步骤12包括:

根据欲组成的待传输数据包对应的冗余版本取值,确定在循环缓存区中读取组成待传输数据包的数据比特的起始位置;或者,

根据已发送的数据包,确定在循环缓存区中读取组成当前待传输数据包的数据比特的起始位置;或者,

根据待传输数据包对应的传输次序,确定在循环缓存区中读取当前待传输数据包的数据比特的起始位置。

于一实施例中,根据欲组成的待传输数据包对应的冗余版本取值,确定在循环缓存区中读取组成待传输数据包的数据比特的起始位置包括:

设待传输数据包对应的冗余版本的取值有Nrv种,则所述起始位置

其中,Rsubblock为子块交织器的行数,Ncb为所述循环缓存区的大小,Nrv表示冗余版本取值的数目,Nrv为正整数,rvidx表示冗余版本取值,rvidx在集合{0,1,...Nrv-1}中取值,Operation(·)表示取整运算,运算方法是向上取整、向下取整或舍入取整,A为一个取值为正整数的常数。

其中,第一次传输数据包对应的冗余版本取值为rvidx=0。

进一步地,第n次传输数据包对应的冗余版本取值为rvidx=mod(n-1,Nrv),其中,n为正整数,mod(·)表示求余运算。

于一实施例中,根据已发送的数据包,确定在循环缓存区中读取组成当前待传输数据包的数据比特的起始位置包括:

设当前待传输数据包是第n次传输的数据包,前面n-1次已发送的数据包的长度为Ei,则当前待传输数据包的数据比特的起始位置k0=Rsubblock·mod(Cn-1,(r·Csubblock)),

其中,Rsubblock为子块交织器的行数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目,mod(·)表示求余运算,Cn-1表示前面n-1次已发送的数据包对应着的循环缓存区的列数,或者, 其中,n、i为正整数,1≤i≤n-1,表示向上取整运算。

于此,在循环缓存区中读取组成第一次传输的数据包的数据比特的起始位置为所述循环缓存区的第一个有效比特。

于一实施例中,根据当前待传输数据包对应的传输次序,确定在循环缓存区中读取当前待传输数据包的数据比特的起始位置包括:

设当前待传输数据包是第n次传输的数据包,若n为奇数(即,mod(n,2)=1),则当前待传输数据包的起始位置为循环缓存区的第一个有效比特;若n为偶数(即,mod(n,2)=0),则当前待传输数据包的起始位置为循环缓存区的中心列的第一个有效比特,其中,n为正整数,mod(·)表示求余运算。

于一实施例中,根据当前待传输数据包对应的传输次序,确定在循环缓 存区中读取当前待传输数据包的数据比特的起始位置包括:

设当前待传输数据包是第n次传输的数据包,循环缓存区的列索引为[0,1,2,…,r·Csubblock-1],其中,r·Csubblock表示循环缓存区的列数,则当n为奇数时,当前待传输数据包的起始位置为循环缓存区第一列的第一个有效比特;当n为偶数时,当前待传输数据包的起始位置为循环缓冲区第 列的第一个有效比特;其中,B是一个取值为正整数的常数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目,operation(·)表示取整运算,运算方法是向上取整、向下取整或舍入取整。

步骤13:从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成当前待传输数据包,并发送所述待传输数据包。

以下通过多个具体实施例对本发明进行说明。

实施例一

本实施例提供的卷积码的数据发送方法包括以下步骤:

步骤A1:对输入信息块的数据比特进行卷积码编码;

其中,步骤A1中的编码是具有r个编码分支的卷积码或者咬尾卷积码,并且每个编码分支对应一个校验比特流,因此,共有r个输出的校验比特流;

步骤A2:将编码后的数据比特组成循环缓存区;

具体而言,步骤A2包括以下子步骤:对卷积码编码后的数据比特进行比特分离,输出第一校验比特流第二校验比特流…、第r个校验比特流其中,r为大于或等于2的整数;将分离输出的第一校验比特流第二校验比特流…、第r个校验比特流分别输入到大小为KΠ=(Rsubblock×Csubblock)的三个子块交织器中;对输入到子块交织器中的数据比特流分别进行列间重排,重排向量是给定的已知向量,沿着列的次序逐列自上而下地分别从各子块交织器中读出;对其中t个比特流进行比特交错,t为正整数,且2≤t≤r,其中,交错方法为对t个比特流中的比特,按照先后顺序交替排列;特别地,当卷积码编码输出的校验比特流的数目r=3,且对其中第二校验比特流和第三校验比特流交错时,交错方法如下:其中,分别为重排后的第一、第二 和第三校验比特流中的数据比特,为重排后的第二校验比特流进行比特交错后的数据比特,为重排后的第三校验比特流进行比特交错后的数据比特,其中,k=0,…,KΠ-1;需要指出的是,比特交错的方法可以不局限于此;

其中,子块交织器遵循行入列出的原则,其列数Csubblock为一特定常数,其行数Rsubblock通过D≤(Rsubblock×Csubblock)确定,其中,D为校验比特流的长度;如果(Rsubblock×Csubblock)>D,则需要对各数据比特流添加ND个“虚比特”,其中,ND=(Rsubblock×Csubblock-D),添加虚比特的位置可以在各数据比特流的最前面,但也不局限于此;

需要注意的是:为了简化硬件实现,将子块交织器的列数固定,行数随着交织长度的改变而改变,因此,循环缓冲器可以看作一个“R行×C列”的行列缓冲器,其中,循环缓冲器的列数C等于各个子块交织器的列数之和,即C=r·Csubblock,其中,Csubblock表示子块交织器的列数,r为编码输出的检验比特流数目;另外,循环缓冲器可以并不具有真实的物理实体,而是通过逻辑寻址操作实现,因此也可以看作是一个“R行×C列”的虚拟缓冲器;对于任何期望的码率(Rate),循环缓冲速率匹配的比特选择是从缓冲器的某处开始点顺序读出所需长度的比特流,作为速率匹配的输出;

步骤A3:根据欲组成的待传输数据包对应的冗余版本取值,确定在循环缓存区中读取当次待传输数据包的数据比特的起始位置k0

考虑到硬件实现的便利,被选择用于传输的比特最好从虚拟缓冲器的某一列开始位置被读出来,而不是任意一个比特位置;

具体而言,设数据包对应的冗余版本的取值有Nrv种,其中,Nrv为正整数;则起始位置其中Rsubblock为子块交织器的行数,Ncb为所述卷积码循环缓存区的大小,Nrv表示冗余版本取值的数目,rvidx表示冗余版本取值,rvidx在集合{0,1,...Nrv-1}中取值,Operation(·)表示取整运算,运算方法是向上取整、向下取整或舍入取整,A为一个取值为正整数的常数;

其中,当Nrv=3时,待传输数据包在循环缓存区中的位置如图4所示;

步骤A4:从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成当前待传输数据包;

具体而言,从当前的冗余版本取值对应的起始位置开始从有限长度数据缓存中沿着列的顺序逐列读取L个数据比特(L为当前待传输数据包的大小)组成当前的待传输数据包,在读取比特的过程中如果遇到“虚比特”,则跳过不读,直到读出L个有效比特为止;根据循环缓存的特点,如果达到循环缓存的末尾,则可以绕到循环缓存的开始位置继续读取数据;其中,第一次传输的数据包从循环缓存区的第一个有效比特开始读取,第一次传输数据包对应的冗余版本取值为rvidx=0;第n次传输数据包对应的冗余版本取值为rvidx=mod(n-1,Nrv),其中,n为正整数,mod(·)表示求余运算;

步骤A5:发送当前待传输数据包到后续处理模块。

实施例二

本实施例提供的卷积码的数据发送方法包括以下步骤:

步骤B1:对输入信息块的数据比特进行卷积码编码;

其中,步骤B1中的编码是具有r个编码分支的卷积码或者咬尾卷积码,并且每个编码分支对应一个校验比特流,因此,共有r个输出的校验比特流;

步骤B2:将编码后的数据比特组成循环缓存区;

具体而言,步骤B2包括以下子步骤:对卷积码编码后的数据比特进行比特分离,输出第一校验比特流第二校验比特流…、第r个校验比特流其中,r为大于或等于2的整数;将分离输出的第一校验比特流第二校验比特流…、第r个校验比特流分别输入到大小为KΠ=(Rsubblock×Csubblock)的三个子块交织器中;对输入到子块交织器中的数据比特流分别进行列间重排,重排向量是给定的已知向量,沿着列的次序逐列自上而下地分别从各子块交织器中读出;对其中t个比特流进行比特交错,t为正整数,且2≤t≤r,其中,交错方法为对t个比特流中的比特,按照先后顺序交替排列;特别地,当卷积码编码输出的校验比特流的数目r=3,且对其中第二校验比特流和第三校验比特流交错时,交错方法如下:其中,分别为重排后的第一、第二 和第三校验比特流中的数据比特,为重排后的第二校验比特流进行比特交错后的数据比特,为重排后的第三校验比特流进行比特交错后的数据比特,其中,k=0,…,KΠ-1;需要指出的是,比特交错的方法可以不局限于此;

其中,子块交织器遵循行入列出的原则,其列数Csubblock为一特定常数,其行数Rsubblock通过D≤(Rsubblock×Csubblock)确定,其中,D为校验比特流的长度;如果(Rsubblock×Csubblock)>D,则需要对各数据比特流添加ND个“虚比特”,其中,ND=(Rsubblock×Csubblock-D),添加虚比特的位置可以在各数据比特流的最前面,但也不局限于此;

需要注意的是:为了简化硬件实现,将子块交织器的列数固定,行数随着交织长度的改变而改变,因此,循环缓冲器可以看作一个“R行×C列”的行列缓冲器,其中,循环缓冲器的列数C等于各个子块交织器的列数之和,即C=r·Csubblock,其中,Csubblock表示子块交织器的列数,r为编码输出的检验比特流数目;另外,循环缓冲器可以并不具有真实的物理实体,而是通过逻辑寻址操作实现,因此也可以看作是一个“R行×C列”的虚拟缓冲器;对于任何期望的码率(Rate),循环缓冲速率匹配的比特选择是从缓冲器的某处开始点顺序读出所需长度的比特流,作为速率匹配的输出;

步骤B3:根据已发送的数据包,确定在循环缓存区中读取组成待传输数据包的数据比特的起始位置k0

在步骤B3中,待传输数据包所选择的码字比特,是紧接着前面的已发送数据包的;考虑到硬件实现的便利,被选择用于传输的比特最好从虚拟缓冲器的某一列开始位置被读出来,而不是任意一个比特位置;

具体而言,由于循环缓冲器又可以看作一个“Rsubblock×(r·Csubblock)”的“虚拟循环缓冲器”,例如可以看作是一个3*32列的虚拟缓冲器;如果前面的数据包传输到第i列,即使这一列还没有被传输完,那么当前的待传输数据包就从第i+1列开始读取码字比特,如果到达缓冲器的末尾,就绕到缓冲器的开始位置继续读数据,直到完成读取所需比特为止,如图5所示;

设当前待传输数据包是第n次传输的数据包,前面n-1次已发送的数据包的长度为Ei,则当前待传输数据包的数据比特的起始位置 k0=Rsubblock·mod(Cn-1,(r·Csubblock)),

其中,Rsubblock为子块交织器的行数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目,mod(·)表示求余运算,Cn-1表示前面n-1次已发送的数据包对应着的循环缓存区的列数,或者, 其中,n、i为正整数,1≤i≤n-1,其中,表示向上取整运算;

步骤B4:从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成当前待传输数据包;

具体而言,步骤B4包括:从当前待传输数据包对应的起始位置开始从有限长度数据缓存中沿着列的顺序逐列读取L个比特(L为当前待传输数据包的大小)组成当前的待传输数据包,在读取比特的过程中如果遇到“虚比特”,则跳过不读,直到读出L个有效比特为止;根据循环缓存的特点,如果达到循环缓存的末尾,则可以绕到循环缓存的开始位置继续读取数据;其中,第一次传输的数据包从循环缓存区的第一个有效比特开始读取;

步骤B5:发送当前待传输数据包到后续处理模块。

实施例三

本实施例提供的卷积码的数据发送方法包括以下步骤:

步骤C1:对输入信息块的数据比特进行卷积码编码;

其中,步骤C1中的编码是具有r个编码分支的卷积码或者咬尾卷积码,并且每个编码分支对应一个校验比特流,因此,共有r个输出的校验比特流;

步骤C2:将编码后的数据比特组成循环缓存区;

具体而言,步骤C2包括以下子步骤:对卷积编码后的数据比特进行比特分离,输出第一校验比特流第二校验比特流…、第r个校验比特流其中,r为大于或等于2的整数;将分离输出的第一校验比特流 第二校验比特流…、第r个校验比特流分别输入到大小为KΠ=(Rsubblock×Csubblock)的三个子块交织器中;对输入到子块交织器中的数据比特流分别进行列间重排,重排向量是给定的已知向量,沿着列的次序逐列自 上而下地分别从各子块交织器中读出;对其中t个比特流进行比特交错,t为正整数,且2≤t≤r,其中,交错方法为对t个比特流中的比特,按照先后顺序交替排列;特别地,当卷积码编码输出的校验比特流的数目r=3,且对其中第二校验比特流和第三校验比特流交错时,交错方法如下:其中,分别为重排后的第一、第二和第三校验比特流中的数据比特,为重排后的第二校验比特流进行比特交错后的数据比特,为重排后的第三校验比特流进行比特交错后的数据比特,其中,k=0,…,KΠ-1;需要指出的是,比特交错的方法可以不局限于此;

其中,子块交织器遵循行入列出的原则,其列数Csubblock为一特定常数,其行数Rsubblock通过D≤(Rsubblock×Csubblock)确定,其中,D为校验比特流的长度;如果(Rsubblock×Csubblock)>D,则需要对各数据比特流添加ND个“虚比特”,其中,ND=(Rsubblock×Csubblock-D),添加虚比特的位置可以在各数据比特流的最前面,但也不局限于此;

需要注意的是:为了简化硬件实现,将子块交织器的列数固定,行数随着交织长度的改变而改变,因此,循环缓冲器可以看作一个“R行×C列”的行列缓冲器,其中,循环缓冲器的列数C等于各个子块交织器的列数之和,即C=r·Csubblock,其中,Csubblock表示子块交织器的列数,r为编码输出的检验比特流数目;另外,循环缓冲器可以并不具有真实的物理实体,而是通过逻辑寻址操作实现,因此也可以看作是一个“R行×C列”的虚拟缓冲器;对于任何期望的码率(Rate),循环缓冲速率匹配的比特选择是从缓冲器的某处开始点顺序读出所需长度的比特流,作为速率匹配的输出;

步骤C3:根据已发送的数据包,确定在循环缓存区中读取组成待传输数据包的数据比特的起始位置k0

在步骤C3中,待传输数据包所选择的码字比特,是紧接着前面的已发送数据包的,与前一次已发送数据包有少量的重叠;考虑到硬件实现的便利,被选择用于传输的比特最好从虚拟缓冲器的某一列开始位置被读出来,而不是任意一个比特位置;

具体而言,由于循环缓冲器又可以看作一个“Rsubblock×(r·Csubblock)”的“虚 拟循环缓冲器”,例如可以看作是一个3*32列的虚拟缓冲器;如果前面的数据包传输到第i列,即使这一列还没有被传输完,那么当前的待传输数据包就从第i+1列开始读取码字比特;如果到达缓冲器的末尾,就绕到缓冲器的开始位置继续读数据,直到完成读取所需比特为止,如图6所示;

设当前待传输数据包是第n次传输的数据包,前面n-1次已发送数据包的长度为Ei,则当前第n次开始读取的比特的起始位置k0=Rsubblock·mod(Cn-1,(r·Csubblock)),

其中,Rsubblock为子块交织器的行数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目,mod(·)表示求余运算,Cn-1表示前面n-1次已发送的数据包对应着的循环缓存区的列数,且其中,n、i为正整数,1≤i≤n-1,表示向上取整运算;

步骤C4:从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成当前待传输数据包;

具体而言,步骤C4包括:从当前待传输数据包对应的起始位置开始从有限长度数据缓存中沿着列的顺序逐列读取L个比特(L为当前待传输数据包的大小)组成当前的待传输数据包,在读取比特的过程中如果遇到“虚比特”,则跳过不读,直到读出L个有效比特为止;根据循环缓存的特点,如果达到循环缓存的末尾,则可以绕到循环缓存的开始位置继续读取数据;其中,第一次传输的数据包从循环缓存区的第一个有效比特开始读取;

步骤C5:发送当前待传输数据包到后续处理模块。

实施例四

本实施例提供的卷积码的数据发送方法包括以下步骤:

步骤D1:对输入信息块的数据比特进行卷积码编码;

其中,步骤D1中的编码是具有r个编码分支的卷积码或者咬尾卷积码,并且每个编码分支对应一个校验比特流,因此,共有r个输出的校验比特流;

步骤D2:将编码后的数据比特组成循环缓存区;

具体而言,步骤D2包括以下子步骤:对卷积编码后的数据比特进行比 特分离,输出第一校验比特流第二校验比特流…、第r个校验比特流其中,r为大于或等于2的整数;将分离输出的第一校验比特流 第二校验比特流…、第r个校验比特流分别输入到大小为的三个子块交织器中;对输入到子块交织器中的数据比特流分别进行列间重排,重排向量是给定的已知向量,沿着列的次序逐列自上而下地分别从各子块交织器中读出;对其中t个比特流进行比特交错,t为正整数,且2≤t≤r,其中,交错方法为对t个比特流中的比特,按照先后顺序交替排列;特别地,当卷积码编码输出的校验比特流的数目r=3,且对其中第二校验比特流和第三校验比特流交错时,交错方法如下:其中,分别为重排后的第一、第二和第三校验比特流中的数据比特,为重排后的第二校验比特流进行比特交错后的数据比特,为重排后的第三校验比特流进行比特交错后的数据比特,其中,k=0,…,KΠ-1;需要指出的是,比特交错的方法可以不局限于此;

其中,子块交织器遵循行入列出的原则,其列数Csubblock为一特定常数,其行数Rsubblock通过D≤(Rsubblock×Csubblock)确定,其中,D为校验比特流的长度;如果(Rsubblock×Csubblock)>D,则需要对各数据比特流添加ND个“虚比特”,其中,ND=(Rsubblock×Csubblock-D),添加虚比特的位置可以在各数据比特流的最前面,但也不局限于此;

需要注意的是:为了简化硬件实现,将子块交织器的列数固定,行数随着交织长度的改变而改变,因此,循环缓冲器可以看作一个“R行×C列”的行列缓冲器,其中,循环缓冲器的列数C等于各个子块交织器的列数之和,即C=r·Csubblock,其中,Csubblock表示子块交织器的列数,r为编码输出的检验比特流数目;另外,循环缓冲器可以并不具有真实的物理实体,而是通过逻辑寻址操作实现,因此也可以看作是一个“R行×C列”的虚拟缓冲器;对于任何期望的码率(Rate),循环缓冲速率匹配的比特选择是从缓冲器的某处开始点顺序读出所需长度的比特流,作为速率匹配的输出;

步骤D3:根据当前待传输数据包对应的传输次序,确定在循环缓存区中读取所述当前待传输数据包的数据比特的起始位置;

在步骤D3中,考虑到硬件实现的便利,被选择用于传输的比特最好从虚拟缓冲器的某一列开始位置被读出来,而不是任意一个比特位置;

具体而言,由于循环缓冲器又可以看作一个“Rsubblock×(r·Csubblock)”的“虚拟循环缓冲器”,如果到达缓冲器的末尾,就绕到缓冲器的开始位置继续读数据,直到完成读取所需比特为止,如图7所示;

设当前待传输数据包是第n次传输的数据包,若n为奇数(即,mod(n,2)=1),则当前待传输数据包的起始位置为循环缓存区的第一列的第1个有效比特;若n为偶数(即,mod(n,2)=0),则当前待传输数据包的起始位置为循环缓存区的中心列的第一个有效比特,其中n为正整数,mod(·)表示求余运算;

其中,设当前待传输数据包是第n次传输的数据包,循环缓存区的列索引为[0,1,2,…,r·Csubblock-1],其中,r·Csubblock表示循环缓存区的列数,则当n为奇数时,当前待传输数据包的起始位置为循环缓存区第一列的第一个有效比特;当n为偶数时,当前待传输数据包的起始位置为循环缓存区第 列的第一个有效比特;其中,B是一个取值为正整数的常数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目,operation(·)表示取整运算,运算方法是向上取整、向下取整或舍入取整;

步骤D4:从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成当前待传输数据包;

具体而言,步骤D4包括:从当前待传输数据包对应的起始位置开始从有限长度数据缓存中沿着列的顺序逐列读取L个比特(L为当前待传输数据包的大小)组成当前的待传输数据包,在读取比特的过程中如果遇到“虚比特”,则跳过不读,直到读出L个有效比特为止;根据循环缓存的特点,如果达到循环缓存的末尾,则可以绕到循环缓存的开始位置继续读取数据;其中,第一次传输的数据包从循环缓存区的第一个有效比特开始读取;

步骤D5:发送当前的待传输数据包到后续处理模块。

此外,本发明实施例还提供一种卷积码的数据发送装置,包括:编码缓存模块,用于对输入信息块的数据比特进行卷积码编码,并将编码后的数据 比特组成循环缓存区;起始位置确定模块,用于确定在循环缓存区中读取组成待传输数据包的数据比特的起始位置;数据读取发送模块,用于从起始位置开始,沿着列的顺序逐列读取特定长度的数据比特组成待传输数据包,并发送待传输数据包。

进一步地,编码缓存模块包括:

编码器,用于对输入信息块的数据比特进行卷积码编码,输出r个校验比特流,其中,r为大于或等于2的整数;

子块交织器,用于接收编码器输出的校验比特流;

重排单元,用于根据给定的重排向量,分别对输入到各个子块交织器的校验比特流进行列间重排。

进一步地,编码缓存模块还包括:比特交错单元,用于对重排后的t个校验比特流进行比特交错,其中,t为正整数,且2≤t≤r。

进一步地,起始位置确定模块,具体用于:

根据欲组成的待传输数据包对应的冗余版本取值,确定在所述循环缓存区中读取组成所述待传输数据包的数据比特的起始位置;或者,

根据已发送的数据包,确定在所述循环缓存区中读取组成所述待传输数据包的数据比特的起始位置;或者,

根据待传输数据包对应的传输次序,确定在所述循环缓存区中读取所述待传输数据包的数据比特的起始位置。

于一实施例中,所述起始位置确定模块,用于根据欲组成的待传输数据包对应的冗余版本取值,确定在所述循环缓存区中读取组成所述待传输数据包的数据比特的起始位置,包括:

设待传输数据包对应的冗余版本的取值有Nrv种,则所述起始位置

其中,Rsubblock为子块交织器的行数,Ncb为所述循环缓存区的大小,Nrv表示冗余版本取值的数目,Nrv为正整数,rvidx表示冗余版本取值,rvidx在集合{0,1,...Nrv-1}中取值,Operation(·)表示取整运算,运算方法是向上取整、向下 取整或舍入取整,A为一个取值为正整数的常数。

于一实施例中,所述起始位置确定模块,用于根据已发送的数据包,确定在所述循环缓存区中读取组成所述待传输数据包的数据比特的起始位置,包括:

设当前待传输数据包是第n次传输的数据包,前面n-1次已发送的数据包的长度为Ei,则当前待传输数据包的数据比特的起始位置k0=Rsubblock·mod(Cn-1,(r·Csubblock)),

其中,Rsubblock为子块交织器的行数,Csubblock为子块交织器的列数,r为输出比特流的数目,mod(·)表示求余运算,Cn-1表示前面n-1次已发送的数据包对应着的循环缓存区的列数,或者,其中,n、i为正整数,1≤i≤n-1,表示向上取整运算。

于一实施例中,所述起始位置确定模块,用于根据待传输数据包对应的传输次序,确定在所述循环缓存区中读取所述待传输数据包的数据比特的起始位置,包括:

设当前待传输数据包是第n次传输的数据包,若n为奇数,则所述当前待传输数据包的起始位置为循环缓存区的第一个有效比特;若n为偶数,则所述当前待传输数据包的起始位置为循环缓存区的中心列的第一个有效比特,其中,n为正整数。

于一实施例中,所述起始位置确定模块,用于根据待传输数据包对应的传输次序,确定在所述循环缓存区中读取所述待传输数据包的数据比特的起始位置,包括:

设当前待传输数据包是第n次传输的数据包,循环缓存区的列索引为[0,1,2,…,r·Csubblock-1],其中,r·Csubblock表示循环缓存区的列数,则当n为奇数时,当前待传输数据包的起始位置为循环缓存区第一列的第一个有效比特;当n为偶数时,当前待传输数据包的起始位置为循环缓存区第 列的第一个有效比特;其中,B是一个取值为正整数的常数,Csubblock为子块交织器的列数,r为卷积码编码输出比特流的数目, operation(·)表示取整运算,运算方法是向上取整、向下取整或舍入取整。

进一步地,起始位置确定模块,用于确定在循环缓存区中读取第一次传输的数据包的数据比特的起始位置为所述循环缓存区的第一个有效比特。

上述装置的具体处理流程同上述方法所述,故于此不再赘述。

图8为本发明一实施例提供的卷积码的数据发送装置的示意图。如图8所示,本实施例提供的卷积码的数据发送装置包括编码缓存模块、起始位置确定模块以及数据读取发送模块,其中,编码缓存模块包括编码器、子块交织器、重排单元以及比特交错单元。上述各模块/单元的具体处理流程同上所述,故于此不再赘述。于实际应用中,上述各模块/单元可以通过处理器执行存储在存储器中的程序/指令实现,然而,本发明对此并不限定,上述这些模块/单元的功能还可以通过固件/逻辑电路/集成电路实现。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

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