新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于VHDL的時鐘分頻和觸發延遲電路在FPGA上的實現

        基于VHDL的時鐘分頻和觸發延遲電路在FPGA上的實現

        作者: 時間:2017-06-05 來源:網絡 收藏

        0 引言

        EAST(先進實驗超導托卡馬克)是我國自行設計研制的國際首個全超導托卡馬克裝置。是EAST托卡馬克裝置的重要組成部分。EAST中央定時與同步系統為分布廣泛的數據采集系統和其它子系統提供精確的方波時鐘信號,以及精確的同步觸發信號,控制各子系統按照預設的時序流程工作。該系統主要由EAST可視化中央控制臺,時序信號光纖網,核心模塊,若干個分布式節點以及外圍隔離驅動設備組成,見圖1。核心模塊負責向各分布式節點發送同步的基準系統時鐘和系統觸發信號。分布式節點根據設置對核心模塊發送的基準時鐘信號進行分頻,得到所需要頻率的時鐘發送到子系統。通過設置的模件參數可以得到子系統所需要的觸發時刻。

        目前,進行分頻電路設計主要采用定時器來實現,8254計數器所支持的最高時鐘頻率有限(最高為10 MHz)以及誤差較大也不是理想的實現方案。可編程邏輯器件FPGA是當今最熱門的邏輯開發器件之一,它在工作最高頻率、集成度、時序控制能力上具有無與倫比的優勢。因此選用FPGA芯片來實現時鐘分頻和電路是當前的主流。在使用FPGA做時鐘分頻設計時,文獻設計計數器的時候用做了分頻器的設計,但是只討論了偶數的分頻;文獻在運動控制系統中使用Verilog描述語言在FPGA環境下對通用整數分頻器進行了設計,但在通用任意整數分頻器中分頻系數的設置稍顯復雜,不利于分布式中央定時系統,并且主要討論的都是單路輸出;文獻在FPGA上實現了奇數和偶數的通用分頻器,將半整數,奇數,偶數放在一個模N計數器里進行預置,這樣分頻系數的設定比較方便,但輸出奇數分頻時鐘信號時的誤差過大,達不到分布式定時同步系統的精度。而對輸出方面,之前這方面的研究主要采用的是模擬電路實現的方法,不易進行遠程控制和更改。
        本文首先介紹的基本組成結構,隨后具體給出了時鐘分頻和觸發延遲電路的邏輯設計。利用FPGA芯片來實現對輸入基準時鐘信號進行多通道任意整數倍的等占空比分頻輸出,同時對觸發脈沖進行任意時刻延遲的多路輸出。本設計主要采用語言來設計,利用QuartusⅡ9.0對設計進行了仿真分析,結果表明該設計滿足分布式定時觸發系統的分頻延遲功能。

        本文引用地址:http://www.104case.com/article/201706/349081.htm

        1 系統組成

        EAST定時與同步系統主要由一個核心模塊和多個分布式節點構成,核心模塊給分布式節點提供一道基準時鐘信號和一道基準觸發信號,各分布式節點負責對基準時鐘和觸發進行分頻和延時處理,為子系統系統提供它所需要的時鐘和觸發。總體系統結構如圖1所示。分布式節點是該中央定時觸發系統的核心,而時鐘分頻和觸發延遲也是分布式節點最重要的任務。分布式節點主要由微處理器和FPGA組成,外圍由以太網絡端口,光電轉化模塊等等組成。微處理器接收核心模塊發送的分頻系數和延遲參數,FPGA主要根據微處理器傳輸來的參數對輸入的基準時鐘進行相應的分頻,并對核心模塊發送的主觸發信號進行延遲輸出。時鐘同步系統分布式節點結構如圖2所示。


        2 時鐘分頻設計

        對基準時鐘的整數分頻主要分為等占空比偶數分頻和等占空比奇數分頻,它們的分頻原理也是不同的,必須要分別對待。對于單通道偶數分頻,設計比較簡單,之前已經有很多這方面的研究,在此不再贅述。在本設計中,由于EAST定時觸發系統需要多路分頻信號,可以在程序設計的時候采用里面的類屬參量和元件例化語句,類屬參量Generic是一種端口界面常數,常以一種說明的形式放在實體或塊結構體前的說明部分。類屬參數映射的綜合處理較簡單,所有的參數配置都通過Generic map來傳遞,子模塊內部只需要根據上層模塊指定的參數進行綜合即可。整數時鐘分頻電路需要在一個程序中可以同時對基準時鐘進行奇數和偶數分頻,所以在頂層文件中需要聲明元件的語句格式如下:

        時鐘分頻設計的RTL Viewer,即在FPGA中所設計的電路原理圖如圖3所示,所有的計數分頻模塊都采用同樣的基準時鐘,以保證每路時序信號能夠完全的同步。等占空比奇數分頻設計所采用的方法是:假設所需要的分頻系數為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次分頻,可以看到所輸出的信號均為同步等占空比的分頻信號。更多路、其他分頻信號的實現可以稍加修改頂層程序即可。

        實驗采用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分布式節點對各子系統的同步觸發的要求。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 小金县| 台北县| 密山市| 白水县| 伊金霍洛旗| 河南省| 太和县| 霍城县| 方正县| 茶陵县| 科尔| 兴和县| 永修县| 潮州市| 天峨县| 县级市| 竹北市| 宜兰市| 曲靖市| 宁夏| 手游| 米脂县| 乌什县| 开远市| 陆川县| 闽侯县| 阜新市| 谢通门县| 库伦旗| 泾源县| 遂昌县| 安多县| 北安市| 雅安市| 唐海县| 绥阳县| 高碑店市| 永顺县| 阳朔县| 芦山县| 眉山市|