亞穩態
在異步系統中,由于數據和時鐘的關系不是固定的,因此會出現違反建立和保持時間的現象。此時會出現輸出介于兩個有效態的中間電平并且無法確定停留在中間態的時間,在經過一定的延遲后才能進行正常轉換。這種處于中間的狀態稱為亞穩態。
亞穩態的產生
當違背建立,保持時間時,亞穩態就會出現,在以下情況下,可能出現亞穩態。
- 異步輸入信號
- 時序違例
- 信號在不同時鐘域下跨時鐘域工作
- 競爭冒險
本文主要講解信號在不同時鐘域下的工作,即異步時鐘的同步處理。
跨時鐘域的信號同步
- 兩級同步
- 握手操作
- 異步FIFO或異步雙口RAM
控制信號的傳輸
- 兩級同步
-
多級同步觸發器是單bit數據的常見同步方式。方法是在跨時鐘域的信號上加上兩級或多級同步觸發器。
-
兩級同步器可以極大概率避免亞穩態的產生。有兩個明顯的缺點:
1) 輸入信號必須保證寬度大于或等于1個采樣時鐘周期(輸入信號加約束);
2) 不可避免的增加了電路的整體延時(兩級同步器為2個采樣時鐘周期)。
-
多級同步器
兩級同步器
兩級同步器Verilog表示為:
1always@(posedge dest_clk) begin
2 dest_data1_in <= src_data_out;
3 dest_data2_in <= dest_data1_in;
4end
數據信號的傳輸
-
握手信號方法
使用握手方式是最古老的和可靠的不同時鐘域的數據傳輸方式。
下圖是由兩個時鐘域分割成的兩個單獨的模塊。
跨時鐘域模塊
使用握手信號xack和yreq,模塊X將數據發送給模塊Y。下面是使用握手信號傳輸數據的例子。
1)模塊X將數據放到數據總線上并發出xreq(請求)信號,表示有效數據已經放到數據總線上。
2)把xreq信號打兩級同步到yclk時鐘域。
3)模塊Y在接收到xreq同步后的信號后,接收數據總線上的信號。
4)模塊Y接收數據的同時發出yack(響應)信號,表示已經接收到了數據。
5)模塊X接收到yack后打兩級同步到xclk時鐘域。
6)模塊X在接收到yack同步后的信號后,使xreq無效,表示此次數據傳輸結束。
7)模塊Y在發現xreq無效后,使yack無效。
8)模塊X發現yack無效后可以進行下一筆數據傳輸。
優點 :不論xclk和yclk的頻率如何,都可以進行數據傳輸。缺點 :完成數據傳輸的延遲比使用異步FIFO傳輸大得多。
-
RAM
+關注
關注
8文章
1369瀏覽量
115006 -
觸發器
+關注
關注
14文章
2003瀏覽量
61347 -
FIFO存儲
+關注
關注
0文章
103瀏覽量
6037 -
時鐘域
+關注
關注
0文章
52瀏覽量
9574 -
異步時鐘
+關注
關注
0文章
17瀏覽量
9425
發布評論請先 登錄
相關推薦
評論