新聞中心

EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 數(shù)字匹配濾波器的優(yōu)化設(shè)計(jì)與FPGA實(shí)現(xiàn)

數(shù)字匹配濾波器的優(yōu)化設(shè)計(jì)與FPGA實(shí)現(xiàn)

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


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

2 數(shù)字匹配濾波捕獲技術(shù)
在直接序列擴(kuò)頻解擴(kuò)系統(tǒng)中,數(shù)字匹配濾波器的捕獲是以接收端擴(kuò)頻碼序列作為數(shù)字FIR濾波器的抽頭系數(shù),對(duì)接收到的信號(hào)進(jìn)行相關(guān)濾波,濾波輸出結(jié)果進(jìn)入門限判決器進(jìn)行門限判決,如果超過設(shè)定門限,表明此刻本地序列碼的相位與接收擴(kuò)頻序列碼的相位達(dá)到同步。如果并未超過設(shè)定門限,則表明此刻本地序列碼的相位與接收到的擴(kuò)頻序列碼的相位不同步,需要再次重復(fù)相關(guān)運(yùn)算,直到同步為止,如圖l所示。

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


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


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


3 乘法器
由于此處采用的是0,1的二進(jìn)制系統(tǒng),所以將邏輯0映射為實(shí)際電平-l,邏輯l映射為實(shí)際電平+1.也就是偽碼寄存器中的系數(shù)。
移位寄存器抽頭輸出為有符號(hào)二進(jìn)制補(bǔ)碼,采用乘法器實(shí)現(xiàn)相乘運(yùn)算時(shí),如果偽碼較長(zhǎng),則需要耗費(fèi)太多的邏輯單元且運(yùn)行速度過慢。
已經(jīng)知道,一個(gè)數(shù)乘以l不改變?cè)?,而乘?l則改變符號(hào),因?yàn)橐莆患拇嫫鞒轭^系數(shù)只能是1和-1,可以考慮用二進(jìn)制的補(bǔ)碼運(yùn)算來代替相乘1和-1運(yùn)算,這就避免了相乘運(yùn)算對(duì)資源的大量耗費(fèi),并能提高運(yùn)算速度。
可以看到,偽碼寄存器中的系數(shù)為+1或-l,如對(duì)移位抽頭輸出進(jìn)行乘1運(yùn)算,相當(dāng)于不改變?cè)a(bǔ)碼值,而對(duì)移位抽頭輸出進(jìn)行乘-1運(yùn)算,則相當(dāng)于對(duì)原補(bǔ)碼數(shù)值改變符號(hào),并對(duì)低位二進(jìn)制碼元求其補(bǔ)碼值。下面證明上述結(jié)論。
假設(shè)二進(jìn)制補(bǔ)碼數(shù)為


最高位xn-1為符號(hào)位,其取值為0或1,0代表正數(shù),1代表負(fù)數(shù)。
不失一般性,設(shè)xn-2,xn-3,x1,x0均為l,x2到xn-4均設(shè)為0,則二進(jìn)制補(bǔ)碼數(shù)x的后n-1位代表的真值為

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

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

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

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

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

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


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

數(shù)字通信相關(guān)文章:數(shù)字通信原理


電源濾波器相關(guān)文章:電源濾波器原理


數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理


評(píng)論


相關(guān)推薦

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

關(guān)閉