新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > 數字匹配濾波器的優(yōu)化設計與FPGA實現

數字匹配濾波器的優(yōu)化設計與FPGA實現

作者: 時間:2007-12-25 來源:網絡 收藏
摘要:介紹在直接序列擴頻通信中應用匹配實現m序列同步,分析其具體結構,詳細討論了其基于(現場可編程門陣列)的性能優(yōu)化。結果表明,匹配實現時,能夠大大減少資源占用,并提高工作效率。
關鍵詞:匹配;直接序列擴頻


1 引言
在通信系統中,匹配濾波器的應用十分廣泛,尤其在擴頻通信如在CDMA系統中,用于偽隨機序列(通常是m序列)的同步捕獲。
匹配濾波器是擴頻通信中的關鍵部件,它的性能直接影響到通信的質量。本文從數字匹配濾波器的理論及結構出發(fā),討論了它在數字通信直擴系統中的應用,并對其基于FPGA的具體實現進行了優(yōu)化。

2 數字匹配濾波捕獲技術
在直接序列擴頻解擴系統中,數字匹配濾波器的捕獲是以接收端擴頻碼序列作為數字FIR濾波器的抽頭系數,對接收到的信號進行相關濾波,濾波輸出結果進入門限判決器進行門限判決,如果超過設定門限,表明此刻本地序列碼的相位與接收擴頻序列碼的相位達到同步。如果并未超過設定門限,則表明此刻本地序列碼的相位與接收到的擴頻序列碼的相位不同步,需要再次重復相關運算,直到同步為止,如圖l所示。

數字匹配濾波器由移位寄存器、乘法器和累加器組成,這只是FIR濾波器的結構形式,只不過偽碼寄存器中的系數為-1或+1,實際并不是真正意義上的乘法。偽碼寄存器中的數據可以由一種偽隨機序列發(fā)生器產生。
數字匹配濾波器的表達式為:


其中,x(n)為輸入信號;h(-i)為濾波系數,由接收端擴頻碼決定,取值-1或+1,m序列碼元為1,取值為+l,m序列碼元為O,取值為-1。匹配濾波器的長度N等于擴頻比,也就是對于每一信息符號的擴頻碼元數,即Tb/Tc。當輸入信號{x(n)}與本地擴頻碼{h(-i)}匹配時,時輸出Z達到最大,超出預先設定的門限,表示捕獲成功。
很顯然,數字匹配濾波器中的關鍵部件是乘法器和累加器,而移位寄存器可以由信號的相互移位來實現,例如要實現8 bit串行數據的移位。假設輸入數據序列為din,移位寄存器中的信號為dO,d1,d2,d3,d4,d5,d6,d7,用VHDL語言中的進程語句實現程序為:


每來一個時鐘信號,信號同時改變1次,這就實現了和移位寄存器相同的功能。這樣的進程實現并不需要太多的邏輯單元。
所以影響資源占用和工作效率的主要是乘法器和累加器。下面討論就乘法器和累加器分別加以討論,研究其對資源和效率的影響。


3 乘法器
由于此處采用的是0,1的二進制系統,所以將邏輯0映射為實際電平-l,邏輯l映射為實際電平+1.也就是偽碼寄存器中的系數。
移位寄存器抽頭輸出為有符號二進制補碼,采用乘法器實現相乘運算時,如果偽碼較長,則需要耗費太多的邏輯單元且運行速度過慢。
已經知道,一個數乘以l不改變原值,而乘以-l則改變符號,因為移位寄存器抽頭系數只能是1和-1,可以考慮用二進制的補碼運算來代替相乘1和-1運算,這就避免了相乘運算對資源的大量耗費,并能提高運算速度。
可以看到,偽碼寄存器中的系數為+1或-l,如對移位抽頭輸出進行乘1運算,相當于不改變原補碼值,而對移位抽頭輸出進行乘-1運算,則相當于對原補碼數值改變符號,并對低位二進制碼元求其補碼值。下面證明上述結論。
假設二進制補碼數為


最高位xn-1為符號位,其取值為0或1,0代表正數,1代表負數。
不失一般性,設xn-2,xn-3,x1,x0均為l,x2到xn-4均設為0,則二進制補碼數x的后n-1位代表的真值為

2n-2+2n-3+21+20
當最高位xn-1=O時,若移位抽頭輸出系數為1,則x代表的正數乘1后仍然是xn-2+2n-3+21+20,正數的補碼表示還是x。
若移位抽頭輸出系數為-1.x代表的正數和-1相乘后變?yōu)樨摂担的后n-1位的樸碼值,可以表示為2n-4+2n-3+…+23+20,改變x最高位的符號位為1.取2n-4+2n-3+…+23+20的二進制表示作為x的后(n-1)位,即為x與-l相乘的補碼表示;
當最高位xn-1=1時,若移位抽頭輸出系數為1,則x代表的負數乘l后的真值仍然是x的后n-l位的補碼值2n-4+2n-3+…+23+20,負數的補碼表示還是x。
若移位抽頭輸出系數為-1,x代表的負數和-l相乘后變?yōu)檎龜?,取x的后n-l位的補碼值,可以表示為2n-4+2n-3+…+23+20,改變x最高位的符號位為0,取2n-4+2n-3+…+23+20的二進制表示作為x的后(n-1)位,即為x與-1相乘的補碼表示。
結論成立,二進制求補運算代替乘法器的處理框圖為如圖2所示。

綜上所述,在數字匹配濾波器中,因為濾波系數即移位抽頭系數取值只能為1或-1,所以將有符號數的二進制補碼的乘法運算變?yōu)榍笱a碼運算是完全可行的,這就避免了乘法運算對于資源的大量需求,運算速度也可大大提高。
在補碼運算中,對每個移位抽頭輸出同時并行運算,并在后兩個時鐘得到并行求補碼運算輸出數據。
傳統設計乘法器時,輸入n1,n2位的2路有符號補碼,結果輸出為nl+n2位二進制補碼數據。
隨著移位寄存器輸入有符號二進制補碼矢量數據,時鐘改變一次,移位寄存器每個抽頭輸出均和相應的抽頭系數做一次相乘運算。
求補碼運算代替乘法器時,不同于傳統的乘法器設計,寄存器中每一數據只需求其補碼即可,省略了相乘運算。從根本上說.用求補代替相乘運算只是功能相同,但可以大大減少資源浪費并提高運算速度,所以有很大的應用優(yōu)勢。

4 累加器
數字匹配濾波器的移位寄存器每一級抽頭進行1次乘法運算,結果輸出到累加器進行累加,當運算到最后一級時,輸出累加結果,送入門限判決器進行判決。
當對2個二進制補碼相加時,若2個加數都為B bit,考慮到數據可能溢出,則加法器的輸出只需要(B+1)bit;而當3個bit二進制補碼相加時,輸出則需要(B+2)bit。通過觀察可以發(fā)現:2N個B bit二進制補碼的值可以用(B+N)bit二進制表示。
4.1 傳統的累加器設計
考慮到傳統累加器數據可能溢出,故將數據位展寬,比如在本仿真中,63個4位有符號補碼求和,最后結果最多為4+6位,其中4為每一加數的位數,因為2664,故擴展位為6位。所以計算,如果數據位不足10位,正數在數據前加O,負數在數據前加1,這樣每一數據都是10位(包括符號位),不用考慮溢出問題,完全用62個10位加法器可以實現。
4.2 較優(yōu)的累加器設計
隨著移位級數的增加,加法器的位數當然也要相應增加,第1級加法器用(B+1)位,第2、3級用(B+2)位,第4級到第7級用(B+3)位,后面依次類推。這樣設計,每一級并沒有用考慮溢出結果的最多位的加法器,而是遞推增加,可以減少資源浪費。
4.3 優(yōu)化的累加器設計
將匹配濾波器的乘法器輸出數據進行分組,并執(zhí)行加法運算,第一級的加法器用(B+1)位,第二級用位,第三級用(B+3)位,后面依次類推。每一級的加法器數量是前面的大約一半,依幾何級數遞減,這樣的設計在低位相加時用了較多的加法器并以幾何級數遞減,也就避免了高位相加的資源浪費。
以63位m序列為例,設有符號補碼數為B位:
將前62位輸入分為2組,每一組輸入和另一組中相應輸入作相加運算,總共用到31個(B+1)位加法器;
余l(xiāng)位輸入和31個(B+1)位加法器輸出再次分組,用到16個(B+2)位加法器;
16個(B+2)位加法器輸出再次分組,用到8個(B+3)位加法器;
16個(B+2)位加法器輸出再次分組,用到8個(B+3)位加法器;
8個(B+2)位加法器輸出再次分組,用到4個(B+4)位加法器;
4個(B+4)位加法器輸出再次分組,用到2個(B+5)位加法器;
2個(B+5)位加法器輸出再次分組,用到1個(B+6)位加法器。
63位累加器占用加法器的比較如表1所示。

較優(yōu)累加器的運算形式是串行,而優(yōu)化累加器的運算形式是并行。
可以很明顯看出,優(yōu)化的累加器比較優(yōu)的累加器更能減少資源占用,運行效率也可大大提高。
4.4 Quatus模塊化設計法
Quatus仿真軟件的MegaWizard Plug-In Manag-er中提供了parallel_add模塊,用戶可以自由設計輸入數據位寬,累加數據個數,定義累加輸入數據類型,模塊最終自動生成適當位寬的數據輸出(考慮了所有的數據溢出)。
與上面的累加器設計比較,這樣的設計很方便,可讀性強,程序簡練。實際中邏輯單元占用也不是很多,只比上面多出10%左右。所以,如果不是特別關注資源占用問題,這樣的設計也不失為一種好方法。

5 仿真實驗
筆者通過Quatus仿真實驗驗證了優(yōu)化數字匹配濾波器的性能。
仿真中采用Altera公司的FPGA,利用6級線性移位反饋寄存器生成長度為63的m序列。
圖3是數字匹配濾波器的2個周期的相關同步過程,圖4是放大后的相關同步。

在本次仿真中,clk為時鐘信號,address為地址信號,輸入信號為din,數字匹配濾波器抽頭信號為m。為了方便起見,做了2個只讀存儲器din_rom和m_rom。din_rom中存儲了63 bit的m序列的二進制補碼表示作為輸入,其中0表示11,l表示Ol,16進制表示分別為3和l。m_rom中存儲了63 bit m序列的二進制碼元,作為數字匹配濾波器的抽頭同步模塊的輸入。result為計算出的相關值,tongbu為同步信號。
每來一個時鐘脈沖,地址加1,依次讀取din_rom中的數據,圖4中的地址為10進制表示。m_rom地址始終置“0”,圖3和圖4中是m_rom中二進制數據的16進制表示。
63級移位濾波器同時做補碼運算,當m_rom輸出的二進制矢量位為1時,不改變相應位原補碼值,矢量位為0時,求其相反數(-1的相反數為1,1的相反數為-1)的補碼值。將相關門限設為63,當同步未完成時,相關值信號result的16進制表示為FF,二進制即為1111lll(1表示正數);當同步完成時,相關值信號result的16進制表示為3F,二進制即為0111111(0表示正數)。
每個時鐘脈沖,計算1次相關系數,并和判決門限比較,高于門限表示完成同步捕獲,否則表示沒有同步,繼續(xù)運算,直到達到同步為止。


6 結束語
本文從理論和實踐方面分別討論了數字匹配濾波器在設計中遇到的問題,仿真實驗證明該設計在節(jié)省硬件資源和提高工作效率方面都有其突出的優(yōu)點。

數字通信相關文章:數字通信原理


電源濾波器相關文章:電源濾波器原理


數字濾波器相關文章:數字濾波器原理


評論


相關推薦

技術專區(qū)

關閉