一种数据分组快速查找定位法的制作方法

文档序号:6423543阅读:221来源:国知局
专利名称:一种数据分组快速查找定位法的制作方法
技术领域
本发明涉及数据分组的快速查找定位方法,尤其涉及运用硬件电路实现的数据分组快速查找定位方法。
背景技术
目前,随着高速信号处理技术应用的日益广泛,对于数据分组查找定位的速度要求日益提高;普通的逐次比较数据分组查找定位法比较次数多、查找速度慢,尤其当数据的分组组数很大时,普通的逐次比较数据分组查找定位法所耗费的时间将成为限制高速信号处理的主要因素,不利于高速信号处理、分析功能的实现。为解决上述问题,本发明提出一种基于硬件电路的数据分组快速查找定位方法, 可以用最少的比较次数快速确定外部输入数据在整个数据范围内属于哪一个分组,并将其所在的分组编号输出。与普通的逐次比较数据分组查找定位法相比,本发明可大大减少查找比较次数,提高数据分组查找定位的速度,有利于高速信号处理、分析功能的实现。

发明内容
技术问题本发明要解决的技术问题是提供一种基于硬件电路的数据分组快速查找定位方法,该方法可以根据用户设定的数据范围和分组组数,用最少的比较次数快速确定外部输入数据在整个数据范围内属于哪一个分组,并将其所在的分组编号输出,大大提高数据分组查找定位的速度。技术方案为解决上述技术问题,本发明采用的技术方案是—种数据分组快速查找定位方法,包括以下步骤a)根据外部输入数据是无符号数还是有符号数,转换得到查找使用的输入数据;b)判别用户设定的数据范围与数据分组的组数,并根据外部输入数据是无符号数还是有符号数,转换得到查找使用的数据范围与数据分组的组数;c)由转换得到的查找使用的数据范围与数据分组的组数,计算查找使用的各数据分组之间的分组边界值;d)分组边界值存储到存储器中;e)分组查找定位过程由状态机控制,将查找使用的输入数据与存储器中的分组边界值进行比较,并根据本次比较的结果选择下一次比较时所要使用的分组边界值;f)当完成了分组查找定位过程所需的比较次数后,分组查找定位过程结束,最终输出外部输入数据所属的分组编号;所述步骤a)中,外部输入数据的无符号数和有符号数分别为固定长度无符号二进制数,和固定长度有符号二进制数;它们的长度为L比特,L为任意自然数。所述步骤a)中,查找使用的输入数据转换的方法为如果外部输入数据是无符号数,则所述查找使用的输入数据等于外部输入数据;
如果外部输入数据是有符号数,则所述查找使用的输入数据为将外部输入数据的最高位取反,其余位保持不变,并将其视为无符号数; 综上,查找使用的输入数据始终为无符号数。所述步骤b)中,用户设定的数据范围是指,进行数据分组查找时,由用户设定外部输入数据可能出现的最小值b至最大值a ;数据分组是指,用户根据需要,将由用户设定的数据范围均勻划分为K个分组,K 为任意自然数;用户设定的数据分组的组数即为K ;所述步骤b)中,查找使用的数据分组的组数的转换方法为如果用户设定的数据分组的组数K = 2N,则查找使用的数据分组的组数M = K ;如果用户设定的数据分组的组数K兴2n,且< K < 2N,则查找使用的数据分组的组数M = 2n;所述N为任意自然数。所述步骤b)中,查找使用的数据范围分为下列4种情况1)如果用户设定的数据分组的组数K = 2N,其中N为任意自然数,同时外部输入数据为无符号数,则查找使用的数据范围等于用户设定的数据范围,即查找使用的数据范围的最小值Min = b,最大值Max = a ;2)如果用户设定的数据分组的组数K兴2n,且< K < 2ν,同时外部输入数据为无符号数,则查找使用的数据范围的计算方法为数据范围的最小值Min = b,最大值Max =b+(a_b)*2N/K ;3)如果用户设定的数据分组的组数K = 2n,同时外部输入数据为有符号数,则查找使用的数据范围计算方法为数据范围的最小值Min = d,d为将b的最高位取反,其余位保持不变;数据范围的最大值Max = c, c为将a的最高位取反,其余位保持不变;4)如果用户设定的数据分组的组数K兴2N,且< K < 2n,同时外部输入数据为有符号数,则查找使用的数据范围的计算方法为数据范围的最小值Min = d,最大值Max =d+(c-d)*2N/K。所述步骤C)中,分组边界值的求解方法为按照查找使用的数据分组的组数,将查找使用的数据范围均勻划分,得到各个数据分组;各数据分组中最小数据的值就是该数据分组的分组边界值;分组边界值的计算方法为V(i) = Min+(Max-Min)*i/M ;其中V(i)为第i个数据分组的分组边界值,即第i个数据分组中最小数据的值,i为整数,0彡i ( M-I,M为查找使用的数据分组的组数。所述步骤d)中,使用存储器按照顺序存储计算好的分组边界值,存储顺序为第一个单元空闲;第二个单元存放第(M/2)组的分组边界值;第三个和第四个单元分别存放第(M/4)组和第(3M/4)组的分组边界值;第五个至第八个单元分别存放第(M/8)组、第 (3M/8)组、第(5M/8)组和第(7M/8)组的分组边界值;并以此类推;分组边界值的个数等于查找使用的数据分组的组数M减1,即2N_1,N为任意自然数,分组边界值需要的存储器的容量为单元,与查找使用的分组组数相等;所述单元是指存储单元。所述步骤e)中,状态机的控制步骤包括
1)状态机首先初始化地址生成器的输出地址为1,即存储器的第二个单元;2)状态机按地址生成器的输出地址从分组边界值存储器中读取分组边界值,并将其与查找使用的输入数据进行比较,比较的结果为1比特,若查找使用的输入数据大于分组边界值,则比较结果为1 ;反之则比较结果为0 ;3)状态机根据本次读取分组边界值的存储单元地址和本次比较的结果,控制地址生成器生成下一次读取分组边界值的存储单元地址;将本次比较使用的分组边界值的存储单元地址左移1位,加上本次比较的结果,即可形成下一次比较使用的分组边界值的存储单元地址;4)判断比较次数是否达到查找定位过程所需的比较次数N,如果未达到,则跳转到步骤2),如果已达到,则分组查找定位过程结束,将最后一次读取分组边界值所使用的存储单元地址左移1位,加上最后一次比较的结果,就是查找使用的输入数据所属的分组编号,同时也是外部输入数据所属的分组编号,将此分组编号输出。所述步骤f)中,分组查找定位过程所需的比较次数N = t = Iog2 (M) = Iog2 (2n), 其中t为分组查找定位过程所需的比较次数,t与外部输入数据的大小无关,仅由查找使用的数据分组的组数M决定。存储器中的分组边界值在用户改变设定的数据范围时重新计算并更新。有益效果通过本发明提供的一种基于硬件电路的数据分组快速查找定位方法, 可以大大减少分组查找定位过程中的数据比较次数,提高数据分组查找定位的速度。普通的逐次比较数据分组查找定位法在分组组数为K的情况下,其中< K彡2N,平均需要进行K/2次比较才能确定外部输入数据的分组编号;利用本方法,可以将确定分组的比较次数减小到Iog2M次,其中M = 2n。本方法可以由现场可编程门阵列(FPGA)等电路形式实现, 为高速信号处理或分析算法提供数据分组快速查找定位功能。


图1、本发明的模块框图,图2、控制状态机的状态转换图,图3、分组边界值存储器数据分布图。
具体实施例方式下面结合

本发明的具体实施方式
。图1为本发明实施例所基于的硬件电路的模块框图。在查找定位过程开始之前,首先根据外部输入数据是无符号数还是有符号数,转换得到查找使用的输入数据;判别用户设定的数据范围与分组组数的情况并根据外部输入数据是无符号数还是有符号数,转换得到查找使用的数据范围与分组组数;由转换得到的查找使用的数据范围与分组组数,计算查找使用的各数据分组之间的分组边界值;分组边界值按照特定的顺序存储到存储器中,存储顺序如下(如图2所示)第一个单元空闲; 第二个单元存放第(M/2)组的分组边界值;第三个和第四个单元分别存放第(M/4)组和第(3M/4)组的分组边界值;第五个至第八个单元分别存放第(M/8)组、第(3M/8)组、第 (5M/8)组和第(7M/8)组的分组边界值;并以此类推。分组边界值的个数等于查找使用的分组组数M减1,即2n-1,N为任意自然数,其需要的存储器的容量为2N个单元,与查找使用的分组组数相等。完成分组边界值计算存储过程后,可以开始查找定位过程,具体过程如下首先将分组边界值存储器的地址初始化为1 ;根据外部输入数据是二进制无符号数还是有符号数,转换得到查找使用的输入数据并输入数据比较器,与从存储器读出的分组边界值进行比较;比较的结果送入地址生成模块用于产生下一次读取分组边界值时的存储器地址,即将本次读取的分组边界值的地址左移1位,并加上本次数据比较的结果,形成下一次的分组边界值读取地址。整个查找定位过程需要多次重复进行数据比较,当比较次数达到查找定位过程所需的比较次数时,分组查找定位过程结束,查找比较的结果通过地址生成模块输出给后续模块,为后续处理提供数据。整个查找定位过程由状态机控制,其状态转换图如图3所示,具体过程如下电路上电后处于复位状态,在此状态,电路中各寄存器清零,此状态下可以更改分组边界值存储器的内容;当复位信号结束后,电路将自动进入数据比较状态,开始数据比较过程。在数据比较状态,状态机控制数据比较模块读取查找使用的输入数据,并与从分组边界值存储器读取的分组边界值进行比较,比较的结果将被送入地址生成器,用于产生下一次的分组边界值读取地址或产生最终的比较结果;比较完成后,状态机进入地址生成状态。在地址生成状态,状态机将控制地址生成器,根据本次读取分组边界值的地址和本次数据比较的结果,生成下一次读取分组边界值的地址;当地址生成完成后,状态机将判断当前进行的数据比较次数是否达到了查找定位过程所需的比较次数N,如果没有达到N, 则状态机转入数据比较状态,继续进行数据比较;若已达到N,则查找定位过程结束,进入完成状态。在完成状态,状态机控制地址生成器输出查找定位结果,即分组编号,并停留在此状态,直到复位信号到来,重新回到复位状态。实施例1现假设外部输入数据为6位无符号数,用户设定的数据范围的最大值a为45,最小值b为5,用户设定的分组组数K为8,各分组的数据范围为第0组[5,10]、第1组[10, 15]、第 2 组[15,20]、第 3 组:[20,25]、第 4 组:[25,30]、第 5 组:[30,35]、第 6 组:[35, 40]、第7组[40,45]。假设此时外部输入数据χ = 29,此数据应当属于第4组[25,30]。由于用户设定的分组组数8 = 23,且外部输入数据为无符号数,按照分组边界值的计算公式,各分组边界值依次为5、10、15、20、25、30、35、40 ;按照分组边界值的存储方法, 分组边界值存储器中第0到第7个单元内容依次为空闲、25、15、35、10、20、30、40,分组边界值存储器的地址只需3位(二进制);由于用户设定的分组组数8 = 23,分组查找定位过程所需的比较次数t = Iog2S = 3。外部输入数据为29,因为外部输入数据是无符号数,所以查找使用的输入数据也是29,整个分组查找定位过程如下初始化存储器地址为1,查找使用的输入数据29首先与1号地址的分组边界值25比较,比较结果为大于(即1),因此下一次比较的地址为本次地址1左移1位再加上比较结果1,得到3 ;查找使用的输入数据29 再与3号地址的分组边界值35进行比较,比较结果为小于(即0),因此下一次比较的地址为本次地址3左移1位在加上比较结果0,得到6 ;查找使用的输入数据29再次与6号地址的分组边界值30进行比较,比较结果为小于(即0),此时比较次数已达到8组数据查找定位时需要的3次,因此比较过程结束,输出结果为本次地址6左移1位再加上比较结果0,取该结果的低3位得到4 (因为分组边界值存储器的地址只有3位),即外部输入数据29属于分组编号为4的数据分组[25,30],该结果与前面分析的情况一致。实施例2现假设外部输入数据为7位有符号数,用户设定的数据范围的最大值a为35( 二进制补码为0100011),最小值b为-25 ( 二进制补码为1100111),用户设定的分组组数K为 6,各分组的数据范围为第0组[-25,-15]、第1组[-15,-5]、第2组[-5,5]、第3组[5, 15]、第4组[15,25]、第5组:[25,35]。假设此时外部输入数据χ = _10,此数据应当属于第 1 组[-15,-5]。由于用户设定的分组组数22 < 6 < 23,所以查找使用的分组组数M = 23 = 8 ;因为外部输入数据为有符号数,所以查找使用的数据范围最小值Min = 39(把用户设定的最小值b最高位取反,其余位保持不变,转换为二进制无符号数d = 0100111,其十进制为 39),最大值Max = 119(把用户设定的最大值a最高位取反,其余位保持不变,转换为二进制无符号数 c = 1100011,其十进制为 99 ;最大值 Max = d+(c-d)*2N/K = 39+(99-39) *8/6 =119);按照分组边界值的计算公式,各查找使用的分组边界值依次为39、49、59、69、79、 89,99,109 ;按照分组边界值的存储方法,分组边界值存储器中第0到第7个单元内容依次为空闲、79、59、99、49、69、89、109,分组边界值存储器的地址只需3位(二进制);由于用户设定的分组组数22 < 6 < 23,分组查找定位过程所需的比较次数t = log223 = 3。外部输入数据χ = -10,转换为查找使用的输入数据为54(-10的二进制补码为1110110,最高位取反,其余位保持不变,转换为二进制无符号数为0110110,其十进制为54),整个分组查找定位过程如下初始化存储器地址为1,查找使用的输入数据54首先与1号地址的分组边界值79比较,比较结果为小于(即0),因此下一次比较的地址为本次地址1左移1位再加上比较结果0,得到2 ;查找使用的输入数据54再与2号地址的分组边界值59进行比较,比较结果为小于(即0),因此下一次比较的地址为本次地址2左移1位在加上比较结果0,得到4 ;查找使用的输入数据54再次与4号地址的分组边界值49进行比较,比较结果为大于 (即1),此时比较次数达到8组数据查找定位时需要的3次,因此比较过程结束,输出结果为本次地址4左移1位再加上比较结果1,取该结果的低3位得到1 (因为分组边界值存储器的地址只有3位),即外部输入数据-10属于分组编号为1的数据分组[-15,-5],该结果与前面分析的情况一致。该方法可以根据用户设定的二进制数据范围和分组组数快速查找并确定外部输入的二进制数所在的分组编号,为高速信号处理或分析算法提供数据分组快速查找定位的功能。按照本发明提出的快速查找定位方法,可以用最少的比较次数快速确定外部输入数据在用户设定的数据范围内属于哪一个分组,并将其所在的分组编号输出。与普通分组查找定位方法相比,本发明可大大减少查找比较次数,提高数据分组查找定位的速度。本发明可以由现场可编程门阵列(FPGA)等电路形式实现。以上具体实施方式
仅用于说明本发明,而非用于限定本发明。
权利要求
1.一种数据分组快速查找定位方法,其特征在于包括以下步骤a)根据外部输入数据是无符号数还是有符号数,转换得到查找使用的输入数据;b)判别用户设定的数据范围与数据分组的组数,并根据外部输入数据是无符号数还是有符号数,转换得到查找使用的数据范围与数据分组的组数;c)由转换得到的查找使用的数据范围与数据分组的组数,计算查找使用的各数据分组之间的分组边界值;d)分组边界值存储到存储器中;e)分组查找定位过程由状态机控制,将查找使用的输入数据与存储器中的分组边界值进行比较,并根据本次比较的结果选择下一次比较时所要使用的分组边界值;f)当完成了分组查找定位过程所需的比较次数后,分组查找定位过程结束,最终输出外部输入数据所属的分组编号;所述步骤a)中,外部输入数据的无符号数和有符号数分别为固定长度无符号二进制数,和固定长度有符号二进制数;它们的长度为L比特,L为任意自然数。
2.如权利要求1所述的数据分组快速查找定位方法,其特征在于所述步骤a)中,查找使用的输入数据转换的方法为如果外部输入数据是无符号数,则所述查找使用的输入数据等于外部输入数据;如果外部输入数据是有符号数,则所述查找使用的输入数据为将外部输入数据的最高位取反,其余位保持不变,并将其视为无符号数;综上,查找使用的输入数据始终为无符号数。
3.如权利要求1所述的数据分组快速查找定位方法,其特征在于所述步骤b)中,用户设定的数据范围是指,进行数据分组查找时,由用户设定外部输入数据可能出现的最小值b 至最大值a ;数据分组是指,用户根据需要,将由用户设定的数据范围均勻划分为K个分组,K为任意自然数;用户设定的数据分组的组数即为K。
4.如权利要求3所述的数据分组快速查找定位方法,其特征在于所述步骤b)中,查找使用的数据分组的组数的转换方法为如果用户设定的数据分组的组数K = 2N,则查找使用的数据分组的组数M = K ;如果用户设定的数据分组的组数K兴2n,且< K < 2N,则查找使用的数据分组的组数 M = 2N ;所述N为任意自然数。
5.如权利要求3所述的数据分组快速查找定位方法,其特征在于所述步骤b)中,查找使用的数据范围分为下列4种情况1)如果用户设定的数据分组的组数K= 2N,其中N为任意自然数,同时外部输入数据为无符号数,则查找使用的数据范围等于用户设定的数据范围,即查找使用的数据范围的最小值Min = b,最大值Max = a ;2)如果用户设定的数据分组的组数K兴2N,且2H< K < 2n,同时外部输入数据为无符号数,则查找使用的数据范围的计算方法为数据范围的最小值Min = b,最大值Max = b+(a_b)*2N/K ;3)如果用户设定的数据分组的组数K= 2n,同时外部输入数据为有符号数,则查找使用的数据范围计算方法为数据范围的最小值Min = d,d为将b的最高位取反,其余位保持不变;数据范围的最大值Max = c, c为将a的最高位取反,其余位保持不变;4)如果用户设定的数据分组的组数K兴2N,且< K < 2n,同时外部输入数据为有符号数,则查找使用的数据范围的计算方法为数据范围的最小值Min = d,最大值Max = d+(c-d)*2N/K。
6.如权利要求1所述的数据分组快速查找定位方法,其特征在于所述步骤c)中,分组边界值的求解方法为按照查找使用的数据分组的组数,将查找使用的数据范围均勻划分,得到各个数据分组;各数据分组中最小数据的值就是该数据分组的分组边界值;分组边界值的计算方法为V(i) = Min+(Max-Min)*i/M ;其中V(i)为第i个数据分组的分组边界值,即第i个数据分组中最小数据的值,i为整数,O彡i ( M-1,M为查找使用的数据分组的组数。
7.如权利要求1所述的数据分组快速查找定位方法,其特征在于所述步骤d)中,使用存储器按照顺序存储计算好的分组边界值,存储顺序为第一个单元空闲;第二个单元存放第(M/2)组的分组边界值;第三个和第四个单元分别存放第(M/4)组和第(3M/4)组的分组边界值;第五个至第八个单元分别存放第(M/8)组、第(3M/8)组、第(5M/8)组和第 (7M/8)组的分组边界值;并以此类推;分组边界值的个数等于查找使用的数据分组的组数M减1,即2n-1,N为任意自然数,分组边界值需要的存储器的容量为单元,与查找使用的分组组数相等;所述单元是指存储单元。
8.如权利要求7所述的数据分组快速查找定位方法,其特征在于所述步骤e)中,状态机的控制步骤包括1)状态机首先初始化地址生成器的输出地址为1,即存储器的第二个单元;2)状态机按地址生成器的输出地址从分组边界值存储器中读取分组边界值,并将其与查找使用的输入数据进行比较,比较的结果为1比特,若查找使用的输入数据大于分组边界值,则比较结果为1 ;反之则比较结果为O ;3)状态机根据本次读取分组边界值的存储单元地址和本次比较的结果,控制地址生成器生成下一次读取分组边界值的存储单元地址;将本次比较使用的分组边界值的存储单元地址左移1位,加上本次比较的结果,即可形成下一次比较使用的分组边界值的存储单元地址;4)判断比较次数是否达到查找定位过程所需的比较次数N,如果未达到,则跳转到步骤2),如果已达到,则分组查找定位过程结束,将最后一次读取分组边界值所使用的存储单元地址左移1位,加上最后一次比较的结果,就是查找使用的输入数据所属的分组编号,同时也是外部输入数据所属的分组编号,将此分组编号输出。
9.如权利要求1所述的数据分组快速查找定位方法,其特征在于步骤f)中,分组查找定位过程所需的比较次数N = t = Iog2(M) = log2(2N),其中t为分组查找定位过程所需的比较次数,t与外部输入数据的大小无关,仅由查找使用的数据分组的组数M决定。
10.如权利要求1所述的数据分组快速查找定位方法,其特征在于存储器中的分组边界值在用户改变设定的数据范围时重新计算并更新。
全文摘要
本发明公开了一种数据分组快速查找定位方法,首先判别用户设定的数据范围、分组组数和外部输入数据的情况并转换得到查找使用的数据范围、分组组数和查找使用的输入数据,计算、存储各分组边界值,再由状态机控制整个分组查找定位过程。分组查找定位过程中将查找使用的输入数据按特定方式与事先计算存储好的分组边界值进行比较。按照本发明提出的快速查找定位方法,可以用最少的比较次数快速确定外部输入数据在用户设定的数据范围内属于哪一个分组,并将其所在的分组编号输出。
文档编号G06F17/30GK102184214SQ20111011448
公开日2011年9月14日 申请日期2011年5月4日 优先权日2011年5月4日
发明者崔城, 张岩, 高礼忠 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1