发明内容
本发明提供了一种数据处理方法和装置,解决了CNU硬件开销大、运算性能低的问题。
一种低密度奇偶校验码(LDPC码)在译码中的数据处理方法,包括:
步骤1、输入m个输入数,将所述m个输入数划分为n个输入子集,每个输入子集包括多个输入数,其中,n和m均为整数,且n<m/2;
步骤2、分别获取各输入子集的最小值和次小值,所述n个输入子集的最小值构成最小值组,所述n个输入子集的次小值构成次小值组;
步骤3、获取所述最小值组的最小值和次小值,该最小值即为所述m个输入数的最小值,输出所述m个输入数的最小值和所述最小值的最小值索引;
步骤4、获取所述次小值组的最小值,并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述m个输入数的次小值,输出所述m个输入数的次小值。
优选的,上述数据处理方法还包括:
将输出的所述m个输入数的最小值和次小值发送给绝对值-补码转换模块。
优选的,所述输入子集互不相交。
优选的,所述输入子集包含三个或四个输入数。
优选的,获取所述最小值组的最小值和次小值包括以下步骤:
步骤3a、将所述最小值组中的n个值划分为j个分组,其中,j为整数,且j≤n/2;
步骤3b、分别比较得出所述各分组的最小值和次小值,所述各分组的最小值构成新的最小值组;
步骤3c、重复执行步骤3a和3b,直至获取所述最小值组的最小值和次小值。
优选的,获取所述次小值组的最小值包括以下步骤:
步骤4a、将所述次小值组中的n个值划分为k个分组,其中,k为整数,且k≤n/2;
步骤4b、分别比较得出所述各分组的最小值,所述各分组的最小值构成新的次小值组;
步骤4c、重复执行步骤4a和4b,直至获取所述次小值组的最小值。
本发明还提供了一种低密度奇偶校验码(LDPC码)在译码中的数据处理装置,包括:
前级子单元,用于接收m个输入数,将所述m个输入数划分为n个输入子集,每个输入子集包括多个输入数,分别获取各输入子集的最小值和次小值,所述n个输入子集的最小值构成最小值组,所述n个输入子集的次小值构成次小值组,其中,n和m均为整数,且n<m/2;
中间级子单元,用于获取所述最小值组的最小值和次小值,该最小值即为所述m个输入数的最小值,输出所述m个输入数的最小值和所述最小值的最小值索引,以及获取所述次小值组的最小值;
后级子单元,用于并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述m个输入数的次小值,输出所述m个输入数的次小值。
优选的,所述中间级子单元包括多个层次,所述前级子单元的输出连接至第一层中间级子单元的输入,最后一层中间级子单元的输出连接至所述后级子单元的输入,除所述最后一层中间级子单元之外的一层或多层中间级子单元的输出连接至下一层中间级子单元或所述后级子单元的输入,一个前级子单元的输出仅连接至一个中间级子单元的输入,一个中间级子单元的输入连接有多个前级子单元的输出。
优选的,所述前级子单元包括多个比较器、一个编码器和多个多路复选器,所述多路复选器包括至少三个数据输入端和一个选择信号输入端;
所述比较器的输出端与所述编码器相连,所述编码器的输出端分别与所述多个多路复选器的选择信号输入端相连,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和多个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多个多路复选器的选择信号输入端,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多路复选器的选择信号输入端,所述比较器与所述多路复选器共享数据输入端。
优选的,所述中间级子单元包括一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述多路复选器的数据输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连,所述多路复选器的选择信号输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连。
本发明提供了一种数据处理方法和装置,首先输入m个输入数,将所述m个输入数划分为n个输入子集,每个输入子集包括多个输入数,其中,n和m均为整数,且n<m/2,分别获取各输入子集的最小值和次小值,所述n个输入子集的最小值构成最小值组,所述n个输入子集的次小值构成次小值组,获取所述最小值组的最小值和次小值,该最小值即为所述m个输入数的最小值,输出所述m个输入数的最小值和所述最小值的最小值索引,获取所述次小值组的最小值,并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述m个输入数的次小值,输出所述m个输入数的次小值,以输入子集为处理单位,简化了处理步骤,解决了CNU硬件开销大、运算性能低的问题。
具体实施方式
本发明的实施例提供了一种数据处理方法和装置,解决了CNU硬件开销大、运算低能低的问题。下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
首先,对本发明的实施例一进行说明。
本发明的实施例一提供了一种低密度奇偶校验码(LDPC码)在译码中的数据处理装置,包括:
前级子单元,用于将n个输入数划分为m个输入子集,每个输入子集包括多个输入数,分别获取各输入子集的最小值和次小值,所述m个输入子集的最小值构成最小值组,所述m个输入子集的次小值构成次小值组,其中,m和n均为整数,且m<n/2;
中间级子单元,用于获取所述最小值组的最小值和次小值,该最小值即为所述n个输入数的最小值,获取所述最小值的最小值索引,以及获取所述次小值组的最小值;
后级子单元,用于并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述n个输入数的次小值。
优选的,所述中间级子单元包括多个层次,所述前级子单元的输出连接至第一层中间级子单元的输入,最后一层中间级子单元的输出连接至所述后级子单元的输入,除所述最后一层中间级子单元之外的一层或多层中间级子单元的输出连接至下一层中间级子单元或所述后级子单元的输入,一个前级子单元的输出仅连接至一个中间级子单元的输入,一个中间级子单元的输入连接有多个前级子单元的输出。
优选的,所述前级子单元包括多个比较器、一个编码器和多个多路复选器,所述多路复选器包括至少三个数据输入端和一个选择信号输入端;
所述比较器的输出端与所述编码器相连,所述编码器的输出端分别与所述多个多路复选器的选择信号输入端相连,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和多个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多个多路复选器的选择信号输入端,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多路复选器的选择信号输入端,所述比较器与所述多路复选器共享数据输入端。
优选的,所述中间级子单元包括一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述多路复选器的数据输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连,所述多路复选器的选择信号输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连。
下面结合上述装置,对本发明的实施例二进行说明。
本发明的实施例提供了一种低密度奇偶校验码(LDPC码)在译码中的数据处理方法,使用该方法获取最小值的流程如图1所示,包括:
步骤101、输入m个输入数,将所述m个输入数划分为n个输入子集,每个输入子集包括多个输入数,其中,n和m均为整数,且n<m/2;
假设一个由实数组成的有限集合V,V中包含m个输入数,V可以划分成有限数目的子集合v0,v1,...,vn-1,n∈Z+,并且V的任意子集合互不相交,即:
V=v0∪v1∪...∪vn (1)
其中,0≤i,j≤n并且i≠j。
适当地选择子集合大小,可以以最少的比较器和复选器的组合实现最小值和次小值的检索。
步骤102、分别获取各输入子集的最小值和次小值,所述n个输入子集的最小值构成最小值组,所述n个输入子集的次小值构成次小值组;
对每个输入子集合求最小值min(vi)和次小值min2nd(vi),则集合V中的最小值为:
min(V)=min({min(vi)}),i=0,1,...,n-1 (3)
集合V中次小值为:
min2nd(V)=min(min({min2nd(vi)}),min2nd({min(vi)})),i=0,1,...,n-1 (4)
根据式(3)可获得最小值组,根据式(4)或获得次小值组。
步骤103、获取所述最小值组的最小值和次小值,该最小值即为所述m个输入数的最小值,输出所述m个输入数的最小值和所述最小值的最小值索引;
步骤104、获取所述次小值组的最小值,并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述m个输入数的次小值,输出所述m个输入数的次小值。
按照上述步骤进行最小值、次小值检索的原理框图如图2所示。
按照本发明的实施例一中式(3)、式(4)和图2所示的方法,在分组增多,即n值增大的情况下,中间级的最小值和次小值的输入也随之增多,此时,还有很大的空间对中间级进行优化,即中间级会具有更为复杂的层次结构。另外,前级对输入的数据集合的不同分组也会对整体设计的资源消耗有不同的影响。为了解决上述问题,本发明的实施例二提供了一种数据处理方法,使用该方法的流程如下:
设一个由实数组成的有限集合V,V可以划分成若干互不相交的子集合v0,v1,...,vn-1,n∈Z+,并且其中,任意子集合vi,i=0,1,...,n-1由若干互不相交的子集合组成,并且0≤i≠j≤ni-1,则集合V的最小值为:
min(V)=min({vi}),0≤i≤n-1 (5)
根据式(5)可获得最小值组。
次小值为:
min2nd(V)=min({min2nd(vi)},min2nd({min(vi)})),0≤i≤n-1 (6)
根据式(6)可获得次小值组。
其中:
min(vi)=min({uk}),0≤k≤ni-1 (7)
min2nd(vi)=min({min2nd(uk)},min2nd({min(uk)})),0≤k≤ni-1 (8)
由式(5)-式(6)可以得到:
min(V)=min({mini{min(uk)}}),0≤i≤n-1,0≤k≤ni-1 (9)
min2nd(V)
=min(min({min2ndi(uk)}),min2nd({mini(uk)})),0≤i≤n-1,0≤k≤ni-1 (10)
式(9)和式(10)说明可以通过对最小值组和次小值组的再划分,采用迭代的方法实现最小值和次小值的检索。
对最小值组进行迭代的流程如下:
1、将所述最小值组中的n个值划分为j个分组,其中,j为整数,且j≤n/2;
2、分别获取所述各分组的最小值和次小值,所述各分组的最小值构成新的最小值组;
3、重复执行步骤1和2,直至获取所述最小值组的最小值和次小值。
对次小值组进行迭代的流程如下:
1、将所述次小值组中的n个值划分为k个分组,其中,k为整数,且k≤n/2;
2、分别获取所述各分组的最小值,所述各分组的最小值构成新的次小值组;
3、重复执行步骤1和2,直至获取所述次小值组的最小值。
在实际执行的流程中,迭代获取最小值和次小值的流程为一个整体,具体如下:
1、对一组输入数进行多组划分,对划分的每组分别进行最小值、次小值的检索,并输出最小值的索引,进入步骤2;
2、将检索得到的次小值和最小值分别划为次小值组和最小值组,将最小值组返回步骤1进行重分组和检索,次小值组进入步骤3;如果此最小值为最终结果,进入步骤4;
3、对次小值组再分组,求次小值组的最小值;
4、最后对最小值组的次小值和次小值组的最小值进行比较,比较得到的最小值即是所有输入的次小值。
采用迭代的方法实现的最小值和次小值的检索设计方案如图3所示,其中,次小值组的最终求解可以根据实际优化情况选择合适的分组与组合方式实现。
下面结合附图,对本发明的实施例三进行说明。
本发明实施例以24个输入数为例,对使用本发明的实施例提供的一种数据处理方法从输入数据中获取最大值和最小值并输出的过程进行说明。具体的,采用初级划分为4元素子集合、中级划分为3元素子集合,后级划分为2元素子集合的方式进行最小值和次小值的检索,其原理框图如图4所示,由多层子单元对各子集合进行最小值和/或次小值的检索,其中的各个子单元如图5至图12所示,子单元使用比较器对最小值、次小值进行检索,使总的设计同时减少比较器和复选器的使用数量,显著减少了逻辑的消耗。
具体的,图5所示为一四输入(四个输入数构成的子集合)两输出(一个最小值输出I_MIN,一个次小值输出I_MIN2nd)的子单元,可选的,还包括一最小值索引Index的输出。使用个比较器对A、B、C、D四个输入数进行完全的比较,通过编码器Encoder确定编码逻辑,并以该逻辑作为复选器的选择信号。实际上不仅能确定A、B、C、D中的最小和次小值,也能对A、B、C、D进行完全的排序。在只需确定最小值和次小值的情况下,该子单元只需要6个比较器、2个复选器和2组复选器选择信号的编码逻辑。该编码器的编码逻辑表达式如下:
需要说明的是,上文只是提供了一种可用的编码器逻辑,其他实现最小值、次小值获取的编码器逻辑亦在本发明保护范围中。
图5中,A、B、C、D两两比较后得到6个比较结果,由这6个比较结果,根据上述逻辑表达式,编码得到两组复选信号,每组复选信号为2位宽,对应4输入的复选器。其中,I_MIN表示编码后得到的最小值的索引,I_MIN2nd表示编码后得到的次小值的索引,编码的索引值分别对应A、B、C、D的输入位置。图5输出了最小值的索引Index,供其他子单元使用。
图5所示的子单元在比较过程中不需要对数据进行复选,使用的比较器数量也比较少。并且,四输入(2的幂次)的结构利于对多元素的集合进行分组和简化级间的索引编码,优化了设计并减少了资源消耗。一般作为初级子单元。在输入数数量较多时,也可通过多层图5所示的四输入子单元,将输入数多次筛选及划分子集合。
图6为一三输入(三个输入数构成的子集合)两输出(一个最小值输出I_MIN,一个次小值输出I_MIN2nd)的子单元,可选的,还包括一最小值索引Index输出。该子单元使用个比较器对A、B、C三个数进行完全比较,并能对这三个数进行排序。
图6中,A、B、C两两比较后得到3个比较结果。可以对这三个比较结果LT_AB、LT_BC、LT_AC进行编码,得到类似图5的两组复选信号,减少对复选器资源的消耗;也可以直接用这三个比较结果作为复选信号,简化逻辑层次。但是,在实际应用中,这部分组合电路有可能会综合成同一电路。作为示意,图6所示为以未对三个比较结果进行编码,而是直接将其作为复选器的选择信号的情况,对比较结果进行编码的后输出信号的复选原理与图5所示子单元相同,在此不再赘述。
图7所示为一三输入(三个输入数构成的子集合)一输出(一个最小值输出I_MIN)的子单元,其实现原理与图6所示子单元相同,仅仅是去除了次小值复选器。
图8所示为一二输入(两个输入数构成的子集合)一输出(一个最小值输出I_MIN)的子单元,在普通的比较最小值的电路(图9)的基础上增加了次小值复选器。
图10和图11为三输入一输出的子单元,其输入和输出均为索引值(可为最小值索引,也可为次小值索引),具体为索引编码器。在前级,24个输入数分成了2半,每半3组,共6组4输入最小值、次小值比较器。在前级,4输入的优势体现在每一组的最小值索引(2位)直接反映了最终索引的最低两位,即如果这6组中某一组的最小值就是最终输出的最小值,那么这组输出的最小值索引就是最终输出的最小值索引的最低两位。因此,最终索引的最低两位实际可以由6:1复选器产生。由于设计跟迭代层级相关,所以示例设计是采用了3:1和2:1复选器级联复选实现的。
图10的索引编码器根据中间级的上半区的三输入最小值比较器输出的最小值索引,产生上半区12个输入数的最小值索引。上半区的最小索引实际上只有4位(最高位为0),低两位复选自前级三组比较器的最小索引,高两位由三输入最小值、次小值的最小索引(比较结果)进行编码产生。以下为实现该索引编码器的一种逻辑表达式组:
I7={LT_AB,LT_AC,LT_BC}
I9[4]=0
图11的索引编码器根据中间级的下半区的三输入最小值比较器输出的最小值索引,产生下半区12个输入数的最小值索引。与上半区不同,下半区索引的高三位的紧接于上半区的高三位的边界,因此编码逻辑与图10有所不同。以下为实现该索引编码器的一种逻辑表达式组:
I10[3]=LT_AB<_AC
I8={LT_AB,LT_AC,LT_BC}
图12所示为一二输出一输出的子单元,其输入输出均为索引值(可为最小值索引,也可为次小值索引)。从两个输入中选择上半片或者下半片的最小值索引。
因为对n元素子集合的元素求最小值和次小值所需要的比较器的数量是n(n-1)/2,只使用2个n:1复选器。在此基础上,适当地选择子集合大小,可以以最少的比较器和复选器的组合实现最小值和次小值的检索设计。使用了本发明的实施例提供的数据处理装置的CNU结构如图13所示。其中,min&min2 SORTER为最小值、次小值检索模块(即本发明的实施例所提供的数据处理装置),CC2ABS为数据补码-绝对值转换模块,ABS2CC为绝对值-补码转换模块,XOR Logics计算每个校验节点的符号,Sign Modifier用以修正零值符号,MUXes Data Distibuter在Docoder的选择和sign out的作用下输出所有校验节点信息,最终完成CNU的并行计算功能。前级CC2ABS为补码数至绝对值数的转化电路;其中,负数和整数的分布并不对称,如果不想为负数增加绝对值的数据位宽,则需要在允许的条件下对负数的最大绝对值进行近似。CC2ABS输出每个数的符号和绝对值。符号在XOR LOGICs中求符号连乘,绝对指数在最小值和次小值比较电路中求最小值、次小值和最小值索引。输出的连乘符号需要进行校正,以消除绝对值0在转化成补码过程中的二义性。输出的最小值和次小值首先进行补码转换,由索引译码器和输出符号选择每一路所需要输出的结果。
下面,对本发明的实施例四进行说明。
本发明实施例提供了一种低密度奇偶校验码(LDPC码)在译码中的数据处理装置,包括:
前级子单元,用于接收m个输入数,将所述m个输入数划分为n个输入子集,每个输入子集包括多个输入数,分别获取各输入子集的最小值和次小值,所述n个输入子集的最小值构成最小值组,所述n个输入子集的次小值构成次小值组,其中,n和m均为整数,且n<m/2;
中间级子单元,用于获取所述最小值组的最小值和次小值,该最小值即为所述m个输入数的最小值,输出所述m个输入数的最小值和所述最小值的最小值索引,以及获取所述次小值组的最小值;
后级子单元,用于并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述m个输入数的次小值,输出所述m个输入数的次小值。
优选的,所述中间级子单元包括多个层次,所述前级子单元的输出连接至第一层中间级子单元的输入,最后一层中间级子单元的输出连接至所述后级子单元的输入,除所述最后一层中间级子单元之外的一层或多层中间级子单元的输出连接至下一层中间级子单元或所述后级子单元的输入,一个前级子单元的输出仅连接至一个中间级子单元的输入,一个中间级子单元的输入连接有多个前级子单元的输出。
优选的,所述前级子单元包括多个比较器、一个编码器和多个多路复选器,所述多路复选器包括至少三个数据输入端和一个选择信号输入端;
所述比较器的输出端与所述编码器相连,所述编码器的输出端分别与所述多个多路复选器的选择信号输入端相连,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和多个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多个多路复选器的选择信号输入端,所述比较器与所述多个多路复选器共享数据输入端。
优选的,所述中间级子单元包括多个比较器和一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述比较器的输出端连接至所述多路复选器的选择信号输入端,所述比较器与所述多路复选器共享数据输入端。
优选的,所述中间级子单元包括一个多路复选器,所述多路复选器包括至少两个数据输入端和一个选择信号输入端;
所述多路复选器的数据输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连,所述多路复选器的选择信号输入端与所述多路复选器所在层次前的中间级子单元或前级子单元的输出端相连。
上述装置可应用于CNU中,实现图12所示min&min2nd SORTER模块的功能。
本发明的实施例四所提供的数据处理装置与本发明的实施例一至三提供的一种数据处理方法相结合,本发明提供了一种数据处理方法和装置,首先将n个输入数划分为m个输入子集,每个输入子集包括多个输入数,其中,m和n均为整数,且m<n/2,然后分别获取各输入子集的最小值和次小值,所述m个输入子集的最小值构成最小值组,所述m个输入子集的次小值构成次小值组,之后获取所述最小值组的最小值和次小值,该最小值即为所述n个输入数的最小值,获取所述最小值的最小值索引,获取所述次小值组的最小值,并将该次小值组的最小值和所述最小值组的次小值进行比较,其中较小的值即为所述n个输入数的次小值,以输入子集为处理单位,简化了处理步骤,解决了CNU硬件开销大、运算性能低的问题。本发明的实施例所提供的技术方案采用检索最小值、次小值并输出其索引的方法设计具有并行计算能力的CUN(图13),与现有技术相比,达到了显著优化CNU设计的效果,节省了大量的比较器和复选器的数量,提高了CNU对逻辑资源的共享效率,对在设计快速、并行处理大码长码字的LDPC译码器上具有重要的意义,在并行度的作用下,显著地减小减少了LDPC译码器的逻辑消耗,对设计并行处理大码长码字的小尺寸、高效、高速、大吞吐量的LDPC译码器具有重要的实现意义和应用价值。
本领域普通技术人员可以理解上述实施例的全部或部分步骤可以使用计算机程序流程来实现,所述计算机程序可以存储于一计算机可读存储介质中,所述计算机程序在相应的硬件平台上(如***、设备、装置、器件等)执行,在执行时,包括方法实施例的步骤之一或其组合。
可选地,上述实施例的全部或部分步骤也可以使用集成电路来实现,这些步骤可以被分别制作成一个个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实施例中的各装置/功能模块/功能单元可以采用通用的计算装置来实现,它们可以集中在单个的计算装置上,也可以分布在多个计算装置所组成的网络上。
上述实施例中的各装置/功能模块/功能单元以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。上述提到的计算机可读取存储介质可以是只读存储器,磁盘或光盘等。
任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。