新聞中心

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

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

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

        2 數(shù)字匹配濾波捕獲技術(shù)
        在直接序列擴(kuò)頻解擴(kuò)系統(tǒng)中,數(shù)字匹配濾波器的捕獲是以接收端擴(kuò)頻碼序列作為數(shù)字FIR濾波器的抽頭系數(shù),對接收到的信號進(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ù)據(jù)可以由一種偽隨機(jī)序列發(fā)生器產(chǎn)生。
        數(shù)字匹配濾波器的表達(dá)式為:


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


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


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


        最高位xn-1為符號位,其取值為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ù)為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最高位的符號位為1.取2n-4+2n-3+…+23+20的二進(jìn)制表示作為x的后(n-1)位,即為x與-l相乘的補(bǔ)碼表示;
        當(dāng)最高位xn-1=1時,若移位抽頭輸出系數(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最高位的符號位為0,取2n-4+2n-3+…+23+20的二進(jìn)制表示作為x的后(n-1)位,即為x與-1相乘的補(bǔ)碼表示。
        結(jié)論成立,二進(jìn)制求補(bǔ)運(yùn)算代替乘法器的處理框圖為如圖2所示。

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

        4 累加器
        數(shù)字匹配濾波器的移位寄存器每一級抽頭進(jìn)行1次乘法運(yùn)算,結(jié)果輸出到累加器進(jìn)行累加,當(dāng)運(yùn)算到最后一級時,輸出累加結(jié)果,送入門限判決器進(jìn)行判決。
        當(dāng)對2個二進(jìn)制補(bǔ)碼相加時,若2個加數(shù)都為B bit,考慮到數(shù)據(jù)可能溢出,則加法器的輸出只需要(B+1)bit;而當(dāng)3個bit二進(jìn)制補(bǔ)碼相加時,輸出則需要(B+2)bit。通過觀察可以發(fā)現(xiàn):2N個B bit二進(jìn)制補(bǔ)碼的值可以用(B+N)bit二進(jìn)制表示。
        4.1 傳統(tǒng)的累加器設(shè)計
        考慮到傳統(tǒng)累加器數(shù)據(jù)可能溢出,故將數(shù)據(jù)位展寬,比如在本仿真中,63個4位有符號補(bǔ)碼求和,最后結(jié)果最多為4+6位,其中4為每一加數(shù)的位數(shù),因為2664,故擴(kuò)展位為6位。所以計算,如果數(shù)據(jù)位不足10位,正數(shù)在數(shù)據(jù)前加O,負(fù)數(shù)在數(shù)據(jù)前加1,這樣每一數(shù)據(jù)都是10位(包括符號位),不用考慮溢出問題,完全用62個10位加法器可以實現(xiàn)。
        4.2 較優(yōu)的累加器設(shè)計
        隨著移位級數(shù)的增加,加法器的位數(shù)當(dāng)然也要相應(yīng)增加,第1級加法器用(B+1)位,第2、3級用(B+2)位,第4級到第7級用(B+3)位,后面依次類推。這樣設(shè)計,每一級并沒有用考慮溢出結(jié)果的最多位的加法器,而是遞推增加,可以減少資源浪費(fèi)。
        4.3 優(yōu)化的累加器設(shè)計
        將匹配濾波器的乘法器輸出數(shù)據(jù)進(jìn)行分組,并執(zhí)行加法運(yùn)算,第一級的加法器用(B+1)位,第二級用位,第三級用(B+3)位,后面依次類推。每一級的加法器數(shù)量是前面的大約一半,依幾何級數(shù)遞減,這樣的設(shè)計在低位相加時用了較多的加法器并以幾何級數(shù)遞減,也就避免了高位相加的資源浪費(fèi)。
        以63位m序列為例,設(shè)有符號補(bǔ)碼數(shù)為B位:
        將前62位輸入分為2組,每一組輸入和另一組中相應(yīng)輸入作相加運(yùn)算,總共用到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ùn)算形式是串行,而優(yōu)化累加器的運(yùn)算形式是并行。
        可以很明顯看出,優(yōu)化的累加器比較優(yōu)的累加器更能減少資源占用,運(yùn)行效率也可大大提高。
        4.4 Quatus模塊化設(shè)計法
        Quatus仿真軟件的MegaWizard Plug-In Manag-er中提供了parallel_add模塊,用戶可以自由設(shè)計輸入數(shù)據(jù)位寬,累加數(shù)據(jù)個數(shù),定義累加輸入數(shù)據(jù)類型,模塊最終自動生成適當(dāng)位寬的數(shù)據(jù)輸出(考慮了所有的數(shù)據(jù)溢出)。
        與上面的累加器設(shè)計比較,這樣的設(shè)計很方便,可讀性強(qiáng),程序簡練。實際中邏輯單元占用也不是很多,只比上面多出10%左右。所以,如果不是特別關(guān)注資源占用問題,這樣的設(shè)計也不失為一種好方法。

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

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


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

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


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


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


        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 阿巴嘎旗| 民丰县| 津市市| 永春县| 湘阴县| 新野县| 江陵县| 集贤县| 离岛区| 东山县| 澄迈县| 呼伦贝尔市| 永宁县| 平遥县| 沾化县| 南岸区| 雷山县| 扎囊县| 兴海县| 报价| 乌拉特中旗| 永城市| 江都市| 马公市| 晴隆县| 灵璧县| 河西区| 深圳市| 河间市| 宜川县| 潢川县| 兰州市| 灌云县| 沙洋县| 张掖市| 平定县| 桐乡市| 聊城市| 上饶县| 泸溪县| 屯昌县|