基于數(shù)字移相的高精度脈寬測量系統(tǒng)及其FPGA實(shí)現(xiàn)
2 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)的最關(guān)鍵部分是保證送入各計(jì)數(shù)器的時(shí)鐘相對(duì)延遲精度,即要保證計(jì)數(shù)時(shí)鐘之間的相位差.由于通常原始時(shí)鐘頻率已經(jīng)相對(duì)較高(通常接近100MHz),周期在10~20ns之間,因此對(duì)時(shí)鐘的延遲時(shí)間只有幾ns,使用普通的延遲線芯片無法達(dá)到精度要求;同時(shí)為了避免電路板內(nèi)芯片間傳送延遲的影響,保證測試系統(tǒng)的精度、穩(wěn)定性和柔性.本文采用現(xiàn)場可編程門陣列(FPGA)來實(shí)現(xiàn)所提出的測量方法.系統(tǒng)結(jié)構(gòu)如圖3所示.晶振產(chǎn)生原始輸入時(shí)鐘,通過移相計(jì)數(shù)模塊后得到脈寬的測量值,測量結(jié)果送入FIFO緩存中,以加快數(shù)據(jù)處理速度,最后通過PCI總線完成與計(jì)算機(jī)的數(shù)據(jù)傳輸.邏輯控制用來協(xié)調(diào)各模塊間的時(shí)序,保證系統(tǒng)的正常運(yùn)行.為提高測試系統(tǒng)的靈活性和方便性,系統(tǒng)建立了內(nèi)部寄存器,通過軟件修改寄存器的值可以控制測試系統(tǒng)的啟動(dòng)停止,選擇測量高電平或低電平等.移相計(jì)數(shù)模塊、FIFO緩沖以及邏輯控制均在FPGA芯片內(nèi)實(shí)現(xiàn),芯片使用XILINX公司的SpartanII系列.
SpartanII系列是一款高性能、低價(jià)位的FPGA芯片,其最高運(yùn)行頻率為200MHz,這里選用其中的XC2S15-6(-6為速度等級(jí)).芯片提供了四個(gè)高精度片內(nèi)數(shù)字延遲鎖定環(huán)路(Delay-Locked Loop,即DLL),可以保證芯片內(nèi)時(shí)鐘信號(hào)的零傳送延遲和低的時(shí)鐘歪斜(Clock Skew);同時(shí)可以方便地實(shí)現(xiàn)對(duì)時(shí)鐘信號(hào)的常用控制,如移相、倍頻、分頻等.在HDL程序設(shè)計(jì)中,可以使用符號(hào)CLKDLL調(diào)用片內(nèi)DLL結(jié)構(gòu),其管腳圖如圖4所示.主要管腳說明如下:
CLKIN:時(shí)鐘源輸入,其頻率范圍為25~100MHz.
CLKFB:反饋或參考時(shí)鐘信號(hào),只能從CLK0或CLK2X反饋輸入.
CLK?眼0|90|180|270?演:時(shí)鐘輸出,與輸入時(shí)鐘同頻,但相位依次相差90°.其內(nèi)部定義了屬性DUTY_CYCLE_CORRECTION,可以用來調(diào)整時(shí)鐘的占空比,值為FALSE時(shí),輸出時(shí)鐘占空比和輸入時(shí)鐘一致,值為TRUE時(shí)將占空比調(diào)整為50%.
CLK2X:時(shí)鐘源倍頻輸出,且占空比自動(dòng)調(diào)整為50%.
CLKDV:時(shí)鐘源分頻輸出,由屬性 CLKDV_DIVIDE控制N分頻,N可以為1.5、2、2.5、3、4、5、8或16.
LOCKED:該信號(hào)為低電平時(shí),表示延遲鎖相環(huán)DLL還沒有鎖定信號(hào),上述輸出時(shí)鐘信號(hào)未達(dá)到理想信號(hào);當(dāng)變?yōu)楦唠娖綍r(shí),表示鎖相環(huán)已經(jīng)完成信號(hào)鎖定,輸出時(shí)鐘信號(hào)可用.若時(shí)鐘源輸入頻率大于60MHz,則系統(tǒng)鎖定時(shí)間大約需20μs.
利用DLL功能可以非??焖俜奖愕貥?gòu)建移相計(jì)數(shù)模塊,實(shí)現(xiàn)本文前面介紹的測量方法.移相計(jì)數(shù)模塊結(jié)構(gòu)如圖5所示.原始時(shí)鐘通過CLKDLL處理后得到的相位依次相差90°的四路時(shí)鐘輸出為CLK0、CLK90、CLK180和CLK270,它們分別作為四個(gè)相同的16位計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘,待測信號(hào)連接計(jì)數(shù)器的使能端,同時(shí)控制四個(gè)計(jì)數(shù)器的啟動(dòng)和停止.有了各計(jì)數(shù)器的計(jì)數(shù)結(jié)果,再通過加法器得到累加的計(jì)數(shù)個(gè)數(shù),最后計(jì)算出信號(hào)脈寬值.
3 仿真和精度分析
圖6給出了FPGA芯片內(nèi)部布線后用Modelsim進(jìn)行仿真的結(jié)果.在RESET后就啟動(dòng)移相計(jì)數(shù)模塊,開始對(duì)待測信號(hào)進(jìn)行測量,完成一次測量后產(chǎn)生READY信號(hào),同時(shí)輸出測量結(jié)果,以供后續(xù)部分使用.仿真的結(jié)果證明測試系統(tǒng)達(dá)到設(shè)計(jì)目標(biāo).
下面進(jìn)一步對(duì)系統(tǒng)做深入的誤差分析.造成系統(tǒng)測量脈寬誤差的來源主要有系統(tǒng)原理誤差TS、時(shí)鐘相移誤差TP和信號(hào)延遲誤差Td以及計(jì)數(shù)時(shí)鐘抖晃TC,如圖7所示.
評(píng)論