一種實現(xiàn)數(shù)據(jù)排序的級聯(lián)結(jié)構(gòu)電路和方法
【專利摘要】本發(fā)明提供了一種實現(xiàn)數(shù)據(jù)排序的級聯(lián)結(jié)構(gòu)電路和方法,包括一個輸入接口和由n個排序單元CEi構(gòu)成的級聯(lián)陣列,CEi的數(shù)據(jù)輸出和使能輸出連接到CEi+1的數(shù)據(jù)輸入和使能輸入;第一個排序單元CE0的數(shù)據(jù)輸出和使能輸出分別連接到排序電路的數(shù)據(jù)輸入和數(shù)據(jù)輸入使能。本發(fā)明電路結(jié)構(gòu)簡單、資源占用少,不需要額外的硬件電路來完成數(shù)據(jù)比較后的排序邏輯,不需要等待所有數(shù)據(jù)處理完成后才開始數(shù)據(jù)排序處理。
【專利說明】一種實現(xiàn)數(shù)據(jù)排序的級聯(lián)結(jié)構(gòu)電路和方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明適用于數(shù)字信號處理領(lǐng)域,涉及一種實現(xiàn)數(shù)據(jù)排序的電路和方法。
【背景技術(shù)】
[0002] 排序是數(shù)據(jù)處理的基本操作之一,也經(jīng)常出現(xiàn)在數(shù)字信號處理應(yīng)用中,對大量信 號數(shù)據(jù)進行排序搜索。該問題數(shù)學(xué)描述為對m個數(shù)據(jù)按數(shù)值進行排序,或者從m個數(shù)據(jù)中 找出η個最大(或者最?。┑臄?shù)據(jù)(m>n),具體的應(yīng)用如在相關(guān)曲面中搜索多個峰值等。
[0003] 目前排序算法的實現(xiàn)大致可以分為軟件實現(xiàn)和硬件實現(xiàn)兩種方式。
[0004] 軟件實現(xiàn)排序的快速算法有很多,如快速排序、選擇排序、冒泡排序、歸并排序等 技術(shù)。這些方法在程序設(shè)計中包含大量的分支判斷和循環(huán)操作,在桌面處理及服務(wù)器應(yīng)用 方面具有較大優(yōu)勢。但是在圖像處理、多媒體數(shù)據(jù)處理等需要高速數(shù)據(jù)處理的應(yīng)用場合,這 些排序算法的軟件實現(xiàn)很難在DSP處理器上達到系統(tǒng)要求的處理時間。而且,在目前數(shù)字 信號處理系統(tǒng)中大量采用FPGA實現(xiàn)的背景下,也無法有效采用軟件實現(xiàn)的方式。
[0005] 硬件實現(xiàn)可以利用并行性和流水操作的特點,大幅提速針對大量數(shù)據(jù)的排序處 理?,F(xiàn)有的公開專利中提供了一些硬件排序的解決方案。例如(1)中興通訊公司的溫子瑜 申請的"實現(xiàn)數(shù)據(jù)排序的電路和方法"(申請?zhí)?00610099538.8)、(2)國際商業(yè)機器公司 (IBM)的俞堯等人申請的"一種實現(xiàn)數(shù)據(jù)排序的電路和方法"(申請?zhí)?01010138972. 9)。
[0006] 實現(xiàn)方法(1)采用軟件設(shè)計中單鏈表數(shù)據(jù)結(jié)構(gòu)的思想,將輸入數(shù)據(jù)和已排序完成 的序列中的每一個數(shù)據(jù)比較,根據(jù)比較結(jié)果找到該輸入數(shù)據(jù)在單鏈表中的合適位置。該電 路排序m個數(shù)據(jù)中的η個極值需要m拍處理時間。為實現(xiàn)該電路,需要η個極值寄存器、η 個指針寄存器、η個比較器、η個η選1的多路選擇器、2 (η-1)個2選1多路選擇器。
[0007] 實現(xiàn)方法⑵對m個數(shù)據(jù)排序,包括m(m=rXc)個存儲單元和c個比較器。該 電路通過犧牲一定的排序速度,來減少比較器的數(shù)目和控制邏輯的面積。(2)提出的方法僅 用于實現(xiàn)m個數(shù)據(jù)的完全排序。由于數(shù)據(jù)逐個進入該電路,仍可將該電路設(shè)計成m個數(shù)據(jù) 中的n(m= r'Xe')個極值的電路。但是,如果每拍輸入一個數(shù)據(jù)(r' =D,該電路需 要η個存儲單元、η個比較器、η個多路開關(guān)、η個控制信號寄存器。
[0008] 現(xiàn)有的排序電路硬件結(jié)構(gòu)復(fù)雜,為確定新輸入數(shù)據(jù)的位置需要較多的控制邏輯, 或需要較多的時鐘周期才能得到排序結(jié)果,在線排序的性能不高,不能匹配前級數(shù)據(jù)處理 單元的數(shù)據(jù)吞吐率。
【發(fā)明內(nèi)容】
[0009] 為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種級聯(lián)結(jié)構(gòu)排序電路的結(jié)構(gòu)和方法,簡 化排序電路設(shè)計的結(jié)構(gòu),提高硬件電路的排序速度,滿足實時性的要求。同時,簡化操作流 程,向前端邏輯提供簡易方便的接口完成數(shù)據(jù)的排序。
[0010] 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:包括一個輸入接口和由η個排序單 元CEi構(gòu)成的級聯(lián)陣列,0 <i〈n,η為需要排序的數(shù)值個數(shù)。 toon] 所述排序電路的輸入接口包括一個數(shù)據(jù)輸入接口和一個排序電路使能信號接口, 待排序搜索的數(shù)據(jù)從數(shù)據(jù)接口輸入到排序電路中,與數(shù)據(jù)同時輸入一個節(jié)拍的使能EN有 效信號,表明當前數(shù)據(jù)是有效數(shù)據(jù),同時使能信號EN啟動排序電路對數(shù)據(jù)的排序;
[0012] 每一個排序單元包括兩個輸入接口和兩個輸出接口,一個輸入接口為數(shù)據(jù)輸入 Dataln,另一個輸入接口為使能控制信號Enln,一個輸出接口為數(shù)據(jù)經(jīng)排序單元比較后的 數(shù)據(jù)DataOut,另一個輸出接口為對EnIn信號在當前排序單元內(nèi)延遲一拍后輸出EnOut; CEi的輸出CEi.DataOut和CEi.EnOut連接到CEi+Ι的輸入CEi+1.DataIn和CEi.EnIn;第 一個排序單元CEO的輸入CEO.DataIn和CEO.EnIn分別連接到排序電路為數(shù)據(jù)的輸入DATA 和數(shù)據(jù)輸入使能EN;
[0013] 每一個排序單元內(nèi)部包括一個極值寄存器BR、一個級間緩存寄存器SR、一個比較 器CP、一個延遲單元DE、一個與門AND2和一個2選1多路選擇器;
[0014] 所述排序單元的數(shù)據(jù)輸入DataIn連接到極值寄存器BR的輸入、比較器CP的一個 輸入端以及2選1選擇器的一個輸入上;使能輸入EnIn連接到延遲單元DE的輸入和AND2 的一個輸入端;級間緩存寄存器SR的輸出連接到排序單元的輸出;延遲單元DE的輸出連 接到排序單元的使能輸出上;極值寄存器BR的輸出分別連接到比較器CP的另一個輸入端 和2選1選擇器的另一個輸入端;2選1選擇器的輸出連接到級間緩存寄存器SR的輸入上; 比較器CP的比較結(jié)果輸出連接分別連接到2選1選擇器的選擇控制端和與門AND2的一個 輸入;與門AND2的輸出連接到極值寄存器BR的寫使能端,在使能有效的情況下,將輸入數(shù) 據(jù)寫入極值寄存器BR中;所述級間緩存寄存器SR用于存儲判斷為非極值的數(shù)據(jù)。通過所 述的2選1選擇器選擇輸入SR寄存器的數(shù)據(jù);如果比較結(jié)果成立,BR寄存器中替換出來的 數(shù)據(jù)被存入SR寄存器;否則,將輸入數(shù)據(jù)存入SR寄存器。
[0015] 對所述排序電路的一種節(jié)省硬件資源的結(jié)構(gòu)改進是:將排序電路中每個排序單元 的SR寄存器去掉,將SR寄存器的輸入和輸出直接連接。
[0016] 本發(fā)明還提供了一個排序方法,包括以下步驟:
[0017] 步驟1.對排序電路中每個排序單元的極值寄存器和使能延遲單元進行復(fù)位,若 搜索極大值,將極值寄存器初始化為待搜索數(shù)據(jù)集合的左邊界或小于左邊界的數(shù)值,各排 序單元的使能延遲單元初始為無效;若搜索極小值,將極值寄存器初始化為帶搜索數(shù)集右 邊界或大于右邊界的數(shù)值;
[0018] 步驟2.數(shù)據(jù)和使能信號輸入排序電路,首先進入第一級排序單元處理,隨后將第 一級排序單元的輸出數(shù)據(jù)和輸出使能傳遞給下一級排序單元,并逐級向后續(xù)每一級排序單 元傳遞數(shù)據(jù)和使能并進行排序;
[0019] 步驟3.數(shù)據(jù)輸入結(jié)束,轉(zhuǎn)步驟4;否則,轉(zhuǎn)步驟2繼續(xù)搜索排序。
[0020] 步驟4.從極值寄存器組中,按標號順序從有序序列中讀出所需極值數(shù)據(jù)。
[0021] 所述步驟2中每一級排序單元的處理步驟為:
[0022] 步驟2-1 :將輸入數(shù)據(jù)和極值存儲數(shù)據(jù)送入比較器進行比較;
[0023] 步驟2-2 :如果輸入數(shù)據(jù)大于存儲的極值,將輸入數(shù)據(jù)寫入極值寄存器作為新的 極值,同時將極值寄存器中存儲的數(shù)據(jù)寫入級間緩存寄存器;否則,極值寄存器不更新,選 擇輸入數(shù)據(jù)寫入級間緩存寄存器;
[0024] 步驟2-3 :輸入使能信號延遲一拍輸出,作為下一級排序單元的使能控制信號;將 級間緩存寄存器的數(shù)據(jù)輸出,作為下一級排序單元的輸入數(shù)據(jù)。
[0025] 本發(fā)明的有益效果是:解決了軟件排序?qū)崟r性不高的缺陷,可應(yīng)用于具有硬件條 件的實時數(shù)字信號處理領(lǐng)域。
[0026] 與已提出的硬件排序電路相比,電路結(jié)構(gòu)簡單、資源占用少,尤其是減少了存儲單 元和多路選擇器的使用。這是因為數(shù)據(jù)在排序電路中流水處理過程中,就完成了數(shù)據(jù)在有 序序列中的排序插入,不需要額外的硬件電路來完成數(shù)據(jù)比較后的排序邏輯。
[0027] 同時,該電路可以和前級數(shù)據(jù)處理邏輯互連,實現(xiàn)數(shù)據(jù)處理和數(shù)據(jù)排序并行處理, 不需要等待所有數(shù)據(jù)處理完成后才開始數(shù)據(jù)排序處理。
【專利附圖】
【附圖說明】
[0028] 圖1為本發(fā)明排序單元CE的結(jié)構(gòu)框圖。
[0029] 圖2為本發(fā)明排序單元的詳細結(jié)構(gòu)圖。
[0030] 圖3為本發(fā)明中排序電路的級聯(lián)結(jié)構(gòu)框圖。
[0031] 圖4為極值寄存器組和有序序列的對應(yīng)關(guān)系不意圖。
[0032] 圖5為無流水的排序電路的詳細結(jié)構(gòu)示意圖。
【具體實施方式】
[0033] 下面結(jié)合附圖和實施例對本發(fā)明進一步說明,本發(fā)明包括但不僅限于下述實施 例。
[0034] 本發(fā)明設(shè)計了一個級聯(lián)結(jié)構(gòu)的排序電路。該排序電路一個實現(xiàn)從m個數(shù)據(jù)中搜索 η個極值,并對這η個極值排序的硬件電路。該電路的結(jié)構(gòu)包括一個輸入接口和由η個排序 單元CEi(0 <i〈n) (CE,CompareElement)構(gòu)成的級聯(lián)陣列。
[0035] 所述排序電路的輸入接口為一個數(shù)據(jù)輸入接口DATA和一個排序電路使能信號 EN。待排序搜索的數(shù)據(jù)從數(shù)據(jù)接口輸入到排序電路中。與數(shù)據(jù)同時輸入一個節(jié)拍的使能EN 有效信號,表明當前數(shù)據(jù)是有效數(shù)據(jù),同時使能信號EN啟動排序電路對數(shù)據(jù)的排序。
[0036] 所述排序電路的結(jié)構(gòu)是由η個排序單元CEi(0 <i〈n) (CE,CompareElement)構(gòu) 成的級聯(lián)陣列。
[0037] 首先描述排序單元CE的接口和結(jié)構(gòu)。所述排序單元的輸入接口為:一個輸入為數(shù) 據(jù)輸入Dataln,另一個輸入為使能控制信號Enin。排序單元的輸出接口為:一個輸出為數(shù) 據(jù)經(jīng)排序單元比較后的數(shù)據(jù)DataOut,另一個輸出為對EnIn信號在當前排序單元內(nèi)延遲一 拍后輸出EnOut。所述排序單元CE的結(jié)構(gòu)包括:一個極值寄存器BR、一個級間緩存寄存器 SR、一個比較器CP、一個延遲單元DE、一個2輸入與門AND2、一個2選1多路選擇器。
[0038] 所述排序單元的數(shù)據(jù)輸入DataIn連接到極值寄存器BR的輸入、比較器CP的一個 輸入端以及2選1選擇器的一個輸入上。使能輸入EnIn連接到延遲單元DE的輸入和AND2 的一個輸入端。級間緩存寄存器SR的輸出連接到排序單元的輸出。延遲單元DE的輸出連 接到排序單元的使能輸出上。
[0039] 在排序單元內(nèi)部:極值寄存器BR的輸出分別連接到比較器CP的另一個輸入端和 2選1選擇器的另一個輸入端。2選1選擇器的輸出連接到級間緩存寄存器SR的輸入上。 比較器CP的比較結(jié)果輸出連接分別連接到2選1選擇器的選擇控制端和與門AND2的一個 輸入。與門AND2的輸出連接到寄存器BR的寫使能端,在使能有效的情況下,將BR的輸入 數(shù)據(jù)寫入寄存器中。
[0040] 其中,所述極值寄存器BR用于存儲當前排序單元的極值。該寄存器的輸入是當前 排序單元的數(shù)據(jù)輸入Dataln。BR寄存器的更新過程為:在當前CE單元的使能信號有效的 時,比較輸入數(shù)據(jù)和BR寄存器存儲的數(shù)據(jù),如果比較結(jié)果成立,將輸入數(shù)據(jù)存入BR寄存器, 成為新的極值;如果比較不成立,BR寄存器不更新。
[0041] 所述級間緩存寄存器SR用于存儲判斷為非極值的數(shù)據(jù)。通過所述的2選1選擇 器選擇輸入SR寄存器的數(shù)據(jù)。如果比較結(jié)果成立,BR寄存器中替換出來的數(shù)據(jù)被存入SR 寄存器;否則,將輸入數(shù)據(jù)存入SR寄存器。
[0042] 所述比較器CP用于比較CE單元的輸入數(shù)據(jù)和BR寄存器內(nèi)極值數(shù)據(jù)。比較器的 輸出根據(jù)數(shù)據(jù)排序的方式可以調(diào)整。數(shù)據(jù)排序有升序和降序兩種順序配置。兩種排序順序 只需要選擇比較器的輸出,并不會影響整體電路結(jié)構(gòu)。當排序方式為降序時,如果輸入數(shù)據(jù) 大于極值寄存器存儲的數(shù)據(jù),比較器輸出1,否則輸出〇 ;當排序方式為升序時,如果輸入數(shù) 據(jù)小于極值寄存器存儲的數(shù)據(jù),比較器輸出1,否則輸出0.排序單元的其他模塊功能不需 要改變。
[0043] 在排序單元結(jié)構(gòu)說明的基礎(chǔ)上,我們來說明排序電路的系統(tǒng)結(jié)構(gòu)。所述排序電路 結(jié)構(gòu)是:n個排序單元CEi(0 <i〈n)級聯(lián)構(gòu)成電路。具體結(jié)構(gòu)是:CEi的輸出CEi.DataOut 和CEi.EnOut連接到CEi+Ι的輸入CEi+1.DataIn和CEi.Enin。第一個排序單元CEO的輸 入CEO.DataIn和CEO.EnIn分別連接到排序電路為數(shù)據(jù)的輸入DATA和數(shù)據(jù)輸入使能EN.最 后一個單元CEn-I的輸出數(shù)據(jù)DataOut和輸出使能EnOut不連接。
[0044] 根據(jù)排序單元的結(jié)構(gòu)和排序電路的結(jié)構(gòu),所述排序電路包括η個極值寄存器BR i(0彡i〈n)、η個級間緩存寄存器SRi(0彡i〈n)、η個比較器CPi(0彡i〈n)和η個2選 1多路選擇器和一組連接以上功能單元的連線。
[0045] 其中,所述排序電路的η個極值寄存器中不但存儲了已搜索到的η個極值數(shù)據(jù), 而且這η個極值是一個有序序列。按照CEi的序號i的順序,極值寄存器中存儲了已排好 順序的η個極值{C0,Cl,C2,…,Cn-3,Cn-2,Cn-Ι}。CEO的極值寄存器BRO中存儲η個 極值中的最大值CO(或最小值),CEn-I的極值寄存器BRη-I中存儲η個極值中的最小值 Cn-I(或最大值);CEi的極值寄存器BRi中存儲極值有序序列中第i個極值數(shù)據(jù)。
[0046] 所述排序電路從m個數(shù)據(jù)中搜索并排序η個極值的所需拍數(shù)為(m+n-1)拍。
[0047] 所述排序電路的結(jié)構(gòu)采用線性級聯(lián),可以根據(jù)應(yīng)用中需要搜索的極值個數(shù)逐級向 后擴展陣列中單元的個數(shù)。
[0048] 對所述排序電路的一種節(jié)省硬件資源的結(jié)構(gòu)改進是:將排序電路中每個排序單元 的SR寄存器去掉,將SR寄存器的輸入和輸出直接連接。實際上,所述排序單元SR寄存器的 作用相當于級間的流水線寄存器。每個CE單元帶有SR寄存器時,整個排序電路的組合延 遲為一個比較器的延遲加上一個2選1選擇器的延遲。如果對電路的處理性能要求不高, 并且資源作為優(yōu)先考慮因素的情況下,可以將排序單元中所述的SR寄存器從電路中去掉, 這樣排序電路的延遲將成為η個比較器的延遲和(η-I)個2選1選擇器的延遲。但是,排 序電路可以在一拍內(nèi)處理完成輸入數(shù)據(jù)的排序,確定該數(shù)據(jù)在極值寄存器組中的位置。相 應(yīng)地,對m個數(shù)據(jù)的排序搜索也僅需要m拍完成。
[0049] 為實現(xiàn)上述目的,本發(fā)明還提供了一個排序方法,包括以下步驟:
[0050] 步驟1.初始化。該過程對排序電路中每個排序單元的極值寄存器和使能延遲單 元進行復(fù)位。該過程將極值寄存器初始化為待搜索數(shù)據(jù)集合的左邊界或小于左邊界的數(shù)值 (按降序排列,搜索極大值的情況),各排序單元的使能延遲單元初始為無效。如果是升序 排列,搜索極小值的情況,極值寄存器初始化為帶搜索數(shù)集右邊界或大于右邊界的數(shù)值。轉(zhuǎn) 步驟2。
[0051] 步驟2.更新極值有序序列。數(shù)據(jù)和使能信號輸入排序電路,首先進入第一級排序 單元處理。隨后將第一級排序單元的輸出數(shù)據(jù)和輸出使能傳遞給下一級排序單元,并逐級 向后續(xù)每一級排序單元傳遞數(shù)據(jù)和使能并進行排序。
[0052] 因為排序電路的極值寄存器按標號的順序形成一個有序序列。在數(shù)據(jù)逐級處理的 過程中,如果輸入的數(shù)據(jù)被排序插入到現(xiàn)有極值序列合適的位置上,即進入該位置對應(yīng)CEi 的極值寄存器中;CEi的極值寄存器中原來的極值數(shù)據(jù)被替換出來并向后級傳遞,排序到 新的位置上。如果輸入數(shù)據(jù)在現(xiàn)有序列中沒有合適的位置,即小于(或大于)現(xiàn)有序列中 所有的數(shù)據(jù),那么經(jīng)過步驟2的逐級處理,數(shù)據(jù)將流出排序電路。
[0053] 步驟3.數(shù)據(jù)輸入結(jié)束,轉(zhuǎn)步驟4 ;否則,轉(zhuǎn)步驟2繼續(xù)搜索排序。
[0054] 步驟4.從極值寄存器組中,按標號順序從有序序列中讀出所需極值數(shù)據(jù)。
[0055] 其中,所述步驟2中每一級排序單元的處理步驟為:
[0056] 步驟2-1 :比較數(shù)據(jù)。將輸入數(shù)據(jù)和極值存儲數(shù)據(jù)送入比較器進行比較。轉(zhuǎn)2-2。
[0057] 步驟2-2 :更新寄存器。如果輸入數(shù)據(jù)大于存儲的極值,將輸入數(shù)據(jù)寫入極值寄存 器作為新的極值,同時將極值寄存器中存儲的數(shù)據(jù)寫入級間緩存寄存器。否則,極值寄存器 不更新,選擇輸入數(shù)據(jù)寫入級間緩存寄存器。轉(zhuǎn)2-3。
[0058] 步驟2-3 :更新輸出。輸入使能信號延遲一拍輸出,作為下一級排序單元的使能控 制信號。將級間緩存寄存器的數(shù)據(jù)輸出,作為下一級排序單元的輸入數(shù)據(jù)。
[0059] 為了更好地解釋說明本發(fā)明的【具體實施方式】,對本發(fā)明的結(jié)構(gòu)中各模塊做具體的 說明。
[0060] 圖1為本發(fā)明中單個排序單元CE的結(jié)構(gòu)框圖。該排序單元的輸入為待排序的數(shù) 據(jù)DATAin和使能信號ENin;輸出為比較后的較小數(shù)據(jù)(或較大數(shù)據(jù),根據(jù)數(shù)據(jù)排序是升序 或降序而定)DATAout和輸出使能信號ENout.其中ENin和ENout的位寬為1位;數(shù)據(jù)的位 寬根據(jù)待排序的數(shù)據(jù)類型的位寬而定。
[0061] 圖2為本發(fā)明排序單元的詳細結(jié)構(gòu)圖。該電路包括以下模塊:極值寄存器A、比較 器B、級間緩存寄存器C、延遲單元D、二輸入與門E和2選1選擇器F組成。
[0062] 其中,該排序單元的數(shù)據(jù)輸入DATAin連接到極值寄存器A的輸入、比較器B的一 個輸入端和2選1選擇器F的一個輸入上,使能輸入ENin連接到延遲單元D。排序單元的 輸出連接到級間緩存寄存器C,使能輸出連接到延遲單元D和二輸入與門E的一個輸入上。
[0063] 在排序單元內(nèi)部:極值寄存器A的輸出分別連接到比較器B的另一個輸入端和2 選1選擇器F的另一個輸入端。2選1選擇器F的輸出連接到級間緩存寄存器C的輸入上。 比較器B的比較結(jié)果輸出連接分別連接到2選1選擇器F的選擇控制端和二輸入與門E的 一個輸入。二輸入與門E作為寄存器A的寫使能邏輯,在使能有效的情況下,將A的輸入數(shù) 據(jù)與入寄存器A中。
[0064] 極值寄存器(BR)A中存儲了當前排序單元中較大(或較?。?shù)據(jù)的數(shù)值。級間緩 存寄存器(SR)C中存儲了當前比較單元中較?。ɑ蜉^大)數(shù)據(jù)的數(shù)值。
[0065] 比較器B的輸出根據(jù)數(shù)據(jù)排序的方式可以調(diào)整。數(shù)據(jù)排序有升序和降序兩種順序 配置。兩種排序順序只需要選擇比較器的輸出,并不會影響整體電路結(jié)構(gòu)。當排序方式為 降序時,如果輸入數(shù)據(jù)大于極值寄存器存儲的數(shù)據(jù),比較器輸出1,否則輸出〇 ;當排序方式 為升序時,如果輸入數(shù)據(jù)小于極值寄存器存儲的數(shù)據(jù),比較器輸出1,否則輸出0.排序單元 的其他模塊功能不需要改變。
[0066] 所述排序單元CE對輸入數(shù)據(jù)的排序操作步驟為:
[0067] 在此處及后續(xù)描述中,以降序排序過程為例說明具體實施過程。對于升序的排序 過程,僅需要配置所述的比較器的輸出,不影響電路結(jié)構(gòu)和使用方法。
[0068] 步驟1、復(fù)位初始化;
[0069] 將極值寄存器A復(fù)位初始化為待搜索數(shù)據(jù)集合的左邊界或小于左邊界的數(shù)據(jù);將 延遲單元D復(fù)位初始化為無效;
[0070] 在實際應(yīng)用中,需要排序處理滿足閾值的極值點。在本發(fā)明電路的處理中,將極值 寄存器初始化為閾值數(shù)據(jù),即可完成滿足閾值的極值的排序過程。
[0071] 步驟2、比較數(shù)據(jù);
[0072] 每個時鐘節(jié)拍輸入排序單元一個數(shù)據(jù)。將輸入數(shù)據(jù)和極值存儲數(shù)據(jù)送入比較器進 行比較。
[0073] 步驟3、更新寄存器;
[0074] 根據(jù)比較器B的結(jié)果:
[0075] (1)、如果輸入數(shù)據(jù)大于存儲的極值,將輸入數(shù)據(jù)寫入極值寄存器作為新的極值, 同時將極值寄存器中存儲的數(shù)據(jù)寫入級間緩存寄存器。比較器的輸出結(jié)果和使能信號相與 作為極值寄存器的寫使能;
[0076] (2)、如果輸入數(shù)據(jù)小于存儲極值,極值寄存器不更新,選擇輸入數(shù)據(jù)寫入級間緩 存寄存器。
[0077] 步驟4、更新輸出。
[0078] 將輸入使能信號延遲一拍輸出,作為下一級排序單元的使能控制信號。將級間緩 存寄存器的數(shù)據(jù)輸出,作為下一級排序單元的輸入數(shù)據(jù)。
[0079] 以上所述為排序單元的結(jié)構(gòu)和實施方法,下面說明排序電路的結(jié)構(gòu)和實施方法。
[0080] 如前所述,排序電路是由η個排序單元級聯(lián)構(gòu)成,η是需要排序的極值個數(shù)。排序 電路完成從m個數(shù)據(jù)中η個極值排序。易見,對m個數(shù)據(jù)的排序處理過程,即是按數(shù)值大小 排序并搜索η個極值的過程。
[0081] 圖3為本發(fā)明中排序電路的級聯(lián)結(jié)構(gòu)框圖。該電路共有η個排序單元 CEi(0彡i彡η-1)級聯(lián)構(gòu)成。內(nèi)部級聯(lián)關(guān)系為:CEi-I的使能輸出CEi-LEN連接到CEi的 使能輸入CEi.EN;CEi-l的數(shù)據(jù)輸出CEi-LD連接到CEi的數(shù)據(jù)輸入CEi.D。對于CEO的 輸入使能連接排序電路的使能輸入EN,輸入數(shù)據(jù)連接排序電路的數(shù)據(jù)輸入DATA。
[0082] 如圖3所述的排序電路,其工作過程為:
[0083] 每個時鐘節(jié)拍從輸入端口DATA輸入一個新的有效數(shù)據(jù),同時輸入一個使能脈沖 信號EN.該數(shù)據(jù)首先在CEO單元中進行排序比較。按照前邊對排序單元的工作工作過程說 明:
[0084] (I):如果該輸入數(shù)據(jù)滿足CEO單元中極值數(shù)據(jù)的替換條件,即輸入數(shù)據(jù)大于(或 小于)極值數(shù)據(jù),將輸入數(shù)據(jù)寫入CEO的極值寄存器BR,成為新的候選極值。同時將極值寄 存器中原來存儲的數(shù)據(jù)寫入級間緩存寄存器SR中,在下一個時鐘節(jié)拍將SR中的數(shù)據(jù)推送 到下一個排序單元CEl中,將該數(shù)據(jù)與CEl中存儲的極值比較。
[0085] (2):否則,保持CEO中極值寄存器不更新,將輸入數(shù)據(jù)寫入SR寄存器,在下一個時 鐘節(jié)拍推送到下一個排序單元CEl中進行比較排序。
[0086] 以此類推,直到數(shù)據(jù)經(jīng)過排序電路中所有的級聯(lián)排序單元。
[0087] 更一般地討論情況是:
[0088] 如果排序電路中單元CEi的輸入數(shù)據(jù)CEi.DATAin(即CEi-I的輸出CEi-LD)滿 足極值寄存器的替換條件,將輸入數(shù)據(jù)寫入CEi的極值寄存器BR,成為新的候選極值。同時 將極值寄存器中原來存儲的數(shù)據(jù)寫入級間緩存寄存器SR中,在下一個時鐘節(jié)拍將SR中的 數(shù)據(jù)推送到下一個排序單元CEi+Ι中,將該數(shù)據(jù)與CEi+Ι中存儲的極值比較。同時推送到 下一個排序單元的還有延遲一個時鐘節(jié)拍的數(shù)據(jù)使能信號。
[0089] 如果不滿足極值寄存器替換條件,保持CEi中極值寄存器不更新,將輸入數(shù)據(jù)寫 入SR寄存器,在下一個時鐘節(jié)拍推送到下一個排序單元CEi+Ι中進行比較排序。
[0090] 按照上述過程,輸入數(shù)據(jù)寫入BR寄存器,相當于輸入數(shù)據(jù)在極值有序序列中獲得 了一個合適的位置,將該新的數(shù)據(jù)排序到有序序列中。在排序電路中就是獲取了CEi的極 值寄存器,占據(jù)了有序序列的第i個位置。在有序序列中,第i個位置被新的數(shù)據(jù)排序占 據(jù),那么第i個位置及大于i的位置上的數(shù)據(jù),都要向后移動一個位置,即排序電路中CEi 及CEi+Ι之后所有單元的BR寄存器都要向后移動到后一個單元的BR內(nèi)。為了與新的輸入 數(shù)據(jù)統(tǒng)一處理,將BR寄存器替換出來的數(shù)據(jù)對每一級CEi都當作一個新的數(shù)據(jù)處理,經(jīng)過 比較排序后與入BR寄存器。
[0091] 類似的,如果輸入數(shù)據(jù)在所有η個單元內(nèi)都沒有滿足替換極值寄存器的條件,那 么該數(shù)據(jù)將流出排序電路,即新的數(shù)據(jù)小于當前有序序列中所有的η個數(shù)據(jù)。
[0092] 按照所述的替換過程,新的數(shù)據(jù)進入排序電路后,需要η個時鐘節(jié)拍完成該數(shù)據(jù) 在當前有序序列中的排序,并插入到有序序列中合適的位置。該位置通過排序單元的標號 i來標明。
[0093] 圖4表明了極值寄存器組和有序序列的位置關(guān)系。η個極值的有序序列中,最大值 (或最小值)位于標號〇的極值寄存器BRO中,最小值(或最大值)位于標號為BRn-I的單 元中。
[0094] 由于所述排序單元CE內(nèi)級間緩存寄存器的使用,可以使數(shù)據(jù)的排序流水進行,該 電路可以在電路內(nèi)同時處理η個新的數(shù)據(jù)的排序操作。如果將所述排序電路集成到計算單 元之后,每個時鐘節(jié)拍向排序單元輸入一個新的數(shù)據(jù)進行,那么該電路完成m個數(shù)據(jù)的排 序僅需要(m+n-1)拍。輸入數(shù)據(jù)在使能無效情況下,也可以在流水中插入間隙。如表中數(shù) 據(jù)D3的處理,和前邊流水數(shù)據(jù)輸入之間有兩拍間隙。
[0095]
【權(quán)利要求】
1. 一種實現(xiàn)數(shù)據(jù)排序的級聯(lián)結(jié)構(gòu)電路,包括一個輸入接口和由η個排序單元CEi構(gòu)成 的級聯(lián)陣列,〇 < i〈n,η為需要排序的數(shù)值個數(shù),其特征在于: 所述排序電路的輸入接口包括一個數(shù)據(jù)輸入接口和一個排序電路使能信號接口,待排 序搜索的數(shù)據(jù)從數(shù)據(jù)接口輸入到排序電路中,與數(shù)據(jù)同時輸入一個節(jié)拍的使能EN有效信 號,表明當前數(shù)據(jù)是有效數(shù)據(jù),同時使能信號EN啟動排序電路對數(shù)據(jù)的排序; 每一個排序單元包括兩個輸入接口和兩個輸出接口,一個輸入接口為數(shù)據(jù)輸入 Dataln,另一個輸入接口為使能控制信號Enln,一個輸出接口為數(shù)據(jù)經(jīng)排序單元比較后的 數(shù)據(jù)DataOut,另一個輸出接口為對EnIn信號在當前排序單元內(nèi)延遲一拍后輸出EnOut ; CEi 的輸出 CEi. DataOut 和 CEi. EnOut 連接到 CEi+Ι 的輸入 CEi+1. DataIn 和 CEi. EnIn ;第 一個排序單元CEO的輸入CEO. DataIn和CEO. EnIn分別連接到排序電路為數(shù)據(jù)的輸入DATA 和數(shù)據(jù)輸入使能EN ; 每一個排序單元內(nèi)部包括一個極值寄存器BR、一個級間緩存寄存器SR、一個比較器 CP、一個延遲單元DE、一個與門AND2和一個2選1多路選擇器; 所述排序單元的數(shù)據(jù)輸入DataIn連接到極值寄存器BR的輸入、比較器CP的一個輸入 端以及2選1選擇器的一個輸入上;使能輸入EnIn連接到延遲單元DE的輸入和AND2的一 個輸入端;級間緩存寄存器SR的輸出連接到排序單元的輸出;延遲單元DE的輸出連接到 排序單元的使能輸出上;極值寄存器BR的輸出分別連接到比較器CP的另一個輸入端和2 選1選擇器的另一個輸入端;2選1選擇器的輸出連接到級間緩存寄存器SR的輸入上;t匕 較器CP的比較結(jié)果輸出連接分別連接到2選1選擇器的選擇控制端和與門AND2的一個輸 入;與門AND2的輸出連接到極值寄存器BR的寫使能端,在使能有效的情況下,將輸入數(shù)據(jù) 寫入極值寄存器BR中;所述級間緩存寄存器SR用于存儲判斷為非極值的數(shù)據(jù)。通過所述 的2選1選擇器選擇輸入SR寄存器的數(shù)據(jù);如果比較結(jié)果成立,BR寄存器中替換出來的數(shù) 據(jù)被存入SR寄存器;否則,將輸入數(shù)據(jù)存入SR寄存器。
2. 根據(jù)權(quán)利要求1所述的實現(xiàn)數(shù)據(jù)排序的級聯(lián)結(jié)構(gòu)電路,其特征在于:將排序電路中 每個排序單元的SR寄存器去掉,將SR寄存器的輸入和輸出直接連接。
3. -種利用權(quán)利要求1所述裝置實現(xiàn)數(shù)據(jù)排序的方法,其特征在于包括下述步驟: 步驟1.對排序電路中每個排序單元的極值寄存器和使能延遲單元進行復(fù)位,若搜索 極大值,將極值寄存器初始化為待搜索數(shù)據(jù)集合的左邊界或小于左邊界的數(shù)值,各排序單 元的使能延遲單元初始為無效;若搜索極小值,將極值寄存器初始化為帶搜索數(shù)集右邊界 或大于右邊界的數(shù)值; 步驟2.數(shù)據(jù)和使能信號輸入排序電路,首先進入第一級排序單元處理,隨后將第一級 排序單元的輸出數(shù)據(jù)和輸出使能傳遞給下一級排序單元,并逐級向后續(xù)每一級排序單元傳 遞數(shù)據(jù)和使能并進行排序; 步驟3.數(shù)據(jù)輸入結(jié)束,轉(zhuǎn)步驟4 ;否則,轉(zhuǎn)步驟2繼續(xù)搜索排序。 步驟4.從極值寄存器組中,按標號順序從有序序列中讀出所需極值數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1所述的實現(xiàn)數(shù)據(jù)排序的方法,其特征在于所述步驟2中每一級排序 單元的處理步驟為: 步驟2-1 :將輸入數(shù)據(jù)和極值存儲數(shù)據(jù)送入比較器進行比較; 步驟2-2 :如果輸入數(shù)據(jù)大于存儲的極值,將輸入數(shù)據(jù)寫入極值寄存器作為新的極值, 同時將極值寄存器中存儲的數(shù)據(jù)寫入級間緩存寄存器;否則,極值寄存器不更新,選擇輸入 數(shù)據(jù)寫入級間緩存寄存器; 步驟2-3 :輸入使能信號延遲一拍輸出,作為下一級排序單元的使能控制信號;將級間 緩存寄存器的數(shù)據(jù)輸出,作為下一級排序單元的輸入數(shù)據(jù)。
【文檔編號】G06F7/08GK104317549SQ201410546091
【公開日】2015年1月28日 申請日期:2014年10月15日 優(yōu)先權(quán)日:2014年10月15日
【發(fā)明者】曹輝, 楊靚, 周泉, 王碩 申請人:中國航天科技集團公司第九研究院第七七一研究所