首页> 中国专利> 一种可在线编程的准循环LDPC码编码器装置

一种可在线编程的准循环LDPC码编码器装置

摘要

可在线编程的准循环LDPC码编码器装置属于编码器技术领域,其特征在于,它采用专用CPU结构,包括:指令存储器、校验矩阵存储器、接口总线、寄存器堆、辅助寄存器、数据通路、数据总线以及程序控制器,外部的主控处理器可通过接口总线向校验矩阵存储器输入校验矩阵参数、向指令存储器输入用于计算校验位的计算公式的程序,程序包括三种专用的中粒度运算指令,其中每条指令可处理小于或等于编码数据规模的向量,程序控制器按顺序执行这些指令,便可完成准循环LDPC编码所需的全部运算,在程序控制器控制下,本发明通过共享作为算术运算单元的数据通路提高了硬件的利用率和可配置性,以对从数据接口输入的待编码数据进行编码。

著录项

  • 公开/公告号CN101399553A

    专利类型发明专利

  • 公开/公告日2009-04-01

    原文格式PDF

  • 申请/专利权人 清华大学;

    申请/专利号CN200810226489.9

  • 申请日2008-11-12

  • 分类号H03M13/11(20060101);

  • 代理机构11246 北京众合诚成知识产权代理有限公司;

  • 代理人朱琨

  • 地址 100084 北京市100084-82信箱

  • 入库时间 2023-12-17 21:40:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-11-02

    未缴年费专利权终止 IPC(主分类):H03M13/11 授权公告日:20120314 终止日期:20171112 申请日:20081112

    专利权的终止

  • 2012-03-14

    授权

    授权

  • 2009-05-27

    实质审查的生效

    实质审查的生效

  • 2009-04-01

    公开

    公开

说明书

技术领域

用于支持变编码参数的可在线编程的准循环LDPC码的编码器装置属于编码器技术领域,涉及一种编码器的设计技术,特别涉及准循环LDPC码的编码器装置。

背景技术

在通信系统中,在信息发送之前,需要按照一定的规则,在数据流中人为地加入冗余,以便接收端能够进行误码检测和校正,估计出最初发送的数据。LDPC码,全称Low DensityParity Check Code,即低密度奇偶校验码,以其良好的性能在信道编码领域得到广泛的关注。在目前已有的LDPC码中,准循环LDPC码是其中性能较为优越且较易实现的一种方法。

准循环LDPC码可以由其校验矩阵Hqc唯一确定。Hqc是一个m×n的稀疏矩阵,其中n是码长,m是校验位的长度,且m<n。Hqc可以划分成c×t个z×z维循环矩阵,如式(1)所示,其中c、t、z均为整数,c=m/z,t=n/z。

(1)式中的Aij(1≤i≤c,1≤j≤t)是z×z维循环矩阵。循环矩阵的定义为:循环矩阵是一个方阵,其中每一行是上一行的循环右移一位的结果,第一行是最后一行循环右移一位的结果;该方阵每一列是前一列的循环下移一位的结果,其中第一列是最后一列循环下移一位的结果。如式(2)是一个5×5的循环矩阵的例子。由于循环矩阵的每一行和每一列的重量(元素1的个数)都相等,可以简单的称该重量为循环矩阵的重量,记为w。式(2)对应的循环矩阵的重量为1。如果w=0,则该循环矩阵不含有元素1,称其为零矩阵。

循环置换矩阵,又简称为置换矩阵,是w=1的循环矩阵,它可以由大小相同的单位矩阵循环右移得到,单位矩阵即对角线元素为1其他元素均为0的矩阵。式(2)是一个5×5的置换矩阵,由5×5单位矩阵循环右移1位得到。

A=0100000100000100000110000---(2)

如果限定组成准循环LDPC码校验矩阵中的循环矩阵的重量为1,则得到了一类特殊的准循环LDPC码,该码的校验矩阵由置换矩阵组成。本发明提出的编码器实现的也是该类型的准循环LDPC码。本文以后提到准循环LDPC码,如果没有特殊说明,指的就是循环矩阵重量为1的准循环低密度奇偶校验码。

由于置换矩阵都可以由大小相同的单位矩阵循环右移得到,置换矩阵和移位值是一一对应的,将准循环LDPC码的校验矩阵中每一个置换矩阵替换为相应的移位值,如果是全零矩阵替换为-1,则得到了一个如式(3)形式的矩阵L,称为基本矩阵。可以认为准循环LDPC的校验矩阵由基本矩阵膨胀得到,膨胀因子即为整数z,膨胀的过程是将L矩阵每一个元素替换为对应的置换矩阵。

准循环LDPC码具有很多结构上的优点。因为具有准循环的特点,这样一个置换矩阵和向量的乘法可以利用循环移位器来实现。而且,译码的结构也可以做的很规则。也就是说,相比随机生成的LDPC来说,准循环LDPC具有实现方便的特点,而且已证明良好设计的准循环LDPC可以取得和随机构造的LDPC相近的性能。IEEE 802.16e标准已经采用了该种类型的LDPC码作为信道编码。

为了降低编码的复杂度,根据准循环LDPC码的结构特点,Richardson和Urbanke提出了RU编码算法[1]。本发明采用了这种编码算法,设计了一种准循环LDPC码的编码器装置。

根据RU编码算法,校验矩阵总是可以通过行列交换划分成图1的结构。

其中n是码长,m是校验位的长度,g为校验矩阵和下三角矩阵的距离。n,m,g为正整数,n>m>g。校验矩阵分成6个部分,其中A的大小为(m-g)×(n-m),B的大小为(m-g)×g,F的大小为(m-g)×(m-g),C的大小为g×(n-m),D的大小为g×g,E的大小为g×(m-g)。其中F是下三角矩阵。

设码字为{s,p1,p2},其中s长度为n-m,是信息位;p1长度为g,p2长度为m-g,p1、p2组合起来是校验位,即输入的待编码数据为s,编码器根据s和校验矩阵计算出p1、p2,最后输出的编码后的数据为{s,p1,p2}。其中校验位可以根据公式(4)计算

p1T=Ψ-1[EF-1AsT+CsT]         (4)

p2T=F-1[AsT+Bp1T]

其中Ψ=-EF-1B+D,Ψ-1表示Ψ的逆矩阵,可以事先计算好作为已知参数,可以证明,Ψ-1由(g/z)×(g/z)个z×z的循环矩阵组成,每个循环矩阵等于多个循环置换矩阵的和。

发明内容

本发明的目的在于提供一种支持变编码参数的可在线编程的准循环LDPC码的编码器装置。

现有的编码器设计通常根据算法步骤划分硬件单元,每个单元电路完成一个步骤,不同单元之间无法共享硬件电路资源,而且如果需要支持在线可变参数,需要修改所有的单元电路。为此,本发明提出了一种可在线配置的准循环LDPC高速编码器,针对准循环LDPC编码这一特定应用,设计了专用CPU结构和专用指令集,它可以比通用CPU拥有更低的交互成本和更强的运算性能,比根据算法步骤划分硬件单元的编码器提高了电路资源利用率及可在线配置性。

本发明所提出的编码器装置的特征在于:所述准循环LDPC码编码器装置是用下述各个单元以CPU形式集成在数字集成电路芯片中实现的,所述下述各个单元包括:指令存储器、校验矩阵存储器、接口总线、寄存器堆、辅助寄存器、数据通路、数据总线以及程序控制器,其中:

校验矩阵存储器与所述接口总线互连,通过所述接口总线从外部的主控处理器输入:

已经被划分成c×t个z×z维循环置换矩阵Aij的校验矩阵Hqc,其中

c=m/z,m是校验位的长度,z为膨胀因子,

t=n/z,n是码长,n>m,

1≤i≤c,1≤j≤t,

所述Hqc表示为:

所述准循环LDPC码中所述Aij的重量为1,

已经根据Richardson和Urbanke提出的RU编码算法把所述校验矩阵Hqc划分成下述一系列子矩阵:A、B、C、D、E、F,其中,

所述子矩阵A的大小为为(m-g)×(n-m),

所述子矩阵B的大小为(m-g)×g,

所述子矩阵F的大小为(m-g)×(m-g),F为下三角矩阵,

所述子矩阵C的大小为g×(n-m),

所述子矩阵D的大小为g×g,

所述子矩阵E的大小为g×(m-g),

其中,n,m,g为正整数,g为所述校验矩阵Hqc与下三角矩阵的距离,所述校验矩阵存储器的存储格式为:

移位值,宽度为设定值,所述移位值是指:所述z×z维循环置换矩阵Aij是由z×z维单位矩阵循环右移得到,各Aij和所述循环右移操作一一对应的移位值,

向量序号,宽度为设定值,用于定位与所述各子矩阵A~F中的各个循环置换矩阵Aij进行运算的向量,

指令存储器,与所述接口总线互连,通过所述接口总线从所述外部主控处理器输入用于按下列公式来计算校验位的三种中粒度运算指令,其中:

用于计算各校验位的公式为:

p1T=Ψ-1[EF-1AsT+CsT],

p2T=F-1[AsT+Bp1T],

Ψ=-EF-1B+D,

其中,Ψ-1表示Ψ的逆矩阵,由(g/z)×(g/z)个z×z维循环矩阵组成,每个z×z维循环矩阵等于多个循环置换矩阵之和,

s为输入的待编码数据,s长度为n-m,

p1的长度为g,p2的长度为m-g,所述p1、p2组合后是各个校验位,

所述三种中粒度运算公式用指令表示后分别为:

(2)所述循环置换矩阵Aij与长向量乘的指令MVM:

i=1,1≤j≤t时

A11A12A13···A1ts1s2s3···st=A11s1+A12s2+A13s3+···+A1tst

1≤i≤c,1≤j≤t时类推,

(2)所述循环置换矩阵Aij与z维长向量乘法累加和指令MSMAC,用于计算所述下三角矩阵F的逆矩阵F-1和向量AsT,或者F-1和向量(AsT+Bp1T)的乘积,此时,把所述AsT或(AsT+Bp1T)记作为y,x记作方程F-1y的乘积,即F-1y=x,则在采用高斯消去法计算x时需要用解方程Fx=y的方法,在所述下三角矩阵F的大小为fz×fz的矩阵,x和y是fz的向量时,要先用所述循环置换矩阵和向量的乘法x1=F11-1·y1求出x1,再把该x1回代到方程Fx=y中,先按下式更新y2~yf,降低所述方程的维数:

F21F31F41···Ff1x1+y2y3y4···yf=F21x1+y2F31x1+y3F41x1+y4···Ff1x1+yf

对上述新的方程,再计算x2=F22-1·y2,把该x2回代到该新的方程中,更新y3~yf,依次类推,求出x1~xf

(3)长向量模2和指令VXOR为:

i1i2i3···it+j1j2j3···jt=i1+j1i2+j2i3+j3···it+jt

所述指令存储器中可编程编码的指令格式为:指令类型,宽3位;循环数,为该指令中需要计算的细粒度运算的个数,位宽5位,所述细粒度运算有两种,分别为:z×z循环置换矩阵和z维向量的乘法,以及z维向量和z维向量的模2和;以及各自的位宽都为8位的三个地址:校验地址、源地址和目的地址,所述指令存储器的读端口由所述程序控制器控制,所存储的指令被顺序地读出并执行,程序控制器根据所述校验地址读校验矩阵存储器,根据所述源地址读寄存器堆,根据所述目的地址将运算结果写入寄存器堆,所述指令存储器的写端口与所述接口总线相连,

每完成所述的一条运算指令,需要多个时钟周期,每个所述时钟周期进行一个所述细粒度运算,

数据通路,分别和所述校验矩阵存储器、寄存器堆和辅助寄存器互连,用于完成所述每一条指令中的算术运算,其中包括将一个z维向量循环移位及所述循环移位的结果和另一个z维向量做模2加法,

寄存器堆,是一个具有一个读端口和一个写端口的存储器,与所述数据总线相连,保存待编码数据,同时又供所述数据通路读取中间结果和编码结果,并把该编码结果送往所述数据总线,

辅助寄存器,数据宽度和所述寄存器堆的数据宽度相同,只存储一个数据:所述每条指令所需要的第三个操作数或者中间变量,

程序控制器,按顺序读取并执行指令存储器中预存的用于计算所述p1、p2所需的所述三种中粒度运算指令的程序,根据所述程序指令分别从所述校验矩阵存储器、寄存器堆中读取所述码编码参数:m、n、g,各个子矩阵A~F,以及待编码数据和中间结果,控制所述数据通路计算各校验位。

附图说明

图1表示RU编码算法校验矩阵的划分。

图2表示可编程编码器硬件结构。

图3表示数据通路结构。

图4表示可编程编码器的核心状态机。

参考文献

[1]Richardson T J,Urbanke R L.Efficient encoding of low-density parity-check codes.InformationTheory,IEEE Transactions on,2001,47(2):638-656

[2]IEEE Standard 802.16e 2005

具体实施方式

本发明的主要特点是设计了专用CPU结构,其关键是专用指令集的设计。从(4)式可以看出,RU编码算法有4种类型的运算,不妨称之为4种粗粒度运算,分别为:1.矩阵和向量的乘法,2.下三角矩阵的逆矩阵和向量的乘法,3.非稀疏矩阵和向量的乘法,4.向量的模2和。

注意到A,B,C,D,E,F都是由循环置换矩阵组成的,以膨胀因子z为基本块大小对这些矩阵和s,p1,p2进行分块。举例说明,假设矩阵A是大小为2z×4z的矩阵,s是4z的向量,则如式(5)和(6)所示,可以将A、s分成多个子矩阵或子向量的形式,其中的子矩阵A11~A24分别为z×z的循环置换矩阵,子向量s1~s4为z维的向量。

A=A11A12A13A14A21A22A23A24---(5)

s=[s1s2s3s4]                      (6)

对于第1种粗粒度运算——矩阵和向量的乘法,需要计算

AsT=A11A12A13A14A21A22A23A24s1s2s3s4=A11s1+A12s2+A13s3+A14s4A21s1+A22s2+A23s3+A24s4---(7)

从(7)式可以看出,矩阵向量的乘法运算可以分解成两种更小的运算,即z×z循环置换矩阵和z维向量的乘法、z维向量的模2和。

对于第2种粗粒度运算——下三角矩阵的逆矩阵和向量的乘法,也就是下三角形式的线性方程组求解,可以采用高斯消去法进行计算。在(4)式中F是下三角矩阵,需要计算F的逆矩阵和向量AsT和(AsT+Bp1T)相乘,不妨把AsT或(AsT+Bp1T)记作y,乘积记作x,即计算F-1y=x,也就是已知y解方程Fx=y求x。

假设矩阵F是大小为5z×5z的矩阵,x和y是5z的向量,则如(8)式所示,可以将F、x、y分成多个子矩阵或子向量的形式,其中的子矩阵F11~F55分别为z×z的循环置换矩阵,子向量x1~x5、y1~y5为z维的向量。

FxT=y

F110000F21F22000F31F32F3300F41F42F43F440F51F52F53F54F55x1x2x3x4x5=y1y2y3y4y5---(8)

由于F11是循环置换矩阵,其逆矩阵也是循环置换矩阵,所以可以用循环置换矩阵和向量的乘法求出x1=F11-1·y1。把x1回代到方程中更新y2~y5,把方程的维数降到4:

y2y3y4y5F21F31F41F51x1+y2y3y4y5

                                                   (9)

F22000F32F3300F42F43F440F52F53F54F55x2x3x4x5=y2y3y4y5

对新的方程,再计算x2=F22-1·y2,把x2回代到方程中更新y3~y5,把方程的维数降到3,依次类推,即可求出x1~x5

对于第3种粗粒度运算——非稀疏矩阵和向量的乘法,非稀疏矩阵的块元素可以写成循环置换矩阵的和,所以仍可以用z×z循环置换矩阵和z维向量的乘法、z维向量的模2和实现。

对于第4种粗粒度运算——向量的模2和,也可以通过分块用z维向量的模2和来实现。

分块之后,4种粗粒度运算可以缩减到2种,分别是z×z循环置换矩阵和z维向量的乘法、z维向量和z维向量的模2和,称这两种运算为细粒度运算。细粒度运算是z维矩阵和z维向量之间的运算,易于实现,因为z×z循环置换矩阵和z维向量的乘法相当于对z维向量进行循环右移,用一个循环移位器电路就可以实现。模2和用异或电路就可以实现。

通过上述分析,编码过程只需要几种基本的运算,所以可以设计成专用CPU结构,通过设计指令并根据指令调用基本运算单元,逐步完成编码所需的运算。

编码器的数据通路用于完成指令中的运算,可以设计成支持两种细粒度运算,但是如果只实现这样2条指令,完成一次编码需要执行很多条指令,由于指令间的数据冒险问题,算法的执行效率会降低。为了提高指令执行效率,设计了一套复杂度介于粗粒度运算和细粒度运算之间的指令。每条指令可完成一个中粒度运算,每个中粒度运算包含多个细粒度的运算,即每条指令可以处理小于或等于待编码数据规模的向量,完成特定次数的z维矩阵和z维向量之间的运算,这些指令组合起来可以用来计算粗粒度运算。

以4z维的矩阵向量运算为例,三种中粒度运算定义如式(10),(11)和(12)所示。

A11A12A13A14s1s2s3s4=A11s1+A12s2+A13s3+A14s4---(10)

F21F31F41F51x1+y2y3y4y5=F21x1+y2F31x1+y3F41x1+y4F51x1+y5---(11)

i1i2i3i4+j1j2j3j4=i1+j1i2+j2i3+j3i4+j4---(12)

中粒度运算(10)式是第1种粗粒度运算(7)式的一部分。几个(10)定义的运算联合起来就可以用来计算第1种粗粒度运算即矩阵和向量的乘法。通过将非稀疏矩阵分解成置换矩阵的和,也可以实现第3种粗粒度运算即非稀疏矩阵和向量的乘法。该运算也可以用来实现第2种粗粒度种运算中高斯消去的求值步骤。定义该指令为MVM(矩阵与长向量乘法)指令,其中长向量指多个z维向量组成的向量。

中粒度运算(11)式用来计算第2种粗粒度运算中高斯消去的回代步骤。其中x1是回代运算上一步求出的z维向量,F21~F51为z×z的循环置换矩阵,y2~y5为回代之前的z维向量,计算出的结果为新的y2~y5。中粒度运算(10)和(11)联合起来使用就可以实现完整的高斯消去。定义该指令为MSMAC(矩阵与z维向量乘法累加和)指令。

中粒度运算(12)和第4种粗粒度运算相同,用于计算两个向量的模2和。其中假设两个向量都是大小为4z的向量,i1~i4和j1~j4分别为两个向量划分后的z维子向量。定义该指令为VXOR(长向量模2和)指令。

设计的MVM、MSMAC和VXOR这三条指令组合起来可以完成准循环LDPC编码所需的所有运算,以下对编码器装置进行说明:

本发明设计的编码器的硬件结构如图2所示,编码器采用专用CPU结构,包括了指令存储器、校验矩阵存储器、接口总线、寄存器堆、辅助寄存器、数据通路、数据总线以及程序控制器。

指令存储器是一个具有一个读端口和一个写端口的存储器,其中写端口和接口总线相连,读端口由程序控制器控制。所存储的指令被程序控制器顺序地读出并执行,为了完成一条指令,需要多个时钟周期,每个时钟周期进行一个细粒度的运算,在指令中需要指定需要计算的细粒度运算的个数。指令的存储格式如表1所示,循环数指示了细粒度运算的数量,校验地址、源地址和目的地址指示了操作数和结果的地址。程序控制器根据校验地址读校验矩阵存储器,根据源地址读寄存器堆,根据目的地址将运算结果写入寄存器堆。

表1 可编程编码器指令格式

数据通路用于完成指令中的算术运算,其核心运算为将一个z维向量循环移位及循环移位的结果和另一个z维向量做模2加法。如图4所示,假设输入是I,移位值是shift,累加值为ACC,输出为O。I、O、ACC都是z维向量,需要进行的计算可以表示为O=(I>>shift)+ACC,其中“>>”表示循环右移,如果只做模2加法则shift=0,如果只做移位则ACC=0。

寄存器堆是一个具有一个读端口和一个写端口的存储器,用来存储待编码数据、中间结果和编码结果。由于每条指令的每一步运算处理的都是z维的向量,向量的每个元素都是2进制数,所以寄存器堆中存储的数据宽度为z。

辅助寄存器和寄存器堆的数据宽度相同,只能存储一个数据。每个指令需要2或3个操作数,其中一个来自寄存器堆,另一个来自校验矩阵存储器,辅助寄存器用来存储中间变量或第三个操作数。

校验矩阵存储器存储对应于校验矩阵的运算参数。和指令存储器相同,它的写端口和接口总线相连,读端口由程序控制器控制。数据宽度应根据所支持LDPC码的大小确定,通常选择校验矩阵存储器的存储格式为数据宽度为12,其中5位用来存储向量序号,7位用来存储组成校验矩阵的每一个循环置换矩阵的移位值。存储方法为:首先根据RU编码算法划分校验矩阵为一系列子矩阵A~F,根据公式(4),编码时需要计算这些子矩阵的乘积或求逆等运算。这些矩阵的存储方式相同,以矩阵A为例,可以根据公式(5)将A划分成多个z×z的循环置换矩阵A11~A24。又由于置换矩阵和移位值是一一对应的,A11~A24的存储可替换为相应的移位值的存储。例如,在(10)式的指令中,用到A11~A14这四个置换矩阵,它们在校验矩阵存储器中的存储格式如表2所示,其中移位值宽度为7位则最大可支持膨胀因子z为127(=27-1)。5位的向量序号用于定位与循环置换矩阵进行运算的向量。在(10)式的指令中,s1~s4是根据公式(6)将信息位s划分成的多个z维向量。编码器可以根据序号来定位s1~s4,比如A12,根据序号就可以选择s2和A12进行运算。这种表示方法的好处是如果A11~A14存在全0矩阵,就可以省去一行存储。由于校验矩阵的稀疏性,这种存储方法可以节省很多的存储器资源。

表2 校验矩阵存储器存储格式

接口总线可以接到通信系统的主控处理器,主控处理器可以根据编码参数通过接口总线重新配置校验矩阵存储器和指令存储器,从而支持多种码率、码长和不同的校验矩阵。切换编码参数结束后,主控处理器发信号重启编码器中的程序控制器,使编码器切换到新的模式。

程序控制器是该结构的核心控制器,控制了指令的读取、指令译码、寄存器堆地址的计算、算术运算单元即数据通路的配置。校验矩阵存储器和指令存储器可以预存或者由外部主控制器配置编码参数和用于计算校验位的程序指令,程序控制器按顺序执行这些指令,编码过程中,程序控制器首先从数据总线读入待编码数据写入寄存器堆,再从寄存器堆和校验矩阵存储器中读取操作数,根据指令调用算术运算单元,并将计算结果回写到寄存器堆中,最后从寄存器堆中读出编码结果并输出到数据总线。

程序控制器主要由核心状态机组成,如图4所示,起始状态为空闲态。当检测到开始脉冲之后,程序控制器使系统进入输入复位态,复位编码过程中用到的所有寄存器。由于输入可能有错误,为了保证状态机不会死锁,当其他任何状态检测到开始脉冲后也进入输入复位态。输入复位态之后立即进入输入态,顺序接收外部输入的信息位,当输入完成后,进入指令执行态,程序控制器按顺序读取指令,根据指令执行相应的计算。当执行到输出指令时,系统的状态转移到输出态,进行输出。输出完毕系统进入空闲态,等待下一次的编码输入。

每条指令的执行过程为:

以(10)式为例的MVM指令的执行过程是根据指令中的读地址1访问校验矩阵存储器,读出序号,和读地址2指定的地址相加得到寄存器访问地址,从寄存器堆中读出s1,以校验矩阵存储器读出的移位值(代表了A11)做循环右移,累加0,将结果保存在辅助寄存器中;接下来访问校验矩阵存储器下一个地址,进行类似的处理,区别只在于累加的不是0而是辅助寄存器,也就是A11s1的值。当处理完最后一个细粒度的运算时,将结果写回寄存器堆,写入地址由指令中的结果地址指定。同时辅助寄存器也保存了该结果。

以(11)式为例的MSMAC指令的执行过程和(10)类似,先根据读地址1访问校验矩阵存储器,读出序号,和读地址2指定的地址相加计算寄存器堆的访问地址,读出y2。以校验矩阵存储器中读到的移位值(代表了F21)将辅助寄存器的值循环右移,和y2做模2和,将结果写回寄存器堆,写入的地址等于结果地址加上从校验矩阵存储器中读到的序号。接下来依次完成每次的细粒度运算。

以(12)式为例的VXOR指令的计算过程先按照读地址1从寄存器堆中读出i1写入辅助寄存器,下一拍再按照读地址2从寄存器堆读出j1,将i1和j1做模2和(异或),将结果写入寄存器堆,写入地址由指令中的结果地址指定。接下来访问读地址1的下一个地址,下一拍访问读地址2的下一个地址,对读到的值进行模2和运算,然后回写寄存器堆。依次进行处理,直到完成指定数量的细粒度运算。

下面以三个例子来说明程序控制器的工作步骤。

例1、式(13)代表的是矩阵和向量乘法的计算,其中P表示循环右移1位的z维置换矩阵,Pk(k≥0)表示循环右移k位的置换矩阵,特别的P-1表示z维全零矩阵。

AxT=P-1P3P4P-1P2P1P-1P9x1x2x3x4---(13)

假设校验矩阵A第一行的存储首地址为Addr1,第二行存储的首地址为Addr2,x存储的地址为X1~X4,结果存储的地址为R1~R2,则计算所需指令为(其中#后面的为注释)。

MVM(2)Addr1X1R1 #代表执行循环为2,因为A矩阵第一行有2个需要计算的元素

MVM(3)Addr2X1R2 #代表执行循环为3,因为A矩阵第二行有3个需要计算的元素

表3 校验矩阵存储器内容

表4 寄存器堆存储内容

程序控制器首先执行上面的第一条指令,根据指令需要循环2次,第一次根据读地址1即Addr1访问校验矩阵存储器,读出序号“1”和移位值“3”,序号1和读地址2指定的地址X1相加得到寄存器访问地址,从寄存器堆中读出x2,根据指令调用算术运算单元,计算x2循环右移3位,将结果保存在辅助寄存器中;第二次读地址为Addr1+1从校验矩阵存储器中读出序号“2”和移位值“4”,序号2和X1相加得到寄存器访问地址,从寄存器堆中读出x3,计算x3循环右移4位,把右移的结果与辅助寄存器中的向量相加,最后将计算结果回写到寄存器堆R1地址中。

然后执行上面的第二条指令,类似于第一条指令,不同的是需要循环3次,第一次读地址为Addr2从校验矩阵存储器中读出序号“0”和移位值“2”,序号0和X1相加得到寄存器访问地址,从寄存器堆中读出x1,计算x1循环右移2位,将结果保存在辅助寄存器中;第二次读地址为Addr2+1从校验矩阵存储器中读出序号“1”和移位值“1”,序号1和X1相加得到寄存器访问地址,从寄存器堆中读出x2,计算x2循环右移1位,再把右移的结果与辅助寄存器中的向量相加,并将结果保存在辅助寄存器中;第三次读地址为Addr2+2从校验矩阵存储器中读出序号“3”和移位值“9”,序号3和X1相加得到寄存器访问地址,从寄存器堆中读出x4,计算x4循环右移9位,再把右移的结果与辅助寄存器中的向量相加,最后将计算结果回写到寄存器堆R2地址中。

例2、式(14)代表的是下三角矩阵逆和向量的乘法,已知y,要计算x。

y1y2y3=FxT=F1100F21F220F31F32F33x1x2x3---(14)

校验Ram存储的内容依次为F11-1、F21、F31、F22-1、F32、F33-1,存储在校验矩阵存储器中的地址分别为A1、A2、A3、A4、A5、A6。x存储的地址为X1~X3,y存储的地址为Y1~Y3

MVM  (1)A1Y1X1 #计算x1=F11-1y1

MSMAC(2)A2X1Y1 #计算y’2=y2-F21x1,y’3=y3-F31x1

MVM  (1)A4Y2X2#计算x2=F22-1y’2

MSMAC(1)A5Y2X2#计算y”3=y’3-F32x2

MVM  (1)A6Y3X3#计算x3=F33-1y”3

例3、以802.16e 5/6码率的(2304,1920)的QC-LDPC码为例,看这些指令是如何实现编码的。其校验矩阵H用移位值方式表示为4×24的矩阵,采用96作为膨胀因子。

表5 802.16e5/6码率校验矩阵[2]

按照RU算法分成A,B,C,D,E,F6个部分,

H=ABFCDE

其中

A=

B=

F=

C=

D=

E=

然后分配变量的存储地址,可以任意分配,只要前后引用到这个变量时使用同一个地址即可。但为了使存储器最小,可以把地址分配得尽量紧凑,而且在变量用完之后其存储空间可以被其他变量重复利用。存储器地址的低端作为输入输出的信息比特,高端存临时变量。具体变量分配的地址如表6。

表6 变量地址分配

在此例中,编码公式(4)中的Ψ=-EF-1B+D可简化成单位矩阵,公式(4)则简化为:

p1T=EF-1AsT+CsT

p2T=F-1[AsT+Bp1T]                    (15)

由式(15)得到编码指令如表7,每条指令最大允许的循环次数为32,如果有超过32的指令,则需分解成2条指令实现。命令解释列解释了这些指令完成了RU编码算法的哪一步。

表7 编码指令程序

在整个编码过程中,程序控制器都是依据指令存储器、校验矩阵存储器的内容进行工作,而这些存储单元都挂载在编码器接口总线上,通过接口总线配置不同的指令和校验矩阵,可以方便的改变编码参数,从而实现了编码器的可在线编程的功能。每条指令的每一步运算处理的都是z维的向量,这相当于提供了z级并行度。一般实用的准循环LDPC的膨胀因子都会很大,所以,该实现可以提供很高的并行度。

本编码器装置可在各种可编程逻辑器件中实施,一个具体实施是用Altera公司的EP2c70F672C8芯片来作编码器,也可用专用集成电路实现。本编码器使用Altera公司的EP2c70F672C8芯片,占用的硬件资源为3352个逻辑单元和13056bit的RAM存储单元,最高可工作到85MHz。可在线编程支持IEEE802.16e标准中的各种LDPC码,表8给出了膨胀因子为96,不同码率下的编码吞吐率值,单位是Mbps/MHz,乘以最高时钟频率就是最后的吞吐率。

表8 支持802.16e的LDPC编码器性能指标

 

码率/信息吞吐率(Mbps/MHz)5/63/4A3/4B2/3A2/3B1/2输入输出位宽为9611.69.08.97.47.44.7输入输出位宽为165.04.34.33.83.82.7

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号