仵曉輝,師廷偉,金長江
(中國電子科技集團公司第二十七研究所,河南鄭州450047)
在工程應用中,經(jīng)常需要對數(shù)字信號的脈沖寬度進行測量,筆者在工作中就需要對由光信號轉換過來的電信號的脈沖寬度進行測量。為了更好地滿足工程應用的需求,就需要提高測量的精度。本文正是為滿足這一需求而設計出了一種基于FPGA的脈沖寬度的精確測量方法。
測量脈沖寬度最常用的方法是脈沖計數(shù)法。脈沖計數(shù)法就是在待測脈沖寬度內(nèi)對時鐘脈沖進行計數(shù)(一般是對時鐘脈沖的上升沿計數(shù),下面以對上升沿進行計數(shù)為例),計數(shù)值N與時鐘周期T相乘就可以得到脈沖寬度的數(shù)值。這是比較簡單和常用的測量脈沖寬度的方法,這一方法的誤差來源于待測脈沖的前沿和后沿與相鄰時鐘上升沿的時間差t1,t2,最大誤差為一個時鐘周期的值,如時鐘頻率為100MHz,則最大誤差為10ns。測量原理見圖1。
圖1 脈沖計數(shù)法測量原理圖
如果要提高計時精度,就需要提高時鐘頻率,而時鐘頻率的提高又受制于器件性能,并給印制板設計及加工帶來一定困難,如果要得到納秒量級的測量精度,時鐘頻率就需要達到1GHz,這在實際工程中應用起來比較困難。本文在脈沖計數(shù)法的基礎上,提出運用數(shù)字移相技術并結合FPGA設計出新型的脈沖寬度測量方法,可將測量精度提高到納秒量級。移相即通過FPGA內(nèi)部鎖相環(huán)模塊(PLL)的延時功能,使時鐘信號產(chǎn)生一定時間的滯后,新產(chǎn)生的信號與原始信號形成兩路同頻卻有一定相位差的時鐘信號,所以稱為移相[1,2]。
測量原理見圖2。通過移相技術對時鐘信號CLK0進行處理,依次移相90°,形成另外三路時鐘信號CLK90、CLK180和CLK270。分別使用以上四路時鐘信號驅動四路計數(shù)器對待測脈沖進行測量[3,4]。假設時鐘信號CLK0的頻率為f,其周期則為T=1/f,四路時鐘對待測脈沖信號測量的計數(shù)值分別為N1、N2、N3、N4,則最后待測脈沖信號的測量值為
圖2 數(shù)字移相法測量原理圖
通過式(1)和圖2可以看出,時鐘信號CLK0、CLK90、CLK180和CLK270的每一個上升沿分別對應于等效時鐘的一個上升沿,從而可以這樣表述:使用四路時鐘來測量待測脈沖信號并將測量結果相加,等效于使用4倍頻的時鐘頻率為4f的時鐘信號測量待測脈沖。根據(jù)前面介紹的脈沖計數(shù)法可知,測量結果的最大誤差為等效時鐘的時鐘周期,也即是時鐘信號CLK0的時鐘周期的1/4。通過這樣的方式可以在不提高計數(shù)時鐘頻率的前提下,達到減小測量誤差、提高計時精度的目的。
使用這一測量方法,在計數(shù)時鐘頻率為250 MHz時,可得到時鐘頻率為1GHz的等效時鐘,從而使測量精度達到納秒量級。本文在ALTERA公司的QuartusⅡ7.2環(huán)境下選用StratixⅢ系列的EP3SE50F484C2芯片進行設計并仿真。下面給出基于這一測量方法的詳細設計和仿真結果。
首先,利用Quartus提供的鎖相環(huán)模塊(PLL)生成四路依次相差90°相位的時鐘信號。為了降低高頻時鐘信號對印制板設計帶來的影響,設計選用的輸入時鐘信號頻率為50MHz,通過PLL進行5倍頻產(chǎn)生頻率為250MHz的時鐘,并通過PLL的移相功能生成四路依次相差90°相位的計數(shù)時鐘信號CLK0、CLK90、CLK180和CLK270.PLL模塊見圖3[5,6]。
圖3 PLL模塊圖
然后,利用Quartus提供的計數(shù)模塊(COUNTER)產(chǎn)生四個計數(shù)模塊,分別由計數(shù)時鐘信號CLK0、CLK90、CLK180和CLK270驅動,在脈沖寬度內(nèi)進行計數(shù)。利用Quartus提供的加法器模塊(ADD)對四個計數(shù)模塊的計數(shù)值相加。綜合計數(shù)模塊原理圖如圖4。其中,輸入引腳pulse為待測脈沖信號,輸入引腳clr為計數(shù)模塊清零信號,輸出引腳width為測量到的脈沖寬度輸出端。
圖4 綜合計數(shù)模塊原理圖
由于計數(shù)時鐘信號的頻率為250MHz,其周期T為4ns,根據(jù)上面介紹的測量技術原理及公式(1)可知,脈沖寬度為t=N1+N2+N3+N4,即加法器最后輸出的數(shù)值就是測量到的脈沖寬度,單位為ns。
為驗證設計,在QuartusⅡ7.2環(huán)境下選用StratixⅢ系列的EP3SE50F484C2芯片對設計進行仿真。仿真結果見圖5、圖6和圖7。
以上示例的脈沖寬度設定值與仿真測量值見表1。比較脈沖寬度設定值與測量值可知,仿真結果符合設計目標,測量精度達到ns量級。
表1 脈沖寬度設定值與測量值
本文介紹的脈沖寬度精確測量方法,在直接脈沖計數(shù)法的基礎上采用數(shù)字移相技術來提高測量精度,并通過仿真驗證了設計思路,將脈沖寬度的測量精度提高到納秒量級。該測量方法可用于需要對脈沖寬度進行測量的各種工程應用中,且該方法可測量的脈沖寬度范圍寬,對大于10ns的脈沖都可進行精確測量。當待測脈沖寬度變化時,只需根據(jù)脈沖寬度的可能上限更改計數(shù)器的位數(shù),方便工程應用。
[1]胡華春,石玉.數(shù)字鎖相環(huán)原理與應用[M].上海:上??茖W技術出版社,1990.
[2]Roland E Best.鎖相環(huán)設計、仿真與應用[M].北京:清華大學出版社,2007.
[3]鄭卉卉,程少云.基于數(shù)字移相的高精度到達時間測量系統(tǒng)[J].計算機測量與控制,2007,15(4):429-431.
[4]葉超,馮莉,歐陽艷晶.基于FPGA的精密時間間隔測量儀設計[J].信息與電子工程,2009,7(2):159-163.
[5]楊曉慧,楊旭.FPGA系統(tǒng)設計與實例[M].北京:人民郵電出版社,2010.
[6]王誠,吳繼華.Altera FPGA/CPLD設計(高級篇)[M].北京:人民郵電出版社,2005.