发明内容
本发明要解决的技术问题在于,针对上述现有技术的不足,提出一种解码LDPC(低密度奇偶校验)编码信号的解码器及解码LDPC编码信号的方法。
根据本发明的一个方面,提出一种解码LDPC编码信号的解码器,所述解码器包括:
一个量度发生器,用于:
接收对应LDPC编码信号第一符号的第一I、Q(同相、正交)值,并从中生成第一组多个位量度(bit metric);
接收对应LDPC编码信号第二符号的第二I、Q值,并从中生成第二组多个位量度;
一个量度存储器,用于:
存储所述第一组多个位量度和所述第二组多个位量度;
支持双端口存储器管理,从而在从所述量度发生器接收所述第二组多个位量度的同时输出所述第一组多个位量度;
支持双端口存储器管理,从而在从所述量度发生器接收第三组多个位量度的同时输出所述第二组多个位量度;
多个位/校验处理器,用于:
连续地接收所述第一组多个位量度、所述第二组多个位量度和所述第三组多个位量度;
执行位节点处理,包括更新与多个位节点相关的多个边消息,和校验节点处理,包括更新与多个校验节点相关的多个边消息;
一个消息传送存储器,用于:
在所述多个位/校验处理器内经过位节点处理后,存储所述与多个位节点相关的多个边消息;
在所述多个位/校验处理器内经过校验节点处理后,存储所述与多个校验节点相关的多个边消息;
一个桶形移位器,用于:
对从所述消息传送存储器中读出的所述与多个位节点相关的多个边消息进行移位;
将所述移位后的与多个位节点相关的多个边消息提供给所述多个位/校验处理器进行随后的校验节点处理;
对从所述消息传送存储器中读出的所述与多个校验节点相关的多个边消息进行移位;
将所述移位后的与多个校验节点相关的多个边消息提供给所述多个位/校验处理器进行随后的位节点处理。
优选地,所述解码器进一步包括:
一个输出处理器,用于从对应最近更新的与所述多个位节点相关的多个边消息的所述多个位/校验处理器中接收软输出,并随后作出硬判决,从而生成所述LDPC编码信号第一符号和第二符号中的至少一个的位最佳估计值。
优选地,所述解码器进一步包括:
一个校正子计算功能块,用于从与最近更新的与所述多个位节点相关的多个边消息相对应的所述多个位/校验处理器中接收软输出,并确定用于生成LDPC编码信号的LDPC码的多个校正子中的每一个是否等于零。
优选地,
所述量度存储器、所述多个位/校验处理器以及所述消息传送存储器形成包含有多个宏块的第一个宏块;
所述多个宏块中的每一个宏块还包括有对应的量度存储器、对应的多个位/校验处理器以及对应的消息传送存储器;
所述桶形移位器与所述多个宏块中的每一个宏块内的每一个对应的消息传送存储器通信连接。
优选地,所述量度存储器为乒乓式存储结构,包括两个分开的量度存储器。
优选地,所述量度存储器是虚拟双端口量度存储器。
优选地,
所述与多个位节点相关的多个边消息以符号数值格式存储在所述消息传送存储器中;
所述与多个校验节点相关的多个边消息以2的补码格式存储在所述消息传送存储器中。
优选地,
所述与多个位节点相关的多个边消息包括对应信息位的第一组多个边消息和对应奇偶校验位的第二组多个边消息;
所述对应信息位的第一组多个边消息和所述对应奇偶校验位的第二组多个边消息均存储在所述消息传送存储器中。
优选地,所述校验节点处理包括min**(min-double-star)处理和min**-(min-double-star-minus)处理。
优选地,所述校验节点处理包括min(min-double-dagger)处理和min-(min-dagger-minus)处理。
优选地,
所述LDPC编码信号是可变编码率信号;
所述LDPC编码信号的第一符号具有第一编码率;
所述LDPC编码信号的第二符号具有第二编码率。
优选地,
所述LDPC编码信号是可变调制信号;
所述LDPC编码信号的第一符号具有第一调制,包括有第一群集形状(constellation shape)和对应的第一映射(mapping);
所述LDPC编码信号的第二符号具有第二调制,包括有第二群集形状和对应的第二映射。
优选地,所述解码器解码LDPC编码信号,所述LDPC编码信号遵从DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)标准和IEEEP802.3an(10GBASE-T)任务组提供的推荐规程中的至少一个。
根据本发明的一个方面,提出一种解码LDPC编码信号的解码器,所述解码器包括:
多个位/校验处理器,用于:
接收多个位量度;
执行位节点处理,包括更新与多个位节点相关的多个边消息,和校验节点处理,包括更新与多个校验节点相关的多个边消息;
一个消息传送存储器,用于:
在所述多个位/校验处理器内经过位节点处理后,存储所述与多个位节点相关的多个边消息;
在所述多个位/校验处理器内经过校验节点处理后,存储所述与多个校验节点相关的多个边消息;
一个桶形移位器,用于:
对从所述消息传送存储器中读出的所述与多个位节点相关的多个边消息进行移位;
将所述移位后的与多个位节点相关的多个边消息提供给所述多个位/校验处理器进行随后的校验节点处理;
对从所述消息传送存储器中读出的所述与多个校验节点相关的多个边消息进行移位;
将所述移位后的与多个校验节点相关的多个边消息提供给所述多个位/校验处理器进行随后的位节点处理。
优选地,所述解码器进一步包括:
一个量度发生器,接收对应LDPC编码信号的多个符号的I、Q(同相、正交)值,并从中生成多个位量度。
优选地,所述解码器进一步包括:
一个输出处理器,用于从对应最近更新的与所述多个位节点相关的多个边消息的所述多个位/校验处理器中接收软输出,并随后作出硬判决,从而生成所述LDPC编码信号第一符号和第二符号中的至少一个的位最佳估计值。
优选地,所述解码器进一步包括:
一个校正子计算功能块,用于从与最近更新的与所述多个位节点相关的多个边消息相对应的所述多个位/校验处理器中接收软输出,并确定用于生成LDPC编码信号的LDPC码的多个校正子中的每一个是否等于零。
优选地,所述解码器进一步包括一个量度存储器,存储所述多个位量度并随后输出所述多个位量度给所述所述多个位/校验处理器,其中:
所述量度存储器、所述多个位/校验处理器以及所述消息传送存储器形成包含有多个宏块的第一个宏块;
所述多个宏块中的每一个宏块还包括有对应的量度存储器、对应的多个位/校验处理器以及对应的消息传送存储器;
所述桶形移位器与所述多个宏块中的每一个宏块内的每一个对应的消息传送存储器通信连接。
优选地,所述量度存储器为乒乓式存储结构,包括两个分开的量度存储器。
优选地,所述量度存储器是虚拟双端口量度存储器。
优选地,
所述与多个位节点相关的多个边消息以符号数值格式存储在所述消息传送存储器中;
所述与多个校验节点相关的多个边消息以2的补码格式存储在所述消息传送存储器中。
优选地,
所述与多个位节点相关的多个边消息包括对应信息位的第一组多个边消息和对应奇偶校验位的第二组多个边消息;
所述对应信息位的第一组多个边消息和所述对应奇偶校验位的第二组多个边消息均存储在所述消息传送存储器中。
优选地,所述校验节点处理包括min**(min-double-star)处理和min**-(min-double-star-minus)处理。
优选地,所述校验节点处理包括min(min-double-dagger)处理和min-(min-dagger-minus)处理。
优选地,
所述LDPC编码信号是可变编码率信号;
所述LDPC编码信号的第一符号具有第一编码率;
所述LDPC编码信号的第二符号具有第二编码率。
优选地,
所述LDPC编码信号是可变调制信号;
所述LDPC编码信号的第一符号具有第一调制,包括有第一群集形状(constellation shape)和对应的第一映射(mapping);
所述LDPC编码信号的第二符号具有第二调制,包括有第二群集形状和对应的第二映射。
优选地,所述解码器解码LDPC编码信号,所述LDPC编码信号遵从DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)标准和IEEEP802.3an(10GBASE-T)任务组提供的推荐规程中的至少一个。
根据本发明的一个方面,提出一种解码LDPC编码信号的方法,所述方法包括:
接收对应LDPC编码信号第一符号的第一I、Q(同相、正交)值,并从中生成第一组多个位量度;
接收对应LDPC编码信号第二符号的第二I、Q值,并从中生成第二组多个位量度;
存储所述第一组多个位量度和所述第二组多个位量度;
支持双端口存储器管理,从而在接收所述第二组多个位量度的同时输出所述第一组多个位量度;
支持双端口存储器管理,从而在接收第三组多个位量度的同时输出所述第二组多个位量度;
连续地接收所述第一组多个位量度、所述第二组多个位量度和所述第三组多个位量度;
执行包括位节点处理,更新与多个位节点相关的多个边消息,和校验节点处理,包括更新与多个校验节点相关的多个边消息;
经过位节点处理后,存储所述与多个位节点相关的多个边消息;
经过校验节点处理后,存储所述与多个校验节点相关的多个边消息;
将所述与多个位节点相关的多个边消息移位至合适的配置以进行随后的校验节点处理;
将所述与多个校验节点相关的多个边消息移位至合适的配置以进行随后的位节点处理。
优选地,所述方法进一步包括:
接收对应最近更新的与所述多个位节点相关的多个边消息的软输出,并随后作出硬判决,从而生成所述LDPC编码信号第一符号和第二符号中的至少一个的位最佳估计值。
优选地,所述方法进一步包括:
接收对应最近更新的与所述多个位节点相关的多个边消息的软输出;
确定用于生成LDPC编码信号的LDPC码的多个校正子中的每一个是否等于零。
优选地,
所述与多个位节点相关的多个边消息以符号数值格式存储;
所述与多个校验节点相关的多个边消息以2的补码格式存储。
优选地,
所述与多个位节点相关的多个边消息包括对应信息位的第一组多个边消息和对应奇偶校验位的第二组多个边消息;所述方法进一步包括:
将所述对应信息位的第一组多个边消息和对应奇偶校验位的第二组多个边消息中的每一个均存储在一个存储设备中。
优选地,所述校验节点处理包括min**(min-double-star)处理和min**-(min-double-star-minus)处理。
优选地,所述校验节点处理包括min(min-double-dagger)处理和min-(min-dagger-minus)处理。
优选地,
所述LDPC编码信号是可变编码率信号;
所述LDPC编码信号的第一符号具有第一编码率;
所述LDPC编码信号的第二符号具有第二编码率。
优选地,
所述LDPC编码信号是可变调制信号;
所述LDPC编码信号的第一符号具有第一调制,包括有第一群集形状(constellation shape)和对应的第一映射(mapping);
所述LDPC编码信号的第二符号具有第二调制,包括有第二群集形状和对应的第二映射。
优选地,所述解码器解码LDPC编码信号,所述LDPC编码信号遵从DVB-S2(Digital Video Broadcasting Project-Satellite Version 2)标准和IEEEP802.3an(10GBASE-T)任务组提供的推荐规程中的至少一个。
具体实施方式
本发明提出一种执行LDPC编码信号解码的设备。在某些情况下,本发明提出的解码方法和功能性可解码和处理已生成的遵从DVB-S2(即DVB-Satellite Version 2)标准的信号。另外,本发明提出的解码方法和功能性还可解码和处理已成生的遵从由IEEE P802.3an(10GBASE-T)任务组提供的草案标准和推荐规程的信号。
总的来说,本发明提出的解码方法和功能性可应用于各种执行LDPC编码信号和/或其它类别的编码信号的处理的设备中。有时,这些设备既可以执行LDPC编码信号的发送处理(包括编码),也可以执行LDPC编码信号的接收处理(包括解码)。在其他情况下,这些设备只能执行LDPC编码信号的接收处理(包括解码)。
本发明的解码方法能适用于具有可变调制和/或可变编码率的LDPC信号的解码。例如,DVB-S2标准明确地描述了通过产生各种符合DVB-S2标准的LDPC信号来实现VCM(可变编码和调制)和ACM(自适应编码和调制)的方法。通常,这种遵从DVB-S2的信号的编码率和调制的改变在逐帧的基础上进行。本发明提出的解码方法和功能性能处理和解码编码率和/或调制基于逐帧频繁变化的信号。此外,本发明提出的解码方法和功能性还能够处理和解码编码率和/或调制基于逐个区块频繁变化的信号。例如,一个区块可被看作是一帧内的一个符号群。在某些情况下,一帧包括多个区块。
此外,本发明提出的解码方法和功能性还适用于其内所有符号采用单一编码率和/或单一调制的LDPC信号的解码。例如,对于其所有的符号具有共同的编码率和共同的调制(群集和映射)的LDPC信号来说,本申请中介绍的(并在以下给出更详细的描述)的各种LDPC解码方法都可用来解码这种LDPC编码信号。
图1和图2分别是根据本发明不同实施例的通信系统的100和200的示意图。
如图1所示,通信系统100包括一个通信信道199,将位于通信信道199一端的通信设备110(包括带有编码器114的发送器112和带有解码器118的接收器116)与位于通信信道199另一端的另一个通信设备120(包括带有编码器128的发送器126和带有解码器124的接收器122)通信连接。在某些实施例中,通信设备110和120均可仅包括一个发送器或一个接收器。通信信道199可通过几种不同类型的媒介来实现(例如,利用圆盘式卫星电视天线132和134的卫星通信信道130,利用塔142与144和/或本地天线152和154的无线通信信道140,有线通信信道150,和/或利用电-光(E/O)接口162和光-电(O/E)接口164的光纤通信信道106)。另外,可以通过一种以上的媒介连接在一起从而形成通信信道199。
如图2所示的通信系统200中,在通信信道299的发送端,信息位201提供给发送器297,发送器297可使用一个编码器和符号映射器200(可分别视为是不同的功能块222和224)执行对这些信息位201的编码,从而生成一个离散值调制符号序列203,然后提供给发送驱动器230,发送驱动器230使用DAC(数模转换器)232生成一个连续时间发送信号204,然后通过发送滤波器234,生成充分适合通信信道299的滤波后连续时间发送信号205。在通信信道299的接收端,连续时间接收信号206被提供给AFE(模拟前端)260,AFE 206包括接收滤波器262(生成滤波后连续时间接收信号207)和ADC(模数转换器)264(生成离散时间接收信号208)。量度发生器270计算符号量度209,解码器280使用符号量度209对离散值调制符号和编码在其内的信息位做出最佳估算210。
前述实施例中的解码器具有本发明的各种特征。另外,以下的一些附图和相关的描述将介绍支持本发明的设备、系统、功能性和/或方法的其他和特定实施例(某些实施例的介绍更加详细)。根据本发明处理的一种特定类型的信号是LDPC编码信号。在给出更详细的介绍之前,先对LDPC码进行概要描述。
图3是LDPC码二分图300的示意图。现有技术中,LDPC二分图也被称为Tanner图。LDPC码被看作是具有二进制奇偶校验矩阵从而使矩阵的几乎所有元素都为零值(例如,该二进制奇偶校验矩阵稀疏)的代码。例如,H=(hi,j)M×N被看作是区块长度为N的LDPC码的奇偶校验矩阵。
奇偶校验矩阵的第i列中1的数量表示为dv(i),奇偶校验矩阵的第j行中的1的数量表示为dc(j)。如果对所有的i,dv(i)=dv,对所有的j,dc(j)=dc,那么这种LDPC码被称为规则LDPC码,否则被称为不规则LDPC码。
关于LDPC码的介绍请参考以下两份引用文件:
[1]R.Gallager,Low-Dentisy Parity-Check Codes,Cambridge,MA:MITPress,1963
[2]M.Luby,M.Mitzenmacher,A.Shokrollahi,D.Spielman,and V.Stemann,“Practical loss-resilient codes”,1997
规则LDPC码可表示为二分图300,其奇偶校验矩阵的左侧节点为代码位变量(或为解码LDPC编码信号的位解码方法中的“变量节点”(或“位节点”)310),右侧节点为校验方程(或“校验节点”320)。由H定义的LDPC码的二分图300可由N个变量节点(例如,N位节点)和M个校验节点来定义。N个变量节点310中的每个变量节点都具有精确的dv(i)个边(如边330)连接位节点例如Vi312与一个或多个校验节点(M个校验节点内)。图中所示的边330连接位节点vi312与校验节点cj322。该边(如dy314所示)的数量dv被称为变量节点i的度(degree)。类似地,M个校验节点320中的每个校验节点都有精确的dc(j)个边(如dc324所示),连接该节点与一个或多个变量节点(或位节点)310。该边的数量dc被称为校验节点j的度。
变量节点vi(或位节点bi)312与校验节点cj322之间的边330可定义为e=(i,j),但是,另一方面,假定边e=(i,j),则该边的节点可表示为e=(v(e),c(e))(或e=(b(e),c(e)))。假定给出变量节点vi(或位节点bi),可将从节点vi(或位节点bi)发射的一组边定义为Ev(i)={e|v(e)=i}(或Eb(i)={e|b(e)=i})。假定给出校验节点cj,可将从节点cj发射的一组边定义为Ec(j)={e |c(e)=j}。接着,导出的结果是|Ev(i)|=dv(或|Eb(i)|=db)以及|Ec(j)|=dc。
一般说来,任何可用二分图表示的代码,其特征都是图形码。要注意的是,不规则LDPC码也可用二分图表示。但是,不规则LDPC码内的每组节点的度可根据某些分布进行选择。因此,对于不规则LDPC码的两个不同变量节点vi1和vi2,|Ev(i1)|不等于|Ev(i2)|。对于两个校验节点也是这种关系。不规则LDPC码的概念最早在上述的引用文件[2]中给出了介绍。
一般说来,通过LDPC码的图示,LDPC码的参数可由分布的度来定义,如M.Luby等在上述引用文件[2]中所述,以下的引用文件中也有相关的描述:
[3]T.J.Richardson and R.L.Urbanke,“The capacity of low-densityparity-check code under message-passing decoding”,IEEE Trans.Inform.Theory,Vol.47,pp.599-618,Feb.2001
这种分布可描述如下:
用λi表示从i度变量节点发射的边的数量,ρi表示从i度校验节点发射的边的数量,则度分布对(λ,ρ)定义如下:
和
其中Mv和Mc分别表示变量节点和校验节点的最大度。
虽然在此描述的多个实施例采用规则LDPC码,但是要注意的是本发明的特征既适用于规则LDPC码,也适用于不规则LDPC码。
LDPC码的LLR(对数相似值比)解码方法可大致描述如下:当1实际被发送时,计算接收的矢量内的位实际值等于1的概率。同样地,当0实际被发送时,计算接收的矢量内的位实际值等于0的概率。这些概率通过利用LDPC码的奇偶校验矩阵来计算,该奇偶校验矩阵被用来校验所述接收的矢量的奇偶性。LLR是所计算的两个概率的比的对数。LLR能反映传送信号的通信通道对矢量内的位产生不利影响的度。
LDPC码的LLR解码可在数学上表示如下:
首先C={v|v=(v0,...,vN-1),vHT=0}是LDPC码,且发送的信号内的接收矢量y=(y0,...,yN-1)的形式为((-1)v0,...,(-1)vN-1),则该信道的量度可定义为p(yi|vi=0),p(yi|vi=1),i=0,...,N-1。然后该量度的LLR即Lmetric(i)可定义如下:
要注意的是,各个数学表达式中描述的“ln”指的是基数为e的自然对数。
对于每个变量节点vi,其LLR信息值可定义如下:
由于变量节点vi位于LDPC代码字内,则这些值的比值
可由下式代替:
其中Ev(i)是如上所述定义的一组从vi开始的边。
当执行上述的BP(信度传播)解码方法时,
的值可用以下关系式替代:
Lcheck(i,j)是与边(i,j)相关的校验节点cj的外来(EXT)信息。此外,要注意的是e∈Ec(j)\{(i,j)}表示从校验节点cj发射的所有的边,但从校验节点cj发射至变量节点vi的边除外。外来信息值被计算来协助对生成接收矢量内的实际信息位值的最佳估计值。同样在BP方法中,与边(i,j)有关的变量节点vi的外来信息可定义如下:
图4是根据本发明一个实施例使用位量度400的LDPC解码功能的示意图。为了对具有m-位信号序列的LDPC编码信号进行解码,可以使用如图所示的功能性(functionality)。在符号节点处接收了信号的I、Q(同相、正交)值401后,m-位符号量度发生器410计算相应的符号量度411。在该符号节点处,这些符号量度411随后被传递到符号节点计算器功能块420,功能块420利用这些收到的符号量度411来计算对应这些符号的位量度421。然后根据LDPC码二分图,将这些位量度421传递给与符号节点相连的位节点,LDPC码信号通过该LDPC码二分图产生,并通过该LDPC码二分图进行解码。
之后在位节点处,位节点处理器430计算位的相应软信息。然后,按照迭代解码处理450,位节点处理器430从校验节点处理器440处接收与该校验节点相关的边消息Medgec441,并用从符号节点计算器功能块420接收位量度421更新与该位节点相关的边消息Medgeb431。这些与位节点相关的边消息Medgeb431在更新后被传递给校验节点处理器440。
在校验节点处,随后校验节点处理器440接收与上述位节点相关的边消息Medgeb431(来自位节点处理器430),并相应地更新它们,从而生成与校验节点相关的边消息的下一个更新版本Medgec441;这一操作在功能块442中示出。更新后的与校验节点相关的边消息Medgec441随后被传回给位节点(例如,传回给位节点处理器430),在此使用位量度421和与位节点相关的边消息Medgeb431的当前迭代值来计算位的软输出,这一操作在功能块434中示出。其后,使用刚计算出的位的软输出(如软输出435)和与位节点相关的边消息Medgeb431的前一值(从前一次迭代中得到的),位节点处理器430更新与位节点相关的边消息Medgeb431;这一操作在功能块432中示出。依据用于解码和生成解码信号的LDPC码二分图,迭代解码处理450在位节点和校验节点之间(即位节点处理器450和校验节点处理器440之间)继续。
由位节点处理器430和校验节点处理器440执行的迭代解码处理步骤将重复预定数量的迭代(例如,重复n次,其中n是可选的)。可选择地,这些迭代解码处理步骤可一直重复,直至LDPC码的校正子全部等于零。
软输出435在每次解码迭代过程中在位节点处理器430内生成。图4所示的实施例中,软输出435可提供给做出硬判决的硬限幅器460,而且硬判决信息可提供给校正子计算器470以确定LDPC码的校正子是否都等于零。当校正子不等于零时,再继续迭代解码处理450,适当地在位节点处理器430和校验节点处理器440之间更新和传递边消息。例如,与位节点相关的边消息Medgeb431从位节点处理器430传递给校验节点处理器440。类似地,与校验节点相关的边消息Medgec441从校验节点处理器440传递到位节点处理器430。在某些实施例中,软输出435和校正子计算器470执行的校正子计算都在每个解码迭代过程中执行。
执行完迭代解码处理450的所有步骤后,基于位的软输出输出位的最佳估计值(如位估计值471)。图4所示的实施例的方法中,通过符号节点计算器功能块420计算的位量度值是固定值,并在更新位节点值时被反复使用。
图5是根据本发明另一个实施例(当执行n次迭代时)使用位量度500的LDPC解码操作的示意图。该实施例中示出了当执行预定次数的解码迭代,如n次时,如何执行图4中所示的迭代解码处理450。如果解码迭代的次数已经预先知道,如在预定数量解码迭代的实施例中,如预定次数的解码迭代实施例,位节点处理器430可使用位量度421自身(而不是前一实施例中上述的软输出435)来更新其对应的与位节点相关的边消息Medgeb431。这一处理在除最后一次迭代外的所有解码迭代中都执行(例如,从迭代1至n-1)。但是,在最后一次迭代中,位节点处理器430计算软输出435。然后将软输出435提供给硬限幅器460,在硬限幅器460中做出位的硬判决。这一实施例中不必计算校正子,因为只执行预定数量的解码迭代。
通常,在实际的通信设备和硬件中实现LDPC解码功能性时,设计时关键需要考虑的就是如何实现硬件以使计算能尽可能快地执行,同时具有尽可能高的精确度。同样,这种LDPC解码功能性的硬件可在对数域内实现。该硬件实现有时还可以进行简化,将乘法处理简化成加法,除法处理简化成减法。通常,执行实现LDPC解码处理所必要的计算的难点在于校验节点处理所必要的计算的执行很难。例如,在校验节点处理器(或者执行校验节点处理的位校验处理器)内执行的计算通常要求从一组可能的值中确定最小值(或最大值)。当在实际的在对数域内执行计算的硬件中执行这些计算时,通常会以损失某些精确度的代价来确定最小值(或最大值)。也就是说,不在计算中使用某些对数校正因数,因而导致精确度的损失。即使是在对数域内执行时,某些现有技术中的解码方法只从一定量的可能值中选择最小值(或最大值),而不使用任何对数校正因数。因而在对数域内运算时,从一组可能值中选择最小值(或最大值)时,必然会引入了一些不精确性。
以下将结合对输入值“x”和输入值“y”的操作介绍几个上述的计算。该输入值可视为与位节点相关的不同边消息Medgeb。例如,输入值“x”可视为与位节点相关的第一边消息Medgeb(1),输入值“y”可视为与位节点相关的第二边消息Medgeb(2),或反之亦然。这些与位节点相关的边消息Medgeb的校验节点处理使用了在此给出的各种可能的实施例,用来生成对应的与校验节点相关的更新后边消息Medgec。
发明人已经开发出了多种执行这些计算的不同方法,能在执行校验节点处理的同时仍然保持高的精确度。这些计算包括min*处理、min*-处理、min**处理、min**-处理。此外,以上每一种处理方法均有一个对应的最大相关函数:min*处理、min*-处理、min**处理、min**-处理。此外,还可使用其它的处理方法,包括min’处理、min处理、min-处理、min处理。以下将结合对输入值“x”和输入值“y”的操作介绍几个上述的计算。
min*处理和min*-处理:
min*(x,y)=min(x,y)-ln(1+exp(-|x-y|))
min*-(x,y)=min(x,y)-ln(1-exp(-|x-y|))
max*处理和max*-处理:
max*(x,y)=max(x,y)+ln(1+exp(-|x-y|))
max*-(x,y)=max(x,y)+ln(1-exp(-|x-y|))
min**处理和min**-处理:
min**(x,y)=min(x,y)-ln(1+exp(-|x-y|))+ln(1+exp(-(x+y)))
min**-(x,y)=min(x,y)-ln(1-exp(-|x-y|))+ln(1-exp(-(x+y)))
max**处理和max**-处理:
max**(x,y)=max(x,y)+ln(1+exp(-|x-y|))-ln(1+exp(-(x+y)))
max**-(x,y)=max(x,y)+ln(1-exp(-|x-y|))-ln(1+exp(-(x+y)))
min’处理
min处理:
min-处理:
以下结合附图介绍上述各种不同类别的处理的功能性和处理。关于min处理,min处理有些类似于min*处理,还带有最小值比较处理的附加功能性。如以下的一个实施例中所示,当运算的值以符号数值格式实现时,可实现min处理内的最小值比较处理。这种符号数值格式使其能更容易从多个值中找出最小值。
本发明提供了执行上述计算的快速效率的硬件实现,可在解码LDPC编码信号时执行校验节点处理。此外,以下的各种结构将解释上述各种计算如何在解码处理操作内执行,在哪里执行。
图6、图7、图8和图9分别是本发明LDPC解码功能性的不同实施例的示意图。
如图6所示的LDPC解码功能性600中,接收的符号的I、Q(同相、正交)值被提供给量度发生器603(即图中所示的MG 603)。这些I、Q值可看作是来自一个通信设备内的预处理功能块,该预处理功能块对从通信信道接收的连续时间信号执行初步处理。例如,该预处理可包括频率转换、接收滤波、数字取样、增益调节和/或均衡。这些I、Q值与从连续时间信号中生成的离散时间信号相对应。
量度发生器603计算对应至少一个将被解码的符号的位量度。量度发生器603执行符号量度计算并将其转换成位量度。在某些上述的实施例中,采用两个分开的功能块来执行这种功能性:首先从接收的I、Q值计算符号量度,然后从符号量度计算位量度。
然后位量度从量度发生器603提供给乒乓存储结构605(如图所示的PPMS605)。乒乓存储结构605包括两个分开的量度存储器606和607(如图所示的MM 606和MM 607)。当量度发生器603正将对应一个或一群符号的位量度提供给乒乓存储结构605的量度存储器606时,较早提供的位量度从乒乓存储结构605的量度存储器606中输出。一般说来,在乒乓存储结构605中,当从量度存储器607中读取第二组位量度时,将第一组位量度写入量度存储器606。该第一组位量度与第一符号帧内的每个符号的位量度相对应,该第二组位量度与第二符号帧内的每个符号的位量度相对应。
然后合适的位量度从乒乓存储结构605中输出并提供给一组位/校验处理器610(如图所示的BCP 610)。一组位/校验处理器610包括多个位/校验处理器,如BCP 611,...,和BCP 612。要注意的是,根据本发明,一个单组的处理块,即位/检验处理器组610,既能执行位节点处理,也能执行校验节点处理。也就是说,当解码LDPC编码信号时,可使用多个位/检验处理器610内完全相同的硬件来执行位节点处理和校验节点处理。这可以通过使用桶形移位器615(如图所示的BS 615)结合信息传送存储器620(如图所示的MPM 620)来部分的实现。要注意的是,通过使用有效率寻址方案(其更多细节在下面介绍),消息传送存储器620可存储两种类型的与多个位节点相关的边消息(即(1)对应信息位的边消息;(2)对应奇偶校验位的边消息)。这一点是与现有技术的重要区别,通常现有技术中采用两个分开的存储结构/设备来存储这两种不同类型的与多个位节点相关的边消息。但是,本发明中的单个存储设备(即消息传送存储器620)可存储这两种类型的边消息。
当多个位/校验处理器610正在执行位节点处理(即,更新与位节点相关的边消息Medgeb),且这些更新后的与位节点相关的边消息Medgeb已经写入消息传送存储器620后,接下来,桶形移位器615确保这些边消息是以特定和受控的方式从消息传送存储器620中读出的,以便其在校验节点处理的下一个迭代中使用(即,更新与校验节点相关的边消息Medgec)。
桶形移位器615控制从消息传送存储器620中读取与校验节点相关的边消息Medgec方式,以使其能够从消息传送存储器620中合适地读出,以便相同的多个位/校验处理器610使用在随后的校验节点处理中(即,更新与校验节点相关的边消息Medgec)。在消息传送存储器620之后使用桶形移位器615使得使用相同的功能块(即,多个位/节点处理器610的相同硬件)能够执行校验节点处理和位节点处理两者。这使用于执行LDPC编码信号的解码的实际通信设备在尺寸和复杂度上有了显著的减小。
还要注意的是,桶形移位器615还可以另一种连接通路放置在多个位/校验处理器610和消息传送存储器620之间。以下将详细介绍这种实施例。
不管桶形移位器615位于哪个位置,多个位/检验处理器610、桶形移位器615和消息传送存储器620可协作运行,以执行LDPC编码信号的迭代解码处理,从而使用最近更新的与位节点相关的边消息Medgeb来生成解码位的软输出。然后将对应该解码位的软输出的硬判决(在上一次解码迭代后产生或当所有的校正子等于零时产生)提供给SRAM(静态随机存取存储器)660(如如所示的SRAM 660)。这些存储在SRAM 660中的硬判决是基于被解码信号最初接收的I、Q值的解码位的最佳估计值。在上一次解码迭代之前或在所有的校正子等于零之前,编码位的软输出被提供给SRAM 660。
解码位的软输出被提供给一组功能块,该组功能块通过使用最初产生LDPC编码信号的LDPC码的奇偶校验协作地执行校正子校验,以确定解码位是否是有效代码字的一部分。适当地输入软输出然后从SRAM 660输出后,该软输出传递通过另一个桶形移位器662(如图所示地BS 662),随后被传送给校正子计算功能块664(如图所示的SYNCALC 664)。如果该校正子通过(即,给校正子计算功能块664的所有输入都等于零),则告知控制器650(如图所示的CON 650)迭代解码处理结束。关于控制器650的更多详细介绍在以下给出。
此外,控制器650可被执行来根据选择的LDPC码651提供控制信号652。例如,LDPC解码功能性600可用来解码多种LDPC编码信号,包括遵从DVB-S2的编码信号。如遵从DVB-S2的信号的例子中,包括有VCM(可变编码和调制)和ACM(适应性编码和调制)功能性,LDPC编码信号的编码率(以及调制类型)可基于逐帧动态改变。也就是说,第一帧使用第一编码率和第一调制类型编码,第二帧使用第二编码率和第二调制类型编码。基于选择的LDPC码651,控制器650将合适的解码控制信号652提供给LDPC解码功能性600内的其它功能块。这可以确保在量度发生器603内为接收的I、Q值计算合适的位量度。此外,根据解码控制信号652,多个位/校验处理器610、桶形移位器615以及消息传送存储器620也都可根据在通信信道的发射端产生信号的方式来协作执行对接收的信号的LDPC解码,其中该通信信道提供连续时间信号,I、Q值最终从该连续时间信号中提取并提供给LDPC解码功能性600以便后续的解码。
解码控制信号652将特定的信号类型和属性通知给多个位/校验处理器610、桶形移位器615和消息传送存储器620,以便在解码接收的信号时使用合适的奇偶校验矩阵。解码控制信号652还指示桶形移位器615对与位节点相关的边消息Medgeb(以及与校验节点相关的边消息Medgec-取决于何时查看LDPC解码功能性600)执行适当程度的移位。由于桶形移位器615执行了这两种边消息的合适移位,与位节点相关的边消息Medgeb(以及与校验节点相关的边消息Medgec)都以一种方式存储在消息传送存储器620中,使得它们能够从中取回,以便多个位/校验节点处理器610执行迭代解码处理中的后续步骤时使用。还要注意的是,对于信息位和奇偶校验位来说,在多个位/校验处理器610内的校验节点处理之后、下一个位节点处理步骤之前,桶形移位器615不得对其执行移位。由此可见,使用桶形移位器615后可允许相同的硬件(即,多个位/校验处理器610)来执行位节点处理和校验节点处理两者。例如,解码一组X个位时,如果在进行校验节点处理前执行移位N,则需要执行X-N的桶形移位,以在进行位节点处理之前使被移位的位回到它们的初始位置。
假设有一组特定的LDPC编码信号将由LDPC解码功能性600进行解码,桶形移位器615执行的移位量可在一个ROM(只读存储器)设备中实现。这在解码实际信号时能提供非常快速的运算和处理。存储在ROM内的移位值可基于产生LDPC编码信号的LDPC二分图中的位节点和校验节点之间的边的连接性来选择。
控制器650的使用确保了LDPC解码功能性600可解码各种LDPC编码信号,遵从DVB-S2的信号便是其中的一种。但是,LDPC解码功能性600也可用来执行其它LDPC编码信号的解码。另外,使用控制器650提供的功能,LDPC解码功能600还能够执行编码率和/或调制(包括群集形状和映射)基于逐块频繁改变的LDPC编码信号的解码。例如,一个区块可视为一帧内的一个符号群。在某些情况下,一帧可包括多个区块。遵从DVB-S2的信号一般在一帧内的所有符号具有共同的编码率和调制(包括群集形状和映射),且编码率和/或调制仅基于逐帧改变。
如上所述,多个位/校验处理器610包括一组位/校验处理器,如BCP 611,...,和BCP 612。在多个位/校验处理器610中实现多少个位/校验处理器可由设计者选择。设计者可根据多个因素来选择使用多少个位/校验处理器,包括被解码的位的数量、多个位/校验处理器610中位/校验处理器的数量、理想的吞吐速度以及需要占用的总面积。选择在位/校验处理器610内实现越多的位/校验处理器将导致更多的并行类处理。
还要注意的是,可实现宏块699的几个示例(如图所示的MB 699)来支持进一步的并行处理。在这个实施例中,宏块699包括有乒乓存储结构605、多个位/校验处理器610和消息传送存储器620。以下将介绍的其他实施例中采用了宏块的多个示例来支持更有效的实现而耗用更小的总面积。一般说来,选择的宏块的总数量应确保设备的总面积尽可能最小。关于宏块699,还要注意的是,其内不必实现桶形移位器615。在这个实施例中,桶形移位器实际上实现在宏块699外部,用来服务于多个宏块699。但是,桶形移位器615也可在宏块内部实现而不脱离本发明的范围和实质(如下述的其它实施例中将会介绍)。但是,一般说来,最好将桶形移位器615放在宏块699的外面,因为这样不会拖延或减慢消息传送存储器620(可利用RAM(只读存储器)来实现)的存取时间。当桶形移位器615位于宏块699外部时,需要使用管线寄存器(pipeline register)来保证至/从消息传送存储器620的访问同步。
而且,LDPC解码功能性600的各个功能块实现(通过使用桶形移位器615结合消息传送存储器620的单个功能块)的方式,允许消息传送存储器620使用单个端口的存储设备;这必然占用比双端口存储设备更少的面积,同时也比双端口存储设备耗用更少的能量。
如上所述,使用LDPC解码功能性600可以解码各种不同类型的LDPC编码信号。以下将提供一个位与字宽的具体例子,以及多个位/校验处理器610内的位/校验处理器的数量,以示出它们在特定情况下的关系。提供给量度发生器603的I、Q值每个为7位。量度发生器603使用7位I、Q值生成的位量度每个为6位。因此,两个单独的量度存储器606和607中的每一个都运算180×360×6位的值;这需要DVB-S2区块的长度为64,800位。
在设计能够解码遵从DVB-S2信号的结构时,从量度发生器630输出的位量度需要有360×6位;也就是说,有360个不同的值,每个值为6位。这些位量度可提供给并行配置的360个单独的位/校验处理器。更具体地,该多个位/校验处理器610包括BCP 611(第1个位校验处理器),...,和BCP 612(第360个位/校验处理器)。从该360个单独的位/校验处理器中输出的边消息为6位值。因此,360个单独的位/校验处理器的总输出是360×6位;每个位/校验处理器输出6位的边消息。类似地,桶形移位器615内的适当移位的边消息也是每个6位。因此,桶形移位器的输出也共有360×6位。同样,解码遵从DVB-S2的信号时,消息传送存储器620将传送多达792×360×6位的值。因此有360个解码位从SRAM 660中输出。
还要注意的是,上述描述中的位值仅仅是实现LDPC解码功能性600的一个可能实施例。根据本发明,对上述实施例中的各个值使用不同数量的位宽,还可以实现多个不同的实施例。
如图7所示的实施例中LDPC解码功能性700与图6中的LDPC解码功能性600的完全类似,除了使用虚拟双端口量度存储器705(如图所示的PDPMM 705)代替乒乓存储结构605。虚拟双端口量度存储器705可支持双端口存储管理,即使它是一个单端口存储设备。通过使用图7中的虚拟双端口量度存储器705代替图6中的乒乓存储结构605(包括双端口存储结构),与LDPC解码功能性600相比,LDPC解码功能性700可显著节省空间。在图7所示的实施例中,处理与图6中的描述类似的遵从DVB-S2的信号时,虚拟双端口量度存储器705运算180×360×6位的值。
如图8所示的实施例中LDPC解码功能性800中,I、Q输入、量度发生器803(如图所示的MG 803)、控制器850以及对应的基于选择的LDPC码851的控制信号852与图6所示的LDPC解码功能性600中的非常相似。但是,与图6中的宏块699相比,LDPC解码功能性800包括一个稍微修改的宏块899(如图所示的MB 899)。宏块899可被复制一定的次数,以协助提供比之前的实施例更有效的LDPC解码功能性。宏块899包括有所有的功能性,可被复制以实现更加并行的处理结构。
图8所示的实施例中,桶形移位器815包括在宏块899内部。这个实施例中的桶形移位器815与前述实施例中的桶形移位器615或桶形移位器715的不同之处在于,这个实施例中的桶形移位器815仅服务于它所在的实际宏块899内的部件。相反,桶形移位器615或桶形移位器715每个都服务于各自实施例中宏块699和宏块799的所有示例。因而桶形移位器815没有桶形移位器615或桶形移位器715那么复杂。
由于桶形移位器815的位置与桶形移位器615或桶形移位器715不同,必须小心,以确保对边消息进行适当地移位以便多个位/校验处理器810内的后续校验节点处理或位节点处理。同样,由于桶形移位器815的位置与桶形移位器615或桶形移位器715不同,需要对桶形移位器862和SARM860进行重新配置以兼容这种不同顺序的处理。
一种能够解码遵从DVB-S2信号的设计中包括18个单独的宏块示例。提供给量度发生器803的I、Q值每个7位。量度发生器803使用7位的I、Q值生成的位量度是每个为6位的值。
但是,图8中宏块899的每个块的实现都与图6中的宏块699不同。乒乓存储结构805(如图所示的PPMS 805)包括有量度存储器806和807(如图所示的MM 805和MM 807),在180×120位上运算。这120个位每个都以20×6位实现;也就是说,有20个单独的值,每个值6位。从乒乓存储结构805输出的位量度也具有120位(即,每个为20×6位)。
提供给多个位/检验处理器810的这些位量度可提供给位于每个宏块内的并行配置的20个单独的位/校验处理器。更具体地,多个位/校验处理器810包括BCP 811(第1个位/校验处理器),...,以及BCP 812(第20个位/校验处理器)。从这20个单独的位/校验处理器810中,适当地边消息以120位输出(即,每个为20×6位)。因此,每个宏块899内的20个单独的位/校验处理器共有120位的输出(即,20×6位)。多个位/校验处理器810的20个位/校验处理器中的每一个均输出6位的边消息。类似地,桶形移位器815内适当移位后的边消息也是120位(即,20×6位)。因此,桶形移位器815也共有120位(即,20×6位)的输出。同样,解码遵从DVB-S2的信号时,消息传送存储器820需传送792×120位的值。因而有120位(即,20×6位)的解码位从SARM860中输出。
与其它实施例一样,要注意的是,桶形移位器815可在任何宏块899的内部或外部实现。如果桶形移位器815在宏块899外部实现,单个桶形移位器可运算360×6位的边消息值。但是,当桶形移位器815在宏块899内部实现时,那么将会有18个单独的桶形移位器(即,每一个宏块899中一个),运算120位(即,20×6位)的边消息值。
还要注意的是,宏块899的数量可进行选择,以使LDPC解码功能性800的总面积尽可能小。例如,为了解码遵从DVB-S2的信号,宏块的数量乘以每个宏块899的多个位/校验处理器内的位/校验处理器的数量应该等于360。例如,可选择360个并行处理器来支持解码遵从DVB-S2的信号所要求的吞吐量。为了支持更高的吞吐量,需要的并行处理器更多。
如图9所示的实施例中LDPC解码功能性900中,I、Q输入、量度发生器903(如图所示的MG 903)、控制器950以及对应的基于选择的LDPC码951的控制信号952与图7所示的LDPC解码功能性700中的非常相似。但是,与图7中的宏块799相比,LDPC解码功能性900包括有稍微修改后的宏块999(如图所示的MB 999)。
如9所示的实施例中,桶形移位器915包括在宏块999内部。这个实施例中的桶形移位器915与前述实施例中的桶形移位器615或桶形移位器715的不同之处在于,这个实施例中的桶形移位器915仅服务于它所在的实际宏块999内的部件。相反,桶形移位器615或桶形移位器715每个都服务于它们各自的实施例中的宏块699和宏块799的所有示例。因而桶形移位器915没有桶形移位器615或桶形移位器715那么复杂。
由于桶形移位器915的位置与桶形移位器615或桶形移位器715不同,必须小心,以确保对边消息进行适当地移位以便多个位/校验处理器910内的后续校验节点处理或位节点处理。同样,由于桶形移位器915的位置与桶形移位器615或桶形移位器715不同,需要对桶形移位器962和SARM 960进行重新配置以兼容这种不同顺序的处理。
与图8中的实施例相似,图9中的宏块999可被复制预定的次数,以协助提供比之前的实施例更有效的LDPC解码功能性。宏块999包括有所有的功能,可被复制以实现更加并行的处理结构。
一种能够解码遵从DVB-S2信号的设计中包括18个单独的宏块示例。提供给量度发生器903的I、Q值每个7位。量度发生器903使用7位的I、Q值生成的位量度是每个为6位的值。
但是,图9中宏块999的每个块的实现都与图7中的宏块799不同。虚拟双端口量度存储器905(如图所示的PDPMM 905)在180×120位上运算。这120个位每个都以20×6位实现;也就是说,有20个单独的值,每个值6位。从虚拟双端口量度存储器905输出的位量度也具有120位(即,每个为20×6位)。
提供给多个位/检验处理器910的这些位量度可提供给位于每个宏块内的并行配置的20个单独的位/校验处理器。更具体地,多个位/校验处理器910包括BCP 911(第1个位/校验处理器),...,以及BCP 912(第20个位/校验处理器)。从这20个单独的位/校验处理器910中,适当地边消息以120位输出(即,每个为20×6位)。因此,每个宏块999内的20个单独的位/校验处理器共有120位的输出(即,20×6位)。多个位/校验处理器910的20个位/校验处理器中的每一个均输出6位的边消息。类似地,桶形移位器915内适当移位后的边消息也是120位(即,20×6位)。因此,桶形移位器915也共有120位(即,20×6位)的输出。同样,解码遵从DVB-S2的信号时,消息传送存储器920需传送792×120位的值。因而有120位(即,20×6位)的解码位从SARM960中输出。
与其它实施例一样,要注意的是,桶形移位器915可在任何宏块999的内部或外部实现。如果桶形移位器915在宏块999外部实现,单个桶形移位器可运算360×6位的边消息值。但是,当桶形移位器915在宏块999内部实现时,那么将会有18个单独的桶形移位器(即,每一个宏块999中一个),运算120位(即,20×6位)的边消息值。
还要注意的是,宏块999的数量可进行选择,以使LDPC解码功能性900的总面积尽可能小。例如,为了解码遵从DVB-S2的信号,宏块的数量乘以每个宏块999的多个位/校验处理器910内的位/校验处理器的数量应该等于360。例如,可选择360个并行处理器来支持解码遵从DVB-S2的信号所要求的吞吐量。为了支持更高的吞吐量,需要的并行处理器更多。
这里还要注意的是,上述各个实施例中的控制器给其它的每个解码功能块提供同步信息。更具体地,这包括为每个对应的量度发生器、量度存储器、多个位/校验处理器、桶形移位器和消息传送存储器生成定时信号。这些定时信号提供给这些功能块中的每一个,不管这些功能块在特定的实施例中是怎样实现的。如果必要,可对这些定时信号进行适当的修改,以适合给定的功能块的实现方式。例如,根据桶形移位器是否在宏块内部或外部实现,需要对定时信号进行不同地处理。
同样,如上所述,上述各实施例中每个不同的LDPC解码功能性都能够处理和解码不同类型的LDPC编码信号,包括使用不同的奇偶校验矩阵产生的LDPC编码信号,以及具有不同的编码率和/或调制类型且会基于逐帧甚至逐块变化的LDPC编码信号。例如,一个区块可视为一帧内的一个符号群。在某些情况下,一帧可包括多个区块。
上述各实施例中的控制器还可对每个LDPC码使用可编程和可选择的参数。这些可编程和可选择的参数包括每个LDPC二分图的位节点度和校验节点度。此外,这些可编程和可选择的参数还包括信息传递存储器寻址和桶形移位器选择参数。
例如,对于信息位节点,为位+1提供了校验+q。同样,对于奇偶校验位节点,为位+q提供了校验+q。通过这样做,可确保两者能存储在相同的存储设备中(例如,相同的RAM中)。这是可能的,因为奇偶校验位节点的位+q是可容许的,因为它们是+1或+q值都没有任何关系(注:这些在输出处理中不使用)。奇偶校验位节点的位+q不像信息位节点,信息位节点要求按照用于输出处理的多个并行处理引擎的顺序+1。例如,实现如上所述的解码遵从DVB-S2的信号的实施例时,可有360个并行处理引擎用于输出处理。例如,该360个并行处理引擎将处理对应360个校验节点(即,0,q,2q,3q,...)的360个信息位节点(例如,节点0至节点359)。对于奇偶校验位节点,这360个处理引擎将处理360个位节点(例如,n,n+q,n+2q,n+3q,...)。这些奇偶校验位节对应该360个校验节点(例如,m,m+q,m+2q,m+3q,...)。通过这样做,所有360个边消息存储在存储设备的相同位置内,可在校验节点处理和位节点处理过程中使用。不这样做,则需要2个单独的存储设备(一个存储设备存储对应信息位节点的边消息,另一个存储设备存储对应奇偶校验位节点的边消息)。
这种兼容不同类型的LDPC编码信号的自适应性使得上述各种实施例中的LDPC解码功能性都能够解码遵从DVB-S2的LDPC编码信号。
图10是根据本发明一个实施例的量度发生器功能性1000的示意图。如图所示,量度发生器(如图所示的MG)接收将为之计算量度的相关符号的I、Q值。该I、Q分量是单独分开的,并分别提供给符号量度计算器功能块(如图所示的SMC)内的I处理通道和Q处理通道。更具体地,接收的I分量(如图所示的Rx_I)提供给I处理通道,接收的Q分量(如图所示的Rx_Q)提供给Q处理通道。沿着这些各自的处理通道,确定该接收值与其对应的系数(与生成该特定符号使用的适当地调制相关)之间的差值。更具体地,在I处理通道中,从接收的I分量(即,Rx_I)中减去I系数(如图所示的I_Coefj)。类似地,在Q处理通道中,从接收的Q分量(即,Rx_Q)中减去Q系数(如图所示的Q_Coefj)。然后将每一个生成的差值进行平方(即,自己与自己相乘)。接下来将生成的这些平方差值相加,并使用方差因子(用VF表示,其值等于1/(2σ2),其中σ是标准偏差杂讯系数)进行调整。然后符号量度计算器功能块输出符号量度(如图所示的sym_metric(i)),随后将该符号量度提供给位量度计算器功能块。
将这些符号量度提供给位量度计算器功能块后,便可计算每个期望的位(bit of interest)的位量度。如图所示为计算位m的位量度。首先,使用位值m为0的所有生成的符号量度来执行min*处理。同样,也可以首先使用位值m为1的所有生成的符号量度来执行min*处理。一旦确定了每一个min*处理的结果后,接下来确定它们之间的差值。还要注意的是,可使用直接的min处理代替min*处理。现有技术中使用符号量度计算位量度的方法未采用min处理或min*处理。这是与现有技术的方法的重要区别,这也使性能相对于现有技术得到了更好的改善。
量度发生器执行的计算可用数学式表示。符号量度的计算sym_metric(i)按照下式执行:
sym_metric(i)=1/(2σ2)×[(Rx_I-I_Coefj)2+(Rx_Q-Q_Coefj)2]
这一计算在图中所示的符号量度计算器功能块(SMC)内发生。
然后,特定位m的位量度计算如下:
bit_met(bit m)=min*[all sym_metric(i)with bit m=0]-min*[all sym_metric(i)with bit m=1]
这一计算在图中所示的位量度计算器功能块(BMC)内发生。
还要注意的是,位量度计算器功能块内执行的计算也可以仅使用与min*处理相对的min处理来执行。
如上所述,在此描述的各种解码实施例都适用于解码各种不同类型的LDPC编码信号,包括其调制和/或编码率基于逐块频繁变化的LDPC编码信号。这种LDPC编码信号包括遵从DVB-S2标准的LDPC编码信号。
以下的4个图示出了不同系数的使用,这些系数用来为与不同调制(即,每一个都包括有一个群集形状和一个对应的其内群集点的映射的调制)相关的符号计算合适的量度。
图11是根据本发明一个实施例的QPSK(正交相移键控)群集1100及其对应的二进制映射和其内采用的QPSK系数的示意图。
每个群集点(constellation point)被适当标记。例如,QPSK群集图上的群集点标记如下:
0群集点00,
1群集点01,
2群集点10,
3群集点11。
图中其它群集点的标记可类似地执行,并可在图中示意性地示出。
这些群集点中的每一个都可以使用系数表示,从I、Q原点沿着二维图的I、Q轴延伸。由于该群集形状关于I、Q原点对称,因而只需两个系数来表示图中的所有群集点。因为这种对称,这两个系数可看作是相同的值,但符号相反。因而描述QPSK形状的群集内的所有4个点只需要两个不同的系数值。
更具体地,群集中每个点的笛卡尔坐标形式可描述如下:
0群集点00→笛卡尔坐标(P_1,P_1),
1群集点01→笛卡尔坐标(P_1,P_3),
2群集点10→笛卡尔坐标(P_3,P_1),
3群集点12→笛卡尔坐标(P_3,P_3)。
图12是根据本发明一个实施例的8PSK(相移键控)群集1200及其对应的二进制映射和其内使用的8PSK系数的示意图。
这种群集中的每个点也可以使用系数表示,从I、Q原点分别沿着二维图的I、Q轴延伸。该8PSK群集形状也使用4个群集点,但这4个群集点关于I、Q原点的位置比上图中QPSK群集形状内的要小。由此可见,与前述实施例的QPSK调制内的一样,也可以使用某些相同的系数来描述8PSK调制内的群集点。描述8PSK形状的群集内的所有8个点只需要4个不同的系数值。
更具体地,该群集中每个点的笛卡尔坐标可描述如下:
0群集点000→笛卡尔坐标(P_1,P_1),
1群集点001→笛卡尔坐标(P_0,P_0),
2群集点010→笛卡尔坐标(0,P_2),
3群集点011→笛卡尔坐标(P_3,P_3),
4群集点100→笛卡尔坐标(0,P_0),
5群集点101→笛卡尔坐标(P_1,P_3),
6群集点110→笛卡尔坐标(P_3,P_1),
7群集点111→笛卡尔坐标(0,P_2)。
图13是根据本发明一个实施例的16QAM群集1300及其对应的十六进制映射和其内使用的16QAM系数的示意图。
与上述的实施例类似,该群集中每个点也可以使用系数表示,从I、Q原点分别沿着二维图的I、Q轴延伸。由于该16QAM调制的群集点的对称性,因而只需4个不同的系数值便可描述该16QAM形状的群集内的所有16个系数。
更具体地,该群集内每个点的笛卡尔坐标可描述如下:
0群集点0000→笛卡尔坐标(Q_1,Q_1),
1群集点0001→笛卡尔坐标(Q_1,Q_2),
2群集点0010→笛卡尔坐标(Q_0,Q_1),
3群集点0011→笛卡尔坐标(Q_0,Q_0),
4群集点0100→笛卡尔坐标(Q_3,Q_1),
5群集点0101→笛卡尔坐标(Q_2,Q_1),
6群集点0110→笛卡尔坐标(Q_3,Q_0),
7群集点0111→笛卡尔坐标(Q_2,Q_0)。
8群集点1000→笛卡尔坐标(Q_3,Q_3),
9群集点1001→笛卡尔坐标(Q_2,Q_3),
A群集点1010→笛卡尔坐标(Q_3,Q_2),
B群集点1011→笛卡尔坐标(Q_2,Q_2),
C群集点1100→笛卡尔坐标(Q_1,Q_3),
D群集点1101→笛卡尔坐标(Q_0,Q_3),
E群集点1110→笛卡尔坐标(Q_1,Q_2),
F群集点0111→笛卡尔坐标(Q_0,Q_2)。
图14是根据本发明一个实施例的16APSK群集1400及其对应的十六进制映射和其内使用的16APSK系数的示意图。
与上述实施例类似,该群集内每个点也可以使用系数表示,从I、Q原点分别沿着二维图的I、Q轴延伸。更具体地,该群集内每个点的笛卡尔坐标可描述如下:
0群集点0000→笛卡尔坐标(A_5,A_5),
1群集点0001→笛卡尔坐标(A_5,A_7),
2群集点0010→笛卡尔坐标(A_7,A_5),
3群集点0011→笛卡尔坐标(A_7,A_7),
4群集点0100→笛卡尔坐标(A_1,A_0),
5群集点0101→笛卡尔坐标(A_1,A_2),
6群集点0110→笛卡尔坐标(A_3,A_0),
7群集点0111→笛卡尔坐标(A_3,A_2)。
8群集点1000→笛卡尔坐标(A_0,A_1),
9群集点1001→笛卡尔坐标(A_0,A_3),
A群集点1010→笛卡尔坐标(A_2,A_1),
B群集点1011→笛卡尔坐标(A_2,A_3),
C群集点1100→笛卡尔坐标(A_4,A_4),
D群集点1101→笛卡尔坐标(A_4,A_6),
E群集点1110→笛卡尔坐标(A_6,A_4),
F群集点0111→笛卡尔坐标(A_6,A_6)。
也要注意的是,这些调制的每一种(QPSK、8PSK、16QAM以及16APSK)也可用在DVB-S2标准中。
图15是根据本发明一个实施例的调制系数表的示意图。这个表示出了如何基于使用的调制选择合适的系数来计算其中相关的量度。由表可见,对于每种调制,选择不同的值用作系数。因而可有多达8个系数(例如,对于16APSK调制),4个系数(对8PSK或16QAM调制),或者少达2个系数(例如,对于QPSK调制)。如果想要服务于另一个实施例中的其它调制,则需要选择不同数量的系数。
通过使用这个表,可以非常有效的设计量度发生器计算功能性。更具体地,可使用单个设计来计算与任何调制相关的量度,只要选择合适的系数(即,适合给定的调制)用于量度的计算。
例如,当计算与具有QPSK调制的一个符号相关的量度时,分别选择Coef_1和Coef_3的值为P_1和P_3。类似地,当计算与具有8PSK调制的符号相关的量度时,Coef_0、Coef_1、Coef_2和Coef_3的值可分别选择为P_0、P_1、P_2和P_3。对于表中描述的其它调制类型,考虑到群集形状和对应该特定类型的调制的映射,可以采用类似的方式来选择系数值(例如,Coef_0至Coef_7)。通过使用这种方法,系数值可基于想要的调制进行选择,因而可以采用单个量度发生器结构来为多种调制类型执行量度计算。以下将结合附图描述这种量度发生器结构的几个实施例。
图16,图17,和图18是根据本发明几个实施例的量度发生器的结构示意图。
如图16所示的量度发生器结构1600,其功能性可分成符号量度计算器功能块(如图所示的SMC)和位量度计算器功能块(如图所示的BMC)。符号量度计算器功能块计算多个符号量度(如图所示的sym_metrics),位量度计算功能块使用这多个符号量度来计算多个位量度(如图所示的bit_metrics)。量度发生器结构1600可以是硬件,执行上述的数学计算,并具有兼容多个不同的编码率和/或调制的能力。
根据本发明的可变编码率功能性,为了支持多种编码率和/或调制,使用了多个I、Q系数,接收符号的I值(Rx_I)与多个I系数(如图所示的I_Coef_0,...以及I_Coef_7)之间的“差值”都被同时计算。类似地,接收符号的Q值(Rx_Q)与多个Q系数(如图所示的Q_Coef_0,...以及Q_Coef_7)之间的“差值”都被同时计算。在某些实施例中这些值的精度为9位。要注意的是,这些“差值”都通过使用上述群集的对称性来计算,其中仅做加法,不做减法,从而节省了硬件。
然后对每一个这种差值(通过执行加法以及基于群集形状的对称性合适选择的系数生成)进行平方运算。在某些实施例中这些平方值的精度为18位。随后对这些平方值进行舍入运算。因而,在某些实施例中这些值的精度四舍五入至9位。然后,这些舍入后的值被传送给相应的寄存器(如图所示的REG)。
在其相应的寄存器内放置预定的时间后(例如,一个时钟周期),当从总的剩余位数中选择出预定数量的有效位时,每个寄存器的输出被传送给相应的饱和功能块(如图所示的SAT)。每个饱和功能块的输出表示为I值(即,Sq_x0,Sq_x1,...,Sq_x7),以及Q值(即,Sq_y0,Sq_y1,...,Sq_y7)。某些实施例中这些值的精度是7位。然后将这些输出提供给平方输出复用器(MUX),或者平方输出MUX(如图所示的SO MUX)。
从平方输出MUX中选择值,这种选择由一个控制器(如图所示的CON)提供的调制和/或编码率支配。如上面的其它实施例中所描述的,该控制器可根据被解码的LDPC编码信号的符号的编码率和/或调制来控制LDPC解码功能性的某些功能块的操作。
在平方输出MUX中通过使用控制器提供的信号进行适当选择后,合适的项从平方输出MUX中输出,并被选择和相加。例如,项(Rx_I+I_Coef_0)^2,如图中Sq_I0out所示,与项(Rx_Q+Q_Coef_0)^2,如图中Sq_Q0 out所示,被相加。从平方输出MUX中输出的I相关输出指示出了I轴距离,将接收信号的I分量与对应基于适当编码率和/或调制的适当群集的群集点的预定I系数分开。
类似地,从平方输出MUX中输出的Q相关输出指示出了Q轴距离,将接收信号的Q分量与对应基于适当编码率和/或调制的适当群集的群集点的预定Q系数分开。
选择来自平方输出MUX的适当输出相加获得的相加值,接下来被传递给相应的寄存器(如图中REG所示),并在寄存器中停留预定的时间段(例如,一个时钟周期)。然后对对应的每个值进行方差因子缩放(如图中VF 1/(2σ2)所示)并最后进行四舍五入,得到具有理想位精度的值。σ是接收的信号的标准杂讯的标准偏差。
然后,符号量度计算器功能块(如图中sym_metrics所示)产生的符号量度从符号量度计算器功能块中输出,并提供给位量度计算器功能块。位量度计算器功能块计算相应的位量度(如图中bit_metrics所示)。对于符号内的每个位(bi),基于编码率和/或调制(由控制器提供的信号所确定和控制,如图中CON所示),位量度计算器功能块对所有bi=1的符号量度(即,sym_metric值)执行min*处理。也就是说,位量度计算器功能块为符号的每个位位置中位值为1的所有符号量度执行min*处理。类似地,位量度计算器功能块对所有bi=0的符号量度(即,sym_metric值)执行min*处理。也就是说,位量度计算器功能块为符号的每个位位置中位值为0的所有的符号量度执行min*处理。然后确定这两个单独的min*处理结果之间的差值,从而生成对应的位量度(如图中bit_metrics所示)。
可选择地,在其它的实施例中,位量度之计算器功能块可执行直接的min处理(没有对数校正因数)。这种情况下,可确定这两个单独的直接min处理结果之间的差值,从而生成对应的位量度(如图中bit_metrics所示。)
如以下描述的两个其它可能的量度发生器结构所示,还有许多其它可能的方法来实现量度发生器功能性,而不脱离本发明的范围和精神。每个这些不同的量度发生器结构都可支持变量编码率和/或调制信号。
在量度发生器结构1600中,对平方输出MUX的输出信号执行方差因子缩放。可选择地,信号因子缩放可在处理中更早阶段执行。在某些情况下,这种方法提供了更好和更有效的实现。
如图17所示的量度发生器结构1700,符号量度计算器功能块(如图中SMC所示)的运算与前述实施例中的量度发生器结构1600不同。位量度计算器功能块(如图中BMC所示)与前述实施例的量度发生器结构1600类似。与前述实施例的量度发生器结构1600类似,量度发生器结构1700从一个控制器(如图中CON所示)接收编码率和/或调制控制信号,以控制量度发生器结构1700的不同功能块的操作。
与上述量度发生器结构1600的实施例类似,为了支持多种编码率和/或调制,量度发生器结构1700使用了多个I、Q系数。接收信号的I值(Rx_I)和多个I系数(如图中I_Coef_0,...以及I_Coef_7所示)之间的差值都被同时计算。类似地,接收信号的Q值(Rx_Q)和多个Q系数(如图中Q_Coef_0,...以及Q_Coef_7所示)之间的差值都被同时计算。在某些实施例中,这些值的精度是9位。要注意的是,可通过使用上述群集的对称性来计算所有的这些“差值”,其中可仅执行加法,不执行减法,因而节省了硬件。
然后对每一个这种“差值”(通过执行加法以及基于群集形状的对称性适当选择的系数所生成)进行绝对值运算。之后,将这些值传递给相应的寄存器(如图中REG所示)。在其相应的寄存器内停留预定的时间段后(例如,一个时钟周期),接下来对每个相应寄存器的输出进行西格马因子缩放(如图中SF(0.7071/σ)所示)。西格马,σ’是接收信号的标准杂讯的标准偏差。进行西格马缩放后,继续对这些值进行舍入运算,并随后传递给寄存器(仍如图中REG所示)。在寄存器中停留预定的时间段后(例如,一个时钟周期),每个输出被传递给相应的绝对值和平方功能块。然后对相应的绝对值和平方功能块的输出进行舍入运算,然后将之传递给相应的寄存器(如图中REG所示)。每个寄存器的输出表示为I值(即,Sq_x0,Sq_x1,...Sq_x7)以及Q值(即,Sq_y0,Sq_y1,...Sq_y7)。然后将这些输出提供给平方输出复用器(MUX),或平方输出MUX(如图中SO MUX所示)。
从平方输出MUX中选择值,这种选择由一个控制器(如图所示的CON)提供的调制和/或编码率支配。如上面的其它实施例中所描述的,该控制器可根据被解码的LDPC编码信号的符号的编码率和/或调制来控制LDPC解码功能性的某些功能块的操作。
在平方输出MUX中通过使用控制器提供的信号进行适当选择后,合适的项从平方输出MUX中输出,并被选择和相加。例如,项(Rx_I+I_Coef_0)^2,如图中Sq_I0 out所示,与项(Rx_Q+Q_Coef_0)^2,如图中Sq_Q0 out所示,被相加。从平方输出MUX中输出的I相关输出指示出了I轴距离,将接收信号的I分量与对应基于适当编码率和/或调制的适当群集的群集点的预定I系数分开。
类似地,从平方输出MUX中输出的Q相关输出指示出了Q轴距离,将接收信号的Q分量与对应基于适当编码率和/或调制的适当群集的群集点的预定Q系数分开。
进行相加运算后,在从符号量度计算器功能块输出至位量度计算器功能块之前,对这些值进行相应的舍入操作。量度发生器结构1700内的位量度计算器功能块的运算与前述实施例中量度发生器结构1600中的位量度计算器功能块的运算类似。
如图18所示的量度发生器结构1800,该符号量度计算器功能块(如图8中SMC所示)与前述实施例的量度发生器结构1600以及前述实施例的量度发生器1700不同,位量度计算器功能块(如图8中BMC所示)的运算与前述实施例的量度发生器结构1600以及前述实施例的量度发生器1700类似。同样与前述实施例的量度发生器结构1600以及前述实施例的量度发生器1700类似的,量度发生器1800从一个控制器(如图8中CON所示)处接收编码率和/或调制控制信号,以控制量度发生器结构1800的不同功能块的运算。
在量度发生器结构1800的中,接收的I、Q值先进行西格马因子缩放。接收的I、Q值传递给寄存器(如图中REG所示)。在寄存器内停留预定的时间段后(例如,一个时钟周期),对这些输入I、Q值进行西格马因子缩放(如图中SF(0.7071/σ)所示)。其中西格马,σ’是接收信号的标准杂讯的标准偏差。在进行西格马因子缩放后,对这些值进行舍入运算,并接下来被传递给寄存器(如图中REG所示)。在寄存器中停留预定的时间段后(例如,一个时钟周期),接下来将这些缩放后的I、Q值传递给相应的求和块。
与上述量度发生器结构1600的实施例以及量度发生器结构1700的实施例类似,为了支持多种编码率和/或调制,量度发生器结构1800使用了多个缩放的I、Q系数。接收信号的I值(Rx_I)和多个I系数(如图中I_Coef_0,...以及I_Coef_7所示)之间的差值都被同时计算。类似地,接收信号Q值(Rx_Q)和多个Q系数(如图中Q_Coef_0,...以及Q_Coef_7所示)之间的差值都被同时计算。在某些实施例中,这些值的精度是9位。要注意的是,通过使用上述群集的对称性来计算所有的这些“差值”,其中仅需执行加法,不执行减法,因而节省了硬件。
然后对每一个这种“差值”(通过执行加法以及基于群集形状的对称性适当选择的系数所生成)进行绝对值运算。之后,将这些值传递给相应的寄存器(如图中REG所示)。在其相应的寄存器内停留预定的时间段后(例如,一个时钟周期),接下来每个相应寄存器的输出被传递给相应的绝对值和平方功能块。然后对相应的绝对值和平方功能块的输出进行舍入运算,然后将之传递给相应的寄存器(如图中REG所示)。每个寄存器的输出表示为I值(即,Sq_x0,Sq_x1,...Sq_x7)以及Q值(即,Sq_y0,Sq_y1,...Sq_y7)。然后将这些输出提供给平方输出复用器(MUX),或平方输出MUX(如图中SO MUX所示)。
从平方输出MUX中选择值,这种选择由一个控制器(如图所示的CON)提供的调制和/或编码率支配。如上面的其它实施例中所描述的,该控制器可根据被解码的LDPC编码信号的符号的编码率和/或调制来控制LDPC解码功能性的某些功能块的操作。
在平方输出MUX中通过使用控制器提供的信号进行适当选择后,合适的项从平方输出MUX中输出,并被选择和相加。例如,项(Rx_I+I_Coef_0)^2,如图中Sq_I0 out所示,与项(Rx_Q+Q_Coef_0)^2,如图中Sq_Q0 out所示,被相加。从平方输出MUX中输出的I相关输出指示出了I轴距离,将接收信号的I分量与对应基于适当编码率和/或调制的适当群集的群集点的预定I系数分开。
类似地,从平方输出MUX中输出的Q相关输出指示出了Q轴距离,将接收信号的Q分量与对应基于适当编码率和/或调制的适当群集的群集点的预定Q系数分开。
进行相加运算后,在从符号量度计算器功能块输出至位量度计算器功能块之前,对这些值进行相应的舍入操作。量度发生器结构1800内的位量度计算器功能块的运算与前述实施例中量度发生器结构1600中的位量度计算器功能块以及前述实施例中量度发生器结构1700中的位量度计算器功能块的运算类似。
如上其它实施例所述,解码LDPC编码信号时执行的迭代解码处理一般包括位节点处理和校验节点处理,二者可选择地执行也可以连续执行。位节点处理包括更新和计算与位节点相关的边消息Medgeb。在第一次迭代(在其中使用了预定值)的初始化后,使用最近更新的与校验节点相关的边消息MedgeC来执行与位节点相关的边消息Medgeb的更新与计算。
校验节点处理包括更新与计算与校验节点MedgeC相关的边消息。使用最近更新的与位节点相关的边消息Medgeb来执行与校验节点相关的边消息MedgeC的更新与计算。
在执行这些计算的过程中,硬件实现通常都在对数域(其中乘法被简化成加法,除法被简化成减法)中执行。以下将结合附图详细介绍位节点处理和校验节点处理的各个不同实施例。
图19是根据本发明一个实施例的位节点处理功能性1900的示意图。与校验节点相关的边消息MedgeC以及位量度(如图中bit_metrics所示)都被输入到位节点处理功能性1900中。与校验节点相关的边消息MedgeC还同时提供给累加器(如图中ACC所示)和FIFO(先进先出)功能块。位量度也提供给累加器,在其内位量度被提供给多路复用器(如图中累加器内的MUX所示)。在位节点处理过程中,第一次接收的与校验节点相关的边消息,如MedgeC(0),与位量度相加。之后,这次相加的和(例如,MedgeC(0)与位量度的和)与第二次接收的与校验节点相关的边消息,如,MedgeC(1),相加。在下一个时钟周期中,第二次相加的和(例如,MedgeC(0)、MedgeC(1)与位量度的和)与第三次接收的与校验节点相关的边消息,如MedgeC(2)相加。通过这种方式求和,生成总和值时可节省一个时钟周期。
两个寄存器(一个位于累加器内和一个位于累加器外)用来提供总和值,该总和值包括所有与校验节点相关的边消息MedgeC以及期望的位量度(即,∑(MedgeC)+bit_metric)。这个值,∑(MedgeC)+bit_metric,可被看作是位节点处理功能性1900内的软输出。然后将该软输出提供给最重要的位输出处理器(如图中MSB OP所示)。
然后将FIFO的输出提供给减法功能块,并从FIFO的输出(仅仅是合适顺序的与校验节点相关的边消息MedgeC)中减去软输出(由累加器提供)。减法功能块的输出结果便是更新后的与位节点相关的边消息Medgeb。该更新后的与位节点相关的边消息Medgeb包括所有与校验节点相关的边消息MedgeC(被计算的特殊边消息除外)与位量度的和。在后续的迭代解码处理过程中执行校验节点处理时,这些更新后的与位节点相关的边消息Medgeb由符号数值格式处理器(如图中SMFP所示)以符号数值格式输出,以便于min**处理。符号数值格式处理器的输出中最重要的位指示符号,剩余的位指示实际值。与位节点相关的边消息Medgeb以符号数值格式存储在存储器中。要注意的是,与校验节点相关的边消息Medgec以2的补码格式存储,以便于后续的迭代解码处理过程中的位节点处理。
如上所述,根据本发明,可采用多种可能的手段来实现校验节点处理功能性。
图20、图21、图22和图23是根据本发明几个实施例的校验节点处理功能性的示意图。
如图20所示的校验节点处理功能性2000中,通过与位节点相关的边消息Medgeb来更新与校验节点相关的边消息Medgec时,使用min**处理和min**-处理。最近更新的与位节点相关的边消息Medgeb被同时提供给min**处理功能块和FIFO(先进先出)块。随着后续的与位节点相关的边消息Medgeb提供给min**处理功能块,一个寄存器(如图中REG所示)和一个反馈通道被操作来执行所有与位节点有关的边消息Medgeb的min**处理。然后从另一个寄存器(如图中REG所示)输出的min**处理的最后结果提供给min**-处理功能块,且适当排序后的与位节点相关的边消息Medgeb也从FIFO中提供给该min**-处理功能块。min**-处理功能块的输出便是更新后的与校验节点相关的边消息Medgec。
如图21所示的校验节点处理功能性2100中,通过与位节点相关的边消息Medgeb来更新与校验节点相关的边消息Medgec时,使用了min处理和min-处理。最近更新的与位节点相关的边消息Medgeb被同时提供给min处理功能块和FIFO(先进先出)块。随着后续的与位节点相关的边消息Medgeb提供给min处理功能块,一个寄存器(如图中REG所示)和一个反馈通道被操作来执行所有与位节点有关的边消息Medgeb的min处理。然后从另一个寄存器(如图中REG所示)输出的min处理的最后结果提供给min-处理功能块,且适当排序后的与位节点相关的边消息Medgeb也从FIFO中提供给该min-处理功能块。min-处理功能块的输出便是更新后的与校验节点相关的边消息Medgec。
要注意的是,min功能块的功能性可看成是执行一种带有最小值比较处理的min*处理。
以下将详细介绍执行min处理的实施例。还要注意的是,对于每个宏块的所有预定数量的处理器仅需要一个FIFO块。也就是说,上述每个实施例包括多个支持LDPC解码功能性的宏块,这些实施例可利用校验节点处理功能性2000或校验节点处理功能性2100来实现,并且每个实施例中仅需要一个FIFO。在某些例子中,LDPC解码功能性的每个宏块中的所有20个处理器只需要一个FIFO。以下介绍的校验节点处理功能性2200和校验节点处理功能性2300也是如此。
如图22所示的校验节点处理功能性2200是实现校验节点处理功能性2000的一种可能的方式。
从更高的角度来看,校验节点处理功能性2200的功能性与校验节点处理功能性2000非常类似。图22中提供了min**处理功能块和min**-处理功能块的更多细节。min**处理功能块接收与位节点相关的边消息Medgeb作为输入,Medgeb在图中也表示为x。min**处理功能块的运算包括计算两个单独的对数校正因子,如图中ln(1+e-|+x+y|)和-ln(1+e-|x-y|)所示,以及确定两个单独的值之间的最小值(即,x和y的最小值)。确定哪个值是两个(x或y)中的最小值由多路复用器(MUX)来执行。为此,min**处理功能块计算x-y和x+y这两个单独的值。然后将这些值分别提供给其对应的块以计算其对应的对数校正值。
min**处理功能块的输出是该最小值(x或y)与两个对数校正因子的和。y值作为min**功能块的输出,反馈回给相同的min**功能块进行后续的计算。
min**-处理功能块的运算与min**处理功能块有点类似。但是,min**-处理功能块对min**处理功能块的结果(其输出示为z)以及FIFO提供的适当排序后的与位节点相关的边消息Medgeb(如x所示)进行运算。值z可视为是所有与位节点相关的边消息的min**处理结果(即,min**(all Medgeb))。
min**-处理功能块的运算包括计算两个单独的对数校正因子,如图中的ln(1+e-|z+x|)和-ln(1+e-|z-x|),以及确定两个单独值之间的最小值(即,z和x的最小值)。确定哪个值是两个(z或x)中的最小值由多路复用器(MUX)来执行。为此,min**-处理功能块计算z-x和z+x的这两个值,然后将这些值分别提供给其对应的块计算其对应的对数校正值。
从min**处理功能块和min**-处理功能块的输出的最终结果便是更新后的与校验节点相关的边消息Medgec。要注意的是,可利用LUT(查询表)来确定每个min**处理功能块和min**-处理功能块中的对数校正值,该LUT可使用一些其它类型的存储结构来实现。为此,需在每个min**处理功能块和min**-处理功能块中实现两个单独的LUT。
如图23所示的校验节点处理功能性2300是实现校验节点处理功能性2100的一种可能的方式。该图中使用min处理和min-处理通过与位节点相关的边消息Medgeb来更新与校验节点相关的边消息Medgec。
从更高的角度来看,校验节点处理功能性2300的功能与校验节点处理功能性2100非常类似。图23中提供了min处理功能块和min-处理功能块的更多细节。
在min处理功能块内,接收的与位节点相关的边消息Medgeb立即进行绝对值确定运算并转换成符号数值格式,使得所有输入的最小值更容易找到。这个操作在数值比较功能块(如MAG COM所示)内进行。所有与位节点相关的边消息Medgeb的最小值(如min所示)和最大值(如max所示)。所有与位节点相关的边消息Medgeb的最大值从数值比较功能块中输出,然后传递给min处理功能块内的min*处理功能块。min处理功能块的最终输出便是所有与位节点相关的边消息Medgeb的min*处理结果(如Ms_all所示)以及除最小输入值外的所有与位节点相关的边消息Medgeb的min*处理结果(如Ms min所示)。
min-处理功能块接收每个min*处理结果(Ms_all和Ms_min)。min-处理功能块也从FIFO接收x的绝对值,即|x |。min-处理功能块内的min*-处理功能块对接收的x的绝对值即|x|以及min处理功能块提供的所有与位节点相关的边消息Medgeb的min*处理结果(如Ms_all所示)进行运算。min-处理功能块内的min*-处理功能块的结果提供给min-处理功能块内的MUX作为一个输入,除最小输入值外的所有与位节点相关的边消息Medgeb的min*处理结果(如Ms_min所示)作为另一个输入提供给min-处理功能块内的MUX。MUX的选择输出表示为min-处理功能块内的X。两个单独的赋值用来从X值生成Y和其后的Z。
S是FIFO提供的MSB(最高有效位)。基于上述的值Y和Z的规则和赋值,S值可帮助确定更新的与校验节点相关的边消息Medgec的最终值。
上述的各种执行校验节点处理以实现校验节点处理功能性的实施例都可以在包括有可用来解码LDPC编码信号的LDPC解码功能性的通信设备内实现。
以下的实施例将介绍几种可用于执行校验节点处理的计算的可能的非常有效的方法。某些实施例示出了min*处理,这些设计经过稍微的修改便可适用于max*处理。这些微小的修改是为了与硬件相一致,以执行想要类型的处理所必要的计算。上面已经介绍了几种进行校验节点处理时采用的处理。例如,min*处理的不同实施例可很容易地用来执行max*处理。类似地,min*-处理的不同实施例也可很容易地用来执行max*-处理。
图24是根据本发明一个实施例的min*处理功能性2400的示意图。图中的min*处理对两个输入即x和y进行运算。x和y之间的差值z被确定(即z=x-y)。每个输入x和y还提供给MUX。x和y之间的差值MSB,即z,被用来选择输入x或y中哪一个是最小值(即,min(x,y))。
同样,确定的x和y之间的差值,即z,也提供给对数校正因子计算功能块计算-ln(l+e-|x-y|);该对数校正值表示为log_out。最终的min*处理结果为x或y中的最小值与该对数校正值(即,log_out)的和。
图25是根据本发明一个实施例的min*对数表的示意图。如上其它实施例所述,LUT(查询表)可用来基于z的值快速提供预定(或预先计算)的值。该表可基于x和y之间的差值即z的不同值提供对数校正因子、log_out(二进制),还可以提供项-ln(1+e-|x-y|)的实际值以及该项的二进制赋值(log_out)。由此可见,当x和y之间的差值z相对大于一个特定的阈值(即,相对较大的正值数字)或相对小于一个特定的阈值(即,相对较大的负值数字)时,则log_out的值饱和并被设为000。本实施例中的min*对数表中的二进制log_out值的精度为3位,当然也可以采用其它的精度,而不脱离本发明的范围和精神。表中有一个log_out的增益区,该区中的值以z的函数发生变化。例如,当z从大约+1.25变化至-1.25时,log_out的值实际上以z的函数发生改变。但是,当z大于+1.25时,log_out的值饱和。同样,当z的值小于-1.25时,log_out的值也饱和。
由于对数校正值的这种特性,可以更有效、更快地实现min*处理,用于校验节点处理过程中。类似地,各种值可预定(或预先计算)并存储在使用不同类型的存储器来实现的LUT中,以在使用LDPC解码功能性的通信设备中提供更快的计算和处理,用于校验节点处理中的其它计算也从中受益。
图26是根据本发明另一个实施例的min*处理功能性2600的示意图。图26所示的功能性也能执行min*处理,但是采用了比前述实施例更快的方式。在某些方面,这个实施例与上面描述的实施例类似。但是,图26中采用了两个单独且同时运算的对数校正因子计算功能块。
该图中的min*处理也对两个输入即x和y进行运算。x和y之间的差值z被确定(即z=x-y)。每个输入x和y还提供给MUX。y的值是两个其它值的和,即前次迭代中x或y的最小值(如min(x,y)k-1所示)与前次迭代中的对数校正因子(log_outk-1)的和。x和y之间的差值MSB,即z,被用来选择输入x或y中哪一个是本次迭代的最小值(即,min(x,y)k)。
同样,确定的x和y之间的差值,即z,也分别提供给两个单独的对数校正因子计算功能块计算-ln(1+e-|z|)和-ln(1+e+|z|);这两个单独的对数校正因子计算功能块的计算结果值被提供给另一个MUX。x与y之间的差值MSB,即z,被用来选择这两个单独的对数校正因子计算功能块输出的值中哪一个将被用作本次迭代的实际对数校正值。最终选择的本次迭代的对数校正值表示为log_outk。最后min*处理的结果被看作是x或y中的最小值(即,min(x,y)k)与对数校正值(即,log_outk)的和。但是,在这个实施例中,这两个值保持分开,便于执行后续的计算步骤。如果需要的话,这两个值可选择性地加在一起。
图27是根据本发明一个实施例的min*-处理功能性2700的示意图。该图中的功能性与min*处理功能性2400有些类似。
图中的min*-处理对两个输入即x和y进行运算。x和y之间的差值z被确定(即z=x-y)。每个输入x和y还提供给MUX。x和y之间的差值MSB,即z,被用来选择输入x或y中哪一个是最小值(即,min(x,y))。
同样,确定的x和y之间的差值,即z,也提供给对数校正因子计算功能块计算-ln(1-e-|x-y|);该对数校正值表示为log_out。最终的min*-处理结果为x或y中的最小值与该对数校正值(即,log_out)的和。
图28是根据本发明一个实施例的min*-对数表的示意图。如上其它实施例所述,LUT(查询表)可用来基于z的值快速提供预定(或预先计算)的值。该表可基于x和y之间的差值即z的不同值提供对数校正因子、log_out(二进制),还可以提供项-ln(1-e-|x-y|)的实际值以及该项的二进制赋值(log_out)。由此可见,当x和y之间的差值z相对大于一个特定的阈值(即,相对较大的正值数字)或相对小于一个特定的阈值(即,相对较大的负值数字)时,则log_out的值饱和并被设为00000。本实施例中的min*对数表中的二进制log_out值的精度为5位,当然也可以采用其它的精度,而不脱离本发明的范围和精神。表中有一个log_out的增益区,该区中的值以z的函数发生变化。例如,当z从大约+1.5变化至-1.5时,log_out的值实际上以z的函数发生改变。但是,当z大于+1.5时,log_out的值饱和。同样,当z的值小于-1.5时,log_out的值也饱和。
关于min*-处理中log_out的值,当z=0时,则可使用log_out的预定值(如二进制01000所示,并用星号*标识)。这是由于如果对数字0取自然对数(即,ln(0))时将产生非法值。因此,这种情况下将使用预定的较大值估计,如min*-对数表中所示。
由于对数校正值的这种特性,可以更有效、更快地实现min*-处理,用于校验节点处理过程中。类似地,各种值可预定(或预先计算)并存储在使用不同类型的存储器来实现的LUT中,以在使用LDPC解码功能性的通信设备中提供更快的计算和处理,用于校验节点处理中的其它计算也从中受益。
图29和图30是根据本发明实施例的min*-处理功能性的的示意图。
如图29所示的min*-处理功能性2900,与min*处理功能性2600类似。图29所示的功能性也能执行min*-处理,但是采用了比前述实施例更快的方式。在某些方面,这个实施例与上面描述的执行min*-处理的实施例类似。但是,本实施例采用了两个单独且同时运算的对数校正因子计算功能块。
该图中的min*-处理也对两个输入即x和y进行运算。x和y之间的差值z被确定(即z=x-y)。每个输入x和y还提供给MUX。y的值是两个其它值的和,即前次迭代中x或y的最小值(如min(x,y)k-1所示)与前次迭代中的对数校正因子(log_outk-1)的和。x和y之间的差值MSB,即z,被用来选择输入x或y中哪一个是本次迭代的最小值(即,min(x,y)k)。
同样,确定的x和y之间的差值,即z,也分别提供给两个单独的对数校正因子计算功能块计算-ln(1-e-|z|)和-ln(1-e+|z|);这两个单独的对数校正因子计算功能块的计算结果值被提供给另一个MUX。x与y之间的差值MSB,即z,被用来选择这两个单独的对数校正因子计算功能块输出的值中哪一个将被用作本次迭代的实际对数校正值。最终选择的本次迭代的对数校正值表示为log_outk。最后min*-处理的结果被看作是x或y中的最小值(即,min(x,y)k)与对数校正值(即,log_outk)的和。但是,在这个实施例中,这两个值保持分开,便于执行后续的计算步骤。
如图30所示的min*-处理功能性3000与min*-处理功能性2900非常类似,除了接收x和y的值,从而y是前次迭代中x或y的最小值(如min(x,y)k-1所示)与前次迭代中的对数校正因子(log_outk-1)的和的合并项,也就是说,y以y=min(x,y)k-1+log_outk-1的形式接收。
上述的各个不同实施例中的位数精度(bit degree precision)可由设计者采用和选择。虽然某些实施例中提供了位数精度,但是很明显还可以采用其他位数精度,而不脱离本发明的范围和精神。
图31是根据本发明一个实施例中校正子计算功能性3100的示意图。对于执行LDPC解码的各种不同方法来说,将解码位的最近估计值提供给部分校正子校验功能块(partial syndrome check functional block)(如PSC所示),以确定解码位的奇偶校验。该解码位的最近估计值被传递给XOR(OR除外)逻辑门,并随后传递给两个顺序连接的寄存器(如REG所示)。第一个寄存器的输出被反馈给XOR逻辑门。然后,将确定的奇偶校验传递给后续的功能块,以确定是否所有的校正子(即,部分校正子校验功能块输出的所有奇偶校验)都等于零。当所有的校正子实际上都等于零时,则通过该解码位,且LDPC解码功能性使用该解码位的最近估计值作为该位的最佳估计值。
图32是根据本发明一个实施例的执行LDPC解码方法3200的流程图。在方框3220中,接收区块1的I、Q值(例如,Rx/Ry)并生成区块1的位量度。该方法允许并行和同时处理接收的第一区块的I、Q值,同时执行第一区块的位量度计算。
然后,在方框3230中,接收区块2的I、Q值(例如,Rx/Ry),并生成区块2的位量度。此外,如方框3230中所示,该方法同时包括迭代解码区块1。这时,便能在迭代解码前一接收区块(例如,区块1)的同时并行和同时处理一个区块(例如,区块2)的接收和量度计算。
然后,在方框3240中,该方法包括接收区块3的I、Q值(例如,Rx/Ry),并生成区块3的位量度。此外,如方框3240中所示,该方法同时包括迭代解码区块2。与方框3230中所示的操作一样,在迭代解码前一接收区块(例如,区块2)的同时并行和同时处理一个区块(例如,区块3)的接收和量度计算。
图33是根据本发明一个实施例的迭代LDPC解码方法3300的流程图。在方框3310中,该方法包括使用与校验节点相关的边消息Medgec执行位节点处理,进行初始化,设置为预定的值。与校验节点相关的边消息Medgec在某些实施例中可设置为0值。
接下来,执行迭代解码处理操作。在迭代#13320中,该方法执行校验节点处理和校正子计算,如方框3322所示。在迭代#13320中,该方法还执行位节点处理,如方框3324所示。
在迭代#23330中,该方法执行校验节点处理和校正子计算,如方框3332所示。在迭代#23330中,该方法还执行位节点处理,如方框3334所示。
本发明可执行各种次数的解码迭代,而不脱离本发明的范围和精神。图33中用省略号表示(即...)。
在最后的迭代3340中,该方法执行校验节点处理和校正子计算,如方框3342所示。在最后的迭代3340中,如果校正子通过(或者达到解码迭代的最大次数),该方法还执行位节点处理并输出解码数据,如方框3344所示。
要注意的是,以上介绍的方法还可以在各种合适的系统和/或设备设计(通信系统、通信发送机、通信接收机、通信收发机和/或其内的功能性)中实现,而不脱离本发明的范围和精神。
此外,还要注意的是,以上各个实施例中介绍的各种功能性、系统和/或设备设计和方法都可以执行各种对数域内的计算(例如,log域),从而可使用加法来执行乘法运算,使用减法来执行除法运算。
根据上述结合附图和实施例对本发明的详细介绍,很明显还可以对本发明作出其他修改和变更而不脱离本发明的精神和范围。