在測量與儀器儀表領(lǐng)域,經(jīng)常需要對數字信號的脈沖寬度進(jìn)行測量。這種測量通常采用脈沖計數法,即在待測信號的高電平或低電平用一高頻時(shí)鐘脈沖進(jìn)行計數,然后根據脈沖的個(gè)數計算待測信號寬度,如圖1所示。待測信號相對于計數時(shí)鐘通常是獨立的,其上升、下降沿不可能正好落在時(shí)鐘的邊沿上,因此該法的最大測量誤差為一個(gè)時(shí)鐘周期。例如采用80MHz的高頻時(shí)鐘,最大誤差為12.5ns。 提高脈沖計數法的精度通常有兩個(gè)思路:提高計數時(shí)鐘頻率和使用時(shí)幅轉換技術(shù)。時(shí)鐘頻率越高,測量誤差越小,但是頻率越高對芯片的性能要求也越高。例如要求1ns的測量誤差時(shí),時(shí)鐘頻率就需要提高到1GHz,此時(shí)一般計數器芯片很難正常工作,同時(shí)也會(huì )帶來(lái)電路板的布線(xiàn)、材料選擇、加工等諸多問(wèn)題。時(shí)幅轉換技術(shù)雖然對時(shí)鐘頻率不要求,但由于采用模擬電路,在待測信號頻率比較高的情況下容易受噪聲干擾,而且當要求連續測量信號的脈寬時(shí),電路反應的快速性方面就存在一定問(wèn)題。 區別于以上兩種方法,本文提出另一種利用數字移相技術(shù)提高脈寬測量精度的思路并使用FPGA芯片實(shí)現測試系統。 1 測量原理 所謂移相是指對于兩路同頻信號,以其中一路為參考信號,另一路相對于該參考信號做超前或滯后的移動(dòng)形成相位差。數字移相通常采用延時(shí)方法,以延時(shí)的長(cháng)短來(lái)決定兩數字信號間的相位差,本文提出的測量原理正是基于數字移相技術(shù)。如圖2所示,原始計數時(shí)鐘信號CLK0通過(guò)移相后得到CLK90、CLKl80、CLK270,相位依次相差90°,用這四路時(shí)鐘信號同時(shí)驅動(dòng)四個(gè)相同的計數器對待測信號進(jìn)行計數。設時(shí)鐘頻率為f,周期為T(mén),四個(gè)計數器的計數個(gè)數分別為m1、m2、m3和m4,則最后脈寬測量值為: 可以看到,這種方法實(shí)際等效于將原始計數時(shí)鐘四倍頻,以4f的時(shí)鐘頻率對待測信號進(jìn)行計數測量,從而將測量精度提高到原來(lái)的4倍。例如原始計數時(shí)鐘為80MHz時(shí),系統的等效計數頻率則為320MHz,如果不考慮各路計數時(shí)鐘間的相對延遲時(shí)間誤差,其測量的最大誤差將降為原來(lái)的四分之一,僅為3.125ns。同時(shí),該法保證了整個(gè)電路的最大工作頻率仍為人避免了時(shí)鐘頻率提高帶來(lái)的一系列問(wèn)題。 2 系統實(shí)現 系統實(shí)現的最關(guān)鍵部分是保證送入各計數器的時(shí)鐘相對延遲精度,即要保證計數時(shí)鐘之間的相位差。由于通常原始時(shí)鐘頻率已經(jīng)相對較高(通常接近100MHz),周期在10~20ns之間,因此對時(shí)鐘的延遲時(shí)間只有幾ns,使用普通的延遲線(xiàn)芯片無(wú)法達到精度要求;同時(shí)為了避免電路板內芯片間傳送延遲的影響,保證測試系統的精度、穩定性和柔性。本文采用現場(chǎng)可編程門(mén)陣列(FPGA)來(lái)實(shí)現所提出的測量方法。系統結構如圖3所示。晶振產(chǎn)生原始輸入時(shí)鐘,通過(guò)移相計數模塊后得到脈寬的測量值,測量結果送人FIFO緩存中,以加快數據處理速度,最后通過(guò)PCI總線(xiàn)完成與計算機的數據傳輸。邏輯控制用來(lái)協(xié)調各模塊間的時(shí)序,保證系統的正常運行。為提高測試系統的靈活性和方便性,系統建立了內部寄存器,通過(guò)軟件修改寄存器的值可以控制測試系統的啟動(dòng)停止,選擇測量高電平或低電平等。移相計數模塊、FIFO緩沖以及邏輯控制均在FPGA芯片內實(shí)現,芯片使用XILINX公司的SpartanII系列。 SpartanII系列是一款高性能、低價(jià)位的FPGA芯片,其最高運行頻率為200MHz,這里選用其中的XC2S15-6(-6為速度等級)。芯片提供了四個(gè)高精度片內數字延遲鎖定環(huán)路(Delay-Locked Loop,即DLL),可以保證芯片內時(shí)鐘信號的零傳送延遲和低的時(shí)鐘歪斜(Clock Skew);同時(shí)可以方便地實(shí)現對時(shí)鐘信號的常用控制,如移相、倍頻、分頻等。在HDL程序設計中,可以使用符號CLKDLL調用片內DLL結構,其管腳圖如圖4所示。主要管腳說(shuō)明如下: CLKIN:時(shí)鐘源輸入,其頻率范圍為25~100MHz。 CLKFB:反饋或參考時(shí)鐘信號,只能從CLK0或CLK2X反饋輸入。 CLK[0︱90︱180︱270]:時(shí)鐘輸出,與輸入時(shí)鐘同頻,但相位依次相差90°。其內部定義了屬性DUTY_CY-CLE_CORRECTION,可以用來(lái)調整時(shí)鐘的占空比,值為FALSE時(shí),輸出時(shí)鐘占空比和輸入時(shí)鐘一致,值為T(mén)RUE時(shí)將占空比調整為50%。 CLK2X:時(shí)鐘源倍頻輸出,且占空比自動(dòng)調整為50%。 CLKDV:時(shí)鐘源分頻輸出,由屬性CLKDV_DIVIDE控制N分頻,N可以為1.5、2、2.5、3、4、5、8或16。 LOCKED:該信號為低電平時(shí),表示延遲鎖相環(huán)DLL還沒(méi)有鎖定信號,上述輸出時(shí)鐘信號未達到理想信號;當變?yōu)楦唠娖綍r(shí),表示鎖相環(huán)已經(jīng)完成信號鎖定,輸出時(shí)鐘信號可用。若時(shí)鐘源輸入頻率大于60MHz,則系統鎖定時(shí)間大約需20μs。 利用DLL功能可以非?焖俜奖愕貥嫿ㄒ葡嘤嫈的K,實(shí)現本文前面介紹的測量方法。移相計數模塊結構如圖5所示。原始時(shí)鐘通過(guò)CLKDLL處理后得到的相位依次相差90°的四路時(shí)鐘輸出為CLK0、CLK90、CLKl80和CLK270,它們分別作為四個(gè)相同的16位計數器的計數時(shí)鐘,待測信號連接計數器的使能端,同時(shí)控制四個(gè)計數器的啟動(dòng)和停止。有了各計數器的計數結果,再通過(guò)加法器得到累加的計數個(gè)數,最后計算出信號脈寬值。 3 仿真和精度分析 圖6給出了FPGA芯片內部布線(xiàn)后用Modelsim進(jìn)行仿真的結果。在RESET后就啟動(dòng)移相計數模塊,開(kāi)始對待測信號進(jìn)行測量,完成一次測量后產(chǎn)生READY信號,同時(shí)輸出測量結果,以供后續部分使用。仿真的結果證明測試系統達到設計目標。 下面進(jìn)一步對系統做深入的誤差分析。造成系統測量脈寬誤差的來(lái)源主要有系統原理誤差TS、時(shí)鐘相移誤差TP和信號延遲誤差Td以及計數時(shí)鐘抖晃TC,如圖7所示。 由前所述,當80MHz晶振時(shí)鐘輸入時(shí),系統原理誤差Ts=3.125ns。時(shí)鐘相移誤差為從CLKDLL中出來(lái)的四路時(shí)鐘信號之間本身的相位偏移,根據芯片提供的參數,其最大TP為200ps。計數時(shí)鐘抖晃是指從CLKDLL中輸出的時(shí)鐘信號本身周期的偏差,其最大TC為60ps。由于計數的時(shí)鐘周期數較多,故平均后其對整個(gè)系統的測量誤差影響可以忽略不計。 信號延遲誤差即為由于芯片內部各信號傳輸延遲不一致而造成的四個(gè)計數器計數的同步誤差。為分析該誤差情況,用ISE 5.1提供的Timing Analyzer程序對關(guān)鍵路徑做進(jìn)一步的時(shí)間分析,得到的結果如表1所示。 表中第一欄為從CLKDLL中出來(lái)的計數時(shí)鐘到各自計數器的延遲時(shí)間,第二欄為用來(lái)控制計數器啟動(dòng)停止的HF信號到四個(gè)計數器的時(shí)間。由于需要的是各計數時(shí)鐘間相對延遲時(shí)間,故第三欄給出時(shí)鐘相對于HF信號到計數器的延遲,即為第一欄和第二欄的差值。由此得出信號延遲誤差Td=0.950ns。 故有系統測量誤差T為: T=TS+TP+Td=4.275ns (2) 即脈寬測量最大誤差為±4.275ns。與脈沖計數法比較,同樣的80MHz時(shí)鐘輸入,最大測量誤差減小到原來(lái)的34.2%。 本文在數字移相技術(shù)的基礎上設計了一種高精度的脈寬測量系統,使測量精度相對于脈沖計數法提高了多倍。若需進(jìn)一步提高這種方法的測量精度,可以通過(guò)以下兩個(gè)方面進(jìn)行改進(jìn):(1)繼續提高晶振頻率,尋求速度更快的FPGA芯片。晶振頻率越高,系統原理誤差越小。(2)減小信號延遲誤差。由前面可以看到,信號的延遲誤差對系統精度的影響占了很大的比例。減小各計數時(shí)鐘和待測信號到計數器的信號延遲的差異,可以有效地提高測量精度。由于FPGA內部信號延遲的時(shí)間均可以很方便地得到,因此在設計時(shí)可以通過(guò)調整內部各元件的放置位置以及連線(xiàn)來(lái)盡量減小延遲誤差,或者通過(guò)添加一些門(mén)電路來(lái)增加延時(shí)以使各信號延遲時(shí)間盡可能相同。 |