一种获取交织表的方法

文档序号:7506285阅读:141来源:国知局
专利名称:一种获取交织表的方法
技术领域
本发明涉及编码技术,特别是涉及一种获取交织表的方法。
背景技术
涡轮码(Turbo code)是目前常用的一种信道编码方案,适于高速率但对时延要求不高的数据传输业务。Turbo码能够大大降低系统的发射功率并且增加系统的容量。同时,Turbo码能够达到绝佳的编码增益效果。比如,一个Turbo码可以达到约与香农(Shannon)极限只差0.2dB的编码增益,从而为系统提供了极佳的错误更正功能。因此,Turbo码在第三代通信系统以及深空通信、卫星通信,视频处理等领域都有重要的应用。
在信道上,由于持续较长的深衰落谷点会影响到相继一串的比特,所以比特差错经常是成串发生的。然而,信道编码和译码仅在检测和校正单个差错和较短的差错串时才有效。因此,在Turbo码编码和Turbo码译码操作中经常会出现成串的比特差错,从而造成较大的误码率。
图1是Turbo码编码器的结构示意图,图2是Turbo码译码器的结构示意图。参见图1和图2,为了解决比特差错成串导致较大误码率的问题,在Turbo码编码器和Turbo码译码器中使用了交织器,通过交织器的交织技术将一条消息中的相继比特以非相继方式发送出去,那么在传输过程中即使发生了成串差错,恢复成一条相继比特串的消息时,差错也就变成了单个差错或长度很短的差错,这时再用信道编码纠错功能纠正差错,恢复原消息,则可大大降低误码率。
在Turbo编码或译码中,交织技术的核心内容就是计算交织表。计算交织表就是根据交织长度n计算出从0到(n-1)之间所有整数值排列顺序的一个序列。交织长度的取值范围为(40~5114)。比如,交织长度为40,所得交织表为从0~39之间40个整数值的一个序列,如(2,0,31,......,39,6)。
现有技术获取交织表的方法为方法一、实时计算法。
根据当前交织长度和交织表算法进行实时计算,获取所需交织表。例如,进行Turbo编码或译码时的数据块长度为100,当获取交织表时,将数据块长度100作为当前交织长度,使用既定交织表算法后,得到的交织表为0~99之间100个整数值的一个序列,如交织表(2,5,81,......,16,99,89)。在获取该交织表时,交织表中每一位上的数值均需要根据既定交织表算法进行计算,因此需要进行100次计算。
方法二、查找法。
预先使用既定交织表算法分别计算出与所有交织长度对应的交织表,并保存各个交织长度和与其对应的交织表。在获取交织表时,直接查找系统中的保存记录。例如,进行Turbo编码或译码时的数据块长度为5100,当获取交织表时,将数据块长度5100作为当前交织长度,在获取交织表时,查找到系统中保存的与当前交织长度5100对应的交织表,如交织表(51,0,88,......,16,4302,5099)。系统预先存储与当前交织长度5100对应的交织表时,需要保存从0到5099之间5100个整数值。
可见,现有技术存在以下缺点在方法一中,每次进行Turbo编码或译码时,都要根据交织长度和交织表算法计算交织表,所以当使用的交织长度很大时,需要进行大量的运算才能得出交织表中每一位上的数值,从而降低了获取交织表的速度,导致系统无法快速处理Turbo编码或译码业务。方法一对于每次使用的交织长度均需要进行计算才能获取与其对应的交织表,而各次使用的交织长度很可能相同,从而导致不必要的重复计算,浪费了系统的资源,降低了系统的性能。
使用方法二时,预先存储所有交织长度及与其对应的交织表会占用大量的存储空间,系统处理器的片内空间往往无法满足其存储需求。如果利用处理器的片外空间存储,则会增加成本,而且在使用时也无法判断片外的存储空间是否已损坏,从而导致无法判断获取的交织表是否正确。同时,当交织长度范围更改时,则必须重新固化片外存储区,因而不利于Turbo编码或译码业务的发展。

发明内容
有鉴于此,本发明的目的在于提供一种获取交织表的方法,使其能用有限的存储空间快速获取交织表。
为了达到上述目的,本发明的技术方案是这样实现的一种获取交织表的方法,应用于使用涡轮码Turbo码编码器或Turbo码译码器的系统中,该方法包括以下步骤A、预先选取交织长度,并设置所选取的每个交织长度及其对应的交织表的对应关系;B、当获取交织表时,将本次Turbo编码或译码的数据块长度作为当前交织长度,判断步骤A中所述对应关系中是否有当前交织长度,如果有,则根据所述对应关系获得当前交织长度对应的交织表,否则,根据交织表算法计算出当前交织长度对应的交织表。
步骤A中所述设置为首次时,步骤A中所述每个交织长度所对应的交织表是通过交织表算法直接计算得出。
步骤A中设置的每个交织长度及其对应的交织表的对应关系是按周期更新设置的。
步骤A中所述周期更新设置包括A1、选取交织长度,判断步骤A中所述对应关系中是否有选取的任意一个交织长度,如果有,则跳出本流程,否则,执行步骤A2;A2、判断步骤A中所述对应关系中是否没有选取的任意一个交织长度,如果没有,则执行步骤A3,否则,执行步骤A4;A3、根据交织表算法计算出与选取的每个交织长度对应的交织表,并设置所选取的每个交织长度及其对应的交织表的对应关系,然后跳出本流程;A4、对于选取的在步骤A中所述对应关系中没有的交织长度,则根据交织表算法计算出与其对应的交织表,然后用该交织长度与交织表的对应关系更新步骤A中所述对应关系中与选取的交织长度不同的交织长度对应的对应关系。
在每次执行步骤B时,记录当前交织长度的使用次数,当更新所述对应关系时,步骤A1中选取的交织长度是按照系统记录的所有交织长度的使用次数值从大到小的顺序选取的。
在所述步骤A1之前包括判断是否需要对所设置的交织长度及其对应交织表的对应关系进行更新,如果需要,则执行步骤A1,否则,跳出本流程。
预先设定次数阈值,并记录系统已获取交织表的次数,所述是否需要对设置的交织长度及其对应交织表的对应关系进行更新是通过系统记录的已获取交织表的次数与系统预先设定的次数阈值是否相等进行判断的;当对交织长度及其交织表的对应关系进行更新后,将记录系统已获取交织表的次数值置零。
预先设定时间阈值,并记录系统运行的时间值,所述是否需要对设置的交织长度及其对应交织表的对应关系进行更新是通过系统记录的时间值与系统预先设定的时间阈值是否相等进行判断的;当对交织长度及其交织表的对应关系进行更新后,将记录系统运行的时间值置零。
可见,本发明提出的方法具有以下优点1、因为在一定的时间内,常用交织长度不会有较大的变化,所以使用本发明提出的方法,直接在交织表存储区中查找当前交织长度及与其对应的交织表,则省去了计算交织表的过程,从而大大减少了获取交织表的时间。
2、本发明提出的方法只存储常用交织长度及与其对应的交织表,从而最大限度的减少了对系统资源的占有。
3、根据本发明提出的方法,定期更新交织表存储区中的交织长度及与其对应的交织表,从而实现了根据实际业务情况灵活适应常用交织长度的改变,进而满足了Turbo码业务发展和变化的需求。
4、在本发明提出的方法中,保存有上次使用的交织长度及与其对应的交织表,在当前交织长度与保存的上次交织长度相同时直接输出与上次交织长度对应的交织表,从而大大节省了获取交织表的时间。


图1是Turbo码编码器的结构示意图;图2是Turbo码译码器的结构示意图;图3是在实现本发明的实施例中使用计数器后获取交织表的流程图;图4是在实现本发明的实施例中使用计时器后获取交织表的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
本实施例预先设置交织表存储区,在首次选取交织长度时,根据以往进行Turbo编码或译码时常用的交织长度,选取交织表存储区可存储个数(N个)的交织长度,然后使用既定交织表算法分别计算出与选取的N个常用交织长度对应的交织表,将选取的N个常用交织长度及与其对应的交织表保存在交织表存储区中。
本实施例预先设置交织长度使用次数表,用于保存所有交织长度及其使用次数。
本实施例预先设置记录表,用于保存上次使用的交织长度及与其对应的交织表。
本实施例预先设置更新参数,用于判断是否对交织表存储区进行更新。
本实施例预先设置计数器,所述更新参数为计数器的当前值。
图3是在实现本发明的实施例中使用计数器后获取交织表的流程图。参见图3,本实施例获取交织表的具体过程包括以下步骤步骤301判断计数器的当前值与系统预先设定的次数阈值是否相等,如果计数器的当前值与系统预先设定的次数阈值相等,则执行步骤302,否则执行步骤306。
这里,为了达到周期更新交织表存储区的目的,首先判断当前是否满足更新条件,即判断计数器的当前值与系统预先设定的次数阈值是否相等。如果计数器的当前值与系统预先设定的次数阈值相等,则认为,当前应对交织表存储区进行更新,以保证在交织表存储区中保存的均为周期内常用的交织长度及与其对应的交织表。如果计数器的当前值与系统预先设定的次数阈值不相等,则认为,当前不需要对交织表存储区进行更新,可直接进行获取交织表的后续步骤。
步骤302将计数器置零。
将计数器置零,是为了在下一周期内重新统计已获取交织表的次数。
步骤303在交织长度使用次数表中,按照交织长度使用次数值从大到小的顺序选取N个交织长度,判断交织表存储区中保存的N个交织长度与选取的N个交织长度是否完全相同,如果交织表存储区中保存的N个交织长度与选取的N个交织长度均不相同,则执行步骤304,如果交织表存储区中保存的一部分交织长度与选取的N个交织长度中的一部分交织长度相同,则执行步骤305,如果交织表存储区中保存的N个交织长度与选取的N个交织长度完全相同,则执行步骤306。
这里,如果交织表存储区中保存的N个交织长度与选取的N个交织长度均不相同,则表明交织表存储区中保存的N个交织长度均不是周期内常用的交织长度,必须对交织表存储区存储的全部内容进行更新。
这里,如果交织表存储区中保存的一部分交织长度与选取的N个交织长度中的一部分交织长度相同,则表明交织表存储区中保存的一部分交织长度为周期内常用交织长度,而另一部分交织长度不是周期内常用交织长度,必须对交织表存储区进行部分更新。
这里,如果交织表存储区中保存的N个交织长度与选取的N个交织长度完全相同,则表明交织表存储区中保存的N个交织长度仍为周期内常用的交织长度,无需对交织表存储区进行更新。
步骤304根据交织表算法分别计算出与选取的N个交织长度对应的交织表,并将选取的N个交织长度及与其对应的交织表保存在交织表存储区中,然后执行步骤306。
步骤305在交织表存储区中,保存与选取的交织长度相同的交织长度及与其对应的交织表;删除与选取的交织长度不同的交织长度及与其对应的交织表,在选取的N个交织长度中,对于与交织表存储区中的交织长度均不相同的交织长度,根据交织表算法分别计算出与其对应的交织表,并将该与交织表存储区中的交织长度均不相同的交织长度及与其对应的交织表保存在交织表存储区中。
步骤306将本次Turbo编码或译码时数据块的长度作为当前交织长度,在交织长度使用次数表中查找到当前交织长度,然后将当前交织长度的使用次数值加一,并将计数器的值加一。
将当前交织长度的使用次数值加一,是为了更新交织长度使用次数表中保存的当前交织长度的使用次数值;将计数器的值加一,是为了更新计数器记录的已获取交织表的次数。
步骤307判断当前交织长度与记录表中保存的上次交织长度是否相同,如果相同,则执行步骤308,否则,执行步骤309。
由于业务的连续性,本次Turbo编码或译码与上次Turbo编码或译码使用的交织长度很可能相同,即当前交织长度与上次交织长度很可能相同,为了提高获取交织表的速率,直接判断记录表中保存的上次交织长度与当前交织长度是否相同,如果相同,则表明记录表中的保存的交织表即为所需的交织表,如果不相同,则表明还需进行获取交织表的后续步骤。
步骤308获取记录表中保存的与上次交织长度对应的交织表,并跳出本流程。
步骤309在交织表存储区中查找与当前交织长度相同的交织长度,如果查找到与当前交织长度相同的交织长度,则执行步骤310,否则,执行步骤311。
由于交织表存储区中保存的均为周期内常用的交织表,所以为了提高获取交织表的速率,直接在交织表存储区中查找是否有与当前交织长度相同的交织长度,如果查找到与当前交织长度相同的交织长度,则表明可利用交织表存储区中保存的交织表,如果查找不到与当前交织长度相同的交织长度,则表明需要进行计算才能获取所需的交织表。
步骤310在交织表存储区中,获取与查找到的交织长度对应的交织表,然后执行步骤312。
步骤311根据当前交织长度和交织表算法,计算出交织表。
步骤312用当前交织长度及获取的与其对应的交织表更新记录表。
因为无论是从交织表存储区中获取所需的交织表,还是根据当前交织长度及交织表算法计算出所需的交织表,均表明记录表中保存的上次交织长度与当前交织长度不相同,所以应对记录表进行更新,删除原有的保存记录,将当前交织长度及获取的与其对应的交织表保存在记录表中,以保证记录表中保存的始终为上次交织长度及与其对应的交织表。
另外,本发明也可使用计时器来替换计数器,即所述的更新参数为计时器的当前值。
因为无论使用计数器还是计时器,均是用其记录的值作为更新参数,以判断是否应对交织表存储区进行周期更新。在使用计数器时,当计数器记录的已获取交织表的次数达到系统预先设定的次数阈值时,则认为已进行完一个周期,应对交织表存储区进行更新。相应地,在使用计时器时,当计时器记录的时间达到系统预先设定的时间阈值时,则认为已进行完一个周期,应对交织表存储区进行更新。
图4是在实现本发明的实施例中使用计时器后获取交织表的流程图。参见图4,使用计时器时,本发明在上述获取交织表的过程中,将步骤301换为步骤401,即判断计时器的当前值与系统预先设定的时间阈值是否相等,如果计时器的当前值与系统预先设定的时间阈值相等,则执行步骤402,否则执行步骤403;将步骤302换为步骤402,即将计时器置零;将步骤306换为步骤403,即删除步骤306中将计数器的值加一的步骤。
在上述获取交织表的过程中,所述其它内容保持不变。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种获取交织表的方法,应用于使用涡轮码Turbo码编码器或Turbo码译码器的系统中,其特征在于,该方法包括以下步骤A、预先选取交织长度,并设置所选取的每个交织长度及其对应的交织表的对应关系;B、当获取交织表时,将本次Turbo编码或译码的数据块长度作为当前交织长度,判断步骤A中所述对应关系中是否有当前交织长度,如果有,则根据所述对应关系获得当前交织长度对应的交织表,否则,根据交织表算法计算出当前交织长度对应的交织表。
2.根据权利要求1所述的方法,其特征在于,步骤A中所述设置为首次时,步骤A中所述每个交织长度所对应的交织表是通过交织表算法直接计算得出。
3.根据权利要求1所述的方法,其特征在于,步骤A中设置的每个交织长度及其对应的交织表的对应关系是按周期更新设置的。
4.根据权利要求3所述的方法,其特征在于,步骤A中所述周期更新设置包括A1、选取交织长度,判断步骤A中所述对应关系中是否有选取的任意一个交织长度,如果有,则跳出本流程,否则,执行步骤A2;A2、判断步骤A中所述对应关系中是否没有选取的任意一个交织长度,如果没有,则执行步骤A3,否则,执行步骤A4;A3、根据交织表算法计算出与选取的每个交织长度对应的交织表,并设置所选取的每个交织长度及其对应的交织表的对应关系,然后跳出本流程;A4、对于选取的在步骤A中所述对应关系中没有的交织长度,则根据交织表算法计算出与其对应的交织表,然后用该交织长度与交织表的对应关系更新步骤A中所述对应关系中与选取的交织长度不同的交织长度对应的对应关系。
5.根据权利要求4所述的方法,其特征在于,在每次执行步骤B时,记录当前交织长度的使用次数,当更新所述对应关系时,步骤A1中选取的交织长度是按照系统记录的所有交织长度的使用次数值从大到小的顺序选取的。
6.根据权利要求4或5所述的方法,其特征在于,在所述步骤A1之前包括判断是否需要对所设置的交织长度及其对应交织表的对应关系进行更新,如果需要,则执行步骤A1,否则,跳出本流程。
7.根据权利要求6所述的方法,其特征在于,预先设定次数阈值,并记录系统已获取交织表的次数,所述是否需要对设置的交织长度及其对应交织表的对应关系进行更新是通过系统记录的已获取交织表的次数与系统预先设定的次数阈值是否相等进行判断的;当对交织长度及其交织表的对应关系进行更新后,将记录系统已获取交织表的次数值置零。
8.根据权利要求6所述的方法,其特征在于,预先设定时间阈值,并记录系统运行的时间值,所述是否需要对设置的交织长度及其对应交织表的对应关系进行更新是通过系统记录的时间值与系统预先设定的时间阈值是否相等进行判断的;当对交织长度及其交织表的对应关系进行更新后,将记录系统运行的时间值置零。
全文摘要
本发明公开了一种获取交织表的方法,应用于使用涡轮码(Turbo码)编码器或Turbo码译码器的系统中,预先选取交织长度,并设置所选取的每个交织长度及其对应的交织表的对应关系;当获取交织表时,将本次Turbo编码或译码的数据块长度作为当前交织长度,判断所述对应关系中是否有当前交织长度,如果有,则根据所述对应关系获得当前交织长度对应的交织表,否则,根据交织表算法计算出当前交织长度对应的交织表。本发明提出的方法用有限的存储空间大大减少了获取交织表的时间,而周期更新交织表存储区则实现了根据实际业务情况灵活适应常用交织长度的改变。
文档编号H03M13/27GK1671057SQ20041000893
公开日2005年9月21日 申请日期2004年3月15日 优先权日2004年3月15日
发明者孙强 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1