新闻中心

EEPW首页>嵌入式系统>设计应用> 一种基于FPGA的QC_LDPC码的译码器设计

一种基于FPGA的QC_LDPC码的译码器设计

作者: 时间:2014-05-13 来源:网络 收藏

(4)地址生成模块。地址生成模块中包含一个保存校验矩阵中所有子块位置和子块偏移量信息的只读寄存器(ROM)。通过从ROM中调取信息,分别产生Zmem和Lmem的读写地址。

本文引用地址://m.amcfsurvey.com/article/246737.htm

(5)校验模块。校验模块在每一次迭代结束之后,对所有校验方程进行验证,若全部满足则停止迭代,否则进行下一次迭代过程,直至达到预先设定的最高迭代次数为止。

(6)控制模块。控制模块中设置整个译码器的状态机,控制译码器各个子模块有序运行。

3.2 译码器中内存读取的问题及改进

在PCUB模块中,每个校验节点对应的6个变量节点信息串行加入迭代过程,而这些节点信息存储在与之对应的216个Zmem中。由于校验矩阵列重为3,因此,若按照校验矩阵原来的结构,当108个PCUB并行从Zmem中读取数据时,顺序读取变量节点信息时可能从某一子块列对应的Zmem中读取1~3个数据,这样不同的读取情况,会增加Zmem的硬件设计复杂度。

由于变量节点信息加入迭代过程的先后顺序并不影响译码器的结构,因此对变量节点信息的读取顺序加以改进,将原有的读取顺序重新排列,使得在同一时刻的PCUB从不同的子块列对应的Zmem中读取数据,即每一时刻Zmem最多提供一个数据,这便大幅降低了Zmem的设计复杂度,进而提高硬件的通用性。

4实现

选用Altera公司StratixIII系列的EP3SL340器件,设置最大迭代次数为5次,在QuartusII 9.0下完成综合与布局布线,硬件资源消耗如表1所示。

在译码过程中,首先花费108个时钟进行Zmem的初始化过程,完成后开始迭代译码。在每一次迭代过程中,PCUB模块进行108次更新,由于采用流水线结构,每次更新实际仅需花费6个时钟,再加上第一组数据进入流水线花费的额外6个时钟,5次迭代共花费6×(108×5)+6=3 246个时钟。

图2为传统迭代与分层迭代译码算法的性能曲线比较,为AWGN信道模式下采用BPSK调制,进行6 bit量化。通过图中的性能曲线可看出,在最大迭代次数同为5次的情况下,对正规码采用分层译码器处理后相比采用传统部分并行结构译码器具有较好的译码性能表现,在信噪比为2.5 dB的情况一,误码率可以达到10-5量级。

5 结束语

文中首先利用3个不同的子矩阵分别按照指定的方法进行移位运算,组合得到无4环和6环的基阵,进而利用单位矩阵及其移位矩阵作为替换因子随机替换基阵中的“1”而扩展得到所需的校验矩阵。随后采用分层译码算法,该算法较传统的部分并行结构有较好的收敛性,并降低了迭代次数的要求。同时在Altera公司的StratixIII系列上得以实现,验证其达到了较高的译码吞吐量。

c++相关文章:c++教程



上一页 1 2 3 下一页

关键词:FPGAQC_LDPC

评论


相关推荐

技术专区

关闭