CN112332857A - 一种用于ldpc码的循环移位网络系统及循环移位方法 - Google Patents
一种用于ldpc码的循环移位网络系统及循环移位方法 Download PDFInfo
- Publication number
- CN112332857A CN112332857A CN202011144970.0A CN202011144970A CN112332857A CN 112332857 A CN112332857 A CN 112332857A CN 202011144970 A CN202011144970 A CN 202011144970A CN 112332857 A CN112332857 A CN 112332857A
- Authority
- CN
- China
- Prior art keywords
- bit
- shift
- shifted
- data
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Complex Calculations (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明提供一种用于LDPC码的循环移位网络系统,包括:数据输入模块,用于提供384比特的输入序列;配置模块,用于根据LDPC的右移参数以及扩展因子配置右移模块和左移模块的右移值和左移值;右移模块,用于将所述输入序列的数据按照所配置的右移值进行右移,得到右移后的384比特右移结果;左移模块,用于将所述输入序列的数据按照所配置的左移值进行左移,得到左移后的384比特左移结果;合并信号计算模块,用于将所述左移模块的左移值映射为一个384比特的合并信号;数据合并模块,用于根据所述合并信号,将右移后的384比特右移结果和左移后的384比特左移结果进行合并,得到384比特循环移位结果。
Description
技术领域
本发明涉及无线通信领域,具体来说涉及无线通信信道编码领域,更具体地说,涉及一种LDPC码在编码器和译码器中循环移位网络的设计,进一步来说,涉及一种用于LDPC码的循环移位网络系统及循环移位方法。
背景技术
低密度奇偶校验码(low density parity check,LDPC),是由Robe rt Gallager在1963年提出的,是一种具有稀疏校验矩阵的分组码,其性能可以逼近Shannon极限,并且其算法复杂度相对较低,在硬件实现上也比较容易,被广泛应用在无限通信领域。目前,LDPC码已被加入到多种无线通信协议的标准中,在3GPP TS 38.212协议中规定了物理上行共享信道(Physical uplink shared channel,PUSCH)采用LDPC编码方式。
LDPC编码的过程如下:
1)输入比特序列c0,c1,c2,c3,...,cK-1。其中,K为编码前的位数。
其中,N为编码后的数据长度;
Zc表示扩展因子,其值如表1所示;
H矩阵已知,其计算过程如下:
1)H矩阵有两种基矩阵Hbg1和Hbg2,基矩阵由0和1元素组成,其中Hbg1为46行68列矩阵,Hbg2为42行52列矩阵;
2)对Zc行Zc列的单位阵I循环右移Pi,j位,得到置换矩阵I(Pi,j),其中i表示基矩阵的行索引,j表示基矩阵的列索引,Pi,j值可根据协议查表计算得出;
3)用置换矩阵I(Pi,j)替换基矩阵中的1元素,用Zc行Zc列的零矩阵替换基矩阵中的0元素。
表1 Zc值的集合
Z<sub>c</sub>值的集合 |
{2,4,8,16,32,64,128,256} |
{3,6,12,24,48,96,192,384} |
{5,10,20,40,80,160,320} |
{7,14,28,56,112,224} |
{9,18,36,72,144,288} |
{11,22,44,88,176,352} |
{13,26,52,104,208} |
{15,30,60,120,240} |
在LDPC编码过程中需要对单位阵I循环右移Pi,j位,其在硬件设计中,即对Zc比特的输入序列进行循环右移Pi,j位,然后再对其进行计算。由于Zc的值有多种,共计有51种,并且Zc的值从2到384,有着较大的差距,因此对序列循环移位的边界很难控制。
在LDPC译码过程中,也用到了和编码一样的循环移位网络。
目前,循环移位网络的硬件设计有很多采用Banyan网络的设计方法。如图1所示,是一个12*12的Banyan网络的示意图,其中,循环网络的大小Zc值为10,右移值Pi,j为8,即左移值为2。由于置换网络的大小为12,而Zc的值为10,会有2个空比特,并且空比特的位置无法直接判断,因此需要两个网络进行计算,最后再将两个网络的结果通过mux二选一输出。第一个网络的移位值为左移值Zc-Pi,j,第二个网络的移位值为12-Pi,j。每个网络共有3级,每级有6个路由开关,来控制数据是顺序输出或者交叉输出,并且每级路由开关的控制都与上一级有关。
Banyan网络采用2个网络的原因是,当Zc小于移位网络的大小时,在输出的比特序列中会有空比特,并且随着移位值的改变,空比特的位置也会发生变化,所以一个网络无法直接输出正确的结果,需要2个网络来合并选择输出,低位有效,高位为空比特的位置。
在LDPC编译码器的循环移位网络中,其最大为384bit,因此会有8级路由开关和1级mux,前7级每级都有192个2×2开关,第8级有128个3*3开关,最后1级mux由192个二选一单元组成。在每级开关的计算过程中,前6级涉及求余和除2的计算,第7级和第8级分别对6、3求余,最后1级将左移值映射为二选一的使能信号。在Banyan网络的硬件设计中,将网络线连接好,通过计算开关控制信号,控制数据的流向,最后2个网络合并输出,前6级的开关计算信号,与上一级有依赖关系,最后3级没有依赖关系,数据流是从第一级开始流向最后一级,共9级再进行输出。在LDPC编/译码器中Banyan网络可以实现的并行度如表2所示,Zc的大小灵活可配置,当Zc值较小时,会有很高的并行度,如表2所示,不同的并行度以及对应的不同置换网络大小与Zc值的关系。
表2 Banyan网络的并行度
并行度 | 置换网络大小 | LDPC中Z<sub>c</sub>值大小 |
128 | 3 | 2,3 |
64 | 6 | 4,5,6 |
32 | 12 | 7,8,9,10,11,12 |
16 | 24 | 13,14,15,16,18,20,22,24 |
8 | 48 | 26,28,30,32,36,40,44,48 |
4 | 96 | 52,56,60,64,72,80,88,96 |
2 | 192 | 104,112,120,128,144,160,176,192 |
1 | 384 | 208,224,240,256,288,320,352,384 |
从上述Banyan网络的循环移位网络硬件设计描述中可以发现,采用Banyan网络的循环移位结构会存在以下几个问题:
1)由于Banyan网络共有9级,并且每级的开关控制信号之间会有依赖关系,因此会有着很长的关键路径,导致循环移位网络可以支持的主频就会很低,LDPC编/译码器的主频也会很低;
2)在计算第7级和第8级的开关控制信号时,需要对左移值进行模6和模3运算,而模6和模3的计算过程又是一条很长的关键路径,导致整个网络的关键路径变长;
3)在计算每级开关的控制信号过程中会消耗较大的硬件资源。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新的一种关键路径短、硬件资源消耗少且可灵活配置Zc大小并具有一定并行度的循环移位网络及循环移位方法。
根据本发明的第一方面,提供一种用于LDPC码的循环移位网络系统,包括:数据输入模块,用于提供384比特的输入序列;配置模块,用于根据LDPC的右移参数以及扩展因子配置右移模块和左移模块的右移值和左移值;右移模块,用于将所述输入序列的数据按照所配置的右移值进行右移,得到右移后的384比特右移结果;左移模块,用于将所述输入序列的数据按照所配置的左移值进行左移,得到左移后的384比特左移结果;合并信号计算模块,用于将所述左移模块的左移值映射为一个384比特的合并信号;数据合并模块,用于根据所述合并信号,将右移后的384比特右移结果和左移后的384比特左移结果进行合并,得到384比特循环移位结果;数据输出模块,用于将384比特循环移位结果输出。
其中,所述数据输入模块将输入序列从低位到高位等间隔分割为8个48比特的数据。
所述右移模块包括8个从低位到高位级联的右移子模块,每个右移子模块被配置有一个独立的9比特右移值,按照输入序列从低位到高位的级联顺序,每个右移子模块用于对一个48比特的数据进行右移操作得到一个右移后的48比特数据,所有右移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特右移结果;所述每个右移子模块被配置为按照如下方式对48比特数据进行9级迭代右移:从9比特右移值的低位往高位开始进行迭代右移,每一次右移在上一次右移的基础上进行右移;其中,在右移值为1的比特位,将上一次的右移结果往右移该比特位二进制位权值所限定的位数;在右移值为0的比特位,保持上一次的右移结果不变。优选的,所述8个从低位到高位级联的右移子模块的每一级迭代右移同时进行;其中,高位的右移子模块对应的48比特数据右移后移出的低位比特数据进入级联的下一个低位右移子模块对应的48比特数据对应比特位数的高位,最高位的右移子模块对应的48比特数据按照其移出的比特位数从最高位开始补0。
所述左移模块包括8个从低位到高位级联的左移子模块,每个左移子模块被配置有一个独立的9比特左移值,按照输入序列从低位到高位的级联顺序,每个左移子模块用于对一个48比特的数据进行左移操作得到一个左移后的48比特数据,所有左移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特左移结果;且所述每个左移子模块被配置为按照如下方式对48比特数据进行9级迭代左移:从9比特左移值的低位往高位开始进行迭代左移,每一次左移在上一次左移的基础上进行左移;其中,在左移值为1的比特位,将上一次的左移结果往左移动该比特位二进制位权值所限定的位数;在左移值为0的比特位,保持上一次的左移结果不变。优选的,所述8个从低位到高位级联的左移子模块的每一级迭代左移同时进行,同一个48比特数据的左移和右移同时进行;其中,低位的左移子模块对应的48比特数据左移后移出的高位比特数据进入级联的上一个高位左移子模块对应的48比特数据对应比特位数的低位,最低位的左移子模块对应的48比特数据按照其移出的比特位数从最低位开始补0。
所述合并信号计算模块包括8个合并信号计算子模块,每一个合并信号计算子模块将一个左移子模块的左移值映射为一个48比特的合并信号,所有合并信号计算子模块映射得到的48比特的合并信号组成384比特的合并信号;其中,每一个48比特的合并信号中,将其对应左移值对应的十进制数据所限定位数的低位映射为1,其他高位为0。
所述数据合并模块被配置为按照如下方式将右移后的384比特右移结果和左移后的384比特左移结果进行合并:合并信号为1的比特位,选择384比特右移结果中的对应比特位作为该比特位的合并结果;合并信号为0的比特位,选择384比特左移结果中的对应比特位作为该比特位的合并结果。
根据本发明的第二方面,提供一种用于LDPC的循环移位网络系统的循环移位方法,用于将任意384比特输入序列按照LDPC的右移参数以及扩展因子完成循环移位,包括如下步骤:S1、将384比特输入序列从低位到高位等间隔分割为8个48比特的数据;S2、根据LDPC的右移参数以及扩展因子配置每一个48比特数据对应的左移值和右移值,其中,每一个左移值或右移值均表示为一个9比特数据;S3、按照配置的左移值和右移值,将每一个48比特数据进行左移和右移,所有左移后的48比特数据按照输入序列的从低位到高位的顺序组成左移后的384比特左移结果,所有右移后的48比特数据按照输入序列的从低位到高位的顺序组成右移后的384比特右移结果;S4、将每一个左移值映射为一个48比特的合并信号,所有48比特的合并信号按照其对应48比特数据在输入序列中的从低位到高位的顺序组成384比特的合并信号;S5、将左移后的384比特左移结果和右移后的384比特右移结果按照步骤S4中的384比特的合并信号进行合并,得到384比特循环移位结果。
其中,在所述每一个48比特的合并信号中,将其对应左移值中值为1的所有比特位的二进制位权值之和所限定位数的低位映射为1,其他高位为0。
所述步骤S5中,合并信号为1的比特位,选择384比特右移结果中的对应比特位作为该比特位的合并结果;合并信号为0的比特位,选择384比特左移结果中的对应比特位作为该比特位的合并结果。
与现有技术相比,本发明的优点在于:本发明的每级移位运算,只需要根据其移位值来判断是否需要移位即可,并且移位值保持不变,需要移位的比特数也是确定的,因此本发明不仅关键路径短、支持的主频高,还会降低硬件资源的消耗,并且当Zc较小时也支持并行计算,满足通量要求。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1为现有技术下Banyan循环网络的数据流转示意图;
图2为根据本发明实施例的数据循环移位示例示意图;
图3为根据本发明实施例的循环移位网络系统示意图;
图4为根据本发明实施例的LDPC编译码器循环移位硬件结构及数据流转示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
发明人在进行循环移位网络设计研究发现,为了达到较好的效果,最好可以保证循环移位可以在一个时钟周期内完成,并且支持的主频要达到1GHz,为了达到该目的,发明人设计了一种关键路径短、硬件资源消耗少且可灵活配置Zc大小并具有一定并行度的循环移位网络。
首先介绍一下本发明中循环移位的基本原理。
以并行度为1的循环移位网络为例,循环移位可分割为以下4个计算过程:
1)输入数据右移Pi,j位;
2)输入数据左移Zc-Pi,j位;
3)计算合并控制信号;
4)按照合并控制信号把右移和左移后的数据进行合并输出。
根据本发明的一个示例,以Zc=5、输入序列为{11001}、右移值Pi,j=2、1并行度时循环移位的原理过程如图2所示,计算过程为:将输入序列{11001}右移2bit数据,输入序列由{11001}变为{00110};将输入序列{11001}左移3bit,输入序列由{11001}变为{01000};计算合并控制信号,将左移值Zc-Pi,j=3映射为低3位为1高位为0的5比特合并控制信号{00111},最后根据合并控制信号将左移和右移后的序列按比特二选一输出,若合并控制信号为1,则选择右移后的数据,若为0则选择左移后的数据,将{00110}和{01000}按比特二选一,合并为序列{01110}进行输出,{01110}即为输入序列{11001}循环移位后的结果。
为了更好的理解本发明,下面结合附图和具体的实施例来详细说明本发明。
根据本发明的一个实施例,本发明提供一种用于LDPC码的循环移位网络系统,将LDPC编/译码器中的循环移位网络按照该系统的结构进行硬件设计,使得循环移位过程在一个时钟周期内完成,并且主频高。如图3所示,本发明的一种用于LPDC码的循环移位网络系统,包括:数据输入模块、配置模块、右移模块、左移模块、合并信号计算模块、数据合并模块、数据输出模块。
其中,所示数据输入模块用于输入384比特的输入序列,并将输入序列从低位到高位等间隔分割为8个48比特的数据。
所述配置模块用于根据LDPC的右移参数和扩展因子配置右移模块和左移模块的右移值和左移值。
所述右移模块用于将所述输入序列的数据按照右移值进行右移,得到右移后的384比特右移结果,且所述右移模块包括8个从低位到高位级联的右移子模块,分别表示为右移子模块0、右移子模块1、…右移子模块7,每个右移子模块被配置有一个独立的9比特右移值,按照输入序列从低位到高位的级联顺序,每个右移子模块用于对一个48比特的数据进行右移操作得到一个右移后的48比特数据,所有右移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特右移结果;所述每个右移子模块被配置为按照如下方式对48比特数据进行9级迭代右移:从9比特右移值的低位往高位开始进行迭代右移,每一次右移在上一次右移的基础上进行右移,其中,在右移值为1的比特位,将上一次的右移结果往右移该比特位二进制位权值所限定的位数;在右移值为0的比特位,保持上一次的右移结果不变。需要说明的是,所述8个从低位到高位级联的右移子模块的每一级迭代右移同时进行;其中,高位的右移子模块对应的48比特数据右移后移出的低位比特数据进入级联的下一个低位右移子模块对应的48比特数据对应比特位数的高位,最高位的右移子模块对应的48比特数据按照其移出的比特位数从最高位开始补0。
所述左移模块用于将所述输入序列的数据按照左移值进行右移,得到左移后的384比特左移结果,且所述左移模块包括8个从低位到高位级联的左移子模块,分别表示为左移子模块0、左移子模块1、…左移子模块7,每个左移子模块被配置有一个独立的9比特左移值,按照输入序列从低位到高位的级联顺序,每个左移子模块用于对一个48比特的数据进行左移操作得到一个左移后的48比特数据,所有左移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特左移结果;所述每个左移子模块被配置为按照如下方式对48比特数据进行9级迭代左移:从9比特左移值的低位往高位开始进行迭代左移,每一次左移在上一次左移的基础上进行左移;其中,在左移值为1的比特位,将上一次的左移结果往左移动该比特位二进制位权值所限定的位数;在左移值为0的比特位,保持上一次的左移结果不变。需要说明的是,所述8个从低位到高位级联的左移子模块的每一级迭代左移同时进行,同一个48比特数据的左移和右移同时进行;其中,低位的左移子模块对应的48比特数据左移后移出的高位比特数据进入级联的上一个高位左移子模块对应的48比特数据对应比特位数的低位,最低位的左移子模块对应的48比特数据按照其移出的比特位数从最低位开始补0。
所述合并信号计算模块用于将所述左移模块的左移值映射为一个384比特的合并信号,且所述合并信号计算模块包括8个从低位到高位级联的合并信号计算子模块,分别表示为合并信号计算子模块0、合并信号计算子模块1、…合并信号计算子模块7,每一个合并信号计算子模块将一个左移子模块的左移值映射为一个48比特的合并信号,所有合并信号计算子模块映射得到的48比特的合并信号组成384比特的合并信号;其中,每一个48比特的合并信号中,将其对应左移值中值为1的所有比特位的二进制位权值之和所限定位数的的低位映射为1,其他高位为0。
所述数据合并模块用于根据所述合并信号,将右移后的384比特右移结果和左移后的384比特左移结果进行合并,得到384比特循环移位结果;合并信号为1的比特位,选择384比特右移结果中的对应比特位作为该比特位的合并结果;合并信号为0的比特位,选择384比特左移结果中的对应比特位作为该比特位的合并结果。
LDPC编/译码器中Zc值最大为384,移位值最大为383,因此移位值是一个9比特的值。在LDPC编/译码器的硬件设计中,将循环移位网络按照本发明上述实施例的方式进行硬件设计,选用9级移位操作,每级移位操作包含左移和右移,并且同时进行。具体来说,右移操作包括:第一级右移操作,根据9比特右移值的第一位(最低位)判断,若右移值的第一位为1,则该右移子模块对应的48比特数据右移1bit数据,最高位的48bit数据最高位补0,其余7个48bit数据的最高位来自前面48bit的最低位,若右移值的第一位为0,则保持原值不变;第二级右移操作,根据右移值的第二位判断,若为右移值的第二位为1,则在上次移位基础上再右移2比特数据,最高位的48bit数据最高位和次高位补0,其余7个48bit数据的最高位和次高位来自前面48bit的最低位和次低位,若为0,则保持不变;第三级移位操作根据右移值的第三位判断,若为1,则上次移位基础上再移4比特,最高位的48bit数据最高位开始的四个比特补0,其余7个48比特数据的最高位开始的4个比特数据来自前面48比特数据最后4位,若为0,则保持不变;依次计算,直到第九级右移操作,根据右移值的第九位(最高位)判断,若为1,则在第八级移位基础上再右移256比特,从最高位开始的5个48比特数据以及第6个48比特数据的前16个比特位补0,其余数据来自前面48比特数据的低位,若为0,则保持不变。左移操作与右移操作正好相反,具体包括:第一级左移操作,根据左移值的第一位(最低位)判断,若左移值的第一位为1,则左移1bit数据,最低位的48bit数据,最低位补0,其余7个48bit数据的最低位来自前面48bit的最高位,若左移值的第一位为0,则保持原值不变;第二级左移操作,根据左移值的第二位判断,若为左移值的第二位为1,则在上次移位基础上再左移2比特数据,若为0,则保持不变;第三级移位操作根据左移值的第三位判断,若为1,则上次移位基础上再移4比特,若为0,则保持不变;依次计算,直到第九级左移操作,根据左移值的第九位(最高位)判断,若为1,则在第八级移位基础上再左移256比特,若为0,则保持不变。
左移和右移后的序列最后进行合并输出,即384bit的2选1,2选1的控制信号由8个计算合并信号模块完成。例如,并行度为1时,8个左移值都为17(十进制),则合并信号计算模块0将会把左移值映射为48bit合并信号,其中低17位为1,高31位为0,其余7个计算合并信号模块,全都映射为48比特0,再将这8个48比特的合并信号,级联为384bit的合并控制信号,送入二选一模块。若并行度为8时,8个左移值分别有相应的值,可以是不相同的,假设8个左移值分别为1、2、3、4、5、6、7、8,则分别映射为低1、2、3、4、5、6、7、8位为1,48比特的其他位为0的合并控制信号。
在8个合并信号计算子模块中,其计算方式与并行度有关,如表3所示,例如并行度为1时,模块0的判断左移值区间为0~48,若左移值为大于等于48,则输出48比特1,若左移值小于48,则从低位开始输出相应比特的1,高位为0,合并信号计算子模块1判断左移值区间为49~96,若左移值大于等于96,则输出48比特1,若左移值小于96大于48,则从低位开始输出左移值减48比特的1,高位为0;若并行度为8,则合并信号计算子模块根据左移值从低位开始输出相应的1,高位为0,如模块0的左移值为11,则模块0输出为{37'b0,11'b1},此处的37'b0表示37比特的0,11'b1表示11比特的1,后续实施例均采用该种表示。
表3 8个计算合并信号模块判断左移值区间与并行度的关系
数据合并模块实现384bit的2选1功能,若控制信号为1,则选择右移后的序列,若为0,则选择左移后的序列,最终将左移和右移后的序列合并为384bit数据进行输出。
在上述循环移位网络系统的移位过程中,共需要9次移位操作,计算控制是否需要移位的信号,只需要通过移位值判断即可,不需要求余等计算过程,非常简单,因此在很大程度上缩短了关键路径,使得循环网络的主频可以大幅度提升,且使用的硬件资源较少。另外,Zc是可配置的,根据LDPC编/译码器的通量要求设计相应的并行度,本发明并行度如表4所示。
表4本发明并行度
根据本发明的一个实施例,如图4所示,在LDPC编/译码器的硬件设计中,按照移位值,来决定移位的数量。LDPC编/译码器中Zc值最大为384,移位值最大为383,因此移位值是一个9比特的值。在移位过程中,将384bit输入数据按照从低位到高位分割为8个48bit的数据,分别表示为48bit0、48bit1、…48bit7;每个48bit数据分别有相对应的移位值,左移值从低位到高位分别表示为sftl_c_0[8:0]、sftl_c_1[8:0]、sftl_c_2[8:0]、sftl_c_3[8:0]、sftl_c_4[8:0]、sftl_c_5[8:0]、sftl_c_6[8:0]、sftl_c_7[8:0],分别对应于左移子模块0、左移子模块1、…左移子模块7,每个左移值从低到高包含9比特位,例如:sftl_c_0[8]表示最低为48比特对应9比特左移值的最高位,左移后的8个48比特数据级联为384比特左移结果(Shift left data);右移值分别为sftr_c_0[8:0]、sftr_c_1[8:0]、sftr_c_2[8:0]、sftr_c_3[8:0]、sftr_c_4[8:0]、sftr_c_5[8:0]、sftr_c_6[8:0]、sftr_c_7[8:0],分别对应于右移子模块0、右移子模块1、…右移子模块7,右移后的8个48比特数据级联为384比特右移结果(Shift right data);其中,每个48bit数据对应的移位值是由外部配置到循环移位网络。另外,若Zc值不等于48、96、192、384时,需将有效位放在低位,高位补0,如Z为44时,并行度为8,需将8个44bit的有效数据放在48bit的低44位,高4位补0,再级联成384bit数据作为循环移位网络的输入数据,最终输出的384bit数据,其8个48bit的低44位为有效位。合并信号计算子模块7根据左移子模块7的左移值计算高位合并信号,表示为7计算合并信号,依次类推,合并信号计算子模块0根据左移子模块9的左移值计算低位合并信号,表示为0计算合并信号,7计算合并信号、…、0计算合并信号级联成384比特合并信号,用于对384比特左移结果和384比特右移结果进行二选一的合并操作。
为了更好的理解本发明的循环移位结果,下面结合几个具体的示例来进行详细说明:
示例一:若循环移位网络的Zc值为384,并行度为1,右移值为5,左移值为379,384bit的输入序列为{378'b0,111,111},则循环移位的过程中8个右移值全部为5,即二进制为{000,000,101},8个左移值全部为379,即二进制为{101,111,011},循环移位步骤如下:
1-1)、第一级右移:右移值最低位为1,输入数据右移1bit,最高位补0,则输入数据经过第一级右移后由{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,42'b0,111,111}变为{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,42'b0,011,111};
第一级左移:左移值最低位为1,输入数据左移1bit,最低位补0,则输入数据经过第一级左移后由{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,42'b0,111,111}变为{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,41'b0,1,111,110};
1-2)、第二级右移:右移值第二位为0,保持第一级右移后的数据不变{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,42'b0,011,111};
第二级左移:左移值第二位为1,第一级左移后的数据再左移2bit,低1-2位补0,则输入数据经过第二级左移后由{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,41'b0,1,111,110};变为{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,39'b0,111,111,000};
1-3)第三、四、五、六、七、八级:依次计算;
1-4)第九级右移:右移值最高位为0,保持第八级右移后的数据不变{48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,42'b0,000,001};
第九级左移:左移值最高位为1,第八级左移后的数据再左移256bit,低256位补0,经过第9级左移后由{48'b0,48'b0,48'b0,48'b0,48'b0,15'b0,111,111,27'b0,48'b0,48'b0}变为{111,110,42'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0,48'b0};
1-5)并行度为1,左移值为379,合并信号计算子模块0、1、2、3、4、5、6模块各自都将左移值379映射输出为{48'b1},合并信号计算子模块7模块将左移值379映射输出为{5'b0,43'b1},再将8个48bit的合并信号级联为{5'b0,379'b1},送入数据合并模块进行二选一合并;
1-6)按比特对左移后的序列和右移后的序列进行二选一,合并信号低379位为1,因此输出序列的低379位选择右移后的序列,即{378'b0,1},合并信号高5位为0,因此输出序列的高5位选择左移后的序列,即{111,11}。因此计算得出循环移位后的输出序列为{111,11,378'b0,1}。
示例二:若循环移位网络的Zc值为104,并行度为2,第一个序列的右移值为2,左移值为102,输入序列为{88'b0,1,102'b0,1},其中高88bit为无效数据,第二个序列的右移值为101,左移值为3,输入序列为{88'b0,11,100'b0,11},其中高88bit为无效数据,循环移位网络的384bit输入序列为{88'b0,11,100'b0,11,88'b0,1,102'b0,1},其中前4个移位值相同,后4个移位值相同,第一个序列的右移值为2,即前4个48bit数据对应的右移值相同,二进制为{000,000,010},左移值为102,二进制为{001,100,110},第二个序列的右移值为101,即后4个48bit数据对应的右移值相同,二进制为{001,100,101},左移值为3,二进制为{000,000,011}:循环移位步骤如下:
2-1)第一级右移:前4个48bit对应的右移值最低位为0,输入数据保持不变,即{48'b0,40'b0,1,7'b0,48'b0,47'b0,1},后4个48bit对应的右移值最低位为1,输入数据右移1bit,最高位补0,由{48'b0,40'b0,11,6'b0,48'b0,46'b0,11}变为{48'b0,40'b0,011,5'b0,48'b0,47'b0,1};
第一级左移:前4个48bit对应的左移值最低位为0,输入数据保持不变,即{48'b0,40'b0,1,7'b0,48'b0,47'b0,1},后4个48bit对应的左移值最低位为1,输入数据左移1bit,最低位补0,由{48'b0,40'b0,11,6'b0,48'b0,46'b0,11}变为{48'b0,39'b0,11,7'b0,48'b0,45'b0,110};
2-2)第二级右移:前4个48bit对应的右移值第二位为1,第一级右移后的数据再右移2bit,高2位补0,由{48'b0,40'b0,1,7'b0,48'b0,47'b0,1}变为{48'b0,42'b0,1,5'b0,48'b0,48'b0},后4个48bit对应的右移值第二位为0,保持第一级右移后的数据不变,即{48'b0,40'b0,011,5'b0,48'b0,47'b0,1};
第二级左移:前4个48bit对应的左移值第二位为1,第一级左移后的数据再左移2bit,低2位补0,由{48'b0,40'b0,1,7'b0,48'b0,47'b0,1}变为{48'b0,38'b0,1,9'b0,48'b0,45'b0,100},后4个48bit对应的左移值第二位为1,第一级左移后的数据再左移2bit,低2位补0,由{48'b0,39'b0,11,7'b0,48'b0,45'b0,110}变为{48'b0,37'b0,11,9'b0,48'b0,43'b0,11000};
2-3)第三、四、五、六、七、八级:依次计算;
2-4)第九级右移:前4个48bit对应的右移值最高位为0,保持第八级右移后的数据不变,即{48'b0,42'b0,1,5'b0,48'b0,48'b0},后4个48bit对应的右移值最高位为0,保持第八级右移后的数据不变,即{48'b0,48'b0,48'b0,45'b0,110},因此右移后的序列为{48'b0,48'b0,48'b0,45'b0,110,48'b0,42'b0,1,5'b0,48'b0,48'b0}
第九级左移:前4个48bit对应的左移值最高位为0,保持第八级左移后的数据不变,即{48'b0,41'b0,1,6'b0,48'b0,48'b0},后4个48bit对应的左移值最高位为0,保持第八级左移后的数据不变,即{48'b0,37'b0,11,9'b0,48'b0,43'b0,11000},因此左移后的序列为{48'b0,37'b0,11,9'b0,48'b0,43'b0,11000,48'b0,41'b0,1,6'b0,48'b0,48'b0};
2-5)并行度为2,前4个左移值为102,合并信号计算子模块3、2、1、0将左移值102分别映射输出为{48'b0}、{42'b0,6'b1}、{48'b1}、{48'b1},后4个左移值为3,合并信号计算子模块7、6、5、4模块将左移值3分别映射输出为{48'b0}、{48'b0}、{48'b0}、{45'b0,3'b1},再将8个48bit的合并信号级联为{189'b0,3'b1,90'b0,102'b1},数据合并模块进行二选一合并;
2-6)按比特对左移后的序列和右移后的序列进行二选一,合并信号为1的比特位选择相对应的右移后的序列,合并信号为0的比特位选择相对应的左移后的序列,因此输出序列为{48'b0,37'b0,11,9'b0,48'b0,43'b0,11110,48'b0,41'b0,11,5'b0,48'b0,48'b0},因此计算得出循环移位后的输出序列{85'b0,11,100'b0,4'b1,90'b0,11,101'b0}。
通过上述实施例可以看出,本发明在9次的移位运算中,直接根据移位值来判断即可,在很大程度上降低了关键路径,并且硬件资源较少;移位网络的大小Zc可配置,使用方便灵活;可根据通量要求,设计循环移位网络的并行度;本发明与Banyan网络相比,都有9级的移位运算,但Banyan网络每级的控制信号需要大量的计算,如模6运算、模3运算,并且前6级的运算还有着依赖关系,因此Banyan网络有很长的关键路径,导致循环移位网络的主频提不上去,并且Banyan网络的连线每级之间都不同,连线较复杂,设计难度大。本发明的每级移位运算,只需要根据其移位值来判断是否需要移位即可,并且移位值保持不变,需要移位的比特数也是确定的,因此本发明不仅关键路径短、支持的主频高,还会降低硬件资源的消耗,并且当Zc较小时也支持并行计算,满足通量要求。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种用于LDPC码的循环移位网络系统,其特征在于,包括:
数据输入模块,用于提供384比特的输入序列;
配置模块,用于根据LDPC的右移参数以及扩展因子配置右移模块和左移模块的右移值和左移值;
右移模块,用于将所述输入序列的数据按照所配置的右移值进行右移,得到右移后的384比特右移结果;
左移模块,用于将所述输入序列的数据按照所配置的左移值进行左移,得到左移后的384比特左移结果;
合并信号计算模块,用于将所述左移模块的左移值映射为一个384比特的合并信号;
数据合并模块,用于根据所述合并信号,将右移后的384比特右移结果和左移后的384比特左移结果进行合并,得到384比特循环移位结果。
2.根据权利要求1所述的一种用于LDPC码的循环移位网络系统,其特征在于,所述系统还包括:
数据输出模块,用于将384比特循环移位结果输出。
3.根据权利要求1所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述数据输入模块将输入序列从低位到高位等间隔分割为8个48比特的数据。
4.根据权利要求3所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述右移模块包括8个从低位到高位级联的右移子模块,每个右移子模块被配置有一个独立的9比特右移值,按照输入序列从低位到高位的级联顺序,每个右移子模块用于对一个48比特的数据进行右移操作得到一个右移后的48比特数据,所有右移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特右移结果;
所述每个右移子模块被配置为按照如下方式对48比特数据进行9级迭代右移:
从9比特右移值的低位往高位开始进行迭代右移,每一次右移在上一次右移的基础上进行右移;
其中,在右移值为1的比特位,将上一次的右移结果往右移该比特位二进制位权值所限定的位数;在右移值为0的比特位,保持上一次的右移结果不变。
5.根据权利要求4所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述8个从低位到高位级联的右移子模块的每一级迭代右移同时进行;其中,高位的右移子模块对应的48比特数据右移后移出的低位比特数据进入级联的下一个低位右移子模块对应的48比特数据对应比特位数的高位,最高位的右移子模块对应的48比特数据按照其移出的比特位数从最高位开始补0。
6.根据权利要求5所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述左移模块包括8个从低位到高位级联的左移子模块,每个左移子模块被配置有一个独立的9比特左移值,按照输入序列从低位到高位的级联顺序,每个左移子模块用于对一个48比特的数据进行左移操作得到一个左移后的48比特数据,所有左移后的48比特数据按照输入序列的从低位到高位的顺序组成384比特左移结果;
且所述每个左移子模块被配置为按照如下方式对48比特数据进行9级迭代左移:
从9比特左移值的低位往高位开始进行迭代左移,每一次左移在上一次左移的基础上进行左移;
其中,在左移值为1的比特位,将上一次的左移结果往左移动该比特位二进制位权值所限定的位数;在左移值为0的比特位,保持上一次的左移结果不变。
7.根据权利6所述的一种用于LDPC码的循环移位网络系统,其特征在于:
所述8个从低位到高位级联的左移子模块的每一级迭代左移同时进行,同一个48比特数据的左移和右移同时进行;其中,低位的左移子模块对应的48比特数据左移后移出的高位比特数据进入级联的上一个高位左移子模块对应的48比特数据对应比特位数的低位,最低位的左移子模块对应的48比特数据按照其移出的比特位数从最低位开始补0。
8.根据权利7所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述合并信号计算模块包括8个合并信号计算子模块,每一个合并信号计算子模块将一个左移子模块的左移值映射为一个48比特的合并信号,所有合并信号计算子模块映射得到的48比特的合并信号组成384比特的合并信号;
其中,每一个48比特的合并信号中,将其对应左移值对应的十进制数据所限定位数的低位映射为1,其他高位为0。
9.根据权利要求8所述的一种用于LDPC码的循环移位网络系统,其特征在于,
所述数据合并模块被配置为按照如下方式将右移后的384比特右移结果和左移后的384比特左移结果进行合并:
合并信号为1的比特位,选择384比特右移结果中的对应比特位作为该比特位的合并结果;合并信号为0的比特位,选择384比特左移结果中的对应比特位作为该比特位的合并结果。
10.一种用于LDPC码的循环移位网络系统的循环移位方法,用于将任意384比特输入序列按照LDPC的右移参数以及扩展因子完成循环移位,包括如下步骤:
S1、将384比特输入序列从低位到高位等间隔分割为8个48比特的数据;
S2、根据LDPC的右移参数以及扩展因子配置每一个48比特数据对应的左移值和右移值,其中,每一个左移值或右移值均表示为一个9比特数据;
S3、按照配置的左移值和右移值,将每一个48比特数据进行左移和右移,所有左移后的48比特数据按照输入序列的从低位到高位的顺序组成左移后的384比特左移结果,所有右移后的48比特数据按照输入序列的从低位到高位的顺序组成右移后的384比特右移结果;
S4、将每一个左移值映射为一个48比特的合并信号,所有48比特的合并信号按照其对应48比特数据在输入序列中的从低位到高位的顺序组成384比特的合并信号;
S5、将左移后的384比特左移结果和右移后的384比特右移结果按照步骤S4中的384比特的合并信号进行合并,得到384比特循环移位结果。
11.根据权利要求10所述的一种用于LDPC码的循环移位方法,其特征在于,所述每一个48比特的合并信号中,将其对应左移值中值为1的所有比特位的位权值之和所限定位数的低位映射为1,其他高位为0。
12.根据权利要求11所述的一种用于LDPC码的循环移位方法,其特征在于,所述步骤S5中,合并信号为1的比特位,选择384比特右移结果中的对应比特位作为该比特位的合并结果;合并信号为0的比特位,选择384比特左移结果中的对应比特位作为该比特位的合并结果。
13.一种LDPC编/译码器,其特征在于,所述LDPC编/译码器上按照权利要求1-9任一所述的循环移位网络系统配置循环移位网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011144970.0A CN112332857B (zh) | 2020-10-23 | 2020-10-23 | 一种用于ldpc码的循环移位网络系统及循环移位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011144970.0A CN112332857B (zh) | 2020-10-23 | 2020-10-23 | 一种用于ldpc码的循环移位网络系统及循环移位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112332857A true CN112332857A (zh) | 2021-02-05 |
CN112332857B CN112332857B (zh) | 2023-08-08 |
Family
ID=74311494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011144970.0A Active CN112332857B (zh) | 2020-10-23 | 2020-10-23 | 一种用于ldpc码的循环移位网络系统及循环移位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112332857B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114286368A (zh) * | 2021-12-24 | 2022-04-05 | 北京中科晶上科技股份有限公司 | 循环移位的实现方法与装置 |
CN117081608A (zh) * | 2023-08-30 | 2023-11-17 | 白盒子(上海)微电子科技有限公司 | 一种nr ldpc编译码循环移位实现装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067440A1 (en) * | 2013-08-27 | 2015-03-05 | Imagination Technologies Limited | Decoder for low-density parity-check codes |
CN105515761A (zh) * | 2016-01-22 | 2016-04-20 | 成都三零嘉微电子有限公司 | 一种高速多模式循环移位的电路 |
CN109687877A (zh) * | 2018-12-28 | 2019-04-26 | 深圳忆联信息系统有限公司 | 一种降低多级循环移位网络级联级数的方法及装置 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
-
2020
- 2020-10-23 CN CN202011144970.0A patent/CN112332857B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150067440A1 (en) * | 2013-08-27 | 2015-03-05 | Imagination Technologies Limited | Decoder for low-density parity-check codes |
CN105515761A (zh) * | 2016-01-22 | 2016-04-20 | 成都三零嘉微电子有限公司 | 一种高速多模式循环移位的电路 |
CN111262592A (zh) * | 2018-11-30 | 2020-06-09 | 展讯半导体(南京)有限公司 | 序列的循环移位装置及方法、存储介质 |
CN109687877A (zh) * | 2018-12-28 | 2019-04-26 | 深圳忆联信息系统有限公司 | 一种降低多级循环移位网络级联级数的方法及装置 |
Non-Patent Citations (1)
Title |
---|
苑津莎等: "适用于准循环LDPC码译码的新型循环移位置换结构设计", 《电子与信息学报》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114286368A (zh) * | 2021-12-24 | 2022-04-05 | 北京中科晶上科技股份有限公司 | 循环移位的实现方法与装置 |
CN114286368B (zh) * | 2021-12-24 | 2023-05-30 | 北京中科晶上科技股份有限公司 | 循环移位的实现方法与装置 |
CN117081608A (zh) * | 2023-08-30 | 2023-11-17 | 白盒子(上海)微电子科技有限公司 | 一种nr ldpc编译码循环移位实现装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112332857B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100905814B1 (ko) | Ldpc 인코딩 방법 | |
Feltstrom et al. | Braided block codes | |
CN107370490B (zh) | 结构化ldpc的编码、译码方法及装置 | |
US7484159B2 (en) | Encoding method and encoding apparatus | |
Chen et al. | QSN—A simple circular-shift network for reconfigurable quasi-cyclic LDPC decoders | |
KR101211433B1 (ko) | 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법 | |
CN111262592B (zh) | 序列的循环移位装置及方法、存储介质 | |
CN108988869B (zh) | 一种确定校验矩阵的方法及装置、计算机存储介质 | |
WO2014122772A1 (ja) | 誤り訂正符号の検査行列のデータ構造、並びに誤り訂正符号の符号化率可変装置および可変方法 | |
CN112332857B (zh) | 一种用于ldpc码的循环移位网络系统及循环移位方法 | |
US8713399B1 (en) | Reconfigurable barrel shifter and rotator | |
JP2008510379A (ja) | データをエンコード及びデコードするための方法並びに装置 | |
EP2951925B1 (en) | Ldpc code design and encoding apparatus enabling the adjustment of code rate and codelength | |
GB2537371B (en) | Modulo calculation using polynomials | |
Theodoropoulos et al. | Efficient architectures for multigigabit CCSDS LDPC encoders | |
US20150229330A1 (en) | Variable shifter, decoder, and data shifting method | |
US8225174B2 (en) | Decoding device and decoding method | |
CN109120275B (zh) | 一种编码方法及装置、计算机存储介质 | |
Liu et al. | Design of a multimode QC-LDPC decoder based on shift-routing network | |
CN111313912A (zh) | 一种ldpc码编码器及编码方法 | |
Pei et al. | Design of irregular LDPC codec on a single chip FPGA | |
Xu et al. | On the construction of quasi-systematic block-circulant LDPC codes | |
Khan et al. | A real time programmable encoder for low density parity check code as specified in the IEEE P802. 16E/D7 standard and its efficient implementation on a DSP processor | |
EP2951926A1 (en) | Ldpc code design and encoding apparatus for their application | |
WO2019110721A1 (en) | Parallel encoding method and system for protograph-based ldpc codes with hierarchical lifting stages |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |