当前位置:文档之家› 通用型高速LDPC码编码器设计与FPGA实现

通用型高速LDPC码编码器设计与FPGA实现

通用型高速LDPC码编码器设计与FPGA实现
通用型高速LDPC码编码器设计与FPGA实现

摘要:随着高速数据传输业务的快速发展,人们对信息传输的质量和速率要求越来越高,高速ldpc码编译码器在通信系统中的应用需求更加强烈。在节约硬件资源的前提下,为最大限度的降低编码时延、提高编码器速率,本文从编码算法的通用性出发,将一致校验矩阵通过行列置换和高斯消元,使每个校验位的运算只与预处理后矩阵的对应行相关,具备了可以灵活并行处理的结构。在编码器的硬件设计上,本文提出了一种校验位并行分步运算的编码器架构,通过同时计算所有校验位,分步处理单个校验位,有效地降低了硬件实现复杂度,缩短了关键路径时延,提高了编码速率。实现结果表明,本文设计和实现的编码器工作时钟频率可以达到250mhz,相应的吞吐量为14gbit/s。

关键词:通用型 ldpc码高速编码器

中图分类号:tp3 tn4 文献标识码:a 文章编号:1007-9416(2016)05-0000-00

1 引言

人们对ldpc码的批评主要集中在高编码复杂度上[2],如何实现快速编码一直是ldpc 码的一个研究热点。现行的编码方案有基于生成矩阵的编码算法和基于校验矩阵的编码算法两大类,前者是利用稀疏校验矩阵的特定结构,对校验矩阵进行预处理,求出生成矩阵后编码,而后者是利用校验矩阵直接进行编码。

本文立足工程实践的需求,采取高斯消元编码算法,设计出了资源占用较少、并行度高且算法灵活、关键路径时延低、布线简单的编码器结构,实现了编码速率的极大提高。

2 常用编码算法介绍与分析

对于一个ldpc码,设码字空间为c,校验位用p表示,信息位用s表示,则其码长为n,信息位个数为k,校验位个数为,由奇偶校验矩阵h唯一确定。校验矩阵h的每一行对应一个校验方程,每一列对应码字中的一个比特。编码时,可以先得到生成矩阵,再由生成矩阵与信息序列s的线性关系式求得码字:

2.1 基于lu分解的编码[3]

将校验矩阵h分为两部分,其中a为m阶的方阵。如果a可以通过行列变化和高斯消元,分解成为lu两部分(l为下三角矩阵,u为上三角矩阵),同时引入中间变量y,即可由l矩阵迭代得到中间向量y,再由u矩阵迭代得到校验序列p。这种算法的优点是运算复杂度与码长成线性关系;缺点是预处理时需要寻找优良的分解方法以保持矩阵的稀疏性,前后迭代运算时延较大。

2.2 基于近似下三角矩阵的编码

只对校验矩阵h进行行列置换,转化为具有近似下三角的结构[4](图1),其中h中剩下的行称为近似表示的间隙。

高斯消元清除e,同时将码字c写成,其中为前个校验位,为后个校验位,则有:

展开后,即可得出、的计算公式。该算法优点是,如果可以将g控制在较小范围内,复杂度与码长呈线性关系;缺点是重新排列矩阵实现较为复杂,且矩阵求逆复杂度较高,需要特定结构的校验矩阵以降低复杂度。

2.3 基于qc-ldpc码的编码

有学者提出了校验矩阵具有一定简单编码结构的准循环ldpc码[5],其校验矩阵被分割成若干个小的方阵,每个方阵由循环置换矩阵或全0矩阵构成。该码校验矩阵h和生成矩阵g都具有准循环结构,可以?用移位寄存器进行存储,节约了硬件资源。

此外,在准循环 ldpc 码的基础上附加约束,使其具有更加方便进行处理的结构,也可以实现有效编码。这些方法的优点是编码复杂度进一步降低,不足之处是对校验矩阵具有更加特殊的要求,对一般ldpc码、特别是随机构造的ldpc码不具备通用性。

2.4 基于优化的高斯消元编码算法

上述编码算法都对编码复杂度进行了一定优化,但同时也有很大的局限性,一方面对ldpc码矩阵结构有特定的要求,通用性不强,另一方面硬件电路的设计也较为复杂,带来一定延时。因此,本文提出了一种基于优化的高斯消元的编码算法。

在消元过程中,少数列变换对生成码字的顺序有一定影响,计算出校验位后,根据变换顺序重新调整序列,即可得出正确的码字。这样,求解校验位的过程只与预处理后的校验矩阵中对应的行相关,便于实现行间高度并行的运算。这种编码方法的不足是破坏了校验矩阵的稀疏性;优点是通用性强,对于各种类型的ldpc码的校验矩阵都可以处理,并且在硬件实现上并行度高、时延小,布线较为简单,存储资源的占用也可以接受。

3 编码器硬件结构设计

以上分析了几种常用的编码方法,并对基于优化的高斯消元编码算法进行了介绍。本文以(4480,3920)ldpc码为例,基于优化的高斯消元编码方案,设计了一种校验位并行分步运算的编码器结构,如图2所示。

图2中,rom1至rom7表示7个rom存储块,用来存储预处理后的校验矩阵。

工作流程可以描述为:每个时钟周期并行输入56个信息位,分别被传递给输入缓存模块与逻辑运算模块;同时,从7个rom块中读取出矩阵的560行、56列元素,并送入逻辑运算模块;逻辑运算模块接收到两类数据后,开始执行校验位运算。此过程重复执行70个时钟周期后,逻辑运算模块计算出560个检验位,输送至输出缓存模块;此时,输入缓存模块恰好将缓存的3920个信息位传递给输出缓存模块;560个校验位和3920个信息位经输出缓存模块重新排序后,转化成 64路并行输出。

3.1逻辑运算电路设计

每个校验位的计算只与矩阵中的对应行相关,因此,本文提出了一种校验位并行分步计算方案,即每个时钟周期,56个信息位分别在560个逻辑运算电路内,与对应的子矩阵中560行、56列元素进行运算,经过70个时钟周期,即可同时计算出560个校验位。以第k个校验位的计算为例(如图3):第1个时钟周期,矩阵的第k行1到56个元素与并行输入的56个信息位一一对应,分别进行逻辑与运算,得出的56个变量与ak(初始值为0)执行异或运算,得出的结果更新到ak,并作为反馈信号参与到下一周期运算;第2个时钟周期,更新后的56路信息位,与矩阵的第k行中57到112个元素执行相同运算,而后与上一周期得出的ak进行异或运算;依次类推,直到第70个周期运算结束,得出结果即为对应的校验位pk。

图3中,ti表示第1到第70个时钟周期数,b表示矩阵第k行的元素,s表示信息位,设,则。

3.2 校验矩阵的分层存储

由于一帧数据运算需要70个时钟周期,在存储时,对矩阵进行如下处理(图4):

(1)将矩阵按每80行为1层,共分为7层,每层含个元素;定义7个rom块,分别把矩阵的第1层至第7层存储到rom1到rom7中。

(2)矩阵的每层,按每56列分成70个矩阵块,每个矩阵块大小为,含4480个元素;对应的,定义每个rom块深度为70,宽度为4480比特。7个rom块的每一存储单元,对应存储一个大小的。

(3)每个矩阵块中的元素在对应的存储单元中是按行分布的。以rom1为例,设矩阵第1层的元素可以用表示(),则对应的存储单元对的存储顺序如图5所示。

这样,7个rom块的每个地址,各自对应矩阵中的80行、56列元素。在第k个计算周期上升沿,就可以同时对7个rom块的第k个存储单元进行寻址,将矩阵中第k个56列数据一次性全部读出,输送到逻辑运算电路。

3.3 输入输出缓存设计

校验位需要70个时钟周期才能计算完成,需要对并行输入的56路信息位进行缓存,待校验位计算完成后,两者组成完整的编码码字,方可输出。

为此,本文设计了一个输入缓存模块,主要由56个串/并转换模块组成,每个串/并转换模块对应一路输入信号,将一帧56路并行、每路串行输入70个信息位的信息序列,经70个时钟周期,转换成3920路并行输出。此时,560个校验位计算完成,与3920路并行输出的信息位组合成完整的编码码字,传递到输出缓存模块。

输出缓存模块与输入缓存原理相似,而功能相逆。组合后的4480路并行输入的码字传递到输出缓存模块后,被转换成64路并行信号,每路串行输出70比特数据。

3.4 控制模块设计

控制模块是编码器的核心模块,作用是:信息序列输入的同时,输入一个使能信号rx_en,使存储模块地址addr和控制模块中的计数器初始化为零,对7个rom块进行寻址,逻辑运算模块开始工作。随后,每经过一个时钟周期,地址addr和计数器自动加1。当第70个时钟周期结束,一帧数据运算完成,计数器达到预定值,产生一个使能信号data_en,启动输出缓存模块输出编码码字。

4 实现结果及分析

本设计采用xilinx公司的vivado 14.4版本的硬件开发软件,以virtex-7 系列芯片为硬件平台,进行了综合和布局布线后,编码器fpga资源消耗情况和吞吐量如表1所示。

本文所设计的编码器lut资源使用仅占芯片的5.29%,bram存储资源使用也仅占芯片的29.76%,布局布线后的工作时钟频率可以达到250mhz,吞吐量可达14gbps。

5 结语

本文在对现有编码方案进行分析和对比的基础上,提出了一种基于优化的高斯消元算法的编码方案,该算法通用性强,适用于一般的ldpc码,并且在求校验位时便于实现行间高度并行的运算。在硬件实现上,设计了并行分步运算的快速编码结构,优化了矩阵的存储方法,简化了布线路径,降低了关键路径时延,达到了高速编码的目的。在基于xilinx公司xc7vx690t fpga芯片硬件平台上,本文设计的编码器工作时钟可以达到250mhz,吞吐量达到了14gbps,且消耗资源较少,具有较大的工程应用价值。

【开题报告】基于FPGA的CIC滤波器的设计与仿真

开题报告 电子信息工程 基于FPGA的CIC滤波器的设计与仿真 一、综述本课题国内外研究动态,说明选题的依据和意义 基于多速率信号处理原理,设计了用于下变频的CIC抽取滤波器,由于CIC滤波器结构只用到加法器和延迟器,没有乘法器,很适合用FPGA来实现。滤波器的结构简单, 需要的存储量小, 是被证明在高速抽取和插值系统中非常有效的单元。 随着数字信号处理算法的不断优化,数字信号处理器(Digital Signal Processors, DSPs)性能的不断提高,数字信号处理技术越来越被广泛地应用在各个领域。数字信号处理技术正朝着高速高性能方向发展,因此这对数字信号处理的手段和工具也提出了更高的要求。 随着现场可编程门阵列(Field Programmable Gate Array, FPGA)制造工艺的不断改进,其集成度和性能的不断提高,采用FPGA对数字信号进行处理越来越受到重视。与DSP相比,FPGA有着不可比拟的优势。一方面,与DSP靠程序指针来运行程序相比,FPGA执行算法的本质是靠电路并行执行的,因此在同样的时钟频率下,使用FPGA完成数字信号处理算法要比使用DSP快得多。另一方面,由于FPGA编程灵活,资源可重新配置,使得在实现数字信号处理时更加灵活,成本更低。因此,FPGA性能的不断提高,能够满足未来复杂数字信号高速实时处理的要求。 用FPGA设计滤波器,无非是是设计一些乘累加单元,其滤波器的各种特性即滤波参数可以通过MATLAB仿真获得。所以首先要做的是确定你滤波器的设计要求,在MATLAB中仿真设计出该滤波器,从而导出滤波器系数,才能在FPGA中使用。 CIC滤波器由于其无需乘法器以及结构特殊,在移动电视直放站的数字信号处理中,可以高效地胜任抽取滤波的任务。然而C1C滤波器也有缺陷,一者通带下垂严重,二者信号折叠带衰减不充分,而且此两者难以兼顾。RS修正法和Kaiser—Hamming补偿法联合使用于CIC滤波器的改进技术中,有效地解决了该问题。 在移动通信系统中,软件无线电的概念已显得越来越重要。众所周知SRC滤波部分的一个重点就是抑制潜在的混叠部分,有一种时变CIC滤波器,他同样是通过先A倍内插再B倍抽样来实现采样率的转换。因此,改进的CIC滤波器在软件无线电中有大的重

cic滤波器的fpga实现

cic滤波器的FPGA实现 发布时间:2016-01-26 15:07:21 技术类别:CPLD/FPGA 一、关于多采样率数字滤波器 很明显从字面意思上可以理解,多采样率嘛,就是有多个采样率呗。前面所说的FIR,IIR滤波器都是只有一个采样频率,是固定不变的采样率,然而有些情况下需要不同采样频率下的信号,具体例子我也不解释了,我们大学课本上多速率数字信号处理这一章也都举了不少的例子。 按照传统的速率转换理论,我们要实现采样速率的转换,可以这样做,假如有一个有用的正弦波模拟信号,AD采样速率是f1,现在我需要用到的是采样频率是f2的信号,传统做法是将这个经过f1采样后的信号进行DA转换,再将转换后的模拟信号进行以f2采样频率的抽样,得到采样率为f2的数字信号,至此完成采样频率的转换 但是这样的做法不仅麻烦,而且处理不好的话会使信号受到损伤,所以这种思想就被淘汰了,现在我们用到的采样率转换的方法就是抽取与内插的思想。 二、抽取 先来总体来解释一下抽取的含义:前面不是说,一个有用的正弦波模拟信号经采样频率为f1的抽样信号抽样后得到了数字信号,很明显这个数字信号序列是在f1频率下得到的,现在,假如我隔几个点抽取一个信号,比如就是5吧,我隔5个点抽取一个信号,是不是就是相当于我采用了1/5倍f1的采样频率对模拟信号进行采样了?所以,抽取的过程就是降低抽样率的过程,但是我们知道,这是在时域的抽样,时域的抽样等于信号在频域波形的周期延拓,周期就是采样频率,所以,为了避免在频域发生频谱混叠,抽样定理也是我们要考虑的因素 下面来具体来介绍 如上图所示,假如上面就是某一有用信号经采样频率f1抽样得到的频谱,假设这时候的采样频率为8 Khz ,可以通过数格子得到,从0到F1处有8个空格,每个空格代表1Khz,有些朋友可能会问,这不是在数字频域吗,单位不是π吗,哪来的hz?是的,这里是数字频域,采样频率F1处对应的是2π,这里只是为了好解释,我们用模拟频率来对应数字频率。 上面是采样频率为8K的数字信号频域图,现在我要对这个数字信号进行时域抽取,从而来降低信号的采样率,我们知道,一旦我们对数字信号进行时域抽取,那么采样率下降,而采样率就是数字信号频域的波形周期,那么也就是周期下降,所以,我们对信号进行抽取要有个度,要在满足抽样定理的条件下对信号进行抽取,否则就会发生频谱混叠。

FPGA的CIC滤波器的设计要点

基于FPGA的CIC数字滤波器的设计 摘要:级联积分梳状(Cascade Integrator Comb,CIC)滤波器是数字系统中实现大采样率变化的多速率滤波器,已经证明是在高速抽取和插值系统中非常有效的单元,在数字下变频(DDC)和数字上变频(DUC)系统中有广泛的应用。它不包含乘法器,只是由加法器,减法器和寄存器组成,而且需要的加法器的数目也减少了许多,因此CIC滤波器比FIR和IIR滤波器更节省资源,并且实现简单而高速。本文主要讨论了CIC滤波器的基本原理和基于FPGA的仿真实现方法,具体是采用Verilog HDL语言编程,将滤波器分为积分器模块和梳状器模块2个部分,对每个模块进行具体的功能分析和设计实现,最后通过Modelsim 仿真对滤波器的性能进行分析,验证了设计的正确性。 关键词:CIC滤波器;抽取;FPGA;Verilog HDL the Design of Cascade Integrator Comb Filter Based on FPGA Abstract:CIC (Cascade Integrator Comb, CIC) filter is a digital system to achieve large changes in multi-rate sampling rate filter, which has been proven to be a very effective unit in the high-speed extraction and interpolation system. It is widely used in the digital down conversion (DDC ) and digital up conversion (DUC) systems. It does not contain the multiplier, but just composes by adders, subtractors and registers, and the number of needing adders is reduced a lot. So it takes fewer resources than FIR filter and IIR filter. And the speed of CIC filter is very high and it is also very convenient to realize.This article discusses the basic principles of CIC filter and the simulation way based on FPGA. The modules were described with Verilog HDL. Firstly, the filter was divided into two parts which were integration module and the comb module. Then the function of each module were analyzed and designed. Finally the performance of the filter was analyzed under ModelSim and the correctness of the design was verified. Keywords:CIC filter; Decimation; FPGA; Verilog HDL 1. 引言: 数字滤波是数字信号分析中最重要的组成部分之一,数字滤波与模拟滤波相比,具

CIC插值滤波器的FPGA设计与实现

CIC插值滤波器的FPGA设计与实现 摘要:基于多速率信号处理原理,设计了用于下变频的CIC插值滤波器,由于CIC 滤波器结构只用到加法器和延迟器,没有乘法器,很适合用FPGA来实现,所以本文分析了CIC滤波器的原理,性能及影响参数,借助MATLAB设计符合系统要求CIC 滤波器,并利用Modelsim软件建模仿真,验证CIC滤波器性能是否达到要求。(一)CIC滤波器基本原理 A.CIC滤波器的基本单元 CIC滤波器主要由积分滤波Integrator和梳状滤波Comb两个基本单元部分构成。 典型的CIC滤波器的结构,它由两个基本单元I(积分滤波器)和C(梳状滤波器)级联构成。本设计主要针对插值滤波器,所以插值滤波器的结构示意图如图1-1所示: 图 1-1 3级级联的CIC插值滤波器结构示意图 积分器和梳状滤波器之间是一个采样率转换器,对于CIC插值器而言,它完成在每一个样值后补上R-1个0值的工作,,对于CIC抽取器来说,它完成在实际的抽取工作,每R个样值中取样一个。 R(插值倍数),M(延迟因子,一般取1或者2)以及N(级联级数)是影响CIC 滤波器的三个参数,它们的值需根据通带性能的需求而设定。 (二)CIC插值滤波器的设计流程 根据CIC滤波器的原理,本设计的流程如图2-1所示:

图2-1 CIC 插值滤波器的设计流程图 (三)模型的建立和测试 A .位宽策略 对于数字滤波器,一个不得不考虑的问题是为防止溢出每一级所需的位宽。对于抽取器来说,CIC 滤波器的输出增益为 (*)N G R M = (3-1) 所以,在全精度的情况下,最后一级输出的位宽为 2log (*)out in B B N R M =+ (3-2) 其中in B 表示输入数据的宽度,为了保证精度,每一个积分器和梳状滤波器的输入输出位宽都为out B 。 对于插值器而言,输出增益为 212,1,2,....2(*)/,1, 2......2i i N i N i N G R M R i N N N --?? == ? ? =++?? (3-3) 因此,第i 级为避免溢出所需要的位宽为 2log ()i in i W B G =+ (3-4) 最后一级输出位宽为 22log (*)log out in B B N R M R =+- (3-5) 在实际当中,当差分延时M=1时,为保证稳定,所有积分器的位宽在理论值的基础上加一。 max B 不仅是滤波器输出的最大可能的位数,也是每一级滤波器的最大可能位

CIC滤波器的FPGA实现

www.cismag.com.cn 前沿技术 CIC滤波器的FPGA实现 摘要:本文总结了CIC滤波器理论要点,介绍了采用FPGA设计CIC滤波器的基本方法,使滤波器的参数可以按实际需要任意更改,给出了仿真结果,验证了设计的可靠性和可行性。采用该方法设计的CIC滤波器已用于DDC芯片,也适合下一代高频雷达系统的要求。 上海交通大学电子信息与电气工程学院 石 蔚 黄佩伟 引 言 CIC滤波器是数据通讯中的常用模块,一般用于数字下变频(DDC)和数字上变频(DUC)系统,随着数据传输率的增加,级联梳状滤波器(CIC)的应用变得尤为重要。CIC滤波器的结构简单,没有乘法器,只有加法器、积分器和寄存器,适合工作在高采样率。 工作原理

信息安全与通信保密?2005.6 前沿技术 29

www.cismag.com.cn 前沿技术 参考文献 [1] 杨小牛,楼才义,徐建良。软件无线电原理与应用。电子工业出版社 2001 [2] E.B.Hogenauer.An economical class of digi-tal filters for decimation and interpolation.IEEETransactions on Acoustics,Speech and SignalProcessing,ASSP-29(2):155-162,1981 [3] Sophocles J.Orfanidis.。信号处理导论。影印版 清华大学出版社 [4] 袁俊泉,孙敏琪,曹瑞。Verilog HDL数字系统设计及其应用。西安电子科技大学出版社 2002 [5] 宋千,陆必应,梁甸农。基于FPGA的FIR滤波器高效实现。信号处理 2001,17(5):385-391 [6] 郭继昌,李香萍,腾建辅。基于位串行分布式算法和FPGA实现FIR电路的研究。电子测量与仪器学报 200115 (2):15-21 Xilinx Inc.,Spartan-II 2.5v FPGA Family:Func-tional Description.2001

相关主题
文本预览
相关文档 最新文档