基于存储器折叠架构优化的低功耗LDPC译码器
技术领域
本发明涉及通信领域信道编解码技术领域,具体涉及一种基于存储器折叠架构优化的低功耗低密度奇偶校验码(LDPC)译码器。
背景技术
在无线通信系统中,传输信道不可避免的受到噪声、衰落、多径等因素的影响,这大大限制了一定带宽下的数据传输的速率和质量。因此在现代高吞吐率、大容量、高可靠性的通信系统中,差错控制编码技术得到了广泛的应用。
低密度奇偶校验码(LDPC)是差错控制编码中非常重要的一类码,最初由Gallager于1962年提出。经验证,LDPC码具有能够逼近香农(Shannon)限的性能,同时由于LDPC译码器校验矩阵的结构特点,具有内在的译码并行性,可以采用高度并行的结构实现,满足高速高吞吐量的要求。因而在无线通信、深空通信、光纤通信以及数字视频广播等系统中,LDPC码得到广泛应用。
随着各种便携无线通信终端设备的广泛普及,人们不断对降低设备中芯片的功耗、延长电池使用时间提出更高的要求,低功耗成为无线通信系统设计的主题。LDPC译码器是根据校验矩阵(H)的结构,通过迭代算法来完成译码。但是,通常H矩阵巨大而稀疏,造成LDPC译码器结构比较复杂、硬件资源开销比较大,在整个无线通信系统的功耗中所占比例也较大。
因此,LDPC译码器的低功耗设计,对于降低无线通信终端设备的功耗有着重要的意义,也是当前人们研究的热点。
发明内容
(一)要解决的技术问题
有鉴于此,本发明的主要目的在于提供一种基于存储器折叠架构优化的低功耗LDPC译码器,根据LDPC译码器中存储器单元读写操作所占功耗比例较大的特点,在不改变译码器算法、结构和电路时序基础上,充分利用译码过程中存储器的读写规律,对其中存储器的高层架构进行优化设计,达到降低译码器功耗的目的。
(二)技术方案
为达到上述目的,本发明提供了一种基于存储器折叠架构优化的LDPC译码器,该译码器包括输入缓存、输出缓存、校验节点运算单元、变量节点运算单元、存储单元、地址产生单元、控制单元以及互联网络;其中,输入数据经过所述输入缓存进入所述存储单元;在迭代译码期间,所述校验节点运算单元、变量节点运算单元与所述存储单元通过所述互联网络传递信息;在译码输出时,译码结果由所述存储单元经所述输出缓存输出;所述地址产生单元用于产生存储单元的读写地址和读写控制信号;所述控制单元用于对译码器各个模块的工作时序进行控制。
上述方案中,该译码器采用部分并行译码结构,该结构中多个校验节点和多个变量节点分别复用同一个运算单元,共使用x个变量节点运算单元、y个校验节点运算单元、1个输入缓存和1个输出缓存,其中的x和y分别为校验矩阵的基础矩阵的列数和行数。
上述方案中,所述输入缓存和所述输出缓存分别由若干个寄存器串联而成,用于完成数据串行和并行的互相转换。
上述方案中,所述校验节点运算单元包含一个运算单元,该运算单元用于计算输入最小值和输入次小值,采用最小和算法,每次运算有与行重值相等个数的输入数据并行输入;该校验节点运算单元计算每个输入数据在不包括本身的情况下最小的输入,并通过所述互联网络将校验信息写入所述存储单元。
上述方案中,所述变量节点运算单元包含一个加法运算单元,该加法运算单元用于进行简单的加法运算,在每次译码迭代中更新变量节点的值,以及用于下一次迭代的外信息初始值,在运算结束后将信息按原地址写入所述存储单元。
上述方案中,所述存储单元包含x个存储子单元,而每个存储器子单元由1个信道信息存储器和c个外信息存储器构成,其中c为校验矩阵的列重。
上述方案中,所述地址产生单元用来产生信道信息存储器和外信息存储器的读写地址及相应的读写使能信号和片选信号,其中外信息存储器的读写地址采用同址写回的方法,从外信息存储器读出信息,经过校验节点运算单元和变量节点运算单元运算后得到的信息再按照原地址写回外信息存储器。
上述方案中,所述控制单元用于根据输入的控制信号和状态信号产生译码器其余模块的控制信号,协调译码器的迭代译码过程。
上述方案中,该译码器对应的校验矩阵为准循环矩阵,在译码器进行迭代运算过程中,外信息存储器利用校验矩阵对应的基础矩阵的循环位移因子对其起始地址进行初始化。
上述方案中,该译码器在每次迭代的译码过程具体包括:
步骤1:初始化;
译码开始时,存储单元中的信道信息存储器和外信息存储器分别存储信道信息和外信息,写入的初始地址均是从0开始;
步骤2:校验节点运算;
每个存储子单元中的外信息存储器利用所对应变量在基础矩阵中的小矩阵的循环位移因子来初始化自身的起始地址,然后外信息从该地址中读出,经互联网络输入到校验节点运算单元中进行计算,计算结果再经互联网络按原地址写回外信息存储器;
步骤3:变量节点运算;
该处理过程,需要利用信道信息存储器和外信息存储器中的数据一起来完成变量节点处理过程;当步骤2的写操作完成后,信道信息存储器和外信息存储器均将以0为起始地址读出数据并输入到变量节点运算单元中,进行变量节点运算,运算结果再按原地址写回至外信息存储器中,同时更新信道信息存储器。
上述方案中,所述信道信息存储器和外信息存储器均为双端口存储器,所有这些存储器的存储空间大小相同,并且读写操作具有如下规律:在一次译码迭代运算过程中,从一个起始地址开始,以连续的地址依次完成存储器内全部单元的写入、读出;根据此规律,将所述信道信息存储器和外信息存储器采用折叠架构方式,以降低存储器读写的功耗。
上述方案中,所述折叠架构方式的具体方法如下:
设信道信息和外信息都采用W比特位宽,则直接映射的情况下,信道信息存储器和外信息存储器所用存储器的位宽为W比特;另外,设存储器深度为L;现在将深度L进行k倍“折叠”,降低为原来的k分之一,即L/k;同时为保持存储容量不变,使位宽变为原来的k倍,即k×W,其中k为折叠因子,在设计时可以根据面积和功耗具体情况折中选择;
经过上述架构变化,再在存储器块的外围辅以相应的寄存器和多路选择器,使得在一次迭代运算过程中,除去外信息存储器的最初k-1次和最后k-1次的读写操作由起始地址决定外,其余每一次的写操作都将地址连续的k个数据写入折叠后的存储器的一个地址单元,而每次读操作都将地址连续的k个数据从折叠后的存储器的一个地址单元中读出;这样就使得存储器的字线、位线进行一次预充电操作以及地址译码电路进行一次译码操作,能够同时完成k个数据的读出或者写入,则总体读写次数就减少为原来的1/k。虽然由于存储器位宽的增大以及外围辅助逻辑电路的增加,每一次读写操作的功耗比原来增大了一些,但是一般情况下读写次数减少的倍数远大于每次读/写操作功耗增加的倍数,则读、写每一个数据的实际平均功耗可获得较大降低。另外,在选择合适的折叠因子的前提下,折叠变换和外围辅助逻辑电路带来的芯片面积增加一般较小。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明充分利用了LDPC译码器在一次译码迭代运算过程中信道信息存储器in_mem和外信息存储器ex_mem的读写地址均连续的特性,将所用的存储器架构进行折叠变换,使得一次读/写操作(即存储器的字线和位线预充电一次,地址译码器也工作一次)可以同时完成多个数据的读出和写入,成倍的减少读写操作次数,来实现大幅度降低存储器的读写功耗。
2、本发明提出的这种基于存储器折叠架构优化的低功耗LDPC译码器,对存储器所进行优化,只涉及存储器高层架构的改变,不涉及存储器内部的具体设计,因此优化过程可以利用设计工具自动生成存储器的模型及其RTL代码,实现较为方便。并且在实现时,只要存储器架构变换选择合适,在大幅度降低存储器的读写功耗的同时,可以使芯片版图面积仅有较小增加。
3、本发明提出的这种基于存储器折叠架构优化的低功耗LDPC译码器,可以将折叠后的存储器与其外围增加的寄存器和多路选择器等小型逻辑电路“打包”在一个新的RTL模型当中,即可方便的替换译码器中原来的存储器模块,而无需改变译码器其余电路结构,因此该设计方法具有较好的适用性和可移植性。
4、本发明提出的这种基于存储器折叠架构优化的低功耗LDPC译码器,由于没有对算法进行任何形式的修改,除去存储器外没有改变其余电路的结构,也没有改变整个译码器的控制信号和时序信息,因而完全不影响所采用的LDPC译码算法输出的误码性能,维持系统的高性能要求。
附图说明
下面结合附图和实例对本发明进一步说明:
图1是依照本发明实施例的低功耗LDPC译码器的结构示意图;
图2是依照本发明实施例的信道信息/外信息存储器端口图;
图3是依照本发明实施例的2倍折叠后的信道信息存储器及其外围辅助逻辑电路的结构图;
图4是依照本发明实施例的2倍折叠后的外信息存储器及其外围辅助逻辑电路的结构图;
图5是依照本发明实施例的4倍折叠后的信道信息存储器及其外围辅助逻辑电路的结构图;
图6是依照本发明实施例的4倍折叠后的外信息存储器及其外围辅助逻辑电路的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1是依照本发明实施例的低功耗LDPC译码器的结构示意图。该示意图基于中国广电总局提出的CMMB协议1/2码率的LDPC译码器,其中校验矩阵的行重为6,列重为3,由输入缓存、输出缓存、校验节点运算单元(CNU)、变量节点运算单元(VNU)、存储单元、控制单元和互联网络构成。其中,输入数据经过所述输入缓存进入所述存储单元;在迭代译码期间,所述校验节点运算单元、变量节点运算单元与所述存储单元通过所述互联网络传递信息;在译码输出时,译码结果由所述存储单元经所述输出缓存输出;所述地址产生单元用于产生存储单元的读写地址和读写控制信号;所述控制单元用于对译码器各个模块的工作时序进行控制。
本发明提供的译码器采用部分并行译码结构,该结构中多个校验节点和多个变量节点复用同一个运算单元,共使用x个变量节点运算单元、y个校验节点运算单元、1个输入缓存和1个输出缓存,其中的x和y分别为校验矩阵的基础矩阵的列数和行数。在本实施例中,采用部分并行译码结构,共使用36个VNU、18个CNU,一个存储单元、1个输出缓存和1个输出缓存。
图1中,每个CNU由1个计算输入最小值和输入次小值的运算单元构成;存储单元由36个存储子单元(mem1~mem36)构成,而每个存储子单元又由1个信道信息存储器(in_mem)和3个外信息存储器(ex_mem)构成,这些存储器均为大小完全相同的双端口存储器,因此共使用144块存储器,其中in_mem为36块,ex_mem为108块。
设信道信息和外信息都采用W比特位宽,则直接映射的情况下,in_mem和ex_mem所用存储器的位宽为W比特。这里取W为7作为例子来说明。存储器深度L即是基础矩阵的扩展因子,在CMMB协议中为256。故本LDPC译码器共用了144块256×7的双端口存储器,记为dpram256×7。图2为信道信息存储器/外信息存储器(即dpram256×7)的端口示意图。其中din和qout分别为为数据输入(写)和输出(读)端口,均为7比特位宽;addrb和addra分别为写和读地址线,均为8比特位宽;wenb和cena分别为写和读使能控制端口。
所有的in_mem和ex_mem在一次译码迭代运算过程中的读写方式都是从某一地址开始,以连续的地址依次完成存储器内全部单元的读出、写入。根据此规律,in_mem和ex_mem都可采用折叠的架构方式,以达到降低存储器读写功耗的目的。但是因为外信息存储器和信道信息存储器的读写起始地址不相同,下面分别介绍其折叠架构方法。
图3所示为进行2倍折叠变换(或者称为折叠因子为2的折叠变换)后的信道信息存储器in_mem及其外围辅助逻辑电路的结构图。在进行2倍折叠后,原来的dpram256×7存储器采用深度为128、位宽为14比特的dpram128×14存储器模块作为内核,并和外围增加的辅助逻辑电路一起打包在一个模块里面,组成新的存储器模块dpram256×7a。从dpram256×7a的外部端口看起来,其地址线、输入输出数据线、读/写控制信号线的位数、时序等和原来的dpram256×7模块完全相同,设计中可直接替换原来的dpram256×7模块代码。
在写操作时,将前一拍的数据D1用7位寄存器组Reg2寄存后,与下一节拍要写入的数据D2一起“打包”为14比特的数据{D2,D1}作为内核输入数据DB[13:0],并同时写入dpram128×14内核。但要求D1是地址addrb为偶数时对应的数据,D2是写地址addrb为奇数时对应的数据。外部端口的写使能信号wenb以及写操作地址addrb的最低位addrb[0]经过组合逻辑模块Logic2后,得到内核写使能信号WENB,以保证仅在wenb有效并且写地址为奇数时使能dpram128×14内核写操作。而内核写地址AB[6:0]则是外部端口写地址的高7位addrb[7:1]。
在读操作时,dpram128×14内核一次读出的14比特数据QA[13:0],在输出端经过多路选择器Mux1,分两个时钟节拍先后输出低7比特和高7比特送到dpram256×7a的输出端口qout。其中先后输出的两个数据分别是读地址addra为偶数和奇数时对应的数据。外部端口的读使能信号cena以及读操作地址的最低位addra[0]经过组合逻辑模块Logic1后,得到内核读使能信号CENA,以保证仅在cena有效并且读地址为偶数时使能dpram128×14内核读操作。而内核读地址AA[6:0]则是外部端口读地址的高7位addra[7:1]。
因为外部的两次读/写操作才会引起dpram128×14内核一次读/写操作,在内核不操作的那一个时钟节拍,可采用时钟门控单元关断CLKB或者CLKA,消除内核时钟树的翻转,这有助于进一步将低功耗。以下所述的各种折叠架构,均可采用时钟门控单元来控制CLKB或者CLKA。
由于信道信息存储器in_mem总是从固定的0(即偶数)地址开始读/写,并以最大地址结束读/写,在进行折叠变换时不需要考虑读/写地址的其他起始与结束情况。但是外信息存储器ex_mem的读/写起始地址由其对应变量在基础矩阵中的小矩阵的循环位移因子来决定,则其读/写开始与结束时的地址不一定满足奇偶要求。则需要另外增加一个起始和结束判断。具体实现如图4所示。
图4中“打包”后的存储器dpram256×7b比图3所示的dpram256×7a增加一个写操作计数输入端cnt_w[7:0]和一个读操作计数输入端cnt_r[7:0],用来指示在一次译码迭代过程中,当前写入或者读出的是第个数据。另外,一般的存储器生成工具都具有字写掩码(word-write mask)选项可以启动存储器的按位写功能,将输入端数据分成几部分分别写入存储器。在进行2倍折叠变换时,选择dpram128×14的数据输入端口每一部分的位宽为7位,写使能WENB为2比特,分别控制高7位和低7位的写操作。
写操作计数输入端cnt_w与写使能信号wenb、最低位地址线addrb[0]经过组合逻辑模块Logic2后,得到2比特的写使能信号WENB[1:0]以及多路选择器Mux2的控制信号。若写地址addrb以奇数开始,那么第一次写操作WENB[1]有效而WENB[0]无效,输入端信号din[6:0]直接写进dpram128×14中由addrb[7:1]确定的地址单元的高7位,而其低7位不变;写操作地址addrb以偶数结束时,那么最后一次写操作WENB[0]有效而WENB[1]无效,输入端信号din[6:0]无须寄存器组Reg2寄存,而是经过多路选择器Mux2后直接写进dpram128×14中由addrb[7:1]确定的地址单元的低7位,而其高7位不变;在其余写操作情况下,WEN[1]和WEN[0]同时为有效(奇数地址时)或者同时为无效电平(偶数地址时)。
读操作计数输入端cnt_r与读使能信号cena、最低位地址线addra[0]经过组合逻辑模块Logic1后,得到读使能信号CENA以及多路选择器Mux1的控制信号。若读地址addra以奇数开始,那么第一次读操作CENA使能信号有效,并将QA的高7位经过多路选择器Mux1直接输出到qout端,而不输出低7位数据。在其余读操作情况下,读使能信号CENA在偶数地址时有效,而在奇数地址时无效。
由于108块ex_mem是同步进行数据的输入、输出,故可共用一个读计数器和一个写计数器,所增加的计数开销很小。另外,一般而言总有一些ex_mem读/写地址固定从0开始,可以将其中一个这样的地址引出作为其他ex_mem的读/写操作计数器,省去额外的计数开销。对于读/写起始地址固定为0的ex_mem,则可直接采用图3所示的结构。
图5和图6分别是信道信息存储器in_mem及外信息存储器ex_mem进行4倍折叠变换的示意图。4倍折叠变换与2倍折叠变换的方法类似,采用深度为64、位宽为28的dpram64×28为内核。
图5中,内核dpram64×28每次读/写操作完成28比特数据的读出和写入。写使能端口信号wenb与写地址addrb的低2位addrb[1:0],经过组合逻辑模块Logic2后,得到内核写使能信号WENB,以保证仅在wenb有效并且addrb[1:0]的值为11时使能dpram64×28内核写操作。内核写地址AB[5:0]则是写地址端口的高6位addrb[7:2]。
读使能端口信号cena与读操作地址addra的低2位addra[1:0]经过组合逻辑模块Logic1后,得到内核读使能信号CENA,以保证仅在cena有效并且addra[1:0]的值为00时使能dpram64×28内核读操作。内核读地址AA[5:0]则是读地址端口的高6位addra[7:2]。
图6中所示ex_mem的4倍折叠架构方法,则考虑了读/写操作的起始和结束地址的低2位为00、01、10和11的4情况,同样需要读操作计数输入端口cnt_r[7:0]和写操作计数端口cnt_w[7:0]。
在此的基础上,还可以对信道信息存储器in_mem及外信息存储器ex_mem的架构进行8倍折叠变换,所用的方法与2倍、4倍折叠变换相同,不再赘述。所要说明的是,随着折叠倍数(折叠因子)的成倍增大,每次读/写操作可同时读出或者写入折叠存储器的数据也成倍增加,但是外围辅助逻辑增加的也越多,这些逻辑带来的面积和功耗增加的也越多,因此并不是折叠倍数越大越好,要在设计时根据实际情况进行折中考虑。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。