王薪貴,鮑溫霞,楊智勇,王 靖,禹明慧,吳 迪
(蘇州大學(xué)光電科學(xué)與工程學(xué)院,江蘇 蘇州 215006)
高速脈沖信號(hào)作為現(xiàn)代電子技術(shù)的基礎(chǔ),在電子通信、工業(yè)控制、采集和測(cè)量等方面都有廣泛的應(yīng)用[1-2]。隨著信息科學(xué)的不斷發(fā)展,為了使電子裝置具有更加良好的通用性和靈活性,越來越窄的脈沖寬度與高精度的脈沖寬度調(diào)制是高速脈沖信號(hào)發(fā)生的重要發(fā)展方向[3-4]。
20 世紀(jì)初,人類就已經(jīng)開始利用弦振動(dòng)產(chǎn)生一定頻率的脈沖信號(hào)。隨后,人們又先后使用氣體和火花放電等方法將產(chǎn)生的脈沖寬度由毫秒級(jí)減小到了微秒級(jí)[5]。其開發(fā)成本高昂,設(shè)計(jì)過程復(fù)雜,已經(jīng)很少再被使用。
從20 世紀(jì)70 年代開始,原有的模擬信號(hào)處理開始被數(shù)字信號(hào)處理取代,采用集成式邏輯門電路控制生成脈沖信號(hào)的方法得到了應(yīng)用[6]。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,可編程實(shí)時(shí)脈沖發(fā)生電路成為了主流。單片機(jī)、微控制器等器件具有成本低廉、體積小的優(yōu)點(diǎn),利用時(shí)鐘信號(hào)控制其輸入輸出口來產(chǎn)生脈沖已經(jīng)成為目前較為常用的一種方法[7]。然而由于這類器件時(shí)鐘頻率一般較低,所以精度相對(duì)較低,而且受到外圍模擬電路的限制,控制靈活性差、抗干擾能力弱[8]。FPGA 等可編程邏輯器件以其靈活性高、實(shí)時(shí)性好、數(shù)據(jù)處理高效等顯著優(yōu)勢(shì)在脈沖信號(hào)發(fā)生領(lǐng)域具有不可比擬的優(yōu)越性,實(shí)現(xiàn)了納秒級(jí)精度的脈沖發(fā)生與脈沖寬度的調(diào)制[9],滿足了絕大多數(shù)測(cè)量與控制的需求[10],但是進(jìn)一步減小脈沖寬度需要很高的工作頻率,通用FPGA 一般難以達(dá)到要求。搭建半導(dǎo)體晶體管電路的方法雖然可以實(shí)現(xiàn)極窄脈沖信號(hào)[11-12],但受制于電路設(shè)計(jì),無法實(shí)現(xiàn)脈寬調(diào)節(jié),很難加以利用。而基于非線性傳輸線的邊沿壓縮技術(shù),通過傳輸材料、技術(shù)工藝和參數(shù)的設(shè)置,可以大大壓縮脈沖信號(hào)邊沿的過渡時(shí)間產(chǎn)生皮秒級(jí)的脈沖信號(hào),但是非線性傳輸線技術(shù)并沒有公開,具有技術(shù)壟斷性[13]。除此之外,采用極化門控技術(shù)產(chǎn)生分辨率更高的脈沖的技術(shù)才剛剛起步,設(shè)計(jì)十分復(fù)雜,生成的脈沖寬度也很難加以控制并利用,是目前的前沿課題[14-15]。
針對(duì)目前FPGA 設(shè)計(jì)的脈沖信號(hào)發(fā)生方法存在的問題,本文提出了一種雙通道同步復(fù)裝載脈沖發(fā)生方法,并基于此方法設(shè)計(jì)了一個(gè)納秒級(jí)瞬態(tài)脈沖發(fā)生系統(tǒng)。系統(tǒng)采用雙通道結(jié)構(gòu)對(duì)頻率相近的時(shí)鐘信號(hào)上升沿技術(shù)產(chǎn)生指示信號(hào)輸出,利用兩個(gè)通道之間產(chǎn)生的游標(biāo)效應(yīng),對(duì)指示信號(hào)邏輯運(yùn)算直接生成納秒級(jí)瞬態(tài)脈沖,在此基礎(chǔ)上,還可以通過更改計(jì)數(shù)值,實(shí)現(xiàn)納秒級(jí)精度的脈沖寬度調(diào)制。
目前通用FPGA 最高工作頻率通常在為500 MHz 以下,無法滿足直接生成納秒級(jí)瞬態(tài)脈沖的發(fā)生要求。本文設(shè)計(jì)了一種雙通道同步復(fù)裝載脈沖發(fā)生方法,包括時(shí)鐘發(fā)生(Clock Generator)、同步復(fù)裝載計(jì)數(shù)(Reloader_A、Reloader_B)和信號(hào)邊沿觸發(fā)(Signal edge Trigger)三個(gè)部分。時(shí)鐘發(fā)生部分主要生成兩個(gè)頻率相近的時(shí)鐘信號(hào)和一個(gè)裝載信號(hào)。同步復(fù)裝載計(jì)數(shù)部分是由兩個(gè)可以被裝載信號(hào)同步裝載計(jì)數(shù)值的計(jì)數(shù)通道共同組成的控制模塊,每個(gè)通道對(duì)各自的時(shí)鐘信號(hào)進(jìn)行計(jì)數(shù)并生成指示信號(hào),將生成的兩個(gè)指示信號(hào)通過信號(hào)邊沿觸發(fā),實(shí)現(xiàn)輸出電平翻轉(zhuǎn)發(fā)生納秒級(jí)精度的窄脈沖。
如圖1 所示,雙通道同步復(fù)裝載脈沖發(fā)生方法首先產(chǎn)生兩個(gè)頻率相近的時(shí)鐘信號(hào)CLK A、CLK B和一個(gè)1 MHz 的裝載信號(hào)LOAD。CLK A 頻率較高,作為同步復(fù)裝載計(jì)數(shù)部分的第一通道Reloader_A 的計(jì)數(shù)時(shí)鐘,CLK B 頻率略低,作為第二通道Reloader_B 的計(jì)數(shù)時(shí)鐘。兩通道分別對(duì)各自的輸入時(shí)鐘脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)值分別為輸入的A_Value 和B_Value,每當(dāng)LOAD 時(shí)鐘信號(hào)的上升沿到來時(shí),A_Value 與B_Value 就會(huì)再次被同步地裝載到兩個(gè)計(jì)數(shù)通道中,重新開始下一輪計(jì)數(shù)。每次計(jì)數(shù)值到達(dá)裝載的計(jì)數(shù)值A(chǔ)_Value 或B_Value 時(shí),對(duì)應(yīng)的計(jì)數(shù)通道就會(huì)產(chǎn)生一個(gè)指示信號(hào)Signal,通道Reloader_A產(chǎn)生的指示信號(hào)為SET 信號(hào),通道Reloader_B 產(chǎn)生的指示信號(hào)為RESET 信號(hào),由于計(jì)數(shù)時(shí)鐘頻率不同,產(chǎn)生的SET 和RESET 信號(hào)上升沿產(chǎn)生時(shí)刻會(huì)有一段相位差,在SET 信號(hào)上升沿和RESET 信號(hào)的上升沿觸發(fā)輸出信號(hào)電平翻轉(zhuǎn),就可以產(chǎn)生一個(gè)脈寬可調(diào)的瞬態(tài)脈沖信號(hào)。LOAD 信號(hào)不斷地將兩個(gè)通道的計(jì)數(shù)值同步復(fù)裝載,這個(gè)脈沖信號(hào)就會(huì)以一定頻率不斷地出現(xiàn),實(shí)現(xiàn)脈沖發(fā)生。雙通道同步復(fù)裝載脈沖發(fā)生時(shí)序圖如圖2 所示。
圖1 雙通道同步復(fù)裝載脈沖發(fā)生方法示意圖
圖2 雙通道同步復(fù)裝載脈沖發(fā)生時(shí)序圖
當(dāng)產(chǎn)生的裝載信號(hào)LOAD 上升沿到來時(shí),計(jì)數(shù)值A(chǔ)_Value 與B_Value 就會(huì)同步被裝載到兩個(gè)通道中。兩個(gè)通道分別使用CLK_A 和CLK_B 進(jìn)行計(jì)數(shù),每個(gè)時(shí)鐘信號(hào)的上升沿計(jì)數(shù)值減1,當(dāng)計(jì)數(shù)值變?yōu)? 時(shí),兩個(gè)通道分別輸出SET 和RESET 信號(hào),SET 信號(hào)的上升沿使輸出OUT 置1,RESET 信號(hào)的上升沿使輸出OUT 置0,產(chǎn)生瞬態(tài)脈沖信號(hào)。當(dāng)LOAD 信號(hào)的下一個(gè)上升沿到來時(shí),實(shí)現(xiàn)雙通道計(jì)數(shù)值的同步復(fù)裝載,重復(fù)脈沖信號(hào)的產(chǎn)生過程。
生成的脈沖信號(hào)寬度與輸入的計(jì)數(shù)值(A_Value、B_Value)和輸入時(shí)鐘(CLK A、CLK B)的頻率有關(guān),輸入時(shí)鐘的頻率決定脈沖信號(hào)寬度的最小分辨率,以48 MHz、50 MHz 為例,48 MHz 時(shí)鐘計(jì)數(shù)一次需要的時(shí)間為1/48 MHz,50 MHz 時(shí)鐘計(jì)數(shù)一次需要的時(shí)間為1/50 MHz,通過上面的分析,兩個(gè)通道計(jì)數(shù)完成的時(shí)間差就是輸出的最小分辨率,最小分辨率可以計(jì)算為
即生成的最小脈沖寬度為0.833 ns。
通過改變計(jì)數(shù)值生成的脈沖寬度W計(jì)算公式如下:
根據(jù)脈沖寬度計(jì)算公式,A_Value、B_Value 取各值時(shí)所對(duì)應(yīng)的脈沖寬度如表1 所示。
表1 脈沖寬度與A_Value、B_Value 取值的關(guān)系 單位:ns
A_Value 和B_Value 取值均為0 時(shí),脈沖寬度為0,不產(chǎn)生脈沖信號(hào);當(dāng)A_Value =B_Value 時(shí),產(chǎn)生的脈沖寬度為A_Value(或B_Value)×0.833 ns;其他取值情況下,如果時(shí)鐘頻率取值為50 MHz 和48 MHz,初值裝載信號(hào)為1 MHz,要使模塊能在下一次初值重新裝載前能夠產(chǎn)生指示信號(hào),計(jì)數(shù)值A(chǔ)_Value 和B_Value 的最大分別為49 和47,當(dāng)A_Value 取最大值49,B_Value 取最大值47 時(shí)可以生成最大脈沖寬度,寬度為999.167 ns。
基于雙通道同步復(fù)裝載脈沖發(fā)生方法,本文設(shè)計(jì)了一個(gè)納秒級(jí)瞬態(tài)脈沖發(fā)生系統(tǒng),該系統(tǒng)的RTL視圖如圖3 所示。
如圖3 所示,系統(tǒng)可以分為時(shí)鐘發(fā)生模塊、同步復(fù)裝載模塊和信號(hào)邊沿觸發(fā)模塊。以下本文將對(duì)這三個(gè)重要模塊設(shè)計(jì)進(jìn)行詳述。
圖3 系統(tǒng)RTL 視圖
時(shí)鐘作為時(shí)序電路的基礎(chǔ),在整個(gè)FPGA 程序開發(fā)過程中都十分重要。使用直接數(shù)字頻率合成(Direct Digital Synthesis,DDS)技術(shù),可以產(chǎn)生任意頻率的時(shí)鐘信號(hào),多鎖相環(huán)(Phase Locked Loop,PLL)也同樣可以產(chǎn)生FPGA 工作頻率以內(nèi)的任何時(shí)鐘信號(hào)組合。但是本文提出的雙通道同步復(fù)裝載脈沖發(fā)生方法對(duì)產(chǎn)生時(shí)鐘的相位同步性要求極高,上述方法均無法保證信號(hào)的初相位完全相同。為了使時(shí)鐘信號(hào)的相位相等、頻率穩(wěn)定,雙通道同步復(fù)裝載脈沖發(fā)生方法的時(shí)鐘發(fā)生模塊使用單個(gè)鎖相環(huán)進(jìn)行設(shè)計(jì)。由于使用單一鎖相環(huán)生成的多路時(shí)鐘會(huì)受到FPGA 內(nèi)部結(jié)構(gòu)制約,需要對(duì)生成的時(shí)鐘頻率進(jìn)行精心設(shè)計(jì)。經(jīng)過多次測(cè)試,生成的最佳時(shí)鐘信號(hào)組合為48 MHz 和50 MHz。
如圖4 所示,鎖相環(huán)是一種閉環(huán)頻率控制系統(tǒng),本文設(shè)計(jì)的納秒級(jí)脈沖發(fā)生器使用Altera 的FPGA芯片,可以通過IP 核對(duì)PLL 進(jìn)行參數(shù)設(shè)置。首先將外部晶振產(chǎn)生的50 MHz 時(shí)鐘通過預(yù)分頻計(jì)數(shù)器(N=25)產(chǎn)生2 MHz 時(shí)鐘送入鑒相器,鑒相器將反饋信號(hào)與輸入時(shí)鐘進(jìn)行比較,發(fā)出控制信號(hào)經(jīng)過環(huán)路濾波器驅(qū)動(dòng)壓控振蕩器調(diào)整輸出時(shí)鐘頻率,直到兩個(gè)信號(hào)同步。當(dāng)反饋回路中的反饋計(jì)數(shù)器M=24 時(shí),輸出時(shí)鐘為48 MHz 時(shí)系統(tǒng)達(dá)到穩(wěn)定,等效于對(duì)50 MHz 進(jìn)行了25 分頻、24 倍頻輸出48 MHz 時(shí)鐘信號(hào)。
圖4 FPGA 芯片PLL 結(jié)構(gòu)圖
由時(shí)鐘發(fā)生模塊產(chǎn)生的50 MHz、48 MHz 時(shí)鐘將作為雙通道同步復(fù)裝載計(jì)數(shù)模塊的工作時(shí)鐘。
雙通道同步復(fù)裝載計(jì)數(shù)模塊由兩個(gè)復(fù)裝載計(jì)數(shù)模塊組成,在本瞬態(tài)脈沖發(fā)生電路設(shè)計(jì)中起核心控制作用。為了生成頻率穩(wěn)定的脈沖信號(hào),兩個(gè)通道模塊輸出的指示信號(hào)要能夠按一定周期同步穩(wěn)定出現(xiàn),而指示信號(hào)輸出受脈沖計(jì)數(shù)值直接控制,因此,兩個(gè)通道計(jì)數(shù)值能否同步復(fù)裝載將對(duì)生成的脈沖信號(hào)造成重大影響。
為了實(shí)現(xiàn)計(jì)數(shù)值的周期性同步復(fù)裝載,本文給出一種復(fù)裝載計(jì)數(shù)模塊設(shè)計(jì)方法,其RTL 視圖如圖5 所示。
如圖5 所示,復(fù)裝載計(jì)數(shù)模塊以寄存器state 進(jìn)行狀態(tài)機(jī)設(shè)計(jì),狀態(tài)機(jī)狀態(tài)受到輸入的RELOAD 信號(hào)和計(jì)數(shù)值cnt 共同控制。初始狀態(tài)機(jī)工作狀態(tài)為0,由Selector12 選擇輸出Signal 信號(hào)為0,八位計(jì)數(shù)寄存器cnt 的值每一位都受到選擇器控制為一固定值保持不變,等待裝載信號(hào)裝載計(jì)數(shù)值。當(dāng)RELOAD 信號(hào)上升沿到來時(shí),狀態(tài)機(jī)工作狀態(tài)變?yōu)?,寄存器cnt 被賦予初值后在CLK 信號(hào)的上升沿進(jìn)行遞減計(jì)數(shù),比較器在cnt 計(jì)數(shù)到0 時(shí)輸出變化使得選擇器Selector12 輸出1 將指示信號(hào)Signal 變?yōu)楦唠娖?,同時(shí)狀態(tài)機(jī)工作狀態(tài)變?yōu)?。工作狀態(tài)2保持一個(gè)CLK 時(shí)鐘周期,將指示信號(hào)拉低后進(jìn)入狀態(tài)3。狀態(tài)3 在監(jiān)測(cè)到LOAD 信號(hào)的下降沿時(shí),回到狀態(tài)0,等待下一個(gè)裝載信號(hào),避免了cnt 寄存器在一個(gè)裝載信號(hào)中被多次復(fù)裝載。
圖5 同步復(fù)裝載模塊的RTL 視圖
本設(shè)計(jì)復(fù)裝載模塊的工作時(shí)序圖如圖6 所示,由LOAD 信號(hào)上升沿觸發(fā)裝載計(jì)數(shù)值Value 開始計(jì)數(shù),在CLK 時(shí)鐘信號(hào)的每個(gè)上升沿到來時(shí),寄存器的值減1,當(dāng)寄存器中的值減1 變?yōu)? 時(shí),計(jì)數(shù)完成,輸出指示信號(hào),保持一個(gè)時(shí)鐘周期后,等待下一次裝載。當(dāng)下一次LOAD 信號(hào)上升沿到來時(shí),Value值被重新裝載,再次開始計(jì)數(shù),按一定周期生成穩(wěn)定的指示信號(hào)。
圖6 同步復(fù)裝載模塊工作時(shí)序圖
當(dāng)兩個(gè)復(fù)裝載計(jì)數(shù)模塊的計(jì)數(shù)時(shí)鐘信號(hào)初相位相同且使用同一個(gè)LOAD 信號(hào)進(jìn)行計(jì)數(shù)值的復(fù)裝載時(shí),就構(gòu)成了雙通道同步復(fù)裝載計(jì)數(shù)模塊。
雙通道同步復(fù)裝載模塊計(jì)數(shù)產(chǎn)生的兩個(gè)指示信號(hào)Signal,通過信號(hào)邊沿觸發(fā)模塊,生成對(duì)應(yīng)的瞬態(tài)脈沖信號(hào)。
信號(hào)邊沿觸發(fā)模塊的作用是輸出瞬態(tài)脈沖信號(hào),根據(jù)同步復(fù)裝載計(jì)數(shù)模塊的預(yù)設(shè)計(jì)數(shù)值的不同,產(chǎn)生的指示信號(hào)相位差也不盡相同。要實(shí)現(xiàn)表1 中任意寬度的脈沖信號(hào),必須嚴(yán)格要求信號(hào)邊沿觸發(fā)模塊實(shí)現(xiàn)在輸入信號(hào)SET 上升沿時(shí)刻,輸出信號(hào)變?yōu)楦唠娖?,在RESET 的上升沿時(shí)刻輸出信號(hào)變?yōu)榈碗娖?。?dāng)兩通道同步復(fù)裝載計(jì)數(shù)器的輸出指示信號(hào),即SET、RESET 信號(hào)的上升沿時(shí)刻相距很近時(shí),輸出信號(hào)的高低電平就能在極短時(shí)間內(nèi)完成翻轉(zhuǎn),生成極窄瞬態(tài)脈沖信號(hào)。本文給出一種可行的設(shè)計(jì)方法,RTL 視圖如圖7 所示。
圖7 模塊的RTL 視圖
電路實(shí)際由基本邏輯門和鎖存器組成,鎖存器分別鎖存信號(hào)state 和輸出信號(hào)q。state 為狀態(tài)量,表征RESET 信號(hào)的當(dāng)前狀態(tài)。當(dāng)state 為1 時(shí),表示RESET 信號(hào)的上升沿已經(jīng)到來且RESET 仍保持高電平;當(dāng)state 為0 時(shí),表示RESET 信號(hào)為低電平。state 只有在RESET 信號(hào)狀態(tài)變化時(shí)才產(chǎn)生變化,否則由鎖存器進(jìn)行鎖存。SET、RESET 信號(hào)初始狀態(tài)均為低電平,此時(shí)state 和輸出q狀態(tài)均為0。只要RESET 信號(hào)上升沿到來,輸出q的鎖存器復(fù)位引腳ACLR 就會(huì)被使能,q值被清零,然后state 被置1。而當(dāng)SET 信號(hào)上升沿到來時(shí),只要RESET 信號(hào)不同時(shí)出現(xiàn)上升沿,經(jīng)過邏輯運(yùn)算后,q鎖存器的PRESET 總能變?yōu)楦唠娖捷敵?。
本方案設(shè)計(jì)的信號(hào)邊沿觸發(fā)模塊真值表如表2所示。
表2 信號(hào)邊沿觸發(fā)模塊真值表
如信號(hào)邊沿觸發(fā)模塊真值表所示,SET 信號(hào)為低電平,只有當(dāng)RESET 信號(hào)到達(dá)上升沿時(shí),輸出信號(hào)為0,其他狀態(tài)時(shí)輸出保持原狀態(tài)不變。在SET的上升沿處,只有RESET 信號(hào)也同時(shí)為上升沿模塊輸出0,其余狀態(tài)全為1。SET 信號(hào)處在高電平或下降沿狀態(tài)時(shí),只有RESET 的信號(hào)的上升沿觸發(fā)0 輸出,其他狀態(tài)下輸出保持不變。由真值表可得,只有輸入信號(hào)SET、RESET 的上升沿才能觸發(fā)輸出狀態(tài)發(fā)生變化,SET 的上升沿使輸出信號(hào)為1,RESET 的上升沿使輸出信號(hào)為0,而當(dāng)SET 和RESET 的上升沿一起到來時(shí),輸出信號(hào)狀態(tài)變?yōu)?。
通過對(duì)以上各功能模塊的設(shè)計(jì),實(shí)現(xiàn)了納秒級(jí)的脈沖發(fā)生。脈沖發(fā)生器首先由時(shí)鐘發(fā)生模塊產(chǎn)生50 MHz 與48 MHz 的兩路頻率相近的時(shí)鐘信號(hào),分別作為同步復(fù)裝載模塊Reloader_A、Reloader_B 的工作時(shí)鐘。Reloader_A、Reloader_B 分別生成指示信號(hào)Signal_A 與Signal_B,若計(jì)數(shù)值A(chǔ)_Value =B_Value =1,Reloader_A 與Reloader_B 都將在一個(gè)工作周期后輸出指示信號(hào),由于工作頻率不同,CLK_A的頻率更高,所以Signal_A 的上升沿將先于Signal_B 到來,兩者的時(shí)間差為0.833 ns。
將Signal_A 與Signal_B 輸入信號(hào)邊沿觸發(fā)模塊,Signal_A 作為SET,Signal_B 作為RESET。信號(hào)邊沿觸發(fā)模塊只有在信號(hào)的上升沿才會(huì)觸發(fā)輸出變化,當(dāng)Signal_A 的上升沿到來時(shí),輸出信號(hào)變?yōu)?,0.833 ns后,Signal_B 信號(hào)的上升沿將輸出信號(hào)置0,這樣就產(chǎn)生了一個(gè)寬度為0.833 ns 的窄脈沖信號(hào)。
采用Modelsim 軟件進(jìn)行功能性仿真。為了測(cè)試脈沖寬度的最小精度,將同步復(fù)裝載模塊的計(jì)數(shù)值均設(shè)置為1,使用50 MHz 方波作為輸入時(shí)鐘。實(shí)驗(yàn)結(jié)果如圖8 所示。
圖8 Modelsim 最小分辨率仿真波形
當(dāng)雙通道同步復(fù)裝載計(jì)數(shù)模塊的初始計(jì)數(shù)值都為1 時(shí),生成的脈沖寬度應(yīng)為雙通道同步復(fù)裝載脈沖發(fā)生方法能產(chǎn)生的最小脈沖寬度,也是脈沖寬度調(diào)節(jié)的最小分辨率。根據(jù)脈沖寬度計(jì)算公式,生成的脈沖寬度應(yīng)為0.833 ns,與Modelsim 仿真結(jié)果相同,最小分辨率仿真正確。
數(shù)字化檔案帶來了豐富的信息資源,同時(shí)也對(duì)檔案信息的檢索提出了挑戰(zhàn)。傳統(tǒng)的檔案文件是按類型分類并依照著錄規(guī)則進(jìn)行著錄,經(jīng)人工整理按檔號(hào)順序有序存儲(chǔ)的。
當(dāng)計(jì)數(shù)值都設(shè)置為6 時(shí),仿真波形如圖9 所示。
圖9 ModelSim 功能性仿真波形
由圖9 可見,利用Modelsim 標(biāo)尺計(jì)算出的脈沖寬度值顯示為4.998 ns,而根據(jù)脈沖寬度計(jì)算公式,當(dāng)初始計(jì)數(shù)值都為6 時(shí),輸出的脈沖寬度應(yīng)為4.998 ns,結(jié)果完全一致,實(shí)驗(yàn)脈寬調(diào)制功能性驗(yàn)證結(jié)果正確。
下面使用示波器對(duì)FPGA 實(shí)際生成的脈沖信號(hào)進(jìn)行測(cè)試。FPGA 使用Altera 的EP4CE15F23C8 芯片。示波器型號(hào)為橫河DL9240,其模擬帶寬為1.5 GHz,最高實(shí)時(shí)采樣率為10 Gsample/s。下圖脈沖信號(hào)的設(shè)定值分別為0.833 ns 和4.998 ns。
圖10 與圖11 分別為設(shè)定寬度0.833 ns 和4.998 ns的信號(hào)波形,每格代表的時(shí)間均為5 ns,通過對(duì)脈沖信號(hào)有效部分寬度測(cè)量,圖中所示的實(shí)際脈沖信號(hào)與設(shè)定值吻合。示波器的結(jié)果顯示該脈沖發(fā)生器實(shí)現(xiàn)了納秒級(jí)脈沖信號(hào)發(fā)生及脈沖寬度調(diào)制。
圖10 0.833 ns 脈沖信號(hào)波形
圖11 4.998 ns 脈沖信號(hào)波形
通過對(duì)上述實(shí)驗(yàn)數(shù)據(jù)的分析,雙通道同步復(fù)裝載脈沖發(fā)生方法與其他窄脈沖發(fā)生方法的各項(xiàng)性能如表3 所示。
表3 雙通道同步復(fù)裝載脈沖發(fā)生方法與其他方法生成脈沖參數(shù)
直接計(jì)數(shù)方法是利用FPGA 內(nèi)部鎖相環(huán)將外部晶振頻率倍頻,將其作為計(jì)數(shù)時(shí)鐘進(jìn)行計(jì)數(shù),生成1 ns 分辨率的脈沖信號(hào)需要至少1 GHz 穩(wěn)定工作頻率,通用FPGA 顯然難以達(dá)到要求。脈沖的編譯碼生成方法利用脈沖信號(hào)只有1 和0 兩種狀態(tài),將脈沖信號(hào)以時(shí)間片的形式進(jìn)行切割,每個(gè)時(shí)間片的脈沖狀態(tài)用一位二進(jìn)制數(shù)表示。通過上位機(jī)將二進(jìn)制序列數(shù)據(jù)發(fā)送到FPGA 中就可以生成對(duì)應(yīng)的脈沖信號(hào)。但是編譯碼的最小時(shí)間片精度受到FPGA 本身工作頻率制約,難以實(shí)現(xiàn)更高的分辨率。
除此之外,雙三級(jí)管并聯(lián)電路利用LC 電路阻尼原理和雙射頻三極管并聯(lián)產(chǎn)生的雪崩效應(yīng),產(chǎn)生了幅度較大的脈沖信號(hào),但脈沖寬度也較大。而利用數(shù)字邏輯器件的競(jìng)爭(zhēng)冒險(xiǎn)實(shí)現(xiàn)窄脈沖發(fā)生的雙非門結(jié)構(gòu)設(shè)計(jì)雖然生成了極窄脈沖信號(hào),但是其脈沖寬度受制于電路設(shè)計(jì),無法進(jìn)行調(diào)節(jié)。
直接計(jì)數(shù)法和脈沖的編譯碼生成方法是通過提高FPGA 自身工作頻率來提高最小分辨率的。通常的FPGA 工作頻率一般都在500 MHz 以內(nèi),脈沖寬度調(diào)制的最小分辨率不會(huì)小于2 ns。與其原理不同,本文設(shè)計(jì)的雙通道同步復(fù)裝載脈沖發(fā)生方法在有限的FPGA 工作頻率下,使用雙通道同步復(fù)裝載計(jì)數(shù)模塊分別對(duì)頻率相近的48 MHz 和50 MHz 時(shí)鐘信號(hào)計(jì)數(shù)并產(chǎn)生指示信號(hào)。兩個(gè)通道的指示信號(hào)之間會(huì)因?yàn)橛螛?biāo)效應(yīng)產(chǎn)生相位差。利用相位差產(chǎn)生窄脈沖的等效工作頻率可以達(dá)到1 GHz 以上,而與FPGA 本身的最大工作頻率無關(guān),因此最終能夠達(dá)到0.833 ns 的納秒級(jí)脈沖分辨率。不僅如此,雙通道同步復(fù)裝載脈沖發(fā)生方法的0.833 ns 最小脈沖寬度相比脈沖寬度不可調(diào)節(jié)的雙三極管并聯(lián)電路設(shè)計(jì)仍然具有顯著優(yōu)勢(shì)。雙非門結(jié)構(gòu)設(shè)計(jì)可以生成最小脈寬為0.15 ns 的窄脈沖信號(hào),但電路設(shè)計(jì)完成后,脈沖寬度無法調(diào)節(jié),很難加以應(yīng)用。本文的方法不僅實(shí)現(xiàn)了0.833 ns 的窄脈沖信號(hào)的發(fā)生,也實(shí)現(xiàn)了0.833 ns 的脈沖寬度調(diào)節(jié)精度。
本文提了一種雙通道同步復(fù)裝載脈沖發(fā)生方法。由時(shí)鐘發(fā)生模塊產(chǎn)生兩個(gè)頻率相近的計(jì)數(shù)時(shí)鐘和同步裝載信號(hào),輸出給同步復(fù)裝載計(jì)數(shù)模塊。當(dāng)同步復(fù)裝載計(jì)數(shù)模塊的計(jì)數(shù)值滿足條件時(shí),輸出指示信號(hào)給信號(hào)邊沿觸發(fā)模塊生成所需寬度的脈沖信號(hào),實(shí)現(xiàn)了納秒級(jí)脈沖信號(hào)的FPGA 直接輸出。實(shí)驗(yàn)結(jié)果表明,雙通道同步復(fù)裝載脈沖發(fā)生的最小脈沖寬度為0.833 ns,脈寬調(diào)節(jié)精度也為0.833 ns,和現(xiàn)有的FPGA 脈沖發(fā)生技術(shù)相比,達(dá)到了更窄的脈沖寬度和更高的脈寬調(diào)節(jié)精度,和無法調(diào)節(jié)脈寬的窄脈沖發(fā)生技術(shù)相比,設(shè)計(jì)更為靈活。本文的方法實(shí)現(xiàn)了納秒級(jí)的瞬態(tài)脈沖信號(hào)發(fā)生和精度更高的脈沖寬度調(diào)制。
雙通道同步復(fù)裝載脈沖發(fā)生方法實(shí)現(xiàn)了納秒級(jí)的瞬態(tài)脈沖信號(hào)發(fā)生和脈沖寬度調(diào)制,達(dá)到了預(yù)期的設(shè)計(jì)目的。在此基礎(chǔ)上,該方法還可以生成更高分辨率的脈沖信號(hào)。但是受目前示波器的帶寬限制,難以對(duì)更高分辨率的脈沖信號(hào)進(jìn)行準(zhǔn)確觀測(cè),將在今后的研究中改進(jìn)設(shè)計(jì),進(jìn)一步提高脈沖信號(hào)的分辨率。