基于VHDL的時(shí)鐘分頻和觸發(fā)延遲電路在FPGA上的實(shí)現
0 引言
EAST(先進(jìn)實(shí)驗超導托卡馬克)是我國自行設計研制的國際首個(gè)全超導托卡馬克裝置。中央定時(shí)同步系統是EAST托卡馬克裝置的重要組成部分。EAST中央定時(shí)與同步系統為分布廣泛的數據采集系統和其它子系統提供精確的方波時(shí)鐘信號,以及精確的同步觸發(fā)信號,控制各子系統按照預設的時(shí)序流程工作。該系統主要由EAST可視化中央控制臺,時(shí)序信號光纖網(wǎng),核心模塊,若干個(gè)分布式節點(diǎn)以及外圍隔離驅動(dòng)設備組成,見(jiàn)圖1。核心模塊負責向各分布式節點(diǎn)發(fā)送同步的基準系統時(shí)鐘和系統觸發(fā)信號。分布式節點(diǎn)根據設置對核心模塊發(fā)送的基準時(shí)鐘信號進(jìn)行分頻,得到所需要頻率的時(shí)鐘發(fā)送到子系統。通過(guò)設置的觸發(fā)延遲模件參數可以得到子系統所需要的觸發(fā)時(shí)刻。
目前,進(jìn)行分頻電路設計主要采用定時(shí)器來(lái)實(shí)現,8254計數器所支持的最高時(shí)鐘頻率有限(最高為10 MHz)以及誤差較大也不是理想的實(shí)現方案??删幊踢壿嬈骷﨔PGA是當今最熱門(mén)的邏輯開(kāi)發(fā)器件之一,它在工作最高頻率、集成度、時(shí)序控制能力上具有無(wú)與倫比的優(yōu)勢。因此選用FPGA芯片來(lái)實(shí)現時(shí)鐘分頻和觸發(fā)延遲電路是當前的主流。在使用FPGA做時(shí)鐘分頻設計時(shí),文獻設計計數器的時(shí)候用VHDL做了分頻器的設計,但是只討論了偶數的分頻;文獻在運動(dòng)控制系統中使用Verilog描述語(yǔ)言在FPGA環(huán)境下對通用整數分頻器進(jìn)行了設計,但在通用任意整數分頻器中分頻系數的設置稍顯復雜,不利于分布式中央定時(shí)系統,并且主要討論的都是單路輸出;文獻在FPGA上實(shí)現了奇數和偶數的通用分頻器,將半整數,奇數,偶數放在一個(gè)模N計數器里進(jìn)行預置,這樣分頻系數的設定比較方便,但輸出奇數分頻時(shí)鐘信號時(shí)的誤差過(guò)大,達不到分布式定時(shí)同步系統的精度。而對觸發(fā)延遲輸出方面,之前這方面的研究主要采用的是模擬電路實(shí)現的方法,不易進(jìn)行遠程控制和更改。
本文首先介紹中央定時(shí)同步系統的基本組成結構,隨后具體給出了時(shí)鐘分頻和觸發(fā)延遲電路的邏輯設計。利用FPGA芯片來(lái)實(shí)現對輸入基準時(shí)鐘信號進(jìn)行多通道任意整數倍的等占空比分頻輸出,同時(shí)對觸發(fā)脈沖進(jìn)行任意時(shí)刻延遲的多路輸出。本設計主要采用VHDL語(yǔ)言來(lái)設計,利用QuartusⅡ9.0對設計進(jìn)行了仿真分析,結果表明該設計滿(mǎn)足分布式定時(shí)觸發(fā)系統的分頻延遲功能。
1 系統組成
EAST定時(shí)與同步系統主要由一個(gè)核心模塊和多個(gè)分布式節點(diǎn)構成,核心模塊給分布式節點(diǎn)提供一道基準時(shí)鐘信號和一道基準觸發(fā)信號,各分布式節點(diǎn)負責對基準時(shí)鐘和觸發(fā)進(jìn)行分頻和延時(shí)處理,為子系統系統提供它所需要的時(shí)鐘和觸發(fā)??傮w系統結構如圖1所示。分布式節點(diǎn)是該中央定時(shí)觸發(fā)系統的核心,而時(shí)鐘分頻和觸發(fā)延遲也是分布式節點(diǎn)最重要的任務(wù)。分布式節點(diǎn)主要由微處理器和FPGA組成,外圍由以太網(wǎng)絡(luò )端口,光電轉化模塊等等組成。微處理器接收核心模塊發(fā)送的分頻系數和延遲參數,FPGA主要根據微處理器傳輸來(lái)的參數對輸入的基準時(shí)鐘進(jìn)行相應的分頻,并對核心模塊發(fā)送的主觸發(fā)信號進(jìn)行延遲輸出。時(shí)鐘同步系統分布式節點(diǎn)結構如圖2所示。
2 時(shí)鐘分頻設計
對基準時(shí)鐘的整數分頻主要分為等占空比偶數分頻和等占空比奇數分頻,它們的分頻原理也是不同的,必須要分別對待。對于單通道偶數分頻,設計比較簡(jiǎn)單,之前已經(jīng)有很多這方面的研究,在此不再贅述。在本設計中,由于EAST定時(shí)觸發(fā)系統需要多路分頻信號,可以在程序設計的時(shí)候采用VHDL里面的類(lèi)屬參量和元件例化語(yǔ)句,類(lèi)屬參量Generic是一種端口界面常數,常以一種說(shuō)明的形式放在實(shí)體或塊結構體前的說(shuō)明部分。類(lèi)屬參數映射的綜合處理較簡(jiǎn)單,所有的參數配置都通過(guò)Generic map來(lái)傳遞,子模塊內部只需要根據上層模塊指定的參數進(jìn)行綜合即可。整數時(shí)鐘分頻電路需要在一個(gè)程序中可以同時(shí)對基準時(shí)鐘進(jìn)行奇數和偶數分頻,所以在頂層文件中需要聲明元件的語(yǔ)句格式如下:
時(shí)鐘分頻設計的RTL Viewer,即在FPGA中所設計的電路原理圖如圖3所示,所有的計數分頻模塊都采用同樣的基準時(shí)鐘,以保證每路時(shí)序信號能夠完全的同步。等占空比奇數分頻設計所采用的方法是:假設所需要的分頻系數為n(n為奇數),首先定義2個(gè)buffer類(lèi)型的信號端口clk1和clk2,在上升沿敏感的情況下,當從0計數到(n-3)/2時(shí),給clk1賦值1;當從(n-3)/2計數到n-1時(shí),給clk1賦值0;同樣的,在下降沿敏感的情況下,0到(n-3)/2時(shí)給clk2賦值1,(n-3)/2到n-1時(shí)給clk2賦值0。由于VHDL語(yǔ)言中process里的語(yǔ)句都是并行執行的,所以再將2路信號相或輸出便得到分頻數為n的分頻信號。為了實(shí)現多路的觸發(fā)延時(shí),和前面所述多路分頻電路一樣,在頂層文件中做個(gè)例化,取各種不同的奇數來(lái)驗證輸出結果。下圖4中clkout1~clkout8分別為2,3,4,5,6,7,8,9次分頻,可以看到所輸出的信號均為同步等占空比的分頻信號。更多路、其他分頻信號的實(shí)現可以稍加修改頂層程序即可。
實(shí)驗采用50 MHz晶振,時(shí)鐘周期為20μs。從圖4中可以看出每路分頻信號均為等占空比,由于偶數和奇數分開(kāi)進(jìn)行分頻,因此是對奇數分頻的輸出是很精確的,例如clkout6輸出的7分頻信號里剛好是7個(gè)基準時(shí)鐘周期。系統中在放電前需要設定分頻參數時(shí),只需要發(fā)送相應的指令改動(dòng)頂層文件中的n值即可。
3 觸發(fā)延遲設計
時(shí)鐘分頻電路是為了使各子系統能夠更好的做到時(shí)序同步,而觸發(fā)延遲電路是對子系統進(jìn)行定時(shí)啟動(dòng)和停止各正在運行的子系統。觸發(fā)延遲模塊主要是將輸入的原始觸發(fā)信號按延時(shí)參數進(jìn)行延時(shí)輸出,為EAST中的數據采集和其它子系統提供精確的同步觸發(fā)信號。本設計采用VHDL中移位寄存器來(lái)實(shí)現觸發(fā)延遲功能。首先定義一個(gè)類(lèi)屬參數delay_count,在頂層設計實(shí)體中可以設置延遲參數。然后在延遲程序模塊的結構體中定義一個(gè)移位寄存器trigger_r(delay_count-1 downto 0),其中delay_count代表所要延遲的位數。然后每隔一個(gè)時(shí)鐘讓寄存器左移一位,直至將原始觸發(fā)信號放到寄存器trigger_r的最后一位,最后再把它輸出,結果便是延遲了delay_count個(gè)單位時(shí)鐘的觸發(fā)信號了,該移位寄存器的功能語(yǔ)句如下所示:
4路延遲仿真結果如圖5所示。圖中每個(gè)時(shí)鐘周期為20 ns,其中,delclk1是延遲10 ns×10=0.1μs的觸發(fā)信號,delclk2是延遲0.3μs的觸發(fā)信號,delclk3和delclk4分別是延遲0.9μs和1.2 μs的延遲信號。其他任意時(shí)間的延遲都可以這樣方便的實(shí)現,延遲誤差在ns級范圍。
4 結語(yǔ)
本文所使用的時(shí)鐘分頻和觸發(fā)延遲實(shí)現簡(jiǎn)單,充分發(fā)揮了FPGA邏輯器件的高集成度、高速、高可靠性和并行處理能力的優(yōu)勢,方便每次放電時(shí)設定時(shí)鐘和觸發(fā)參數,非常適合EAST分布式中央定時(shí)同步系統中分布式節點(diǎn)的設計。在FPGA上的分頻延時(shí)設計與仿真工作已經(jīng)完成,接下來(lái)的工作就是要把設計文件下載到芯片中,使設計工作賦予實(shí)際。結合FPGA的高效性和嵌入式系統的以太網(wǎng)通信功能,便可以實(shí)現EAST分布式中央定時(shí)同步系統的時(shí)鐘同步和觸發(fā)延遲功能,滿(mǎn)足EAST分布式節點(diǎn)對各子系統的同步觸發(fā)的要求。
評論