張立學(xué)+尹東輝
DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.012
摘 ?要: 應(yīng)用FPGA設(shè)計(jì)數(shù)字電路時(shí),芯片的運(yùn)行速度優(yōu)化與資源利用優(yōu)化常常是相互矛盾的。以Viterbi譯碼器中加比選單元(ACS)的設(shè)計(jì)為例,對(duì)采用傳統(tǒng)方法和流水線技術(shù)方法的設(shè)計(jì)進(jìn)行對(duì)比,顯示采用流水線技術(shù)的設(shè)計(jì)方法在占用較小系統(tǒng)資源情況下可以獲得更高的系統(tǒng)運(yùn)行速度,更適用于FPGA的數(shù)字電路設(shè)計(jì)。
關(guān)鍵詞: 流水線技術(shù); FPGA; ACS; Viterbi
中圖分類號(hào):TN79.1 ? ? ? ? ?文獻(xiàn)標(biāo)志碼:A ? ? ?文章編號(hào):1006-8228(2016)02-42-02
Application of pipeline technology in FPGA design
Zhang Lixue1, Yin Donghui2
(1. The Research of Information and Communication Engineering, Shijiazhuang Non-commissioned Officer Academy of CAPF, Shijiazhuang, Hebei 050061, China; 2. The 3rd Communication Department, Shijiazhuang Non-commissioned Officer Academy of CAPF)
Abstract: When using FPGA to design digital circuit, the optimization of the operation speed and resource utilization of the chip is often contradictory. In this paper, taking the design of add compare select unit (ACS) of Viterbi decoder as an example, compares the design of traditional approach with the design of pipeline technology method, the result showed that the pipelining design method can get higher system running speed with less system resource occupation, more suitable for FPGA digital circuit design.
Key words: pipeline technology; FPGA; ACS; Viterbi
0 引言
FPGA(Field Programmable Gate Array)以其可重構(gòu)與現(xiàn)場(chǎng)可編程的靈活性被人們所接受,相比于ASIC而言,有著更短的開(kāi)發(fā)周期和更小的前期研發(fā)資金投入,在原型板的開(kāi)發(fā)中占據(jù)著重要的地位,獲得了越來(lái)越多的人的青睞[1]。但是EDA技術(shù)面對(duì)超大規(guī)??删幊唐骷PGA進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),面向芯片運(yùn)行速度和面向芯片占用面積的兩種選擇常常是相互矛盾的。對(duì)速度指標(biāo)進(jìn)行優(yōu)化的設(shè)計(jì),往往占用較多的芯片資源;而對(duì)芯片面積指標(biāo)進(jìn)行優(yōu)化的設(shè)計(jì),一般難以擺脫系統(tǒng)速度下降的代價(jià)。隨著深亞微米半導(dǎo)體制造工藝的不斷創(chuàng)新和百萬(wàn)門(mén)可編程器件的不斷推出,系統(tǒng)速度指標(biāo)的意義日趨重要,采用流水線技術(shù)只需增加少量硬件,便可以大大提高系統(tǒng)速度[2]。
1 流水線技術(shù)的應(yīng)用原理
流水線設(shè)計(jì)就是把規(guī)模較大、層次較多的組合邏輯電路分為幾個(gè)級(jí)別,在每一級(jí)插入寄存器組暫存中間數(shù)據(jù)。例如K級(jí)的流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組(分為K級(jí),每一級(jí)都有一個(gè)寄存器組),上一級(jí)的輸出是下一級(jí)的輸入而又無(wú)反饋的電路。
流水線結(jié)構(gòu)電路屬于同步時(shí)序電路,在同步系統(tǒng)中,時(shí)鐘速度越快,電路處理數(shù)據(jù)的時(shí)間間隔越短,電路在單位時(shí)間內(nèi)處理的數(shù)據(jù)量就越大[3]。對(duì)于同步系統(tǒng)的時(shí)鐘速率計(jì)算公式為:
⑴
其中:Tco是數(shù)據(jù)輸出的延時(shí),Tdelay是組合邏輯的延時(shí),Tsetup是觸發(fā)器的建立時(shí)間。
在本例中(圖2)ACS的延時(shí)就是Tdelay,ACS前級(jí)輸入的鎖存輸出時(shí)間就是Tco,ACS的建立時(shí)間就是Tsetup。在FPGA中,由于Tco和Tsetup是由具體的器件和工藝決定的,芯片型號(hào)一旦選定,Tco和Tsetup也就固定不變了,因此設(shè)計(jì)電路時(shí)只可以改變Tdelay。所以縮短Tdelay是提高同步電路速度的關(guān)鍵,而在Viterbi譯碼器的設(shè)計(jì)中不只有一級(jí)鎖存,要使電路工作穩(wěn)定,時(shí)鐘周期必須滿足最大延時(shí)要求,縮短最大延時(shí)路徑,才可以提高電路的工作頻率。在應(yīng)用流水線技術(shù)時(shí),如圖1所示可以把較大組合邏輯分解為較小的幾塊,中間插入寄存器,在圖1的下半部分,系統(tǒng)的最高工作頻率決定于兩個(gè)組合邏輯延時(shí)的最大值,因此,在系統(tǒng)的設(shè)計(jì)中應(yīng)盡量減小這個(gè)最大值,這樣可以提高電路的工作頻率。
2 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
下面以Viterbi譯碼器中的ACS(加比選單元)的設(shè)計(jì)為例,對(duì)比分析采用流水線設(shè)計(jì)和不采用流水線設(shè)計(jì)性能和資源占用的差異。
2.1 直接實(shí)現(xiàn)
ACS是Viterbi譯碼器核心部分,圖2為ACS的組成邏輯結(jié)構(gòu)圖,主要完成度量值的加比選,具體的工作過(guò)程是:得到BMU單元送過(guò)來(lái)的分支度量值和分支狀態(tài)值之后,將相應(yīng)的分支狀態(tài)值對(duì)應(yīng)的度量值從度量存儲(chǔ)單元取出來(lái)再相加,比較兩種狀態(tài)度量值的大小,將小的度量值存入次態(tài)的地址并更新原有的度量值。
直接按照?qǐng)D2的邏輯關(guān)系用Verilog語(yǔ)言描述形成ACS模塊,包括一個(gè)加法器、一個(gè)比較器和一個(gè)多路選擇器,將其下載到EPF10KE30ETC144-1上,得到的部分參數(shù)如下:
最大延時(shí)為18.2ns,工作頻率為86.7MHz,占用55個(gè)邏輯單元。
由此可以看出,直接實(shí)現(xiàn)該電路整個(gè)運(yùn)算至少需要經(jīng)過(guò)3級(jí)門(mén)延時(shí),即使用5ns延時(shí)的器件運(yùn)算最快也需要15ns相應(yīng)的工作速度為66.7MHz,隨著相關(guān)位數(shù)的增加速度還將隨之降低。
2.2 三級(jí)流水線實(shí)現(xiàn)
用組合邏輯的方式直接生成的ACS的電路延時(shí)主要集中在兩個(gè)加法器和一個(gè)比較器上。
延時(shí)的粗略計(jì)算式如下:
⑵
其中,Tadd為加法器的延時(shí),Tc為比較器的延時(shí),Tx為多路選擇器的延時(shí),主要延時(shí)為T(mén)add和Tc。
在ACS中應(yīng)用流水線技術(shù),可以把ACS的大的組合邏輯延時(shí)分成三個(gè)較小的組合邏輯,分別是加法組合邏輯、比較組合邏輯和多路選擇組合邏輯,它們的延時(shí)比較平均,有利于提高ACS的整體工作頻率,因?yàn)橄到y(tǒng)的最高頻率決定于系統(tǒng)中的最大延時(shí),然后在三個(gè)小的組合邏輯中間加入寄存器,這樣就得到流水線結(jié)構(gòu)的ACS框圖,如圖3所示。
其運(yùn)算過(guò)程是對(duì)每一步運(yùn)算結(jié)果進(jìn)行鎖存,按照時(shí)鐘的節(jié)拍逐步完成運(yùn)算的全過(guò)程,雖然每組輸入值需要經(jīng)過(guò)三個(gè)節(jié)拍才能得到運(yùn)算結(jié)果,但是由于每個(gè)節(jié)拍都有一組新值輸入到下一級(jí)運(yùn)算電路,每級(jí)運(yùn)算電路上都有一組數(shù)據(jù)同時(shí)進(jìn)行運(yùn)算,所以總的來(lái)看,每步運(yùn)算花費(fèi)的時(shí)間只有一個(gè)時(shí)鐘周期。將采用流水線結(jié)構(gòu)的ACS下載到在EPF10KE30ETC144-1,得到的部分參數(shù)如下:
最大延時(shí)6.9ns,工作頻率153.84MHz,占用63個(gè)邏輯單元。
與沒(méi)有采用流水線時(shí)相比,工作頻率提高了65.5MHz,輸出延時(shí)縮短了11.3ns,而從資源占用上來(lái)看,僅僅多占用了8個(gè)邏輯單元,可見(jiàn)在FPGA上采用流水線代價(jià)還是較小的。
3 結(jié)論
通過(guò)上面分析可以看出,采用流水線技術(shù)對(duì)Viterbi譯碼器中的ACS進(jìn)行設(shè)計(jì),提高了數(shù)字系統(tǒng)運(yùn)行速度,并不會(huì)增加太多的系統(tǒng)資源占用量,有效解決了應(yīng)用FPGA進(jìn)行數(shù)字電路設(shè)計(jì)中選擇芯片的運(yùn)行速度優(yōu)化與資源利用優(yōu)化之間相互矛盾的問(wèn)題。所以流水線技術(shù)是提高數(shù)字系統(tǒng)運(yùn)行速度的一種有效方法,其設(shè)計(jì)的關(guān)鍵在于整個(gè)時(shí)序的合理安排[4],這對(duì)于實(shí)施性要求高,運(yùn)算量大的系統(tǒng)(例如DDS[5])流水線方法尤其適用。
參考文獻(xiàn)(References):
[1] 李宏鈞,胡小龍.流水線的FPGA低功耗設(shè)計(jì)[J].計(jì)算機(jī)系統(tǒng)
應(yīng)用,2010.19(8):234-237
[2] 孫啟良.CPU流水線技術(shù)中的結(jié)構(gòu)相關(guān)和數(shù)據(jù)相關(guān)[J].福建
電腦,2010(7):49-50
[3] 李云鵬,王新梅,謝顯中等.基于FPGA自適應(yīng)高速RS編譯碼
器的IP核設(shè)計(jì)[J].重慶郵電大學(xué)學(xué)報(bào),2004.15(1):25-28
[4] 邱志宏.信號(hào)線速度處理的FPGA流水實(shí)現(xiàn)[J].柳州職業(yè)技術(shù)
學(xué)院學(xué)報(bào),2009.9(2):79-82
[5] 岳偉甲,劉昌錦.一種基于FPGA的32位快速加法器設(shè)計(jì)[J].
四川兵工學(xué)報(bào),2011.32(7):78-81