《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的硬件排序系統(tǒng)設(shè)計(jì)
基于FPGA的硬件排序系統(tǒng)設(shè)計(jì)
2015年電子技術(shù)應(yīng)用第12期
胡二猛,錢承山,張永宏,許 強(qiáng)
南京信息工程大學(xué) 信息與控制學(xué)院,江蘇 南京210044
摘要: 針對(duì)軟件排序速度慢、排序數(shù)據(jù)量小以及占用CPU資源多等問題,設(shè)計(jì)了一種基于FPGA的硬件排序系統(tǒng)。排序過程采用DMA工作方式,不占用CPU資源;數(shù)據(jù)傳輸采用SISO(串行輸入/串行輸出)方式,減少FPGA內(nèi)部布線資源,增強(qiáng)排序系統(tǒng)可靠性。利用Modelsim仿真工具對(duì)硬件排序系統(tǒng)進(jìn)行仿真驗(yàn)證,仿真結(jié)果表明,硬件排序系統(tǒng)可以有效提高排序效率以及降低CPU使用率。
中圖分類號(hào): TP303
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.12.009

中文引用格式: 胡二猛,錢承山,張永宏,等. 基于FPGA的硬件排序系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2015,41(12):39-41.
英文引用格式: Hu Ermeng,Qian Chengshan,Zhang Yonghong,et al. Hardware sorting system design based on FPGA[J].Application of Electronic Technique,2015,41(12):39-41.
Hardware sorting system design based on FPGA
Hu Ermeng,Qian Chengshan,Zhang Yonghong,Xu Qiang
School of Information & Control, Nanjing University of Information Science & Technology,Nanjing 210044,China
Abstract: Aiming at the problems of software sorting, such as slow speed, small sorting data volume and large occupancy of CPU resource, a hardware sorting system based on FPGA(Field Programmable Gate Array) is designed. This system has the following characters: sorting process adopts DMA(Direct Memory Access), without occupying the CPU resource; data transmission adopts SISO(Serial Input Serial Output), lessening the internal wiring resources of FPGA and enhancing the system reliability. The sorting hardware model is verified through Modelsim simulation tool. The simulation result shows that the hardware sorting system can effectively improve the sorting efficiency and reduce CPU usage rate.
Key words : FPGA;hardware sorting;DMA;SISO;improvement of the sorting efficiency

  

0 引言

    排序是計(jì)算機(jī)程序設(shè)計(jì)中的一個(gè)重要操作,它的作用是將一個(gè)無(wú)序的數(shù)列按照其中的某些關(guān)鍵字,遞增或者遞減地排成一個(gè)有序數(shù)列。排序在計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)輔助設(shè)計(jì)、機(jī)器人、數(shù)字信號(hào)處理、模式識(shí)別等領(lǐng)域應(yīng)用十分廣泛,在以上領(lǐng)域的數(shù)據(jù)處理時(shí),程序排序算法占據(jù)了很大的比重[1]。排序算法曾被評(píng)為對(duì)科學(xué)和工程計(jì)算的研究與實(shí)踐影響最大的十大問題之一,因此,排序算法既有廣泛的應(yīng)用價(jià)值,又有深刻的理論意義[2]。排序是一個(gè)高度復(fù)雜、耗時(shí)和頻繁的運(yùn)算,其頻繁程度不亞于基本的算術(shù)運(yùn)算和邏輯運(yùn)算,后兩者運(yùn)算在計(jì)算機(jī)中分別由算術(shù)運(yùn)算部件和邏輯運(yùn)算部件完成,但是沒有專門的部件完成排序算法[3]

    目前,在數(shù)字信號(hào)和圖像處理等實(shí)時(shí)性要求比較高的場(chǎng)合,利用軟件實(shí)現(xiàn)排序算法很難滿足需求,相比之下,硬件排序機(jī)不僅排序效率高,而且占用CPU資源少[4]。例如:在2014巴西世界杯上第一次采用了門線技術(shù)和3D回放技術(shù),這些技術(shù)是利用FPGA構(gòu)造硬件加速器實(shí)現(xiàn)的。在硬件加速器中,必然要利用邏輯電路構(gòu)造高效率的硬件排序機(jī),以滿足實(shí)時(shí)性要求。 

1 硬件排序機(jī)的工作原理

    硬件排序機(jī)采用直接插入排序法,其基本思想是:每次將待排序序列的第N個(gè)數(shù)據(jù)元素的關(guān)鍵碼與前面已排好序的N-1、N-2、N-3、…、2、1數(shù)據(jù)元素的關(guān)鍵碼進(jìn)行并行比較,只需一個(gè)時(shí)鐘周期即可找到對(duì)應(yīng)插入位置,排在后面的數(shù)據(jù)元素順序后移,直到全部數(shù)據(jù)排好順序。由于升序和降序排序原理相同,本文選擇降序來(lái)進(jìn)行設(shè)計(jì)。假設(shè)一次對(duì)N個(gè)數(shù)據(jù)進(jìn)行排序,得到如圖1所示的硬件架構(gòu)模型。硬件排序機(jī)由一個(gè)狀態(tài)機(jī)、N個(gè)多路選擇、一個(gè)長(zhǎng)度為N的寄存器組、N個(gè)比較器以及一個(gè)N位解碼器組成。

wdz2-t1.gif

    排序機(jī)的排序過程如下:待排序數(shù)據(jù)以串行方式進(jìn)入數(shù)據(jù)總線,N個(gè)比較器同時(shí)與總線上數(shù)據(jù)進(jìn)行比較,產(chǎn)生N個(gè)比較碼,解碼器對(duì)N個(gè)比較碼進(jìn)行解碼產(chǎn)生N個(gè)控制信號(hào),控制信號(hào)送至對(duì)應(yīng)的多路選擇器控制信號(hào)輸入端,多路選擇器根據(jù)控制信號(hào)選擇不同的數(shù)據(jù)通道,將對(duì)應(yīng)數(shù)據(jù)存放在寄存器組中。待一組數(shù)據(jù)在寄存器組中排序完成,通過壓棧方式將數(shù)據(jù)從寄存器組中順序壓出,直至所有數(shù)據(jù)全部被壓出。根據(jù)硬件架構(gòu)模型,給出了排序的數(shù)學(xué)模型:

    wdz2-gs1-3.gif

    上式中的Ri為寄存器,data為待排序數(shù)據(jù)。

2 排序系統(tǒng)的FPGA實(shí)現(xiàn)

2.1 排序系統(tǒng)的總體設(shè)計(jì)

    排序系統(tǒng)由排序機(jī)和動(dòng)態(tài)存儲(chǔ)器兩部分組成,如圖2所示。動(dòng)態(tài)存儲(chǔ)器用來(lái)存放待排序和已經(jīng)排好序的數(shù)據(jù)。排序機(jī)和動(dòng)態(tài)存儲(chǔ)器之間采用 Avalon接口協(xié)議,它是一種主從式傳輸協(xié)議,數(shù)據(jù)傳輸過程無(wú)需復(fù)雜的握手/應(yīng)答機(jī)制[5,6]

wdz2-t2.gif

    排序系統(tǒng)共有7個(gè)外部接口,功能介紹如表1所示。

wdz2-b1.gif

2.2 排序機(jī)各個(gè)子模塊的FPGA實(shí)現(xiàn)

2.2.1 有限狀態(tài)機(jī)

    有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)是為了研究有限狀態(tài)的計(jì)算過程和某些語(yǔ)言類而抽象出的一種計(jì)算模型,反映從系統(tǒng)開始到當(dāng)前時(shí)刻的輸入變化的狀態(tài)[7]

    圖3所示是系統(tǒng)的排序狀態(tài)轉(zhuǎn)移圖,描述了系統(tǒng)在接收到CPU指令后進(jìn)行排序的過程。具體過程如下:(1)系統(tǒng)上電復(fù)位后,當(dāng)狀態(tài)機(jī)處于空閑狀態(tài),一旦接收到CPU的排序命令后,進(jìn)行自身初始化;(2)初始化完畢,狀態(tài)機(jī)接管SDRAM的控制權(quán),在從機(jī)SDRAM處于空閑狀態(tài)時(shí),從SDRAM中地址為source_addr處開始連續(xù)讀取長(zhǎng)度為data_length的一組數(shù)據(jù)送入排序邏輯單元中進(jìn)行排序;(3)待一組數(shù)據(jù)傳輸完畢,開始將寄存器中排序好的數(shù)據(jù)進(jìn)行壓棧輸出,直到數(shù)據(jù)全部被排出,一次完整排序完成。

wdz2-t3.gif

2.2.2 比較器

    系統(tǒng)中采用兩路比較器,是將待排序的新數(shù)據(jù)與對(duì)應(yīng)寄存器中的數(shù)據(jù)進(jìn)行比較,產(chǎn)生一個(gè)比較結(jié)果(0或者1)作為解碼器的輸入。比較器關(guān)鍵部分代碼如下:

    always@(*)

    if(next_data>current_data)

        gt <= 1;

        else gt <= 0; 

2.2.3 解碼器

    解碼器的作用是根據(jù)當(dāng)前對(duì)應(yīng)比較器的輸出以及上一級(jí)比較器的輸出產(chǎn)生一個(gè)控制信號(hào),控制對(duì)應(yīng)多路選擇器進(jìn)行數(shù)據(jù)通道選擇。解碼器一共輸出四種控制信號(hào),分別是清零、移入上級(jí)寄存器中數(shù)據(jù)、保持當(dāng)前數(shù)據(jù)和插入新數(shù)據(jù)。解碼器關(guān)鍵部分代碼如下:

    always@(*) begin    

    if(clr) 

        mux_sel <= 2′b11;

    else if (previous_gt==1)

        mux_sel <= 2′b01;

    else if(previous_gt==0 && current_gt==0)

        mux_sel <= 2′b00;

    else if(previous_gt==0 && current_gt==1)

        mux_sel <= 2′b10;

    else

        mux_sel <= 2′b00;

    end

2.2.4 多路選擇器

    系統(tǒng)中采用的是四選一多路器,四個(gè)數(shù)據(jù)通道分別是清零通道、上一級(jí)寄存器中數(shù)據(jù)、當(dāng)前寄存器中數(shù)據(jù)以及待排序數(shù)據(jù),根據(jù)對(duì)應(yīng)解碼器的輸出選擇其中一個(gè)數(shù)據(jù)通道作為對(duì)應(yīng)寄存器的輸入。

    多路選擇器關(guān)鍵部分代碼如下:

    always@(posedge clk)

    if(rst)buffer <= 8′d0;

    else if(en)

        case (mux_sel)

        2′b00 : buffer <= current_data;

        2′b01 : buffer <= previous_data;

        2′b10 : buffer <= next_data;

        2′b11 : buffer <= 8'd0;

        endcase

2.3 FPGA調(diào)試配置

    系統(tǒng)選用基于SRAM工藝的的FPGA芯片屬于易揮發(fā)性器件,即掉電后數(shù)據(jù)丟失,因此需要在每次上電時(shí)將網(wǎng)表加載到SDRAM中,為此Altera設(shè)計(jì)了專門用于自動(dòng)加載的配置芯片。將網(wǎng)表加載到配置芯片的過程稱為配置,將網(wǎng)表加載到FPGA的過程稱為編程。配置和編程在FPGA開發(fā)過程中是必不可少的,通常情況會(huì)專門預(yù)留兩個(gè)接口用于配置和編程。

    圖4給出了FPGA配置部分電路圖,與傳統(tǒng)FPGA配置電路不同,本系統(tǒng)沒有預(yù)留單獨(dú)用于配置和編程的接口,而是僅用了一個(gè)JTAG接口來(lái)實(shí)現(xiàn)配置和編程。在配置模式下,FPGA內(nèi)部會(huì)自動(dòng)調(diào)用一個(gè)軟核(Serial Flash Loader)將網(wǎng)表下載到EPCS64I16N芯片;在編程模式下,網(wǎng)表直接被下載到FPGA內(nèi)部SDRAM中。采用這種配置電路,不僅可以提高資源利用率,而且還減少了印制電路板的尺寸。

wdz2-t4.gif

3 仿真實(shí)驗(yàn)與分析

    為了驗(yàn)證硬件排序系統(tǒng)的可行性,基于Modelsim軟件進(jìn)行仿真驗(yàn)證。本次實(shí)驗(yàn)選用Cyclone IV EP4CE10-F17C8系列FPGA芯片,主頻為50 MHz。實(shí)驗(yàn)參數(shù)設(shè)定如下:data_length=1,source_addr=10,target_addr=300。圖5給出了排序機(jī)仿真波形圖,在5 330 ns時(shí)刻排序機(jī)被啟動(dòng),一組亂序數(shù)據(jù)進(jìn)入排序邏輯單元開始排序,在5 530 ns時(shí)刻數(shù)據(jù)輸入完成,此時(shí)數(shù)據(jù)已經(jīng)在寄存器組中完成降序排序。為了排出寄存器組中的數(shù)據(jù),在5 550 ns時(shí)刻開始?jí)撼鲆粋€(gè)最大數(shù)255將寄存器組中數(shù)據(jù)壓出,在5 730 ns時(shí)刻排序完成。

wdz2-t5.gif

    從圖5中可以看出,對(duì)10個(gè)數(shù)據(jù)排序共耗400 ns,排序效率高。數(shù)據(jù)傳輸過程采用SISO方式,數(shù)據(jù)傳輸與排序同時(shí)進(jìn)行。在排序過程中,排序機(jī)僅僅和SDRAM之間通過狀態(tài)機(jī)進(jìn)行數(shù)據(jù)傳遞,與CPU之間沒有數(shù)據(jù)傳遞,降低了CPU的使用率。

4 結(jié)束語(yǔ)

    本文提出一種基于FPGA的硬件排序系統(tǒng),并完成排序機(jī)的硬件架構(gòu)設(shè)計(jì),通過仿真證實(shí)硬件排序系統(tǒng)具有排序效率高、占據(jù)CPU資源少等特點(diǎn),彌補(bǔ)了軟件排序的不足,解決了實(shí)時(shí)性要求較高場(chǎng)合的排序問題。

參考文獻(xiàn)

[1] CORMEN T H,LEISERSON C E,RIVEST R L.Introduce to Algori_thms[M].2nd ed.The MIT Press,2001.

[2] 吳偉娜,孫世鵬,楊風(fēng),等.常用排序算法的比較與分析[J].電腦知識(shí)與分析,2013(9):2146-2149.

[3] 楊繡丞,李彤,趙娜,等.計(jì)算排序算法設(shè)計(jì)與分析[J].計(jì)算機(jī)應(yīng)用研究,2014,31(3):658-695.

[4] 呂偉新,李清清,婁俊嶺.FPGA比較矩陣排序法及其在中值濾波器中的應(yīng)用[J].電子器件,2012,35(1):34-38.

[5] 胡強(qiáng).FPGA與通用處理器同步數(shù)據(jù)傳輸接口的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(8):14-16.

[6] 楊鑫,徐偉俊,陳先勇,等.Avalone總線最新接口標(biāo)準(zhǔn)綜述[J].中國(guó)集成電路,2007,16(11):24-29.

[7] 孫宏旭,邢薇,陶林.基于有限狀態(tài)機(jī)的模型轉(zhuǎn)換方法的研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,22(2):10-17.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲午夜av在线| 欧美精品一区二区三区久久久竹菊| 亚洲国产欧美不卡在线观看| 亚洲欧美日韩视频一区| 一本色道久久88精品综合| 亚洲第一色在线| 国产一区二区三区最好精华液| 国产精品你懂的| 国产精品porn| 国产精品久久久久一区二区| 欧美日韩一区精品| 欧美日韩美女在线| 欧美日韩国产精品成人| 欧美日韩精品不卡| 欧美日韩亚洲一区三区| 欧美日韩三区| 欧美午夜视频在线| 欧美日韩一区二区在线观看| 欧美日韩专区在线| 欧美午夜精品久久久久久超碰| 欧美午夜视频| 国产精品视区| 国产日韩精品视频一区| 国产午夜精品在线| 狠狠干成人综合网| 亚洲国产精品免费| 亚洲精品一区二区网址 | 亚洲女爱视频在线| 亚洲欧美日韩国产一区| 欧美在线高清| 亚洲高清在线观看| 亚洲破处大片| 亚洲一区二区三区久久 | 久久国产精品亚洲77777| 久久黄色小说| 免费观看成人www动漫视频| 欧美99在线视频观看| 欧美国产日韩亚洲一区| 欧美日韩久久精品| 国产精品乱人伦一区二区 | 夜夜爽99久久国产综合精品女不卡| 这里只有视频精品| 欧美一级久久久| 亚洲国产日韩欧美一区二区三区| 91久久夜色精品国产九色| 一区二区三区视频在线| 欧美一区二区大片| 女人天堂亚洲aⅴ在线观看| 欧美日韩精品国产| 国产欧美一区二区三区沐欲| 狠狠色丁香婷婷综合影院| 亚洲人成在线播放网站岛国| 亚洲专区一区| 久久成人免费| 99综合精品| 久久电影一区| 欧美伦理91| 国产一区亚洲一区| 亚洲精品日韩欧美| 香蕉久久精品日日躁夜夜躁| 亚洲欧洲美洲综合色网| 午夜亚洲福利| 麻豆免费精品视频| 欧美性猛交99久久久久99按摩| 国产区精品视频| 亚洲人成亚洲人成在线观看| 亚洲欧美日韩视频一区| 日韩一级片网址| 久久er精品视频| 欧美日本国产| 国内成人在线| 国产精品99久久久久久久女警| 久久精品亚洲乱码伦伦中文| 亚洲香蕉网站| 美国成人直播| 国产日韩1区| 夜色激情一区二区| 亚洲福利视频在线| 欧美一二三区精品| 欧美日韩国产麻豆| 永久域名在线精品| 午夜在线不卡| 亚洲综合电影一区二区三区| 欧美 日韩 国产一区二区在线视频 | 亚洲精品一区二区在线观看| 久久av资源网站| 亚洲欧美日韩视频二区| 欧美精品三级日韩久久| 国产一区二区在线观看免费| 99re6这里只有精品视频在线观看| 亚洲第一福利在线观看| 欧美亚洲综合另类| 国产精品二区二区三区| 亚洲精品视频一区| 亚洲理论电影网| 麻豆精品国产91久久久久久| 国产欧美在线视频| 一区二区三区四区精品| 夜夜嗨av一区二区三区中文字幕| 麻豆av一区二区三区久久| 国产毛片一区二区| 亚洲视频免费看| 一区二区三区产品免费精品久久75| 免费高清在线视频一区·| 国产一区二区三区免费观看| 一区二区三区视频在线观看 | 亚洲国产精品999| 久久久www成人免费精品| 国产精品毛片在线| 在线亚洲精品福利网址导航| 日韩性生活视频| 欧美v日韩v国产v| 影音先锋亚洲视频| 亚洲国产精品一区二区久| 久久久久久久久岛国免费| 国产日韩欧美不卡在线| 亚洲欧美怡红院| 香蕉久久国产| 国产精品亚洲综合色区韩国| 亚洲私人影院在线观看| 亚洲一区二区三区中文字幕在线| 欧美精品一区二区蜜臀亚洲| 亚洲欧洲三级电影| 日韩亚洲精品在线| 欧美日韩国产一中文字不卡| 亚洲毛片播放| 亚洲一区国产| 国产精品女主播一区二区三区| 中国女人久久久| 午夜精品久久久久久久蜜桃app| 国产精品久久久久av| 亚洲一区二区在| 午夜亚洲性色福利视频| 国产日本亚洲高清| 久久激五月天综合精品| 久久综合九色综合久99| **网站欧美大片在线观看| 亚洲人成人99网站| 欧美精品一区二| 99这里有精品| 香蕉成人伊视频在线观看| 国产午夜久久久久| 亚洲国产精品久久久久婷婷884| 免费中文字幕日韩欧美| 亚洲精品在线看| 亚洲欧美另类国产| 国产亚洲一区二区三区在线播放 | 亚洲国语精品自产拍在线观看| 欧美91大片| 99热免费精品在线观看| 欧美亚洲三区| 极品少妇一区二区三区| 日韩一区二区高清| 国产精品久久久久999| 久久9热精品视频| 欧美激情在线免费观看| 9l视频自拍蝌蚪9l视频成人| 欧美一级黄色录像| 亚洲第一精品夜夜躁人人躁| 一区二区三区四区五区精品视频| 国产精品女人久久久久久| 久久精品欧美| 欧美日本国产视频| 西瓜成人精品人成网站| 免费视频最近日韩| 在线中文字幕一区| 久久亚洲视频| 日韩亚洲欧美成人一区| 欧美永久精品| 亚洲黄色免费| 欧美一区二区免费观在线| 欲色影视综合吧| 亚洲一区视频在线观看视频| 国产精品实拍| 亚洲七七久久综合桃花剧情介绍| 国产精品jvid在线观看蜜臀 | 亚洲欧美精品伊人久久| 在线观看国产精品网站| 亚洲欧美中文另类| 亚洲国产成人不卡| 亚洲欧美综合国产精品一区| 亚洲风情亚aⅴ在线发布| 亚洲欧美网站| 最新成人av在线| 久久成人免费日本黄色| 亚洲日本精品国产第一区| 欧美在线黄色| 日韩西西人体444www| 久久女同互慰一区二区三区| 日韩一区二区免费高清| 美女图片一区二区| 亚洲一区在线播放| 欧美韩国日本一区| 午夜一区二区三区在线观看 | 亚洲一区三区电影在线观看| 欧美大片免费看| 欧美一区免费视频| 国产精品毛片a∨一区二区三区|国| 亚洲黄色免费电影| 国产欧美在线观看一区|