專利名稱:一種歸并排序結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及排序算法領(lǐng)域,具體為一種歸并排序結(jié)構(gòu)。
背景技術(shù):
排序算法在科學技術(shù)領(lǐng)域已經(jīng)有了極其詳盡的研究,已有許多成熟的排序算法,近年來,在不同的應(yīng)用下也提出了多種基于FPGA的排序方法,根據(jù)應(yīng)用的不同,基于FPGA的排序一般分為兩類:基于網(wǎng)絡(luò)的排序和基于線性數(shù)組的排序?;诰W(wǎng)絡(luò)的排序一般使用兩輸入的交換比較器來排序,Zhang,Y.采用了固定大小的排序網(wǎng)絡(luò),分為輸入隊列,乒乓排序網(wǎng)絡(luò),和輸出檢測模塊。Martinez et al.提出了應(yīng)用在塊排序壓縮上的網(wǎng)絡(luò)排序算法,采用了乒乓操作,實現(xiàn)數(shù)據(jù)循環(huán)處理,排序單元處理128個字符,最終的結(jié)果顯示可達到的最大時鐘頻率為50MHZ左右。基于線性數(shù)組的排序基于可擴展的線性數(shù)組,Paraham, Kwai采用比較/插入單元,每個單元包含比較器,乘法器和控制單元,可擴展線性數(shù)組包含一系列的單元。K.Ratnayake和A.Amer提出了計數(shù)排序算法, 不過他們是在BRAMS上實現(xiàn)排序算法,較為復(fù)雜,M.Edahiro在EDK的開發(fā)環(huán)境下實現(xiàn)了并行的排序算法。縱觀以上排序算法,有的是針對特殊應(yīng)用的排序,有的在對有限的數(shù)據(jù)排序的時候,資源利用率較高的同時,最大時鐘頻率很低,無法滿足對于高清實時圖片的特征點排序的要求。歸并排序是建立在歸并操作上的一種有效排序算法,歸并操作是將兩個或兩個以上有序隊列合并成一組新的有序表,舉例如下,若已知兩組有序隊列分別為1,3,5和2,4,6,見圖1所示,兩路歸并操作,A,B分別為排完序的有序隊列,C為A,B的歸并結(jié)果,其歸并步驟如下:
1、分別取A,B的隊頭,設(shè)a,b,比較a,b兩者的大??;(比較操作)
2、a,b中較大者出隊,放入緩存tmp中;(出隊操作)
3、tmp壓入C的隊尾;(入隊操作)
重復(fù)步驟1-3直到A,B中一個為空,執(zhí)行步驟4 ;
4、A/B為空,將B/A隊頭放入tmp中;(出隊操作)
5、將tmp壓入C的隊尾;(入隊操作)
重復(fù)步驟5-6,直到A,B兩者都為空。一種基于歸并操作的歸并排序,設(shè)待排序的數(shù)列為D[n],數(shù)列的長度為N,其歸并步驟如下所述:將D[n]分為N個已排完序的長度為I的隊列,兩兩之間運行用歸并操作,合并成floor[n/2]個兩兩有序的隊列,循環(huán)進行之,兩兩之間進行歸并操作,直到最后合并成一個N有序的隊列,舉例見圖2所示,數(shù)列為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操作,其算法比較簡單,適用于多種隊列的排序,歸并排序效率高且穩(wěn)定,但是比較占用內(nèi)存,其時間復(fù)雜度為0(Nlog(N)),空間負責度是0(N)。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了一種歸并排序結(jié)構(gòu),其利用FPGA結(jié)構(gòu)實現(xiàn)歸并排序的操作,實現(xiàn)資源和效率的最大化,能夠完全滿足對于高清實時圖片的特征點排序的要求,且時間復(fù)雜度優(yōu)于基于PC操作的歸并排序。其技術(shù)方案是這樣的:一種歸并排序結(jié)構(gòu),其特征在于,其包括歸并組件,所述歸并組件包括存儲的隊列,所述隊列連接比較器和輔助控制器,所述輔助控制器上設(shè)置有計數(shù)所述隊列出隊或入隊操作的計數(shù)器。其進一步特征在于,所述存儲的隊列包括兩個隊列寄存器,兩個所述隊列寄存器連接所述比較器,兩個所述隊列寄存器分別連接所述輔助控制器;所述比較器采用上升沿觸發(fā);所述輔助控制器設(shè)置有計數(shù)每個所述隊列寄存器的出隊或入隊的計數(shù)器。其進一步特征在于,所述存儲的隊列包括兩個FIFO,所述輔助控制器包括時序邏輯輔助控制器和組合邏輯輔助控制器,所述時序邏輯輔助控制器和所述組合邏輯輔助控制器分別連接所述FIFO,所述FIFO分別設(shè) 置有FIFOIN和FIF00UT端口,所述其中一個FIFO的FIF00UT端口連接所述另一個FIFO的FIFOIN端口,讀信號口、寫信號口分別連接所述FIFO ;所述FIFO的FIF00UT端口分別連接比較器,所述時序邏輯輔助控制器設(shè)置有計數(shù)所述每個所述FIFO出隊或入隊操作的計數(shù)器;
所述讀信號口和所述比較器通過與門分別連接所述FIF0,通過所述比較器分別處理得到額外讀信號與所述讀信號口讀信號共同控制每個所述FIFO的讀操作。其更進一步特征在于,所述歸并組件包括兩個及兩個以上,每個所述歸并組件中的所述輔助控制器上還設(shè)置有所述歸并組件的輸入輸出切換的組計數(shù)器;相鄰的兩個所述歸并組件的輸出可以作為下一所述歸并組件的輸入。采用本發(fā)明的結(jié)構(gòu)后,其利用FPGA結(jié)構(gòu)中的存儲的隊列、比較器、輔助控制來實現(xiàn)歸并排序的操作,且其歸并排序的空間復(fù)雜度是O(N),優(yōu)于基于PC操作的歸并排序的時間復(fù)雜度CCiVlog(Ar)),結(jié)構(gòu)簡單,且操作穩(wěn)定,實現(xiàn)資源和效率的最大化,能夠完全滿足對于高清實時圖片的特征點排序的要求。
圖 為歸并操作示意 圖2為基于歸并操作的歸并排序示意 圖3為基于寄存器歸并操作示意 圖4為基于FIFO的歸并操作示意圖。
具體實施例方式見圖3所示,為基于寄存器的歸并操作,其硬件結(jié)構(gòu):存儲的隊列包括兩個隊列寄存器,兩個隊列寄存器連接比較器,兩個隊列寄存器分別連接輔助控制器,比較器采用上升沿觸發(fā),輔助控制器設(shè)置有計數(shù)每個隊列寄存器的出隊或入隊的計數(shù)器;隊列:隊列長度為N:N個寄存器Dl,D2...DN,其中Dl為隊頭,DN為隊尾;比較器:排序的數(shù)據(jù)位η位,采用η位的比較器,由上升沿觸發(fā);輔助控制器:每個隊列有一個標記位FLAG,用一個標記位FLAG來計數(shù),初始為O,入隊時標記加一,出隊時標記減一,一組隊列(兩個)有一個組標記位BUFFFLAG,用來判斷歸并組件之間的輸入輸出切換,實現(xiàn)多組歸并組件的乒乓操作。需要排列的數(shù)據(jù)分別輸入到兩個隊列寄存器中,隊列寄存器每進入一個數(shù)據(jù),通過計數(shù)器對標記位FLAG加一,直到所有數(shù)據(jù)都進入到兩個隊列寄存器中,然后分別從兩個隊列寄存器的隊頭取出數(shù)據(jù),通過比較器進行比較,將比較結(jié)果輸出,同時隊列寄存器每取出一個數(shù)據(jù),通過計數(shù)器對標記位FLAG減一,重復(fù)以上操作,直到一個隊列寄存器中的數(shù)據(jù)全部取出,即標記位FLAG為O時,將另一個隊列寄存器中的數(shù)據(jù)依次輸出,完成排序。行為描述:(以下操作均為一個時間周期內(nèi),由上升沿觸發(fā)) 隊列行為:
(1)出隊操作,OUIX=Dl;D1〈=D2; D2〈=D3;…D(N-1X=DN ;
(2)入隊操作,D1<=D2;D2<=D3;— D (N-1) <=DN;DN<=IN ;
(3)判斷隊列是否為空,F(xiàn)LAG為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。以上步驟可見基于寄存器的歸并操作步驟和經(jīng)典的PC操作幾乎一樣,因為在基于寄存器實現(xiàn)的時候,出隊,入隊,取隊頭,比較大小都可以在同一個時鐘周期內(nèi)實現(xiàn),所以可以直接用時序邏輯實現(xiàn)。見圖4所示,為基于FIFO的歸并操作,存儲的隊列包括兩個FIFO,輔助控制器包括時序邏輯輔助控制器和組合邏輯輔助控制器,時序邏輯輔助控制器和組合邏輯輔助控制器分別連接FIFO,F(xiàn)IFO分別設(shè)置有FIFOIN和FIF00UT端口,其中一個FIFO的FIF00UT端口連接另一個FIFO的FIFOIN端口,讀信號口、寫信號口分別連接FIFO ;FIF0的FIF00UT端口分別連接比較器,時序邏輯輔助控制器設(shè)置有計數(shù)每個FIFO出隊或入隊操作的計數(shù)器;讀信號口和比較器通過與門分別連接FIF0,通過比較器分別處理得到額外讀信號與讀信號口讀信號共同控制每個FIFO的讀操作。當基于FIFO實現(xiàn)的時候,入隊,出隊要依靠W,R信號位來控制,當一個上升沿后設(shè)置R=l,等一個時鐘周期才能獲得FIFO隊頭數(shù)據(jù),若比較器用時序邏輯實現(xiàn),則需要再等一個時鐘周期之后,才能比較兩個隊頭數(shù)據(jù),那么數(shù)據(jù)的輸出比輸入多一倍的時鐘周期,無法組合成乒乓操作和并行的多層次結(jié)構(gòu),所以將FIFO的控制用時序邏輯實現(xiàn),而將比較器用組合邏輯實現(xiàn),從而實現(xiàn)輸入,輸出的時鐘周期數(shù)相等。寫信號設(shè)置為I,數(shù)據(jù)輸入,由于A_FIF0的FIF00UT與B_FIF0的FIFOIN連接,數(shù)據(jù)一次輸入后,每個FIFO進入一個數(shù)據(jù),標記位FLAG加一,取出一個,標記位FLAG減一,直到數(shù)據(jù)全部輸入,分別取兩個FIFO的FIF00UT中的數(shù)據(jù)進行比較,將比較結(jié)果輸出,同時,根據(jù)比較結(jié)果輸出一個額外讀信號與讀信號口的讀信號通過與門控制下組數(shù)據(jù)的讀信號,同時FIFO每取出一個數(shù)據(jù),通過計數(shù)器對標記位FLAG減一,重復(fù)以上操作,直到一個FIFO中的數(shù)據(jù)全部取出,即標記位FLAG為O時,將另一個FIFO的數(shù)據(jù)依次輸出,完成排序。硬件結(jié)構(gòu):
隊列=FIFO隊列。FIFO長度為2M (大于等于N),有數(shù)據(jù)輸入端口 FIF0IN、輸出端口FIF00UT,和讀信號W,寫信號R,以及空滿信號。比較器:排序的數(shù)據(jù)位η位,采用η位的比較器,采用組合邏輯實現(xiàn)。時序邏輯輔助控制器:每個FIFO有一個讀信號R,寫信號W,用一個標記位FLAG來計數(shù),初始為O, W=I,入隊時標記位FLAG加一,R=I,出隊時標記位FLAG減一;一組隊列(兩個)有一個組標記位BUFFFLAG,用來判斷組件的輸入輸出切換,實現(xiàn)多組的乒乓操作。組合邏輯輔助控制器:每個隊列有一個額外讀信號R1,由比較器的比較結(jié)果控制。隊列行為:
(1)出隊操作,F(xiàn)IF0IN〈=IN;R〈=l;
(2)入隊操作,0UT<=FIF00UT;W<=1;
(3)判斷隊列是否為空,F(xiàn)IFO自己空滿信號,不過一般FIFO的長度和有序隊列的長度不等,所以還是用FLGA來判斷,F(xiàn)LAG為O時,隊列空;FLAG等于N,隊列滿。歸并輸入:
將A的隊頭和B的隊尾銜接,數(shù)據(jù)始終由A的隊尾插入,再由A的隊頭插入B的隊尾,A、B由A_FIF00UT和B_FIF0IN銜接,等價模型就是A、B中間加了 2個寄存器:
1:A的隊頭和B的隊尾銜接;B_FIFIIN〈=A_FIF00UT;
2:數(shù)據(jù)輸入A,
權(quán)利要求
1.一種歸并排序結(jié)構(gòu),其特征在于,其包括歸并組件,所述歸并組件包括存儲的隊列,所述隊列連接比較器和輔助控制器,所述輔助控制器上設(shè)置有計數(shù)所述隊列出隊或入隊操作的計數(shù)器。
2.根據(jù)權(quán)利要求1所述的一種歸并排序結(jié)構(gòu),其特征在于,所述存儲的隊列包括兩個隊列寄存器,兩個所述隊列寄存器連接所述比較器,兩個所述隊列寄存器分別連接所述輔助控制器。
3.根據(jù)權(quán)利要求2所述的一種歸并排序結(jié)構(gòu),其特征在于,所述比較器采用上升沿觸發(fā)。
4.根據(jù)權(quán)利要求3所述的一種歸并排序結(jié)構(gòu),其特征在于,所述輔助控制器設(shè)置有計數(shù)每個所述隊列寄存器的出隊或入隊的計數(shù)器。
5.根據(jù)權(quán)利要求1所述的一種歸并排序結(jié)構(gòu),其特征在于,所述存儲的隊列包括兩個FIFO,所述輔助控制器包括時序邏輯輔助控制器和組合邏輯輔助控制器,所述時序邏輯輔助控制器和所述組合邏輯輔助控制器分別連接所述FIFO,所述FIFO分別設(shè)置有FIFOIN和FIF00UT端口,所述其中一個FIFO的FIF00UT端口連接所述另一個FIFO的FIFOIN端口,讀信號口、寫信號口分別連接所述FIFO。
6.根據(jù)權(quán)利要求5所述的一種歸并排序結(jié)構(gòu),其特征在于,所述FIFO的FIF00UT端口分別連接比較器,所述時序邏輯輔助控制器設(shè)置有計數(shù)所述每個所述FIFO出隊或入隊操作的計數(shù)器。
7.根據(jù)權(quán)利要求6所述的一種歸并排序結(jié)構(gòu),其特征在于,所述讀信號口和所述比較器通過與門分別連接所述FIF0,通過所述比較器分別處理得到額外讀信號與所述讀信號口讀信號共同控制每個所述FIFO的讀操作。`
8.根據(jù)權(quán)利要求1所述的一種`歸并排序結(jié)構(gòu),其特征在于,所述歸并組件包括兩個及兩個以上,每個所述歸并組件中的所述輔助控制器上還設(shè)置有所述歸并組件的輸入輸出切換的組計數(shù)器。
9.根據(jù)權(quán)利要求8所述的一種歸并排序結(jié)構(gòu),其特征在于,相鄰的兩個所述歸并組件的輸出可以作為下一所述歸并組件的輸入。
全文摘要
本發(fā)明涉及排序算法領(lǐng)域,具體為一種歸并排序結(jié)構(gòu),其利用FPGA結(jié)構(gòu)實現(xiàn)歸并排序的操作,實現(xiàn)資源和效率的最大化,能夠完全滿足對于高清實時圖片的特征點排序的要求,且時間復(fù)雜度優(yōu)于基于PC操作的歸并排序,其包括歸并組件,所述歸并組件包括存儲的隊列,所述隊列連接比較器和輔助控制器,所述輔助控制器上設(shè)置有計數(shù)所述隊列出隊或入隊操作的計數(shù)器。
文檔編號G06F9/38GK103226464SQ20131010648
公開日2013年7月31日 申請日期2013年3月29日 優(yōu)先權(quán)日2013年3月29日
發(fā)明者柴志雷 申請人:江蘇復(fù)芯物聯(lián)網(wǎng)科技有限公司