CN102624402B - 一种ldpc译码器 - Google Patents

一种ldpc译码器 Download PDF

Info

Publication number
CN102624402B
CN102624402B CN201210094131.1A CN201210094131A CN102624402B CN 102624402 B CN102624402 B CN 102624402B CN 201210094131 A CN201210094131 A CN 201210094131A CN 102624402 B CN102624402 B CN 102624402B
Authority
CN
China
Prior art keywords
data
matrix
output
input
ram
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.)
Active
Application number
CN201210094131.1A
Other languages
English (en)
Other versions
CN102624402A (zh
Inventor
余佳
滕晓兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Rongyida Information Technology Co ltd
Original Assignee
SHENZHEN GREAT FIRST TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHENZHEN GREAT FIRST TECHNOLOGY Co Ltd filed Critical SHENZHEN GREAT FIRST TECHNOLOGY Co Ltd
Priority to CN201210094131.1A priority Critical patent/CN102624402B/zh
Publication of CN102624402A publication Critical patent/CN102624402A/zh
Application granted granted Critical
Publication of CN102624402B publication Critical patent/CN102624402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种LDPC译码器,包括:p个双端口存储器,同一地址i的数据构成输入数据块Ci;存具有分组特性的校验矩阵H的第二存储器;第一数据移位单元,根据校验矩阵H中子阵P的编号x(x≠-1)对双端口存储器并行输出数据循环左移x位,Px是单位矩阵每列右移x位后的矩阵;减法器,输入接第一数据移位单元、输出接计算器;p个计算器,根据校验方程并行计算输出差值d;存d的第三存储器,输入接计算器、输出接减法器作为被减数,并行输出各计算器输出数据;加法器,输入接计算器;p个FIFO,输入接减法器、输出接加法器;第二数据移位单元,输入接加法器、输出接双端口存储器,将计算后数据反向移位后替换最初位置数据。

Description

一种LDPC译码器
技术领域
本发明涉及编解纠错码领域,具体涉及一种低密度奇偶校验码(LDPC)译码器。
背景技术
二进制数据在传输过程中,通常会遇到一些噪声或干扰,而导致接收时会有误码出现,在无线传输时,这些电子噪声通常更是无法避免,当接收时如果出现数据错误,一种方式,我们可以拒绝接收并要求对方重新发送,但在很多情况下,数据是实时发送的,不允许上面的操作;为此纠错码就发展起来,在通信***中,通常使用前向纠错码来检测和纠正错码,低密度奇偶校验码(LDPC)就是一种分组码。
在传输数据时,前向纠错码会按照一定的算法来额外增加一些比特,这些比特对于数据来说就是冗余的,接收机可以依据接收到的数据和冗余的校验位,来判定传输的数据是逻辑“1”还是逻辑“0”,或者,接收机可以给出一个概率,用来表示数据是逻辑“1”或逻辑“0”的概率大小,这样的数据是软判决数据。译码过程通常使用最大似然法,得到一个与原发送数据最为接近的猜测数据。目前,被广泛应用的前向纠错码有很多种,例如卷积编码、里所码(RS码)、turbo码。LDPC是最近发展很快并得到多个传输协议认可的一种分组码,其通用的译码算法是和积算法(Summary-Product Rule)。根据和积算法的原理,人们又发展出了他的近似算法——迭代算法,迭代算法是可以用硬件电路来实现的,但是现有方法在实现上存在复杂度高、资源占用大、效率低、速度慢的问题,这就阻碍了LDPC的广泛应用。如图1所示,美国在先专利,专利号(US 6633856 B2),所采用的技术框图,其完成一次计算需要两个循环来实现,分别处理变量节点1708和约束节点1709,处理时间长;迭代中主要使用了两组存储器1707和1706,还用到了两个辅助存储器1712和1710,整个迭代过程的处理较复杂,用到的存储器较多,资源占用大,对于整个处理流程的控制也相对复杂。
发明内容
本发明需要解决的技术问题是,如何提供一种LDPC译码器,采用并行计算的电路结构,通过分组的方式,能实现同时计算一组中所有的校验方程,整个迭代过程按组进行,且只使用了同一个计算处理模块及一组存储器,以达到降低复杂度、降低占用的存储器资源、提高效率和速度的目的。
本发明的技术问题这样解决:构建一种LDPC译码器,包括:
p个双端口存储器(ram Aq),位于数据输入端,每个数据块Ci的p个数据(Ci1,Ci2,Ci3,……Cip)存入p个所述双端口存储器(ram Aq)的同一地址i,其中:p>q≥0,p是大于1的自然数,i、q是整数;
用于存储校验矩阵H的第二存储器(rom H),控制连接所述双端口存储器(ram Aq);所述校验矩阵H具有分组特性;
第一数据移位单元,输入端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子阵P的除x=-1外的编号x对所述双端口存储器(ram Aq)当前地址i并行输出数据[Ci1,Ci2,Ci3,……Cip]循环左移x位,其中:编号为0的P0是p×p的单位矩阵,编号为-1的P-1是p×p的全零矩阵,除x=-1外,编号为x的PX是P0每列右移x位后的矩阵,-1≤x<p,x是整数;
减法器,一输入端连接作为减数的第一数据移位单元;
p个计算器,输入端连接所述减法器输出端,每个计算器根据校验方程对各自的N个串行输入数据Cj进行计算,并行计算输出差值dj,自然数N大于等于自然数j;
用于存储所有差值d的第三存储器(ram dq),输入端连接p个所述计算器输出端、输出端连接所述减法器作为被减数的另一输入端,用于并行输出各所述计算器在上一次迭代时的计算结果,即差值d;
加法器,一输入端连接所述计算器输出端;
p个先入先出队列缓冲器(FIFOq),输入端连接所述减法器输出端、输出端连接所述加法器的另一输入端;
第二数据移位单元,输入端连接所述加法器输出端、输出端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子阵P的编号x对加法器输出数据循环右移x位后替换所述双端口存储器对应位置上的原有数据。
按照本发明提供的LDPC译码器,所述数据输入端是串行输入端,该译码器还包括位于所述串行输入端与双端口存储器之间的一分p的分路器。
按照本发明提供的LDPC译码器,包括但不限制于选择以下具体形式:
(一)N=3,p=7;
(二)N=24,p=10;
(三)N=96,p=20。
本发明提供的LDPC译码器,采用并行计算的电路结构,较现有技术具有以下优点:
1、对于计算结果的有效的存储;
2、减少迭代中所需的存储器的规模;
3、减少整体译码处理复杂度。
附图说明
下面结合附图和具体实施例进一步对本发明进行详细说明:
图1为现有LDPC译码器的结构原理框图;
图2为本发明LDPC译码器的结构原理框图;
图3为图2中计算器第一部件硬件逻辑示意图;
图4为图2中计算器第二部件硬件逻辑示意图;
图5为本发明具体实施例的LDPC译码器的硬件逻辑结构示意图。
具体实施方式
首先,说明本发明基础,分组码和分组矩阵:
(一)分组码
通常分组码可以表示成(n,k),n为码组长度,k是信息位,n-k是校验位。在编码的时候,通常使用生成矩阵G,它是一个k×n的矩阵;输入信息为E,它是一个1×k的矩阵(也就是行向量),编码之后的码组为B,它是1×n的矩阵。B=E·G,举一个例子:k=4,n=7;G就是一个4×7的矩阵
G = 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1
E是含有4个元素的行向量,假设,E=[E0 E1 E2 E3]
B是含有7个元素的行向量,假设,B=[B0 B1 B2 B3 B4 B5 B6]
根据公式B=E·G
B = E 0 E 1 E 2 E 3 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 1 0 1 1 = E 0 E 1 E 2 E 3 E 0 + E 1 + E 2 E 0 + E 1 + E 3 E 0 + E 2 + E 3
所以:
B0=E0
B1=E1
B2=E2
B3=E3
B4=E0+E1+E2
B5=E0+E1+E3
B6=E0+E2+E3
可以看出,编码之后前4个元素仍然与输入的A一致,后3个是计算得到的校验位。
数据B被调制器发送之后,在有噪声的信道中传播,在接收端,解调器收到的数据用C表示,
C=[C0 C1 C2 C3 C4 C5 C6]
要验证接收到的C是否还是原来的B,这就需要检查编码时应用的校验方程是否成立,即
C4=C0+C1+C2
C5=C0+C1+C3
C6=C0+C2+C3
这3个方程是否成立,这种校验关系是由校验矩阵H来决定的,H和G是一一对应的,他们满足GHT=0,HT是H的转置矩阵。根据前面的G,可以得出与他对应的校验矩阵H,
H = 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1
所以在译码时,只要验证HCT是否为0,CT是C的转置矩阵。当HCT=0时,表明校验方程成立,数据C无误;否则,数据C有误。
HC T 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 C 0 C 1 C 2 C 3 C 4 C 5 C 6 T
= 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 C 0 C 1 C 2 C 3 C 4 C 5 C 6
= C 0 + C 1 + C 2 + C 4 C 0 + C 1 + C 3 + C 5 C 0 + C 2 + C 3 + C 6
通过推导发现,有三个校验方程需要计算 C 0 + C 1 + C 2 + C 4 = 0 C 0 + C 1 + C 3 + C 5 = 0 C 0 + C 2 + C 3 + C 6 = 0
方程成立,则数据C无误;否则,数据C有误。这三个方程与编码时的校验关系 B 4 = E 0 + E 1 + E 2 B 5 = E 0 + E 1 + E 3 B 6 = E 0 + E 2 + E 3 是一致的(在一位二进制数的运算中,1+1=1-1=0)。
根据上面的分析,在译码时,最主要的依据就是校验矩阵H,他决定了信息位和校验位之间的校验关系,最终是通过计算校验方程的方式来进行译码。
本发明专利提出了一种LDPC码的并行迭代译码的硬件实现方法,但是此方法并不适用于所有的LDPC码,他只能应用于有分组特性的校验矩阵H。
(二)分组矩阵(扩展的矩阵)
分组矩阵是一类特殊的矩阵,首先,有一个基础矩阵S(m×l,m行l列),然后用一个因子p来扩展它,由此获得一个p·m×p·l的矩阵S′,原基础矩阵S中的0用一个p×p的全零子矩阵代替,原基础矩阵S中的1用一个p×p的非全零子矩阵代替(该子矩阵是p×p的单位矩阵或单位矩阵右移后的形式,它的每行每列都只有一个1)。
假设S是一个3×7的矩阵
S = 1 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1
p=3,首先,我们把所有的p×p子矩阵列出来,
P 0 = 1 0 0 0 1 0 0 0 1 , 就是3×3的单位矩阵
P 1 = 0 1 0 0 0 1 1 0 0 , 就是P0中每列循环右移一位,最右边一列移到了矩阵的最左边
P 2 = 0 0 1 1 0 0 0 1 0 , 就是P0中每列循环右移两位
P - 1 = 0 0 0 0 0 0 0 0 0 , 是全零矩阵
然后,用P-1替代S中原有的0,用P0、P1、P2来替代S中原有的1。具体到每个1是用哪个子矩阵来替代是可以任意安排的,我们假设按照其中一种替换方案来扩展,得到9×21的矩阵S′
S ′ = 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1
为了便于描述,我们通常用下面这种方式来表达上面的9×21的矩阵
S ′ = P 0 P 2 P 0 P - 1 P 0 P - 1 P - 1 P 1 P 1 P - 1 P 0 P - 1 P 0 P - 1 P 2 P - 1 P 0 P 1 P - 1 P - 1 P 0
第二,详细说明本发明具体实现:
(一)硬件结构
本发明的LDPC译码器,结构如图2所示,具体包括:
p个双端口存储器(ram Aq),位于数据输入端,每个数据块Ci的p个数据(Ci1,Ci2,Ci3,……Cip)存入p个所述双端口存储器(ram Aq)的同一地址i,其中:p>q≥0,p是大于1的自然数,i、q是整数;
用于存储校验矩阵H的第二存储器(rom H),控制连接所述双端口存储器(ram Aq);所述校验矩阵H具有分组特性;
第一数据移位单元,输入端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子阵P的编号x(x≠-1时)对所述双端口存储器(ramAq)当前地址i并行输出数据[Ci1,Ci2,Ci3,……Cip]循环左移x位,其中:编号为0的P0是p×p的单位矩阵,编号为-1的P-1是p×p的全零矩阵,编号为x(x≠-1时)的PX是P0每列右移x位后的矩阵,-1≤x<p,x是整数;
减法器,一输入端连接作为减数的第一数据移位单元;
p个计算器,输入端连接所述减法器输出端,每个计算器根据校验方程对各自的N个串行输入数据Cj(N≥j>0)进行计算,并行计算输出差值dj(N≥j>0);
用于存储所有差值d的第三存储器(ram dq,p>q≥0),输入端连接p个所述计算器输出端、输出端连接所述减法器作为被减数的另一输入端,用于并行输出各所述计算器在上一次迭代时的计算结果,即差值d;
加法器,一输入端连接所述计算器输出端;
p个先入先出队列缓冲器(FIFOq),输入端连接所述减法器输出端、输出端连接所述加法器的另一输入端;
第二数据移位单元,输入端连接所述加法器输出端、输出端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子阵P的编号x对加法器输出数据循环右移x位后替换所述双端口存储器对应位置上的原有数据。
(二)详细译码操作和具体工作步骤
1.输入数据的存储
送到译码器的是解调输出的对数似然比(LLR)数据C,该数据有rbit(r≥3)位宽,且是串行输入。在存入双端口ram A时,要先进行分组,在并行计算的结构中,分组的个数是与子矩阵的因子p一致的,每p个数据为一数据块,用i(n为码组长度,p是子矩阵的因子)来标记不同的数据块,根据LDPC码块的长度,i会有不同的最大值。作为同一数据块的p个数据需要存入双端口ram A的同一个地址下,这样在读出时可以同时读出这p个数据;所以我们把双端口ram A用p个小的双端口ram Aq(p>q≥0)来实现,这样同一数据块i的p个数据,便可以存入p个小的双端口ram Aq(p>q≥0)的同一地址i,将所有数据先分成数据块再存储,就完成了步骤1。
2.数据读出及预处理
根据子矩阵的因子p,一组可以计算p个校验方程,校验方程的信息都存储在LDPC码的校验矩阵H中,在编码时,H是编码的依据;在解码时,H也是计算校验方程的依据。在译码器中,我们用一个rom来存储H,在进行计算之前,需要根据矩阵H的信息将参与该组校验方程的数据块从双端口ram Aq(p>q≥0)中读出,这主要是通过控制ram Aq的读地址来实现的,首先,读出参与该校验方程的第一个数据块i即Ci1,Ci2,Ci3,……Cip,根据校验矩阵H中子阵P的编号来调整这p个数据的排列顺序(通过左移或右移的方式)。移位之后,还要减去上次迭代时该组校验方程计算的结果di1,di2,di3,……dip(首次迭代时不需要),因为一个校验方程计算的结果,不可以用来影响他自身的下一次计算。其次,用同样的方式,读出参与该校验方程的第二个数据块、第三个数据块,直到第N个数据块,N是参与该校验方程的数据的个数,即基础矩阵S每行中元素为1的个数。在实现上,同一数据块中的p个数据是并行操作(同时的),第一个数据块、第二个数据块、第三个数据块,直到第N个数据块他们是串行操作(时间上是先后的顺序)。最终输出,p组并行的数据流,每个数据流Cj(N≥j>0)包含N个串行数据即构成了校验方程。
3.计算校验方程
计算器在LDPC译码实现的硬件结构中,是很重要的一环。它负责计算校验方程,给出输入数据需要调整的值即差值,为之后的计算提供修正。在并行计算的结构中,我们引入的计算器的个数是与子矩阵的因子p一致的,对于一个计算器,其具体的步骤为:假设输入串行数据为Cj(N≥j>0),首先,要验证该校验方程是否成立,我们计算(hd是Cj的符号位,其是1bit二进制数据,所以这里的求和运算就等效于模二加),其实现的硬件逻辑结构如图3所示,其中:
当correct=0时,表示输入的数据序列满足校验方程;
当correct=1时,表示输入的数据序列不满足校验方程。
差值dj(N≥j>0),与输入的Cj是一一对应的,也是由符号和幅度两部分组成的,在计算器中也是分别计算的。差值的符号hd(dj)=hd(Cj)+correct(这里也是模二加),其实现的硬件逻辑结构如图3所示,其中:
差值dj的幅度计算需要以下几个步骤:首先要找出串行数据Cj中幅度最小值MIN1,MIN1=min(amp(Cj)),及它在序列Cj中的位置v;然后找出序列Cj中的幅度第二小值MIN2,MIN2=min(amp(Cj)),for(j≠v);第三计算Ivl_out,lvl_out=max(0,MIN1-f(MIN2-MIN1))其中函数f(x)的表达式为:
f ( x ) = 3 2 1 0 for x < 2 2 &le; x < 4 4 &le; x < 8 8 &le; x
由此可以得到amp(dj):
amp(dj)=lvl_out,for(j≠v);amp(dv)=MIN2
所以差值dj的幅度共有2种可能的输出,当j=v时,amp(dv)=MIN2;对于其它的Cj(j≠v),amp(dj)=lvl_out;前面说过,计算的结果要存储起来,对于串行数据Cj中的每一个数据,都会串行输出一个对应的差值dj(N≥j>0)。同时p个计算器并行工作,会并行输出p个差值di1,di2,di3,……dip,用p个存储器ram dq,(p>q≥0)存储这些数据。
4.存储修正后的数据
在计算完之后,并行输出的差值和先入先出队列缓冲器(FIFOq)的输出相加;然后将结果通过第二数据移位单元再存回到双端口ram Aq中,然后就可以开始下一个校验方程的计算。
第三,结合本发明具体实施例进一步详细说明:
(一)硬件结构
本发明具体实施例的LDPC译码器,结构如图5所示,具体包括:
一分三的分路器,位于数据输入端,将串行输入转为并行输入;
三个双端口存储器,连接分路器对应端口;
用于存储校验矩阵H的第二存储器,控制连接所述双端口存储器;所述校验矩阵H具有分组特性;
第一数据移位单元,输入端连接所述双端口存储器,用于根据校验矩阵H中子阵P的编号x对所述双端口存储器当前地址i并行输出数据[Ci1,Ci2,Ci3,……Cip]循环左移x位,其中:编号为0的P0是3×3的单位矩阵,编号为-1的P-1是3×3的全零矩阵,编号为x(x≠-1时)的PX是P0每列右移x位后的矩阵,-1≤x<p,k是整数;
减法器,一输入端连接作为减数的第一数据移位单元;
三个计算器,输入端连接所述减法器输出端,每个计算器根据校验方程对各自的N(实例中N=4)个串行输入数据Cj(N≥j>0)(实例中如[C00 C12 C20 C40])进行计算,并行计算输出差值dj(N≥j>0)(实例中如[d0 00 d0 10 d0 20 d0 40]);
用于存储所有差值d的第三存储器,输入端连接三个所述计算器输出端、输出端连接所述减法器作为被减数的另一输入端,用于并行输出各所述计算器同时或同一时间顺序输出的差值d;
加法器,一输入端连接所述计算器输出端;
三个先入先出队列缓冲器,输入端连接所述减法器输出端、输出端连接所述加法器的另一输入端;
第二数据移位单元,输入端连接所述加法器输出端、输出端连接所述双端口存储器,用于根据校验矩阵H中子阵P的编号x对计算后的数据循环右移x位后替换原始对应位置中的数据。
(二)详细译码操作和具体工作步骤
将上面给出的矩阵S′作为本实例的校验矩阵H,来举例说明整个并行译码的实施方案。
1.数据输入的存储
对于分组码,输入数据要按码块一块一块的输入,假设当前的输入码块为C,
C=[C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14 C15 C16 C17 C18 C19 C20]
每个输入数据为rbit(r≥3)LLR值(对数似然比),要寄存到双端口ram A中,通常的做法是将输入数据一个一个存入ram A,在本发明中,我们先把输入码块C进行分组,分组的依据是校验矩阵H的扩展因子p(在此例中p=3),所以先将C中的数据按输入的顺序,每3个数据一组;分组后C可表示成
C=[C00 C01 C02 C10 C11 C12 C20 C21 C22 C30 C31 C32 C40 C41 C42 C50 C51 C52 C60 C61 C62]
其中C01中的0表示第0组,1表示小组中标号为1的数据;
在存储时,需要3个相同的双端口ram A,表示成A0、A1、A2。每个小组中的标号为0的数据都存入A0中;每个小组中的标号为1的数据都存入A1中;每个小组中的标号为2的数据都存入A2中;存入的地址由小组编号来定。
所以,C00、C01、C02要依次存入A0、A1、A2的地址0中;
C10、C11、C12要依次存入A0、A1、A2的地址1中;
C60、C61、C62要依次存入A0、A1、A2的地址6中;
按照这种方式存储之后,在读取时,就可以将同一小组的数据(例如C00、C01、C02)同时读出来。
2.数据读出及预处理
对已经存入的码块,就要开始进行迭代译码,主要的计算就是验证每一个校验方程,通过验证校验方程来修正数据的LLR值。在计算之前,数据需要按照校验方程的需要从A0、A1、A2中读出,然后经过预处理,再送入计算器中计算。
校验矩阵H中包含了所有校验方程的信息,根据H本身的分组情况,校验方程的计算也要分组,同一组中的所有校验方程,是并行同时计算的。先通过矩阵乘法HCT,列出所有的校验方程。
HC T = 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 C 00 C 01 C 02 C 10 C 11 C 12 C 20 C 21 C 22 C 30 C 31 C 32 C 40 C 41 C 42 C 50 C 51 C 52 C 60 C 61 C 62
= C 00 + C 12 + C 20 + C 40 C 01 + C 10 + C 21 + C 41 C 02 + C 11 + C 22 + C 42 C 01 + C 11 + C 30 + C 50 C 02 + C 12 + C 31 + C 51 C 00 + C 10 + C 32 + C 52 C 02 + C 10 + C 31 + C 60 C 00 + C 21 + C 32 + C 61 C 01 + C 22 + C 30 + C 62
共9个校验方程,因为p=3,所以,将校验方程按自上到下的顺序每3个一组,同组的校验方程实现并行计算。进行并行计算的数据在读出时,要同时读出,以第一组校验方程为例。
①同时给A0、A1、A2赋读地址0;
②A0、A1、A2同时输出数据,记为[C00 C01 C02],因为是同时输出,所以用一个向量来表示;
③根据校验矩阵H中子阵P的编号,对[C00 C01 C02]进行移位;
H = P 0 P 2 P 0 P - 1 P 0 P - 1 P - 1 P 1 P 1 P - 1 P 0 P - 1 P 0 P - 1 P 2 P - 1 P 0 P 1 P - 1 P - 1 P 0
上面H中的第一行对应第一组校验方程,第一行的首个子阵P0表示[C00 C01 C02]移位值为0,不需要移位。
④移位之后的[C00 C01 C02]就分别送到3个独立的计算器中(仅限首次迭代时),非首次迭代时,要减去上一次迭代时本组校验方程输出的差值[d0 00 d0 01 d0 02]后,再分别送到3个独立的计算器中。差值的计算会在后面的计算器中进行描述。
⑤给A0、A1、A2赋读地址1;
⑥A0、A1、A2同时输出数据,记为[C10 C11 C12];
⑦第一行的第二个子阵P2表示[C10 C11 C12]移位值为2,对[C10 C11 C12]循环左移2位;
⑧移位之后的[C12 C10 C11]就分别送到3个独立的计算器中(仅限首次迭代时),非首次迭代时,要减去上一次迭代时本组校验方程输出的差值[d0 10 d0 11 d0 12]后,再分别送到3个独立的计算器中。
后面执行相同的操作,把[C20 C21 C22]、[C40 C41 C42]读出、移位、减去差值送入计算器。
3.计算校验方程
因为是并行计算,所以要同时使用多个相同的计算器,在此例中是3个,我们分析一个计算器的处理,其他的相同。
下面我们分析第一组校验方程中首个校验方程的计算:
输入到校验方程的串行数据是:[C00 C12 C20 C40]
首先要计算该校验方程是否为0,因为C00是rbit的数据,所以在计算时要取他的符号位来进行相加,hd(C00)就是取C00的符号位。
correct=hd(C00)+hd(C12)+hd(C20)+hd(C40)
当correct=0时,表示输入的数据序列满足校验方程;
当correct=1时,表示输入的数据序列不满足校验方程。
之后,计算输出的差值
①计算差值的符号
hd(d0 00)=correct+hd(C00)
hd(d0 10)=correct+hd(C12)
hd(d0 20)=correct+hd(C20)
hd(d0 40)=correct+hd(C40)
②计算差值的幅度
首先要找出串行数据[C00 C12 C20 C40]中幅度最小值MIN1,MIN1=min(amp(C00),amp(C12),amp(C20),amp(C40))amp表示幅度,及它在序列中的位置v;假设MIN1=amp(C20),然后找出序列中的幅度第二小值MIN2,MIN2=min(amp(C00),amp(C12),amp(C40));第三、计算Ivl_out,lvl_out=max(0,MIN1-f(MIN2-MIN1))其中函数f(x)的表达式为:
f ( x ) = 3 2 1 0 for x < 2 2 &le; x < 4 4 &le; x < 8 8 &le; x
有了Ivl_out及MIN2就可以计算差值的幅度了,对于幅度最小的C20
amp(d0 20)=MIN2
对于其他输入
amp(d0 00)=amp(d0 10)=amp(d0 40)=lvl_out
差值要存入存储器,当下次迭代计算该校验方程时,要读出本次的差值,并从输入序列中减去。
4.存储修正后的数据
计算出的第一组3个校验方程的差值分别为:
[d0 00 d0 10 d0 20 d0 40]
[d0 01 d0 11 d0 21 d0 41]
[d0 02 d0 12 d0 22 d0 42]
输入为:
[C00 C12 C20 C40]
[C01 C10 C21 C41]
[C02 C11 C22 C42]
相加之后:
C &OverBar; 00 = C 00 + d 0 00 C &OverBar; 12 = C 12 + d 0 10 C &OverBar; 20 = C 20 + d 0 20 C &OverBar; 40 = C 40 + d 0 40
C &OverBar; 01 = C 01 + d 0 01 C &OverBar; 10 = C 10 + d 0 11 C &OverBar; 21 = C 21 + d 0 21 C &OverBar; 41 = C 41 + d 0 41
C &OverBar; 02 = C 02 + d 0 02 C &OverBar; 11 = C 11 + d 0 12 C &OverBar; 22 = C 22 + d 0 22 C &OverBar; 42 = C 42 + d 0 42
按照读出时的地址和存储器的编号,把计算之后的数据再存回去
C &OverBar; 00 C &OverBar; 01 C &OverBar; 02 分别存到A0、A1、A2的地址0;
C &OverBar; 12 C &OverBar; 10 C &OverBar; 11 要先移位变成 C &OverBar; 10 C &OverBar; 11 C &OverBar; 12 之后,分别存到A0、A1、A2的地址1;
C &OverBar; 20 C &OverBar; 21 C &OverBar; 22 分别存到A0、A1、A2的地址2;
C &OverBar; 40 C &OverBar; 41 C &OverBar; 42 分别存到A0、A1、A2的地址4;
数据存入后,完成一组的校验方程的计算;再从步骤二开始,计算下一组校验方程,当所有校验方程都计算一遍则完成一次迭代;第二次迭代从步骤二开始,到所有校验方程都计算一遍则完成第二次迭代。当在某次迭代完成,所有校验方程都满足;或迭代次数达到设定的上限值时,迭代终止译码结束。
最后,以上所述仅为本发明的较佳实施例,凡依本发明权利要求范围所做的均等变化与修饰,皆应属本发明权利要求的涵盖范围。

Claims (4)

1.一种LDPC译码器,其特征在于,包括: 
一分p的分路器,输入端口连接串行数据输入端; 
p个双端口存储器ram Aq,分别连接所述分路器的p个输出端口,每个数据块Ci的p个数据Ci1,Ci2,Ci3,……Cip分别对应存入p个所述双端口存储器ram Aq,具体存入地址都是i,其中:p>q≥0,p是大于1的自然数,i、q是整数; 
用于存储校验矩阵H的第二存储器(rom H),控制连接所述双端口存储器(ram Aq);所述校验矩阵H具有分组特性;具有分组特性的矩阵是一个p·m×p·l的矩阵,所述p·m×p·l的矩阵由m×l的基础矩阵中的所有0用一个p×p的全零子矩阵代替和所有1用一个p×p的非全零子矩阵代替而成;所述非全零子矩阵是p×p的单位矩阵或单位矩阵右移后的形式,非全零子矩阵的每行每列都只有一个1; 
第一数据移位单元,输入端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子矩阵P的除x=-1外的编号x对所述双端口存储器(ram Aq)当前地址i并行输出数据[Ci1,Ci2,Ci3,……Cip]循环左移x位,其中:编号为0的P0是p×p的单位矩阵,编号为-1的P-1是p×p的全零矩阵,除x=-1外,编号为x的Px是P0每列右移x位后的矩阵,-1≤x<p,x是整数; 
减法器,一输入端连接作为减数的第一数据移位单元; 
p个计算器,输入端连接所述减法器输出端,每个计算器根据校验方程对各自的N个串行输入数据块Ci改其编号i为j,命名为Cj后进行计算,并行计算输出数据块差值dj,N是参与该校验方程的数据的个数,自然数j小于等于自然数N; 
用于存储所有计算器上一次迭代计算出的数据块差值的第三存储器(ram dq),输入端连接p个所述计算器输出端、输出端连接所述减法器作为被减数的另一输入端,用于并行输出各所述计算器在上一次迭代计算出的数据块差值; 
加法器,一输入端连接所述计算器输出端; 
p个先入先出队列缓冲器(FIFOq),输入端连接所述减法器输出端、输出端连接所述加法器的另一输入端; 
第二数据移位单元,输入端连接所述加法器输出端、输出端连接所述双端口存储器(ram Aq),用于根据校验矩阵H中子矩阵P的编号x对加法器输出数据循环右移x位后替换所述双端口存储器对应位置上的原有数据。 
2.根据权利要求1所述LDPC译码器,其特征在于,p=3,N=4。 
3.根据权利要求1所述LDPC译码器,其特征在于,p=10,N=24。 
4.根据权利要求1所述LDPC译码器,其特征在于,p=20,N=96。 
CN201210094131.1A 2012-04-01 2012-04-01 一种ldpc译码器 Active CN102624402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210094131.1A CN102624402B (zh) 2012-04-01 2012-04-01 一种ldpc译码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210094131.1A CN102624402B (zh) 2012-04-01 2012-04-01 一种ldpc译码器

Publications (2)

Publication Number Publication Date
CN102624402A CN102624402A (zh) 2012-08-01
CN102624402B true CN102624402B (zh) 2015-03-18

Family

ID=46564101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210094131.1A Active CN102624402B (zh) 2012-04-01 2012-04-01 一种ldpc译码器

Country Status (1)

Country Link
CN (1) CN102624402B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107294544B (zh) * 2017-06-27 2020-09-01 唯思泰瑞(北京)信息科技有限公司 卷积码的前向纠错方法、装置及译码器
CN111384970B (zh) * 2018-12-29 2022-04-15 大唐移动通信设备有限公司 一种译码方法、装置及通信设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594152A (zh) * 2009-07-03 2009-12-02 清华大学 实现水平运算和垂直运算同时运行的ldpc码译码方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060108959A (ko) * 2005-04-13 2006-10-19 삼성전자주식회사 블록단위의 저밀도 패리티 체크 행렬 생성 방법 및 장치와그 기록매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101594152A (zh) * 2009-07-03 2009-12-02 清华大学 实现水平运算和垂直运算同时运行的ldpc码译码方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郗丽萍等."基于循环矩阵的低密度校验码的VLSI译码设计".《浙江大学学报(工学版)》.2009,第43卷(第2期),第261-265页. *

Also Published As

Publication number Publication date
CN102624402A (zh) 2012-08-01

Similar Documents

Publication Publication Date Title
CN102412847B (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
Sarkis et al. Fast polar decoders: Algorithm and implementation
CN102164025B (zh) 基于重复编码和信道极化的编码器及其编译码方法
Yuan et al. Low-latency successive-cancellation list decoders for polar codes with multibit decision
CN105846830B (zh) 数据处理装置
CN109379086B (zh) 低复杂度的码率兼容的5g ldpc编码方法和编码器
CN100425000C (zh) 双涡轮结构低密度奇偶校验码解码器及解码方法
WO2018036178A1 (zh) 一种ldpc的解码方法
CN100592639C (zh) 低密度奇偶校验编码方法、装置及奇偶校验矩阵生成方法
CN101471674A (zh) 低密度奇偶校验码译码方法及装置
CN105763203B (zh) 一种基于硬可靠度信息的多元ldpc码译码方法
WO2010115371A1 (zh) 一种循环冗余校验crc码的实现方法和装置
CN104025459A (zh) 译码处理方法及译码器
CN112367087B (zh) 一种高速rs译码器
CN101478314A (zh) 一种里德-所罗门编码译码器及其译码的方法
CN112953554B (zh) 一种基于分层置信度传播的ldpc译码方法、***和介质
CN109802688B (zh) 一种多进制ldpc译码***和方法
CN109586732A (zh) 中短码ldpc编解码***和方法
CN113783576A (zh) 用于从循环置换矩阵的集群构建的准循环低密度奇偶校验码的垂直分层解码的方法及设备
CN102624402B (zh) 一种ldpc译码器
US20160049962A1 (en) Method and apparatus of ldpc encoder in 10gbase-t system
CN1973440A (zh) Ldpc编码器、解码器、***及方法
EP3286838A1 (en) Check node of non-binary ldpc decoder and corresponding method
CN115632662B (zh) 一种rs译码中的伴随式计算方法、装置、设备及介质
US11201629B2 (en) Low latency sequential list decoding of polar codes

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Minimum value computing device for LDPC decoder and constructing method thereof

Effective date of registration: 20151209

Granted publication date: 20150318

Pledgee: Shenzhen high tech investment and financing Company limited by guarantee

Pledgor: SHENZHEN GREAT FIRST TECHNOLOGY Co.,Ltd.

Registration number: 2015990001097

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230426

Granted publication date: 20150318

Pledgee: Shenzhen high tech investment and financing Company limited by guarantee

Pledgor: SHENZHEN GREAT FIRST TECHNOLOGY Co.,Ltd.

Registration number: 2015990001097

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230531

Address after: Room 415, Building D, No. 55 Lianhua Street, High tech Industrial Development Zone, Zhengzhou City, Henan Province, 450000

Patentee after: Zhengzhou Rongyida Information Technology Co.,Ltd.

Address before: 518000 State owned Enterprise Building, Shangbu South Road, Futian District, Shenzhen, Guangdong Province

Patentee before: SHENZHEN GREAT FIRST TECHNOLOGY Co.,Ltd.