一種多通道時鐘分頻和觸發延遲電路的設計
等占空比奇數分頻設計所采用的方法是:假設所需要的分頻系數為n(n為奇數),首先定義2個buffer類型的信號端口clk1和clk2,在上升沿敏感的情況下,當從0計數到(n-3)/2時,給clk1賦值1;當從(n-3)/2計數到n-1時,給clk1賦值0;同樣的,在下降沿敏感的情況下,0到(n-3)/2時給clk2賦值1,(n-3)/2到n-1時給clk2賦值0。由于VHDL語言中process里的語句都是并行執行的,所以再將2路信號相或輸出便得到分頻數為n的分頻信號。為了實現多路的觸發延時,和前面所述多路分頻電路一樣,在頂層文件中做個例化,取各種不同的奇數來驗證輸出結果。下圖4中clkout1~clkout8分別為2,3,4,5,6,7,8,9次分頻,可以看到所輸出的信號均為同步等占空比的分頻信號。更多路、其他分頻信號的實現可以稍加修改頂層程序即可。本文引用地址:http://www.104case.com/article/190787.htm
實驗采用50 MHz晶振,時鐘周期為20μs。從圖4中可以看出每路分頻信號均為等占空比,由于偶數和奇數分開進行分頻,因此是對奇數分頻的輸出是很精確的,例如clkout6輸出的7分頻信號里剛好是7個基準時鐘周期。系統中在放電前需要設定分頻參數時,只需要發送相應的指令改動頂層文件中的n值即可。
3 觸發延遲設計
時鐘分頻電路是為了使各子系統能夠更好的做到時序同步,而觸發延遲電路是對子系統進行定時啟動和停止各正在運行的子系統。觸發延遲模塊主要是將輸入的原始觸發信號按延時參數進行延時輸出,為EAST中的數據采集和其它子系統提供精確的同步觸發信號。本設計采用VHDL中移位寄存器來實現觸發延遲功能。首先定義一個類屬參數delay_count,在頂層設計實體中可以設置延遲參數。然后在延遲程序模塊的結構體中定義一個移位寄存器trigger_r(delay_count-1 downto 0),其中delay_count代表所要延遲的位數。然后每隔一個時鐘讓寄存器左移一位,直至將原始觸發信號放到寄存器trigger_r的最后一位,最后再把它輸出,結果便是延遲了delay_count個單位時鐘的觸發信號了,該移位寄存器的功能語句如下所示:
4路延遲仿真結果如圖5所示。圖中每個時鐘周期為20 ns,其中,delclk1是延遲10 ns×10=0.1μs的觸發信號,delclk2是延遲0.3μs的觸發信號,delclk3和delclk4分別是延遲0.9μs和1.2 μs的延遲信號。其他任意時間的延遲都可以這樣方便的實現,延遲誤差在ns級范圍。
4 結語
本文所使用的時鐘分頻和觸發延遲實現簡單,充分發揮了FPGA邏輯器件的高集成度、高速、高可靠性和并行處理能力的優勢,方便每次放電時設定時鐘和觸發參數,非常適合EAST分布式中央定時同步系統中分布式節點的設計。在FPGA上的分頻延時設計與仿真工作已經完成,接下來的工作就是要把設計文件下載到芯片中,使設計工作賦予實際。結合FPGA的高效性和嵌入式系統的以太網通信功能,便可以實現EAST分布式中央定時同步系統的時鐘同步和觸發延遲功能,滿足EAST分布式節點對各子系統的同步觸發的要求。
評論