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