一种实现数据排序的硬件电路及方法

文档序号:6651660阅读:294来源:国知局
专利名称:一种实现数据排序的硬件电路及方法
技术领域
本发明涉及数字信号处理领域,具体涉及一种实现数据排序的硬件电路及方法。
背景技术
在数字信号处理中,经常需要对一系列数据进行排序,比如要对m个数据的大小顺序进行排序,或者从m个数据中找出n个最大(或最小)的数据,m≥n,以确定这些数据的优先级别。
现有的技术主要为软件排序。虽然软件排序的算法很多,但由于软件的运算速度较慢,无法满足实时性要求比较高的环境。比如通信系统的基站在进行小区搜索时,需要从大量的数据中找到真正的信号,并迅速向移动终端反馈信息,这个时间间隔要求很短,通常在1ms左右,在小区半径比较大或搜索的小区比较多时,需要处理的数据量非常庞大,经常达到十万的量级,软件无法在如此短时间内实现如此多数据的查找排序。

发明内容
本发明目的在于克服软件排序花费时间长的缺点,使用硬件电路来实现数据的排序,可以满足实时性要求比较高的场合。
为了实现上述发明目的,本发明具体是这样实现的一种实现数据排序的硬件电路,包括一组寄存器(A),一组比较器(B),一组n+1选1的多路选择器(C),一组2选1的多路选择器(D),一组2选1的多路选择器(E),一组极值指针寄存器(F),一个2选1的多路选择器(EN),一个当前采样(新采样)写指针寄存器(FN),一个地址译码器(G);输入数据连接到寄存器组(A)和比较器组(B),输出为寄存器组(A)和极值指针寄存器组(F)的输出;所述地址译码器(G)的输出连接到寄存器组(A)的输入使能端;寄存器组(A)的输出作为比较器组(B)的输入;比较器组(B)的输出作为多路选择器组(C)的输入,极值指针寄存器组(F)作为多路选择器组(C)的控制端;多路选择器组(C)的输出作为多路选择器组(D)的控制端,新采样写指针寄存器(FN)和极值指针寄存器组(F)作为多路选择器组(D)的输入端;多路选择器组(C)的输出作为多路选择器组(E)的控制端,多路选择器组(D)的输出和极值指针寄存器组(F)作为多路选择器组(E)的输入端;多路选择器组(E)的输出作为极值指针寄存器组(F)的输入端;多路选择器组(C)的输出作为多路选择器(EN)的控制端,新采样写指针寄存器(FN)和极值指针寄存器组(F)作为多路选择器(EN)的输入端;多路选择器(EN)的输出作为新采样写指针寄存器(FN)的输入端,新采样写指针寄存器(FN)作为地址译码器(G)的输入端。
所述寄存器(A)中有额外一个空间来存放当前的采样输入,其存储位置由新采样写指针寄存器(FN)指定。
一种上述硬件电路实现数据排序的方法,其特征在于步骤1、根据要查找值个数n,确定寄存器组(A),比较器组(B),n+1选1的多路选择器组(C),2选1的多路选择器组(D)和(E),极值指针寄存器组(F)的深度,以及两组2选1的多路选择器组、极值指针寄存器组(F)、2选1的多路选择器(EN)和当前采样写指针寄存器(FN)的宽度;步骤2、选择待查找的数据源的个数m,以确定电路的运行时间为m个时钟;步骤3、根据查找数值类型,选择比较器的输出类型;步骤4、复位寄存器组、极值指针寄存器组和新采样写指针寄存器;步骤5、每个时钟向电路输入一个数据;步骤6、经过m个时钟后停止本电路,此时寄存器组中保存的即为n个极值,极值指针寄存器组内保存的是这些极值的大小顺序。
所述步骤1中寄存器组(A)和比较器组(B)深度为n+1;n+1选1的多路选择器组(C),2选1的多路选择器组(D),极值指针寄存器组(F)的深度为n;2选1多路选择器(E)的深度为n-1;n+1选1的多路选择器组(C)的宽度为1;2选1的多路选择器组(D)和(E),极值指针寄存器组(F),2选1的多路选择器(EN)和当前采样写指针寄存器(FN)的宽度为大于或等于log2(n+1)的最小整数。
所述步骤4中极值指针寄存器组(F)和当前采样写指针寄存器(FN)要分别复位,且复位后的值各不相同;查找最大值时,寄存器组(A)全部复位为其最小值,否则寄存器组(A)全部复位为其最大值。
采用本发明所述的方法和装置,与现有技术相比,本发明克服了软件排序花费时间长,不能用于实时性要求高的场合的缺点。本发明使用硬件电路来实现数据的排序,此电路每个时钟可以处理一个数据,目前的集成电路一般可以工作在100MHz以上,对10万个数据进行排序的时间小于1ms,如果使用多套排序电路并行工作,排序时间还可以成倍减少,所以本电路的实时处理性强,可以满足对处理时间要求比较高的场合。


图1为一个单链表的示意图;图2为对图1进行重新排列并去掉空指针后得到的单链表;图3为一个2选1的多路选择器;图4为一个16选1的多路选择器;图5为本发明的电路结构框图;图6为本发明的一个具体实施例;图7为本发明所述方法的流程图。
具体实施例方式
下面结合附图和实施例对本发明作进一步的详细说明。
在说明本发明之前,先对本发明的原理作一个简要的说明。
本方法的主要思想来源于软件数据结构中的单链表,单链表是存储数据的一种结构,访问存储在链表中的数据时,需要查询一组指针,这组指针的内容为这些数据的存储位置。
附图1为一个单链表的示意图,头指针为d0的存储位置,指针1为d1的存储位置,......,指针n为dn的存储位置,最后是一个空指针,如果n为一个固定的数,可以不使用最后的空指针。
附图2为对附图1进行重新排列并去掉空指针后得到的单链表。
为了更好的解释本发明,下面对本发明中用到的一些元件进行说明。
附图3为一个2选1的多路选择器,i0,i1为数据输入端口,s为选择控制端口,z为输出端口,当s为0时,z的输出为i0,当s为1时,z的输出为i1。
附图4为一个16选1的多路选择器,i为数据输入端口,s为选择控制端口,z为输出端口。i的位宽为16,i由i15, i14, i13,......,i1,i0组成;s的位宽为4,取值范围为0-15。当s的值为j时,z的输出为ij,这里j的取值范围为0-15。如果一个多路选择器的输入位宽是其他值,其工作原理与16选1的多路选择器是相似的。可以用2选1的多路选择器搭建16选1的多路选择器或其他类型的多路选择器。
通用的比较器一般有两个输入A和B,三个输出,一个输出判断A是否大于B,一个判断A是否等于B,另一个判断A是否小于B。本发明中用到的比较器只需要一个输出,根据需要可以是判断A是否大于B的,也可以是判断A是否小于B的。
本发明所述的排序电路主要用于从m个数据中找出n个最大(或最小)的数据,m≥n,并且同时实现对这n个最大(或最小)的值进行大小排序。此电路主要由以下几个部分组成一组寄存器A,一组比较器B,一组n+1选1的多路选择器C,一组2选1的多路选择器D,一组2选1的多路选择器E,一组极值指针寄存器F,一个2选1的多路选择器EN,一个当前采样(新采样)写指针寄存器FN,一个地址译码器G。
本电路的输入连接到寄存器组A和比较器组B,本电路的输出为寄存器组A和极值指针寄存器组F。
地址译码器G的输出连接到寄存器组A的输入使能端;寄存器组A的输出作为比较器组B的输入;比较器组B的输出作为多路选择器组C的输入,极值指针寄存器组F作为多路选择器组C的控制端;多路选择器组C的输出作为多路选择器组D的控制端,新采样写指针寄存器FN和极值指针寄存器组F作为D的输入端;多路选择器组C的输出作为多路选择器组E的控制端,多路选择器组D的输出和极值指针寄存器组F作为E的输入端;多路选择器组E的输出作为极值指针寄存器组F的输入端;多路选择器组C的输出作为多路选择器EN的控制端,新采样写指针寄存器FN和极值指针寄存器组F作为EN的输入端;多路选择器EN的输出作为新采样写指针寄存器FN的输入端,新采样写指针寄存器FN作为地址译码器G的输入端。如附图5所示。
利用上述电路生进行数据排序的方法,包括下列步骤步骤1、根据要查找最大值(或最小值)的个数n,确定本发明电路中A、B、C、D、E、F的深度和D、E、EN、F、FN的宽度。
A和B的深度为n+1,C、D、F的深度为n,E的深度为n-1,C的宽度为1,D、E、EN、F、FN的宽度为大于或等于log2(n+1)的最小整数;步骤2、选择待查找的数据源的个数m,以确定电路的运行时间为m个时钟,步骤3、根据查找类型,即,要查找最大值还是最小值选择比较器的输出类型;步骤4、复位寄存器组A、极值指针寄存器组F和新采样写指针寄存器FN;F和FN要分别复位为0,1,2,......,n,要保证他们复位后的值各不相同;查找最大值时,寄存器组A全部复位为其最小值,否则寄存器组A全部复位为其最大值。
步骤5、每个时钟向本发明的电路输入一个数据(采样);步骤6、经过m个时钟后停止本电路,此时寄存器组A中保存的即为n个极值,极值指针寄存器组F内保存的是这些极值的大小顺序。
使用寄存器组A保存当前的n个极值,极值指针寄存器组F用于记录A中各个极值的大小顺序,寄存器组A中另外有一个空间用于记录新的采样。
新的采样同时与A中所有的值进行比较,根据极值指针寄存器组F和比较器组B的比较结果来判断新的采样是否是一个新的极值,并同时判断出新的大小顺序。
如果当前采样不是新的极值,原先的大小顺序不变,下个当前采样在A中的写入位置与当前相同,否则原先的极值当中有一个将不再是极值,其在A中存储位置将变为下个当前采样在A中的写入位置。
上述极值大小顺序的调整和当前采样写入位置判断的操作通过n+1选1的多路选择器组C、2选1的多路选择器组D、2选1的多路选择器组E、极值指针寄存器组F、2选1的多路选择器EN、新采样写指针寄存器FN和地址译码器G共同来实现。
下面以从1000个无符号数据中选择15个最大值为例,详细讲解本发明所述的电路。
查找最小值的原理与查找最大值的原理类同。
此电路的详细结构如附图6所示,15个极值指针寄存器记录了当前15个最大值在寄存器组A中的存储位置,指针寄存器F-0记录当前最大值的位置,指针寄存器F-1记录当前次大值的位置,......,指针寄存器F-13记录当前次小值的位置,指针寄存器F-14记录当前最小值的位置。存储器A中虽然存储了15个最大值,但并不是一定按大小顺序存储,其大小顺序靠这15个极值指针寄存器来记录。存储器A中有额外一个空间周来存放当前的采样输入,其存储位置由新采样写指针寄存器FN指定。
当前采样进来后同时与寄存器组A中的16个值进行比较,以判断其是否是一个新的极值。如果当前采样没有当前15个最大值中的最小值大,则下个采样的写入位置保持不变仍然为FN的值;如果当前采样比前15个最大值中的任何一个大,则将下个采样的写位置替换为原先15个最大值中最小值的位置,并同时调整15个极值指针的内容,即同时调整寄存器组A中各个数据的大小顺序。
这里的电路实现为多路选择器EN的选择控制端为C-14的输出,EN的输入为FN和F-14,EN的输出为FN的输入,当C-14取值为0时,EN输出为FN,C-14取值为1时,EN输出为F-14。
在系统复位后,将15个指针寄存器F和新采样写指针寄存器FN复位,这里将指针0复位为15,指针1复位为14,指针2复位为13,......,指针14复位为1,指针FN复位位0;并且将寄存器组A全部复位为0。如图6中最右边所示。
寄存器组A中的16个值A-0,A-1,...,A-15(包含当前15个最大值)同时与当前采样进行比较,比较时使用16个比较器B-0,B-1,...,B-15,如果当前采样比A-s大,B-s输出为1,否则B-s的输出为0,s=1,...15。极值指针寄存器F-i记录了第i号最大值的存储位置,i=1,...14,因此可以通过极值指针寄存器F-i获得第i号最大值与当前采样的比较结果。多路选择器组C中有15个16选1的多路选择器,以极值指针寄存器F-i作为C-i的选择控制端,以B-0,B-1,...,B-1 5作为C-i的输入,C-i的输出为极值指针寄存器F-i对应的极值与当前采样的大小比较结果,如附图6中所示。
15个最大值的指针寄存器中,极值指针寄存器F-i记录的是当前第i个最大值的存储位置,i=0,...,14,即极值指针0对应当前最大值,极值指针1对应当前次大值,......,极值指针1 4对应当前15个最大值中的最小值。
如果当前采样没有寄存器组A中当前15个最大值中的最小值大,则下个采样的写位置仍然为新采样写指针寄存器FN的值,15个极值指针的内容也不用调整;如果当前采样比寄存器组A中当前15个最大值中的任何一个大,则下个采样的写位置为原先15个最大值中最小值的位置,即极值指针寄存器F-14的值。
对于15个极值指针寄存器中的任何一个指针寄存器F-i来说,如果当前采样没有自己对应的值大,则指针寄存器F-i的内容不需要更改;如果当前采样刚好替代了原先第i个最大值的大小位置,则指针寄存器F-i替换为当前采样指针的值,即替换为新采样写指针寄存器FN的内容;如果当前采样比指针寄存器F-i-1对应的值还大,则指针寄存器F-i的内容要替换为指针寄存器F-i-1的内容;这里,当前采样与第i-1个最大值的比较结果优先级高于当前采样与第i个最大值的比较结果。
在本发明中,其电路实现为将第i个最大值与当前采样的比较结果C-i作为多路选择器D-i的选择控制端,FN和F-i做为D-i的输入,C-i为1时D-i的输出为FN,否则输出为F-i;将笫i-1个最大值与当前采样的比较结果C-i-1作为多路选择器E-i的选择控制端,D-i和F-i-1做为E-i的输入,C-i-1为1时E-i的输出为F-i-1,否则输出为D-i;E-i的输出作为指针F-i的输入,如附图6中所示。
对于指针0来讲,由于指针0对应的为15个最大值中的最大值,因此不需要E-0,直接将D-0的输出作为F-0的输入,如附图6中所示。
当前采样的写入位置为新采样写指针寄存器FN的输出,当前采样连接到寄存器组A中所有寄存器的输入端口,寄存器组A中的各个寄存器都有使能端口。将新采样写指针寄存器FN的输出送入4-16译码器G,由G生成寄存器组A中各个寄存器的使能。地址译码器G的输出位宽为16,其输出信号分别为G15,G14,...,G1,G0,。当4-16译码器的输入取值为s时,其输出Gs为有效,其他输出为无效,s=0,1,...15,Gs连接到A-s的使能端口,这样当前采样就只可以写入FN所指示的寄存器中。
通过上面的操作,经过1000个时钟以后,就可以将15个最大值挑选出来,这些值保存于寄存器组A中,他们在寄存器组A中的存储位置保存于15个极值指针寄存器中,极值指针寄存器F-0对应最大值,指针存器F-1对应次大值,......,指针存器F-14对应15个最大值中的最小值。
利用图6中的装置查找最大值的过程,包括下列步骤步骤1、根据要查找最大值的个数15,可确定A和B的深度为16,C、D、F的深度为15,E的深度为14,C的宽度为1,D、E、EN、F、FN的宽度为4;步骤2、根据待查找的数据源的个数1000,确定电路的运行时间为1000个时钟,步骤3、根据查找类型,即,要查找最大值选择比较器的输出类型;步骤4、将寄存器组A全部复位为0,将极值指针寄存器组F和新采样写指针寄存器FN复位为1,2,......,15,0;步骤5、每个时钟向本发明的电路输入一个数据(采样);步骤6、经过1000个时钟后停止本电路,此时15个最大值保存于寄存器组A中,极值指针寄存器组F内保存的是这些极值的大小顺序。
权利要求
1.一种实现数据排序的硬件电路,其特征在于,包括一组寄存器(A),一组比较器(B),一组n+1选1的多路选择器(C),一组2选1的多路选择器(D),一组2选1的多路选择器(E),一组极值指针寄存器(F),一个2选1的多路选择器(EN),一个当前采样(新采样)写指针寄存器(FN),一个地址译码器(G);输入数据连接到寄存器组(A)和比较器组(B),输出为寄存器组(A)和极值指针寄存器组(F)的输出;所述地址译码器(G)的输出连接到寄存器组(A)的输入使能端;寄存器组(A)的输出作为比较器组(B)的输入;比较器组(B)的输出作为多路选择器组(C)的输入,极值指针寄存器组(F)作为多路选择器组(C)的控制端;多路选择器组(C)的输出作为多路选择器组(D)的控制端,新采样写指针寄存器(FN)和极值指针寄存器组(F)作为多路选择器组(D)的输入端;多路选择器组(C)的输出作为多路选择器组(E)的控制端,多路选择器组(D)的输出和极值指针寄存器组(F)作为多路选择器组(E)的输入端;多路选择器组(E)的输出作为极值指针寄存器组(F)的输入端;多路选择器组(C)的输出作为多路选择器(EN)的控制端,新采样写指针寄存器(FN)和极值指针寄存器组(F)作为多路选择器(EN)的输入端;多路选择器(EN)的输出作为新采样写指针寄存器(FN)的输入端,新采样写指针寄存器(FN)作为地址译码器(G)的输入端。
2.如权利要求1所述的实现数据排序的硬件电路,其特征在于所述寄存器(A)中有额外一个空间来存放当前的采样输入,其存储位置由新采样写指针寄存器(FN)指定。
3.一种上述硬件电路实现数据排序的方法,其特征在于步骤1、根据要查找值个数n,确定寄存器组(A),比较器组(B),n+1选1的多路选择器组(C),2选1的多路选择器组(D)和(E),极值指针寄存器组(F)的深度,以及两组2选1的多路选择器组、极值指针寄存器组(F)、2选1的多路选择器(EN)和当前采样写指针寄存器(FN)的宽度;步骤2、选择待查找的数据源的个数m,以确定电路的运行时间为m个时钟;步骤3、根据查找数值类型,选择比较器的输出类型;步骤4、复位寄存器组、极值指针寄存器组和新采样写指针寄存器;步骤5、每个时钟向电路输入一个数据;步骤6、经过m个时钟后停止本电路,此时寄存器组中保存的即为n个极值,极值指针寄存器组内保存的是这些极值的大小顺序。
4.如权利要求3所述的实现数据排序的方法,其特征在于,所述步骤1中寄存器组(A)和比较器组(B)深度为n+1;n+1选1的多路选择器组(C),2选1的多路选择器组(D),极值指针寄存器组(F)的深度为n;2选1多路选择器(E)的深度为n-1;n+1选1的多路选择器组(C)的宽度为1;2选1的多路选择器组(D)和(E),极值指针寄存器组(F),2选1的多路选择器(EN)和当前采样写指针寄存器(FN)的宽度为大于或等于log2(n+1)的最小整数。
5.如权利要求3或4所述的实现数据排序的方法,其特征在于,所述步骤4中极值指针寄存器组(F)和当前采样写指针寄存器(FN)要分别复位,且复位后的值各不相同;查找最大值时,寄存器组(A)全部复位为其最小值,否则寄存器组(A)全部复位为其最大值。
全文摘要
本发明公开了一种实现数据排序的硬件电路及方法,所述电路主要用于从m个数据中找出n个最大(或最小)的数据,m≥n,并且同时实现对这n个最大(或最小)的值进行大小排序。具体包括一组寄存器,一组比较器,一组n+1选1的多路选择器,两组2选1的多路选择器,一组极值指针寄存器,一个2选1的多路选择器,一个当前采样(新采样)写指针寄存器,一个地址译码器。所述的方法和装置,采用硬件电路来实现数据的排序,此电路每个时钟可以处理一个数据,如果使用多套排序电路并行工作,排序时间还可以成倍减少,所以本电路的实时处理性强,可以满足对处理时间要求比较高的场合。
文档编号G06F7/76GK1987771SQ20051013502
公开日2007年6月27日 申请日期2005年12月23日 优先权日2005年12月23日
发明者温子瑜 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1