時域反射儀的硬件設(shè)計與實現(xiàn)----關(guān)鍵電路設(shè)計(三)
3.3采樣與存儲設(shè)計
要將模擬的脈沖信號顯示到液晶屏上,必須通過數(shù)據(jù)采集系統(tǒng)來實現(xiàn)。首先通過模數(shù)轉(zhuǎn)換器,將模擬信號轉(zhuǎn)換成數(shù)字信號,再將數(shù)字信號做相應(yīng)的處理后,通過ARM將數(shù)字信號送到顯示屏。
3.3.1模數(shù)轉(zhuǎn)換器
在已知的早期的手持式數(shù)字示波器中,模數(shù)轉(zhuǎn)換器常采用的是AD9288[26」,其采樣率只有100MSPS,即使在拼合的情況下也只有200MSPS.本系統(tǒng)要求的最高采樣率為250MSPS,采樣精度為8位。ADI公司有兩款這樣的模數(shù)轉(zhuǎn)換器滿足上述要求,分別為AD9480和AD9481,這兩款ADC器件外觀基本上一樣,而只是在數(shù)字信號輸出方式上完全不同,分別具有以下特點:
AD9480:
◢單通道模數(shù)轉(zhuǎn)換通道,250MSPS
◢模擬通道帶寬:750MHZ
◢最大功耗590mV(250MSPS)
◢數(shù)據(jù)輸出為LVDS(低壓差分信號)形式,頻率與采樣頻率相同
◢帶同步輸出時鐘
優(yōu)點:LVDS輸出,抗噪聲和干擾強,且對系統(tǒng)干擾小。
缺點:功耗高,輸出必須與對應(yīng)的LVDS接口相連,通用性不強。
AD9481:
◢單通道模數(shù)轉(zhuǎn)換通道,250MSPS
◢模擬通道帶寬:750MHz
◢最大功耗439mW(250MSPS)
◢數(shù)據(jù)輸出為COMS電平形式,交替輸出,頻率為采樣頻率二分之一
◢帶同步輸出時鐘,有數(shù)據(jù)同步控制端
優(yōu)點:功耗低,輸出端頻率低,輸出與TTUCMOS兼容;可實現(xiàn)數(shù)據(jù)拼和。
缺點:CMOS輸出抗干擾性不強,同時也容易產(chǎn)生電磁干擾經(jīng)過對功耗、接口方式、可實現(xiàn)性的考慮,
本設(shè)計采用了AD9481作為模數(shù)轉(zhuǎn)換器,來完成對脈沖信號的高速采樣。AD9481的具體時序圖如圖4-23所示。
AD9481數(shù)字部分的輸出采用的是交替輸出,即輸出分為八位并行的A口和B口。模數(shù)轉(zhuǎn)換器在每一次時鐘的上升沿進行采樣,當?shù)贜個采樣時鐘到來時,A口輸出一個新的八位并行數(shù)據(jù),B口保持上一次輸出數(shù)據(jù)不變;當N+l次采樣時鐘到來時,B口輸出一個新的八位并行數(shù)據(jù),A口八位數(shù)據(jù)保持不變。則通過上述方式,實際上A、B口的輸出頻率最高也只有125MHz(25OMsPS),信號輸出頻率降低了一半,減緩了高速數(shù)據(jù)存取對讀寫控制的要求,減小了數(shù)據(jù)在存儲過程當中產(chǎn)生錯誤的可能性。
ADC采樣的時鐘信號由FPGA提供,ADC的采樣時鐘分為三種情況:250MHz、200MHz、100MHz.系統(tǒng)所用的時鐘則由50MHz的有源石英晶體提供,50MHz的時鐘送給FPGA以后,通過FPGA內(nèi)部的一個PLL(鎖相環(huán)),即可產(chǎn)生以上三種高速時鐘信號。
3.3.2峰值檢測
峰值檢測是數(shù)據(jù)采集系統(tǒng)中比較常用的方式,對于捕獲毛刺信號具有很大的幫助。它不像正常取樣方式那樣,通過采集大量與信號有關(guān)的數(shù)據(jù),存儲在大型存儲器中(兆量級),而是僅僅存儲了少量能夠反應(yīng)信號真實形狀的有效數(shù)據(jù),占用了極少的存儲空間,在不增加存儲深度的情況下,準確的捕獲到毛刺和偶發(fā)事件,同時峰值檢測采樣形式還能防止顯示出現(xiàn)差拍效應(yīng)和具有包絡(luò)顯示功能[切。
峰值采樣的基本原理就是以盡可能高的采樣率對信號進行采集,在單位時間內(nèi)對采集到的數(shù)據(jù)進行高速比較,從中找出最大值和最小值并保持下來,而將其它值忽略掉,在顯示方面依靠采集到的最大值和最小值可以比較真實的還原出原始信號的一些特性。如圖4-24所示,在周期時間T內(nèi)(對應(yīng)屏幕上一個像素點的時間),信號被高速采樣,采樣點數(shù)大于等于2,所有被采集到的數(shù)據(jù)都被直接送到FPGA內(nèi)部進行高數(shù)比較,找到最大值和最小值(如左圖中黑點部分)。在周期時間T結(jié)束之前,將比較出的最大值和最小值保存在FPGA內(nèi)部的RAM中,當ARM讀到這兩個數(shù)值時,通過軟件處理,很容易就在屏幕上恢復出與原信號相似的波形。右圖中黑色像素點對應(yīng)ARM讀到的最大值或最小值,灰點由硬件產(chǎn)生。
圖4-25顯示了利用峰值檢側(cè)來捕獲毛刺信號的優(yōu)點。在沒有峰值檢測情況下,當信號上出現(xiàn)較窄的毛刺信號的時候,由于采樣點間隔大于毛刺信號的寬度,因此恢復出的信號上并不能顯示出毛刺信號;而在使用峰值檢測采樣以后,由于采樣間隔小于毛刺信號的寬度,則必然會捕獲到毛刺信號,其捕獲毛刺信號的能力取決于采樣間隔,一般寬度大于采樣間隔的毛刺信號都可以捕獲到。這種捕獲毛刺和偶發(fā)事件的能力在檢測維修當中十分有用。
差拍現(xiàn)象(混盛)是由于采樣沒有遵循Nyquist采樣定律導致的結(jié)果,當示波器工作在慢速時基檔位(此時采樣速率較低),而輸入信號頻率較高的情況下就可能發(fā)生差拍。當發(fā)生差拍時,顯示波形頻率將低于實際信號頻率,一般兩者成倍數(shù)關(guān)系,同時示波器在己觸發(fā)的情況下也不能穩(wěn)定,在采樣周期性波形情況下,屏幕上可能顯示出與原信號形狀相同但頻率不正確的信號。檢查是否發(fā)生差拍的方法之一是改變時基,當時基在相鄰檔位變化時,若波形發(fā)生很大變化,則表示己經(jīng)產(chǎn)生了差拍,另一種方法是采用峰值檢測方式,由于峰值檢測即使在慢速時基檔位下也始終采用最高的采樣率捕獲信號,所以當輸入信號的頻率在可測范圍內(nèi)時,就可以避免差拍出現(xiàn)。如圖4-26所示,在低速采樣下產(chǎn)生差拍信號的現(xiàn)象。
在時域反射測量中,在高速時基情況下,如100ns/div--5ns/div之間,屏幕上的一列對應(yīng)了ADC單次采樣采集到的數(shù)據(jù),即點對點形式,此時ADC也處于最高速采樣狀態(tài)下(250MSPS),當時基為20ns/div時,采樣率仍保持在250MSPS,此時屏幕上的單個像素點對應(yīng)的時間間隔為5ns,對應(yīng)了兩次采樣時鐘,即兩個數(shù)據(jù)確定了屏幕上的一列圖形,如果這兩個數(shù)據(jù)相同,則對應(yīng)屏幕上的一點,如果不同,則對應(yīng)屏幕上同一列的上下兩個或是連成一小段的像素點。當時基為500ns/div,如果采樣率仍為250MSPS,則單個像素點的時間(20ns)對應(yīng)5次采樣的數(shù)據(jù),如果采樣率為200MSPS,則單個像素點的時間(20ns)對應(yīng)4次采樣的數(shù)據(jù)。又因為為了降低功耗的目的,在1us/div以后都采用了100MSPS,單個像素點的時間(20ns)對應(yīng)了以4為倍數(shù)的采樣數(shù)據(jù)。為此在500ns/div時也采用200MsPs,這樣在進行峰值檢測的時候可以一次將4個數(shù)據(jù)送到高速比較模塊做流水線比較,并在規(guī)定時間周期內(nèi)找到最大值和最小值。4個高速數(shù)據(jù)的峰值比較電路設(shè)計流程如圖4-27所示。
在FPGA內(nèi)部,峰值檢測模塊電路由于采用了流水線的模式,因此用了較多的8位并行D觸發(fā)器、8位比較器和8位兩路選擇器來實現(xiàn)。雖然占用了一定的FPGA的內(nèi)部邏輯單元(LB),但卻保證了大量數(shù)據(jù)的高速連續(xù)處理,且不丟失有用的數(shù)據(jù),唯一的缺點就是實時性不強,即4個數(shù)據(jù)的比較需要經(jīng)過好幾次時鐘(每個時鐘為周期為4*4ns)以后才能找到最大值和最小值,即有一定的延時性,但并不影響波形的正常顯示。因此這種流水線的操作方式實際上是一種利用空間換取時間的方式。整體設(shè)計模塊如圖4-28所示。
在峰值檢測模塊當中,輸入端有兩個控制輸入,CLK_NUM和OVER_4.OVER_4表示峰值檢測在單位時間內(nèi)總共多少個數(shù)據(jù)進行比較,因為在時基為500ns/div和1us/div下,一次只進行4個數(shù)據(jù)的比較,就要輸出最大和最小值,而在Zu叮div以后都是要進行大于4個,且以4為倍數(shù)的數(shù)據(jù)的比較,而模塊單次只能比較4個數(shù)據(jù),因此用OVER4來控制總共比較的數(shù)據(jù)是否大于4,大于4則OVER_4為1,反之為O。CLK_NUM用來控制單位時間間隔內(nèi)到底有多少個數(shù)據(jù)進行比較,如果CLK-少舊M的周期為16ns,則只有4個數(shù)據(jù)比較,此時OVER_4也為0,當CLK_NUM的周期為16ns的倍數(shù)后,則會有4的倍數(shù)個數(shù)據(jù)進行比較。[!--empirenews.page--]
實際上CLK-少舊M的周期與時基是相聯(lián)系的,如時基為500ns/div,則CLK_NUM的周期為20ns,又因為此時的采樣率為20OMSPS,所以只有4個數(shù)據(jù)比較,當時基為1us/div,CLK_NUM的周期為40ns,采樣率為100MSPS,所以同樣只有4個數(shù)據(jù)比較,而當時基為2us/div,CLK_NUM的周期為80ns,采樣率為100MSPs,就會有8個數(shù)據(jù)進行比較,而在比較的過程當中,先進去的4個數(shù)據(jù)會比較出一個大值和小值,這兩個數(shù)據(jù)被默認為最大值和最小值暫時保留下來,直到與后進來的4的數(shù)據(jù)比較出的大值和小值繼續(xù)做比較,最終確定最大值和最小值。表4-3給出了在不同時基情況下起用峰值檢測模塊控制信息相關(guān)對照表
從表中可以看到,在一般情況下,CLK_NUM的周期都可以直接通過分頻來獲得,而在時基比較大時,如100ms/div情況下,由于本設(shè)計的存儲深度在3K左右,對應(yīng)了10屏(每屏300個點)的圖形,如果一次連續(xù)的將存儲器填滿,則需要的時間大概為12s,信號刷新率太低,不適合波形顯示,因此在100ms/div時基以后,都采用了軟件采樣的方式,且此時沒有存儲深度的概念。波形顯示采用了掃描的方式,CLK_NUM的周期由ARM內(nèi)部的定時中斷器開控制。此時屏幕上的信號不是一次刷新,而是從屏幕左方向右方依次更新,當更新完最后一列信號后,又重新回到屏幕波形顯示區(qū)域的最左側(cè),依次顯示新的波形。
圖4-29和圖4-30是峰值檢測電路時序仿真圖,其中MAX和M取輸出作為觀察峰值檢測模塊內(nèi)部單次比較結(jié)果,MAX_OUT和MIN_OUT是最終比較出的最大值和最小值,WR_CLK可以作為將比較出的數(shù)據(jù)寫入FPGA內(nèi)部RAM的寫時鐘信號。圖4-29顯示的是在CLK_NUM周期內(nèi)只有4個數(shù)據(jù)進行比較的輸出結(jié)果,而圖4-30表示的在CLK_NUM周期內(nèi)有8個數(shù)據(jù)進行比較的輸出結(jié)果。從兩張圖都可以看到,從數(shù)據(jù)輸入到數(shù)據(jù)輸出都有一定的時間延時。雖然數(shù)據(jù)有延時,但通過這種流水線的方式將模塊的工作速度降了下來,使模塊工作更加穩(wěn)定,同時也不影響波形的正常顯示。
本峰值檢測模塊在示波器模式和時域測量模式下,經(jīng)過實驗證明,完全可以捕獲到寬度超過10ns的毛刺信號,而在200MSPS下,可捕獲的毛刺寬度將更窄。
3.3.3時域測量下的觸發(fā)
與一般的時域反射儀相比,本設(shè)計具有其它產(chǎn)品所沒有的觸發(fā)功能,該觸發(fā)功能的設(shè)計與示波器測量模式下的觸發(fā)完好的銜接在一起。脈沖時域測量的觸發(fā)不像示波器模式下的觸發(fā)那樣,還需要外部觸發(fā)模擬電路支持,由于脈沖信號是由數(shù)字電路來產(chǎn)生,所以可以直接利用FPGA內(nèi)部的數(shù)字邏輯單元來完成觸發(fā)設(shè)計,類似于示波器模式下的上升沿觸發(fā),同時為了有效觀察脈沖信號的反射,脈沖信號需要在屏幕上可以左右的移動,在觸發(fā)電路設(shè)計上也具有預觸發(fā)的能力。
預觸發(fā)是在數(shù)字示波器取代模擬示波器后產(chǎn)生的一種新的觸發(fā)方式。這是因為模擬示波器不具備數(shù)據(jù)存儲的功能,而數(shù)字示波器利用它的大量數(shù)據(jù)存儲能力和軟件處理能力,實現(xiàn)了預觸發(fā)功能。有時在某些特定測試情況下,人們感興趣的波形部分并不是緊跟在引起穩(wěn)定觸發(fā)信號的后面,而是在觸發(fā)以后一段時間,或者是在觸發(fā)之前。這就需要采集系統(tǒng)能夠?qū)⒂|發(fā)事件前后一段時間內(nèi)發(fā)生的信號都存儲下來,以供處理器處理并顯示出來。在實際操作過程中,可以通過左右移動觸發(fā)點,將觸發(fā)之前或者之后的信號移到屏幕中供用戶觀察。
本系統(tǒng)的存儲深度為3K,對應(yīng)了10個波形顯示區(qū),即實際波形顯示范圍只占到總共采集到的波形的十分之一。圖4-31為預觸發(fā)設(shè)計結(jié)構(gòu)圖。
從預觸發(fā)電路結(jié)構(gòu)圖中可以看出,整個電路主要包括四個部分:觸發(fā)信號輸入、RAM地址計數(shù)、預觸發(fā)計數(shù)、后觸發(fā)計數(shù)。在觸發(fā)源選擇由一個二選一選擇器,可以選擇內(nèi)部脈沖信號觸發(fā)。當用內(nèi)部產(chǎn)生的脈沖信號作為觸發(fā)信號時,在FPGA內(nèi)部己經(jīng)啟動了脈沖時域測量信號產(chǎn)生模塊,因此選擇了直接用脈沖信號上升沿作為觸發(fā)信息。在這里并沒有采用從通道進來的脈沖信號,是因為從通道進來的脈沖信號并不是周期信號,同時在通道上還有反射回的脈沖信號,如果前一次觸發(fā)是發(fā)射脈沖,下一次觸發(fā)有可能不是發(fā)射脈沖,而有可能是反射脈沖,則顯示出來的信號就有可能不正確,無法正常觀察脈沖信號,因此只有采用內(nèi)部觸發(fā),且在此狀態(tài)下只有一種觸發(fā)信號,即發(fā)射脈沖信號,不會出現(xiàn)觸發(fā)不正確的情況。當然采用觸發(fā)釋抑的方式也可以解決上述問題,這樣的話就可以選擇通道脈沖信號來觸發(fā),但是需要設(shè)計額外的數(shù)字電路,因此在這里沒有采用。
預觸發(fā)電路的工作順序大體上分為四個步驟,首先由ARM對模塊進行初始化,則所有的計數(shù)器清零。預觸發(fā)計數(shù)器和RAM地址計數(shù)器同時開始計數(shù),計數(shù)時鐘與時基相對應(yīng)。當預觸發(fā)計數(shù)器達到設(shè)定值(1K)以后,產(chǎn)生一個高電平信號,該高電平信號作為觸發(fā)使能信號,而在此之前觸發(fā)信號被屏蔽掉的。如果觸發(fā)使能以后還沒有來觸發(fā)脈沖信號,RAM地址計數(shù)器仍然保持計數(shù)狀態(tài)。直到有觸發(fā)脈沖到來,后觸發(fā)計數(shù)器開始計數(shù),而RAM地址計數(shù)器仍然保持計數(shù)狀態(tài),后觸發(fā)計數(shù)器的計數(shù)值大小(2K)等于存儲深度(3K)減去預觸發(fā)計數(shù)值大小,當后觸發(fā)計數(shù)器計數(shù)達到設(shè)定計數(shù)值(2K)以后,就會產(chǎn)生一個高電平,將計數(shù)時鐘改為由ARM來提供,當ARM檢測到該高電平以后,就會通過軟件來發(fā)時鐘,使RAM地址計數(shù)器重復計數(shù),每發(fā)送一個時鐘,ARM就會從RAM中讀取一個數(shù)據(jù),直到發(fā)送3K個時鐘后,將RAM中的所有數(shù)據(jù)讀出。預觸發(fā)電路的工作流程圖如圖4-32所示。
在觸發(fā)電路工作中有一個關(guān)鍵地方?jīng)Q定了預觸發(fā)的實現(xiàn),那就是一直處于工作狀態(tài)下的RAM地址計數(shù)器,從模塊初始化以后,RAM地址計數(shù)器一直都處于計數(shù)狀態(tài),當觸發(fā)使能后,而又沒有觸發(fā)脈沖到來的時候,RAM地址計數(shù)器也保持計數(shù)狀態(tài);當后觸發(fā)計數(shù)結(jié)束以后,RAM計數(shù)才暫時停止,而整個模塊從開始計數(shù)到后觸發(fā)計數(shù)結(jié)束,RAM計數(shù)器的計數(shù)時鐘次數(shù)大于預觸發(fā)計數(shù)器和后觸發(fā)計數(shù)器之和(3K),也就是說,在后觸發(fā)計數(shù)器停止之前,RAM計數(shù)器已經(jīng)計數(shù)滿,并又從0開始重新計數(shù),直到后觸發(fā)計數(shù)器停止時它才停止。在這里RAM就類似于一個環(huán)狀的存儲器,其工作方式如圖4-33所示。
在上圖的a圖中表示的是預觸發(fā)初始化以后,RAM從1號地址開始將采集到的數(shù)據(jù)寫入RAM即從A點開始寫數(shù)據(jù),寫滿IK數(shù)據(jù)以后,觸發(fā)使能打開,RAM到達B點。B圖表示觸發(fā)使能以后,仍觸發(fā)信號,則繼續(xù)將數(shù)據(jù)寫入RAM內(nèi),直到C點,此時觸發(fā)信號到來。c圖表示觸發(fā)信號到來以后,RAM被繼續(xù)寫入數(shù)據(jù),當RAM計數(shù)器計到3K點后,回到了A點,而此時后觸發(fā)計數(shù)器還沒有停止,因此RAM計數(shù)器從0開始繼續(xù)計數(shù),直到到達D點,此時后觸發(fā)器計數(shù)停止,RAM計數(shù)器也停止。也就是說RAM從最開始工作,到地址到D點所存儲的舊數(shù)據(jù),被最后存儲進來的新數(shù)據(jù)覆蓋掉,即。圖中A點到D點這一段黑色區(qū)域,在預觸發(fā)存儲數(shù)據(jù)階段,被先后兩次寫入數(shù)據(jù),最終存儲的數(shù)據(jù)為后一次寫入的數(shù)據(jù)。
在ARM讀取RAM內(nèi)部的數(shù)據(jù)時,此時RAM計數(shù)器的計數(shù)時鐘已經(jīng)換成由ARM來提供,即ARM通過I/O口產(chǎn)生一個上升沿信號,送給地址計數(shù)器。在讀取數(shù)據(jù)的時候,RAM地址計數(shù)器并不是從零開始從新計數(shù),而是繼續(xù)從D點所在的地址繼續(xù)計數(shù),則D+1號地址所對應(yīng)的數(shù)據(jù)應(yīng)該是被認為在整個儲存深度(3K)中的第一個數(shù)據(jù),從D+l到C點則為1K的預觸發(fā)數(shù)據(jù),從C到D則為后觸發(fā)數(shù)據(jù)。因此根據(jù)觸發(fā)信號到來的偶然性,每一次從RAM中讀取數(shù)據(jù)時,C點和D點所對應(yīng)的RAM的地址不一定都相同,但是ARM從RAM中讀回的數(shù)據(jù),經(jīng)過從新排列,保證每次采集到的數(shù)據(jù)的前1K點就是預觸發(fā)數(shù)據(jù)。這樣經(jīng)過軟件處理顯示到屏幕上以后,波形不僅可以前后移動,同時也保證了觸發(fā)的穩(wěn)定。