1. 程式人生 > 其它 >非同步訊號與同步電路互動、亞穩態問題

非同步訊號與同步電路互動、亞穩態問題

  在數字積體電路設計中,通常採用的是同步時鐘的設計方法。在一個理想的全域性時鐘的控制下,只要電路的各個環節都實現了時序收斂,整個電路就可以可靠地實現預定的功能。但從實際應用的角度出發,一塊複雜的SoC晶片上只用一個全域性同步的時鐘來設計是不經濟的,此外,一塊晶片的輸出訊號可能是來自另一塊時鐘完全不同步的晶片的輸出。

  如果強行讓所有的裝置或模組都工作在同一時鐘頻率下,為了滿足最慢裝置或模組的速度,而使系統不得不工作在相對較低的頻率下,顯然降低了系統性能。因此,在SoC設計中,必然會面臨處理來自不同時時鐘域的資料的問題,稱為非同步訊號與同步電路的互動問題。

  亞穩態現象:

  通常,把兩個彼此不同頻率的時鐘或兩個彼此上升沿不對齊的時鐘稱作彼此非同步時鐘,非同步時鐘域的訊號之間不可避免地會發生訊號間的互動,一般把要傳輸到一個不同於它所在時鐘域(目標時鐘域)的訊號稱作非同步輸入訊號(或非同步訊號)。

  如圖所示,訊號adat在aclk時鐘域,相對於bclk是非同步輸入訊號,aclk和bclk稱為非同步時鐘,兩個觸發器工作在不同時鐘域下。由圖可知,非同步訊號adat的下降沿正好發生在bclk時鐘的上升沿附件,這樣就違反了觸發器的建立時間或保持時間,從而第二個觸發器鎖定了一個不確定的值,這個值可以是1,也可以是0,更有可能是一個物理上的不定態x—無效電平的狀態。這種違反了觸發器保持或建立時間且使觸發器鎖存到一個無效電平的狀態的現象稱作亞穩態現象。非同步訊號直接接入觸發器輸入端的時候不但可能傳輸一個錯誤的邏輯訊號(訊號實際值是1,但是觸發器採集到的是0,或反之),更有可能使觸發器進入亞穩態並將其傳播下去,造成嚴重的系統錯誤,同時還會造成非常大的系統功耗損失。

  不難發現,只要在採到無效電平後等待足夠長的時間,處在亞穩態的觸發器就會回到一個有效的電平狀態上去。而這個延時通常通過在取樣非同步訊號的觸發器後再加入一級觸發器來實現,也就是說,非同步訊號只有在經過目的時鐘域的兩級觸發器取樣後,才會對目的時鐘域的後續電路起作用。這種由雙觸發器構成的非同步訊號取樣邏輯被稱作同步器。

  如圖所示,這圖好像有點問題。雖然第一級觸發器(badt1)在取樣非同步訊號的時候可能進入亞穩態,但是經過一個時鐘週期的延時,當第二級觸發器(bdat2)取樣其輸出訊號時,它已經回到一個有效電平的穩定狀態,使第二季觸發器不會再出現亞穩態,從而防止了亞穩態在整個電路中的傳播。完全解決亞穩態的方法是不存在的。觸發器可能正好取樣到輸入訊號的變化中點,從此點回到穩定電平的狀態需要等待的時間理論上為無窮大。然而實際電路中極小的噪聲或環境的變化都會使觸發器脫離亞穩態,所以只要滿足足夠大小的等待時間,亞穩態出現的概率就會減小到在工程中可以忽略或接收的程度。如果系統的工作頻率過高,系統中發生亞穩態的可能性就會增大,此時兩級觸發器構成的同步器不足以解決穩態問題,必須通過增加同步器的級數進而延長等待時間的方法來解決,帶來的代價是非同步訊號的互動會變更慢。

  亞穩態問題是非同步時鐘訊號互動的物理(固有)問題。非同步訊號之間的訊號互動可以歸納為兩種型別—控制訊號和資料訊號。非同步控制訊號的處理又分為快時鐘同步慢時鐘域下的非同步控制訊號、慢時鐘同步快時鐘域下的非同步控制訊號;非同步時鐘域的資料同步依靠握手機制和非同步FIFO來實現。具體實現待續。

摘抄自--《SoC設計方法與實現》