蘇燕婷,宋茂忠,崔 暢,沈 通,嚴(yán) 峰
(南京航空航天大學(xué) 電子信息工程學(xué)院,南京 211106)
低抖動(dòng)時(shí)鐘[1]廣泛應(yīng)用于光通信、衛(wèi)星導(dǎo)航、模數(shù)轉(zhuǎn)換(Analog-to-Digital Conversion,ADC)等領(lǐng)域,是高精度的信號模擬和信號采集的關(guān)鍵技術(shù)。在衛(wèi)星信號模擬方面,毫米級高精度偽距時(shí)延[2]成為了模擬器的核心指標(biāo)。多數(shù)研究聚焦于分?jǐn)?shù)時(shí)延濾波或數(shù)值插值方法,但時(shí)延濾波等方法的參數(shù)相對固定,難以達(dá)到快速轉(zhuǎn)換的目的。另一種滿足快速可調(diào)要求且復(fù)雜度低的高精度時(shí)延實(shí)現(xiàn)方法是數(shù)控振蕩器(Numerically Controlled Oscillator,NCO)。NCO通過控制碼頻率與碼相位來實(shí)現(xiàn)偽距時(shí)鐘的可控變化,文獻(xiàn)[3]就采用了NCO方法來快速完成衛(wèi)星動(dòng)態(tài)信號的調(diào)制。普通的NCO受限于激勵(lì)時(shí)鐘的頻率而導(dǎo)致產(chǎn)生的偽距時(shí)鐘信號有一定的過零點(diǎn)抖動(dòng)誤差,不能滿足高精度需求。文獻(xiàn)[4]提出在NCO的基礎(chǔ)上采用時(shí)間幅度調(diào)制時(shí)鐘方法,消除了NCO時(shí)鐘的過零點(diǎn)抖動(dòng)誤差問題,但經(jīng)過數(shù)模轉(zhuǎn)換后的帶限通道會(huì)引入濾波失真。
本文針對時(shí)間幅度調(diào)制方法的濾波失真問題提出一種正弦平滑改進(jìn)的時(shí)間幅度調(diào)制方法。本文介紹了時(shí)間幅度調(diào)制原理,分析了時(shí)間幅度調(diào)制時(shí)鐘的帶限失真問題,并采用正弦平滑方式對失真進(jìn)行了有效抑制。對低抖動(dòng)時(shí)間幅度調(diào)制時(shí)鐘信號進(jìn)行了Matlab仿真,并利用現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)硬件設(shè)計(jì)和產(chǎn)生,分析改進(jìn)后時(shí)鐘信號的精度變化。
NCO由N位相位累加器和N位寄存器組成,通過對頻率控制字進(jìn)行累加來產(chǎn)生所需頻率的信號。在利用NCO產(chǎn)生時(shí)鐘信號時(shí),對N位相位的寄存器只截取其最高位,最高位有效時(shí)則時(shí)鐘有效。在實(shí)際應(yīng)用中,若采用250 MHz采樣時(shí)鐘fs產(chǎn)生1.023 MHz且隨多普勒頻移[5]變化的測距碼時(shí)鐘fcode,其理想的時(shí)鐘上升沿如圖1中實(shí)線所示。
圖1 時(shí)間幅度調(diào)制前后時(shí)鐘過零點(diǎn)對比圖
待產(chǎn)生的時(shí)鐘周期Tcode與采樣時(shí)鐘周期Ts的比值如式(1)所示,其中N表示相位位寬,K表示頻率控制字,m表示非負(fù)整數(shù),d表示小數(shù)。
(1)
由公式(1)計(jì)算可得Tcode與Ts并非整數(shù)倍關(guān)系,即d≠0。由圖1可以看出,在d≠0的情況下,過零點(diǎn)t0不能被直接采樣,而只能得到其前后兩個(gè)采樣點(diǎn)t1和t2。由于NCO時(shí)鐘對相位進(jìn)行了1 b截取,采樣點(diǎn)的幅值分別為-1和1,這樣產(chǎn)生的時(shí)鐘過零點(diǎn)將是這兩個(gè)采樣點(diǎn)的中點(diǎn)t3。實(shí)際過零點(diǎn)t3和理想過零點(diǎn)t0間的差值隨時(shí)鐘周期迭代不斷變化,導(dǎo)致實(shí)際產(chǎn)生的時(shí)鐘出現(xiàn)前沿抖動(dòng)。
時(shí)間幅度調(diào)制能夠應(yīng)對NCO時(shí)鐘的過零點(diǎn)抖動(dòng)問題,其基本思想是用等間隔采樣序列的幅度來表示信號的精確過零點(diǎn)時(shí)間,即將過零點(diǎn)到采樣點(diǎn)的時(shí)間間隔調(diào)制到信號的幅度上。如圖1中虛線所示,為了精確表示過零點(diǎn)t0的位置,根據(jù)采樣點(diǎn)t1、t2與t0間的時(shí)間間隔,將采樣點(diǎn)的幅值調(diào)制為y1、y2,在理論上修正了過零點(diǎn)誤差。
經(jīng)時(shí)間幅度調(diào)制后的采樣幅值y1和y2表示為
(2)
式中:Ts=t2-t1表示相鄰兩個(gè)采樣時(shí)刻的時(shí)間間隔,a=t0-t1表示上升沿過零點(diǎn)時(shí)刻與前一采樣時(shí)刻的時(shí)間間隔,下降沿的采樣幅值相反。時(shí)間間隔a與時(shí)鐘周期有關(guān),每增加一個(gè)周期,a將對應(yīng)累加dTs。第i個(gè)周期的時(shí)間間隔ai表示為
(3)
分析周期內(nèi)的采樣點(diǎn)數(shù),當(dāng)?shù)趇+1個(gè)周期上升沿過零點(diǎn)的時(shí)間間隔ai+1超過一個(gè)采樣間隔Ts時(shí),Ts將對其取余,相應(yīng)地第i個(gè)周期將增加一個(gè)采樣點(diǎn),因此第i個(gè)周期的采樣點(diǎn)數(shù)Mi表示為
(4)
一個(gè)完整的時(shí)鐘周期如圖2所示,第i個(gè)時(shí)鐘周期從當(dāng)前上升沿過零點(diǎn)開始,至下個(gè)周期上升沿過零點(diǎn)結(jié)束。
圖2 時(shí)間幅度調(diào)制時(shí)鐘的第i個(gè)周期
(5)
(6)
經(jīng)過時(shí)間幅度調(diào)制方法產(chǎn)生的測距碼時(shí)鐘由單比特信號變?yōu)槎啾忍匦盘枺瑴y距碼經(jīng)過DAC后就可以與中頻載波進(jìn)行模擬調(diào)制,并射頻產(chǎn)生衛(wèi)星信號。但在實(shí)際應(yīng)用中,由于DAC附帶有濾除雜散分量的低通濾波器,斜率過高的上升沿經(jīng)過帶限通道將引起高頻失真現(xiàn)象,導(dǎo)致過零點(diǎn)前后采樣幅值發(fā)生變化,過零點(diǎn)時(shí)刻偏移。
如圖3所示,利用Matlab對時(shí)間幅度調(diào)制時(shí)鐘信號經(jīng)過250階的50 MHz低通濾波器進(jìn)行仿真,時(shí)間上延遲了500 ns。將濾波前后信號進(jìn)行對齊比較,經(jīng)過低通濾波后,過零點(diǎn)前后采樣點(diǎn)幅值分別由-0.758 6 V和0.241 4 V變?yōu)?0.453 5 V和0.271 1 V,出現(xiàn)了明顯的高頻失真現(xiàn)象[6]。
圖3 濾波前后的時(shí)間幅度調(diào)制時(shí)鐘信號
為了抑制上述帶限失真問題,本文提出一種正弦平滑的方式對時(shí)間幅度調(diào)制時(shí)鐘進(jìn)行改進(jìn),即利用正弦函數(shù)對時(shí)鐘邊沿的采樣點(diǎn)進(jìn)行采樣幅度調(diào)制,起到降低上升沿處斜率的作用。
正弦平滑改進(jìn)后的時(shí)間幅度調(diào)制采樣幅值與采樣時(shí)間的關(guān)系如下:
y=sin(2πf(t-t0)) 。
(7)
式中:t-t0表示采樣時(shí)間與時(shí)鐘過零點(diǎn)時(shí)刻間的間隔,f表示正弦函數(shù)的頻率??紤]到f需要小于50 MHz以滿足濾波器截止頻率,取250 MHz/12≈20.83 MHz,一個(gè)時(shí)鐘邊沿有6個(gè)采樣點(diǎn)需要調(diào)整幅值。改進(jìn)前后的時(shí)鐘邊沿如圖4所示。
圖4 改進(jìn)前后時(shí)鐘上升沿對比圖
第i個(gè)周期上升沿的采樣幅值表示為
(8)
式中:n=1,2,3,4,5,6分別表示圖4中從左至右的6個(gè)采樣點(diǎn)。下降沿各采樣點(diǎn)幅值與上升沿相反。
(9)
(10)
圖5是正弦平滑前后的時(shí)鐘信號的歸一化對數(shù)振幅頻譜,經(jīng)分析,頻譜峰值都在1.023 MHz頻率處。由于對時(shí)鐘邊沿進(jìn)行了正弦平滑,頻譜泄漏造成的多余頻率分量減少,正弦頻率與采樣頻率的倍數(shù)關(guān)系減小了奇次諧波的影響。同時(shí),正弦平滑后信號在50 MHz以上的頻譜峰量明顯減小,表明帶限失真問題能夠有效地被抑制。
圖5 改進(jìn)前后的時(shí)鐘信號頻譜圖
經(jīng)過正弦平滑后時(shí)間幅度調(diào)制時(shí)鐘信號其濾波前后信號如圖6所示。選取與圖3相同的上升沿,濾波后,采樣點(diǎn)幅值由-0.386 8 V和0.126 1 V變?yōu)?0.329 6 V和0.189 7 V,相較于改進(jìn)前,幅值變化得到了控制,該周期的抖動(dòng)誤差也減小了35.2 ps。
圖6 改進(jìn)后濾波前后的時(shí)鐘信號
為統(tǒng)計(jì)周期標(biāo)準(zhǔn)差,對正弦平滑改進(jìn)前后的時(shí)間幅度調(diào)制時(shí)鐘在濾波后的周期抖動(dòng)誤差進(jìn)行1 000個(gè)周期對比,理想的C/A測距碼時(shí)鐘頻率fcode為1.023 MHz,周期Tcode為977.517 ns,圖7給出了其中50個(gè)時(shí)鐘周期的值。
圖7 改進(jìn)前后的時(shí)鐘周期抖動(dòng)對比
可以看出,經(jīng)過正弦平滑改進(jìn)的時(shí)鐘周期抖動(dòng)明顯小于改進(jìn)前,最高減小了82.5 ps的周期抖動(dòng)誤差。比較1 000個(gè)濾波后時(shí)鐘周期的標(biāo)準(zhǔn)差,原時(shí)間幅度調(diào)制時(shí)鐘和正弦平滑的時(shí)間幅度調(diào)制時(shí)鐘周期標(biāo)準(zhǔn)差分別為83.7 ps和25.6 ps,改進(jìn)后的周期標(biāo)準(zhǔn)差降低了69.42%,說明正弦平滑后的時(shí)間幅度調(diào)制方法能夠極好地作用于低抖動(dòng)時(shí)鐘的產(chǎn)生。
本文還對低抖動(dòng)時(shí)間幅度調(diào)制時(shí)鐘進(jìn)行了硬件設(shè)計(jì),將時(shí)鐘的產(chǎn)生分為周期內(nèi)計(jì)數(shù)、過零點(diǎn)間隔累加和時(shí)鐘幅值選擇三個(gè)模塊。計(jì)數(shù)器的模值M由累加器的溢出值Sig控制,經(jīng)二選一MUX判斷模值,計(jì)數(shù)器每完成一周期計(jì)數(shù)則累加器進(jìn)行一次累加D。將累加后的值A(chǔ)送入幅值計(jì)算器計(jì)算幅值Y,最后14∶1選擇器通過計(jì)數(shù)值Cnt選擇輸出時(shí)鐘信號,具體如圖8所示。在參數(shù)選擇上,m為公式(1)中的整數(shù)分量,m0為初始碼相位的整數(shù)分量,D和A為公式(1)和(3)中小數(shù)分量d和時(shí)間間隔a的48 b量化值,D0為初始碼相位小數(shù)分量d0的48 b量化值。
圖8 低抖動(dòng)時(shí)鐘的硬件設(shè)計(jì)
幅值計(jì)算器同樣需要一些設(shè)計(jì)。普通的NCO從ROM存儲(chǔ)器中查表獲得正弦幅值,有容量限制。為了能夠根據(jù)公式(8)得到更為精確的量化幅值Y,本文采用CORDIC算法來計(jì)算幅值。在圓坐標(biāo)系中,三角函數(shù)的正余弦值可以表示為向量形式,將初始向量r(xi,yi)經(jīng)過旋轉(zhuǎn)角度θ則得到目標(biāo)向量g(xi+1,yi+1)。CORDIC算法經(jīng)過n次固定角度θi的偏擺來逼近旋轉(zhuǎn)角度θ,通過坐標(biāo)旋轉(zhuǎn)的方法來簡化復(fù)雜的運(yùn)算過程。
CORDIC算法方程組可以表示為
(11)
參照硬件設(shè)計(jì),用正弦平滑的方式在FPGA端對低抖動(dòng)時(shí)間幅度調(diào)制時(shí)鐘進(jìn)行時(shí)鐘信號的產(chǎn)生。
首先,利用Mentor公司的FPGA仿真軟件Modelsim進(jìn)行仿真測試,設(shè)置激勵(lì)時(shí)鐘為250 MHz,對不同頻率的時(shí)鐘信號進(jìn)行產(chǎn)生與分析,選取時(shí)鐘信號的10個(gè)連續(xù)周期,經(jīng)過計(jì)算,正弦平滑后的周期均值與周期標(biāo)準(zhǔn)差如表1所示,10 ps級的周期標(biāo)準(zhǔn)差與Matlab仿真結(jié)果相近。
表1 FPGA仿真不同頻率時(shí)鐘信號的精度
接著,載入Xilinx Virtex6系列FPGA開發(fā)板進(jìn)行硬件測試,采用示波器對時(shí)鐘信號進(jìn)行可視精度對比,將兩個(gè)時(shí)鐘經(jīng)過DAC及低通濾波后接入示波器的兩個(gè)通道并觀察頻率和周期參數(shù)。由于示波器的頻率顯示精度為1 kHz,因此選擇產(chǎn)生頻率為1.022 MHz、1.023 MHz、1.024 MHz的時(shí)鐘信號,以便獲得直觀的誤差對比結(jié)果。讀取兩個(gè)通道的測量參數(shù)可得如表2所示的周期精度對比數(shù)據(jù),其中通道1代表普通NCO時(shí)鐘,通道2代表正弦平滑的時(shí)間幅度調(diào)制時(shí)鐘。
表2 NCO與正弦平滑時(shí)間幅度調(diào)制時(shí)鐘周期精度對比
考慮器件溫漂、模數(shù)轉(zhuǎn)換的相位截?cái)?、信號傳輸中的噪聲、示波器精度等影響,周期?biāo)準(zhǔn)差理論值為0的10 MHz基準(zhǔn)方波在示波器中也有30 ps左右的標(biāo)準(zhǔn)差,因此,雖然表2中FPGA板級的時(shí)鐘周期的標(biāo)準(zhǔn)差比仿真結(jié)果有一定的增加,但仍可以看出在不同頻率下,正弦平滑的時(shí)間幅度調(diào)制時(shí)鐘相較于NCO時(shí)鐘的周期標(biāo)準(zhǔn)差降低了90%以上,證明產(chǎn)生的時(shí)間幅度調(diào)制時(shí)鐘有遠(yuǎn)高于NCO時(shí)鐘的穩(wěn)定性。
圖9為1.024 MHz頻率時(shí)鐘示波器畫面,正弦平滑的時(shí)間幅度調(diào)制時(shí)鐘的周期標(biāo)準(zhǔn)差為88.86 ps。
圖9 NCO時(shí)鐘與正弦平滑的時(shí)間幅度調(diào)制時(shí)鐘精度對比圖
本文提出了一種用正弦平滑改進(jìn)的時(shí)間幅度調(diào)制方法,極大減小了NCO時(shí)鐘的過零點(diǎn)采樣誤差,有效抑制了時(shí)間幅度調(diào)制時(shí)鐘的帶限失真問題。以衛(wèi)星導(dǎo)航模擬器中的測距碼時(shí)鐘為參考時(shí)鐘信號,通過軟件仿真與硬件實(shí)現(xiàn),對不同頻率的時(shí)鐘信號進(jìn)行分析,證明正弦平滑時(shí)間幅度調(diào)制時(shí)鐘的精度相較于普通NCO時(shí)鐘提升了一個(gè)數(shù)量級,產(chǎn)生了高精度、低抖動(dòng)的時(shí)間幅度調(diào)制時(shí)鐘,在繼承NCO時(shí)鐘頻率快速、可調(diào)優(yōu)點(diǎn)的基礎(chǔ)上,可觀地減小周期抖動(dòng),能夠應(yīng)用于產(chǎn)生與采樣時(shí)鐘非整數(shù)頻率關(guān)系的低抖動(dòng)時(shí)鐘信號,降低了低抖動(dòng)時(shí)鐘信號對高頻率采樣時(shí)鐘的需求。算法易于實(shí)現(xiàn)且有較強(qiáng)的工程適用性。