摘 要: 根據直接序列擴頻系統相關解擴中的匹配濾波器的特點,提出了一種結構簡單、基于FPGA實現匹配濾波器的方法,闡述了設計要點和關鍵部分的實現。
關鍵詞: 直接序列擴頻 匹配濾波 FIR濾波器 FPGA
解擴過程對擴頻通信至關重要,正是這一過程大大提高了系統的抗干擾能力。在直接序列擴頻(直擴)系統中通常采用匹配濾波器來解擴直擴信號[1]。解擴可分為模擬解擴和數字解擴。模擬解擴中傳統的SAW匹配濾波器由抽頭延遲線和加法累加器構成。通常根據擴頻碼序列結構做成固定的抽頭,不能適應碼序列需要改變的情況。如果在輸出端加上控制電路,也可以做成可編程的SAW匹配濾波器,應用起來更加方便,但工藝制作困難。本文主要討論基于FPGA設計N階數字匹配濾波器實現直擴系統的數字解擴[2]。該結構不僅可以適應碼序列變化的情況,而且與采用通用的FIR數字濾波器實現匹配濾波的設計相比,大大簡化了設計結構。
1 直擴系統的原理
直接序列擴頻就是直接用具有高碼率的擴頻碼序列在發端去擴展信號的頻譜,而在收端用相同的擴頻碼序列進行解擴,把展寬的擴頻信號恢復成原來的信號。
可采用m序列做擴頻碼序列。m序列是由多級移位寄存器或其他延遲元件通過線性反饋產生的最長的碼序列。在二進制移位寄存器發生器中,若n為移位寄存器的級數,則能產生的最大長度的碼序列為2n-1位。N階匹配濾波器實現信號解擴則需要N位長的m序列,故m序列發生器由log2(N+1)級移位寄存器構成。
2 直擴系統匹配濾波器的結構
如果用通用FIR濾波器實現N階匹配濾波,則N階FIR濾波器的傳遞函數可用差分方程表示為:,其典型結構如圖1所示[3]。該結構的實現需要N個乘法器、N-1個加法器和N級延遲鎖存器。若N很大,直接利用上述結構實現匹配濾波將會導致高度消耗資源甚至于不可能實現。
在直擴系統中,匹配濾波的m序列均由0和1構成,即濾波器系數h(i)為-1或1[4]。由此提出一種結構簡單且易于實現的匹配濾波器方法,如圖2所示。該結構不需要乘法器,并只用1個累加器實現了N個樣本數據的累加,有效地降低了資源的消耗。
2.1 緩沖器的設計
緩沖器可以使用單口RAM或雙口RAM來實現。雙口RAM數據的輸入端口和輸出端口獨立,有利于數據流控制。但緩沖器在同樣的容量條件下,使用雙口RAM比單口RAM會消耗更多的資源。所以在本設計中采用了單口RAM作為樣本數據的緩沖。
每來一個新的樣本數據,都需要對RAM讀取N 個樣本數據以完成一次匹配濾波輸出。因此RAM采用的工作時鐘頻率為數據采樣頻率的(N+1)倍,其中1個節拍用于更新采樣數據,另外N個節拍用來讀取用于運算的N個樣本數據。
由緩沖器的長度可知,RAM的地址線的寬度應為 。RAM的數據線的寬度即為緩沖器的寬度,由計算所需的精度決定。
2.2 移位寄存器的設計
移位寄存器用來保存m序列,故移位寄存器的長度為N。移位寄存器也采用(N+1)倍數據采樣頻率的工作時鐘,其中1個節拍用于移位寄存器讀取m序列,在另外的N個節拍內,每個節拍都使移位寄存器循環移動1位。取出該移位寄存器的最高或最低位作為控制累加器做加法還是減法的控制信號。
2.3 累加器的設計
累加器用來實現樣本數據的N次累加和,采用一個帶有累加和反饋的加法器來實現。累加器結構如圖3所示。
累加器采用(N+1)倍數據采樣頻率的工作時鐘。N個節拍用于完成N次累加(數據選擇器選擇加法器輸出時),1個節拍用于完成累加運算后的清零(數據選擇器選擇‘0’輸出時)。
累加器完成有符號數相加或相減運算,它的一個輸入為累加和的反饋,另一個輸入則為樣本數據。加減法的控制信號由移位寄存器的最高或最低位決定。累加器的寬度由計算精度決定。在要求累加器無精度損失的情況下,累加器的寬度應該保證匹配濾波的結果不會溢出。
2.4 降采樣
累加器的輸出為各次累加結果的輸出,輸出數據率為(N+1)倍的數據采樣頻率。其中僅有第N次樣本數據累加完成后的結果才是需要的匹配濾波的輸出結果。因此,還應對累加器的輸出進行(N+1)倍的降采樣,以得到有效的匹配濾波輸出。若輸出數據率剛好等于采樣頻率,即完成了完整的N階匹配濾波。直擴系統N階匹配濾波器的電路結構示意圖如圖4所示。
3 直擴系統匹配濾波器的時序
本設計采用了Xilinx公司的ISE集成環境[5]及Spartan2e芯片,用Verilog語言編寫了濾波器的設計程序[6],并用Model Technology公司的ModelSim做了時序仿真。N階匹配濾波器的時序仿真示意圖如圖5所示。
采用一個頻率為(N+1)倍數據采樣頻率的時鐘作為RAM、移位寄存器和累加器的工作時鐘。
對于RAM,其中1個節拍用于更新采樣數據x(n)(寫操作),另外N個節拍分別從RAM的N個單元取出N個樣本數據x(n-N-1)、x(n-N-2)、……x(n)(讀操作)。在RAM寫操作時,將m序列寫入移位寄存器;在RAM讀操作的N個節拍內,每個節拍移位寄存器循環移動1位,并取出最高或最低位作為累加器的加、減法控制信號。
對于累加器,N個節拍用于完成N次累加(數據選擇器選擇加法器輸出時),1個節拍用于完成累加運算后的清零(數據選擇器選擇‘0’輸出時)。
經與數據采樣頻率相同的時鐘降采樣后,得到匹配濾波器運算輸出。
4 小 結
本文提出了基于FPGA中的RAM資源實現高階匹配濾波器的設計方法。由于該設計采用了串行運算元素,故占用面積??;采用FPGA實現,可以適應擴頻碼序列變化的任意階數的匹配濾波,與采用通用FIR數字濾波器實現匹配濾波相比,大大降低了FPGA的資源消耗。通常FPGA中的RAM的訪問速度在10M~20MHz。利用本文所述的方法,可有效地實現數據采樣率小于1/(N+1)倍RAM最高訪問頻率的各種N階匹配濾波。因此,本文的方法非常適合中低速數據率條件下的直擴系統相關解擴的匹配濾波。
參考文獻
1 李承恕,趙榮黎.擴展頻譜通信.北京:人民郵電出版社,1993
2 楊暉,張鳳言.大規模可編程邏輯器件與數字系統設計.北京:北京航空航天大學出版社,1998
3 賴玉強,付民倉,王法能.DS-SS數字匹配濾波器原理及實 現方法.通信技術,2003;133(1)
4 步衍冰,曾興雯,梁敏超.基于FPGA的快速匹配濾波器.無線電工程,2003;33(6)
5 王誠,薛小剛,鐘信潮.FPGA/CPLD設計工具——Xilinx ISE 5.x使用詳解.北京:人民郵電出版社,2003
6 夏宇聞.從算法設計到硬件邏輯的實現——復雜數字邏輯系統的Verilog HDL設計技術和方法.北京:高等教育出版社,2001