《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > 基于FPGA的可變長度移位寄存器優(yōu)化設(shè)計(jì)

基于FPGA的可變長度移位寄存器優(yōu)化設(shè)計(jì)

2008-05-19
作者:陳永強(qiáng)1, 李 茜2

  摘 要: 結(jié)合FPGA的結(jié)構(gòu),,針對(duì)高速數(shù)據(jù)采集系統(tǒng)" title="高速數(shù)據(jù)采集系統(tǒng)">高速數(shù)據(jù)采集系統(tǒng)中觸發(fā)控制單元" title="控制單元">控制單元的特點(diǎn),,提出了采用優(yōu)化結(jié)構(gòu)的可變長度移位寄存器" title="移位寄存器">移位寄存器改進(jìn)基于FPGA的觸發(fā)控制單元的方法,同時(shí)從器件的搭配和寄存器結(jié)構(gòu)兩方面探討了可變長度移位寄存器的優(yōu)化方案,并給出了應(yīng)用示例,。
  關(guān)鍵詞: 觸發(fā)控制單元 可變長度移位寄存器 FPGA


  觸發(fā)控制單元是高速數(shù)據(jù)采集系統(tǒng)的重要組成部分,而可變長度移位寄存器在觸發(fā)控制單元中起彈性緩存,、數(shù)控延遲等作用,。觸發(fā)控制單元根據(jù)不同的條件設(shè)置時(shí)間窗口,并對(duì)窗口內(nèi)的數(shù)據(jù)進(jìn)行操作,,在線完成實(shí)時(shí)事例選判和控制,。由于高速數(shù)據(jù)采集系統(tǒng)的采樣頻率高,單位時(shí)間內(nèi)產(chǎn)生的數(shù)據(jù)和事件多,,不同時(shí)間窗口所需的移位寄存器的長度變化會(huì)很大,。一方面,觸發(fā)控制單元作為高速數(shù)據(jù)采集系統(tǒng)的一個(gè)組成部分,,常常與系統(tǒng)的其他組成部分共享有限的FPGA資源,;另一方面,一個(gè)數(shù)據(jù)采集系統(tǒng)往往有多路數(shù)據(jù)采集通道,需多個(gè)觸發(fā)控制單元支持,。因此,,提高資源利用率對(duì)構(gòu)建用于觸發(fā)控制的可變長度移位寄存器來說非常重要。
  本文以最大可變長度為N,、寬度為1bit的移位寄存器為模型,,討論如何從結(jié)構(gòu)上優(yōu)化可變長度移位寄存器和有效的FPGA實(shí)現(xiàn)。至于寬度不為1bit的情況,,可以此類推,。
1 可變長度移位寄存器的常用結(jié)構(gòu)
  通常可變長度移位寄存器的結(jié)構(gòu)可分為兩種:一種是輸入分支型(結(jié)構(gòu)A),,如圖1所示,;另一種是輸出分支型(結(jié)構(gòu)B),如圖2所示,。


  結(jié)構(gòu)A與結(jié)構(gòu)B有兩個(gè)共同點(diǎn):第一,,都是由觸發(fā)器鏈路加數(shù)據(jù)流向控制邏輯組成;第二,,每級(jí)觸發(fā)器的輸入輸出都是信號(hào)節(jié)點(diǎn),,因而各級(jí)都需要對(duì)本級(jí)節(jié)點(diǎn)的信號(hào)流向進(jìn)行控制。結(jié)構(gòu)A用n-to-2n譯碼器來控制信號(hào)流向,,結(jié)構(gòu)B則用2n:1多路復(fù)用器" title="多路復(fù)用器">多路復(fù)用器控制信號(hào)流向,。對(duì)于基本邏輯單元" title="邏輯單元">邏輯單元為查找表(LUT)+觸發(fā)器(FF)+多路復(fù)用器(MUX)結(jié)構(gòu)的FPGA來說,直接采用結(jié)構(gòu)A與結(jié)構(gòu)B構(gòu)造較長的移位寄存器時(shí),,觸發(fā)器鏈和復(fù)雜的組合邏輯會(huì)消耗很多資源,,即這兩種結(jié)構(gòu)不宜用于較長的可變長度移位寄存器。
2 解決方案
  為解決上述問題,,可以采用如下兩個(gè)方法:
  (1)優(yōu)化功能結(jié)構(gòu)與硬件結(jié)構(gòu)的搭配,。根據(jù)移位寄存器結(jié)構(gòu)類型,選擇適宜的FPGA芯片以提高資源利用率,,降低資源消耗,。
  (2)優(yōu)化移位寄存器結(jié)構(gòu)。采用FPGA片內(nèi)RAM來實(shí)現(xiàn)移位寄存器,,利用片內(nèi)RAM速度快,、數(shù)量大的優(yōu)點(diǎn),直接減少基本邏輯單元的消耗,,提高資源利用率,。
2.1 優(yōu)化功能結(jié)構(gòu)與硬件結(jié)構(gòu)的搭配
  通過調(diào)整FPGA芯片類型與移位寄存器結(jié)構(gòu)類型的搭配,可以提高資源利用率,,降低資源消耗。下面以結(jié)構(gòu)B為例,,闡述如何應(yīng)用Xilinx公司的Spartan-3系列芯片高效地實(shí)現(xiàn)N=128的可變長度移位寄存器,。
2.1.1 實(shí)現(xiàn)原理
  Spartan-3系列芯片的每個(gè)可配置邏輯塊CLB[1]如圖3所示,,包含8個(gè)LUT、8個(gè)DFF和8個(gè)2:1多路復(fù)用器(4個(gè)F5MUX,,2個(gè)F6MUX,,1個(gè)F7MUX,1個(gè)F8MUX),,而每個(gè)LUT都能配置成移位寄存器模式(SRL),,相當(dāng)于一個(gè)16級(jí)的可逐級(jí)尋址的移位寄存器。如圖4所示,,一個(gè)LUT就包含了構(gòu)成結(jié)構(gòu)B所需的全部要素,,從而有效地實(shí)現(xiàn)N=16的可變長度移位寄存器[2]。Q15是用于多級(jí)級(jí)聯(lián)實(shí)現(xiàn)N>16的移位寄存器的進(jìn)位輸出,。

?


2.1.2 應(yīng)用示例
  利用Spartan-3系列芯片的一個(gè)CLB(相當(dāng)于8個(gè)基本邏輯單元)就可以構(gòu)成N=128的可變長度移位寄存器,,如圖5所示,。作為對(duì)比,,如果不調(diào)整FPGA芯片類型與移位寄存器結(jié)構(gòu)類型的搭配,比如直接采用Altera Cyclone II芯片,,按結(jié)構(gòu)A實(shí)現(xiàn)N=128的可變長度移位寄存器,,則需消耗169個(gè)基本邏輯單元(由Quartus II編譯),。

?


2.2 優(yōu)化移位寄存器結(jié)構(gòu)
  通過優(yōu)化移位寄存器結(jié)構(gòu),采用FPGA片內(nèi)RAM來實(shí)現(xiàn)移位寄存器,,利用片內(nèi)RAM速度快,、數(shù)量大的優(yōu)點(diǎn),直接減少基本邏輯單元的消耗,,提高資源利用率,。
2.2.1 實(shí)現(xiàn)原理
  FPGA片內(nèi)RAM常見有兩種,一種是分布式RAM(Distributed RAM),,如Xilinx Spartan-3的LUT,,每個(gè)LUT都可作為16位的RAM使用;另一種是嵌入式塊RAM(Block RAM),,如Xilinx Spartan-3的18KB塊RAM,、Altera Cyclone II的4KB塊RAM(M4K)。結(jié)構(gòu)A與結(jié)構(gòu)B中,,各級(jí)都需要對(duì)本級(jí)節(jié)點(diǎn)的信號(hào)流向進(jìn)行控制,,這種形式限制了FPGA嵌入式塊RAM的使用。為此,,設(shè)計(jì)了結(jié)構(gòu)C——梯級(jí)組合型,,如圖6所示,這種結(jié)構(gòu)非常利于采用片內(nèi)RAM來實(shí)現(xiàn)移位寄存器。
  分析結(jié)構(gòu)C,,梯級(jí)組合型有兩個(gè)要素:一是2:1多路復(fù)用器,,每個(gè)都有單獨(dú)的控制位,共n個(gè),,而且n〈〈N,,二者呈指數(shù)關(guān)系;二是不同長度的移位寄存器組成的梯級(jí),,初級(jí)(第0級(jí))由20=1個(gè)觸發(fā)器組成,,第1級(jí)由21=2個(gè)觸發(fā)器鏈接組成,第2級(jí)由22=4個(gè)觸發(fā)器鏈接組成,,...,,第N級(jí)由2N個(gè)觸發(fā)器鏈接組成。在梯級(jí)組合型的結(jié)構(gòu)中,,不需要對(duì)每個(gè)觸發(fā)器的輸入輸出都控制,,只需通過控制位BI對(duì)各個(gè)梯級(jí)的輸入輸出控制就可以實(shí)現(xiàn)分辨率為1的長度連續(xù)變化,寄存器的長度N=BN×2N+…+B2×22+B1×21+B0×20,。
  例如,,對(duì)于最大N=255(控制字為8位)且采用結(jié)構(gòu)C的可變長度移位寄存器,要實(shí)現(xiàn)長度為5的移位寄存器,,只需設(shè)置控制字為00000101B即可,;要實(shí)現(xiàn)長度為255的移位寄存器,只需設(shè)置控制字為1111111B即可,。由于同一個(gè)梯級(jí)里,,除頭尾兩級(jí)外,其他各級(jí)不再有信號(hào)流向控制,,且各梯級(jí)觸發(fā)器鏈的長度為2n,,可以方便地利用FPGA嵌入式塊RAM和廠商提供的經(jīng)過優(yōu)化的宏功能模塊來實(shí)現(xiàn)長度較大的梯級(jí),從而提高資源利用率,。
2.2.2 應(yīng)用示例
  以Altera Cyclone II[3]的M4K為例,,每個(gè)M4K塊RAM有4 608個(gè)存儲(chǔ)位(其中包括512個(gè)奇偶位),操作頻率高達(dá)250MHz,,M4K工作于移位寄存器模式時(shí)的結(jié)構(gòu)如圖7所示,,數(shù)據(jù)寬度(w)、每段長度(m),、抽頭數(shù)(n)的關(guān)系可方便地在廠商提供的基于RAM的移位寄存器宏模塊“altshift_taps”中設(shè)置,。當(dāng)w×m×n不大于4 608且w×m不大于36時(shí),消耗一個(gè)M4K和少量基本邏輯單元,;當(dāng)不能滿足上述兩項(xiàng)中任意一項(xiàng),,開發(fā)工具會(huì)自動(dòng)連接多個(gè)M4K,。通過調(diào)整w、m,、n的組合,,M4K能以多種方式高效實(shí)現(xiàn)結(jié)構(gòu)C的梯級(jí)。
  例如,,構(gòu)造一個(gè)1024位的梯級(jí),可以設(shè)置w=1,、m=256,、n=4,占用13個(gè)LUT,,8個(gè)寄存器,,1個(gè)M4K;構(gòu)造一個(gè)4 096位的梯級(jí),,可以設(shè)置w=1,、m=256、n=16,,依然只占用13個(gè)LUT,,8個(gè)寄存器,1個(gè)M4K,。為進(jìn)一步提高M(jìn)4K的利用率,,可以設(shè)置w=32、m=128,、n=1,,只占用12個(gè)LUT,7個(gè)寄存器,,1個(gè)M4K就能得到32個(gè)長度為128位的移位寄存器段,,將這些寄存器段自行連接,用一個(gè)M4K能同時(shí)得到如下的梯級(jí):128位,、256位(2段串連),、512位(2段串連)、1024位(8段串連),、2048位(16段串連),,最大限度地利用了M4K的RAM資源。


  作為對(duì)比,,仍以Altera Cyclone II芯片為例,,如果用基于基本邏輯單元的移位寄存器宏模塊“LPM_SHIFTREG”來實(shí)現(xiàn)1 024位的梯級(jí)和4096位的梯級(jí),則分別需1 024(256×4)個(gè)LUT和4096(256×16)個(gè)LUT,,資源開銷較大,??梢姡Y(jié)構(gòu)C非常利于實(shí)現(xiàn)可變長度較長的移位寄存器,。
  可變長度移位寄存器是非常有用的邏輯結(jié)構(gòu),。對(duì)高速數(shù)據(jù)采集系統(tǒng)觸發(fā)控制單元來說,應(yīng)用優(yōu)化后的可變長度移位寄存器可以提高其信噪比,,改善其可靠性和靈活性,。另外,采用可變長度移位寄存器可以減小死區(qū)時(shí)間,,從而改善觸發(fā)控制單元重復(fù)觸發(fā)的性能,。這些改善在本單位設(shè)備的實(shí)際應(yīng)用中起到了良好的作用。
參考文獻(xiàn)
1 Spartan-3 FPGA family:complete data sheet. XILINX, 2004;3(8)
2 Using look-up tables as shift registers(SRL16) in Spartan-3 generation FPGAs. XILINX, 2005;1(5)
3 Cyclone II device handbook. Altera Corporation, 2005;1(11)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。