在學習亞穩態(Metastability)時,應該從亞穩態的基本概念,對電路的影響,解決方法三方面進行把握。
一、亞穩態概念
在數字器件如 FPGA 中的暫存器都定義了一個訊號時序要求,滿足了這個要求暫存器才可以正確地在輸入端獲取資料在輸出端產生資料。為了確保可靠的操作,輸入訊號在時鐘沿之前必須穩定一段時間(暫存器建立時間 Tsu,setup Time)並且在時鐘沿之後穩定一段時間(暫存器保持時間 Th,hold Time),然後暫存器輸出經過一個特定的時鐘到輸出延時(clock to output ,Tco)後有效。如果一個數據信號在翻轉中違反了一個暫存器的建立和保持時間的要求,暫存器的輸出可能就會是亞穩態。
二、亞穩態的危害
當訊號進入亞穩態時,極有可能導致整個電路電路具有無法確認的行為,最終電路可能出現致命的異常或故障。
三、亞穩態特點【1】
1.增加觸發器進入穩定狀態的時間
2.輸出毛刺、振盪、或中間電平
3.亞穩態返回到哪一個穩定態是不可預測的,而且和輸入資料無關
四、亞穩態的解決【2】
【注】電路中的亞穩態是難以避免的,只能降低其發生機率,提高系統的平均無故障時間(Mean Time Between Failures)。
a.在同步系統中,利用時序分析工具可以有效執行時序約束,並對電路的時序約束條件進行分析。在同步系統中保證正確的時序約束關係,即可解決亞穩態問題。
b.亞穩態常發生於單位元長電平訊號的跨時鐘域傳播中,對應的解決方法可以透過兩級DFF同步器(如圖所示),對應的Verilog HDL 程式碼如下
c.多位元控制訊號跨時鐘域傳輸時,需要引入額外的狀態指示訊號。並行資料匯流排跨時鐘域處理通常採用FIFO或者雙口RAM來。【此處不做細講】
d.非同步復位引起的亞穩態,在復位電路時採用非同步復位同步撤離方式消除亞穩態。
部分程式碼:
reg reset,reg1;
always @(posedge clk or negedge rst)
begin
if(~rst)beginreg1<=0;
reset<=0;
end
else begin
reg1<=1"b1;
reset<=reg1;
【參考資料】
【1】http://blog.chinaaet.com/justlxy/p/5100052018【DB/OL】
【2】.樊繼明等 編著 FPGA深度解析【M】
在學習亞穩態(Metastability)時,應該從亞穩態的基本概念,對電路的影響,解決方法三方面進行把握。
一、亞穩態概念
在數字器件如 FPGA 中的暫存器都定義了一個訊號時序要求,滿足了這個要求暫存器才可以正確地在輸入端獲取資料在輸出端產生資料。為了確保可靠的操作,輸入訊號在時鐘沿之前必須穩定一段時間(暫存器建立時間 Tsu,setup Time)並且在時鐘沿之後穩定一段時間(暫存器保持時間 Th,hold Time),然後暫存器輸出經過一個特定的時鐘到輸出延時(clock to output ,Tco)後有效。如果一個數據信號在翻轉中違反了一個暫存器的建立和保持時間的要求,暫存器的輸出可能就會是亞穩態。
二、亞穩態的危害
當訊號進入亞穩態時,極有可能導致整個電路電路具有無法確認的行為,最終電路可能出現致命的異常或故障。
三、亞穩態特點【1】
1.增加觸發器進入穩定狀態的時間
2.輸出毛刺、振盪、或中間電平
3.亞穩態返回到哪一個穩定態是不可預測的,而且和輸入資料無關
四、亞穩態的解決【2】
【注】電路中的亞穩態是難以避免的,只能降低其發生機率,提高系統的平均無故障時間(Mean Time Between Failures)。
a.在同步系統中,利用時序分析工具可以有效執行時序約束,並對電路的時序約束條件進行分析。在同步系統中保證正確的時序約束關係,即可解決亞穩態問題。
b.亞穩態常發生於單位元長電平訊號的跨時鐘域傳播中,對應的解決方法可以透過兩級DFF同步器(如圖所示),對應的Verilog HDL 程式碼如下
c.多位元控制訊號跨時鐘域傳輸時,需要引入額外的狀態指示訊號。並行資料匯流排跨時鐘域處理通常採用FIFO或者雙口RAM來。【此處不做細講】
d.非同步復位引起的亞穩態,在復位電路時採用非同步復位同步撤離方式消除亞穩態。
部分程式碼:
reg reset,reg1;
always @(posedge clk or negedge rst)
begin
if(~rst)beginreg1<=0;
reset<=0;
end
else begin
reg1<=1"b1;
reset<=reg1;
end
end
【參考資料】
【1】http://blog.chinaaet.com/justlxy/p/5100052018【DB/OL】
【2】.樊繼明等 編著 FPGA深度解析【M】