CN104317549A - 一种实现数据排序的级联结构电路和方法 - Google Patents
一种实现数据排序的级联结构电路和方法 Download PDFInfo
- Publication number
- CN104317549A CN104317549A CN201410546091.9A CN201410546091A CN104317549A CN 104317549 A CN104317549 A CN 104317549A CN 201410546091 A CN201410546091 A CN 201410546091A CN 104317549 A CN104317549 A CN 104317549A
- Authority
- CN
- China
- Prior art keywords
- data
- input
- register
- extreme value
- sequencing unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Logic Circuits (AREA)
Abstract
本发明提供了一种实现数据排序的级联结构电路和方法,包括一个输入接口和由n个排序单元CEi构成的级联阵列,CEi的数据输出和使能输出连接到CEi+1的数据输入和使能输入;第一个排序单元CE0的数据输出和使能输出分别连接到排序电路的数据输入和数据输入使能。本发明电路结构简单、资源占用少,不需要额外的硬件电路来完成数据比较后的排序逻辑,不需要等待所有数据处理完成后才开始数据排序处理。
Description
技术领域
本发明适用于数字信号处理领域,涉及一种实现数据排序的电路和方法。
背景技术
排序是数据处理的基本操作之一,也经常出现在数字信号处理应用中,对大量信号数据进行排序搜索。该问题数学描述为对m个数据按数值进行排序,或者从m个数据中找出n个最大(或者最小)的数据(m>n),具体的应用如在相关曲面中搜索多个峰值等。
目前排序算法的实现大致可以分为软件实现和硬件实现两种方式。
软件实现排序的快速算法有很多,如快速排序、选择排序、冒泡排序、归并排序等技术。这些方法在程序设计中包含大量的分支判断和循环操作,在桌面处理及服务器应用方面具有较大优势。但是在图像处理、多媒体数据处理等需要高速数据处理的应用场合,这些排序算法的软件实现很难在DSP处理器上达到系统要求的处理时间。而且,在目前数字信号处理系统中大量采用FPGA实现的背景下,也无法有效采用软件实现的方式。
硬件实现可以利用并行性和流水操作的特点,大幅提速针对大量数据的排序处理。现有的公开专利中提供了一些硬件排序的解决方案。例如(1)中兴通讯公司的温子瑜申请的“实现数据排序的电路和方法”(申请号200610099538.8)、(2)国际商业机器公司(IBM)的俞尧等人申请的“一种实现数据排序的电路和方法”(申请号201010138972.9)。
实现方法(1)采用软件设计中单链表数据结构的思想,将输入数据和已排序完成的序列中的每一个数据比较,根据比较结果找到该输入数据在单链表中的合适位置。该电路排序m个数据中的n个极值需要m拍处理时间。为实现该电路,需要n个极值寄存器、n个指针寄存器、n个比较器、n个n选1的多路选择器、2(n-1)个2选1多路选择器。
实现方法(2)对m个数据排序,包括m(m=r×c)个存储单元和c个比较器。该电路通过牺牲一定的排序速度,来减少比较器的数目和控制逻辑的面积。(2)提出的方法仅用于实现m个数据的完全排序。由于数据逐个进入该电路,仍可将该电路设计成m个数据中的n(m=r′×c′)个极值的电路。但是,如果每拍输入一个数据(r′=1),该电路需要n个存储单元、n个比较器、n个多路开关、n个控制信号寄存器。
现有的排序电路硬件结构复杂,为确定新输入数据的位置需要较多的控制逻辑,或需要较多的时钟周期才能得到排序结果,在线排序的性能不高,不能匹配前级数据处理单元的数据吞吐率。
发明内容
为了克服现有技术的不足,本发明提供一种级联结构排序电路的结构和方法,简化排序电路设计的结构,提高硬件电路的排序速度,满足实时性的要求。同时,简化操作流程,向前端逻辑提供简易方便的接口完成数据的排序。
本发明解决其技术问题所采用的技术方案是:包括一个输入接口和由n个排序单元CEi构成的级联阵列,0≤i<n,n为需要排序的数值个数。
所述排序电路的输入接口包括一个数据输入接口和一个排序电路使能信号接口,待排序搜索的数据从数据接口输入到排序电路中,与数据同时输入一个节拍的使能EN有效信号,表明当前数据是有效数据,同时使能信号EN启动排序电路对数据的排序;
每一个排序单元包括两个输入接口和两个输出接口,一个输入接口为数据输入DataIn,另一个输入接口为使能控制信号EnIn,一个输出接口为数据经排序单元比较后的数据DataOut,另一个输出接口为对EnIn信号在当前排序单元内延迟一拍后输出EnOut;CEi的输出CEi.DataOut和CEi.EnOut连接到CEi+1的输入CEi+1.DataIn和CEi.EnIn;第一个排序单元CE0的输入CE0.DataIn和CE0.EnIn分别连接到排序电路为数据的输入DATA和数据输入使能EN;
每一个排序单元内部包括一个极值寄存器BR、一个级间缓存寄存器SR、一个比较器CP、一个延迟单元DE、一个与门AND2和一个2选1多路选择器;
所述排序单元的数据输入DataIn连接到极值寄存器BR的输入、比较器CP的一个输入端以及2选1选择器的一个输入上;使能输入EnIn连接到延迟单元DE的输入和AND2的一个输入端;级间缓存寄存器SR的输出连接到排序单元的输出;延迟单元DE的输出连接到排序单元的使能输出上;极值寄存器BR的输出分别连接到比较器CP的另一个输入端和2选1选择器的另一个输入端;2选1选择器的输出连接到级间缓存寄存器SR的输入上;比较器CP的比较结果输出连接分别连接到2选1选择器的选择控制端和与门AND2的一个输入;与门AND2的输出连接到极值寄存器BR的写使能端,在使能有效的情况下,将输入数据写入极值寄存器BR中;所述级间缓存寄存器SR用于存储判断为非极值的数据。通过所述的2选1选择器选择输入SR寄存器的数据;如果比较结果成立,BR寄存器中替换出来的数据被存入SR寄存器;否则,将输入数据存入SR寄存器。
对所述排序电路的一种节省硬件资源的结构改进是:将排序电路中每个排序单元的SR寄存器去掉,将SR寄存器的输入和输出直接连接。
本发明还提供了一个排序方法,包括以下步骤:
步骤1.对排序电路中每个排序单元的极值寄存器和使能延迟单元进行复位,若搜索极大值,将极值寄存器初始化为待搜索数据集合的左边界或小于左边界的数值,各排序单元的使能延迟单元初始为无效;若搜索极小值,将极值寄存器初始化为带搜索数集右边界或大于右边界的数值;
步骤2.数据和使能信号输入排序电路,首先进入第一级排序单元处理,随后将第一级排序单元的输出数据和输出使能传递给下一级排序单元,并逐级向后续每一级排序单元传递数据和使能并进行排序;
步骤3.数据输入结束,转步骤4;否则,转步骤2继续搜索排序。
步骤4.从极值寄存器组中,按标号顺序从有序序列中读出所需极值数据。
所述步骤2中每一级排序单元的处理步骤为:
步骤2-1:将输入数据和极值存储数据送入比较器进行比较;
步骤2-2:如果输入数据大于存储的极值,将输入数据写入极值寄存器作为新的极值,同时将极值寄存器中存储的数据写入级间缓存寄存器;否则,极值寄存器不更新,选择输入数据写入级间缓存寄存器;
步骤2-3:输入使能信号延迟一拍输出,作为下一级排序单元的使能控制信号;将级间缓存寄存器的数据输出,作为下一级排序单元的输入数据。
本发明的有益效果是:解决了软件排序实时性不高的缺陷,可应用于具有硬件条件的实时数字信号处理领域。
与已提出的硬件排序电路相比,电路结构简单、资源占用少,尤其是减少了存储单元和多路选择器的使用。这是因为数据在排序电路中流水处理过程中,就完成了数据在有序序列中的排序插入,不需要额外的硬件电路来完成数据比较后的排序逻辑。
同时,该电路可以和前级数据处理逻辑互连,实现数据处理和数据排序并行处理,不需要等待所有数据处理完成后才开始数据排序处理。
附图说明
图1为本发明排序单元CE的结构框图。
图2为本发明排序单元的详细结构图。
图3为本发明中排序电路的级联结构框图。
图4为极值寄存器组和有序序列的对应关系示意图。
图5为无流水的排序电路的详细结构示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明设计了一个级联结构的排序电路。该排序电路一个实现从m个数据中搜索n个极值,并对这n个极值排序的硬件电路。该电路的结构包括一个输入接口和由n个排序单元CEi(0≤i<n)(CE,Compare Element)构成的级联阵列。
所述排序电路的输入接口为一个数据输入接口DATA和一个排序电路使能信号EN。待排序搜索的数据从数据接口输入到排序电路中。与数据同时输入一个节拍的使能EN有效信号,表明当前数据是有效数据,同时使能信号EN启动排序电路对数据的排序。
所述排序电路的结构是由n个排序单元CEi(0≤i<n)(CE,Compare Element)构成的级联阵列。
首先描述排序单元CE的接口和结构。所述排序单元的输入接口为:一个输入为数据输入DataIn,另一个输入为使能控制信号EnIn。排序单元的输出接口为:一个输出为数据经排序单元比较后的数据DataOut,另一个输出为对EnIn信号在当前排序单元内延迟一拍后输出EnOut。所述排序单元CE的结构包括:一个极值寄存器BR、一个级间缓存寄存器SR、一个比较器CP、一个延迟单元DE、一个2输入与门AND2、一个2选1多路选择器。
所述排序单元的数据输入DataIn连接到极值寄存器BR的输入、比较器CP的一个输入端以及2选1选择器的一个输入上。使能输入EnIn连接到延迟单元DE的输入和AND2的一个输入端。级间缓存寄存器SR的输出连接到排序单元的输出。延迟单元DE的输出连接到排序单元的使能输出上。
在排序单元内部:极值寄存器BR的输出分别连接到比较器CP的另一个输入端和2选1选择器的另一个输入端。2选1选择器的输出连接到级间缓存寄存器SR的输入上。比较器CP的比较结果输出连接分别连接到2选1选择器的选择控制端和与门AND2的一个输入。与门AND2的输出连接到寄存器BR的写使能端,在使能有效的情况下,将BR的输入数据写入寄存器中。
其中,所述极值寄存器BR用于存储当前排序单元的极值。该寄存器的输入是当前排序单元的数据输入DataIn。BR寄存器的更新过程为:在当前CE单元的使能信号有效的时,比较输入数据和BR寄存器存储的数据,如果比较结果成立,将输入数据存入BR寄存器,成为新的极值;如果比较不成立,BR寄存器不更新。
所述级间缓存寄存器SR用于存储判断为非极值的数据。通过所述的2选1选择器选择输入SR寄存器的数据。如果比较结果成立,BR寄存器中替换出来的数据被存入SR寄存器;否则,将输入数据存入SR寄存器。
所述比较器CP用于比较CE单元的输入数据和BR寄存器内极值数据。比较器的输出根据数据排序的方式可以调整。数据排序有升序和降序两种顺序配置。两种排序顺序只需要选择比较器的输出,并不会影响整体电路结构。当排序方式为降序时,如果输入数据大于极值寄存器存储的数据,比较器输出1,否则输出0;当排序方式为升序时,如果输入数据小于极值寄存器存储的数据,比较器输出1,否则输出0.排序单元的其他模块功能不需要改变。
在排序单元结构说明的基础上,我们来说明排序电路的系统结构。所述排序电路结构是:n个排序单元CEi(0≤i<n)级联构成电路。具体结构是:CEi的输出CEi.DataOut和CEi.EnOut连接到CEi+1的输入CEi+1.DataIn和CEi.EnIn。第一个排序单元CE0的输入CE0.DataIn和CE0.EnIn分别连接到排序电路为数据的输入DATA和数据输入使能EN.最后一个单元CEn-1的输出数据DataOut和输出使能EnOut不连接。
根据排序单元的结构和排序电路的结构,所述排序电路包括n个极值寄存器BR i(0≤i<n)、n个级间缓存寄存器SR i(0≤i<n)、n个比较器CP i(0≤i<n)和n个2选1多路选择器和一组连接以上功能单元的连线。
其中,所述排序电路的n个极值寄存器中不但存储了已搜索到的n个极值数据,而且这n个极值是一个有序序列。按照CEi的序号i的顺序,极值寄存器中存储了已排好顺序的n个极值{C0,C1,C2,…,Cn-3,Cn-2,Cn-1}。CE0的极值寄存器BR0中存储n个极值中的最大值C0(或最小值),CEn-1的极值寄存器BR n-1中存储n个极值中的最小值Cn-1(或最大值);CEi的极值寄存器BR i中存储极值有序序列中第i个极值数据。
所述排序电路从m个数据中搜索并排序n个极值的所需拍数为(m+n-1)拍。
所述排序电路的结构采用线性级联,可以根据应用中需要搜索的极值个数逐级向后扩展阵列中单元的个数。
对所述排序电路的一种节省硬件资源的结构改进是:将排序电路中每个排序单元的SR寄存器去掉,将SR寄存器的输入和输出直接连接。实际上,所述排序单元SR寄存器的作用相当于级间的流水线寄存器。每个CE单元带有SR寄存器时,整个排序电路的组合延迟为一个比较器的延迟加上一个2选1选择器的延迟。如果对电路的处理性能要求不高,并且资源作为优先考虑因素的情况下,可以将排序单元中所述的SR寄存器从电路中去掉,这样排序电路的延迟将成为n个比较器的延迟和(n-1)个2选1选择器的延迟。但是,排序电路可以在一拍内处理完成输入数据的排序,确定该数据在极值寄存器组中的位置。相应地,对m个数据的排序搜索也仅需要m拍完成。
为实现上述目的,本发明还提供了一个排序方法,包括以下步骤:
步骤1.初始化。该过程对排序电路中每个排序单元的极值寄存器和使能延迟单元进行复位。该过程将极值寄存器初始化为待搜索数据集合的左边界或小于左边界的数值(按降序排列,搜索极大值的情况),各排序单元的使能延迟单元初始为无效。如果是升序排列,搜索极小值的情况,极值寄存器初始化为带搜索数集右边界或大于右边界的数值。转步骤2。
步骤2.更新极值有序序列。数据和使能信号输入排序电路,首先进入第一级排序单元处理。随后将第一级排序单元的输出数据和输出使能传递给下一级排序单元,并逐级向后续每一级排序单元传递数据和使能并进行排序。
因为排序电路的极值寄存器按标号的顺序形成一个有序序列。在数据逐级处理的过程中,如果输入的数据被排序插入到现有极值序列合适的位置上,即进入该位置对应CEi的极值寄存器中;CEi的极值寄存器中原来的极值数据被替换出来并向后级传递,排序到新的位置上。如果输入数据在现有序列中没有合适的位置,即小于(或大于)现有序列中所有的数据,那么经过步骤2的逐级处理,数据将流出排序电路。
步骤3.数据输入结束,转步骤4;否则,转步骤2继续搜索排序。
步骤4.从极值寄存器组中,按标号顺序从有序序列中读出所需极值数据。
其中,所述步骤2中每一级排序单元的处理步骤为:
步骤2-1:比较数据。将输入数据和极值存储数据送入比较器进行比较。转2-2。
步骤2-2:更新寄存器。如果输入数据大于存储的极值,将输入数据写入极值寄存器作为新的极值,同时将极值寄存器中存储的数据写入级间缓存寄存器。否则,极值寄存器不更新,选择输入数据写入级间缓存寄存器。转2-3。
步骤2-3:更新输出。输入使能信号延迟一拍输出,作为下一级排序单元的使能控制信号。将级间缓存寄存器的数据输出,作为下一级排序单元的输入数据。
为了更好地解释说明本发明的具体实施方式,对本发明的结构中各模块做具体的说明。
图1为本发明中单个排序单元CE的结构框图。该排序单元的输入为待排序的数据DATAin和使能信号ENin;输出为比较后的较小数据(或较大数据,根据数据排序是升序或降序而定)DATAout和输出使能信号ENout.其中ENin和ENout的位宽为1位;数据的位宽根据待排序的数据类型的位宽而定。
图2为本发明排序单元的详细结构图。该电路包括以下模块:极值寄存器A、比较器B、级间缓存寄存器C、延迟单元D、二输入与门E和2选1选择器F组成。
其中,该排序单元的数据输入DATAin连接到极值寄存器A的输入、比较器B的一个输入端和2选1选择器F的一个输入上,使能输入ENin连接到延迟单元D。排序单元的输出连接到级间缓存寄存器C,使能输出连接到延迟单元D和二输入与门E的一个输入上。
在排序单元内部:极值寄存器A的输出分别连接到比较器B的另一个输入端和2选1选择器F的另一个输入端。2选1选择器F的输出连接到级间缓存寄存器C的输入上。比较器B的比较结果输出连接分别连接到2选1选择器F的选择控制端和二输入与门E的一个输入。二输入与门E作为寄存器A的写使能逻辑,在使能有效的情况下,将A的输入数据写入寄存器A中。
极值寄存器(BR)A中存储了当前排序单元中较大(或较小)数据的数值。级间缓存寄存器(SR)C中存储了当前比较单元中较小(或较大)数据的数值。
比较器B的输出根据数据排序的方式可以调整。数据排序有升序和降序两种顺序配置。两种排序顺序只需要选择比较器的输出,并不会影响整体电路结构。当排序方式为降序时,如果输入数据大于极值寄存器存储的数据,比较器输出1,否则输出0;当排序方式为升序时,如果输入数据小于极值寄存器存储的数据,比较器输出1,否则输出0.排序单元的其他模块功能不需要改变。
所述排序单元CE对输入数据的排序操作步骤为:
在此处及后续描述中,以降序排序过程为例说明具体实施过程。对于升序的排序过程,仅需要配置所述的比较器的输出,不影响电路结构和使用方法。
步骤1、复位初始化;
将极值寄存器A复位初始化为待搜索数据集合的左边界或小于左边界的数据;将延迟单元D复位初始化为无效;
在实际应用中,需要排序处理满足阈值的极值点。在本发明电路的处理中,将极值寄存器初始化为阈值数据,即可完成满足阈值的极值的排序过程。
步骤2、比较数据;
每个时钟节拍输入排序单元一个数据。将输入数据和极值存储数据送入比较器进行比较。
步骤3、更新寄存器;
根据比较器B的结果:
(1)、如果输入数据大于存储的极值,将输入数据写入极值寄存器作为新的极值,同时将极值寄存器中存储的数据写入级间缓存寄存器。比较器的输出结果和使能信号相与作为极值寄存器的写使能;
(2)、如果输入数据小于存储极值,极值寄存器不更新,选择输入数据写入级间缓存寄存器。
步骤4、更新输出。
将输入使能信号延迟一拍输出,作为下一级排序单元的使能控制信号。将级间缓存寄存器的数据输出,作为下一级排序单元的输入数据。
以上所述为排序单元的结构和实施方法,下面说明排序电路的结构和实施方法。
如前所述,排序电路是由n个排序单元级联构成,n是需要排序的极值个数。排序电路完成从m个数据中n个极值排序。易见,对m个数据的排序处理过程,即是按数值大小排序并搜索n个极值的过程。
图3为本发明中排序电路的级联结构框图。该电路共有n个排序单元CEi(0≤i≤n-1)级联构成。内部级联关系为:CEi-1的使能输出CEi-1.EN连接到CEi的使能输入CEi.EN;CEi-1的数据输出CEi-1.D连接到CEi的数据输入CEi.D。对于CE0的输入使能连接排序电路的使能输入EN,输入数据连接排序电路的数据输入DATA。
如图3所述的排序电路,其工作过程为:
每个时钟节拍从输入端口DATA输入一个新的有效数据,同时输入一个使能脉冲信号EN.该数据首先在CE0单元中进行排序比较。按照前边对排序单元的工作工作过程说明:
(1):如果该输入数据满足CE0单元中极值数据的替换条件,即输入数据大于(或小于)极值数据,将输入数据写入CE0的极值寄存器BR,成为新的候选极值。同时将极值寄存器中原来存储的数据写入级间缓存寄存器SR中,在下一个时钟节拍将SR中的数据推送到下一个排序单元CE1中,将该数据与CE1中存储的极值比较。
(2):否则,保持CE0中极值寄存器不更新,将输入数据写入SR寄存器,在下一个时钟节拍推送到下一个排序单元CE1中进行比较排序。
以此类推,直到数据经过排序电路中所有的级联排序单元。
更一般地讨论情况是:
如果排序电路中单元CEi的输入数据CEi.DATAin(即CEi-1的输出CEi-1.D)满足极值寄存器的替换条件,将输入数据写入CEi的极值寄存器BR,成为新的候选极值。同时将极值寄存器中原来存储的数据写入级间缓存寄存器SR中,在下一个时钟节拍将SR中的数据推送到下一个排序单元CEi+1中,将该数据与CEi+1中存储的极值比较。同时推送到下一个排序单元的还有延迟一个时钟节拍的数据使能信号。
如果不满足极值寄存器替换条件,保持CEi中极值寄存器不更新,将输入数据写入SR寄存器,在下一个时钟节拍推送到下一个排序单元CEi+1中进行比较排序。
按照上述过程,输入数据写入BR寄存器,相当于输入数据在极值有序序列中获得了一个合适的位置,将该新的数据排序到有序序列中。在排序电路中就是获取了CEi的极值寄存器,占据了有序序列的第i个位置。在有序序列中,第i个位置被新的数据排序占据,那么第i个位置及大于i的位置上的数据,都要向后移动一个位置,即排序电路中CEi及CEi+1之后所有单元的BR寄存器都要向后移动到后一个单元的BR内。为了与新的输入数据统一处理,将BR寄存器替换出来的数据对每一级CEi都当作一个新的数据处理,经过比较排序后写入BR寄存器。
类似的,如果输入数据在所有n个单元内都没有满足替换极值寄存器的条件,那么该数据将流出排序电路,即新的数据小于当前有序序列中所有的n个数据。
按照所述的替换过程,新的数据进入排序电路后,需要n个时钟节拍完成该数据在当前有序序列中的排序,并插入到有序序列中合适的位置。该位置通过排序单元的标号i来标明。
图4表明了极值寄存器组和有序序列的位置关系。n个极值的有序序列中,最大值(或最小值)位于标号0的极值寄存器BR0中,最小值(或最大值)位于标号为BRn-1的单元中。
由于所述排序单元CE内级间缓存寄存器的使用,可以使数据的排序流水进行,该电路可以在电路内同时处理n个新的数据的排序操作。如果将所述排序电路集成到计算单元之后,每个时钟节拍向排序单元输入一个新的数据进行,那么该电路完成m个数据的排序仅需要(m+n-1)拍。输入数据在使能无效情况下,也可以在流水中插入间隙。如表中数据D3的处理,和前边流水数据输入之间有两拍间隙。
另一种实施方式是无流水的排序电路结构。如前所述,级间缓存寄存器SR用来存储当前CE单元中未能成为候选极值的数据,在下一个时钟节拍将该数据送入下一级排序单元中进行比较。无流水的排序电路只需要将级间缓存寄存器组和使能信号的延迟单元从电路结构中去掉,但保持各排序单元之间的连接关系。
图5表示了无流水的排序电路的详细结构。该电路在一个时钟节拍内可完成新的输入数据在有序序列中的排序。电路完成m个数据中n个极值的排序也只需要m个时钟周期。
所述无流水排序电路的组合路径延迟为(n个比较器延迟+(n-1)个2选1选择器延迟)。在速度要求不高,且资源较少的电路设计应用中,可采用无流水结构的排序电路的实施方案。
根据上述对电路结构和排序单元的描述,所述排序电路的具体操作步骤为:
步骤1.初始化。对排序电路中每个排序单元CEi的极值寄存器和使能延迟单元进行复位。
步骤2.更新极值有序序列。数据和使能信号输入排序电路,首先进入第一级排序单元处理。随后将第一级排序单元的输出数据和输出使能传递给下一级排序单元,并逐级向后续每一级排序单元传递数据和使能并进行排序。转步骤3。
极值寄存器组{BRi(0≤i<n)}按标号的顺序形成一个有序序列,该有序序列就是当前搜索并排序的极大值序列。在数据逐级处理的过程中,输入数据被插入到这个序列中或流出排序电路。当m个数据集处理完成后,n个BR寄存器中保存了n个极值。
步骤3.数据输入结束,转步骤4;否则,转步骤2继续搜索排序。
步骤4.从极值寄存器组中,按标号顺序i从有序序列{BRi(0≤i<n)}中读出所需极值数据。
综上所述,本发明所述的排序电路的结构和方法,与现有技术相比,解决了软件排序实时性不高的缺陷,可应用于具有硬件条件的实时数字信号处理领域。与已提出的硬件排序电路相比,电路结构简单、资源占用少,数据在排序电路中流水处理过程中,就完成了有序序列的排序,不需要额外的硬件电路来完成数据比较后的排序逻辑,优化了电路设计结构。同时,该电路可以和前级数据处理逻辑互连,实现数据处理和数据排序并行处理,不需要等待所有数据处理完成后才开始数据排序处理。
虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改包含在所附权利要求中限定的本发明的范围中。
Claims (4)
1.一种实现数据排序的级联结构电路,包括一个输入接口和由n个排序单元CEi构成的级联阵列,0≤i<n,n为需要排序的数值个数,其特征在于:
所述排序电路的输入接口包括一个数据输入接口和一个排序电路使能信号接口,待排序搜索的数据从数据接口输入到排序电路中,与数据同时输入一个节拍的使能EN有效信号,表明当前数据是有效数据,同时使能信号EN启动排序电路对数据的排序;
每一个排序单元包括两个输入接口和两个输出接口,一个输入接口为数据输入DataIn,另一个输入接口为使能控制信号EnIn,一个输出接口为数据经排序单元比较后的数据DataOut,另一个输出接口为对EnIn信号在当前排序单元内延迟一拍后输出EnOut;CEi的输出CEi.DataOut和CEi.EnOut连接到CEi+1的输入CEi+1.DataIn和CEi.EnIn;第一个排序单元CE0的输入CE0.DataIn和CE0.EnIn分别连接到排序电路为数据的输入DATA和数据输入使能EN;
每一个排序单元内部包括一个极值寄存器BR、一个级间缓存寄存器SR、一个比较器CP、一个延迟单元DE、一个与门AND2和一个2选1多路选择器;
所述排序单元的数据输入DataIn连接到极值寄存器BR的输入、比较器CP的一个输入端以及2选1选择器的一个输入上;使能输入EnIn连接到延迟单元DE的输入和AND2的一个输入端;级间缓存寄存器SR的输出连接到排序单元的输出;延迟单元DE的输出连接到排序单元的使能输出上;极值寄存器BR的输出分别连接到比较器CP的另一个输入端和2选1选择器的另一个输入端;2选1选择器的输出连接到级间缓存寄存器SR的输入上;比较器CP的比较结果输出连接分别连接到2选1选择器的选择控制端和与门AND2的一个输入;与门AND2的输出连接到极值寄存器BR的写使能端,在使能有效的情况下,将输入数据写入极值寄存器BR中;所述级间缓存寄存器SR用于存储判断为非极值的数据。通过所述的2选1选择器选择输入SR寄存器的数据;如果比较结果成立,BR寄存器中替换出来的数据被存入SR寄存器;否则,将输入数据存入SR寄存器。
2.根据权利要求1所述的实现数据排序的级联结构电路,其特征在于:将排序电路中每个排序单元的SR寄存器去掉,将SR寄存器的输入和输出直接连接。
3.一种利用权利要求1所述装置实现数据排序的方法,其特征在于包括下述步骤:
步骤1.对排序电路中每个排序单元的极值寄存器和使能延迟单元进行复位,若搜索极大值,将极值寄存器初始化为待搜索数据集合的左边界或小于左边界的数值,各排序单元的使能延迟单元初始为无效;若搜索极小值,将极值寄存器初始化为带搜索数集右边界或大于右边界的数值;
步骤2.数据和使能信号输入排序电路,首先进入第一级排序单元处理,随后将第一级排序单元的输出数据和输出使能传递给下一级排序单元,并逐级向后续每一级排序单元传递数据和使能并进行排序;
步骤3.数据输入结束,转步骤4;否则,转步骤2继续搜索排序。
步骤4.从极值寄存器组中,按标号顺序从有序序列中读出所需极值数据。
4.根据权利要求1所述的实现数据排序的方法,其特征在于所述步骤2中每一级排序单元的处理步骤为:
步骤2-1:将输入数据和极值存储数据送入比较器进行比较;
步骤2-2:如果输入数据大于存储的极值,将输入数据写入极值寄存器作为新的极值,同时将极值寄存器中存储的数据写入级间缓存寄存器;否则,极值寄存器不更新,选择输入数据写入级间缓存寄存器;
步骤2-3:输入使能信号延迟一拍输出,作为下一级排序单元的使能控制信号;将级间缓存寄存器的数据输出,作为下一级排序单元的输入数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546091.9A CN104317549A (zh) | 2014-10-15 | 2014-10-15 | 一种实现数据排序的级联结构电路和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410546091.9A CN104317549A (zh) | 2014-10-15 | 2014-10-15 | 一种实现数据排序的级联结构电路和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104317549A true CN104317549A (zh) | 2015-01-28 |
Family
ID=52372785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410546091.9A Pending CN104317549A (zh) | 2014-10-15 | 2014-10-15 | 一种实现数据排序的级联结构电路和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317549A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159597A (zh) * | 2015-06-17 | 2015-12-16 | 北京空间机电研究所 | 不确定数目大数量数据的高速实时排序方法 |
WO2017088455A1 (zh) * | 2015-11-25 | 2017-06-01 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN107340992A (zh) * | 2017-06-15 | 2017-11-10 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
CN107526571A (zh) * | 2017-10-30 | 2017-12-29 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN108804073A (zh) * | 2018-05-21 | 2018-11-13 | 南京大学 | 一种多流水实时高速排序引擎系统 |
CN109460210A (zh) * | 2018-10-22 | 2019-03-12 | 重庆中科云丛科技有限公司 | 排序系统及数据处理方法 |
CN110780840A (zh) * | 2019-10-30 | 2020-02-11 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110825343A (zh) * | 2019-11-05 | 2020-02-21 | 中电科仪器仪表有限公司 | 一种快速数据筛选方法及系统 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN114356278A (zh) * | 2021-11-19 | 2022-04-15 | 科大讯飞股份有限公司 | 一种排序电路以及芯片 |
WO2024040634A1 (zh) * | 2022-08-26 | 2024-02-29 | 清华大学 | 模拟缓存器及其操作方法、信号处理装置 |
WO2024088231A1 (zh) * | 2022-10-28 | 2024-05-02 | 华为技术有限公司 | 信号处理方法、装置、设备、介质及芯片 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504919A (en) * | 1993-02-19 | 1996-04-02 | National Science Council | Sorter structure based on shiftable content memory |
CN101114215A (zh) * | 2006-07-28 | 2008-01-30 | 中兴通讯股份有限公司 | 实现数据排序的电路和方法 |
CN101261576A (zh) * | 2008-04-03 | 2008-09-10 | 启攀微电子(上海)有限公司 | 实现并行数据排序的硬件电路及方法 |
CN201156248Y (zh) * | 2008-02-03 | 2008-11-26 | 深圳艾科创新微电子有限公司 | 一种计算多数据排序序号的硬件结构 |
CN101470553A (zh) * | 2007-12-27 | 2009-07-01 | 比亚迪股份有限公司 | 触摸屏控制器数据预处理排序电路及方法 |
CN102207846A (zh) * | 2010-03-31 | 2011-10-05 | 国际商业机器公司 | 一种实现数据排序的电路和方法 |
-
2014
- 2014-10-15 CN CN201410546091.9A patent/CN104317549A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504919A (en) * | 1993-02-19 | 1996-04-02 | National Science Council | Sorter structure based on shiftable content memory |
CN101114215A (zh) * | 2006-07-28 | 2008-01-30 | 中兴通讯股份有限公司 | 实现数据排序的电路和方法 |
CN101470553A (zh) * | 2007-12-27 | 2009-07-01 | 比亚迪股份有限公司 | 触摸屏控制器数据预处理排序电路及方法 |
CN201156248Y (zh) * | 2008-02-03 | 2008-11-26 | 深圳艾科创新微电子有限公司 | 一种计算多数据排序序号的硬件结构 |
CN101261576A (zh) * | 2008-04-03 | 2008-09-10 | 启攀微电子(上海)有限公司 | 实现并行数据排序的硬件电路及方法 |
CN102207846A (zh) * | 2010-03-31 | 2011-10-05 | 国际商业机器公司 | 一种实现数据排序的电路和方法 |
Non-Patent Citations (3)
Title |
---|
孟令奎 等: "关系排序的一种硬件实现", 《计算机学报》 * |
欧钢 等: "阵列排序器的VHDL设计方法", 《国防科技大学学报》 * |
魏凤歧 等: "一种BCA结构形式的硬件排序电路模型", 《内蒙古大学学报(自然科学版)》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159597A (zh) * | 2015-06-17 | 2015-12-16 | 北京空间机电研究所 | 不确定数目大数量数据的高速实时排序方法 |
WO2017088455A1 (zh) * | 2015-11-25 | 2017-06-01 | 中国科学院计算技术研究所 | 硬件实现的数据排序装置、方法及数据处理芯片 |
CN107340992B (zh) * | 2017-06-15 | 2020-07-28 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
CN107340992A (zh) * | 2017-06-15 | 2017-11-10 | 西安微电子技术研究所 | 一种定点数据筛选电路 |
CN107526571A (zh) * | 2017-10-30 | 2017-12-29 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN107526571B (zh) * | 2017-10-30 | 2018-03-27 | 南京火零信息科技有限公司 | 一种在多个数据中比较大小的电路 |
CN108804073B (zh) * | 2018-05-21 | 2021-12-17 | 南京大学 | 一种多流水实时高速排序引擎系统 |
CN108804073A (zh) * | 2018-05-21 | 2018-11-13 | 南京大学 | 一种多流水实时高速排序引擎系统 |
CN109460210A (zh) * | 2018-10-22 | 2019-03-12 | 重庆中科云丛科技有限公司 | 排序系统及数据处理方法 |
CN110780840A (zh) * | 2019-10-30 | 2020-02-11 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110780840B (zh) * | 2019-10-30 | 2023-10-31 | 湖南国科微电子股份有限公司 | 多路排序器的实现方法及系统 |
CN110825343A (zh) * | 2019-11-05 | 2020-02-21 | 中电科仪器仪表有限公司 | 一种快速数据筛选方法及系统 |
CN110825343B (zh) * | 2019-11-05 | 2021-12-03 | 中电科思仪科技股份有限公司 | 一种快速数据筛选方法及系统 |
CN112015366A (zh) * | 2020-07-06 | 2020-12-01 | 中科驭数(北京)科技有限公司 | 数据排序方法、数据排序装置及数据库系统 |
CN114356278A (zh) * | 2021-11-19 | 2022-04-15 | 科大讯飞股份有限公司 | 一种排序电路以及芯片 |
WO2024040634A1 (zh) * | 2022-08-26 | 2024-02-29 | 清华大学 | 模拟缓存器及其操作方法、信号处理装置 |
WO2024088231A1 (zh) * | 2022-10-28 | 2024-05-02 | 华为技术有限公司 | 信号处理方法、装置、设备、介质及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317549A (zh) | 一种实现数据排序的级联结构电路和方法 | |
WO2017088455A1 (zh) | 硬件实现的数据排序装置、方法及数据处理芯片 | |
CN108052347B (zh) | 一种执行指令选择的装置、方法及指令映射方法 | |
US8140522B2 (en) | Method, apparatus, and computer program product for adaptive query parallelism partitioning with look-ahead probing and feedback | |
CN111142938A (zh) | 一种异构芯片的任务处理方法、任务处理装置及电子设备 | |
CN103440246A (zh) | 用于MapReduce的中间结果数据排序方法及系统 | |
US5404558A (en) | Data driven type information processor having a plurality of memory banks | |
CN105740264A (zh) | 一种分布式xml数据库的排序方法及装置 | |
CN112085644B (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
US20230229624A1 (en) | Determining internodal processor interconnections in a data-parallel computing system | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN103226464A (zh) | 一种归并排序结构 | |
CN109508349A (zh) | 一种度量空间离群检测方法及装置 | |
CN106843803B (zh) | 一种基于归并树的全排序加速器及应用 | |
Ortiz et al. | A configurable high-throughput linear sorter system | |
JPWO2005098612A1 (ja) | 重要成分優先計算方式ならびに装置 | |
US20220129270A1 (en) | Method and system for topk operation | |
CN110618963A (zh) | 一种计算与存储融合的异构计算硬件加速系统及方法 | |
CN115495152A (zh) | 变长输入的存内计算电路 | |
CN116762084A (zh) | 用于神经处理器电路的分支操作 | |
US11842169B1 (en) | Systolic multiply delayed accumulate processor architecture | |
Ortiz et al. | A Streaming High‐Throughput Linear Sorter System with Contention Buffering | |
CN117891858B (zh) | 一种时空高效的并行近似成员查询方法及系统 | |
WO2022193259A1 (zh) | 处理器、排序方法及电子设备 | |
CN111553123B (zh) | 基于dsp的复杂函数有限寄存器下的代码执行优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150128 |