具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明的主要思想是根据预先设定的码长、码率以及行重,设置用于生成奇偶校验矩阵的数字序列,然后根据数字序列、采用循环移位的方式构造具有准循环(QC:Quasi Cyclic)结构的LDPC码的奇偶校验矩阵,再以所得到的奇偶校验矩阵对输入数据进行变换,得到包含奇偶校验信息的LDPC码字。如此,只需用非常少量的存储空间存储数字序列,即可解决奇偶校验矩阵存储量过大的问题。
图2为本发明一类LDPC码的实现方法的示例性流程图。参见图2,该方法包括以下步骤:
步骤201:根据预先设定的码长、码率以及行重,设置用于生成奇偶校验矩阵的数字序列。
本示例中,根据预先设定的码长、码率以及行重,确定本示例将要构造的奇偶校验矩阵的行数和列数,其中,行数为LDPC码的码长,表示为N;列数为校验位长度,表示为M,并假设所构造的本发明QC-LDPC码的奇偶校验矩阵H如(1)所示:
(1)中,Ai,j是t行×t列的循环矩阵,称为奇偶校验矩阵H的子矩阵,由于Ai,j是循环矩阵,也可将其称为奇偶校验矩阵H的循环子矩阵,因此本发明奇偶校验矩阵H具有准循环结构,故而将本发明所构造的LDPC码称为QC-LDPC码。
根据上述确定的奇偶校验矩阵H的行数和列数构造多个分矩阵,使得所构造的分矩阵的行数为矩阵H的行数的分矩阵个数分之一、列数与矩阵H的列数相等,并令所构造的每个分矩阵与上述矩阵H中的每一行循环子矩阵相对应,即可以将每个分矩阵表示为:
Ai=[Ai,1,Ai,2…,Ai,c] (i=1,2,…,u) (2)
其中,分矩阵的个数u=N/t,分矩阵中子矩阵的个数c=M/t。本步骤中所设置的数字序列用于确定每个分矩阵的第一行中元素1所处的列数,也即得到了每个分矩阵中的第一行,因此,可以将该数字序列称为奇偶校验矩阵的行生成规则。这里,为了保证所构造的校验矩阵是稀疏的,每一行中任意两个元素1所处的列数对t取模所得的值应互不相同,因此,在所设置的数字序列中,用于确定每个分矩阵的第一行中元素1所处的列数的任意两个数字对t取模所得的值互不相同。
对于规则LDPC码以及行重相同的非规则LDPC码,若以ρ表示行重、u表示校验矩阵中分矩阵的个数,由于该数字序列中的每ρ个数字代表一个分矩阵的第一行中元素1所处的列数,因此,该数字序列由ρ×u个数字组成,相对于M×N来说,所需的存储空间得以极大地减少;对于行重不相同的非规则LDPC码,虽然其行重不确定,但是,该数字序列中所包含的数字个数最多为行重最大值与u之积,因此,相对于M×N来说,其所需的存储空间也将得以极大地减少。
步骤202:根据所设置的数字序列,采用循环移位的方式构造LDPC码的奇偶校验矩阵。
本步骤中,首先根据数字序列确定每一个分矩阵中的第一行元素;然后将每个分矩阵按列均匀划分为c个子矩阵,使得每个子矩阵是一个方阵,这里,c与步骤201所述c的物理含义相同;最后,根据每个子矩阵的第一行元素,采用循环移位的方式得到整个子矩阵中其他行的元素,即为本发明所述循环子矩阵,如此,得到由各个循环子矩阵构成的本示例中QC-LDPC码的奇偶校验矩阵。假设所设置的用于生成奇偶校验矩阵的数字序列包含y个数字,由于该数字序列中,用于确定每个分矩阵的第一行中元素1所处的列数的任意两个数字对t取模所得的值互不相同,因此,每个循环子矩阵的每一行中至多只有一个元素1,于是,所得到的校验矩阵中包含y个含有元素1的循环子矩阵,由矩阵的性质可知,这些含有元素1的循环子矩阵是置换单位阵。
本步骤中,得到奇偶校验矩阵之后,可以对其进行各种角度的旋转、行置换、列置换或改变循环子矩阵位置的任何变换。
步骤203:利用所得到的奇偶校验矩阵,将输入数据变换为LDPC码字。
本步骤中,得到奇偶校验矩阵之后,可以按照与现有技术相同的方式对输入数据进行编码,得到包含奇偶校验信息的输出数据。
至此,结束本发明一类准循环的LDPC码的实现方法的示例性流程。
在实际应用中,将经过本发明QC-LDPC实现方法编码之后的数据进行交织、调制之后,即可向外发射。这里,调制方式可以包括:正交幅度调制(QAM)、相移键控(PSK)、幅度相移键控(APSK)、差分相移键控(DPSK)、绝对相移键控(BPSK)、差分幅度相移键控(DAPSK)和正交频分复用(OFDM)等。调制信号可以通过各种通信系统来传输,包括支持移动多媒体广播的地面链路等,例如:可以通过地面移动多媒体广播系统(T-MMB:Terrestrial Mobile Multimedia Broadcasting)来传输。
本发明可以适用于规则LDPC码和非规则LDPC码,以下通过四个实施例,对本发明技术方案进行详细说明。
实施例一:
本实施例以规则(4608,2304)LDPC码为例进行说明。本实施例将要实现的规则LDPC码的码长N为4608,行重ρ=6,码率v=1/2。由码率、码长以及校验方程个数之间的对应关系可知,本实施例校验矩阵中校验方程个数M=4608-2304=2304。另外,本实施例中,将以72行×72列的循环子矩阵为最小循环单位为例说明上述准循环LDPC码的实现过程。
本实施例方法流程图与图2所示本发明示例性方法流程图类似,参见图2,本实施例中QC-LDPC码的实现方法包括以下步骤:
在步骤201中,根据本实施例中预先设置的码长、码率以及行重,设置数字序列,如下所示:
9 |
212 |
384 |
2326 |
2803 |
3343 |
140 |
264 |
465 |
2405 |
2870 |
3445 |
192 |
305 |
560 |
2449 |
2925 |
3494 |
233 |
367 |
617 |
2587 |
2989 |
3571 |
295 |
460 |
703 |
2654 |
3055 |
3632 |
388 |
514 |
732 |
2709 |
3157 |
3730 |
442 |
610 |
832 |
2773 |
3206 |
3764 |
538 |
650 |
910 |
2839 |
3283 |
3886 |
578 |
770 |
957 |
2941 |
3344 |
3906 |
698 |
855 |
1067 |
2990 |
3442 |
4031 |
783 |
924 |
1085 |
3067 |
3476 |
4043 |
852 |
949 |
1156 |
3128 |
3598 |
4148 |
877 |
1065 |
1259 |
3226 |
3618 |
4242 |
993 |
1145 |
1335 |
3260 |
3743 |
4257 |
1073 |
1155 |
1393 |
3382 |
3755 |
4388 |
1083 |
1246 |
1456 |
3402 |
3860 |
4440 |
1174 |
1325 |
1565 |
3527 |
3954 |
4481 |
1253 |
1369 |
1648 |
3539 |
3969 |
4543 |
1297 |
1507 |
1664 |
2342 |
3644 |
4100 |
1435 |
1574 |
1734 |
2419 |
3738 |
4152 |
1502 |
1629 |
1849 |
2480 |
3753 |
4193 |
1557 |
1693 |
1924 |
2578 |
3884 |
4255 |
1621 |
1759 |
1980 |
2612 |
3936 |
4348 |
1687 |
1861 |
2088 |
2734 |
3977 |
4402 |
1789 |
1910 |
2115 |
2754 |
4039 |
4498 |
1838 |
1987 |
2183 |
2879 |
4132 |
4538 |
1915 |
2048 |
2301 |
2324 |
2891 |
4186 |
4 |
1976 |
2146 |
2446 |
2996 |
4282 |
107 |
2074 |
2180 |
2466 |
3090 |
4322 |
183 |
2108 |
2302 |
2591 |
3105 |
4442 |
3 |
241 |
2230 |
2603 |
3236 |
4527 |
94 |
304 |
2250 |
2708 |
3288 |
4596 |
为方便描述,将上述本实施例的数字序列称为数字序列一。参见数字序列一,该序列中的每一行代表一个分矩阵的第一行中元素1所处的列数。
由于本实施例中LDPC码的行重为6,因此,每一个分矩阵的第一行中存在6个元素1,即存在6个取值为1的列;另外,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而校验方程的个数为2304,因此,奇偶校验矩阵中分矩阵的个数u=2304/72=32个,所以,本实施例中的数字序列一为32行×6列=192个数字组成的序列。其中,每6个数字为一组,代表了一个分矩阵的第一行中元素1所处的列数;每一组6数字组中的任意两个数字对72取模所得的值互不相同,以保证每个循环子矩阵的同一行中最多只有一个1,即保证奇偶校验矩阵是稀疏的。
在步骤202中,根据所设置的数字序列一,采用循环移位的方式构造LDPC码的奇偶校验矩阵。
本步骤中,按照下述步骤构造LDPC码的奇偶校验矩阵:
第1步,将数字序列一均匀划分为多个包含行重个数字的数字组,并以数字序列一中的每一个数字组中的数字作为相应分矩阵的第一行中元素1所处的列数。即,以数字序列一中的第一个数字组中的数字作为第一个分矩阵的第一行中元素1所处的列数,以数字序列一中的第二个数字组中的数字作为第二个分矩阵的第一行中元素1所处的列数,依此类推,直至以数字序列一中的最后一个数字组中的数字作为最后一个分矩阵的第一行中元素1所处的列数。
具体而言,将数字序列一均匀划分为多个包含6个数字的数字组,根据所得到的每一个数字组中的数字,即如数字序列一所示的每一行中的数字,得到奇偶校验矩阵的每个分矩阵的第一行元素:
例如,如数字序列一所示,其第一个数字组为9、212、384、2326、2803和3343,表示奇偶校验矩阵中第一个分矩阵的第一行,即奇偶校验矩阵的第一行中的第9列、第212列、第384列、第2326列、第2803列和第3343列的取值为1,第一个分矩阵的第一行中的其余列为0;
其第二个数字组为140、264、465、2405、2870和3445,表示奇偶校验矩阵的第二个分矩阵的第一行,即奇偶校验矩阵的第73行中的第140列、第264列、第465列、第2405列、第2870列和第3445列的取值为1,第二个分矩阵的第一行中的其余列为0,对于其他分矩阵的第一行的取值,可以参照举例类推得到,在此不再赘述。
第2步,将已确定第一行取值的每个分矩阵按列均匀划分为c个子矩阵;这里,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而码长为4608,因此,每个分矩阵中循环子矩阵的个数c=4608/72=64个;经划分之后,本实施例的奇偶校验矩阵将被划分为32行×64列=2048个循环子矩阵,且每个循环子矩阵的第一行元素的取值已经确定。
第3步,针对每个循环子矩阵,采用将其第一行元素循环移位的方式得到该循环子矩阵中其他行元素的取值。例如,可以对第1行元素循环左移x位,得到第2行元素;对第2行元素循环左移x位,得到第3行元素,依此类推,即可得到从第2行到第72行的所有元素的取值。这里,当然也可以采取循环右移或者其他循环移位方式进行移位。
经过上述第1步至第3步的操作之后,即可得到本实施例中规则QC-LDPC码的奇偶校验矩阵。由于本实施例数字序列中存在32行×6列=192个数字,并且,每一个数字组中的任意两个数字对72取模所得的值互不相同,保证了每个循环子矩阵的同一行中最多只有一个1,因此,本实施例所得到的奇偶校验矩阵中将存在192个置换单位矩阵。
本步骤中,得到奇偶校验矩阵之后,可以对其进行各种角度的旋转、行置换、列置换或改变循环子矩阵位置的任何变换。
在步骤203中,按照与现有技术相同的方式利用所得到的奇偶校验矩阵,将输入数据变换为LDPC码字。
至此,结束本发明实施例一中QC-LDPC码的实现方法的示例性流程。
由上述实施例可见,本发明采用了以数字序列表示奇偶校验矩阵、并对数字序列循环移位得到奇偶校验矩阵的方式,使得存储奇偶校验矩阵所需的存储空间达到了最小化。
此外,由于本实施例的奇偶校验矩阵具有准循环的结构特性,使得在实际应用中,可以利用循环移位的特性实现快速寻址,节约处理资源,简化编码和译码操作,使编码和译码操作的复杂度得以降低。
下面通过与现有技术的仿真对比,说明本发明实施例一中所提供的(4608,2304)规则QC-LDPC码的性能。图3为本发明实施例一中(4608,2304)规则QC-LDPC码在AWGN信道中采用BPSK调制的性能曲线示意图。本次仿真中,译码采用sum-product算法,最大迭代次数为50。
参见图3,其中,直线301表示香农限;
曲线302表示采用本发明(4608,2304)规则QC-LDPC码进行编码、BPSK方式进行调制、然后在加性高斯白噪声(AWGN)信道中传输、并采用和积译码算法(SPA:Sum-Product Arithmetic)进行译码的信号的误比特率(BER)曲线;
曲线303表示采用本发明(4608,2304)规则QC-LDPC码进行编码、BPSK方式进行调制、然后在AWGN信道中传输、并采用SPA算法进行译码的信号的误帧率(BLER)曲线;
曲线304表示未经编码,直接采用BPSK调制,再经AWGN信道传输的信号的BER性能曲线;
由图3可见,本发明(4608,2304)规则QC-LDPC码的盆底(error floor)非常低,并且,在BER=10-9处,其性能曲线距离香农限仅1.9dB。
将本实施例所提供的(4608,2304)规则QC-LDPC码应用于T-MMB系统的AWGN信道,并采用8DPSK方式进行调制、SPA算法进行译码,将得到如图4所示的BER性能曲线。参见图4,图中所示曲线为在T-MMB系统的AWGN信道中,采用本发明(4608,2304)规则QC-LDPC码进行编码、8DPSK方式进行调制、并采用SPA算法进行译码之后的信号BER性能曲线。
在上述实施例一中,对本发明(4608,2304)规则QC-LDPC码的实现方法的具体实施方式进行了详细说明,下面的两个实施例中,将对本发明非规则QC-LDPC码的实现方法的具体实施方式进行详细说明。
实施例二:
本实施例以(4608,2304)行重相同的非规则LDPC码为例进行说明。本实施例将要实现的规则LDPC码的码长N为4608,行重ρ=7,码率v=1/2,由码率、码长以及校验方程个数之间的对应关系可知,本实施例校验矩阵中校验方程个数M=4608-2304=2304。另外,本实施例中,与实施例一相同,以72×72的循环子矩阵为最小循环单位为例说明上述准循环LDPC码的实现过程。
本实施例方法流程图与图2所示本发明示例性方法流程图类似,参见图2,本实施例中QC-LDPC码的实现方法包括以下步骤:
在步骤201中,根据本实施例中预先设置的码长、码率以及行重,设置数字序列,如下所示:
923 |
970 |
2044 |
2100 |
2976 |
3359 |
4191 |
136 |
288 |
1972 |
2422 |
2904 |
4243 |
4266 |
597 |
704 |
779 |
1048 |
2805 |
4274 |
4380 |
454 |
632 |
918 |
976 |
3233 |
4365 |
4425 |
846 |
904 |
1007 |
1321 |
2688 |
4429 |
4484 |
653 |
832 |
1019 |
1119 |
3089 |
4495 |
4577 |
538 |
581 |
702 |
863 |
3017 |
3511 |
4597 |
429 |
1596 |
1745 |
1842 |
2945 |
3458 |
3576 |
558 |
616 |
755 |
803 |
2658 |
3571 |
3604 |
486 |
544 |
683 |
1277 |
3197 |
3668 |
3682 |
659 |
800 |
889 |
1380 |
3125 |
3694 |
3765 |
587 |
687 |
2505 |
2567 |
3255 |
3800 |
3875 |
467 |
656 |
745 |
1482 |
3183 |
3850 |
3893 |
443 |
543 |
1672 |
1942 |
3338 |
3942 |
4000 |
335 |
425 |
601 |
2295 |
3039 |
4031 |
4067 |
210 |
529 |
729 |
964 |
2765 |
4043 |
4143 |
628 |
773 |
824 |
1194 |
1558 |
3421 |
4112 |
129 |
191 |
556 |
876 |
2238 |
2441 |
3273 |
513 |
908 |
953 |
2007 |
2085 |
2370 |
2875 |
978 |
1240 |
1510 |
1548 |
1683 |
1742 |
3343 |
65 |
134 |
147 |
764 |
1751 |
2395 |
2834 |
464 |
692 |
834 |
985 |
1366 |
1404 |
2985 |
3 |
913 |
2145 |
2207 |
2463 |
2587 |
3127 |
444 |
727 |
928 |
952 |
1222 |
1260 |
3137 |
303 |
476 |
618 |
769 |
1150 |
2652 |
3242 |
546 |
1116 |
1190 |
2251 |
2362 |
2637 |
2697 |
29 |
1590 |
1669 |
1857 |
2179 |
2355 |
2921 |
439 |
766 |
972 |
1046 |
1359 |
1518 |
3026 |
481 |
862 |
1650 |
1934 |
1947 |
2211 |
2869 |
276 |
393 |
520 |
1862 |
1875 |
2139 |
3405 |
648 |
830 |
891 |
1381 |
1506 |
2551 |
2725 |
249 |
325 |
684 |
2045 |
2479 |
2738 |
3443 |
为方便描述,将上述本实施例的数字序列称为数字序列二。参见数字序列二,该序列中的每一行代表一个分矩阵的第一行中元素1所处的列数。
由于本实施例中LDPC码的行重为7,因此,每一个分矩阵的第一行中存在7个元素1,即存在7个取值为1的列;另外,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而校验方程的个数为2304,因此,奇偶校验矩阵中分矩阵的个数u=2304/72=32个,所以,本实施例中的数字序列二为32行×7列=244个数字组成的序列。其中,每7个数字为一组,代表了一个分矩阵的第一行中元素1所处的列数;每一组7数字组中的任意两个数字对72取模所得的值互不相同,以保证每个循环子矩阵的同一行中最多只有一个1,即保证奇偶校验矩阵是稀疏的。
在步骤202中,根据所设置的数字序列二,采用循环移位的方式构造LDPC码的奇偶校验矩阵。
本步骤中,按照下述步骤构造LDPC码的奇偶校验矩阵:
第1步,将数字序列二均匀划分为多个包含7个数字的数字组,根据所得到的每一个数字组中的数字,即如数字序列二所示的每一行中的数字,得到奇偶校验矩阵的每个分矩阵的第一行元素:
例如,如数字序列二所示,其第一个数字组为923、970、2044、2100、2976、3359和4191,表示奇偶校验矩阵中第一个分矩阵的第一行,即奇偶校验矩阵的第一行中的第923列、第970列、第2044列、第2100列、第2976列、第3359列和第4191列的取值为1,第一个分矩阵的第一行中的其余列为0;
其第二个数字组为136、288、1972、2422、2904、4243和4266,表示奇偶校验矩阵的第二个分矩阵的第一行,即奇偶校验矩阵的第73行中的第136列、第288列、第1972列、第2422列、第2904列、第4243列和第4266列的取值为1,第二个分矩阵的第一行中的其余列为0,对于其他分矩阵的第一行的取值,可以参照举例类推得到,在此不再赘述。
第2步,将已确定第一行取值的每个分矩阵按列均匀划分为c个子矩阵;这里,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而码长为4608,因此,每个分矩阵中循环子矩阵的个数c=4608/72=64个;经划分之后,本实施例的奇偶校验矩阵将被划分为32行×64列=2048个循环子矩阵,且每个循环子矩阵的第一行元素的取值已经确定。
第3步,针对每个循环子矩阵,采用将其第一行元素循环移位的方式得到该循环子矩阵中其他行元素的取值。例如,可以对第1行元素循环左移x位,得到第2行元素;对第2行元素循环左移x位,得到第3行元素,依此类推,即可得到从第2行到第72行的所有元素的取值。这里,当然也可以采取循环右移或者其他循环移位方式进行移位。
经过上述第1步至第3步的操作之后,即可得到本实施例中非规则QC-LDPC码的奇偶校验矩阵。由于本实施例数字序列中存在32行×7列=224个数字,并且,每一个数字组中的任意两个数字对72取模所得的值互不相同,保证了每个循环子矩阵的同一行中最多只有一个1,因此,本实施例所得到的奇偶校验矩阵中将存在224个置换单位矩阵。
本步骤中,得到奇偶校验矩阵之后,可以对其进行各种角度的旋转、行置换、列置换或改变循环子矩阵位置的任何变换。
在步骤203中,按照与现有技术相同的方式利用所得到的奇偶校验矩阵,将输入数据变换为LDPC码字。
至此,结束本发明实施例二中QC-LDPC码的实现方法的示例性流程。
由上述实施例可见,本发明采用了以数字序列表示奇偶校验矩阵、并对数字序列循环移位得到奇偶校验矩阵的方式,使得存储奇偶校验矩阵所需的存储空间达到了最小化。
并且,由于本实施例的奇偶校验矩阵具有准循环的结构特性,使得在实际应用中,可以利用循环移位的特性实现快速寻址,节约了处理资源,简化了编码和译码操作,使编码和译码操作的复杂度得以降低。
下面通过与现有技术的仿真对比,说明本发明实施例二中所提供的(4608,2304)非规则QC-LDPC码的性能。图5为本发明实施例二中(4608,2304)非规则QC-LDPC码在AWGN信道中采用BPSK调制的性能曲线示意图。本次仿真中,译码采用SPA算法,最大迭代次数为50。
参见图5,其中,直线501表示香农限;
曲线502表示采用本发明(4608,2304)非规则QC-LDPC码进行编码、BPSK方式进行调制、然后在AWGN信道中传输、并采用SPA算法进行译码的信号的BER曲线;
曲线503表示采用本发明(4608,2304)非规则QC-LDPC码进行编码、BPSK方式进行调制、然后在AWGN信道中传输、并采用SPA算法进行译码的的信号的BLER曲线;
曲线504表示未经编码,直接采用BPSK调制,再经AWGN信道传输的信号的BER性能曲线;
由图5可见,本发明(4608,2304)非规则QC-LDPC码的error floor非常低,并且,在BER=10-9处,其性能曲线距离香农限仅1.6dB,比本发明实施例一中所提供的(4608,2304)规则QC-LDPC码的性能更优。
在上述实施例二中,以行重相同的非规则QC-LDPC码为例,详细说明了本发明技术方案,下面再通过一个行重不相同的LDPC码示例,对本发明非规则QC-LDPC码的实现方法进行介绍。
实施例三:
本实施例以(4608,3096)行重不相同的非规则LDPC码为例进行说明。本实施例将要实现的规则LDPC码的码长N为4608,行重ρ=12或13,码率v=43/64,由码率、码长以及校验方程个数之间的对应关系可知,本实施例校验矩阵中校验方程个数M=4608-3096=1512。另外,本实施例中,与实施例一相同,以72×72的循环子矩阵为最小循环单位为例说明上述准循环LDPC码的实现过程。
本实施例方法流程图与图2所示本发明示例性方法流程图类似,参见图2,本实施例中QC-LDPC码的实现方法包括以下步骤:
在步骤201中,根据本实施例中预先设置的码长、码率以及行重,设置数字序列,如下所示:
536 |
1098 |
1156 |
1259 |
1889 |
2012 |
3529 |
3656 |
3739 |
3749 |
3907 |
3998 |
|
100 |
322 |
977 |
1026 |
1672 |
1940 |
2994 |
3073 |
3457 |
3677 |
4207 |
4382 |
|
743 |
1868 |
3512 |
3595 |
3605 |
3697 |
3763 |
3854 |
3900 |
4072 |
4230 |
4310 |
|
1199 |
1227 |
1429 |
3351 |
3523 |
3691 |
3782 |
3828 |
3895 |
4064 |
4150 |
4272 |
|
1079 |
2022 |
2173 |
2260 |
3194 |
3710 |
3823 |
3928 |
3992 |
4162 |
4389 |
4393 |
|
419 |
1362 |
1384 |
2475 |
2553 |
3547 |
3638 |
3856 |
4006 |
4090 |
4448 |
4531 |
|
144 |
146 |
1580 |
1648 |
2212 |
3449 |
3612 |
3784 |
4018 |
4089 |
4124 |
4469 |
4561 |
502 |
1508 |
2140 |
2508 |
2757 |
2819 |
2909 |
2978 |
3494 |
3540 |
4127 |
4555 |
|
2 |
683 |
791 |
1313 |
2376 |
2991 |
3118 |
3183 |
3305 |
3468 |
3980 |
4055 |
|
611 |
719 |
767 |
795 |
997 |
3254 |
3568 |
3632 |
3802 |
3873 |
3983 |
4102 |
4145 |
171 |
436 |
1169 |
1954 |
2052 |
2409 |
2693 |
2762 |
3496 |
3801 |
3836 |
4030 |
|
59 |
99 |
258 |
930 |
1053 |
1097 |
2531 |
2621 |
2690 |
2863 |
2902 |
3658 |
|
265 |
2090 |
2223 |
2282 |
2418 |
3271 |
3366 |
3502 |
3586 |
3657 |
3978 |
4036 |
4139 |
309 |
371 |
709 |
1374 |
1483 |
2331 |
3408 |
3514 |
3585 |
3695 |
3906 |
4067 |
|
389 |
1666 |
1834 |
2079 |
2138 |
2337 |
2873 |
2894 |
3548 |
3892 |
4103 |
4151 |
|
809 |
932 |
1468 |
1564 |
1594 |
3670 |
3713 |
3762 |
3820 |
3923 |
4079 |
4107 |
|
493 |
570 |
1267 |
1309 |
2607 |
2729 |
3078 |
3158 |
3381 |
3598 |
3851 |
3959 |
4007 |
30 |
242 |
327 |
856 |
2470 |
2535 |
3526 |
3618 |
3676 |
3779 |
3935 |
4165 |
|
549 |
593 |
1123 |
1791 |
2606 |
2787 |
3048 |
3237 |
3451 |
3497 |
3546 |
3863 |
|
170 |
1584 |
1719 |
1778 |
1899 |
2415 |
3165 |
3743 |
3791 |
3819 |
3932 |
4120 |
|
640 |
870 |
979 |
1647 |
1787 |
1827 |
2004 |
2253 |
3671 |
3719 |
3747 |
4026 |
|
为方便描述,将上述本实施例的数字序列称为数字序列三。参见数字序列三,该序列中的每一行代表一个分矩阵的第一行中元素1所处的列数。
由于本实施例中LDPC码的行重为12或13,因此,每一个分矩阵的第一行中存在12个或13个元素1,即存在12个或13个取值为1的列,根据数字序列三,本实施例中存在17个行重为12的分矩阵、4个行重为13的分矩阵;另外,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而校验方程的个数为1512,因此,奇偶校验矩阵中分矩阵的个数u=1512/72=21个,所以,本实施例中的数字序列三为17行×12列+4行×13列=256个数字组成的序列。其中,每12个或13个数字为一组,代表了一个分矩阵的第一行中元素1所处的列数;每一组12个或13个数字组中的任意两个数字之差对72取模所得的值互不相同,以保证每个循环子矩阵的同一行中最多只有一个1,即保证奇偶校验矩阵是稀疏的。
在步骤202中,根据所设置的数字序列三,采用循环移位的方式构造LDPC码的奇偶校验矩阵。
本步骤中,按照下述步骤构造LDPC码的奇偶校验矩阵:
第1步,将数字序列三划分为多个包含行重个数字的数字组,根据所得到的每一个数字组中的数字,即如数字序列三所示的每一行,得到奇偶校验矩阵的每个分矩阵的第一行元素:
例如,如数字序列三所示,其第一个数字组为536、1098、1156、1259、1889、2012、3529、3656、3739、3749、3907和3998,表示奇偶校验矩阵中第一个分矩阵的第一行,即奇偶校验矩阵的第一行中的第536列、第1098列、第1156列、第1259列、第1889列、第2012列、第3529列、第3656列、第3739列、第3749列、第3907列和第3998列的取值为1,第一个分矩阵的第一行中的其余列为0;对于其他分矩阵的第一行的取值,可以参照举例类推得到,在此不再赘述。
第2步,将已确定第一行取值的每个分矩阵按列均匀划分为c个子矩阵;这里,由于本实施例中奇偶校验矩阵的循环子矩阵是72×72的矩阵,而码长为4608,因此,每个分矩阵中循环子矩阵的个数c=4608/72=64个;经划分之后,本实施例的奇偶校验矩阵将被划分为32行×64列=2048个循环子矩阵,且每个循环子矩阵的第一行元素的取值已经确定。
第3步,针对每个循环子矩阵,采用将其第一行元素循环移位的方式得到该循环子矩阵中其他行元素的取值。例如,可以对第1行元素循环左移x位,得到第2行元素;对第2行元素循环左移x位,得到第3行元素,依此类推,即可得到从第2行到第72行的所有元素的取值。这里,当然也可以采取循环右移或者其他循环移位方式进行移位。
经过上述第1步至第3步的操作之后,即可得到本实施例中非规则QC-LDPC码的奇偶校验矩阵。由于本实施例数字序列中存在256个数字,并且,每一个数字组中的任意两个数字对72取模所得的值互不相同,保证了每个循环子矩阵的同一行中最多只有一个1,因此,本实施例所得到的奇偶校验矩阵中将存在256个置换单位矩阵。
本步骤中,得到奇偶校验矩阵之后,可以对其进行各种角度的旋转、行置换、列置换或改变循环子矩阵位置的任何变换。
在步骤203中,按照与现有技术相同的方式利用所得到的奇偶校验矩阵,将输入数据变换为LDPC码字。
至此,结束本发明实施例三中QC-LDPC码的实现方法的示例性流程。
由上述实施例可见,本发明采用了以数字序列表示奇偶校验矩阵、并对数字序列循环移位得到奇偶校验矩阵的方式,使得存储奇偶校验矩阵所需的存储空间达到了最小化。
此外,由于本实施例的奇偶校验矩阵具有准循环的结构特性,使得在实际应用中,可以利用循环移位的特性实现快速寻址,节约了处理资源,简化了编码和译码操作,使编码和译码操作的复杂度得以降低。
下面通过与现有技术的仿真对比,说明本发明实施例三中所提供的(4608,3096)非规则QC-LDPC码的性能。图6为本发明实施例三中(4608,3096)非规则QC-LDPC码在AWGN信道中采用BPSK调制的性能曲线示意图。本次仿真中,译码采用sum-product算法,最大迭代次数为50。
参见图6,其中,直线601表示香农限;
曲线602表示采用本发明(4608,3096)非规则QC-LDPC码进行编码、BPSK方式进行调制、然后在AWGN信道中传输、并采用SPA算法进行译码的信号的BER曲线;
曲线603表示采用本发明(4608,3096)非规则QC-LDPC码进行编码、BPSK方式进行调制、然后在AWGN信道中传输、并采用SPA算法进行译码的信号的BLER曲线;
曲线604表示未经编码,直接采用BPSK调制,再经AWGN信道传输的信号的BER性能曲线;
由图6可见,本发明(4608,3096)非规则QC-LDPC码的error floor非常低,并且,在BER=10-9处,其性能曲线距离香农限小于1.5dB,比本发明实施例二中所实现的(4608,2304)非规则QC-LDPC码的性能更优。
在上面的实施例中对本发明QC-LDPC码的实现方法进行了详细的说明,下面通过一个编码器示例说明本发明QC-LDPC码的编码器的具体实施方式。
实施例四:
图7为本发明实施例四中QC-LDPC码的实现装置的结构示意图。参见图7,该实现装置包括:存储模块710、校验矩阵生成模块720和码字生成模块730,其中,校验矩阵生成模块720包括:数字序列分析单元721和循环移位单元722。
图7所示实现装置中,存储模块710,用于存储数字序列,并向校验矩阵生成模块720中的数字序列分析单元721提供其所存储的数字序列;
校验矩阵生成模块720中的数字序列分析单元721,用于根据存储模块710所提供的数字序列,以及LDPC码的行重,均匀划分数字序列得到多个包含所述行重个数字的数字组,并根据划分所得到的每一个数字序列、得到将奇偶校验矩阵按行均匀划分为多个分矩阵后的各个分矩阵的第一行元素,并将所得到的已确定第一行元素的每一个分矩阵发送给校验矩阵生成模块720中的循环移位单元722;
校验矩阵生成模块720中的循环移位单元722,用于将来自于数字序列分析单元721的每一个分矩阵按列均匀划分为方阵,得到该奇偶校验矩阵的已确定第一行元素的子矩阵,并根据每一个子矩阵的第一行元素、采用循环移位的方式得到每一个子矩阵,这里,每一个子矩阵即构成了本实施例中的奇偶校验矩阵,将该奇偶校验矩阵发送给码字生成模块730;
码字生成模块730,用于接收来自于校验矩阵生成模块720中的循环移位单元722的奇偶校验矩阵,并利用该奇偶校验矩阵,将输入数据变换为LDPC码字。
在图7所示实现装置中,可以进一步包括:校验矩阵变换单元,该校验矩阵变换单元,可以用于对循环移位单元722得到的奇偶校验矩阵进行各种角度的旋转、行置换、列置换或改变子矩阵位置等各种变换,然后将经过变换所得到的奇偶校验矩阵发送给码字生成模块730。
该校验矩阵变换单元可以单独设置于本实施例的实现装置中,也可以设置于校验矩阵生成模块720中,或者也可以设置于其他模块之中。
采用本发明图7所示LDPC码的实现装置,可以实现本发明实施例一至实施例三所述的LDPC编码。
由上述实施例可见,本发明采用了以数字序列表示奇偶校验矩阵、并对数字序列循环移位得到奇偶校验矩阵的方式,使得存储奇偶校验矩阵所需的存储空间达到了最小化。
此外,由于本实施例的奇偶校验矩阵具有准循环的结构特性,使得在实际应用中,可以利用循环移位的特性实现快速寻址,节约处理资源,简化编码和译码操作,使编码和译码操作的复杂度得以降低。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。