<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 基于并行流水線結(jié)構(gòu)的可重配FIR濾波器的FPGA實現(xiàn)

          基于并行流水線結(jié)構(gòu)的可重配FIR濾波器的FPGA實現(xiàn)

          ——
          作者:曲少波 時間:2007-04-26 來源:國外電子元器件 收藏
          1 并行流水結(jié)構(gòu)FIR的原理

          在用或?qū)S眉呻娐穼崿F(xiàn)數(shù)字信號處理算法時,計算速度和芯片面積是兩個相互制約的主要問題。實際應(yīng)用時,要獲得良好的濾波效果,濾波器的階數(shù)可能會顯著增加,有時可能會多達幾百階。因此,有必要在性能和實現(xiàn)復(fù)雜性之間做出選擇,也就是選擇不同的濾波器實現(xiàn)結(jié)構(gòu)。這里運用結(jié)構(gòu)來實現(xiàn)速度和硬件面積之間的互換和折衷。

          在關(guān)鍵路徑插入寄存器的流水線結(jié)構(gòu)是提高系統(tǒng)吞吐率的一項強大的實現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。流水線的類型主要分為兩種:算術(shù)流水線和指令流水線。對設(shè)計,邏輯功能是面向特定應(yīng)用的,因此,采用需要較少額外控制邏輯的算術(shù)流水結(jié)構(gòu)。 流水線結(jié)構(gòu)就意味著將數(shù)字處理算法分割成時間上前后相連的多個處理片段.并且在段與段之間加信號寄存器來緩沖。這些段和段之間的緩沖就構(gòu)成了流水線。系統(tǒng)原來的運算量被分割成k個部分,分別由流水線的k個段來外理。一旦前面的任務(wù)通過了流水線的第一段,新的任務(wù)就可以進入流水線。設(shè)系統(tǒng)不加流水時的延時是D,則加上流水后,每隔D/k個時間單位就可以啟動新的任務(wù)。要實現(xiàn)流水線的性能提升應(yīng)滿足3個條件:

          ①運算量均勻分成延時一致的k個部分;

          ②輸人數(shù)據(jù)有大量重復(fù)的運算;

          ③重復(fù)的運算前后沒有相關(guān)性。

          并行結(jié)構(gòu)就是以重復(fù)相同的結(jié)構(gòu),對同時滿足并行運算條件的并行算法在硬件上進行實現(xiàn)的結(jié)構(gòu)。并行結(jié)構(gòu)運用起來的主要難點如下:一,并行結(jié)構(gòu)占用更多的面積。二,相互并行的各計算部分在相互交換數(shù)據(jù)時,需要額外的控制和互聯(lián)結(jié)構(gòu)。但是,在芯片工藝尺寸不斷減小的今天,并行結(jié)構(gòu)成為設(shè)計高速、低延時數(shù)據(jù)處理系統(tǒng)的首選??刂坪突ヂ?lián)結(jié)構(gòu)的復(fù)雜性取決于算法和對算法的劃分方法。本身就適合并行處理,但是對于占用時間和芯片面積都很大的乘法器來說,用全并行來實現(xiàn)是不經(jīng)濟的。

          FIR濾波器以其設(shè)計簡單、穩(wěn)定性好、方便實現(xiàn)、線性相位等優(yōu)點往往成為首選,甚至是唯一的選擇。FIR濾波器用差分方程表示為:


          FIR濾波器直接型結(jié)構(gòu)如圖1。

          FIR濾波器直接型結(jié)構(gòu)

          2 實現(xiàn)方法

          現(xiàn)場可編程門陣列()具有體系結(jié)構(gòu)和邏輯單元配置靈活、集成度高以及設(shè)計開發(fā)周期短等優(yōu)點,因此,選用FPGA來驗證并實現(xiàn)本濾波器結(jié)構(gòu)。VHDL是一種硬件描述語言,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,與FPGA相結(jié)合后,表現(xiàn)出更加強大與靈活的數(shù)字系統(tǒng)設(shè)計能力。用VHDL完成數(shù)字系統(tǒng)的功能描述,用FPGA來實現(xiàn)是一種實用方便的軟、硬件結(jié)合方式。從硬件描述語言到FPGA配置數(shù)據(jù)文件是由綜合工具以及布局、布線工具來完成的。數(shù)字系統(tǒng)的功能最終能否實現(xiàn)以及性能如何,取決于數(shù)字系統(tǒng)的算法結(jié)構(gòu),也取決于綜合工具、布局和布線工具,還有器件性能。但是,如果數(shù)字系統(tǒng)的算法設(shè)計不好,就會有更多的設(shè)計反復(fù)。這里對FIR濾波器提出一種處理時間和所用芯片面積可以互換的結(jié)構(gòu),在最初的設(shè)計時,就能對其處理能力有所估計,減少了設(shè)計的反復(fù)。

          對于FIR濾波器,Xilinx提供了兩個軟核,一個是基于分布式運算的,另一個是基于單路的乘加運算。對于大階數(shù)、高采樣率的濾波器,這兩種濾波器結(jié)構(gòu)都不太適合。

          為了提高FIR濾波器的吞吐量,可用并行加流水線的結(jié)構(gòu)來實現(xiàn)FIR濾波器,如圖2所示。流水結(jié)構(gòu)用于提高吞吐量率,并行結(jié)構(gòu)可以減小處理延時。利用流水和并行結(jié)構(gòu)調(diào)整濾波器性能使其滿足實際應(yīng)用要求。這里實現(xiàn)三級流水和二路并行的FIR濾波器。三級流水分別對應(yīng)取數(shù)、乘法和累加。主要由雙口RAM、乘法器、累加器、控制邏輯和流水線間的寄存器組成,還有數(shù)據(jù)寫入模塊(圖中未畫)。

          并行流水線結(jié)構(gòu)的FIR濾波器

          用兩塊RAM分別存放FIR系數(shù)和數(shù)據(jù)的前N個樣值點,這兩個RAM要求有一個寫數(shù)據(jù)和一個讀數(shù)據(jù)的雙端口RAM。數(shù)據(jù)寫入模塊負責(zé)把所要濾波的數(shù)據(jù)輪換地寫入兩個雙口RAM;FIR的系數(shù)也按偶數(shù)下標和奇數(shù)下標分別寫入兩個系數(shù)RAM,實現(xiàn)時是預(yù)先配置的。在實現(xiàn)濾波時,如圖1所示對數(shù)據(jù)移位是不現(xiàn)實的。因此,用交聯(lián)網(wǎng)絡(luò)結(jié)合控制模塊實現(xiàn)第一級流水--取數(shù),完成給下一級流水線正確送數(shù)的目的。第二級流水是兩個并行的乘法器,完成乘法運算。第三級流水是一個累加器;在控制邏輯的控制下,對乘法器輸出結(jié)果進行正確的累加運算。

          完成結(jié)構(gòu)設(shè)計后要進行時序設(shè)計。數(shù)據(jù)寫入模塊的時鐘是根據(jù)數(shù)據(jù)源產(chǎn)生數(shù)據(jù)的速率而定的。而流水線的工作時鐘頻率要求大于數(shù)據(jù)產(chǎn)生時鐘頻率的N/2倍,N是濾濾器階數(shù),2是并行度。也就是要求流水線在數(shù)據(jù)產(chǎn)生的一個周期內(nèi)能完成一次FIR濾波器輸出的計算。其中的控制邏輯是流水線正常運行的關(guān)鍵。數(shù)據(jù)流水線上的各種時序要求都要由其產(chǎn)生,包括讀數(shù)據(jù)地址、讀系數(shù)的地址、交聯(lián)網(wǎng)絡(luò)的控制和流水線結(jié)構(gòu)的輸出。其VHDL的端口描述如下:

          系數(shù)地址由計數(shù)器產(chǎn)生,計數(shù)器周期是濾波器的階數(shù)除以并行度,由first_data_address的第0位的邊沿觸發(fā),以重新從0開始計數(shù)。數(shù)據(jù)RAM的地址加上計數(shù)器的值。兩個RAM地址因當(dāng)前輸入濾波數(shù)據(jù)的存放位置,可能相同也可能相差1。交聯(lián)網(wǎng)絡(luò)的控制信號是計數(shù)器的最低位。累加器輸出的使能信號是在計數(shù)到濾波器的階數(shù)時產(chǎn)生的,而后經(jīng)過延時給到累加器。累加器清零信號在這里產(chǎn)生要比累加器中用其他方法方便得多。

          交聯(lián)網(wǎng)絡(luò)也是設(shè)計的重點。對于并行處理結(jié)構(gòu),各單元之間數(shù)據(jù)的共享和通信是限制并行度的主要原因。在并行度為2的結(jié)構(gòu)中,只要輪流交換系數(shù)就可以了。但是對更高的并行度,這一通信網(wǎng)絡(luò)的延時是相當(dāng)大的,這也是把它單獨列為濾波器的流水線的一級的主要原因。

          還要注意的是:有符號數(shù)常用補碼表示。在對有符號數(shù)進行擴展時,要擴展最高位。對乘法器的輸出一般要進行擴展,以避免累加器溢出。

          對于乘加運算,有一種分布式計算方法,也就是把乘法進一步分解為部分和(二進制系數(shù)的每一位和輸入數(shù)據(jù)相與的結(jié)果)。當(dāng)乘加運算的一個乘數(shù)是已知常數(shù)時,分布式乘加運算會很節(jié)省資源。因為系數(shù)固定,與運算的結(jié)果是在運算前可知的,這樣零位與數(shù)據(jù)相與的結(jié) 果是不參與加運算的,從而實現(xiàn)無乘法器的濾波器。這里不選用這種方法,原因有二:其一,分布式運算將使濾波器難以重配:其二,基于FPGA的硬件乘法器較綜合得來的乘法器性能更佳。

          3 仿真及測試

          用VHDL語言描述全部電路模塊后,輸入系數(shù)1、2、3、4、5和數(shù)據(jù)-l、-2、3、4等進行測試.用Mod-elsim進行仿真,其結(jié)果如圖3所示。

          可以看出,模塊能正確進行計算,從數(shù)據(jù)輸入到數(shù)據(jù)輸出約延時2個數(shù)據(jù)時鐘.這主要是前面的數(shù)據(jù)輸入模塊的延時。乘加部分采用數(shù)據(jù)時鐘的N/2倍,其延時與濾波器的階數(shù)成比例,但不會超過一個數(shù)據(jù)時鐘周期。

          仿真結(jié)果

          然后,對VHDL描述就Xilinx的Spartan-3進行綜合和測試??梢缘贸霰?所示的測試結(jié)果,其中第一行為并行流水結(jié)構(gòu)所設(shè)計的濾波器,第二行是采用Xilinx提供的軟核設(shè)計的濾波器。

          測試結(jié)果

          可以看出,除了增加一個乘法器外,邏輯塊和觸發(fā)器都增加了一倍多。用這種結(jié)構(gòu)設(shè)計的濾波器面積增加了一倍,速度性能也提高了一倍。以上兩種濾波器可以應(yīng)用在語音信號處理中--讓語音信號通過低通濾波器以獲取語音的低頻分量。相對而言,并行流水結(jié)構(gòu)能實現(xiàn)比Xilinx軟核更高階數(shù)的濾波器。在聽覺上,經(jīng)過兩種濾波器(相同階數(shù))的語音信號沒有太大差別。

          4 結(jié)束語

          本文在運算層次上,依據(jù)流水和并行運算結(jié)構(gòu)實現(xiàn)直接型FIR濾波器。如果在設(shè)計濾波器時,結(jié)合級聯(lián)型和直接型兩種濾波器結(jié)構(gòu),那么也能實現(xiàn)同樣的并行和流水的效果。實際上,還可在更低層次的乘法運算時,對部分和也用并行和流水結(jié)構(gòu)來實現(xiàn)。這些結(jié)構(gòu)的選擇都依據(jù)性能要求和實現(xiàn)的復(fù)雜性來具體確定。

          作為實現(xiàn)現(xiàn)代高性能處理器的方法,并行和流水結(jié)構(gòu)各有特點。并行是以面積換速度。流水是以延時換速度,采用這兩種結(jié)構(gòu),就能在面積、速度、延時之間靈活互換。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();