??? 摘 要: 在許多測距系統(tǒng)" title="測距系統(tǒng)">測距系統(tǒng)中,精確地調(diào)整用戶端回復幀的發(fā)送時刻是提高測距精度的關(guān)鍵,。介紹了用FPGA實現(xiàn)的一種數(shù)字式成型濾波器組" title="濾波器組">濾波器組,,它可大幅度地縮短發(fā)送時刻的調(diào)整步長,有效地提高測距精度,,已被成功應用于某個測距系統(tǒng)中,。
??? 關(guān)鍵詞: 測距? 幀參考時標? 子波形? 成型濾波器? 成型濾波器組
?
??? 在許多測距系統(tǒng)中,用戶端接收到基站發(fā)送的幀信號后,,便以該幀中特定的位置(稱為幀參考時標)為基準發(fā)送“回復幀'給基站,。基站收到回復幀后,,提取它的幀參考時標,,并以其作為測距的依據(jù)。
??? 通常用戶端的系統(tǒng)時鐘精度較低(本文提到的系統(tǒng)時鐘均指用戶端的系統(tǒng)時鐘),,因此接收到的幀參考時標會存在誤差,。在用戶端經(jīng)過計算估計出幀參考時標的誤差,再用該誤差調(diào)整發(fā)送回復幀的時刻,,可實現(xiàn)精確測距,。因此測距精度取決于兩個因素:幀參考時標誤差的估計精度和回復幀發(fā)送時刻的調(diào)整精度。本文主要討論如何提高回復幀發(fā)送時刻的調(diào)整精度,?;貜蛶怯苫鶐Тa組成的,因此下文中講的發(fā)送時刻的調(diào)整均指基帶碼發(fā)送時刻的調(diào)整,。
??? 發(fā)送時刻的調(diào)整精度是由發(fā)送時刻的調(diào)整步長決定的,。在一般的數(shù)字系統(tǒng)中,發(fā)送時刻的調(diào)整步長不小于一個系統(tǒng)時鐘的周期,。本文利用Altera公司的EP20K300EQC240-3型FPGA器件設(shè)計了一種成型濾波器組,,使發(fā)送時刻的調(diào)整步長縮短為時鐘周期" title="時鐘周期">時鐘周期的五分之一,從而將發(fā)送時刻的調(diào)整精度大幅度地提高,。
1 成型濾波器組調(diào)整發(fā)送時刻的原理
??? 成型濾波器組的設(shè)計原理圖如圖1所示,。成型濾波器組包括一組成型濾波器。相同的發(fā)送基帶碼經(jīng)成型濾波器組中不同的成型濾波器濾波后,,會產(chǎn)生不同延時的發(fā)送數(shù)據(jù)波形,。發(fā)送數(shù)據(jù)波形的延時不同,則發(fā)送時刻也不同。這就是說,,相同的基帶碼經(jīng)過不同的成型濾波器濾波后可產(chǎn)生不同發(fā)送時刻的波形,。因此,以測距誤差作為選擇字,,根據(jù)誤差的大小選擇相應的成型濾波器,,就可間接地調(diào)整發(fā)送基帶碼的時刻。
?
2 用FPGA設(shè)計成型濾波器
??? 通常,,系統(tǒng)時鐘頻率遠高于基帶碼的速率,,因此在成型濾波前,要在基帶碼的相鄰碼之間進行內(nèi)插" title="內(nèi)插">內(nèi)插,。內(nèi)插的方式有多種,,通常的內(nèi)插方法是在發(fā)送的基帶碼的相鄰碼之間內(nèi)插“0”。將基帶碼插“0”后,,與低通濾波器的沖激響應卷積,,再送到D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬波形就可以實現(xiàn)濾波成型。設(shè)計低通濾波器時,,為了得到較好的波形,,通常采用高階的FIR濾波器。如果在FPGA中用邏輯單元" title="邏輯單元">邏輯單元實現(xiàn)高階FIR濾波器,,會占用大量的邏輯單元,。比如在Altera公司的FPGA中用邏輯單元實現(xiàn)一個50階的FIR濾波器,需要26個乘法器和50個加法器,,要占用一千多個邏輯單元,。而本文利用FPGA中的ROM,用查表的方法設(shè)計同樣的FIR濾波器,,則只需占用幾十個邏輯單元,。圖2是成型濾波器的設(shè)計原理圖。該設(shè)計包括用數(shù)學工具——MATLAB預先設(shè)計的部分和在FPGA中實現(xiàn)的部分,,MATLAB完成成型濾波后的數(shù)據(jù)波形文件的設(shè)計,。FPGA存儲設(shè)計好的數(shù)據(jù)波形文件,并用發(fā)送的基帶碼選通相應波形的存儲地址,,完成濾波成型,。
?
??? 首先用MATLAB設(shè)計數(shù)據(jù)波形文件。設(shè)系統(tǒng)基帶碼速率為N MHz,,系統(tǒng)時鐘頻率為B MHz。FIR濾波器的階數(shù)為(C為奇數(shù),,可根據(jù)濾波器的階數(shù)要求進行選擇),。FIR濾波器的系數(shù)可通過MATLAB進行設(shè)計。將C個基帶碼排列組合成2C種情況。對于每種組合,,在C個基帶碼的相鄰碼間內(nèi)插
個0后,,與設(shè)計好的濾波器的沖激響應卷積。卷積結(jié)果的中間
個數(shù)據(jù)波形值就是該C個基帶碼組合的中間基帶碼(簡稱中間碼)的濾波結(jié)果值,。這
個數(shù)據(jù)波形值可以存儲在以該種組合(C個碼)為基地址的ROM中,。MATLAB可以計算出所有組合下C個基帶碼的中間碼的濾波結(jié)果值。
??? FPGA將所有濾波結(jié)果值存入ROM,,將每個濾波結(jié)果值所對應的基帶碼組合作為該濾波結(jié)果值的存儲地址,。系統(tǒng)運行時,用一個C位移位寄存器存儲C個基帶碼,,作為地址選通ROM,,則ROM輸出的濾波結(jié)果值是C個基帶碼的中間碼的濾波結(jié)果值。隨著基帶碼依次到達移位寄存器,,移位寄存器中C個基帶碼的中間碼也被后面的基帶碼依次替換,,ROM輸出的將是依次到達的中間碼的濾波結(jié)果值,從而實現(xiàn)基帶碼的濾波成型,。
??? 圖2中ROM存儲的數(shù)據(jù)是設(shè)計一個成型濾波器得到的波形數(shù)據(jù),,為了與下面成型濾波器組的存儲數(shù)據(jù)相區(qū)別,將圖2中ROM存儲的所有波形數(shù)據(jù)統(tǒng)稱為一個子波形,。
3 在FPGA中用成型濾波器組調(diào)整發(fā)送時刻的方法
??? 圖3是成型濾波器組的實現(xiàn)方案圖,。圖中的FPGA的ROM中存儲了E個子波形,稱為一個成型濾波器組,。第一個子波形就是圖2所設(shè)計的子波形,,稱為原來的子波形。之后的E-1個子波形是原來的子波形以時鐘周期的1/E循環(huán)左移1,,2,,...,E-1次得到的,。如何得到這些移位后的子波形是設(shè)計的關(guān)鍵,。由于波形的移位在MATLAB中是以數(shù)值的變化體現(xiàn)出來的,而通過MATLAB計算可以得到數(shù)值精度很高的波形數(shù)據(jù),,所以用MATLAB設(shè)計的波形,,移位可以遠小于時鐘周期,因此可以很容易用MATLAB得到以時鐘周期的1/E循環(huán)左移后的各個子波形,。
?
??? 各移位后的子波形按循環(huán)左移大小依次存儲在ROM中,。因此一個時鐘周期的延時被劃分成了E個區(qū)間,將測距誤差除以時鐘周期,,得到余數(shù)R,,計算出R落在了E個區(qū)間中的哪個,。選擇該區(qū)間的子波形,將該子波形送到D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬波形后再輸出,,就可將發(fā)送時刻的調(diào)整步長降到時鐘周期的1/E,。實際設(shè)計時,在MATLAB中將FIR濾波器的沖激響應以時鐘周期的1/E循環(huán)左移,,再與插零后的基帶碼卷積,,就實現(xiàn)了子波形的循環(huán)左移。而通常的系統(tǒng)實時產(chǎn)生的波形是由系統(tǒng)時鐘控制的,,延時不會小于一個時鐘周期,,因此其調(diào)整精度遠不如用MATLAB設(shè)計的成型濾波器組的方法。
??? 上面介紹的是子波形循環(huán)左移的方法,,也可以將子波形循環(huán)右移,,道理是一樣的。
4 實例與仿真
4.1 子波形的設(shè)計與仿真
??? 本設(shè)計所應用的測距系統(tǒng)的基帶碼速率為2MHz,,系統(tǒng)時鐘頻率為20MHz,,因此在2MHz基帶碼的相鄰比特間內(nèi)插為5)的FIR濾波器就可實現(xiàn)成型濾波。5個基帶碼可排列成32種組合,,圖4是其中的一種基帶碼組合——11011的成型濾波的仿真結(jié)果,。圖中顯示了該組合插零后與成型濾波器的沖激響應進行卷積的過程??梢钥闯?,卷積后的中間10點數(shù)據(jù)波形正好是插零前5個基帶碼中間的信號0經(jīng)濾波器平滑后的波形。這10點數(shù)據(jù)波形存在以11011為基地址的ROM中,。
?
4.2? 成型濾波器組的設(shè)計
??? 由于時鐘周期為50ns,,當要求最小調(diào)整步長不大于10ns時,在MATLAB中將FIR濾波器的沖激響應以時鐘周期的1/5循環(huán)左移,,再與插零后的基帶碼進行卷積,,就可以得到以時鐘周期的1/5循環(huán)左移0,1,,2,,3,4次后形成的五個子波形,。圖5是組合為11011的基帶碼經(jīng)上述方式產(chǎn)生的五個子波形的圖,。
?
??? 從圖5中中央的兩條虛線可以看出,經(jīng)五次移位后的第五個子波形的0碼與原來的子波形的0碼相比,,延時為4/5個時鐘周期,。這樣就將調(diào)整發(fā)送時刻的步長減小到時鐘周期的1/5,大幅度提高了測距精度,。
??? 假設(shè)估計出的測距誤差是72ns,,如果不采用成型濾波器的方法,,調(diào)整步長為50ns,調(diào)整一個時鐘后,,會產(chǎn)生72-50=22ns的調(diào)整精度誤差。而采用成型濾波器后,,調(diào)整的步長縮小為10ns,,在發(fā)送時將第三個數(shù)據(jù)波形送到D/A轉(zhuǎn)換器轉(zhuǎn)換成模擬波形,再將模擬波形送出就可使調(diào)整精度的誤差降低到72-50-2×10=2ns,。圖6是采用成型濾波器組前后調(diào)整精度的誤差對比圖(假設(shè)測距誤差估計服從高斯分布,,均值為25ns,標準差為25ns)。
?
??? 經(jīng)圖中的數(shù)據(jù)計算得出:在不采用成型濾波器組的情況下,,發(fā)送調(diào)整誤差的標準差為18.17ns,。采用成型濾波器組后,發(fā)送調(diào)整誤差的標準差為4.42ns,,是不采用成型濾波器組時的
??? 成型濾波器組占用ROM的數(shù)量是由發(fā)送時刻調(diào)整的精度,、成型濾波器的階數(shù)、波形數(shù)值量化的比特數(shù),、每個基帶碼的時鐘采樣點個數(shù)等因素決定的,。對上面的例子而言,每五個基帶碼組合要生成10個8比特的波形數(shù)據(jù),,因此所存儲的地址長度為4比特,,存儲單位是字節(jié)。五個基帶碼共有32種組合,,所以一個子波形的地址長度為4+5=9位,。在調(diào)整步長是時鐘的1/5的要求下,要另加3比特基地址來存儲五個子波形,。所以整個成型濾波器組總共消耗的ROM的數(shù)量為2(4+5+3)×8=32768比特,。
??? 除采用數(shù)字電路方式外,許多系統(tǒng)還用模擬電路的方式調(diào)整發(fā)送時刻:將基帶碼通過模擬觸發(fā)電路發(fā)送,,而測距誤差通過模擬觸發(fā)電路控制基帶碼的發(fā)送時刻,。這種方式在理論上調(diào)整發(fā)送時刻的步長更小,但與數(shù)字電路相比,,易受到溫度,、噪聲等多種因素的影響,可靠性差得多,。而本文提出的方法是用數(shù)字的方式實現(xiàn)的,,穩(wěn)定性和可靠性均有無可比擬的優(yōu)越性。
??? 本文設(shè)計的成型濾波器充分地利用了硬件中所剩的ROM資源,,占用了很少的邏輯單元,。用該成型濾波器構(gòu)成的成型濾波器組,,可將基帶碼發(fā)送時刻的調(diào)整步長減小到時鐘周期的幾分之一,甚至十幾分之一,,因此大幅度提高了發(fā)送時刻的調(diào)整精度,。本文的設(shè)計已被應用于某個測距系統(tǒng)中,取得了很好的效果,。該設(shè)計還可應用于其它許多測距系統(tǒng)中,,如定位系統(tǒng)、二次雷達等,,因此有較高的實用價值,。
參考文獻
1 仵國鋒,程 博, 胡捍英. 一種高速FIR成型濾波器的設(shè)計和實現(xiàn). 無線通信技術(shù),2001(2)
2? Elliott D. Kaplan著, 邱致和,王萬義譯.GPS原理與應用.北京:電子工業(yè)出版社,2002