一种归并排序结构制造技术

技术编号:8980637 阅读:186 留言:0更新日期:2013-07-31 22:46
本发明专利技术涉及排序算法领域,具体为一种归并排序结构,其利用FPGA结构实现归并排序的操作,实现资源和效率的最大化,能够完全满足对于高清实时图片的特征点排序的要求,且时间复杂度优于基于PC操作的归并排序,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。

【技术实现步骤摘要】

本专利技术涉及排序算法领域,具体为一种归并排序结构
技术介绍
排序算法在科学
已经有了极其详尽的研究,已有许多成熟的排序算法,近年来,在不同的应用下也提出了多种基于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减一,组标本文档来自技高网
...

【技术保护点】
一种归并排序结构,其特征在于,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。

【技术特征摘要】
1.一种归并排序结构,其特征在于,其包括归并组件,所述归并组件包括存储的队列,所述队列连接比较器和辅助控制器,所述辅助控制器上设置有计数所述队列出队或入队操作的计数器。2.根据权利要求1所述的一种归并排序结构,其特征在于,所述存储的队列包括两个队列寄存器,两个所述队列寄存器连接所述比较器,两个所述队列寄存器分别连接所述辅助控制器。3.根据权利要求2所述的一种归并排序结构,其特征在于,所述比较器采用上升沿触发。4.根据权利要求3所述的一种归并排序结构,其特征在于,所述辅助控制器设置有计数每个所述队列寄存器的出队或入队的计数器。5.根据权利要求1所述的一种归并排序结构,其特征在于,所述存储的队列包括两个FIFO,所述辅助控制器包括时序逻辑辅助控制器和组合逻辑辅助控制器,所述时序逻辑辅助控制器和所述组合逻辑辅助控制器分别连接所述FIFO,所述FIFO分别设置有FIFOIN和FIF00U...

【专利技术属性】
技术研发人员:柴志雷
申请(专利权)人:江苏复芯物联网科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1