CN101777921B - 用于显式存储片上系统的结构化ldpc码译码方法及装置 - Google Patents
用于显式存储片上系统的结构化ldpc码译码方法及装置 Download PDFInfo
- Publication number
- CN101777921B CN101777921B CN 201010102215 CN201010102215A CN101777921B CN 101777921 B CN101777921 B CN 101777921B CN 201010102215 CN201010102215 CN 201010102215 CN 201010102215 A CN201010102215 A CN 201010102215A CN 101777921 B CN101777921 B CN 101777921B
- Authority
- CN
- China
- Prior art keywords
- node
- check
- decoding
- variable node
- variable
- 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
Links
Images
Abstract
一种用于显式存储片上系统的结构化LDPC码译码方法及装置,其步骤为:(1)译码的初始化:该初始化过程包括将接收到的对数似然比LLR按特定的存储方式存储到变量节点存储块中、初始化校验节点存储块的值为0、预先设定一个最大迭代次数;(2)迭代过程:启动迭代次数计数器Iter,进行迭代操作;(3)输出译码结果:当迭代次数计数器Iter达到最大迭代数且完成最后一个校验节点的译码操作时,停止译码并输出译码结果;否则,转到步骤(2)继续迭代。该译码装置包括码率可重构存储管理控制器、译码控制器和处理阵列单元。本发明具有结构简单紧凑、成本低廉、操作方便、能够降低硬件复杂度、可支持多种码率等优点。
Description
技术领域
本发明属于无线通信领域,特指无线通信中包含低密度奇偶校验码LDPC码(Low-DensityParity-Checks Codes)的信道编译码领域。
背景技术
通信标准通常采用信道编译码技术以降低数据传输过程中的误码率BER(Bit ErrorRate)。LDPC码作为一类性能逼近香农极限的线性分组纠错码,具有良好的应用前景。目前DVB-S2(Digital Video Broadcasting-Satellite 2)、IEEE 802.11n、IEEE 802.16e等标准都采用LDPC码作为其核心信道编码技术。
LDPC码的奇偶校验矩阵属于稀疏矩阵,稀疏校验矩阵可通过Tanner图更为直观地表示。任何一种LDPC码的Tanner图表示中都包含变量节点和校验节点两类节点。根据Tanner图各类节点的连接关系的不同,LDPC码可分为结构化LDPC码和非结构化LDPC码,其中结构化LDPC码应用广泛。为了平衡硬件开销和吞吐率,结构化LDPC码的译码装置通常采用部分并行译码,每次对一定数量的变量节点或校验节点进行更新,或者同时更新一定数量的变量节点和校验节点。参见图1所示,为给出了规则LDPC码(12,3,6)的校验矩阵和Tanner图,其中每个变量节点(X1~X12)连接3个校验节点(S1~S6),每个校验节点连接6个变量节点。
LDPC码译码装置实现的核心技术之一是译码算法,一般均采用基于置信传播的迭代译码算法,每次迭代包含校验节点更新和变量节点更新两类操作。当前主流LDPC码译码算法包括“和积算法SPA”(Sum Product Algorithm)以及“最小和算法MSA”(Min-Sum Algorithm)。SPA的校验节点更新操作包含非线性运算,导致译码装置的复杂度较高,而MSA简化了校验节点更新操作,采用求最小值、次小值以及求和操作代替原有的非线性操作,降低了译码装置的实现开销,但同时降低了译码性能。
LDPC码译码装置一般是由译码逻辑、存储单元管理部件和译码控制器等组成。译码装置实现的关键技术之一是存储单元管理,尤其对于码长较长的LDPC码,校验矩阵的存储和译码过程迭代中间量的存储面积开销较大,一般占整个译码装置面积开销的50%以上。此外,一个通信标准通常提供多种码率和码长,以满足不同应用场合的需求。理论上,实现支持多种码率的译码装置,需要存储每种码率的校验矩阵,同时由于不同码率的校验节点的度不同,造成译码中间结果的存储的不规则性,也相应增加了译码装置的面积开销。
同时,在设计LDPC码译码装置时需考虑的另一个问题是译码控制器和处理单元阵列之间的连接方式,该问题同样关系到译码装置的复杂度和面积开销。例如,专利(CN200710044715.7)给出的LDPC码译码装置中的每个校验节点处理单元或变量节点处理单元都匹配有各自独立的译码控制器,但是这种分布式控制方式实现复杂,面积开销较大,特别是对于码长较大、并行度较高的译码装置。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种结构简单紧凑、成本低廉、操作方便、能够降低硬件复杂度、支持多种码率的用于显式存储片上系统的结构化LDPC码译码方法及装置。
为解决上述技术问题,本发明采用以下技术方案:
一种用于显式存储片上系统的结构化LDPC码译码方法,其特征在于步骤为:
(1)、译码的初始化:该初始化过程包括将接收到的对数似然比LLR(log-likelihood ratio)按特定的存储方式存储到变量节点存储块中、初始化校验节点存储块的值为0、预先设定一个最大迭代次数;
对n=1,2,…,N,
(2)、迭代过程:启动迭代次数计数器Iter;即对每个校验节点m=1,2,…,M,依次计算
(3)、输出译码结果:当迭代次数计数器Iter达到最大迭代数且完成最后一个校验节点的译码操作时,停止译码并输出译码结果即将变量节点存储块中所存储的λn值的符号位作为译码结果输出;否则,转到步骤(2)继续迭代;
在上述译码过程中,λn (0)是接收到的对数似然比LLR,λn是变量节点向校验节点传递的消息,Λmn (k)是第k次迭代中校验节点向变量节点传递的消息,β是一个非负的修正值,M(n)表示与变量节点xn相连的变量节点集合,N(m)表示与校验节点sm相连的变量节点集合,N(m)\n表示变量节点集合N(m)中去掉变量节点xn。
作为本发明的进一步改进:
所述步骤(2)的迭代过程包括外层循环和内层循环,所述外层循环依次对每个校验节点进行计算,当所有的校验节点计算完毕时,表示已完成一次迭代;所述内层循环采用Offset修正最小和译码算法,对与校验节点连接的变量节点依次进行处理。
所述内层循环中包括第一子循环和第二子循环,所述第一次子循环分别从变量节点存储块和校验节点存储块中读取λn和Λmn (k-1),将它们相减得到(λn-Λmn (k-1)),将此结果的绝对值送去与新的最小值进行比较,将符号位送去进行更新新的符号位集合NewSignSet,并将所有符号位进行异或操作得到新的符号集异或结果NewSignM;IndexCounter表示正在处理的当前校验节点所连接的变量节点索引计数值,Shift表示桶形移位器的移位值,Address表示访问本地存储器的访问地址。根据IndexCounter、Shift和Address的值可以从校验节点存储块中读取λn;由于只有两个值,在校验节点存储块中,只需存储最小值OldMin,次小值SecOldMin和最小值索引值OldIndex以及(λn-Λmn (k-1))的符号位集合OldSignSet;根据IndexCounter和OldSignSet确定Λmn (k-1)的符号位,以及根据IndexCounter是否等于OldIndex确定Λmn (k-1)的绝对值是最小值OldMin还是次小值SecOldMin;当对校验节点所有相连的变量节点操作完之后,对新得到的最小值和次小值进行修正;所述第二子循环为分别读取Λmn (k)和Λmn (k-1),并将它们相减得到(Λmn (k-Λmn (k-1)),将此结果送去变量节点功能单元,在变量节点功能单元中执行加法操作即完成了变量节点λn的更新;所述第二子循环完成之后,对校验节点存储块中的存储单元进行更新,将Λmn (k-1)更新为Λmn (k),然后对下一个校验节点进行译码操作;当对所有校验节点都完成一次译码操作时,表示已完成一次迭代译码。
一种用于显式存储片上系统的结构化LDPC码译码装置,其特征在于包括:
码率可重构存储管理控制器,包括一组针对不同码率条件下的状态机,由译码控制器配置重构,完成不同码率条件下的二级存储器和本地存储器之间的数据加载;
译码控制器,包括表征校验矩阵的地址序列存储器和移位序列存储器,所述地址序列存储器存储不同码率条件下译码过程所需的地址信息,所述移位序列存储器存储不同码率条件下译码过程所需的桶型移位器控制信息,所述译码控制器用于通过单控制流多数据流SCMD控制通路产生不同码率条件下译码控制信号,所述控制信号包括本地存储器的地址和读写信号和桶形移位器的移位控制信号;
处理阵列单元,包括一组以上的功能单元簇、功能单元数据交换网络、一个以上的本地存储器、模式可重构存储管理控制器以及校验和变量中间量交换通路,所述功能单元簇包括校验节点功能单元、变量节点功能单元,校验节点功能单元对应一组变量节点,变量节点功能单元对应一组校验节点,所述功能单元簇通过功能单元数据交换网络与本地存储器进行数据交互,所述功能单元数据交换网络包括一个多周期流水化桶形移位寄存器,所述本地存储器通过模式可重构存储管理控制器以及校验和变量中间量交换通路与码率可重构存储管理控制器相连,所述模式可重构存储管理控制器负责通过校验和变量中间量交换通路产生不同码率条件下配置本地存储器中所存储的校验节点信息和变量节点信息。
所述每一个本地存储器中包括校验节点存储块和变量节点存储块,构成乒乓缓冲区,任何时刻均只有一个存储块处于译码状态,另外一个存储块正在进行下一周期活跃中间变量集的调入操作。
与现有技术相比,本发明的优点就在于:
1、本发明采用改进分层调度最小和算法,利用该算法大幅降低译码器功能单元的组合逻辑面积,同时降低译码装置的硬件实现复杂度;
2、本发明利用多级显式存储系统优化LDPC译码装置的数据组织方式,极大降低译码装置本地存储器的面积开销;
3、本发明根据不同码率的编码规则,采用模式可重构存储管理技术对译码校验节点和信息节点的迭代中间量进行背靠背式存储,进一步降低本地存储器的面积开销;
4、本发明鉴于LDPC码译码过程各并行功能单元的工作时序相同而数据集不同的特点,译码装置采用单控制流多数据流(SCMD)结构,降低译码装置的控制逻辑的复杂度和开销。
5、本发明适用于结构化LDPC码的译码,特别适用于码长较长,码率种类繁多的LDPC码标准的译码,比如DVB-S2LDPC码。该译码方法可在译码性能和复杂度之间取得较好的折中,译码装置具有译码结构和功能单元实现简单、存储面积和功能单元面积优化等优点。
附图说明
图1是(12,3,6)规则LDPC码的Tanner图;
图2是本发明用于LDPC码译码方法的流程示意图;
图3是本发明中用于校验节点更新CFU的实现步骤之一的示意图;
图4是本发明中用于校验节点更新CFU的实现步骤之二的示意图;
图5是本发明中用于校验节点更新CFU的实现步骤之三的示意图;
图6是本发明译码装置在显式存储SoC结构中的位置关系示意图;
图7是本发明译码装置的总体结构框架结构示意图;
图8是本发明用于并行度为P/N的LDPC码译码处理单元的阵列结构框架示意图;
图9是本发明针对360/4并行DVB-S2LDPC码普通帧1/2码率的存储单元组织方式示意图;
图10是本发明针对360/4并行DVB-S2 LDPC码普通帧1/2码率下活跃中间量集和非活跃中间量集在两级存储器的组织方式示意图,其中图10(a)为变量节点的调度状态,图10(b)是和图10(a)相对应的校验中间量调度状态;
图11是本发明应用于DVB-S2标准普通帧1/2码率下的误码性能示意图。
具体实施方式
以下将结合具体实施例和说明书附图对本发明做进一步详细说明。
如图2所示,为本发明的译码流程示意图。
(1)、译码的初始化:该初始化过程包括将接收到的对数似然比LLR(log-likelihood ratio)按特定的存储方式存储到“RAM V”中、初始化“RAM C”的值为0、预先设定一个最大迭代次数。
对n=1,2,…,N,
(2)、迭代过程:启动迭代次数计数器Iter。
对每个校验节点m=1,2,…,M,依次计算
(3)、输出译码结果:当迭代次数计数器Iter达到最大迭代数且完成最后一个校验节点的译码操作时,停止译码并输出译码结果即将“RAM V”中所存储的λn值的符号位作为译码结果输出;否则,转到步骤(2)继续迭代。
在上述译码过程中,“RAM C”为校验节点存储块,用来保存校验节点的信息,该“校验节点的信息”主要包含最小值、次小值以及最小值的位置。“RAM V”为变量节点存储块,用来保存变量节点的信息。λn (0)是接收到的对数似然比LLR(log-likelihood ratio),λn是变量节点向校验节点传递的消息,Λmn (k)是第k次迭代中校验节点向变量节点传递的消息,β是一个非负的修正值,M(n)表示与变量节点xn相连的变量节点集合,N(m)表示与校验节点sm相连的变量节点集合,N(m)\n表示变量节点集合N(m)中去掉变量节点xn。
本发明在实施过程中的每次迭代译码共包含两重循环,外层循环依次对每个校验节点进行计算,当所有的校验节点计算完毕时,表示已完成一次迭代;内层循环根据采用的Offset修正最小和译码算法,对与校验节点连接的变量节点依次进行处理。
如图3、图4和图5所示,为本发明中校验节点功能单元“CFU”的实现步骤示意图,其所对应的是译码流程两重循环中的内层循环。该内层循环根据采用的译码算法,对与校验节点连接的变量节点进行处理,其中又包括两次循环——第一子循环和第二子循环。第一子循环的目的是为了更新最小值和次小值,图3对应对第i组校验节点进行更新的第一子循环。它需要分别从“RAM V”和“RAM C”中读取λn和Λmn (k-1),将它们相减得到(λn-Λmn (k-1)),将此结果的绝对值送去与新的最小值进行比较,将符号位送去进行更新新的符号位集合NewSignSet,并将所有符号位进行异或操作得到新的符号集异或结果NewSignM。IndexCounter表示正在处理的当前校验节点所连接的变量节点索引计数值,Shift表示桶形移位器的移位值,Address表示访问本地存储器的访问地址。根据IndexCounter、Shift和Address的值可以从校验节点存储块“RAM C”中读取λn;由于只有两个值,在校验节点存储块“RAM C”中,只需存储最小值OldMin,次小值SecOldMin和最小值索引值OldIndex以及(λn-Λmn (k-1))的符号位集合OldSignSet。根据IndexCounter和OldSignSet确定Λmn (k-1)的符号位,以及根据IndexCounter是否等于OldIndex确定Λmn (k-1)的绝对值是最小值OldMin还是次小值SecOldMin。当对校验节点所有相连的变量节点操作完之后,对新得到的最小值和次小值进行修正。如图4所示,为完成对最小值和次小值的修正操作。第二子循环是为了读取Λmn (k)和Λmn (k-1),并将它们相减得到(Λmn (k)-Λmn (k-1)),将此结果送去变量节点功能单元“VFU”,在变量节点功能单元“VFU”中执行加法操作即完成了变量节点λn的更新,图5对应内层循环中的第二子循环。本次循环中,Λmn (k-1)的读取方式与前一次循环中的读取方式一样,Λmn (k)的读取方式与Λmn (k-1)的读取方式的读取方式类似,只是Λmn (k)最终的符号位还需要由IndexCounter和NewSignSet确定的符号位与NewSignSet的值进一步异或得到。第二次循环完成之后,对校验节点存储块“RAM C”中的存储单元进行更新,将Λmn (k-1)更新为Λmn (k),然后对下一个校验节点进行译码操作。当对所有校验节点都完成一次译码操作时,表示已完成一次迭代译码。变量节点功能单元“VFU”包括简单的加法操作,在此就不再通过示意图加以说明。
上述译码流程中,采用的译码算法为“改进的分层Offset最小和译码算法”(公式2),它能更好平衡LDPC译码算法实现复杂度以及误码率BER。与一般的SPA译码算法不同,本发明译码算法的每次迭代过程中,分层调度译码算法依次对每个校验节点进行更新,和校验节点相连的变量节点的更新可以使用本次迭代中已经更新过的消息,加快了译码收敛速度;其次,本发明所采用译码算法采用Offset修正最小和算法,使译码性能相对最小和算法MSA有所提高;此外,与一般的LDPC译码算法不同的是,本发明中的译码算法不需要在每次迭代完成后计算码字的估计值是否满足校验方程(H是校验矩阵),而在达到一个预先设定的最大迭代次数之后直接输出译码结果。
正是由于上述译码算法采用分层调度方式,每次迭代过程中对校验节点依次进行更新,因此改进了消息传递的特性,加快了译码过程的收敛速度;同时,上述“Offset最小和译码算法”可在计算复杂度和译码性能之间取得较好的折中,并且该算法不需要存储接收到的对数似然比,且校验节点存储单元只需保存最小值、次小值的绝对值和符号位,以及存储每个校验节点所连接的变量节点,降低了译码装置的存储需求。
如图6所示,在应用实例中,本发明译码装置在显式存储结构片上系统SoC(System onChip)中的位置示意图。本发明的LDPC译码装置作为主设备通过互连接口和SoC的其他组件相连。本发明采用DMA工作方式的互连接口为LDPC译码装置提供数据,以提供更好的实时性。结构中应包含分布式多体便签式二级存储器L2,二级存储器L2是SoC中除主存储器和内存之外的所有可访问存储器,可提供大容量、高带宽的存储服务。LDPC译码装置和其他IP核通过核间互连网络实现二级存储器的共享访问,互连网络的实现方式可根据各IP核带宽的需求和实现复杂度确定。LDPC译码装置所在的互连网络片内总线,交叉开关结构或者片上网络等,具体实现根据其他应用的需求确定。
本发明适用于显式存储结构的SoC,所谓显式存储结构是和Cache存储结构相区别的存储结构,所有存储单元都单独编址,不存在对上层应用透明的某个数据的多份拷贝,不需要在各级存储器之间维护数据的一致性协议。一般地,该类结构的主设备(包括处理器、具备访存能力的IP核)通过DMA或者LD/ST指令访问各级存储器。对二级存储器的访问一般采用DMA方式,该方式可以较小的代价完成大批量数据的搬移。
如图7所示,本发明译码装置为可应用于面向通信的显式存储片上系统(SoC)中的超低复杂度译码装置,它包括码率可重构存储管理控制器、译码控制器和处理阵列单元。码率可重构存储管理控制器包括一组针对不同码率条件下的状态机,由译码控制器配置重构,完成不同码率条件下的二级存储器和本地存储器之间的数据加载。译码控制器包括表征校验矩阵的地址序列存储器和移位序列存储器,校验矩阵更新通路负责写入不同码率条件下的地址信息和移位信息,将对应的地址信息和移位信息写入到地址序列存储器和移位序列存储器。地址序列存储器存储不同码率条件下译码过程所需的地址信息,移位序列存储器存储不同码率条件下译码过程所需的桶型移位器控制信息,译码控制器用于通过单控制流多数据流SCMD控制通路产生不同码率条件下译码控制信号,控制信号包括本地存储器的地址和读写信号和桶形移位器的移位控制信号。处理阵列单元包括一组以上的功能单元簇、功能单元数据交换网络、一个以上的本地存储器、模式可重构存储管理控制器以及校验和变量中间量交换通路,功能单元簇包括校验节点功能单元、变量节点功能单元,校验节点功能单元对应Tanner图中一组变量节点,变量节点功能单元对应Tanner图中一组校验节点,校验(变量)节点通过互连网络找到与之相连的变量(校验)节点。功能单元数据交换网络包括一个多周期流水化桶形移位寄存器,功能单元簇通过功能单元数据交换网络与本地存储器进行数据交互,本地存储器通过模式可重构存储管理控制器以及校验和变量中间量交换通路与码率可重构存储管理控制器相连。模式可重构存储管理控制器负责通过校验和变量中间量交换通路产生不同码率条件下配置本地存储器中所存储的校验节点信息和变量节点信息。译码控制器根据译码算法的特点控制处理单元阵列工作的时序,模式可重构存储管理控制器根据当前的数据组织特点完成活跃数据集在本地存储器的读取和存储以及非活跃数据集到本地存储器、活跃数据集译码周期结束后到二级存储器的存储每一个本地存储器中包括校验节点存储块和变量节点存储块,构成乒乓缓冲区,任何时刻均只有一个存储块处于译码状态,另外一个存储块正在进行下一周期活跃中间变量集的调入操作。本发明在支持多种码率时并不需要在本地存储器中存储每种码率下的校验矩阵,当需要改变码率时,提前从二级存储器中调入新码率的校验矩阵,采用乒乓方式加快码率更新的速度。
本发明提供的译码装置能有效地将二级存储器用于译码中间量存储,即采用活跃中间量调度技术。具体实现时,该装置将译码迭代中间量,包括校验节点中间量和变量节点中间量,划分为活跃中间量集和非活跃中间量集,活跃中间量集存储在译码装置的本地存储器中用作当前译码周期的对象,非活跃中间量集存储在SoC各IP节点(包括译码装置IP节点)共享的二级存储器中等待译码装置的调度。本发明译码装置的本地存储器采用乒乓方式,下一译码周期将激活成活跃中间量集的非活跃中间量集的部分数据将在当前活跃中间量集的译码周期中调度进入本地存储器。假设目标LDPC码的算法并行度为P,那么译码装置中将包含P/N个变量节点功能单元(Variable Function Unit,VFU)和P/N个校验节点功能单元(CheckFunction Unit,CFU),N可根据面积开销和吞吐率的需求进行调整,在本发明中N被称为并行度缩减参数。当N=4时,任何译码周期中只有1/4的变量节点和校验节点作为活跃中间量集在本地存储器中进行译码,而其中3/4的变量节点和校验节点将作为非活跃中间量集保存在二级存储器中等待调度,任何一个译码周期只有占中间量总量的1/4的非活跃中间量进行数据调入操作等待译码,也就是说所有的中间量将被划分成4份,按照时分复用的方式进入译码装置进行译码。采用P/N并行方式的译码装置在SoC结构中本地存储器的面积开销将是P并行方式的2/N(采用了乒乓方式),同时该译码装置的吞吐率同样将是P并行方式下的1/N。
本发明的译码装置中,变量节点中间量和校验节点中间量的存储单元组织方式采用一种“背靠背存储技术”,支持多种码率条件下降低存储需求。由于每种码率下校验节点的度可能会不相同,且每个校验节点需要存储每条边的符号位,最小值对应的下标以及最小值和次小值的绝对值,所以每个校验节点Λmn (k)所对应的存储单元数为其中dc是校验节点的度,Q是量化实现时最小值和次小值的存储位宽。码长相同但码率不同的LDPC码,对于存储器的位宽和存储器的深度需求不同,如果采用直接存储的方式,存储器的位宽和深度均需按照最大值设计,增加了译码器的存储开销,本发明利用码率可重构的背靠背存储技术,在某些码率下当dc较小时,将两个或多个Λmn (k)的值占用校验节点存储块的一行,在对校验节点存储块的Λmn(k)进行读操作或写操作时,由码率可重构存储管理控制器控制并通过简单的地址产生逻辑完成数据的读取和存储,以保证读操作或写操作的正确性。该方案降低了译码器的存储面积,提高了存储单元的利用率。
结构化LDPC码存在译码并行度参数,比如DVB-S2标准(ETSI EN 302 307 V1.1.1)中LDPC码的并行度为360。根据本发明所提供的算法以及结构化LDPC码存在的并行度,结合DVB-S2标准中码长为64800bit的LDPC码,自顶向下解释本发明优化实现的译码装置,方法同样适用于其他结构化LDPC码,任何采用本发明所提出的思想优化结构化LDPC码译码装置的方法都属本发明的保护范围。
如图8所示,为适用于DVB-S2以及其他结构化LDPC码的处理单元阵列结构,不同LDPC码之间的主要区别在于功能单元的数量。图8包含L个变量节点功能单元“VFU”和L个校验节点功能单元“CFU”,其中L=P/N,P为该LDPC码的算法并行度,N为并行度缩减参数。对于DVB-S2 LDPC码,算法并行度为360,最多可包含360组功能单元,即P=360,N=1,采用活跃中间量调度技术进行译码时,N可取2K,其中K为1,2,...。当K为1时,由于采用了双缓冲的方式,本地存储器面积没有任何降低,同时由于本地存储器和二级存储器之间的数据交换,增加了二级存储器的带宽压力。当K为2时,可减少一半本地存储器的面积,同时增加一定数量的二级存储器的访问压力,译码装置的吞吐率将下降为原来的1/4,K为其他数值时类似。
变量节点存储块“RAM V”存储解调之后的对数似然比LLR(Log Likelihood Ratio)和迭代过程中变量节点操作的中间结果,校验节点存储块“RAM C”存储迭代过程中校验节点操作的中间量,变量节点存储块“RAM V”和校验节点存储块“RAM C”中数据的存储方式是由LDPC码得编码规律得到,以便校验节点能通过互连网络找到与之相连的变量节点。相邻的功能单元之间可以直接相连,不相邻的功能单元之间可以通过多周期流水化桶形移位器交换信息;校验节点通过桶形移位器找到与之相连的变量节点,桶形移位器的移位值Shift、地址值Address由译码控制器产生。采用活跃中间量技术进行译码优化时,每组功能单元对应的校验节点存储块“RAM C”和变量节点存储块“RAM V”都包含两个存储体,构成乒乓缓冲区,任何时刻只有一个存储体处于译码状态,另外一个存储体正在进行下一周期活跃中间变量集的调入操作。
以下将仍以DVB-S2标准中的LDPC码为例,说明如何采用“背靠背存储技术”以及“活跃中间量调度技术”,降低本地存储器的存储容量需求,以及两种技术条件下的译码装置本地存储的组织方式。
DVB-S2标准中的LDPC码包含普通帧和短帧两种帧模式,两种帧下码长分别为64800和16200比特,并支持1/4、1/3、2/5、1/2、3/5、2/3、3/4、4/5、5/6、8/9、9/10共11种码率。根据标准中的编码算法可知,DVB-S2标准中的LDPC码具有并行度为360的特点,本发明在介绍背靠背技术和活跃中间量调度技术时,假设译码装置采用360/4的并行方案。在该并行方式下,译码中间量被等分成4分,任何时刻只有1/4的中间量处于本地存储器进行译码,即活跃中间量占总的中间量的1/4。将LDPC码的N个变量节点分成K个信息节点和(N-K)个奇偶节点两类,并将信息节点分成90组,每组包含的K/90个信息节点映射到VFUi上;将奇偶节点也分成90组,每组包含4*q个奇偶节点,它们也映射到VFUi上。因此,每个VFU包含一组信息节点和一组奇偶节点。将校验节点也分成90组,每组包含4*q个校验节点,q是一个与码率相关的常数。这样分组之后,每组校验节点通过移位值Shift和地址信号值Address就可以找到一组相对应的信息节点。经过实验,采用本发明提出的算法进行DVB-S2LDPC码的译码,RAM V中的数据量化方式为8bit,RAM C中最小值和次小值的量化方式为5+1bit。如果采用直接的存储方式,那么由于DVB-S2LDPC码普通帧中,校验节点的度最大为30,每个单个RAM C的宽度必须为5(最小值绝对值)+5(次小值绝对值)+5(最小值位置)+30(各值符号)=45,如不采用活跃中间量存储,则单个RAM C的深度为90*4=360。
对于DVB-S2标准中LDPC码,其校验节点的度和RAM C的深度是负相关的,因此本发明采用“背靠背”技术完成存储优化。所谓“背靠背”技术是和顺序按节点存储相区别的针对RAM C的存储技术。传统实现RAM C的存储分配时,任何码率条件下,校验节点的信息将独占RAM C中的某一行,而不管该行的利用率。而背靠背存储技术是一种利用率敏感的存储技术,如果某种条件下校验节点的度足够小,比如DVB-S2LDPC码中的度为7的情况,一行中可以存储两个或两个以上的校验节点时,则将原先相继存储的两个节点存储在同一RAM C行中,而具体选择哪一行采用操作则由译码控制器确定。以DVB-S2 LDPC码的普通帧为例,当码率为1/4,1/3,2/5,1/2时,RAM C的每一行存储两个校验节点的信息;当码率为3/5,2/3,3/4,4/5,5/6,8/9,9/10时,RAM C的每一行存储一个校验节点存储单元。采用该技术后,可将RAM C的深度减小到46*4。
如图9所示,为译码器在普通帧1/2码率下(q=90,K=32400)第i个存储块RAM Vi和RAM Ci的存储方式(没有采用活跃中间量技术,因此所有中间量保存在本地存储器中)。RAMVi中包含信息节点的存储和奇偶节点的存储两部分。图中的数字表示该位置存储的信息对应于校验节点或者信息节点的序列号。
如图10所示,为给出了1/2码率条件下DVB-S2 LDPC码译码过程中,采取1/4活跃中间量调度技术后的存储组织示意图,其中图10(a)为变量节点的调度状态,图10(b)是和图10(a)相对应的校验中间量调度状态。图中显示中间量的第一部分正在译码状态,而中间量的第2部分正在调入本地存储器。值得注意的是,在第2部分调入本地存储器之前,必须先将本地存储器中存储的前一个译码周期完成译码的中间量的第4部分写回二级存储器,该部分没有显示在图中。
图11是采用本发明提供的译码方法和译码装置,将本发明应用于DVB-S2标准中普通帧1/2码率下,最大迭代次数为15时的误码性能。随着信噪比Eb/No的提高,误码率BER呈现下降趋势,误码率在10-7时出现一个误码平台,能满足DVB-S2标准的应用需求。
以上所述仅是本发明的一种实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (2)
1.一种用于显式存储片上系统的结构化LDPC码译码方法,其特征在于步骤为:
(1)、译码的初始化:该初始化过程包括将接收到的对数似然比LLR存储到变量节点存储块中、初始化校验节点存储块的值为0、预先设定一个最大迭代次数;
对n=1,2,…,N,
(2)、迭代过程:启动迭代次数计数器Iter;即对每个校验节点m=1,2,…,M,依次计算
(3)、输出译码结果:当迭代次数计数器Iter达到最大迭代次数且完成最后一个校验节点的译码操作时,停止译码并输出译码结果即将变量节点存储块中所存储的λn值的符号位作为译码结果输出;否则,转到步骤(2)继续迭代;
在上述译码过程中,是接收到的对数似然比LLR,λn是变量节点向校验节点传递的消息,是第k次迭代中校验节点向变量节点传递的消息,β是一个非负的修正值,M(n)表示与变量节点xn相连的校验节点集合,N(m)表示与校验节点sm相连的变量节点集合,N(m)\n表示变量节点集合N(m)中去掉变量节点xn;
所述步骤(2)的迭代过程包括外层循环和内层循环,所述外层循环依次对每个校验节点进行计算,当所有的校验节点计算完毕时,表示已完成一次迭代;所述内层循环采用Offset修正最小和译码算法,对与校验节点连接的变量节点依次进行处理;
所述内层循环中包括第一子循环和第二子循环,所述第一子循环分别从变量节点存储块和校验节点存储块中读取λn和将它们相减得到将此结果的绝对值送去与新的最小值进行比较,将符号位送去进行更新新的符号位集合NewSignSet,并将所有符号位进行异或操作得到新的符号集异或结果NewSignM;IndexCounter表示正在处理的当前校验节点所连接的变量节点索引计数值,Shift表示桶形移位器的移位值,Address表示访问本地存储器的访问地址;根据IndexCounter、Shift和Address的值可以从校验节点存储块中读取λn;由于只有两个值,在校验节点存储块中,只需存储最小值OldMin,次小值SecOldMin和最小值索引值OldIndex以及的符号位集合OldSignSet;根据IndexCounter和OldSignSet确定的符号位,以及根据IndexCounter是否等于OldIndex确定的绝对值是最小值OldMin还是次小值SecOldMin;当对校验节点所有相连的变量节点操作完之后,对新得到的最小值和次小值进行修正;所述第二子循环为分别读取和并将它们相减得到将此结果送去变量节点功能单元,在变量节点功能单元中执行加法操作即完成了变量节点λn的更新;所述第二子循环完成之后,对校验节点存储块中的存储单元进行更新,将更新为然后对下一个校验节点进行译码操作;当对所有校验节点都完成一次译码操作时,表示已完成一次迭代译码。
2.一种用于显式存储片上系统的结构化LDPC码译码装置,其特征在于包括:
码率可重构存储管理控制器,包括一组针对不同码率条件下的状态机,由译码控制器配置重构,完成不同码率条件下的二级存储器和本地存储器之间的数据加载;
译码控制器,包括表征校验矩阵的地址序列存储器和移位序列存储器,所述地址序列存储器存储不同码率条件下译码过程所需的地址信息,所述移位序列存储器存储不同码率条件下译码过程所需的桶型移位器控制信息,所述译码控制器用于通过单控制流多数据流SCMD控制通路产生不同码率条件下译码控制信号,所述译码控制信号包括本地存储器的地址和读写信号和桶形移位器的移位控制信号;
处理阵列单元,包括一组以上的功能单元簇、功能单元数据交换网络、一个以上的本地存储器、模式可重构存储管理控制器以及校验和变量中间量交换通路,所述功能单元簇包括校验节点功能单元和变量节点功能单元,校验节点功能单元对应一组变量节点,变量节点功能单元对应一组校验节点,所述功能单元数据交换网络包括一个多周期流水化桶形移位寄存器,所述功能单元簇通过功能单元数据交换网络与本地存储器进行数据交互,所述本地存储器通过模式可重构存储管理控制器以及校验和变量中间量交换通路与码率可重构存储管理控制器相连,所述模式可重构存储管理控制器负责通过校验和变量中间量交换通路产生不同码率条件下配置本地存储器中所存储的校验节点信息和变量节点信息;
该装置将译码迭代中间量,包括校验节点中间量和变量节点中间量,划分为活跃中间量集和非活跃中间量集,活跃中间量集存储在译码装置的本地存储器中用作当前译码周期的对象,非活跃中间量集存储在显式存储片上系统SoC各IP节点共享的二级存储器中等待译码装置的调度;所述本地存储器采用乒乓方式,下一译码周期将激活成活跃中间量集的非活跃中间量集的部分数据将在当前活跃中间量集的译码周期中调度进入本地存储器;
每一个所述本地存储器中包括校验节点存储块和变量节点存储块,构成乒乓缓冲区,任何时刻均只有一个存储块处于译码状态,另外一个存储块正在进行下一周期活跃中间量集的调入操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010102215 CN101777921B (zh) | 2010-01-28 | 2010-01-28 | 用于显式存储片上系统的结构化ldpc码译码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010102215 CN101777921B (zh) | 2010-01-28 | 2010-01-28 | 用于显式存储片上系统的结构化ldpc码译码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101777921A CN101777921A (zh) | 2010-07-14 |
CN101777921B true CN101777921B (zh) | 2013-04-17 |
Family
ID=42514270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010102215 Active CN101777921B (zh) | 2010-01-28 | 2010-01-28 | 用于显式存储片上系统的结构化ldpc码译码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101777921B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI550628B (zh) * | 2014-07-16 | 2016-09-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102130693B (zh) * | 2010-11-10 | 2013-06-05 | 华为技术有限公司 | 一种低密度奇偶校验码的译码方法和装置 |
CN102118173B (zh) * | 2011-01-27 | 2013-09-18 | 牛毅 | 一种ldpc及其缩短码的高速译码方法 |
CN107124187B (zh) * | 2017-05-05 | 2020-08-11 | 南京大学 | 一种应用于闪存的基于等差校验矩阵的ldpc码译码器 |
CN108809330B (zh) * | 2018-05-07 | 2020-09-22 | 中山大学 | 一种针对NAND-Flash存储介质的LDPC码译码方法 |
CN112187285B (zh) * | 2020-09-18 | 2024-02-27 | 南京中科晶上通信技术有限公司 | 基于dvb-s2译码器的桶形移位器处理方法及桶形移位器 |
CN115425988B (zh) * | 2022-07-29 | 2024-02-09 | 北京融为科技有限公司 | 一种高速ldpc全模式列变换方法 |
CN116436474B (zh) * | 2023-06-13 | 2023-11-17 | 武汉能钠智能装备技术股份有限公司四川省成都市分公司 | 一种信道编解码方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615914A (zh) * | 2009-06-24 | 2009-12-30 | 重庆金美通信有限责任公司 | 分层最小和ldpc译码校验节点处理的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4487213B2 (ja) * | 2007-10-19 | 2010-06-23 | ソニー株式会社 | 復号装置および方法、並びにプログラム |
-
2010
- 2010-01-28 CN CN 201010102215 patent/CN101777921B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101615914A (zh) * | 2009-06-24 | 2009-12-30 | 重庆金美通信有限责任公司 | 分层最小和ldpc译码校验节点处理的实现方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI550628B (zh) * | 2014-07-16 | 2016-09-21 | 群聯電子股份有限公司 | 解碼方法、記憶體儲存裝置及記憶體控制電路單元 |
US10193569B2 (en) | 2014-07-16 | 2019-01-29 | Phison Electronics Corp. | Decoding method, memory storage device and memory control circuit unit |
Also Published As
Publication number | Publication date |
---|---|
CN101777921A (zh) | 2010-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101777921B (zh) | 用于显式存储片上系统的结构化ldpc码译码方法及装置 | |
CN101350625B (zh) | 一种高效通用的qc-ldpc码译码器及其译码方法 | |
CN1874164B (zh) | 使用同时存储器存取的消息传递译码装置和方法 | |
CN101188426B (zh) | 用于对准循环结构的ldpc码进行并行处理的译码器及方法 | |
CN102664638A (zh) | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 | |
CN101854177B (zh) | 一种高吞吐率的ldpc译码器 | |
CN101335592B (zh) | 基于矩阵分块的高速ldpc译码器实现方法 | |
CN109347486B (zh) | 低复杂度高吞吐率的5g ldpc编码器和编码方法 | |
CN100544212C (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN102064835B (zh) | 适用于准循环ldpc译码的译码器 | |
CN102340317B (zh) | 结构化ldpc码的高吞吐率译码器及译码方法 | |
CN104158549A (zh) | 一种极性码译码方法及译码装置 | |
CN103957016B (zh) | 一种低存储容量的Turbo码译码器及其设计方法 | |
CN101800627A (zh) | 一种多码率兼容的高速ldpc编码器的硬件实现 | |
CN101420279A (zh) | 移动多媒体广播中高速ldpc译码器及译码方法 | |
CN101478312A (zh) | 一种ldpc译码器及其实现译码的方法 | |
CN102594369B (zh) | 基于fpga的准循环低密度校验码译码器及译码方法 | |
CN102201817B (zh) | 基于存储器折叠架构优化的低功耗ldpc译码器 | |
CN101136638A (zh) | 一种多码率非规则ldpc码解码器 | |
CN101958718B (zh) | 用于ldpc码的改进型半并行译码器和译码方法 | |
CN101557232A (zh) | 一种低密度奇偶校验码解码方法 | |
CN102594368B (zh) | 一种最大迭代次数可变的ldpc译码方法和译码器 | |
CN101442677A (zh) | Dmb-t解调芯片中前向纠错解码的硬件构架及解码方法 | |
CN113612575B (zh) | 面向Wimax协议的QC-LDPC译码器译码方法及系统 | |
CN102164023A (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 |