用以解码接收信息的解码方法与相关解码装置与流程

文档序号:14914291发布日期:2018-07-11 00:17阅读:238来源:国知局

本发明涉及解码方法与相关解码装置,特别有关一种用于执行错误纠正的解码方法与相关解码装置。



背景技术:

如图1所示的信息传送系统中,为了实现错误纠正,发送端1的原始信息m会通过编码器11的编码处理,在原始信息m后加上数个位(bit)的奇偶校验码p,从而得到码字(codeword)c。经过通道30的传送后,接收端2可得到接收信息r,接收端2中的解码器21会基于编码器11所进行的编码处理,判断接收信息r中是否包含通道干扰造成的错误,并且在发现错误后,执行相应的算法进行错误纠正,从而还原出码字c,并从码字c中得到原始信息m。

尽管现有技术中已经存在不少效果着越的解码演算法与相关电路,但不论是在算法或者是电路架构上,仍有改善的空间。



技术实现要素:

本发明提供一种用于执行错误纠正的解码方法与相关解码装置,以解决上述问题。

本发明的实施例公开一种一种用以解码接收信息的解码方法,所述方法包含:根据一征状与一检验矩阵决定对应于所述接收信息中至少一位的一权重;根据所述位的一位值决定该位的一位状态;根据所述权重与一翻转临界值来调整所述位状态,其中所述位状态的调整具有多种调整幅度;以及基于所述位状态对所述位进行位翻转。

本发明的实施例公开一种用以解码接收信息的解码装置,所述解码装置包含:权重计算单元、状态决定单元、翻转计算单元以及翻转处理单元。所述权重计算单元用以根据一征状与一检验矩阵决定对应于接收信息中至少一位的权重。所述状态决定单元用以根据所述位的位值决定所述位的位状态。所述翻转计算单元用以根据所述权重与一翻转临界值来产生可调整所述位状态的位翻转向量,其中所述位状态的调整具有多种调整幅度。所述翻转处理单元用以根据所述位状态对所述位进行位状态调整以及位翻转。

综上所述,本发明可通过处理器来执行对应的软件、透过纯电路或者是透过两者的组合。其中,处理器可为通用处理器(general-purpose processor),或者是如数字信号处理器(digital signal processor)的类的特定处理器。软件可能存储于电脑可读取媒体(例如:光盘(optical disk)、硬盘(hard disk drive)、闪存(flash memory)、各种随机存取存储器(random-access memory,RAM)、各种只读内存(read-only memory,ROM)或者是任何可被处理器所辨别的存储器中,并且包含各种程序逻辑(programming logic)、指令,或者是用以实现本发明的必要资料。此外,在纯电路的架构中,辨识模块以及判断模块可能包含有硬体逻辑(hard-wired logic),可编程逻辑(如:现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)或者是复杂可可编程逻辑装置(Complex Programmable Logic Device,CPLD)、特殊应用集成电路(Application-specific integrated circuit,ASIC)。

有关本发明前述及其他技术内容、特点与功效,在以下配合参考附图实施例的详细说明中,将可清楚的呈现。

附图说明

图1为本发明数据编/解码与传送架构的示意图。

图2为本发明接收信息分段与校验矩阵分割的示意图。

图3为本发明的实施例的解码装置的功能方块示意图。

图4为相应于图3展示的解码装置的信号时序图。

图5为本发明的实施例的解码装置的功能方块示意图。

图6为相应于图5展示的解码装置的信号时序图。

图7~图10为本发明的实施例的位状态与其变迁。

其中,附图标记说明如下:

1 传送端

2 接收端

11 编码器

21 解码器

30 通道

100、200 解码装置

110、210 征状计算单元

112、212 运算单元

114、214、120、170、270 存储单元

116、216 加法电路

130、230 权重计算单元

140、240 翻转计算单元

150、250 翻转临界值调整单元

160、260 翻转处理单元

180、280 状态决定单元

具体实施方式

本发明的解码方法与解码装置可用于信息传送系统的接收端,对信息传送系统的传送端的编码器所传送出的码字c进行解码处理。首先,传送端的原始信息m会基于编码器的编码处理,在原始信息m后加上数个位的奇偶校验码p,从而得到码字c。例如,在低密度奇偶检查码(Low-density parity-check code,LDPC code)架构下,编码器可根据一个产生矩阵(generation matrix)G进行的编码处理,从而得到码字c,亦即:

m·G=c

其中,产生矩阵G与一个相应的校验矩阵(parity check matrix)H有以下的关系:

G·HT=0

并且,与校验矩阵H与码字c之间具有以下关系:

c·HT=0

假设码字c经过通道传送后,在接收端接可以得到接收信息r,则接收信息r可表示成错误e与码字c迭加的结果,其中错误e可能为通道躁声所造成的干扰:

r=c+e

如果进一步把接收信息r与校验矩阵H的转置矩阵进行点积运算,则可得到:

r·HT=(c+e)·HT=c·HT+e·HT

由于c·HT-的结果必为零,因此以上的运算的结果为e·HT,亦可称作为征状(syndrome)。当接收信息r中不包含错误,则征状为0。然而,如果在接收到接收信息r的初期,征状计算的结果不为零,则可通过反复纠正接收信息r的部分位,得到r’·HT=0的结果,这时代表纠正后的接收信息r’与传送端所传送出的码字c一致。

接收信息r可以视为由图2所示的n个接收信息区块r1~rn所组成。其中,每一个信息区块r1~r-n可能包含有一个或多个位,而校验矩阵H也可以根据这样的方式分割成n个相应的子矩阵H1~Hn。

图3为本发明的实施例的解码装置100,解码装置100反复地进行迭代式的计算来解码接收信息r。在一个迭代(iteration)中,征状计算单元110中的计算单元112会分别计算出每个接收信息区块r1~r-n与相应的子矩阵H1~Hn的转置矩阵H1T~HnT的点积,亦即,r1·H1T、r2·H2T、r3·H3T、…以及rn·HnT。每当计算单元112计算出一组点积rk·HkT,就会被累加在征状计算单元110中的存储单元114,并且透过加法器116,与下一组内积rk+1·Hk+1T,进行加总,并再次写入存储单元114。最后,当所有的部分接收息r1~r-n与相应的转置矩阵H1T~HnT的内积计算完毕后,可以得到征状S,这个过程可以表达如下:

r1·H1T⊕r2·H2T⊕r3·H3T⊕…⊕rn·HnT=S

通过征状计算单元110计算出的征状S,在一个迭代结束后,会被写入至另一组存储单元120中。在下一个迭代中,存储单元120会维持所存储的征状S不变,不受存储单元114的影响。权重计算单元130会根据存储单元120中存储的征状S,计算出多组权重矢量。其中,权重计算单元130会利用征状S分别与子矩阵H1~Hn进行内积计算,从而得到权重矢量W1--=ΣS·H1、W2=ΣS·H2、….以及Wn=ΣS·Hn。接着,翻转计算单元140会根据权重矢量W1--、W2、….以及Wn,以及翻转临界值调整单元150所设定的翻转临界值THk,产生分别对于每一个接收信息区块r1~r-n的位翻转矢量v1~v-n来进行错误校正。其中,权重矢量W1--、W2、….以及Wn与相应的接收信息区块r1~r-n中的位的错误机率正相关。

一开始,翻转临界值调整单元150会将翻转临界值THk设定为TH1(通常为所有可供设定的临界值中的最大值,同时也是校验矩阵H的一列(column)中“1”的个数),接着,翻转计算单元140会根据当前的翻转临界值TH1逐个检查权重矢量W1-、W2…Wn,确认是否权重矢量W1-、W2…Wn-中有元素大于或等于当前的翻转临界值TH1,从而产生位翻转矢量v1~vn。例如,当翻转计算单元140检查权重矢量W2-时,发现其中的一个或多个元素大于或等于翻转临界值TH1,那么翻转计算单元140会针对接收信息区块r2产生一个位翻转矢量v2,位翻转矢量v2指出接收信息区块r2中对应于所述一个或多个元素的位需要进行位翻转(代表该位可能错误),如将某个位的值由“1”翻转为“0”或者是由“0”翻转为“1”。另一方面,若翻转计算单元140没有发现权重矢量W1-、W2…Wn-中有元素大于或等于当前的翻转临界值TH1,则会产生数值为零的位翻转矢量v1~vn。再者,翻转处理单元160会根据位翻转矢量v1~vn来更新存储在存储单元170中的接收信息区块r1~rn,从而得到处理后的接收信息区块r1’~rn’。

在一个迭代中,翻转计算单元140会针对每个权重矢量W1-、W2…Wn进行相同检查,并且根据检查结果产生位翻转矢量v1~vn,并且在所有权重矢量W1、W2…Wn检查完毕后,结束这个迭代。在一个迭代中,如果翻转计算单元140并没有检查出权重矢量W1-、W2…Wn中的元素有任何一个大于或等于当前的翻转临界值TH1,则会要求翻转临界值调整单元150将当前的临界值调降翻转临界值为TH2。之后,下一个迭代中,翻转计算单元140会根据临界值TH2对每个权重矢量W1-、W2…Wn进行检查,并判断是否需要对某一个接收信息区块r1~rk进行位翻转,以产生位翻转矢量v1~vn。

另一方面,一旦翻转计算单元140针对了接收信息区块r1~r-n中的一个产生可造成位翻转的非零位翻转矢量,那么,在这个迭代结束后,翻转处理单元160会将存储单元170中的接收信息更新为处理后的接收信息区块r1’~rn’。并且,在下一个迭代中,征状计算单元110会根据处理后的接收信息区块r1’~rn’重新计算一次征状,得到征状S’,而权重计算单元130再根据征状S’与校验矩阵H(H1~Hn)进行权重计算,从而得到新的n组权重矢量:W1--’、W2’、….以及Wn’。在得到新的n组权重矢量W1--’、W2’、….以及Wn’之后,翻转计算单元140再次根据翻转临界值TH1进行检查。请注意,一旦翻转计算单元140在某个迭代中,针对了某个接收信息区块r1~rk进行了位翻转,那么在下一个迭代中,翻转临界值会被重置成所有翻转临界值中最大的一者(如TH1);只有在检查的过程中没有发现权重矢量W1-、W2…Wn中有元素大于或等于当前的翻转临界值,此时才会调降翻转临界值,(如由TH1调降成TH2)。解码装置100将反复进行这样的操作,直到计算出为0的征状,这就表示处理后的接收信息中已不包含任何错误,并且与传送端所传送出的码字c相同,此时针对接收信息的错误纠正流程结束。又或者,当迭代次数达到一个预设上限,则代表接收信息r中的错误无法被纠正,流程亦结束,接收信息r被视为无效。

图4为以上的纠正流程中,前几个迭代的时序图。在这个范例中,为了简化说明,接收信息r只包含为三个接收信息区块r1、r2以及r3。首先可看到,在时间点T1时,征状计算单元110接收到包含有接收信息区块r1、r2以及r3-的接收信息r,并且在迭代I中计算出征状S。在迭代I之中,权重计算单元130基于征状S,依序计算出权重矢量W1、W2、以及W3。同时,每当权重计算单元130计算出一组权重矢量后,翻转计算单元140便根据当前的临界值TH1对权重矢量W1、W2、W3进行检查,并在检查后视情况,判定是否对接收信息区块r1、r2以及r3进行特定位的翻转,从而得到处理后的接收信息r’的接收信息区块r1’、r2’以及r3’。在迭代II之中,征状计算单元110再次利用纠正后的接收信息区块r1’、r2’以及r3’计算征状,以及得到新的征状S’。

从图4的时序图可以看出,征状的更新与位翻转判断之间有延迟,例如,尽管在迭代I的初期就可以得到处理后的接收信息区块r1’,但是必须等到进入迭代II之后,针对接收信息区块r1的处理结果,才会影响征状,使得征状被更新成S’。另一个问题在于,不论一个迭代中是否接收信息区块r1、r2以及r3有被更新,征状计算单元110都需要读取与利用存储单元170中所有的接收信息区块r1、r2以及r3来计算征状,造成无谓的耗电。因此,为了解决这个问题,本发明的第二个实施例提供了另一种架构。

图5为改善征状更新延迟与耗电问题的解码装置200的功能方块示意架构图。这一个实施例的征状计算单元210,权重计算单元230、翻转计算单元240、翻转处理单元260、存储单元270的原理与操作大致上与权重计算单元130与翻转计算单元140、翻转处理单元160与存储单元170相同,其特点在于,每当位翻转发生后,征状立刻被更新。请同时参考图5的功能方块示意图与图6的时序图。首先,在时间点T1后,征状计算单元210利用迭代的方式,根据接收信息区块r1~r3(此处为n=3的范例)计算出征状S,接着,权重计算单元230计算出了权重矢量W1,而翻转计算单元240则根据权重矢量W1-判断出信息区块r1需进行位翻转(假设此时符合位翻转的条件),产生对应接于接收信息区块r1的位翻转矢量v1,这时,征状计算单元210会立刻根据位翻转矢量v1更新征状S,得到征状S’。基于征状S’,翻转计算单元240计算出权重矢量W2’,并且再次判断出信息区块r2需进行位翻转(假设此时亦符合位翻转的条件),得到对应于信息区块r2的位翻转矢量v2,并且让征状计算单元210再一次更新征状S’,从而得到征状S”。接着,再针对信息区块r3产生位翻转矢量v3。另一方面,存储单元270在时间点T1之间存储了接收信息区块r1~r3,之后,翻转处理单元260根据位翻转矢量v1~v3来更新存储单元270中的接收信息区块r1~r3,使其成为处理后的接收信息区块r1'~r3'。

由于这个实施例不包含前述实施例的存储单元120,因此每当一个接收信息区块经过位翻转处理后,征状的改变可以马上反映在下一个接收信息区块的处理与更新上,因此,解码效率可被提升。另一方面,在电路架构上,征状计算单元210不再需要依据所有的接收信息区块来计算与更新征状,而是只利用接受信息区块再处理后的变化(亦即,位翻转矢量),改变征状计算单元210中存储单元224的累加结果,从而更新征状,这样可大幅降低在前一个实施例中反复在每个迭代中进行征状计算所造成的无谓耗电。另一方面,由于解码效率的提升,也实质上提升了解码装置200的吞吐量(throughput)。

在这一个实施例中,由于征状是持续被更新的,所以难以界定迭代边界,所以无法以迭代为基础,调整翻转临界值。因此,翻转临界值调整单元250需要基于权重矢量W1~Wn的检查次数与在一定次数中是否发生位翻转来调整翻转临界值。举例来说,若接收信息r被分割为n段接收信息区块r1~rn,那么翻转临界值设定单元250会在n个阶段(cycle)的检查中,观察是否翻转计算单元240决定对某个接收信息区块进行位翻转(亦即,产生非零的位翻转矢量),如果历经了n个阶段的检查,都没有发生位翻转,则会调降临界值。另外,如果位翻转发生的频率过高,翻转临界值调整单元250则会提高翻转临界值。

为了提升解码或错误校正的可靠度,在本发明的一个实施例中,会给予每个位至少四种不同的位状态。如同上述,每一个接收信息区块r1~r-n包含有一个或多个位。每个位在接收后,会被为判定为一第一位值(如:“1”)或一第二位值(如:“0”)。接者,每一个位的四种不同的位状态包含:strong“1”、strong“0”、weak“1”与weak“0”。判定出的位值“1”会使状态判断单元180/280让该位进入strong“1”的位状态,以及判定出的位值“0”会使状态判断单元180/280让该位进入strong“0”的状态,而状态判断单元180/280则将每个位的初始位状态记录在存储单元170/270中,而且,存储单元170/270也会持续记录每个位后续的位状态变化。

在此例中,翻转计算单元140/240所产生的非零位翻转矢量会让位由一个位状态转换成另一个位状态,但不一定会直接造成位值的翻转。当征状计算单元110/210计算出征状S,以及权重计算单元110/230根据征状S与校验矩阵H(H1~Hn)计算出权重矢量W1~Wn后,翻转计算单元140/240将根据权重矢量W1~Wn以及当前的翻转临界值THk来产生位翻转矢量v1~vn,翻转处理单元160/260根据非零的位翻转矢量v1~vn,更新存储单元170/270中一个或多个位的状态。根据权重矢量W1~Wn以及翻转临界值THk,翻转计算单元140/240会产生足以造成不同调整幅度的位翻转矢量。其中,strong“1”可视为可能性较大的位值“1”的状态、strong“0”可视为可能性较大的位值“0”的状态、weak“1”可视为可能性较低的位值“1”的状态,以及weak“0”可视为可能性较低的位值“0”的状态。如第7图所示,四种位状态有着远近关系,当转换至相邻的位状态时,可视为进行幅度较小的调整,而转换至不相邻的位状态时,可视为进行幅度较大的调整。

再者,如第8图所示,若权重矢量Wk的一元素wk大于或等于当前翻转临界值THk,且临界值THk不等于最大翻转临界值TH1时,则翻转计算单元140/240会产生让相应于所述元素的一个位的状态具有一较小改变幅度的位翻转矢量。举例来说,若该位的位状态为strong“0”,则这个位翻转矢量会让这个位调整为weak“0”,又或者是,当该位的位状态为weak“0”时,则会被位翻转矢量调整为weak“1”;另一方面,若该位的位状态为strong“1”时,则上述的位翻转矢量会让这个位调整为weak“1”,又或者是,该位的位状态为weak“1”时,则被调整为weak“0”。

再者,如图9所示,如果权重矢量Wk-的一个元素wk小于或等于一个翻转临界值THlow下限(非零)时,则翻转计算单元140/240会让对应位的位状态由weak“0”调整回strong“0”,又或者是由weak“1”调整回strong“1”。

另外,如图10所示,如果权重矢量Wk的一元素wk等于当前翻转临界值THk,且当前翻转临界值THk等于最大临界值TH1时,则翻转计算单元140/240会产生让相对应的位的位状态具有一较大改变幅度的位翻转矢量。举例来说,若这个位的位状态为strong“0”时,则位翻转矢量会让这个位的状态调整为weak“1”或者是strong“1”,又或者是这个位的位状态为weak“0”时,会被调整为strong“1”。另一方面,若这个位的位状态为strong“1”时,则位状态会被调整为weak“0”或者是strong“0”,又或者是这个位的位状态为weak“1”时,将被调整为strong“0”。

由图7~图10可看出,在不同条件的wk与THk之下,翻转计算单元140/240所产生的位翻转矢量对位状态造成的调整幅度也不同。当元素wk等于当前翻转临界值THk时,翻转计算单元140/240会造成位状态的较大调整幅度,因为此时代表位值错误的可能性较大,需要较大的状态改变,从而造成位值的实质翻转,另一方面,当元素wk大于或等于当前翻转临界值THk,且当前翻转临界值THk不等于最大翻转临界值TH1时,则代表位值错误的可能性不明确,需要更多的迭代运算来确认,因此让位状态的改变幅度较小。最后,当元素wk小于或等于一个翻转临界值THlow下限时,则代表错误可被纠正的机会不大,因此倾向于不改变实质位值,让位状态退回较肯定的状态,避免把正确的位值改错。透过以上的设计,可以让错误纠正有更佳的可靠度,不会因为少数不恰当的位翻转,造成不正确的纠正结果。

以上所述的发明内容,可通过处理器来执行对应的软件、透过纯电路或者是透过两者的组合。其中,处理器可为通用处理器(general-purpose processor),或者是如数字信号处理器(digital signal processor)的类的特定处理器。软件可能存储于电脑可读取媒体(例如:光盘(optical disk)、硬盘(hard disk drive)、闪存(flash memory)、各种随机存取存储器(random-access memory,RAM)、各种只读内存(read-only memory,ROM)或者是任何可被处理器所辨别的存储器中,并且包含各种程式逻辑(programming logic)、指令,或者是用以实现本发明的必要资料。此外,在纯电路的架构中,辨识模块以及判断模块可能包含有硬体逻辑(hard-wired logic),可编程逻辑(如:现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)或者是复杂可可编程逻辑装置(Complex Programmable Logic Device,CPLD)、特殊应用集成电路(Application-specific integrated circuit,ASIC)。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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