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

中文引用格式: 胡二猛,錢承山,張永宏,等. 基于FPGA的硬件排序系統(tǒng)設(shè)計[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ī)程序設(shè)計中的一個重要操作,它的作用是將一個無序的數(shù)列按照其中的某些關(guān)鍵字,遞增或者遞減地排成一個有序數(shù)列。排序在計算機(jī)圖形學(xué)、計算機(jī)輔助設(shè)計、機(jī)器人、數(shù)字信號處理、模式識別等領(lǐng)域應(yīng)用十分廣泛,在以上領(lǐng)域的數(shù)據(jù)處理時,程序排序算法占據(jù)了很大的比重[1]。排序算法曾被評為對科學(xué)和工程計算的研究與實踐影響最大的十大問題之一,因此,排序算法既有廣泛的應(yīng)用價值,又有深刻的理論意義[2]。排序是一個高度復(fù)雜、耗時和頻繁的運算,其頻繁程度不亞于基本的算術(shù)運算和邏輯運算,后兩者運算在計算機(jī)中分別由算術(shù)運算部件和邏輯運算部件完成,但是沒有專門的部件完成排序算法[3]

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

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

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

wdz2-t1.gif

    排序機(jī)的排序過程如下:待排序數(shù)據(jù)以串行方式進(jìn)入數(shù)據(jù)總線,N個比較器同時與總線上數(shù)據(jù)進(jìn)行比較,產(chǎn)生N個比較碼,解碼器對N個比較碼進(jìn)行解碼產(chǎn)生N個控制信號,控制信號送至對應(yīng)的多路選擇器控制信號輸入端,多路選擇器根據(jù)控制信號選擇不同的數(shù)據(jù)通道,將對應(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實現(xiàn)

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

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

wdz2-t2.gif

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

wdz2-b1.gif

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

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

    有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)是為了研究有限狀態(tài)的計算過程和某些語言類而抽象出的一種計算模型,反映從系統(tǒng)開始到當(dāng)前時刻的輸入變化的狀態(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)時,從SDRAM中地址為source_addr處開始連續(xù)讀取長度為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ù)與對應(yīng)寄存器中的數(shù)據(jù)進(jìn)行比較,產(chǎn)生一個比較結(jié)果(0或者1)作為解碼器的輸入。比較器關(guān)鍵部分代碼如下:

    always@(*)

    if(next_data>current_data)

        gt <= 1;

        else gt <= 0; 

2.2.3 解碼器

    解碼器的作用是根據(jù)當(dāng)前對應(yīng)比較器的輸出以及上一級比較器的輸出產(chǎn)生一個控制信號,控制對應(yīng)多路選擇器進(jìn)行數(shù)據(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)中采用的是四選一多路器,四個數(shù)據(jù)通道分別是清零通道、上一級寄存器中數(shù)據(jù)、當(dāng)前寄存器中數(shù)據(jù)以及待排序數(shù)據(jù),根據(jù)對應(yīng)解碼器的輸出選擇其中一個數(shù)據(jù)通道作為對應(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ù)丟失,因此需要在每次上電時將網(wǎng)表加載到SDRAM中,為此Altera設(shè)計了專門用于自動加載的配置芯片。將網(wǎng)表加載到配置芯片的過程稱為配置,將網(wǎng)表加載到FPGA的過程稱為編程。配置和編程在FPGA開發(fā)過程中是必不可少的,通常情況會專門預(yù)留兩個接口用于配置和編程。

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

wdz2-t4.gif

3 仿真實驗與分析

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

wdz2-t5.gif

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

4 結(jié)束語

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

參考文獻(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].電腦知識與分析,2013(9):2146-2149.

[3] 楊繡丞,李彤,趙娜,等.計算排序算法設(shè)計與分析[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].電子技術(shù)應(yīng)用,2014,40(8):14-16.

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

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲一区不卡| 久久一区亚洲| 性色av一区二区三区红粉影视| 韩国av一区二区三区| 亚洲主播在线观看| 国产一区二区三区在线观看视频 | 国产精品福利av| 欧美国产三级| 久久久久亚洲综合| 香蕉av福利精品导航| 中日韩视频在线观看| 亚洲精品日韩在线| 久久精品亚洲国产奇米99| 亚洲一区欧美二区| 在线一区二区三区四区| 亚洲精品欧美极品| 亚洲电影自拍| 精品成人免费| 国产日韩欧美黄色| 欧美日韩综合一区| 久久精品免费| 香蕉免费一区二区三区在线观看| 一区二区三区日韩精品视频| 亚洲精品一区在线观看| 久久精品免费电影| 欧美在线精品一区| 欧美一级在线亚洲天堂| 亚洲欧美日韩精品| 亚洲影院免费观看| 亚洲免费影视第一页| 亚洲欧美国产不卡| 亚洲欧美色婷婷| 午夜精品影院在线观看| 一区二区三区久久久| 亚洲大片在线| 亚洲国产日韩欧美在线动漫| 在线观看成人网| 亚洲第一搞黄网站| 亚洲国产日韩在线一区模特| 亚洲国产精品一区二区www在线| 在线日韩av永久免费观看| 国产乱码精品一区二区三区不卡| 欧美视频在线观看一区| 欧美日韩亚洲一区二区| 欧美日韩第一页| 欧美伦理影院| 欧美日韩一区二区三区在线 | 亚洲国产日韩欧美在线动漫| 亚洲午夜高清视频| 99精品欧美| 一本大道久久a久久综合婷婷| 国产欧美一区二区白浆黑人| 国产区日韩欧美| 黑人巨大精品欧美一区二区小视频 | 久久久亚洲高清| 巨胸喷奶水www久久久免费动漫| 美女免费视频一区| 久久天堂av综合合色| 欧美一站二站| 久久天天狠狠| 欧美搞黄网站| 欧美视频在线观看免费网址| 国产精品你懂得| 国产日韩欧美日韩| 在线精品视频在线观看高清| 亚洲欧洲午夜| 亚洲一区二区三区高清不卡| 小嫩嫩精品导航| 最新日韩在线| 亚洲视频免费在线| 一本久久综合| 性欧美18~19sex高清播放| 欧美一区二区视频在线观看2020| 久久久久久午夜| 欧美福利电影在线观看| 欧美午夜欧美| 国内外成人免费激情在线视频| 亚洲国产二区| 亚洲尤物视频在线| 亚洲电影专区| 亚洲尤物视频网| 久久一二三国产| 欧美三级电影网| 国产一区亚洲| 日韩天堂在线视频| 欧美一进一出视频| 先锋影音国产精品| 国产亚洲一区二区三区在线观看| 免费美女久久99| 亚洲男人的天堂在线aⅴ视频| 亚洲欧美激情一区二区| 国产精品羞羞答答| 欧美成人一区二区| 美女脱光内衣内裤视频久久影院| 免费在线看一区| 先锋a资源在线看亚洲| 亚洲免费观看视频| 亚洲精品自在久久| 亚洲已满18点击进入久久| 久久精品视频在线| 亚洲影音一区| 欧美国产日韩一区二区三区| 国产精品中文字幕在线观看| 亚洲韩国青草视频| 欧美一区二区在线观看| 亚洲视频999| 久久国产日韩| 欧美色图五月天| 尤物yw午夜国产精品视频明星| 中文久久精品| 日韩亚洲欧美一区二区三区| 久久久久久穴| 国产精品视频午夜| 亚洲毛片视频| 亚洲茄子视频| 久久亚洲国产精品一区二区| 国产精品免费观看视频| 亚洲激情综合| 亚洲综合导航| 亚洲视频精选在线| 欧美激情五月| 1000部精品久久久久久久久| 欧美在线1区| 午夜视频久久久久久| 欧美视频在线观看免费网址| 亚洲国产精品第一区二区| 亚洲欧美一级二级三级| 这里只有精品视频| 欧美韩国在线| 日韩视频一区| 亚洲欧美色婷婷| 国产情侣久久| 午夜天堂精品久久久久| 午夜精品国产| 欧美片在线播放| 国产精品日韩一区二区| 香蕉久久夜色精品国产| 久久久久在线观看| 在线观看视频亚洲| 亚洲久久视频| 欧美日韩免费观看中文| 亚洲天堂黄色| 亚洲区一区二| 欧美va天堂| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 香港久久久电影| 亚洲国产成人久久| 一区二区三区成人精品| 久久本道综合色狠狠五月| 欧美一区二区啪啪| 亚洲国产精品小视频| 亚洲国产精品激情在线观看| 91久久午夜| 国产精品嫩草影院av蜜臀| 久久精品99国产精品酒店日本| 欧美 亚欧 日韩视频在线| 欧美紧缚bdsm在线视频| 国产精品久久久一区二区| 亚洲天堂av在线免费| 亚洲综合第一页| 国产欧美日韩伦理| 99在线精品视频| 国产精品亚洲精品| 欧美一区二区啪啪| 欧美成人精品在线| 日韩午夜电影在线观看| 亚洲欧美日韩国产成人精品影院| 国内成人精品2018免费看 | 欧美日韩另类在线| 亚洲伦理在线| 欧美一级久久久久久久大片| 国产一区二区三区日韩欧美| 一区二区欧美激情| 一区二区在线观看视频| 午夜在线不卡| 亚洲精品美女久久7777777| 久久精品一区二区三区四区| 日韩视频中文| 久久综合中文| 亚洲一区二区在| 欧美福利网址| 性欧美大战久久久久久久久| 欧美fxxxxxx另类| 欧美有码在线观看视频| 国产精品视频区| 亚洲一本大道在线| 亚洲国产成人久久综合| 浪潮色综合久久天堂| 午夜精品国产更新| 国产精品s色| 一区二区成人精品| 亚洲第一色中文字幕| 一区电影在线观看| 欧美日韩国产成人在线观看| 亚洲天天影视| 欧美成人黑人xx视频免费观看| 亚洲精品乱码久久久久久久久| 亚洲欧美国产精品桃花| 亚洲精品专区| 国产精品自在在线|