FPGA異步時鐘設計中的同步策略

2021-01-06 OFweek維科網

  1 引言

 

  基於FPGA的數字系統設計中大都推薦採用同步時序的設計,也就是單時鐘系統。但是實際的工程中,純粹單時鐘系統設計的情況很少,特別是設計模塊與外圍晶片的通信中,跨時鐘域的情況經常不可避免。如果對跨時鐘域帶來的亞穩態、採樣丟失、潛在邏輯錯誤等等一系列問題處理不當,將導致系統無法運行。本文總結出了幾種同步策略來解決跨時鐘域問題。

 

  2 異步設計中的亞穩態

 

  觸發器是FPGA設計中最常用的基本器件。觸發器工作過程中存在數據的建立(setup)和保持(hold)時間。對於使用上升沿觸發的觸發器來說,建立時間就是在時鐘上升沿到來之前,觸發器數據端數據保持穩定的最小時間。而保持時間是時鐘上升沿到來之後,觸發器數據端數據還應該繼續保持穩定的最小時間。我們把這段時間成為setup-hold時間(如圖1所示)。在這個時間參數內,輸入信號在時鐘的上升沿是不允許發生變化的。如果輸入信號在這段時間內發生了變化,輸出結果將是不可知的,即亞穩態 (Metastability)。

 

  

 

  一個信號在過渡到另一個時鐘域時,如果僅僅用一個觸發器將其鎖存,那麼採樣的結果將可能是亞穩態。這也就是信號在跨時鐘域時應該注意的問題。如圖2所示。

 

  

 

  信號dat經過一個鎖存器的輸出數據為a_dat。用時鐘b_clk進行採樣的時候,如果a_dat正好在b_clk的setup-hold時間內發生變化,此時b_ dat就既不是邏輯「1」,也不是邏輯「0」,而是處於中間狀態。經過一段時間之後,有可能回升到高電平,也有可能降低到低電平。輸出信號處於中間狀態到恢復為邏輯「1」或邏輯「0」的這段時間,我們稱之為亞穩態時間。

  觸發器進入亞穩態的時間可以用參數MTBF(Mean Time Between Failures)來描述,MTBF即觸發器採樣失敗的時間間隔,表示為:

  

  其中fclock表示系統時鐘頻率,fdata代表異步輸入信號的頻率,tmet代表不會引起故障的最長亞穩態時間,C1和C2分別為與器件特性相關的常數。如果MTBF很大,就認為這個設計在實際工作中是能夠正常運行的,不會因為亞穩態導致整個系統的失效。當觸發器處於亞穩態,且處於亞穩態的時間超過了一個時鐘周期,這種不確定的狀態還會影響到下一級的觸發器,最終導致連鎖反應,從而使整個系統功能失常。

 

  3 同步策略

 

  在異步設計中,完全避免亞穩態是不可能的。因此,設計的基本思路應該是:首先儘可能減少出現亞穩態的可能性,其次是儘可能減少出現亞穩態並給系統帶來危害的可能性。以下是根據實際工作總結出來的幾種同步策略。

  3.1 雙鎖存器法

  為了避免進入亞穩態,應當使參數MTBF儘可能大。通常採用的方法是雙鎖存器法,即在一個信號進入另一個時鐘域之前,將該信號用兩個鎖存器連續鎖存兩次(如圖3所示)。理論研究表明這種設計可以將出現亞穩態的機率降低到一個很小的程度,但這種方法同時帶來了對輸入信號的一級延時,需要在設計時鐘的時候加以注意。

 

  

 

  對於上面的雙鎖存器法,如果a_clk的頻率比b_clk的頻率高,將可能出現因為dat變化太快,而使b_clk無法採樣的問題。即在信號從快時鐘域向慢時鐘域過渡的時候,如果信號變化太快,慢時鐘將可能無法對該信號進行正確的採樣,所以在使用雙鎖存器法的時候,應該使原始信號保持足夠長的時間,以便另一個時鐘域的鎖存器可以正確地對其進行採樣。

相關焦點

  • 一種節能型可升級異步FIFO的FPGA實現
    現代數字系統中,異步FIFO是一種被廣泛應用於跨時鐘域進行數據傳輸的有效方式。異步FIFO主要應用於兩種不同時鐘域的數據傳輸,這意味著數據的寫入在一個時鐘域,而數據的讀出卻在另一個時鐘域,兩個時鐘完全異步[1]。
  • FPGA異步時鐘域怎麼同步,教你幾招!(附10+FPGA經典必讀書籍)
    基於FPGA的數字系統設計中大都推薦採用同步時序的設計,也就是單時鐘系統。但是實際的工程中,純粹單時鐘系統設計的情況很少,特別是設計模塊與外圍晶片的通信中,跨時鐘域的情況經常不可避免。如果對跨時鐘域帶來的亞穩態、採樣丟失、潛在邏輯錯誤等等一系列問題處理不當,將導致系統無法運行。本文總結出了幾種同步策略來解決跨時鐘域問題。
  • 淺析FPGA中異步復位同步釋放的原理
    打開APP 淺析FPGA中異步復位同步釋放的原理 發表於 2019-08-21 17:51:49 FPGA有同步復位和異步復位兩種
  • 異步fifo的設計(FPGA)
    本文首先對異步 FIFO 設計的重點難點進行分析,最後給出詳細代碼。FIFO用的少,可以作為數據緩存異步FIFO可以解決跨時鐘域的問題,在應用時需根據實際情況考慮好fifo深度即可本次要設計一個異步FIFO,深度為8,位寬也是8.
  • 基於FPGA的高速異步FIFO的設計與實現
    引言 本文引用地址:http://www.eepw.com.cn/article/149633.htm  現代集成電路晶片中,隨著設計規模的不斷擴大.一個系統中往往含有數個時鐘。
  • 同步異步復位與亞穩態可靠性設計
    異步復位相比同步復位:  1. 通常情況下(已知復位信號與時鐘的關係),最大的缺點在於異步復位導致設計變成了異步時序電路,如果復位信號出現毛刺,將會導致觸發器的誤動作,影響設計的穩定性。  2. 同時,如果復位信號與時鐘關係不確定,將會導致亞穩態情況的出現。下面先給出一個例子,然後就亞穩態進行重點討論。
  • 基於FPGA的異步LVDS過採樣的研究和實現
    在傳統的LVDS互連設計中,均採用同步採樣方式,在發送端,一組數據伴隨一個時鐘同時傳輸,在接收端,利用一個時鐘去採集數據。在Xilinx最新的7系列器件中,支持一種異步過採樣方法,當採樣的數據時鐘相近時(±100ppm)利用SelectIO資源中的ISEKDES2原語可以實現4X最高頻率為1.25Gbps的異步過採樣。
  • 基於FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計
    1 大容量異步FIFO系統方案設計    設計主要由兩塊片上FIFO、兩塊數據位寬轉換模塊、FIFO控制器、DDR2 SDRAM控制器、時鐘模塊和外部的DDR2 SDRAM構成[3]。其整體結構框圖如圖1所示。
  • 同步和異步的區別電平異步時序邏輯電路
    脈衝異步時序電路和同步時序電路有兩個共同的特點:● 電路狀態的轉換是在脈衝作用下實現的。在同步時序電路中儘管輸入信號可以是電平信號或者脈衝信號,但電路的狀態轉換受統一的時鐘脈衝控制;脈衝異步時序電路中沒有統一的時鐘脈衝,因此,規定輸入信號為脈衝信號,即控制電路狀態轉換的脈衝由電路狀態輸入端直接提供。● 電路對過去輸入信號的記憶是由觸發器實現的。
  • 手把手課堂:Xilinx FPGA設計時序約束指南
    要實現這個目的,我們可將時序約束應用於連線中——從某 FPGA 元件到 FPGA 內部或 FPGA 所在 PCB 上後續元件輸入的一條或多條路徑。  在 FPGA 設計中主要有四種類型的時序約束:PERIOD、OFFSET IN、OFFSET OUT 以及 FROM: TO(多周期)約束。
  • 雷射告警系統的異步FIFO設計
    本文採用Verilog HDL語言設計了一種異步FIFO(時鐘周期和相位相互獨立),它不僅提供數據緩衝,而且能夠實現不同時鐘域間的轉換等功能。對於異步FIFO設計主要有以下兩個難點:一是如何同步異步信號,避免觸發器亞穩態的產生;二是如何根據FIFO的指針信號正確地判斷FIFO的空滿狀態[1]。
  • 一種基於FPGA的視頻圖像畫面分割器設計
    研究的主要特色在於構建了以FPGA為核心器件的視頻畫面分割的硬體平臺,首先,將DVI視頻信號,經視頻解碼晶片轉換為數字視頻圖像信號後送入異步FIFO緩衝。然後,根據畫面分割需要進行視頻圖像數據抽取,並將抽取的視頻圖像數據按照一定的規則存儲到圖像存儲器。
  • 異步FIFO的VHDL設計
    FIFO的接口信號包括異步的寫時鐘(wr_clk)和讀時鐘(rd_clk)、與寫時鐘同步的寫有效(wren)和寫數據(wr_data)、與讀時鐘同步的讀有效(rden)和讀數據(rd_data)。為了實現正確的讀寫和避免FIFO的上溢或下溢,通常還應該給出與讀時鐘和寫時鐘同步的FIFO的空標誌(empty)和滿標誌(full)以禁止讀寫操作。 1 異步FIFO功能描述
  • 同步串行通信和異步串行通信
    下面簡單介紹一下常用的兩種基本串行通信方式:同步通信和異步通信及其數據傳送格式。  同步通信  所謂同步通信是指在約定的通信速率下,發送端和接收端的時鐘信號頻率和相信始終保持一致(同步),這就保證了通信雙方在發送和接收數據時具有完全一致的定時關係。  同步通信把許多字符組成一個信息組,或稱為信息幀,每幀的開始用同步字符來指示。
  • 聊聊工作中經常遇到的「異步」
    同步通信的特點是要求發送時鐘和接收時鐘保持嚴格的同步,異步通信的發送端和接收端可以由各自的時鐘來控制數據的發送和接收,這兩個時鐘源彼此獨立,互不同步。異步通信中的接收方並不知道數據什麼時候會到達,發送方發送的時間間隔可以不均勻,接收方是在數據的起始位和停止位的幫助下實現信息同步的。
  • FPGA設計的高速FIFO電路技術
    本文主要介紹高速FIFO電路在數據採集系統中的應用,相關電路主要有高速A/D轉換器、FPGA、SDRAM存儲器等。圖1為本方案的結構框圖。在大容量高速採集系統項目的開發過程中,FPGA作為可編程邏輯器件,設計靈活、可操作性強,是高速數字電路設計的核心器件。
  • SSD講解 同步快閃記憶體/異步快閃記憶體區別分析
    7月11日 在對SSD的講解中,很多朋友會問到同步顆粒與異步顆粒的問題,今天就來談一談有關同步與異步的區別,首先構成SSD的為主控晶片和NAND快閃記憶體,如今的SATA3主控主要為四家,去年的市場一度以Marvell和SandForce兩大主控平分天下,如今三星也發布採用自主研發主控的SATA3.0固態硬碟,OCZ也啟用了自主研發的Indilinx Everest 2 頂級主控。
  • FIFO 同步、異步以及Verilog代碼實現
    FIFO的分類根均FIFO工作的時鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘。在時鐘沿來臨時同時發生讀寫操作。異步FIFO是指讀寫時鐘不一致,讀寫時鐘是互相獨立的。FIFO設計的難點 FIFO設計的難點在於怎樣判斷FIFO的空/滿狀態。
  • 9年FPGA工作經驗,轉行了,苦海無涯……
    工作了9年的fpga,總要總結…… 其實說我的fpga經驗,也是一坨屎。三年的,用altera的c3和c4 做led控制卡。2年的用lattice的MACHXO-XO2和ECP2做了視頻和網絡光端機,3年的XILINX的SPARTAN 6 做了視頻ISP處理,現在一年的xilinx的ZYNQ做機器視覺。
  • 集成電路FPGA設計的四點建議
    雖然理論上FPGA可以支持500MHz,但在實際設計中,很難實現200MHz以上的工作頻率。FPGA的設計要點之一:時鐘樹對於FPGA,應避免異步設計,儘量採用同步設計。同步設計的第一個關鍵是時鐘樹。具體設計細節:1) 儘量使用單一時鐘;2) 如果有多個時鐘域,一定要仔細劃分他們3) 跨時鐘域的信號必須同步。