一种归并排序结构的制作方法

文档序号:6401192阅读:245来源:国知局
专利名称:一种归并排序结构的制作方法
技术领域
本发明涉及排序算法领域,具体为一种归并排序结构。
背景技术
排序算法在科学技术领域已经有了极其详尽的研究,已有许多成熟的排序算法,近年来,在不同的应用下也提出了多种基于FPGA的排序方法,根据应用的不同,基于FPGA的排序一般分为两类:基于网络的排序和基于线性数组的排序。基于网络的排序一般使用两输入的交换比较器来排序,Zhang,Y.采用了固定大小的排序网络,分为输入队列,乒乓排序网络,和输出检测模块。Martinez et al.提出了应用在块排序压缩上的网络排序算法,采用了乒乓操作,实现数据循环处理,排序单元处理128个字符,最终的结果显示可达到的最大时钟频率为50MHZ左右。基于线性数组的排序基于可扩展的线性数组,Paraham, Kwai采用比较/插入单元,每个单元包含比较器,乘法器和控制单元,可扩展线性数组包含一系列的单元。K.Ratnayake和A.Amer提出了计数排序算法, 不过他们是在BRAMS上实现排序算法,较为复杂,M.Edahiro在EDK的开发环境下实现了并行的排序算法。纵观以上排序算法,有的是针对特殊应用的排序,有的在对有限的数据排序的时候,资源利用率较高的同时,最大时钟频率很低,无法满足对于高清实时图片的特征点排序的要求。归并排序是建立在归并操作上的一种有效排序算法,归并操作是将两个或两个以上有序队列合并成一组新的有序表,举例如下,若已知两组有序队列分别为1,3,5和2,4,6,见图1所示,两路归并操作,A,B分别为排完序的有序队列,C为A,B的归并结果,其归并步骤如下:
1、分别取A,B的队头,设a,b,比较a,b两者的大小;(比较操作)
2、a,b中较大者出队,放入缓存tmp中;(出队操作)
3、tmp压入C的队尾;(入队操作)
重复步骤1-3直到A,B中一个为空,执行步骤4 ;
4、A/B为空,将B/A队头放入tmp中;(出队操作)
5、将tmp压入C的队尾;(入队操作)
重复步骤5-6,直到A,B两者都为空。一种基于归并操作的归并排序,设待排序的数列为D[n],数列的长度为N,其归并步骤如下所述:将D[n]分为N个已排完序的长度为I的队列,两两之间运行用归并操作,合并成floor[n/2]个两两有序的队列,循环进行之,两两之间进行归并操作,直到最后合并成一个N有序的队列,举例见图2所示,数列为1,3,5,2,4,6,对其进行归并排序,步骤如下
1、将队列中I和3,5和2,4和6进行归并操作得到3个队列3,I和5,2及6,4;
2、将队列3,I和5,2记性归并操作得到队列5,3,2,I;
3、将队列5,3,2,I与队列6,4进行归并操作得到有序队列6,5,4,3,2,I。
以上归并排序的是基于PC操作,其算法比较简单,适用于多种队列的排序,归并排序效率高且稳定,但是比较占用内存,其时间复杂度为0(Nlog(N)),空间负责度是0(N)。

发明内容
为了解决上述问题,本发明提供了一种归并排序结构,其利用FPGA结构实现归并排序的操作,实现资源和效率的最大化,能够完全满足对于高清实时图片的特征点排序的要求,且时间复杂度优于基于PC操作的归并排序。其技术方案是这样的:一种归并排序结构,其特征在于,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。其进一步特征在于,所述存储的队列包括两个队列寄存器,两个所述队列寄存器连接所述比较器,两个所述队列寄存器分别连接所述辅助控制器;所述比较器采用上升沿触发;所述辅助控制器设置有计数每个所述队列寄存器的出队或入队的计数器。其进一步特征在于,所述存储的队列包括两个FIFO,所述辅助控制器包括时序逻辑辅助控制器和组合逻辑辅助控制器,所述时序逻辑辅助控制器和所述组合逻辑辅助控制器分别连接所述FIFO,所述FIFO分别设 置有FIFOIN和FIF00UT端口,所述其中一个FIFO的FIF00UT端口连接所述另一个FIFO的FIFOIN端口,读信号口、写信号口分别连接所述FIFO ;所述FIFO的FIF00UT端口分别连接比较器,所述时序逻辑辅助控制器设置有计数所述每个所述FIFO出队或入队操作的计数器;
所述读信号口和所述比较器通过与门分别连接所述FIF0,通过所述比较器分别处理得到额外读信号与所述读信号口读信号共同控制每个所述FIFO的读操作。其更进一步特征在于,所述归并组件包括两个及两个以上,每个所述归并组件中的所述辅助控制器上还设置有所述归并组件的输入输出切换的组计数器;相邻的两个所述归并组件的输出可以作为下一所述归并组件的输入。采用本发明的结构后,其利用FPGA结构中的存储的队列、比较器、辅助控制来实现归并排序的操作,且其归并排序的空间复杂度是O(N),优于基于PC操作的归并排序的时间复杂度CCiVlog(Ar)),结构简单,且操作稳定,实现资源和效率的最大化,能够完全满足对于高清实时图片的特征点排序的要求。


图 为归并操作示意 图2为基于归并操作的归并排序示意 图3为基于寄存器归并操作示意 图4为基于FIFO的归并操作示意图。
具体实施例方式见图3所示,为基于寄存器的归并操作,其硬件结构:存储的队列包括两个队列寄存器,两个队列寄存器连接比较器,两个队列寄存器分别连接辅助控制器,比较器采用上升沿触发,辅助控制器设置有计数每个队列寄存器的出队或入队的计数器;队列:队列长度为N:N个寄存器Dl,D2...DN,其中Dl为队头,DN为队尾;比较器:排序的数据位η位,采用η位的比较器,由上升沿触发;辅助控制器:每个队列有一个标记位FLAG,用一个标记位FLAG来计数,初始为O,入队时标记加一,出队时标记减一,一组队列(两个)有一个组标记位BUFFFLAG,用来判断归并组件之间的输入输出切换,实现多组归并组件的乒乓操作。需要排列的数据分别输入到两个队列寄存器中,队列寄存器每进入一个数据,通过计数器对标记位FLAG加一,直到所有数据都进入到两个队列寄存器中,然后分别从两个队列寄存器的队头取出数据,通过比较器进行比较,将比较结果输出,同时队列寄存器每取出一个数据,通过计数器对标记位FLAG减一,重复以上操作,直到一个队列寄存器中的数据全部取出,即标记位FLAG为O时,将另一个队列寄存器中的数据依次输出,完成排序。行为描述:(以下操作均为一个时间周期内,由上升沿触发) 队列行为:
(1)出队操作,OUIX=Dl;D1〈=D2; D2〈=D3;…D(N-1X=DN ;
(2)入队操作,D1<=D2;D2<=D3;— D (N-1) <=DN;DN<=IN ;
(3)判断队列是否为空,FLAG为O时,队列空;FLAG等于N,队列满。归并输入:
(1)在Te[I, Iij时,A依次入队,队列标记位FLAG加一,组标记位BUFFFLAG加一。(2)在Γ€ [ii+UJV]时,B依次入队,队列标记位FLAG加一,组标记位BUFFFLAG加
O归并输出:
⑴在八,B非空时卿A_FLAG>0,B_FLAG>0),比较A,B的队头,输出其中较大者,并将其队头出队;将其队列标记位FLAG减一,组标记位BUFFFLAG减一,0UTENABLE为I ;
(2)当A,B任一为空时,依次输出另一队列,将其标记位FLAG减一,组标记位BUFFFLAG减一,0UTENABLE 为 O ;直到 A, B 均为空,0UTENABLE 为 O。以上步骤可见基于寄存器的归并操作步骤和经典的PC操作几乎一样,因为在基于寄存器实现的时候,出队,入队,取队头,比较大小都可以在同一个时钟周期内实现,所以可以直接用时序逻辑实现。见图4所示,为基于FIFO的归并操作,存储的队列包括两个FIFO,辅助控制器包括时序逻辑辅助控制器和组合逻辑辅助控制器,时序逻辑辅助控制器和组合逻辑辅助控制器分别连接FIFO,FIFO分别设置有FIFOIN和FIF00UT端口,其中一个FIFO的FIF00UT端口连接另一个FIFO的FIFOIN端口,读信号口、写信号口分别连接FIFO ;FIF0的FIF00UT端口分别连接比较器,时序逻辑辅助控制器设置有计数每个FIFO出队或入队操作的计数器;读信号口和比较器通过与门分别连接FIF0,通过比较器分别处理得到额外读信号与读信号口读信号共同控制每个FIFO的读操作。当基于FIFO实现的时候,入队,出队要依靠W,R信号位来控制,当一个上升沿后设置R=l,等一个时钟周期才能获得FIFO队头数据,若比较器用时序逻辑实现,则需要再等一个时钟周期之后,才能比较两个队头数据,那么数据的输出比输入多一倍的时钟周期,无法组合成乒乓操作和并行的多层次结构,所以将FIFO的控制用时序逻辑实现,而将比较器用组合逻辑实现,从而实现输入,输出的时钟周期数相等。写信号设置为I,数据输入,由于A_FIF0的FIF00UT与B_FIF0的FIFOIN连接,数据一次输入后,每个FIFO进入一个数据,标记位FLAG加一,取出一个,标记位FLAG减一,直到数据全部输入,分别取两个FIFO的FIF00UT中的数据进行比较,将比较结果输出,同时,根据比较结果输出一个额外读信号与读信号口的读信号通过与门控制下组数据的读信号,同时FIFO每取出一个数据,通过计数器对标记位FLAG减一,重复以上操作,直到一个FIFO中的数据全部取出,即标记位FLAG为O时,将另一个FIFO的数据依次输出,完成排序。硬件结构:
队列=FIFO队列。FIFO长度为2M (大于等于N),有数据输入端口 FIF0IN、输出端口FIF00UT,和读信号W,写信号R,以及空满信号。比较器:排序的数据位η位,采用η位的比较器,采用组合逻辑实现。时序逻辑辅助控制器:每个FIFO有一个读信号R,写信号W,用一个标记位FLAG来计数,初始为O, W=I,入队时标记位FLAG加一,R=I,出队时标记位FLAG减一;一组队列(两个)有一个组标记位BUFFFLAG,用来判断组件的输入输出切换,实现多组的乒乓操作。组合逻辑辅助控制器:每个队列有一个额外读信号R1,由比较器的比较结果控制。队列行为:
(1)出队操作,FIF0IN〈=IN;R〈=l;
(2)入队操作,0UT<=FIF00UT;W<=1;
(3)判断队列是否为空,FIFO自己空满信号,不过一般FIFO的长度和有序队列的长度不等,所以还是用FLGA来判断,FLAG为O时,队列空;FLAG等于N,队列满。归并输入:
将A的队头和B的队尾衔接,数据始终由A的队尾插入,再由A的队头插入B的队尾,A、B由A_FIF00UT和B_FIF0IN衔接,等价模型就是A、B中间加了 2个寄存器:
1:A的队头和B的队尾衔接;B_FIFIIN〈=A_FIF00UT;
2:数据输入A,
权利要求
1.一种归并排序结构,其特征在于,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。
2.根据权利要求1所述的一种归并排序结构,其特征在于,所述存储的队列包括两个队列寄存器,两个所述队列寄存器连接所述比较器,两个所述队列寄存器分别连接所述辅助控制器。
3.根据权利要求2所述的一种归并排序结构,其特征在于,所述比较器采用上升沿触发。
4.根据权利要求3所述的一种归并排序结构,其特征在于,所述辅助控制器设置有计数每个所述队列寄存器的出队或入队的计数器。
5.根据权利要求1所述的一种归并排序结构,其特征在于,所述存储的队列包括两个FIFO,所述辅助控制器包括时序逻辑辅助控制器和组合逻辑辅助控制器,所述时序逻辑辅助控制器和所述组合逻辑辅助控制器分别连接所述FIFO,所述FIFO分别设置有FIFOIN和FIF00UT端口,所述其中一个FIFO的FIF00UT端口连接所述另一个FIFO的FIFOIN端口,读信号口、写信号口分别连接所述FIFO。
6.根据权利要求5所述的一种归并排序结构,其特征在于,所述FIFO的FIF00UT端口分别连接比较器,所述时序逻辑辅助控制器设置有计数所述每个所述FIFO出队或入队操作的计数器。
7.根据权利要求6所述的一种归并排序结构,其特征在于,所述读信号口和所述比较器通过与门分别连接所述FIF0,通过所述比较器分别处理得到额外读信号与所述读信号口读信号共同控制每个所述FIFO的读操作。`
8.根据权利要求1所述的一种`归并排序结构,其特征在于,所述归并组件包括两个及两个以上,每个所述归并组件中的所述辅助控制器上还设置有所述归并组件的输入输出切换的组计数器。
9.根据权利要求8所述的一种归并排序结构,其特征在于,相邻的两个所述归并组件的输出可以作为下一所述归并组件的输入。
全文摘要
本发明涉及排序算法领域,具体为一种归并排序结构,其利用FPGA结构实现归并排序的操作,实现资源和效率的最大化,能够完全满足对于高清实时图片的特征点排序的要求,且时间复杂度优于基于PC操作的归并排序,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。
文档编号G06F9/38GK103226464SQ20131010648
公开日2013年7月31日 申请日期2013年3月29日 优先权日2013年3月29日
发明者柴志雷 申请人:江苏复芯物联网科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1