符合CCSDS标准的动态可重构LDPC编码器的FPGA设计
2012-09-17邱鹏文李明阳
邱鹏文,柏 鹏,李明阳
(1.空军工程大学理学院,陕西西安710051;2.空军工程大学综合电子信息系统与电子对抗技术研究中心,陕西西安 710051)
1962年,Gallager首次提出 LDPC 码[1],但没有引起人们足够的重视,后来发现其接近香农限的优异性能[2],才引发人们对LDPC码研究的热潮,人们提出了多种LDPC编码器的实现方法[3],有的侧重于码的优良性能,有的侧重于降低硬件实现的复杂度[4],还有为了适应不同传输环境,通信系统需要纠错编码的码率自动地根据信道环境做出调整,这就引出了本文的动态可重构LDPC编码器设计。本文尝试设计一种性能优良复杂度较低的码速率重构LDPC编码器,在Modelsim6.5中进行了仿真,并对仿真结果进行分析。
1 可重配置基本原理
可重配置即可重构的基础是模块化,模块化要求子模块具有通用性,所以可重配置又叫具有通用性的子单元模块化。而非通用子单元需要采用冗余备份,冗余部分考虑布线和子单元的联合成全局布线网络。功能重构的关键模块有时钟管理单元、子编码单元、状态控制单元、时序控制单元、输入输出接口、全局连线网络。
符合CCSDS标准的 LDPC 采用生成矩阵[5]G=[I,P]的模式,其中P为分块循环子矩阵[6],循环计数大小为w/4,其特点为生成矩阵由一个个分块子矩阵构成,可以设计部分并行的编码器,比如每个子矩阵单独编码,子矩阵内部采用串行或并行编码,全局控制将子矩阵编码结合成最终的编码。同时利用分块循环特性可以设计通用的编码器,当需要另一种编码时只需要将当前的生成矩阵重新存入到编码器中,将循环编码的控制和计数器进行重配置即可。图1为CCSDS标准的2/3码率生成矩阵的校验部分。
图1 LDPC(1 536,1 024)生成矩阵的校验分块循环子矩阵
2 码速率重配置的4种模型
2.1 串行结构
串行结构中,编码器子矩阵上一个编码周期结束时刻下载子矩阵首行数据,并寄存到生成矩阵寄存向量中[7]。编码向量在编码周期内1 bit循环右移,并根据信息元决定子码元寄存器保持不变还是和生成矩阵寄存向量异或运算。按照这种方式将所有的分块子矩阵的首行下载并编码结束后,整个的编码过程结束。这种结构的优点是简单,节约资源,子编码模块可重用,缺点是编码过程耗时过长。串行结构如图2所示。
图2 串行编码结构
2.2 子矩阵内部并行结构
子矩阵内部并行结构利用了子矩阵的分块循环特点,即已知子矩阵首行后可以通过循环右移得到整个子矩阵。因此可以按照k行为单位并行编码,其中k应该能够被子矩阵尺寸整除。每个编码步调里根据输入的k个信息元是否为1决定子码元寄存器是否和此位对应的生成矩阵寄存向量异或。结构如图3所示。
图3 子矩阵内部并行结构
图中x(0)~x(k-1)为k个信息元,gen_vec(0)~gen_vec(k-1)为生成矩阵寄存向量,reg_code为子码元寄存器,下标m代表子矩阵的标号。图中k+1个数据的异或可以采用分层的两两异或方式,但是需要考虑的是层数较多的情况下将会造成器件内部较大的时延。相对于串行结构,子矩阵内部并行结构能将编码速率提高k倍,但是随着k的增加,编码器可工作的最高频率随之下降,同时子矩阵编码需要调用的异或逻辑也成k倍增加,k的数值需要根据器件进行合理选择。
2.3 子矩阵外部并行结构
子矩阵内部并行结构用降低最高频率和异或逻辑k倍增加换取编码速率的k倍提高,而子矩阵外部并行结构不需要降低最高频率,它需要子码元寄存器和生成矩阵寄存向量的k倍增加。这种结构采用k串行结构同时工作,要求这些串行结构的子矩阵必须在生成矩阵的同一行,并且k被生成矩阵尺寸整除。子矩阵外部并行结构克服了子矩阵内部并行结构的频率限制,但是额外支出了寄存器。结构如图4所示。
图4 子矩阵外部并行结构
2.4 混合并行结构
混合并行结构是子矩阵内部和外部并行的混合使用,可以获得和子矩阵外部并行结构同样的编码速率,能够克服子矩阵内部并行的频率限制,并且相对于子矩阵外部并行结构降低寄存器开销。它采用子矩阵内部并行结构为基本单元,k个这样的基本单元并行工作,图5为混合并行结构图。
从上述分析可以看出这4种编码结构具有内在的联系。串行编码结构是子矩阵外部并行编码结构的子结构,同时也是子矩阵内部并行编码结构中k=1的特例。子矩阵内部并行编码结构是混合并行结构的子结构,同时串行结构、子矩阵内部和外部并行结构都是混合并行结构的特例。可以利用子矩阵内部并行结构简化成串行结构或重配置成更复杂的混合结构。
图5 混合并行结构
根据混合并行结构的通用性[8]可以建立通用编码模型,因为其他3种结构都是混合并行结构的特例。例如串行结构就是混合并行结构中外部和内部并行度都为1,并且内部并行结构不经过异或的特例,可以将其按照混合并行结构描述成外部并行的信息元x1~xk-1全部为0,并且内部并行信息的1~l-1位为0的情况。通用模型可以在芯片运行的情况下功能重置,只需要输入参数控制,当然这种方式是以引入冗余,适当增加资源消耗为前提的。也可以根据通用模型建立重配置的软核,这样重配置需要重新编译,但是可以剔除资源冗余。
3 功能重配置关键模块
CCSDS标准中LDPC(2 048,1 024)的生成矩阵分块循环子矩阵的尺寸为128×128,校验部分共有8×8个这样的子矩阵;LDPC(1 536,1 024)的生成矩阵分块循环子矩阵的尺寸为64×64,校验部分共有8×16个这样的子矩阵;LDPC(1 280,1 024)的生成矩阵分块循环子矩阵的尺寸为32×32,校验部分共有8×32个这样的子矩阵。由上文可知1/2,2/3,4/5码率的生成矩阵的校验部分都可以分解为8×x的形式,且生成矩阵都具有分块循环特征,因此三者可共用的通用资源有如下4个模块化单元[8],也是实现功能重构的关键所在。
3.1 子编码单元
子编码单元为整个可重配置编码器的核心部分。子编码单元由与异或、循环移位和时序控制3部分组成。子编码单元中共用32位异或门,这是编码过程中用的最多的逻辑门,32位异或逻辑可以在LDPC(1 536,1 024)和LDPC(2 048,1 024)拼接成64和128位异或门。从速率的角度考虑这里可以引入冗余,即不同编码的异或单独配置,同样循环移位也采用冗余,即每个步调循环右移1 bit。时序控制部分在不同的编码器之间通用,只是计数值可以根据不同编码进行配置。
3.2 生成矩阵寄存单元
生成矩阵寄存单元由一块块RAM和时序控制单元组成。块RAM的位宽为128,时序控制单元根据不同的编码选择将这128位数据按照128/64/32位的方式输出,根据校验矩阵的特点每次输出8次即可将一行的校验比特全部输出完毕。
3.3 状态控制单元
状态控制单元中存在着空闲、编码和发送3种状态。三者的区别在于编码状态向发送状态以及发送状态向空闲状态转移的控制不相同。如在串行结构中,编码状态到发送状态分别用接收比特计数Rcv_Cnt_Bits=128/64/32控制,且接受符号计数Rcv_Cnt_Syms=8/16/32指示。
3.4 时序控制单元
时序控制单元控制编码和输出校验位的步调,例如LDPC(2 048,1 024)码有模128计数器和模8计数器,这里的2个参数128和8可以作为寄存器值通过重设置进行改变,从而符合3种不同编码器的实现要求。
综上所述,图6为可重配置编码器结构图。
4 仿真结果分析
4.1 时序分析
选择Xilinx硬件v595t芯片,在ISE12.1软件平台[10]上设计了CCSDS标准的2/3码率的LDPC(1 536,1 024)编码器的不同编码速率重配置的FPGA程序,并在Modelsim6.5中分别进行仿真,仿真结果见图7和图8。
图6 可重配置编码器结构图
图7为采用子矩阵外部并行结构的8倍速率编码器的时序,编码需要1 024个时钟,因为生成矩阵的分块循环子矩阵尺寸为64×64,所以每64个时钟内需要下载一次生成矩阵的首行。由于CCSDS标准的生成矩阵行长总是分块循环子矩阵行长的8倍,故需要下载8次才能将生成矩阵的一行全部下载结束。生成矩阵寄存单元的时序控制单元根据全局时序控制单元和状态转移单元控制生成矩阵下载和传递。在这64个时钟内前63个时钟生成矩阵首行寄存器循环右移,第64个时钟传递新的生成矩阵首行。
图8为采用混合结构的64倍速率编码器的时序,因为子矩阵内部并行度为8,所以每64/8=8个周期下载一次生成矩阵首行,从而编码需要1 024/8=128个时钟。因为生成矩阵首行下载需要8个时钟周期,而每个矩阵首行需要循环8次,所以二者消耗相同的时间,在子矩阵编码和下载生成矩阵首行时二者都没有等待另一方。这个过程中前7个时钟周期内下载生成矩阵首行,第8个时钟周期将临时寄存的前7个首行数据和此时下载的首行数据传递给首行数据寄存器。
4.2 资源消耗和工作频率分析
根据2.2节中对子矩阵内部并行结构的分析,内部并行会牺牲编码器的频率特性,同时并行都是以资源的增加为前提的,在两种并行结构中,并行都会造成异或逻辑的开销成倍增加,对应于FPGA中的查找表(LUT)的增加,表1是编译后的资源消耗对比和工作频率报告。
表1 外部并行结构和混合结构对比
通过表1可以看到混合结构在提高编码速率的情况下,资源使用情况并没有成倍增长,但是其最高工作频率有所下降。这是因为混合结构中的内部并行结构相对外部并行结构消耗更少的资源,但是编码时延增大了,最高工作频率自然就下降了。
5 结束语
为了实现LDPC编码器码率重构和功能重构的目的,同时降低编码器的硬件实现复杂度,本文选用CCSDS标准的LDPC生成矩阵,采用可重构体系结构,通过少量状态控制单元和时序控制单元,使得编码速率提高的情况下资源使用情况并没有成倍增长,仿真结果和综合结果进一步验证了设计预期,结果与理论分析一致,如何进一步降低编码时延是今后研究需要解决的问题。
:
[1]GALLAGER R G.Low density parity check codes[EB/OL].[2012-05-02].http://www.rle.mit.edu/rgallager/documents/ldpc.pdf.
[2]MACKAY D J C,NEAL R M.Near shannon limit performance of low density parity check codes[J].Electronics Letters,1996,32(8):1645-1646.
[3]DARABIHA A,CARUSONE A C,KSCHISCHANG F R.Multigbit/sec low density parity check decoders with reduced interconnect complexity[C]//Proc.ISCAS 2005.[S.l.]:IEEE Press,2005:5194-5197.
[4]陈智雄,苑津莎.基于多重置换阵的满秩结构化LDPC码构造方法[J].电子学报,2012,40(2):314-318.
[5]王新梅,肖国镇.纠错码—原理与方法[M].西安:西安电子科技大学出版社,2001.
[6]万哲先.代数导引[M].北京:科学出版社,2004.
[7]许帮保,刘春江,郭沛宇,等.LDPC编码中大矩阵求逆及存储的一些方法[J].电视技术,2010,34(9):4-6.
[8]王刚,李冰,刘勇,等.一种可重构LDPC编码器的设计与实现[J].微计算机信息,2010,26(12):168-170.
[9]杨光,黄正兴.LU分解法的LDPC码编码器的FPGA实现[J].电视技术,2011,35(23):55-58.
[10]田耘,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2008.