CN101110593A - Qc-ldpc译码器水平运算单元快速流水线级联结构 - Google Patents
Qc-ldpc译码器水平运算单元快速流水线级联结构 Download PDFInfo
- Publication number
- CN101110593A CN101110593A CNA2007100999612A CN200710099961A CN101110593A CN 101110593 A CN101110593 A CN 101110593A CN A2007100999612 A CNA2007100999612 A CN A2007100999612A CN 200710099961 A CN200710099961 A CN 200710099961A CN 101110593 A CN101110593 A CN 101110593A
- Authority
- CN
- China
- Prior art keywords
- input
- data
- arithmetic unit
- arithmetic
- output
- 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.)
- Granted
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种通用QC-LDPC译码器中水平运算器(HPU)的结构,其特征在于:通过级联结构,将复杂的水平运算器(HPU)分解成简单的基本运算单元(MIN单元);该运算单元结构具有流水线结构,每一级的输出端对本级的运算结果进行锁存,然后并行的送入下一级的输入端;每一级的运算输出,同时直接送至输出控制单元,输出控制单元根据控制信息对输出进行选择,从而实现不同功能。
Description
技术领域
本发明属于数字信息传输技术领域,涉及一种QC-LDPC译码器中水平运算器(HPU)的结构,特别涉及通用QC-LDPC译码器中HPU的高速流水线级联结构。
技术背景
LDPC码最早由Gallager于1962年提出,并于上世纪90年代被重新提出。LDPC码是一种特殊的线性分组码,其校验矩阵具有稀疏性质。LDPC码通常由其交验矩阵H进行描述,校验矩阵H的化零空间即为LDPC码的码字空间,校验矩阵H可以由Tanner图具体描述。校验矩阵中每一行中数字1的个数称为该行的行重,同样每一列中数字1的个数称为列重。一般将校验矩阵H的行重、列重都唯一的LDPC码称为规则LDPC码,而将行重或者列重不唯一的LDPC码称为非规则LDPC码。
LDPC的译码算法比较复杂,一般使用的有和积算法(SPA),最小和算法(Min-SumAlgorithm)和改进型最小和算法。由于和积算法复杂度较高,而最小和算法硬件复杂度比和积算法要低得多,而且最小和算法对于信道噪声并不敏感,不需要在译码算法中对信道噪声进行估计。因此被广泛应用于LDPC码的译码运算中。目前许多基于最小和算法的改进算法都是基于最小和算法基本原理的改进。以下是最小和算法的基本步骤(译码算法都是基于AWGN信道,并采用BPSK调制方式。信道噪声均值为0,噪声方差为σ2,设接收信号为yn):
1)初始化:
Qmn=Pn
2)水平运算:
3)垂直运算:
4)译码判决
若Qn>1 则Dn=1;否则Dn=0
5)译码结果校验
计算S=DHT
若S=0则译码结束,否则至2)
上述运算中,Pn为初始化信道概率,Rmn和Qmn分别存储水平运算和垂直运算的结果,H为LDPC码校验矩阵,Dn为译码结果,S为校正子。sgn代表符号运算,abs代表绝对值运算。
QC-LDPC码是一类特殊的LDPC码,其具体特征在于QC-LDPC码的校验矩阵H具有准循环特征。具体来说,QC-LDPC码的校验矩阵H是由一系列相同大小的方阵构成,这些方阵包括全零矩阵和循环移位阵。循环移位阵是由单位矩阵进行循环移位得到的,一个位移量为p的循环移位阵是将单位矩阵的每一行进行向右循环p位得到的。下式是一个位移量为2的6×6的循环移位阵。
因此QC-LDPC码的校验矩阵可以定义为:
其中A是大小为n×n的方阵,A=-1代表全零矩阵,而A=p(0≤p≤n-1)代表位移量为p的循环移位阵。
LDPC译码器一般采用并行结构,并行结构通过为每一行配置一个水平运算单元(HPU),为每一列配置一个垂直运算单元(VPU),所有运算单元并行进行处理。这种译码器结构每两个时钟周期就可进行一次迭代运算,但需要消耗大量的硬件资源。对于QC-LDPC码,存在一种半并行译码算法。半并行译码算法基于QC-LDPC码上述的准循环特征,重复利用HPU和VPU,从而使得硬件资源消耗大大降低,并保证所需的译码速率。
QC-LDPC译码器的基本结构如图1所示。它包括:
1)PRAM:存储信道输入软信息
2)VPU:水平运算单元,实现水平运算
3)HPU:垂直运算单元,实现垂直运算
4)QRAM:存储垂直运算单元运算结果
5)RRAM:存储水平运算单元运算结果
工作流程如下:
1)输入过程:待译码比特软信息PRAM,然后给出译码开始指示。
2)译码迭代过程:首先是VPU过程,然后是HPU过程,迭代进行。
3)VPU过程利用RRAM输出的校验位信息更新比特的软信息,同时给出硬判决指示。
4)第一次VPU过程只是把PRAM信息写入QRAM,RRAM输出为0。
5)HPU过程利用QRAM输出的比特软信息计算校验位信息,同时根据硬判决指示判断译码是否成功。
6)输出:译码成功后,由VPU计算硬判决结果,并行输出。
然而,虽然使用了最小和算法并利用半并行算法简化了译码器译码的运算过程,但是因为在译码器实现中,存在着以下问题,导致了译码器的工作速度受到限制:在译码流程中,存在着比较复杂的组合电路,尤其是当QC-LDPC码的校验矩阵H的行重很大的时候,一个HPU单元的输入相应的增加,直接导致进行的运算量大大增加。以一个32输入的HPU(即HPU32)为例,它需要在一个时钟周期内实现求31个输入数据最小值的运算,而这至少需要进行5级求最小值运算的比较单元。利用FPGA实现时,这样的复杂运算直接导致了运算时间大大增加,从而制约了系统的时钟频率。
除此之外,在对于多码率合一的译码器结构中,需要对HPU单元进行复用,而传统的HPU结构不能满足多种HPU复用运算单元的简单结构。
发明内容
本发明的目的在于针对QC-LDPC译码器中水平运算单元(HPU)结构复杂的特点,提出一种具有流水线结构的高速HPU单元,用于高速QC-LDPC译码器的实现。同时这种流水线结构的HPU可以很简单的在多码率译码器中实现复用,从而大大节省多码率译码器使用的硬件资源。
本发明的特征在于:
QC-LDPC译码器水平运算单元快速流水线级联结构,其特征在于,含有:运算单元、锁存器和一个输出控制单元在其中:
运算单元,共有C级,其中:
第一级运算单元,除了时钟输入之外,共有N个数据输入端口,分批地依次分配到M个
运算器,M<N,所述的N个数据输入端口接收QC-LDPC译码器中的垂直运算结果的储存单元QRAM输入的N个数据,在每个运算器中执行如下两部分运算:
符号运算:该运算器中,每一个输出端口输出其余各输入端口中输入数据的符号的乘积,
最小值运算:该运算器中,所述每一个输出端口输出其余各个端口中输入数据绝对值的最小值,
所述的每一个运算器,还设有一个端口,其输出数据的值是该运算器中所有输入数据中绝对值最小的一个数据,其符号是排除该绝对值最小的数据后,其余各输入数据符号的乘积;
第一级锁存器除了时钟输入以外,各个锁存器的输入端分别连接到所述的第一级运算单元中M个运算器的各个输出端,而各个锁存器的输出端与所述的输出控制单元中的数据输入端相连;
第二级运算单元,是一个比较器组,由多层比较器级联构成,每个比较器有两个输入端和一个输出端,末层比较器的个数与第一级运算单元的输入数据的个数相等,该末层比较器中的每一个比较器,其第一个输入端直接与所述第一级锁存器中各项应锁存器的输出端相连,输入第一级运算单元中相应运算器除了所述相应锁存器所对应的那个运算其的输入值以外,其余各个输入数据中绝对值最小的一个数据,其符号是所述各个输入数据符号的积,该末层比较器中的每一个比较器的第二个输入端口输入数据是除了所述第一个输入端所对应的那个运算器的输入数据外,第一级运算单元中其他所有输入数据的绝对值最小的那个数据,其符号则是第一级运算单元中其他所有输入数据的符号之积;所述本级比较器中每个比较器的输出是其两各个输入数据中绝对值最小的那个数据,而符号则是该两个输入数据的符号之积;
其余各级运算单元及锁存器,依次类推;
输出控制单元,根据外部控制信号来选择性的输出,使水平运算单元工作在不同模式下,实现水平运算单元的复用。
上述的QC-LDPC译码器水平运算单元快速流水线级联结构,所述的N=2,M=3。
本发明所述的具有流水线结构的高速HPU单元,具有以下优点:
a)结构简单。采用多级运算器级联结构,其中每一级都由简单的基本运算单元组成。该级联结构的每一级输出可以直接送至后级,后级的运算可以直接利用前级的输出。
b)通用。针对不同的QC-LDPC码,其行重各不相同,这样在设计QC-LDPC码译码器的过程中,需要对不同的HPU进行有针对性地设计,这样会消耗大量设计时间,增加设计成本。而本发明的具有流水线结构的高速HPU单元具有基于最小运算单元的组合级联结构,对不同大小的HPU,均可以通过级联的方式简单实现。
c)适合高速时钟的实现。级联结构很容易流水线实现,每级输入输出间存在一至两个比较单元,可以达到较高译码器工作频率。
d)易于复用。多码率的HPU单元很容易实现复用,在多码率合一的译码器结构中,水平运算单元对于不同码率需要执行不同的功能。本发明的HPU单元可以简单的利用输出控制单元选择HPU单元的输出,从而实现HPU单元的复用。
附图说明
图1为QC-LDPC码译码器结构框图。
图2为通用QC-LDPC译码器高速流水线级联结构HPU框图。
图3为基于高速流水线级联结构HPU8结构框图
具体实施方式
本发明给出了一种QC-LDPC译码器HPU单元的高速流水线级联结构的实现方法。该方法根据不同QC-LDPC码的特性,通过合理安排HPU单元的级联结构,将HPU单元的复杂运算通过分级,在不同时钟周期内分别实现。通过这样的流水线结构,实现高速时钟处理。本发明的特征在于,将传统的HPU单元转化为具有多级流水线结构、可以适应高速时钟处理的新型HPU单元,使其可以在FPGA上实现。
本发明的具有流水线结构的高速HPU单元包括:
1)输入端口,输入端口的数据是来自前端QRAM的数据,通过输入端口送至HPU单元内部。对于不同的HPU单元,其输入端口个数相应不同;
2)系统时钟输入;
3)分级运算单元,分级运算单元是HPU单元的基本组成部分。在本发明中,运算单元按照HPU单元的输入个数不同相应的分为N级,每一级均由基本运算单元构成。
其中每一级的运算单元的功能主要包括如下两部分运算:
i)符号运算:根据输入的数据,进行符号运算,计算除相应输入外其他输入的符号乘积。
ii)最小值运算:对于一个n输入的HPU,计算除去相应输入以外其他n-1个输入的最小值。
第一级的运算单元为MIN单元,以MINx表示x个输入的MIN单元。MIN单元的基本运算功能是计算除去相应输入以外其他输入的最小值,并取参与运算的数据符号之积作为输出数据的符号。
除第一级外,其余每级的运算单元均由少量简单的比较器(CU)加以实现。每个比较器有两个输入端口,一个输出端口。比较器的功能是对输入的两数进行比较,输入数据的绝对值的较小值作为输出数据的绝对值,输入数据符号的乘积作为输出数据的符号。
4)输出控制单元:输出控制单元根据外部控制信号对输出信号进行选择,使HPU单元可以工作在不同模式,以实现HPU单元的复用。
5)锁存器:为了实现高速译码的需要,在每级运算单元的输出端口进行锁存,锁存器的结果同时送至下一级运算器的输入端口和输出控制单元。因此每级运算均需要一个时钟周期,一个N级的级联结构HPU单元需要N个时钟周期完成一次完整的水平运算。
所述的具有流水线结构的高速HPU单元,其基本实现结构如图2所示。在QC-LDPC译码器的HPU单元设计中,数据输入端口11接收RRAM传送至HPU单元的数据,并送入第一级基本运算单元12。第一级基本运算单元进行计算后,将输出结果送至第一级锁存器13。锁存器根据时钟输入10进行锁存。在每一个时钟上升沿将数据进行寄存,并在下一个时钟将运算结果数据送至第二级基本运算单元14,并同时将运算结果数据送至输出控制单元19。同样,第二级基本运算单元14进行运算后,将数据送至第二级锁存器15,进行锁存。直至最后第N级基本运算单元16,并锁存17。最后输出控制单元根据控制信息18,选择输出数据。
下面列出一种级联方案,通过这种级联形式可以实现1-81输入的HPU单元,每一种HPU需要的级联结构如下所示:
HPU | 级联结构 |
HPU1,HPU2,HPU3 | 一级 |
HPU4-HPU9 | 二级 |
HPU10-HPU27 | 三级 |
HPU28-HPU81 | 四级 |
下面以HPU8为例,具体说明本发明的设计流程:
一个HPU8单元含有8个输入端口,需要使用大量比较器实现7个数据的水平运算。如上表所示,本发明的HPU8具有两级级联结构,第一级:由MIN3、MIN3和MIN2直接实现;第二级:由少量简单的比较器实现。
图3是HPU8的结构框图。其中,HPU8的输入记为indata 01-indata 08。首先将8个输入分为三组,其中indata 01-indata 03、indata 04-indata 06分别作为两个MIN3的输入,并将indata 07-indata 08作为MIN2的输入。
1)在第一级中,实现HPU3、HPU3、HPU2的功能。数据在MIN单元中分别进行3输入和2输入的水平运算,输出结果位对应每个输入的水平运算结果,即为data 11-data 18。如:data 11为indata 01对应的三输入水平运算结果,其绝对值等于indata 02和indata03绝对值的最小值,其符号为两者符号之积。同时为了便于下一级进行运算,输出每个MIN单元的最小输入,记为data I-data III,如:data I的绝对值等于indata 01-in data03绝对值的最小值,其符号为三者符号之积。
2)第二级实现的是HPU8的功能。具体是通过少量比较器,利用前级结果加以实现。在第二级中,比较器1-3的输入分别为dataII与dataIII、dataI与dataIII,以及dataI与dataII。输出记为dataIV-dataVI。此后将data11-data18分别与相应的dataIV-dataVI进行比较,得到最终的运算结果。
3)第一级和第二级的运算结果通过锁存器分别进行锁存,整个运算器的输出较输入延迟两个时钟周期。
4)第一级锁存器(C01-C08)的输出结果和第二级锁存器(C11-C18)的输出结果均送至输出控制单元,又控制单元进行选择输出。因此此运算器可以实现一个HPU8的功能或者HPU3、HPU3、HPU2的功能。
上面对本发明的具体实施实例进行了详细说明,但本发明并不限制于上述实施实例,在不脱离本申请的权利要求的精神和范围情况下,本领域的技术人员可做出各种修改或改型。
Claims (2)
1.QC-LDPC译码器水平运算单元快速流水线级联结构,其特征在于,含有:运算单元、锁存器和一个输出控制单元在其中:
运算单元,共有C级,其中:
第一级运算单元,除了时钟输入之外,共有N个数据输入端口,分批地依次分配到M个
运算器,M<N,所述的N个数据输入端口接收QC-LDPC译码器中的垂直运算结果的储存单元QRAM输入的N个数据,在每个运算器中执行如下两部分运算:
符号运算:该运算器中,每一个输出端口输出其余各输入端口中输入数据的符号的乘积,
最小值运算:该运算器中,所述每一个输出端口输出其余各个端口中输入数据绝对值的最小值,
所述的每一个运算器,还设有一个端口,其输出数据的值是该运算器中所有输入数据中绝对值最小的一个数据,其符号是排除该绝对值最小的数据后,其余各输入数据符号的乘积;
第一级锁存器除了时钟输入以外,各个锁存器的输入端分别连接到所述的第一级运算单元中M个运算器的各个输出端,而各个锁存器的输出端与所述的输出控制单元中的数据输入端相连;
第二级运算单元,是一个比较器组,由多层比较器级联构成,每个比较器有两个输入端和一个输出端,末层比较器的个数与第一级运算单元的输入数据的个数相等,该末层比较器中的每一个比较器,其第一个输入端直接与所述第一级锁存器中各项应锁存器的输出端相连,输入第一级运算单元中相应运算器除了所述相应锁存器所对应的那个运算其的输入值以外,其余各个输入数据中绝对值最小的一个数据,其符号是所述各个输入数据符号的积,该末层比较器中的每一个比较器的第二个输入端口输入数据是除了所述第一个输入端所对应的那个运算器的输入数据外,第一级运算单元中其他所有输入数据的绝对值最小的那个数据,其符号则是第一级运算单元中其他所有输入数据的符号之积;所述本级比较器中每个比较器的输出是其两各个输入数据中绝对值最小的那个数据,而符号则是该两个输入数据的符号之积;
其余各级运算单元及锁存器,依次类推;
输出控制单元,根据外部控制信号来选择性的输出,使水平运算单元工作在不同模式下,实现水平运算单元的复用。
2.根据权利要求1所述的QC-LDPC译码器水平运算单元快速流水线级联结构,其特征在于,所述的N=2,M=3。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710099961A CN100583652C (zh) | 2007-06-01 | 2007-06-01 | Qc-ldpc译码器水平运算单元(hpu)快速流水线级联结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710099961A CN100583652C (zh) | 2007-06-01 | 2007-06-01 | Qc-ldpc译码器水平运算单元(hpu)快速流水线级联结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101110593A true CN101110593A (zh) | 2008-01-23 |
CN100583652C CN100583652C (zh) | 2010-01-20 |
Family
ID=39042517
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710099961A Expired - Fee Related CN100583652C (zh) | 2007-06-01 | 2007-06-01 | Qc-ldpc译码器水平运算单元(hpu)快速流水线级联结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100583652C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101917249A (zh) * | 2010-07-27 | 2010-12-15 | 清华大学 | Qc-ldpc码译码器及其实现方法 |
CN101977063A (zh) * | 2010-11-01 | 2011-02-16 | 西安空间无线电技术研究所 | 一种通用型ldpc译码器 |
CN102523070A (zh) * | 2011-11-22 | 2012-06-27 | 航天恒星科技有限公司 | 一种应用于卫星通信的通用软件译码数据分配方法 |
CN101695101B (zh) * | 2009-10-09 | 2012-11-14 | 清华大学 | Ldpc译码器水平运算单元的多码率复用装置 |
CN101594152B (zh) * | 2009-07-03 | 2013-05-08 | 清华大学 | 实现水平运算和垂直运算同时运行的ldpc码译码方法 |
CN103731161A (zh) * | 2014-01-09 | 2014-04-16 | 北京航空航天大学 | 一种用于ldpc码的交叠译码方法 |
CN104767536A (zh) * | 2015-03-19 | 2015-07-08 | 深圳市力合微电子股份有限公司 | 基于ofdm电力线通信系统的qc-ldpc译码方法和译码器 |
-
2007
- 2007-06-01 CN CN200710099961A patent/CN100583652C/zh not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101594152B (zh) * | 2009-07-03 | 2013-05-08 | 清华大学 | 实现水平运算和垂直运算同时运行的ldpc码译码方法 |
CN101695101B (zh) * | 2009-10-09 | 2012-11-14 | 清华大学 | Ldpc译码器水平运算单元的多码率复用装置 |
CN101917249A (zh) * | 2010-07-27 | 2010-12-15 | 清华大学 | Qc-ldpc码译码器及其实现方法 |
CN101917249B (zh) * | 2010-07-27 | 2012-11-14 | 清华大学 | Qc-ldpc码译码器及其实现方法 |
CN101977063A (zh) * | 2010-11-01 | 2011-02-16 | 西安空间无线电技术研究所 | 一种通用型ldpc译码器 |
CN101977063B (zh) * | 2010-11-01 | 2013-01-23 | 西安空间无线电技术研究所 | 一种通用型ldpc译码器 |
CN102523070A (zh) * | 2011-11-22 | 2012-06-27 | 航天恒星科技有限公司 | 一种应用于卫星通信的通用软件译码数据分配方法 |
CN102523070B (zh) * | 2011-11-22 | 2014-10-08 | 航天恒星科技有限公司 | 一种应用于卫星通信的通用软件译码数据分配方法 |
CN103731161A (zh) * | 2014-01-09 | 2014-04-16 | 北京航空航天大学 | 一种用于ldpc码的交叠译码方法 |
CN103731161B (zh) * | 2014-01-09 | 2017-01-25 | 北京航空航天大学 | 一种用于ldpc码的交叠译码方法 |
CN104767536A (zh) * | 2015-03-19 | 2015-07-08 | 深圳市力合微电子股份有限公司 | 基于ofdm电力线通信系统的qc-ldpc译码方法和译码器 |
CN104767536B (zh) * | 2015-03-19 | 2018-05-25 | 深圳市力合微电子股份有限公司 | 基于ofdm电力线通信系统的qc-ldpc译码方法和译码器 |
Also Published As
Publication number | Publication date |
---|---|
CN100583652C (zh) | 2010-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100583652C (zh) | Qc-ldpc译码器水平运算单元(hpu)快速流水线级联结构 | |
CN104079382B (zh) | 一种基于概率计算的极化码译码器和极化码译码方法 | |
CN101079638B (zh) | 用于降低复杂度的低密度奇偶校验解码的系统和方法 | |
JP4320418B2 (ja) | 復号装置および受信装置 | |
CN100425000C (zh) | 双涡轮结构低密度奇偶校验码解码器及解码方法 | |
EP3661063A1 (en) | Turbo ldpc coding and decoding | |
CN106998208B (zh) | 一种可变长Polar码的码字构造方法 | |
WO2017113507A1 (zh) | 一种集合译码方法和集合译码器 | |
US20080134008A1 (en) | Parallel LDPC Decoder | |
CN101064591B (zh) | 低密度奇偶校验码的译码方法及其校验节点更新电路 | |
CN100542049C (zh) | 一种多码率的ldpc码的译码器装置及译码方法 | |
CN109802688B (zh) | 一种多进制ldpc译码系统和方法 | |
CN100546207C (zh) | 一种基于DVB-RCS标准的双二元Turbo码译码方法 | |
CN103166903A (zh) | 星座映射的软解预处理方法以及软解方法 | |
CN101594152B (zh) | 实现水平运算和垂直运算同时运行的ldpc码译码方法 | |
CN101478313B (zh) | 一种ldpc译码器的最小值计算装置及其构造方法 | |
CN102064835A (zh) | 适用于准循环ldpc译码的译码器 | |
CN104184480B (zh) | 一种降低复杂度的ldpc改进译码方法 | |
Vidal et al. | Union Bound for Generalized Duplication Channels with DTW Decoding | |
CN110166060A (zh) | 高吞吐流水线型极化码bp译码器及其实现方法 | |
US8347167B2 (en) | Circuits for implementing parity computation in a parallel architecture LDPC decoder | |
CN101615914A (zh) | 分层最小和ldpc译码校验节点处理的实现方法 | |
CN105049057B (zh) | 一种面向128位并行输入的crc‑32校验电路 | |
CN101854179B (zh) | 一种应用于ldpc译码的5比特量化方法 | |
CN101789795A (zh) | 基于多码率原模图ldpc码的编码方法及编码器 |
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: 20100120 Termination date: 20150601 |
|
EXPY | Termination of patent right or utility model |