CN101771421B - 基于tdmp的超高速低功耗qc-ldpc码解码器 - Google Patents
基于tdmp的超高速低功耗qc-ldpc码解码器 Download PDFInfo
- Publication number
- CN101771421B CN101771421B CN201010121902A CN201010121902A CN101771421B CN 101771421 B CN101771421 B CN 101771421B CN 201010121902 A CN201010121902 A CN 201010121902A CN 201010121902 A CN201010121902 A CN 201010121902A CN 101771421 B CN101771421 B CN 101771421B
- Authority
- CN
- China
- Prior art keywords
- information
- value
- row
- upgrade
- decoder
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明属于无线通信和微电子技术领域,具体为一种基于TDMP的超高速低功耗低密度奇偶校验码(QC-LDPC)解码器。通过对称六级流水线、行块和列块交织、非零子矩阵重排序、和值寄存器堆四象限划分以及读写旁路技术,解码器按行序串行扫描,横向更新和纵向更新每个时钟周期各处理两个非零子矩阵。横向更新和纵向更新完全交叠。特别地,和值寄存器堆不仅存储变量节点的和值,还作为FIFO存储两相之间传递的暂态外信息。该解码器架构具有很强的可配置性,可以容易地移植到其它任何规则或者非规则的QC-LDPC码,解码性能优异,峰值频率能够达到214兆赫兹,吞吐量可以达到1千兆比特每秒左右,芯片功耗仅有397毫瓦。
Description
技术领域
本发明属于无线通信和微电子技术领域,具体涉及一种超高速低功耗可配置QC-LDPC码解码器,可以应用于超高速的无线数字通信、光纤通信、卫星通信、多媒体数字广播和磁光学存储等诸多系统。
背景技术
低密度奇偶校验码(LDPC,Low-Density Parity-Check Codes)于20世纪60年代初由Gallager博士发明。由于其解码复杂度很高,起初30多年不被重视。直到20世纪90年代中期被重新发现和证明具有相当好的功率有效性,LDPC码获得了高速发展和广泛运用。准循环LDPC (QC-LDPC)码作为其中一个非常重要的分支,具有线性编码复杂度和非常有利的部分并行解码结构,被广泛地应用于如DVB-S2、IEEE 802.11n(WirelessLAN)、IEEE 802.16e(WiMAX)、DTMB和CMMB等系统中。
QC-LDPC码解码算法不断简化。Gallager博士提出的两相迭代解码算法(Two-PhaseMessage-Passing Algorithm)计算复杂,需要大量的指数运算、乘法运算和查表运算。由于指数运算数据动态范围特别大、解码不够稳定,解码算法从实数域演进到对数似然比(Logarithmic Likelihood Ratio)解码算法。基于此,出现了三种简化解码算法:1)最小和解码算法(Min-Sum);2)基于偏移量最小和(Offset-Based Min-Sum)解码算法;3)归一化最小和(Normalized Min-Sum)解码算法。第一种算法解码复杂度最低,但性能较差;第二、三种算法在解码复杂度和性能上取得折中。归一化最小和解码算法由于能最大限度的降低保存中间信息的存储器资源,被广泛采用。为了加快收敛速度,出现了基于Turbo码信息传递的解码算法(Turbo-Decoding Message-Passing Algorithm)。
解码结构不断更新。理论上存在三种典型的解码硬件结构:1)全串行结构;2)部分并行结构;3)全并行结构。QC-LDPC码的特点是:码长越长,性能越好。为了获得最好的性能,绝大部分QC-LDPC码码长介于1000到10000之间。折中考虑面积和吞吐量,部分并行的结构被绝大部分解码器采用。随之而来产生了很多部分并行解码器,不同之处只在于横向更新和纵向更新的并行度。对于QC-LDPC码(M,N,b,t),典型的部分并行度有k×M、k×N和k×b(k是一个大于零的实数,比如1、2、3、4、1/2、1/3、1/4等等)。
随着现代通信广播系统向着超高数据吞吐率、大容量、高可靠性的方向发展,以及标准层出不穷和多样化,一种可以兼容多标准的超高速可配置QC-LDPC解码器硬件结构成为大势所趋。同时随着无线通信广播的高速发展,以及便携式移动终端用户群不断扩大,超低功耗实现尤为重要。
发明内容
本发明的目的在于提出一种吞吐量大、芯片功耗低、可避免存储器访问冲突的可配置QC-LDPC码解码器。
在保证解码性能的前提下,本发明需要解决以下四个关键技术问题。
可配置性:解码结构能够很好的移植到其它任何规则或者非规则的QC-LDPC码(M,N,b,t)中。全串行结构具有可配置性,但解码吞吐量极低。全并行结构解码吞吐量高(所有行或者所有列同时并行更新),但缺乏可配置性。典型的部分并行结构不仅具有较高的吞吐量,而且具有较强的可配置性。
吞吐量:在可配置性较强的基础上,最大限度的提高解码吞吐量。对于QC-LDPC码(M,N,b,t),并行度为M、N或者b时,解码器能够达到的吞吐量一般小于250兆比特每秒(Mb/s)。为了进一步提高吞吐量,并行度需要提高到M、N或者b的整数倍k(k大于1)。本文设计的目标是:当工作在200兆赫兹和10次迭代时,解码器能够达到1千兆比特每秒(Gb/s)左右。
芯片功耗:在满足可配置性和吞吐量要求的情况下,最大限度的降低芯片功耗。比如减少存储器资源、降低存储器访问次数、减少算术逻辑单元、降低寄存器翻转次数等等。本文设计的目标是:对于WiMAX中的QC-LDPC码(M,N,b,t),功耗效率能够小于50皮焦每比特每次迭代(pJ/bit/iteration)。
存储器访问冲突:对于QC-LDPC码(M,N,b,t),并行度为M、N或者b时,部分并行解码器一般不存在存储器访问冲突。当并行度提高到M、N或者b的整数倍k(k大于1)时,大量的存储器访问冲突就会出现。在避免使用更多存储器资源的情况下,如何解决存储器访问冲突是一大难点。
本发明提出的基于TDMP的QC-LDPC码解码器,如图2所示,由主控制器(CentralController)、可配置只读存储器(ROM)、输入缓存寄存器堆(I_BUF Bank)、变量节点和值寄存器堆(SUM Bank)、校验节点信息组件寄存器堆(MAG、POS、FLAG、SIGN Banks)(图中为绝对值、位置、标志位寄存器堆和符号堆存器)、算术逻辑运算单元(ALU)和输出缓存寄存器堆(O_BUF Bank)组成。四块只读存储器(ROM)分别存储列块交织相关信息、横向更新相关信息、纵向更新相关信息和偏移量调整信息。该解码器横向处理并行度为b,b为子矩阵扩展因子;纵向处理并行度为2×b。算术逻辑单元包括两个独立的b路置换网络(置换网络A、置换网络B)、四个独立的b路恢复器阵列(恢复器阵列A1、B1、A2、B2)、一个b路横向更新处理器堆(b CNU Processors)和一个b路纵向更新处理器堆(b VNU Processors)。一路横向更新处理器包括加法单元、分解单元、奇偶校验单元和保持电路;一路纵向更新处理器包括加法单元和硬判决电路。
所述解码器的数据流程如下:
横向更新和纵向更新按行序每个时钟周期分别扫描并处理两个非零子矩阵。先前的变量节点和值从和值寄存器堆取出,经过两个独立可配置置换网络A、B。同时,恢复器阵列A1和B1从校验节点信息组件恢复先前的自信息。所有经过置换网络的和值和恢复得到的自信息进入96个横向更新处理器,更新校验节点信息组件。横向更新所得外信息暂时存储到和值寄存器堆。当一个行块的横向更新完成之后,更新之后的信息组件回写到信息组件寄存器堆;同时送入恢复器阵列A2和B2恢复更新之后的自信息。所有恢复得到的自信息和从和值寄存器堆读取的外信息送入192个纵向更新处理器,更新变量节点和值,最后写入和值寄存器堆。
本发明设计的解码器,采用优化的TDMP解码算法,即用归一化最小和解码算法(Normalized Min Sum)替换TDMP算法中的软输入软输出引擎(SISO engine),其解码步骤如下:
步骤1:按自然顺序存储从信道接收过来的本征信息到输入缓存寄存器堆中;
步骤2:按交织顺序从输入缓存寄存器堆读出本征信息(通过地址映射完成列块交织),初始化变量节点和值寄存器堆;
步骤3:按行序每次扫描两个非零子矩阵,并行读取相应变量节点和值(两个列块)和相应校验节点信息组件(一个行块);
步骤4:通过两个置换网络置换和值,同时通过两个恢复器阵列从信息组件恢复自信息;
步骤5:通过横向更新处理器,计算外信息(置换后的和值减去恢复得到的自信息);
步骤6:写外信息、更新校验节点信息组件、做奇偶校验等等,如果所有行块都满足奇偶校验或者达到最大迭代次数,转入步骤11;
步骤7:按行序重新每次扫描两个非零子矩阵,从和值寄存器堆读取相应外信息(两个列块);
步骤8:通过两个恢复器阵列恢复更新后的自信息;
步骤9:更新变量节点和值和硬判决;
步骤10:写回更新后的和值,转入步骤3;
步骤11:硬判决结果从置换网络送入输出缓存寄存器堆,通过地址解映射完成列块解交织;
步骤12:从输出缓存寄存器堆输出解码结果,解码结束;
其中,步骤3、4、5和6属于横向更新过程;步骤7、8、9和10属于纵向更新过程。一次子迭代按照步骤3、4、5、6、7、8、9和10完成一个行块更新;一次迭代按照步骤3、4、5、6、7、8、9和10完成所有行块更新。
本发明设计的解码器采用对称六级流水线(Symmetrical Six-Stage Pipelining)结构以提高吞吐量和帮助解决和值寄存器堆访问冲突。横向更新采用四级流水线(Four-StagePipelining):
流水线1:读取变量节点和值和校验节点信息组件(Rd);
流水线2:置换和值和恢复自信息;
流水线3:计算外信息;
流水线4:写入暂态外信息、更新校验节点信息组件和奇偶校验(Wr)。
纵向更新同样采用四级流水线(Four-Stage Pipelining):
流水线1:读取暂态外信息(Rd);
流水线2:恢复更新后的自信息;
流水线3:更新变量节点和值以及硬判决;
流水线4:回写更新后的和值(Wr)。
对于横向更新和纵向更新,第一级流水都是存储器读操作;第四级流水都是存储器写操作。使用双口和值寄存器堆(Two-Port Register File),第一级流水和第四级流水可以互相交叠。因此,整个解码流程采用的是对称的六级流水线结构。对于同一存储器地址,写操作始终发生在读操作三个时钟周期之后。对称性带来的好处是:只需解决存储器读访问冲突,而写访问冲突随着读访问冲突的消失而消失。
本发明中,QC-LDPC码的基矩阵(Base Matrix)的24个列块(以0到23依次标号)被划分为四个象限(Four Quadrants):
象限0:0、4、8、12、16和20;
象限1:1、5、9、13、17和21;
象限2:2、6、10、14、18和22;
象限3:3、7、11、15、19和23。
本发明中,为了解决和值寄存器堆读访问冲突,需要对QC-LDPC码基矩阵做以下三项预处理(Preprocessing):
预处理1:列块交织(Block Column Interleaving);
预处理2:行块交织(Block Row Interleaving);
预处理3:非零子矩阵重排序(Nonzero Sub-matrix Reordering)。
预处理1对基矩阵的列块进行重新排序,对于每一行块,确保所有非零子矩阵尽量均等的分布在所述的四个不同象限之中。
预处理2对基矩阵的行块进行重新排序,确保连续两行块的相关性总和(相关性定义:对于连续两行块,同时有非零子矩阵的列块个数)尽量少。
预处理3对基矩阵中非零子矩阵的扫描顺序进行重新排序,确保每个时钟周期读取四个不同象限的相关信息。
所有三项预处理不是唯一的。
本发明中,和值寄存器堆被划分为四个堆(Bank),对应四个象限(Quadrant):
和值寄存器堆0:存储象限0所对应的所有位置的和值和外信息;
和值寄存器堆1:存储象限1所对应的所有位置的和值和外信息;
和值寄存器堆2:存储象限2所对应的所有位置的和值和外信息;
和值寄存器堆3:存储象限3所对应的所有位置的和值和外信息;
四个和值寄存器堆不仅存储变量节点的和值,而且作为FIFO存储两相之间传递的暂态外信息。对于存储器同一地址,信息读写顺序如下:
读取和值(Rd)→写入暂态外信息(Wr)→读取暂态外信息(Rd)→回写更新后的和值(Wr)。
对于6比特量化,该操作可以省掉11520比特额外存储单元。
本发明中,为了最大限度降低芯片功耗,本文引入存储器读写旁路技术(Read-WriteBypass Technique)。由于基矩阵的列重(Column Weight)大于等于二,每一列块都存在非零子矩阵的相关性(Correlation)。当两个非零子矩阵的距离满足一定的限制时,读写旁路就可引入。即当横向更新正准备读取纵向更新即将要写入的数据单元时,纵向更新后的数据直接传到横向更新单元(不经过存储器)。这样做的好处是可以省掉很大一部分的存储器读写功耗。针对WiMAX中的QC-LDPC码,24.3%-48.8%的存储器读写操作可以被旁路。
本发明中,解码器有两个可配置的96路置换网络(Permutation Network)处理双通道数据。每个置换网络由两个级联的算术移位器(Logarithmic Shifter)组成。第一个算术移位器移位宽度(Shift Width)是一个小于b的任意正整数(b≤96),因此需要七级级联移位;第二个算术移位器移位宽度(Shift Width)是一个小于b且被4整除的任意正整数,因此只需要五级级联移位,省掉两级。与当前其它可配置置换网络相比,可以节省14.2%(2/(2×7))的硬件资源。
本发明中,解码器有四个恢复器阵列(Recoverer)恢复所需的自信息:横向更新两个;纵向更新两个。每路恢复器由一个核心的四选一选择器(Four-to-One Multiplexer)组成。为了避免在横向更新处理器中使用减法单元(减法需要额外的1的补码和加1操作),本文只需改变相应两个恢复器阵列中的选择器的真值表。这样做的好处是:在没有任何硬件代价的情况下,横向更新处理器阵列采用了更加简单的加法操作单元替代减法操作单元,节省大量的芯片面积。
本发明中,横向更新处理器阵列(CNU Processors)的核心单元包括加法单元(Adder)、分解单元(Decomposer)、奇偶校验单元(Parity Checker)和保持电路(Holding Circuit)。由于采用双通道并行计算,每个横向更新处理器需要两个两输入加法单元,一个以两输入比较和选择(Compare-and-Select)为核心的分解单元,一个以三输入异或门(Xor Gate)为核心的奇偶校验单元和四个以反馈移位寄存器(Feedback Shift Register)为核心的保持电路。保持电路是为了向后续纵向更新单元提供稳定的校验节点信息组件(无需从存储器中读取),从而只需面积更小的单口存储器存储校验节点信息组件。
根据本发明方案,本发明采取了如下一些技术措施。
A)双通道并行计算(Dual-Path Parallel Computing)
横向更新和纵向更新都是按行序串行扫描整个基矩阵。扫描完一行对应一次子迭代;扫描完整个矩阵对应一次迭代。与传统的每次扫描处理一个非零子矩阵不同,横向更新和纵向更新每个时钟周期都扫描两个非零子矩阵,并行处理。这样解码延时可以缩短一半;吞吐量提高一倍。
B)两相完全交叠(Fully-Overlapped Two Phases)
传统设计当中,两相是交替进行,或者是部分交叠在一起的,交叠长度取决于数据依赖性(Data Dependency)。本发明完全克服了数据依赖关系,横向更新和纵向更新完完全全交叠在一起;同时保证如Turbo码信息传递解码算法一样,横向更新始终使用纵向更新的最新结果(“最新”的定义依据同一列块中非零子矩阵的依赖关系)。这样解码延时可以再缩短一半;吞吐量再提高一倍。
C)对称六级流水线(Symmetrical Six-Stage Pipelining)
为了提高吞吐量和帮助解决存储器读写访问冲突,本发明采用对称六级流水线结构。对称性体现在:1)横向更新采用四级流水线,纵向更新采用四级流水线;2)对于横向和纵向更新,第一级和最后一级都是对存储器的读写访问。当使用双口和值寄存器堆时,横向更新和纵向更新的第一级和最后一级相互交叠在一起。对于同一个存储器地址单元,写操作始终发生在读操作的三个时钟周期之后;也就是说,如果解决了存储器读访问冲突,存储器写访问冲突就会自然而然消失。
D)基矩阵列块交织(Block Column Interleaving)
这是对基矩阵预处理的第一步。对基矩阵的列块进行重新排序,对于每一行块,确保所有非零子矩阵尽量均等的分布在四个不同象限之中。对于双通道并行计算和两相完全交叠解码器,通过简单的存储器四象限划分,就可以有效地避免存储器访问冲突。
E)基矩阵行块交织(Block Row Interleaving)
这是对基矩阵预处理的第二步。对基矩阵的行块进行重新排序,确保连续两行块的相关性总和(相关性定义:对于连续两行块,同时有非零子矩阵的列块个数)尽量少。相关性表明解码流程中数据的相互依赖关系;相关性小可以有效地降低流水线气泡,使解码能够紧凑的进行。
F)非零子矩阵重排序(Nonzero Sub-matrix Reordering)
这是对基矩阵预处理的第三步。对基矩阵中非零子矩阵的横向更新扫描顺序和纵向更新扫描顺序进行重新排序。对于双通道并行计算和两相完全交叠解码器,确保每个时钟周期并行读取四个不同象限的相关信息。
G)和值寄存器堆四象限划分(Sum Memory Partition With Four Quadrants)
双口和值寄存器堆划分为四个象限,可以同时提供四个独立的读取或者写入端口。经过基矩阵行块交织、基矩阵列块交织和非零子矩阵重排序,解码器每个时钟周期都从四个不同象限读取或者写入相关信息。因此,和值寄存器堆四象限划分可以避免为增加端口使用大量的额外存储单元。
H)和值寄存器堆读写旁路(Read-Write Bypass to Sum Memory)
本发明计引入大量和值寄存器堆读写旁路技术,降低芯片功耗。同一列块中,非零子矩阵的相关性表明了数据的依赖关系。当两个非零子矩阵的距离满足设定的界限时,纵向更新的和值可以直接传到横向更新单元,避免使用两次存储器访问操作:写入和值和读取和值。在本发明中,多达24.3-48.8%的存储器访问操作可以被旁路。
I)避免使用FIFO(No FIFO)
对于很多QC-LDPC解码器,横向更新和纵向更新之间存在一个很大的FIFO存储两相之间传递的外信息。FIFO的大小跟行重成正比例关系。在本发明中,和值寄存器堆通过四象限划分,不仅存储变量节点和值,还存储两相之间传递的外信息。因此,在没有任何硬件代价的情况下,本设计避免使用FIFO,节省了芯片面积,同时降低了芯片功耗。
J)可配置置换网络(Configurable Permutation Network)
本发明提出另外一种可配置置换网络:由两个96路算术移位器级联组成。根据WiMAX的特点,第一个算术移位器需要七级,而第二个算术移位器只需要五级。因此,该设计可以节省14.2%的硬件资源。
有益效果
该QC-LDPC码解码器实现了双通道并行计算和两相完全交叠,克服了存储器访问冲突,避免使用大的FIFO资源,大大降低了芯片面积、提高了解码吞吐量和硬件资源使用率。同时通过旁路技术,大大减少了对存储器的访问次数,从而降低了芯片功耗。该解码器架构具有很强的可配置性,可以容易地移植到其它任何规则或者非规则的QC-LDPC码(M,N,b,t)。该解码器芯片成功地应用到WiMAX系统之中,解码性能优异,峰值频率能够达到214兆赫兹,吞吐量可以达到1千兆比特每秒左右,芯片功耗仅有397毫瓦。
附图说明
图1带交织和解交织的迭代解码过程。
图2基于双通道并行计算和两相完全交叠的QC-LDPC解码器架构。
图3对称六级流水线。
图4基矩阵行块和列块交织。
图5非零子矩阵重排序。
图6和值寄存器堆四象限划分。
图7和值寄存器堆读写旁路技术。
图8可配置置换网络。
图9自信息恢复器。
图10双通道横向更新处理器。
具体实施方式
解码器采用改进的TDMP(Turbo-Decoding Message-Passing)解码算法,即用归一化最小和(Normalized Min-Sum)算法替换TDMP算法中的软输入软输出引擎(SISO Engine)。每个行块对应一个子码(子迭代);所有子码级联在一起对应一次迭代。信息不仅在不同迭代之间传递,而且在不同子码(子迭代)之间传递。同时,每行只需保存校验节点信息组件:最小和次小绝对值、最小值位置、符号和标志位。因此,解码器不仅能够达到与TDMP算法一样快的收敛速度,而且能够最大限度的降低存储器资源。另外,横向更新和纵向更新采用双通道并行计算和两相完全交叠技术,进一步提高了解码器的吞吐量和硬件资源的使用率。
对于任意QC-LDPC码(M,N,b,t),M表示基矩阵的行块数;N表示基矩阵的列块数;b表示子矩阵的展开因子;t表示非零子矩阵的总个数。对于本发明所设计的解码器,横向更新并行度为b,纵向更新并行度为2×b。假设(K,k)表示第K次迭代的第k次子迭代;向量S表示b个变量节点和值(对应一个列块);矩阵C表示b个校验节点信息组件(对应一个行块);向量I表示b个自信息(对应一个非零子矩阵);向量E表示b个两相之间传递的外信息(对应一个非零子矩阵)。基于改进的TDMP双通道并行计算和两相完全交叠解码算法,横向更新过程如式(1)-(4)所示。
纵向更新过程如式(5)-(6)所示。
输入数据流首先进入输入缓冲器,然后根据地址映射完成列块交织,进入迭代解码;输出比特流同样根据地址映射完成列块解交织,送入输出缓冲器。整个解码过程如图1所示。
基于双通道并行计算和两相完全交叠的QC-LDPC解码器架构如图2所示。该结构不仅兼容所有WiMAX中的114种模式,而且可以实现对任意规则和非规则QC-LDPC码(M,N,b,t)可配置。解码器由主控制器、只读存储器、寄存器堆、置换网络、恢复器、横向更新处理器和纵向更新处理器组成。横向更新处理器包括加法器、分解器、奇偶校验器和保持电路;纵向更新处理器包括加法器和硬判决器。
存储器占据了芯片的大部分面积。单口ROM COL_MAP保存列块交织信息,控制输入数据流交织和输出比特流解交织。单口ROM CNU_COL_OFFSET保存横向更新中非零子矩阵的更新顺序和对应偏移量。单口ROM VNU_COL保存保存纵向更新中非零子矩阵的更新顺序。单口ROM OFFSET_ADJUST保存不同模式下偏移量的调整信息。双口寄存器堆PRE_OFFSET保存当前更新的非零子矩阵所在列的前一个非零子矩阵的偏移量。双口和值寄存器堆不仅保存变量节点和值,而且保存两相之间传递的外信息。单口最小值、位置和标志位寄存器堆以及双口符号寄存器堆保存校验节点信息组件。此外,还有输入缓冲寄存器堆和输出缓冲寄存器堆。
横向更新和纵向更新按行序每个时钟周期分别扫描并处理两个非零子矩阵。先前的变量节点和值和从和值寄存器堆取出,穿过两个独立可配置置换网络。同时,恢复器阵列A1和B1从校验节点信息组件(Cm (K-1,k))恢复先前的自信息(和)。所有交换后的和值和恢复得到的自信息进入96个横向更新处理器,更新校验节点信息组件。横向更新所得外信息(和)暂时存储到和值寄存器堆。当一个行块的横向更新完成之后,更新之后的信息组件(Cm (K,k)回写到信息组件寄存器堆;同时送入恢复器阵列A2和B2恢复更新之后的自信息(和)。所有恢复得到的自信息和从和值寄存器堆读取的外信息送入192个纵向更新处理器,更新变量节点和值(和),最后写入和值寄存器堆。
由于以下三点:双通道并行计算、两相完全交叠、和值和外信息共享寄存器堆,对和值寄存器堆的读写访问是解码的关键点。为了提高吞吐量和帮助解决寄存器堆的访问冲突,本发明提出一种对称的六级深度流水线结构,如图3所示。
横向更新由四级流水线组成:1)读取变量节点和值和校验节点信息组件(Rd);2)置换和值和恢复自信息(Per/Rec);3)计算分解器的输入信息,即外信息(Add);4)回写外信息和更新信息组件(Wr/Dec)。纵向更新同样由四级流水线组成:1)读取外信息(Rd);2)恢复自信息(Rec);3)计算变量节点和值(Add);4)回写更新后的和值(Wr)。理论上,由于没有数据相关性,纵向更新中的前两级流水线(读入外信息和恢复自信息)可以同时处理。但是,为了帮助解决寄存器堆访问冲突,读取外信息提前一个时钟周期处理。因此,横向更新和纵向更新具有对称的四级流水线结构,对存储器的读写访问操作集中在第一级和第四级流水线。也就是说,对于同一个寄存器堆地址单元,写入操作始终发生在读取操作的三个时钟周期之后。
当使用双口和值寄存器堆时,横向更新和纵向更新的第一级和第四级流水线可以相互交叠在一起。因此,整个迭代解码流程由六级流水线组成。对于双通道并行计算和两相完全交叠解码器,和值寄存器堆必须提供四个独立的读和写端口,因为每个时钟周期需要四次读取操作和四次写入操作。对称流水线表明,写访问冲突会随着读访问冲突的消失而消失。所以本设计只专注于如何解决读访问冲突问题。
对于非规则QC-LDPC码(M,N,b,t),非零子矩阵随机、非均匀地分布在基矩阵中。如果按照非零子矩阵的原始行序扫描,必然会导致和值寄存器堆读写访问冲突。分布和相关是两个描述基矩阵结构的有效系数。分布表示非零子矩阵的物理地址,包括行块和列块索引。相关表示连续两行块中都有非零子矩阵的列块总数。一种分布映射一种相关;一种相关可能映射几种分布。
为了解决和值寄存器堆访问冲突问题,基矩阵需要做行块和列块交织的矩阵变换。变换之后的基矩阵尽可能满足以下三点:
1)对于每一个行块,奇数列的非零子矩阵个数和偶数列的非零子矩阵的个数几乎相等(|Nodd-Neven|=0|1);
2)非零子矩阵尽量均等的分布在所述的四个不同象限;
3)所有相关的总和尽可能少,包括最后一个行块和第一个行块(逻辑上连续)。
基于以上三点,WiMAX中QC-LDPC码(12,24,96,76)的一种行块和列块交织如图4所示,括号内的数字表示行块和列块的原始位置。行块和列块交织信息存储在ROM中。图5是一种重新排列的非零子矩阵更新顺序。横向更新和纵向更新都按行序串行扫描,每个时钟周期各处理两个非零子矩阵。但是,它们之间的更新顺序是独立的、不同的。数据相关和流水线导致纵向更新晚于横向更新六个时钟周期。该QC-LDPC码的行重是6或者7。考虑到解码过程的对称性和规则性,扫描完每个行块都花费四个时钟周期。整个流水线中会有少量的流水线气泡(空操作)。不同迭代无缝连接,迭代之间没有任何等待周期。总之,基矩阵变换和非零子矩阵重排序不是唯一的,而且只是改变更新顺序而无任何性能损失。
如图5所示,横向更新和纵向更新的第一行都是扫描偶数列的非零子矩阵;第二行都是扫描奇数列的非零子矩阵。括号外的数字表示列块索引;括号内的数字表示列块索引除以4的余数。绝大部分情况下,每个时钟周期的四个余数各不相同(0、1、2和3)。但是,有一些例外比如第28个时钟周期(0、1、0和3)和第38个时钟周期(0、1、2和1)。这些特例完全可以通过读写旁路技术解决。比如,在第28个时钟周期,横向更新从第0和21列块读取和值;早两个时钟周期,纵向更新正好读取这两个列块的外信息以更新和值。由于同一个非零子矩阵的写操作始终发生在读操作的三个时钟周期之后,横向更新需要的和值在第29个时钟周期刚好准备写入和值寄存器堆。因此,和值直接从纵向更新传到横向更新,旁路了和值寄存器堆的读写操作。同样的方法可以处理第38个时钟周期。一般QC-LDPC码都可以通过矩阵变换和重排序达到以上目的。
基于以上处理,和值寄存器堆可以通过简单的四象限划分就可以避免访问冲突,如图6所示。和值寄存器堆提供四个独立的读和写端口。每个时钟周期,横向更新读取两个列块的和值,同时写入两个非零子矩阵的外信息;纵向更新读取两个非零子矩阵的外信息,同时写入两个列块更新后的和值。与其它解码器不同,本设计充分利用了外信息的特点,即外信息的生命周期介于横向更新的读取和值和纵向更新的写入更新后的和值之间。因此,非零子矩阵的外信息可以保存在和值寄存器堆存储相应列块和值的地址单元,省掉了11520比特额外存储器资源。
一块深度为N(=24)的和值寄存器堆划分为四个象限,依次存储第4×i+0、4×i+1、4×i+2和4×i+3(i=0,1,...,5)列块的和值和外信息。堆号(Tbank)和堆地址(Abank)可以通过以下简单的求模和移位操作完成:
Tbank=mod(n,4), (7-A)
Abank=n>>2。 (7-B)
通过和值寄存器堆划分,解码器每个时钟周期从四个不同堆中读取相关信息,同时写入相关信息到四个不同堆中。图7所示为和值寄存器堆的读写旁路和交叉控制技术。四路输入信息通过输入交叉控制模块,找到相应的和值寄存器堆。相反地,四路输出信息通过输出交叉控制模块,找到相应的数据通路。交叉控制模块由四个列块索引产生的堆号控制。旁路控制模块根据横向更新和纵向更新的列块索引判断信息是否可以旁路,即横向更新所需要的两路信息要么从和值寄存器堆读取,要么直接从纵向更新传递过来。本设计所提出的旁路技术可以降低24.3-48.8%的和值寄存器堆访问次数。对于存储器访问主导功耗的QC-LDPC码解码器来说,该设计可以有效地降低芯片功耗。
解码器需要两个独立的置换网络。每个网络都由两个级联的96路算术移位器组成,如图8所示。该置换网络仅仅支持小于或等于96路的循环移位。这里,b代表扩展因子;d代表非零子矩阵的偏移量。两个参数把长度为96的输入序列分为三部分:A、B和C。输入序列首先经过一个96路的算术移位器(循环移位偏移量为d),然后穿过第二个算术移位器(循环移位偏移量为96-b),最后进入一组2选1选择器。最终输出序列由第一次移位后的序列的B块和第二次移位后的序列的A块组装而成。参数d是一个0到b之间的随机整数,因此第一次算术移位器需要7级。参数b是一个24到96能被4整除的正整数,因此第二个算术移位器仅仅需要5级,最后两级被旁路掉。该设计总共可以节省大约14.2%(2/(2×7))的硬件资源。
为了降低信息存储量,一个校验节点的所有自信息被分解为信息组件:1)最小绝对值;2)次小绝对值;3)最小绝对值的位置;4)符号位;5)标志位。横向更新所需的两个自信息由恢复器A1和B1恢复得到;纵向更新所需的两个自信息由恢复器A2和B2恢复得到。恢复器的核心单元是一个4选1的选择器,有两比特的选择地址。一个比特是当前列块索引和最小绝对值位置的比较结果;另一个比特是自信息的符号位,由实时符号位和每行的标志位异或得到。等式(3)表明,在横向更新中,和值减去自信息得到外信息。等式(6)表明,在纵向更新中,外信息加上自信息得到更新后的和值。解码器采用有符号数的2的补码表示。为了实现减法器,需要额外的1的补码和加1操作(占用大量的芯片面积)。因此,本设计从根本上解决了这个问题,横向更新和纵向更新处理器都采用加法器,唯一不同的是4选1选择器的真值表,如图9所示。也就是说,2的补码操作从横向更新处理器转移到了恢复器,无需任何硬件代价。
图10所示是一个双通道横向更新处理器,由两个加法器、一个分解器、一个奇偶校验器和四个保持电路组成。外信息由两个六比特加法器计算,送入分解器,同时暂时保存到和值存储器中。分解器串行扫描更新校验节点信息组件:1)最小绝对值;2)次小绝对值;3)最小绝对值的位置;4)符号位;5)标志位。奇偶校验器检验每行是否符合奇偶校验,校验结果送入主控制器控制解码流程的中断。保持电路是为接下来的纵向更新过程保持稳定的校验节点信息组件。每个处理器接收双通道数据进行数据更新,所有运算单元在行块的起始点被同步。和值有两个最高符号位。第一个是后验信息的硬判决结果,在每个列块的最后一个非零子矩阵更新完之后更新。第二个是后验信息的符号位,在每个行块的纵向更新完成之后都会更新。由于两个符号位具有不同的更新周期,它们需要在和值寄存器堆中单独存储。
Claims (5)
1.一种基于TDMP的QC-LDPC码解码器,其特征在于由主控制器、可配置只读存储器、输入缓存寄存器堆、变量节点和值寄存器堆、校验节点信息组件寄存器堆、算术逻辑运算单元和输出缓存寄存器堆组成;四块可配置只读存储器分别存储列块交织相关信息、横向更新相关信息、纵向更新相关信息和偏移量调整信息;该解码器横向处理并行度为b,b为子矩阵扩展因子;纵向处理并行度为2×b;算术逻辑单元包括两个独立的b路置换网络A、B、四个独立的b路恢复器阵列A1、B1、A2、B2、一个b路横向更新处理器阵列和一个b路纵向更新处理器阵列;一路横向更新处理器包括加法单元、分解单元、奇偶校验单元和保持电路;一路纵向更新处理器包括加法单元和硬判决电路;该解码器的数据流向如下:
横向更新和纵向更新按行序每个时钟周期分别扫描并处理两个非零子矩阵,先前的变量节点和值从和值寄存器堆取出,经过两个独立可配置置换网络A、B;同时,恢复器阵列A1和B1从校验节点信息组件恢复先前的自信息;所有经过置换网络的和值和恢复得到的自信息进入96个横向更新处理器,更新校验节点信息组件;横向更新所得外信息暂时存储到和值寄存器堆;当一个行块的横向更新完成之后,更新之后的信息组件回写到信息组件寄存器堆;同时送入恢复器阵列A2和B2恢复更新之后的自信息;所有恢复得到的自信息和从和值寄存器堆读取的外信息送入192个纵向更新处理器,更新变量节点和值,最后写入和值寄存器堆;
采用对称六级流水线结构以提高吞吐量和帮助解决和值寄存器堆访问冲突;其中,横向更新采用四级流水线:
流水线1:读取变量节点和值和校验节点信息组件;
流水线2:置换和值和恢复自信息;
流水线3:计算外信息;
流水线4:写入暂态外信息、更新校验节点信息组件和奇偶校验;
纵向更新同样采用四级流水线:
流水线1:读取暂态外信息;
流水线2:恢复更新后的自信息;
流水线3:更新变量节点和值以及硬判决;
流水线4:回写更新后的和值;
对QC-LDPC码基矩阵的24个列块,以0到23依次标号,被划分为四个象限:
象限0:0、4、 8、12、16和20;
象限1:1、5、 9、13、17和21;
象限2:2、6、10、14、18和22;
象限3:3、7、11、15、19和23;
对QC-LDPC码基矩阵做以下三项预处理:
预处理1:列块交织;
预处理2:行块交织;
预处理3:非零子矩阵重排序;
预处理1对基矩阵的列块进行重新排序,对于每一行块,确保所有非零子矩阵尽量均等的分布在所述的四个不同象限之中;
预处理2对基矩阵的行块进行重新排序,确保连续两行块的相关性总和尽量少;
预处理3对基矩阵中非零子矩阵的扫描顺序进行重新排序,确保每个时钟周期读取四个不同象限的相关信息;
将所述的和值寄存器堆划分为四个堆,对应所述的四个象限:
和值寄存器堆0:存储象限0所对应的所有位置的和值和外信息;
和值寄存器堆1:存储象限1所对应的所有位置的和值和外信息;
和值寄存器堆2:存储象限2所对应的所有位置的和值和外信息;
和值寄存器堆3:存储象限3所对应的所有位置的和值和外信息;
还引入存储器读写旁路技术;即当横向更新正准备读取纵向更新即将要写入的数据单元时,纵向更新后的数据直接传到横向更新单元。
2.如权利要求1所述的解码器,其特征在于采用优化的TDMP解码算法,其解码步骤如下:
步骤1:按自然顺序存储从信道接收过来的本征信息到输入缓存寄存器堆中;
步骤2:按交织顺序从输入缓存寄存器堆读出本征信息,初始化变量节点和值寄存器堆;
步骤3:按行序每次扫描两个非零子矩阵,并行读取相应变量节点和值和相应校验节点信息组件;
步骤4:通过两个置换网络置换和值,同时通过两个恢复器阵列从信息组件恢复自信息;
步骤5:通过横向更新处理器,计算外信息,包括置换后的和值减去恢复得到的自信息;
步骤6:写外信息、更新校验节点信息组件、做奇偶校验,如果所有行块都满足奇偶校验或者达到最大迭代次数,转入步骤11;
步骤7:按行序重新每次扫描两个非零子矩阵,从和值寄存器堆读取相应外信息;
步骤8:通过两个恢复器阵列恢复更新后的自信息;
步骤9:更新变量节点和值和硬判决;
步骤10:写回更新后的和值,转入步骤3;
步骤11:硬判决结果从置换网络送入输出缓存寄存器堆,通过地址解映射完成列块解交织;
步骤12:从输出缓存寄存器堆输出解码结果,解码结束。
3.如权利要求1所述的解码器,其特征在于该解码器有两个可配置的96路置换网络处理双通道数据,每个置换网络由两个级联的算术移位器组成,第一个算术移位器移位宽度是一个小于b的任意正整数,b≤96,需要七级级联移位;第二个算术移位器移位宽度是一个小于b且被4整除的任意正整数,只需要五级级联移位。
4.如权利要求1所述的解码器,其特征在于该解码器有四个恢复器阵列恢复所需的自信息:横向更新两个,纵向更新两个;每路恢复器由一个核心的四选一选择器组成;为了避免在横向更新处理器中使用减法单元,只需改变相应两个恢复器阵列中的选择器的真值表。
5.如权利要求1所述的解码器,其特征在于横向更新处理器阵列的核心单元包括加法单元、分解单元、奇偶校验单元和保持电路;由于采用双通道并行计算,每个横向更新处理器有两个两输入加法单元,一个以两输入比较和选择为核心的分解单元,一个以三输入异或门为核心的奇偶校验单元和四个以反馈移位寄存器为核心的保持电路,保持电路为向后续纵向更新单元提供稳定的校验节点信息组件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010121902A CN101771421B (zh) | 2010-03-11 | 2010-03-11 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010121902A CN101771421B (zh) | 2010-03-11 | 2010-03-11 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101771421A CN101771421A (zh) | 2010-07-07 |
CN101771421B true CN101771421B (zh) | 2012-10-17 |
Family
ID=42504067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010121902A Expired - Fee Related CN101771421B (zh) | 2010-03-11 | 2010-03-11 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101771421B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102064837B (zh) * | 2010-12-24 | 2013-01-23 | 西安电子科技大学 | 基于fifo分段存储的qc-ldpc码部分并行译码方法 |
CN102594369B (zh) * | 2012-02-27 | 2014-06-04 | 西安电子科技大学 | 基于fpga的准循环低密度校验码译码器及译码方法 |
CN102624401B (zh) * | 2012-03-30 | 2014-08-06 | 复旦大学 | 一种兼容结构化与非结构化ldpc译码器及译码算法 |
CN103618556A (zh) * | 2013-12-11 | 2014-03-05 | 北京理工大学 | 基于rmp调度的部分并行qc-ldpc译码方法 |
CN104837078B (zh) * | 2015-03-31 | 2019-04-30 | 北京交通大学 | 基于非匹配度量的光通信信道解映射方法和装置 |
CN106209114B (zh) * | 2015-04-29 | 2019-11-12 | 深圳忆联信息系统有限公司 | 译码方法及装置 |
CN106330203B (zh) * | 2016-08-26 | 2019-12-31 | 晶晨半导体(上海)股份有限公司 | 一种ldpc的解码方法 |
CN108234066B (zh) * | 2016-12-15 | 2020-12-15 | 华为技术有限公司 | 基于ldpc的通信方法和通信设备 |
TWI652907B (zh) * | 2017-01-09 | 2019-03-01 | 聯發科技股份有限公司 | 用於新無線電低密度奇偶校驗碼的偏移係數和提升因數設計 |
CN106911337B (zh) * | 2017-01-23 | 2020-06-09 | 深圳忆联信息系统有限公司 | 数据处理方法、装置和解码器 |
US10379952B2 (en) * | 2017-06-16 | 2019-08-13 | Western Digital Technologies, Inc. | Data recovery and regeneration using parity code |
CN109308928B (zh) * | 2017-07-28 | 2020-10-27 | 华邦电子股份有限公司 | 存储器装置的行解码器 |
CN109428604B (zh) * | 2017-09-04 | 2022-07-29 | 扬智科技股份有限公司 | 采用改进tdmp算法的ldpc码译码方法及电路 |
CN108337070A (zh) * | 2018-03-21 | 2018-07-27 | 上海交通大学 | 一种ldpc码信道解码器及其解码方法 |
CN113742898A (zh) * | 2021-08-13 | 2021-12-03 | 华力智芯(成都)集成电路有限公司 | 一种应用于低轨卫星互联网系统的ldpc译码器逻辑设计方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047392A (zh) * | 2007-03-23 | 2007-10-03 | 北京航空航天大学 | 一种多码率的ldpc码的译码器装置及译码方法 |
CN101136638A (zh) * | 2007-08-09 | 2008-03-05 | 复旦大学 | 一种多码率非规则ldpc码解码器 |
-
2010
- 2010-03-11 CN CN201010121902A patent/CN101771421B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047392A (zh) * | 2007-03-23 | 2007-10-03 | 北京航空航天大学 | 一种多码率的ldpc码的译码器装置及译码方法 |
CN101136638A (zh) * | 2007-08-09 | 2008-03-05 | 复旦大学 | 一种多码率非规则ldpc码解码器 |
Non-Patent Citations (2)
Title |
---|
邓运松等.高性能QC-LDPC码译码器的VLSI实现.《计算机辅助设计与图形学学报》.2008,第20卷(第4期),第432-437页. * |
鲍丹等.基于TDMP优化算法的QC-LDPC译码器VLSI实现.《计算机研究与发展》.2009,第46卷(第2期),第338-344页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101771421A (zh) | 2010-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101771421B (zh) | 基于tdmp的超高速低功耗qc-ldpc码解码器 | |
CN101800559B (zh) | 一种基于tdmp的高速可配置qc-ldpc码解码器 | |
CN111162797B (zh) | 一种速率兼容的5g ldpc码的编码装置及编码方法 | |
CN101951264B (zh) | 一种多码率准循环低密度奇偶校验码解码器 | |
CN101803210B (zh) | 使用块结构奇偶校验矩阵来提供半并行低密度奇偶校验解码的方法、装置和设备 | |
WO2018036178A1 (zh) | 一种ldpc的解码方法 | |
CN101604975A (zh) | 一种低功耗多模qc-ldpc码解码器及其工作方法 | |
CN103501210A (zh) | 一种高性能多标准fec译码器 | |
Lin et al. | Efficient shuffled decoder architecture for nonbinary quasi-cyclic LDPC codes | |
CN103618556A (zh) | 基于rmp调度的部分并行qc-ldpc译码方法 | |
CN102356554A (zh) | Turbo码数据交织处理方法和用于交织Turbo码数据的交织器 | |
Su et al. | A 58.6/91.3 pJ/b dual-mode belief-propagation decoder for LDPC and polar codes in the 5G communications standard | |
CN101924564A (zh) | 行列节点同步更新的部分并行准循环ldpc码译码器结构 | |
CN101262230A (zh) | 一种低密度奇偶校验码矩阵的设计方法 | |
CN101917249A (zh) | Qc-ldpc码译码器及其实现方法 | |
Ren et al. | High-Throughput and Flexible Belief Propagation List Decoder for Polar Codes | |
Boncalo et al. | Cost-efficient FPGA layered LDPC decoder with serial AP-LLR processing | |
EP3876424A1 (en) | Decoding method, decoding device, and decoder | |
CN113595564B (zh) | 基于信息截断的低复杂度多进制ldpc码译码器装置 | |
US10727869B1 (en) | Efficient method for packing low-density parity-check (LDPC) decode operations | |
Rybalkin et al. | A new architecture for high speed, low latency NB-LDPC check node processing for GF (256) | |
Schláfer et al. | A new architecture for high throughput, low latency NB-LDPC check node processing | |
CN102624401B (zh) | 一种兼容结构化与非结构化ldpc译码器及译码算法 | |
Lee et al. | A uniformly segmented SC-flip decoder for polar codes with memory reduction methods | |
Suravi et al. | High-throughput VLSI architecture for LDPC decoder based on low-latency decoding technique for wireless communication systems |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121017 Termination date: 20170311 |