CN102624484B - 交织实现方法和设备 - Google Patents
交织实现方法和设备 Download PDFInfo
- Publication number
- CN102624484B CN102624484B CN201210054841.1A CN201210054841A CN102624484B CN 102624484 B CN102624484 B CN 102624484B CN 201210054841 A CN201210054841 A CN 201210054841A CN 102624484 B CN102624484 B CN 102624484B
- Authority
- CN
- China
- Prior art keywords
- data
- new
- chain
- sliding window
- interweaves
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供一种交织实现方法和设备。该方法包括将待交织处理的数据依次输入到每个交织链内;在每个交织链内,将输入数据写入写指针指示的存储位置;在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据;其中,所述写指针在数据写入后指向下一个数据写入位置,所述读指针在数据读出后指向下一个数据读出位置。本发明实施例可以实现交织器对两端设备的速率匹配。
Description
技术领域
本发明涉及通信技术,尤其涉及一种交织实现方法和设备。
背景技术
在现代通讯系统中,前向纠错编码器可以纠正一定范围的随机错误,但在一些突发性的连续噪声场景下,差错比特串的长度就很有可能超出前向纠错编码器的纠正范围。这时可以采用交织器,利用交织器将相继比特分散成非相继比特,使得较长的差错比特串变为较短的差错比特串,从而可以继续被前向纠错编码器纠正。
交织器有块交织器和卷积交织器两种。对于卷积交织器,卷积交织器的输入端将待处理的数据按顺序输入I个分支内进行延迟处理,I为分支的个数。每个分支的数据经过各自延迟的移位寄存器后再被读出,每个分支上的移位寄存器可以称为一条交织链。每条交织链的长度为nd(j)=floor((j*D)/I),其中,nd(j)为第j条交织链的长度,也就是第j条交织链上的延时时间,j=0,1,...,I-1,D为交织深度,floor((j*D)/I)表示对(j*D)/I进行向下取整,j*D表示j与D进行相乘运算。在每条交织链上对数据延迟处理后,按照计算得到的输出序列值(id值)读出每一条交织链的数据,其中第j条交织链对应的输出序列值id(j)=(j*D)%I。
现有技术中卷积交织处理时,每条交织链上的数据写入后延迟对应的时间后即被输出,并不能对交织器两端相邻的设备起到速率匹配的作用。
发明内容
本发明实施例是提供一种交织实现方法和设备,能够进行数据缓存,起到速率匹配的作用。
本发明实施例提供了一种交织实现方法,包括:
将待交织处理的数据依次输入到每个交织链内;
在每个交织链内,将输入数据写入写指针指示的存储位置;
在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据;
其中,所述写指针在数据写入后指向下一个数据写入位置,所述读指针在数据读出后指向下一个数据读出位置。
本发明实施例提供一种交织实现设备,包括:
输入模块,用于将待交织处理的数据依次输入到每个交织链内。
写入模块,用于在每个交织链内,将输入数据写入写指针指示的存储位置,所述写指针在数据写入后指向下一个数据写入位置;
读出模块,用于在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据,所述读指针在数据读出后指向下一个数据读出位置,且所述写指针和所述读指针之间的存储空间的初始长度为交织链的长度。
由上述技术方案可知,本发明实施例通过在每个交织链内设置写指针和读指针,并且写指针和读指针指示的位置随着数据的写入或读出而改变,可以将数据缓存在交织链内;由于交织器实现了数据缓存功能,就可以在交织器两端的设备的速率不一致时,由交织器对速率不匹配部分的数据进行缓存,通过在交织链内写入、读出数据协调两端设备的速率,实现速率匹配。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例的方法流程示意图;
图2为本发明实施例中数据写入读出示意图;
图3为本发明实施例中每个分支的存储单元的示意图;
图4为本发明实施例中数据写入示意图;
图5为本发明实施例中数据读出示意图;
图6为本发明实施例中缓存滑动示意图;
图7为本发明第二实施例的方法流程示意图;
图8为本发明实施例中交织深度增加后数据写入读出示意图;
图9为本发明第三实施例的方法流程示意图;
图10为本发明实施例中交织深度减小后数据写入读出示意图;
图11为本发明第四实施例的设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术不能缓存数据的问题,本发明实施例的交织器提供了数据缓存功能,而不是现有技术中数据写入便被读出。
图1为本发明第一实施例的方法流程示意图,包括:
步骤11:交织器将待交织处理的数据依次输入到每个交织链内。
其中,待交织处理的数据来自于交织器的上一级设备,例如前向纠错编解码器,当交织器接收到来自前向纠错编解码器的数据后,交织器将接收的数据依次输入交织器的每个交织链(也可以称为分支)内。例如,交织链的编号分别为0,1,...I-1,那么交织器将接收的数据按照0、1...I-1的顺序输入到每个交织链内。
步骤12:交织器在每个交织链内,将输入数据写入写指针指示的存储位置。
本发明实施例中,在每个交织链内设置写指针和读指针,分别指示数据的写入地址和读出地址。通过设置写指针和读指针,可以利用交织器内的存储空间,使用该存储空间完成数据缓存。当利用交织器的存储空间缓存数据后,可以实现交织链相邻的两个设备间的速率匹配,例如交织器相邻的两个设备分别为A设备和B设备,且A设备和B设备的速率不同,例如,A设备的速率为a(bit/s),B设备的速率为b(bit/s),假设a>b,那么在一定时间内来自A设备的数据量大于B设备能够处理的数据量,如果A设备和B设备之间没有速率匹配的设备,那么来自A设备的数据不能都被B设备处理,可能会造成数据丢失。
而本实施例中,将利用交织器内的存储空间实现数据缓存,那么来自A设备的数据可以先缓存在交织器内,按照B设备能够处理的速率由交织器内传输给B设备进行处理,也就是实现了A设备和B设备之间的速率匹配。
步骤13:交织器在需要读出数据时,根据输出序列值依次读出每个交织链内的读指针指示位置的数据,其中,所述写指针在数据写入后指向下一个数据写入位置,所述读指针在数据读出后指向下一个数据读出位置。
其中,交织器可以根据下一级设备的读出指令输出数据,例如,交织链的下一级设备为调制解调器,则交织器收到调制解调器的读取指令时,也就是交织器在需要读出时,将数据输出给调制解调器。
通过写指针和读指针指示的位置的改变,可以使得所述写指针和读指针指示的位置随着数据的写入和读出在对应交织链的存储单元内滑动,也就实现了交织链的存储空间能够起到缓存数据的作用。
现有技术中交织器只是对数据进行延时,没有缓存功能。那么在上述场景下,交织器接收到来自A设备的数据后在经过一定延时后,会将这些数据都传输给B设备,由于A设备的速率比B设备的速率大,那么传输给B设备的数据将大于B设备能够处理的数据量,就会出现数据丢失、数据处理错误等问题。
而本实施例中,由于交织器实现了数据缓存功能,那么来自A设备的数据可以缓存到交织器内,就不必如现有技术中由于交织器没有缓存功能只能接收多少数据就发送多少数据;由于数据可以先在交织器内缓存,那么交织器按照B设备能够处理的速率将缓存的数据发送给B设备,就可以实现交织器对A设备和B设备的速率匹配。
另外,输入到卷积交织器的第j条交织链上的数据的延迟为:nd(j)+rdel(j),计算公式分别为:nd(j)=floor((j*D)/I),rdel(j)=((D*j)%I),其中,j=0,1,...,I-1,D为交织器的交织深度,floor()表示向下取整,I为交织链的个数,“*”表示相乘运算,“/”表示相除运算,“%”表示取余运算。
本实施例中,上述的nd(j)可以由第j条交织链内的写指针和读指针之间的存储空间的长度实现,即当第j条交织链的写指针和所述读指针之间的存储空间的初始长度为交织链的长度时,那么写入该第j条交织链的数据将延迟nd(j)后输出,也就是实现了数据的整数延迟nd(j)。
而rdel(j)可以通过改变交织链的读出顺序实现,例如,数据是按照0,1,2,...I-1这一顺序依次写入交织链内的,每个交织链能够提供的延迟为nd(j),为了再实现残留延迟rdel(j),那么在读出数据时,可以改变交织链的读出顺序,即不再按照0,1,2,I-1这一顺序依次读出每个交织链上的数据,而是根据输出序列值指示的读出顺序读出各交织链上的数据。其中,本发明实施例中,输出序列值用id(j)表示,id(j)=((D*j)%I)。因此,对于第j条交织链,其对应的输出序列值为id(j),之后可以按照id(j)从小到大的顺序依次输出对应的交织链内的数据,例如,j=0时其对应的输出序列值id(0)=0,是最小的,那么读出时最先读出第0条交织链内的数据,也就是第1次读出的是第0条交织链内的数据;对于第j=1条交织链,其对应的输出序列值为((D*1)%I),那么第1条交织链上的数据将在第((D*1)%I)+1次读出,其余交织链上的数据读出顺序类似。通过上述读出顺序的改变就可以实现上述的残留延迟。
再者,每个交织链的存储空间在逻辑上是循环的,例如,当写指针指示的存储位置到达物理空间的最大指示位置时,下一次该写指针将重新指示物理空间的最小指示位置,也可以将交织链的存储空间理解为是环形存储空间。并且,本发明实施例中的写指针和读指针指示的位置不是不变的,而是需要随着数据的写入或读出进行相应的改变,实现数据缓存和读取。
其中,本发明实施例中每个分支上可以缓存数据,并用写指针和读指针指示数据写入、读出的位置。由于写指针指向的是写入地址,读指针指向的是读出地址,且读指针和写指针指向的位置是随着数据写入、读出而改变的,因此该读指针和写指针之间的区域可以理解为一个滑窗,例如,参见图2,交织器包括I条交织链,每条交织链的编号分别为0、1、...I-1,后续图中的0、1、...I-1的含义相同。每个分支对应一个滑窗,滑窗的两个端点分别为读指针和写指针。
每个分支上的滑窗的长度的初始值为根据当前的交织深度确定的值,即,nd(j)=floor((j*D当前)/I),其中,nd(j)为索引为j的分支上的滑窗的长度,j=0,1,...,I-1,I为分支个数,D当前为当前的交织深度,floor(j*D当前)/I)表示对“(j*D当前)/I”的值向下取整,当前的交织深度是指数据输入交织器时,交织器的交织深度,j*D表示j与D相乘。
另外,图2中每个分支上用实线表示的框为最大滑窗长度,具体地,参见图3,初始数据未写入时,每个分支上包括大小为w的缓存和长度为nd(j)的滑窗。随着数据不断写入到缓存内,缓存内的存储空间将越来越小,并且写指针和读指针之间的距离越来越大,将缓存内写满后,写指针和读指针之间的滑窗将达到最大滑窗长度。最大滑窗长度的计算公式为:ndmax(j)=floor(j*Dmax)/I),其中,Dmax为交织深度的最大值,可以根据实际需要设定。因此,在当前交织深度D当前时,每个交织链能够提供的缓存w=ndmax(j)-nd当 前(j)=floor(j*Dmax)/I)-floor((j*D当前)/I)。
进一步地,参见图4,图4以及其他附图中的0、1、2、....I-1表示交织器内交织链(或者称为分支)的序号,当数据按照写指针的指示依次写入缓存(也可以称为交织链内的存储空间)时,滑窗长度就会增加一个数据位宽,直至达到最大滑窗长度。此时,滑窗将充满整个交织链,缓存被写满,交织器输出满标志。当输出满标志后表明该分支内不能再次写入数据。
另一方面,参见图5,当数据依次被读出时,滑窗长度就会减小一个数据位宽,直至缓存被清空,滑窗大小又减为初始值。此时,交织器输出空标志。当输出空标志后表明该分支内不能再次读出数据。
上述的图4中当滑窗长度达到最大滑窗长度时,表明对应的交织链内的存储空间w已满;而图5中当滑窗长度恢复到初始值时,表明对应的交织链内的存储空间w已空。为了正确实现数据的写入、读出,类似现有的先进先出(First Input First Output,FIFO)存储器的处理,当存储空间已满时需要输出满标至,此时就不再写入数据;当存储空间已空时需要输出空标志,此时就不再读出数据。
从上述的写及读过程可以看出,数据未写入时,每个分支上的缓存大小为w,此时的缓存能够存储的数据容量也是w,当数据写入时,缓存的剩余空间将逐渐减小直至缓存存满数据,此时的缓存的剩余空间为0,并且当数据写入时,写指针逐渐远离读指针,滑窗的长度就逐渐变大。也就是说,缓存大小w就是数据未写入时剩余存储空间大小,是每个分支上可以提供的缓存大小,由于每个分支上可以提供大小为w的缓存,则共可以提供大小为I*w的缓存。并且,参见图6,由于初始时,每个分支的数据都需要写入到初始的相同的缓存位置,那么所有分支上的大小为I*w的缓存将组成一个图6中上一个图所示的矩形,而随着后续不同分支在不同时刻的写入、读出数据,不同分支上的缓存位置也有所不同,那么所有分支上的大小为I*w的缓存所组成的形状不再是矩阵,例如可能变成是图6的下一个图所示的形状。
数据输出序列计算公式为:id(j)=((D*j)%I)。例如,第一个输出的为第x1个分支的读指针指示位置的数据,其中(x1*D)%I=0,第二个输出的为第x2个分支的读指针指示位置的数据,其中(x2*D)%I=1,...第I个输出的为第xn个分支的读指针指示位置的数据,其中(xn*D)%I=I-1。
本实施例通过设置写指针和读指针,并且写指针和读指针是可调的,使得交织器不仅具有交织功能还具有数据缓存功能,由于增加了数据缓存功能,可用于交织器两端设备间的速率匹配。例如,假设交织器上一级设备以Abit/s的输出速率平稳输出数据给交织器,而交织器的下一级设备是集中对数据进行处理的,例如,前N秒不处理数据,而在后面的M秒集中进行处理。此时,由于上一级设备持续的在输出数据,而下一级设备在一段时间内是不能够处理数据的,在下一级设备不能够处理数据的这一段时间需要存储上一级设备输出的数据,避免数据丢失。也就是说,当上一级设备和下一级设备的速率不匹配时,如上述的一个持续输出数据,一个一段时间输入数据应该为0,那么可以在上一级设备和下一级设备之间设置存储器,以便将上一级设备输出但下一级设备没有处理的数据进行存储,通过数据缓存实现上一级设备和下一级设备的速率匹配。而现有技术中交织器只是对数据进行延时,没有进行数据存储,而本发明实施例中将利用交织器内的存储空间实现数据存储,进而实现交织器的上一级设备和下一级设备的速率匹配。
图7为本发明第二实施例的方法流程示意图,本实施例以交织深度增加为例。当交织器的交织深度增加时,需要作出两个改变,第一是nd长度的增加,第二是数据输出序列的改变。参见图7,本实施例包括:
步骤71:计算滑窗长度的增加值Δnd(j)。
该增加值Δnd(j)=ndnew(j)-ndold(j),其中,ndnew(j)为根据增加后的交织深度计算得到的滑窗长度,ndold(j)为根据原始的交织深度计算得到的滑窗长度。
步骤72:将读指针指示的位置回退Δnd(j),并在需要读出数据时,按照新计算得到的输出序列(id)值,依次读出对应的分支内读指针指示位置的数据。
参见图8,读指针指示的位置向后滑动,此时,将存在重复读出的数据。对于重复读出的数据,将重复读出的数据作为哑元,在交织器或接收端丢弃。
同时,由于交织深度改变,数据输出序列也将改变,新的数据输出序列为idnew(j)=(j*Dnew)%I。
本实施例中交织深度可以增加,使得交织深度可以在用户定义的范围内动态改变,提高了受时变噪声影响的系统的可靠性,可以在延时、交织深度、数据缓存中灵活调配存储单元,大大提高系统的性能。
图9为本发明第三实施例的方法流程示意图,图10为本发明实施例中交织深度减小后数据写入读出示意图。本实施例以交织深度减小为例。当交织深度减小时,需要作出两个改变,第一是nd长度的减小,第二是数据输出序列的改变。与交织深度增加时不同的是,如果直接减小滑窗的大小,一些已经输入滑窗的数据会被剔除,所以这时会插入一些哑元,保证已有的数据不会被剔除掉。
参见图9,本实施例包括:
步骤91:确定需要插入哑元的周期。
需要插入哑元的周期为:δ=ceil((Dold-Dnew)*(I-1)/I)*I。其中,ceil表示向上取整。
步骤92:计算滑窗长度的减小值Δnd(j)以及重新确定输出序列值。
其中,滑窗长度的减小值Δnd(j)的计算公式为:
如果(Dold-Dnew)*(I-1)%I为0,则Δnd(j)=ndold(j)-ndnew(j)+1;
如果(Dold-Dnew)*(I-1)%I不为0,则Δnd(j)=ndold(j)-ndnew(j)。
所述重新确定的输出序列值的计算公式为:idnew(j)=((Dnew*j)%I),其中,idnew(j)为重新确定的输出序列值,Dnew为减小后的交织深度,%表示取余运算。
步骤93:根据所述插入哑元的周期及滑窗长度的减小值Δnd(j),按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据。
当交织深度减小时,写指针停止不动,周期计数器开始工作,如果周期计数器小于Δnd(j)则正常输出数据;如果周期计数器不小于Δnd(j)则输出哑元,此时,读指针停止不动,滑窗不变。其中周期计数器用于对读指针的指示值进行计数。
另外,数据输出序列为idnew(j)=(j*Dnew)%I。
本实施例中交织深度可以增加,使得交织深度可以在用户定义的范围内动态改变,提高了受时变噪声影响的系统的可靠性,可以在延时、交织深度、数据缓存中灵活调配存储单元,大大提高系统的性能。
本发明实施例的交织器增加了数据缓存的功能,由于交织器相邻的模块是前向纠错解码器和调制解调器,流水处理的数据很有可能有很大不同,并且处理的符号边界也不同,这就需要他们之间有一个大的缓存用来解耦速率的不同。而单独增加存储器会带来成本的很大增加,而利用交织器窗口滑动产生的缓存,可以使存储器的密度增加,并且可以根据实际场景灵活分配交织深度和缓存深度,便于系统优化和扩展。
由于交织链滑窗的设计,可以使交织的深度在用户定义的范围内作动态改变,提高了受时变噪声影响的系统的可靠性,可以在延时、交织深度、数据缓存中灵活调配存储单元,大大提高了系统的性能。
图11为本发明第四实施例的设备结构示意图,该设备可以为交织器,该设备包括输入模块111、写入模块112和读出模块113;输入模块111用于将待交织处理的数据依次输入到每个分支内。写入模块112用于在每个交织链内,将输入数据写入写指针指示的存储位置,所述写指针在数据写入后指向下一个数据写入位置。读出模块113用于在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据,所述读指针在数据读出后指向下一个数据读出位置。
可选的,所述写入模块的写指针和读出模块的读指针之间的区域为滑窗,所述滑窗的初始值为nd(j)=floor((j*D)/I),其中D为当前交织深度,j为交织链的序号,j=0,...I-1,I为交织链的个数,floor()表示向下取整运算,*表示相乘运算,/表示相除运算。
可选的,所述写入模块具体用于每写入一个数据,移动写指针指示的位置,使得滑窗长度增加一个数据位宽,直至滑窗达到最大值,所述滑窗的最大值为ndmax(j)=floor((j*Dmax)/I),其中,Dmax为交织深度的最大值,且,ndmax(j)=w+nd(j),w为每个交织链上缓存的长度;
所述读出模块具体用于每读出一个数据,移动读指针指示的位置,使得滑窗长度减小一个数据位宽,直至滑窗恢复到所述初始值。
可选的,该设备还包括:
第一处理模块,用于当交织深度增加时,计算滑窗长度的增加值Δnd(j)以及重新确定输出序列值;其中,Δnd(j)=ndnew(j)-ndold(j),ndnew(j)为根据增加后的交织深度计算得到的滑窗长度,ndold(j)为根据原始的交织深度计算得到的滑窗长度;重新确定的输出序列值的计算公式为:idnew(j)=((Dnew*j)%I),其中,idnew(j)为重新确定的输出序列值,Dnew为增加后的交织深度,%表示取余运算;;
所述读出模块具体用于将读指针指示的位置回退Δnd(j),并在需要读出数据时,按照所述重新确定的输出序列值idnew(j),依次读出每个交织链内读指针指示位置的数据。
可选的,该设备还包括:
第二处理模块,用于当交织深度减小时,确定需要插入哑元的周,并计算滑窗长度的减小值Δnd(j)以及重新确定输出序列值;
所述读出模块具体用于根据所述插入哑元的周期及滑窗长度的减小值Δnd(j),按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据。
可选的,所述第二处理模块具体用于:
采用如下公式确定所述需要插入哑元的周期:
δ=ceil((Dold-Dnew)*(I-1)/I)*I,其中,δ为插入哑元的周期,ceil()表示向上取整,Dnew为减小后的交织深度,Dold为减小前的交织深度;
采用如下公式确定所述滑窗长度的减小值Δnd(j):
如果(Dold-Dnew)*(I-1)%I为0,则Δnd(j)=ndold(j)-ndnew(j)+1;
如果(Dold-Dnew)*(I-1)%I不为0,则Δnd(j)=ndold(j)-ndnew(j);
所述读出模块具体用于:如果周期计数器小于Δnd(j),则按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据;如果周期计数器不小于Δnd(j)则在所述插入哑元的周期输出哑元,所述周期计数器用于对读指针的指示值进行计数。
本实施例通过设置写指针和读指针,并且写指针和读指针是可调的,使得交织器不仅具有交织功能还具有数据缓存功能,由于增加了数据缓存功能,可用于两端设备间的速率匹配。
可以理解的是,上述方法及设备中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种交织实现方法,其特征在于,包括:
将待交织处理的数据依次输入到每个交织链内;
在每个交织链内,将输入数据写入写指针指示的存储位置;
在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据;
其中,所述写指针在数据写入后指向下一个数据写入位置,所述读指针在数据读出后指向下一个数据读出位置;
其中,所述写指针和读指针之间的区域为滑窗,所述滑窗的初始值为nd(j)=floor((j*D)/I),其中D为当前交织深度,j为交织链的序号,j=0,…I-1,I为交织链的个数,floor()表示向下取整运算,*表示相乘运算,/表示相除运算;
其中,所述将输入数据写入写指针指示的存储位置,包括:每写入一个数据,移动写指针指示的位置,使得滑窗长度增加一个数据位宽,直至滑窗达到最大值,所述滑窗的最大值为ndmax(j)=floor((j*Dmax)/I),其中,Dmax为交织深度的最大值,且,ndmax(j)=w+nd(j),w为每个交织链上缓存的长度;
所述依次读出每个交织链内读指针指示位置的数据,包括:每读出一个数据,移动读指针指示的位置,使得滑窗长度减小一个数据位宽,直至滑窗恢复到所述初始值。
2.根据权利要求1所述的方法,其特征在于,还包括:
当交织深度增加时,重新确定输出序列值以及重新确定读指针指示的位置,并根据重新确定的输出序列值依次读出每个交织链内重新确定的读指针指示位置的数据;
所述重新确定读指针指示的位置包括:
计算滑窗长度的增加值△nd(j),将读指针指示的位置回退△nd(j),其中,△nd(j)=ndnew(j)-ndold(j),ndnew(j)为根据增加后的交织深度计算得到的滑窗长 度,ndold(j)为根据原始的交织深度计算得到的滑窗长度;
所述重新确定的输出序列值的计算公式为:idnew(j)=((Dnew*j)%I),其中,idnew(j)为重新确定的输出序列值,Dnew为增加后的交织深度,%表示取余运算。
3.根据权利要求1所述的方法,其特征在于,还包括:
当交织深度减小时,确定需要插入哑元的周期;
计算滑窗长度的减小值△nd(j)以及重新确定输出序列值,所述重新确定的输出序列值的计算公式为:idnew(j)=((Dnew*j)%I),其中,idnew(j)为重新确定的输出序列值,Dnew为减小后的交织深度,%表示取余运算;
根据所述插入哑元的周期及滑窗长度的减小值△nd(j),按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据。
4.根据权利要求3所述的方法,其特征在于,
所述需要插入哑元的周期的计算公式为:δ=ceil((Dold-Dnew)*(I-1)/I)*I,其中,δ为插入哑元的周期,ceil()表示向上取整,Dnew为减小后的交织深度,Dold为减小前的交织深度;
所述滑窗长度的减小值△nd(j)的计算公式为:
如果(Dold-Dnew)*(I-1)%I为0,则△nd(j)=ndold(j)-ndnew(j)+1;
如果(Dold-Dnew)*(I-1)%I不为0,则△nd(j)=ndold(j)-ndnew(j);
所述根据所述插入哑元的周期及滑窗长度的减小值△nd(j),按照重新确定的输出序列值输出数据,包括:
如果周期计数器小于△nd(j),则按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据;如果周期计数器不小于△nd(j)则在所述插入哑元的周期输出哑元,所述周期计数器用于对读指针的指示值进行计数。
5.一种交织实现设备,其特征在于,包括:
输入模块,用于将待交织处理的数据依次输入到每个交织链内 ;
写入模块,用于在每个交织链内,将输入数据写入写指针指示的存储位 置,所述写指针在数据写入后指向下一个数据写入位置;
读出模块,用于在需要读出数据时,根据输出序列值依次读出每个交织链内读指针指示位置的数据,所述读指针在数据读出后指向下一个数据读出位置,且所述写指针和所述读指针之间的存储空间的初始长度为交织链的长度;
其中,所述写入模块的写指针和读出模块的读指针之间的区域为滑窗,所述滑窗的初始值为nd(j)=floor((j*D)/I),其中D为当前交织深度,j为交织链的序号,j=0,…I-1,I为交织链的个数,floor()表示向下取整运算,*表示相乘运算,/表示相除运算;
其中,所述写入模块具体用于每写入一个数据,移动写指针指示的位置,使得滑窗长度增加一个数据位宽,直至滑窗达到最大值,所述滑窗的最大值为ndmax(j)=floor((j*Dmax)/I),其中,Dmax为交织深度的最大值,且,ndmax(j)=w+nd(j),w为每个交织链上缓存的长度;
所述读出模块具体用于每读出一个数据,移动读指针指示的位置,使得滑窗长度减小一个数据位宽,直至滑窗恢复到所述初始值。
6.根据权利要求5所述的设备,其特征在于,还包括:
第一处理模块,用于当交织深度增加时,计算滑窗长度的增加值△nd(j)以及重新确定输出序列值;其中,△nd(j)=ndnew(j)-ndold(j),ndnew(j)为根据增加后的交织深度计算得到的滑窗长度,ndold(j)为根据原始的交织深度计算得到的滑窗长度;重新确定的输出序列值的计算公式为:idnew(j)=((Dnew*j)%I),其中,idnew(j)为重新确定的输出序列值,Dnew为增加后的交织深度,%表示取余运算;
所述读出模块具体用于将读指针指示的位置回退△nd(j),并在需要读出数据时,按照所述重新确定的输出序列值idnew(j),依次读出每个交织链内读指针指示位置的数据。
7.根据权利要求5所述的设备,其特征在于,还包括:
第二处理模块,用于当交织深度减小时,确定需要插入哑元的周期,并计算滑窗长度的减小值△nd(j)以及重新确定输出序列值;
所述读出模块具体用于根据所述插入哑元的周期及滑窗长度的减小值△nd(j),按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据。
8.根据权利要求7所述的设备,其特征在于,所述第二处理模块具体用于:
采用如下公式确定所述需要插入哑元的周期:δ=ceil((Dold-Dnew)*(I-1)/I)*I,其中,δ为插入哑元的周期,ceil()表示向上取整,Dnew为减小后的交织深度,Dold为减小前的交织深度;
采用如下公式确定所述滑窗长度的减小值△nd(j):
如果(Dold-Dnew)*(I-1)%I为0,则△nd(j)=ndold(j)-ndnew(j)+1;
如果(Dold-Dnew)*(I-1)%I不为0,则△nd(j)=ndold(j)-ndnew(j);
所述读出模块具体用于:如果周期计数器小于△nd(j),则按照重新确定的输出序列值依次读出每个交织链内读指针指示位置的数据;如果周期计数器不小于△nd(j)则在所述插入哑元的周期输出哑元,所述周期计数器用于对读指针的指示值进行计数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210054841.1A CN102624484B (zh) | 2012-03-02 | 2012-03-02 | 交织实现方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210054841.1A CN102624484B (zh) | 2012-03-02 | 2012-03-02 | 交织实现方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102624484A CN102624484A (zh) | 2012-08-01 |
CN102624484B true CN102624484B (zh) | 2014-12-10 |
Family
ID=46564179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210054841.1A Expired - Fee Related CN102624484B (zh) | 2012-03-02 | 2012-03-02 | 交织实现方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102624484B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973405B (zh) * | 2014-05-13 | 2017-05-24 | 江苏中兴微通信息科技有限公司 | 一种无线通信系统中的符号交织深度优化方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800625A (zh) * | 2010-02-02 | 2010-08-11 | 上海华为技术有限公司 | 一种解交织方法和装置 |
CN101917246A (zh) * | 2010-06-28 | 2010-12-15 | 华为技术有限公司 | 信道数据交织和解交织的方法及装置 |
CN102255687A (zh) * | 2010-05-17 | 2011-11-23 | 中兴通讯股份有限公司 | 速率匹配方法与装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6839870B2 (en) * | 2003-03-21 | 2005-01-04 | Terayon Communications Systems, Inc. | Error-correcting code interleaver |
-
2012
- 2012-03-02 CN CN201210054841.1A patent/CN102624484B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101800625A (zh) * | 2010-02-02 | 2010-08-11 | 上海华为技术有限公司 | 一种解交织方法和装置 |
CN102255687A (zh) * | 2010-05-17 | 2011-11-23 | 中兴通讯股份有限公司 | 速率匹配方法与装置 |
CN101917246A (zh) * | 2010-06-28 | 2010-12-15 | 华为技术有限公司 | 信道数据交织和解交织的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102624484A (zh) | 2012-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100699491B1 (ko) | 인터리빙 방법 및 그 장치 | |
CN100361397C (zh) | 特播解码装置和方法 | |
US20040258170A1 (en) | Apparatus and method for de-interleaving the interleaved data in a coded orthogonal frequency division multiplexing receiver | |
CN101969358B (zh) | 一种用于空间通信的高速并行rs译码方法 | |
CN102624484B (zh) | 交织实现方法和设备 | |
CN101917246B (zh) | 信道数据交织和解交织的方法及装置 | |
CN102354535A (zh) | 逻辑单元复用系统 | |
CN101764621B (zh) | 星载(8176,7156)ldpc编译码器中实现缩短码与子码兼容的方法 | |
CN100546206C (zh) | 一种实现解码的电路和方法 | |
CN113141508B (zh) | 算术编码器及实现算术编码的方法和图像编码方法 | |
EP1388944A1 (en) | Cross interleave reed-solomon code correction | |
US9171032B2 (en) | Radix sort with read-only key | |
CN101154957B (zh) | Turbo码交织器及交织地址传输方法 | |
CN1592117B (zh) | 用于计算交织参数的移动电话、设备、方法和程序 | |
CN105187162A (zh) | 一种多粒度并行解速率匹配方法和装置 | |
CN102594371B (zh) | 一种Turbo编码交织处理的方法及装置 | |
CN102318249B (zh) | 一种交织和解交织的方法、交织器和解交织器 | |
CN1773864B (zh) | 一种纠错能力为2的扩展里德—所罗门码的译码方法 | |
CN109728826B (zh) | 一种数据交织与解交织方法和装置 | |
CN106445836B (zh) | 异步数据读写方法、系统及装置 | |
CN103490855B (zh) | 传输信息的方法和装置 | |
US6714606B1 (en) | Integrated services digital broadcasting deinterleaver architecture | |
CN102201818A (zh) | 一种Turbo译码结果的输出方法及装置 | |
CN102811066B (zh) | 伴随式计算装置及解码器 | |
CN105117349B (zh) | 数据存储方法和装置、数据读取方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141210 Termination date: 20180302 |
|
CF01 | Termination of patent right due to non-payment of annual fee |