0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

亞穩(wěn)態(tài)的分析與處理

CHANBAEK ? 來(lái)源:新芯設(shè)計(jì) ? 作者:新芯設(shè)計(jì) ? 2023-06-21 14:38 ? 次閱讀

引言

??本文主要介紹了亞穩(wěn)態(tài)的分析與處理。

一、亞穩(wěn)態(tài)的相關(guān)概念

??亞穩(wěn)態(tài)(Metastability)是指 D 觸發(fā)器無(wú)法在某個(gè)規(guī)定的時(shí)間段內(nèi)(決斷時(shí)間)達(dá)到一個(gè)可確認(rèn)的狀態(tài)(0 或 1),進(jìn)而處于一個(gè)振蕩的不確定狀態(tài)。

??亞穩(wěn)態(tài)的具體表現(xiàn)是當(dāng)一個(gè) D 觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),既無(wú)法預(yù)測(cè)該單元的輸出電平(不確定是 0 還是 1),也無(wú)法預(yù)測(cè)何時(shí)輸出才能夠穩(wěn)定下來(lái)(通常情況下,一個(gè)時(shí)鐘、或者兩個(gè)時(shí)鐘的時(shí)間之內(nèi)可以返回穩(wěn)態(tài))。在這個(gè)達(dá)到穩(wěn)定之前的時(shí)間內(nèi),D 觸發(fā)器輸出一些中間級(jí)電平,或者可能處于振蕩狀態(tài),或者可能會(huì)沿著信號(hào)通道上的各個(gè) D 觸發(fā)器級(jí)聯(lián)式傳播下去,最終導(dǎo)致系統(tǒng)的崩潰。

??亞穩(wěn)態(tài)的產(chǎn)生原因是 D 觸發(fā)器的建立時(shí)間和保持時(shí)間在時(shí)鐘上升沿左右定義了一個(gè)時(shí)間窗口(亞穩(wěn)態(tài)窗口)(較新的邏輯器件會(huì)有較小的亞穩(wěn)態(tài)窗口),在這段時(shí)間內(nèi),輸入信號(hào)和時(shí)鐘都應(yīng)該保持不變。如果 D 觸發(fā)器的輸入數(shù)據(jù)在這個(gè)時(shí)間窗口內(nèi)發(fā)生變化(數(shù)據(jù)更新),那么就違反了建立時(shí)間和保持時(shí)間的要求,從而產(chǎn)生了時(shí)序違規(guī)(Timing Violation)。此時(shí) D 觸發(fā)器內(nèi)部的一個(gè)節(jié)點(diǎn)(一個(gè)內(nèi)部節(jié)點(diǎn)或者要輸出到外部節(jié)點(diǎn))可能會(huì)在一個(gè)電壓范圍內(nèi)浮動(dòng)(徘徊在一個(gè)中間電平狀態(tài)),無(wú)法確定最終是穩(wěn)定在邏輯 0 或者是邏輯 1 的狀態(tài),而在這段時(shí)間里,數(shù)據(jù)輸出端 Q 為毛刺、振蕩狀態(tài),而不是等于數(shù)據(jù)輸入端 D 的值。

??亞穩(wěn)態(tài)的隨機(jī)輸出表現(xiàn)為 D 觸發(fā)器輸出端 Q 在時(shí)鐘上升沿之后,比較長(zhǎng)的一段時(shí)間處于不確定的狀態(tài),在這段時(shí)間里 Q 端在 0 和 1 之間處于振蕩狀態(tài),而不是等于數(shù)據(jù)輸入端 D 的值,這段時(shí)間稱為決斷時(shí)間。經(jīng)過決斷時(shí)間之后 Q 端將穩(wěn)定為 0 或 1 ,但是具體是 0 或 1 卻是隨機(jī)的,與輸入沒有必然關(guān)聯(lián)。亞穩(wěn)態(tài)無(wú)法根除,但是可以減小亞穩(wěn)態(tài)發(fā)生的概率。

二、亞穩(wěn)態(tài)的解決方法

  • 降低系統(tǒng)時(shí)鐘頻率;
  • 提高時(shí)鐘信號(hào)邊沿變化速度(這個(gè)取決于晶振、器件、工藝等等);
  • 用反應(yīng)更快的 DFF;
  • 引入同步機(jī)制,防止亞穩(wěn)態(tài)的傳播;
  • 相位控制技術(shù),PLL 控制分頻與相位。

三、亞穩(wěn)態(tài)的解決案例

??對(duì)于以上的第 4 點(diǎn),有多級(jí) D 觸發(fā)器級(jí)聯(lián)處理方式(節(jié)拍),可對(duì)異步信號(hào)進(jìn)行同步處理。可以看出,前面基于時(shí)鐘域 Clk_a 的信號(hào)發(fā)送過來(lái),在基于時(shí)鐘域 Clk_b 的時(shí)鐘下進(jìn)行采樣,可能會(huì)出現(xiàn)采樣時(shí)鐘上升沿剛好出現(xiàn)在數(shù)據(jù)變化的那一刻,于是,就會(huì)產(chǎn)生亞穩(wěn)態(tài)。

??當(dāng)?shù)谝粋€(gè)寄存器發(fā)生亞穩(wěn)態(tài)后,經(jīng)過 Tmet 的振蕩穩(wěn)定后,第二級(jí)、或者第三級(jí)寄存器就能采集到一個(gè)穩(wěn)定的值,避免了亞穩(wěn)態(tài)跟隨著電路一直傳遞下去,從而最終導(dǎo)致的系統(tǒng)的崩潰。

圖片

打兩拍電路圖

圖片

打兩拍時(shí)序圖

圖片

打兩拍時(shí)序圖

四、亞穩(wěn)態(tài)的 Verilog 代碼(打兩拍、慢到快)

reg [1:0] signal_r; // 兩級(jí)緩沖器、兩級(jí)寄存器,打完兩拍之后,才可以進(jìn)行組合邏輯的操作

always @(posedge clkb or negedge rst_n)begin
    if(!rst_n)
        signal_r <= 2'b00;
    else begin
        signal_r <= {signal_r[0], signal_in};//signal_in 是基于 clka 的
    end
end

assign  signal_out = signal_r[1];

五、亞穩(wěn)態(tài)的 Verilog 代碼(打兩拍、快到慢)

module Sync_Pulse(  // clka 下生成展寬信號(hào),展寬信號(hào)同步到 clkb,再同步回 clka
 input  clka,
 input  clkb,
 input  rst_n,
 input  pulse_ina, // clka下的脈沖;
 output pulse_outb,// 上升沿檢測(cè);
 output signal_outb// clkb下的脈沖;
);

reg signal_a;
reg [2:0] signal_b_r;
reg [1:0] signal_a_r;

//-------------------------------------------------------
// 在 clka 下,生成展寬信號(hào) signal_a
always @(posedge clka or negedge rst_n)begin
    if(!rst_n)
        signal_a <= 1'b0;
    else if(pulse_ina)     // 檢測(cè)到輸入信號(hào) pulse_ina 被拉高,則拉高 signal_a
        signal_a <= 1'b1;
    else if(signal_a_r[1]) // 檢測(cè)到反饋信號(hào) signal_a_r[1] 被拉高,則拉低 signal_a
        signal_a <= 1'b0;
    else
        signal_a <= signal_a;
end
//-------------------------------------------------------
// 在 clkb 下打三拍,前兩個(gè)用于同步 signal_a,后一個(gè)用于生成脈沖信號(hào)、// 輸出信號(hào)
always @(posedge clkb or negedge rst_n)begin
    if(!rst_n)
        signal_b_r <= 3'b000;
    else
        signal_b_r <= {signal_b_r[1:0], signal_a};
end
assign pulse_outb = ~signal_b_r[2] & signal_b_r[1];// 判斷上升沿;
assign signal_outb = signal_b_r[2];
// 不需要用到跳變沿的來(lái)自同一時(shí)鐘域的輸入,沒有必要對(duì)信號(hào)進(jìn)行寄存;
// 需要用到跳變沿的來(lái)自同一時(shí)鐘域的輸入,寄存一次即可;
// 需要用到跳變沿的來(lái)自不同時(shí)鐘域的輸入,需要用到 3 個(gè)觸發(fā)器,前兩個(gè)用// 于同步,第 3 個(gè)觸發(fā)器的輸出和第 2 個(gè)的輸出經(jīng)過邏輯門來(lái)判斷跳變沿。
//-------------------------------------------------------
// 在 clka 下打兩拍,采集 signal_b_r[2],生成 signal_a_r[1] 用于反饋拉// 低 signal_a
always @(posedge clka or negedge rst_n)begin
    if(!rst_n)begin
        signal_a_r <= 2'b00;
    end
    else begin
        signal_a_r <= {signal_a_r[0], signal_b_r[2]};
    end
end

endmodule
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5270

    瀏覽量

    119646
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1701

    瀏覽量

    131185
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1992

    瀏覽量

    60976
  • 亞穩(wěn)態(tài)
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    13217
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    利用IDDR簡(jiǎn)化亞穩(wěn)態(tài)方案

    如果在具有多個(gè)時(shí)鐘的非同步系統(tǒng)中使用FPGA,或者系統(tǒng)中的時(shí)鐘頻率或相位與FPGA所使用時(shí)鐘頻率或相位不同,那么設(shè)計(jì)就會(huì)遇到亞穩(wěn)態(tài)問題。不幸的是,如果設(shè)計(jì)遇到上述情況,是沒有辦法完全解決亞穩(wěn)態(tài)
    發(fā)表于 12-29 15:17

    FPGA中亞穩(wěn)態(tài)——讓你無(wú)處可逃

    注意事項(xiàng)。2. 理論分析2.1信號(hào)傳輸中的亞穩(wěn)態(tài)在同步系統(tǒng)中,輸入信號(hào)總是系統(tǒng)時(shí)鐘同步,能夠達(dá)到寄存器的時(shí)序要求,所以亞穩(wěn)態(tài)不會(huì)發(fā)生。亞穩(wěn)態(tài)問題通常發(fā)生在一些跨時(shí)鐘域信號(hào)傳輸以及異步信
    發(fā)表于 01-11 11:49

    xilinx資料:利用IDDR簡(jiǎn)化亞穩(wěn)態(tài)

    亞穩(wěn)態(tài)事件,結(jié)合實(shí)例講解,語(yǔ)言通俗易懂,由淺入深,特別舉了多個(gè)實(shí)例以及解決方案,非常具有針對(duì)性,讓人受益匪淺,非常適合對(duì)亞穩(wěn)態(tài)方面掌握不好的中國(guó)工程師和中國(guó)的學(xué)生朋友,是關(guān)于亞穩(wěn)態(tài)方面不可多得的好資料,強(qiáng)烈推薦哦?。?![hid
    發(fā)表于 03-05 14:11

    FPGA中亞穩(wěn)態(tài)——讓你無(wú)處可逃

    導(dǎo)致復(fù)位失敗。怎么降低亞穩(wěn)態(tài)發(fā)生的概率成了FPGA設(shè)計(jì)需要重視的一個(gè)注意事項(xiàng)。2. 理論分析2.1信號(hào)傳輸中的亞穩(wěn)態(tài)在同步系統(tǒng)中,輸入信號(hào)總是系統(tǒng)時(shí)鐘同步,能夠達(dá)到寄存器的時(shí)序要求,所以亞穩(wěn)態(tài)
    發(fā)表于 04-25 15:29

    FPGA觸發(fā)器的亞穩(wěn)態(tài)認(rèn)識(shí)

    可能會(huì)出現(xiàn)非法狀態(tài)---亞穩(wěn)態(tài)。亞穩(wěn)態(tài)是一種不穩(wěn)定狀態(tài),在一定時(shí)間后, 最終返回到兩個(gè)穩(wěn)定狀態(tài)之一。亞穩(wěn)態(tài)輸出的信號(hào)是什么樣子的? 對(duì)于系統(tǒng)有什么危害? 如果降低亞穩(wěn)態(tài)帶來(lái)的危害? 這
    發(fā)表于 12-04 13:51

    fpga亞穩(wěn)態(tài)實(shí)例分析

    時(shí),引起亞穩(wěn)態(tài)事件,CNT才會(huì)出錯(cuò),當(dāng)然這種故障的概率會(huì)低的多。 圖5.“cnt”觸發(fā)器的后仿真時(shí)序違反演示 解決措施通過以上的分析,問題是由于信號(hào)跨異步時(shí)鐘域而產(chǎn)生了模糊的時(shí)序關(guān)系,布局布線工具無(wú)法也不可能
    發(fā)表于 12-04 13:55

    亞穩(wěn)態(tài)問題解析

    亞穩(wěn)態(tài)是數(shù)字電路設(shè)計(jì)中最為基礎(chǔ)和核心的理論。同步系統(tǒng)設(shè)計(jì)中的多項(xiàng)技術(shù),如synthesis,CTS,STA等都是為了避免同步系統(tǒng)產(chǎn)生亞穩(wěn)態(tài)。異步系統(tǒng)中,更容易產(chǎn)生亞穩(wěn)態(tài),因此需要對(duì)異步系統(tǒng)進(jìn)行特殊的設(shè)計(jì)
    發(fā)表于 11-01 17:45

    FPGA的亞穩(wěn)態(tài)現(xiàn)象是什么?

    說起亞穩(wěn)態(tài),首先我們先來(lái)了解一下什么叫做亞穩(wěn)態(tài)。亞穩(wěn)態(tài)現(xiàn)象:信號(hào)在無(wú)關(guān)信號(hào)或者異步時(shí)鐘域之間傳輸時(shí)導(dǎo)致數(shù)字器件失效的一種現(xiàn)象。
    發(fā)表于 09-11 11:52

    在FPGA復(fù)位電路中產(chǎn)生亞穩(wěn)態(tài)的原因

    。怎么降低亞穩(wěn)態(tài)發(fā)生的概率成了 FPGA 設(shè)計(jì)需要重視的一個(gè)注意事項(xiàng)。理論分析01 信號(hào)傳輸中的亞穩(wěn)態(tài)在同步系統(tǒng)中,輸入信號(hào)總是系統(tǒng)時(shí)鐘同步,能夠達(dá)到寄存器的時(shí)序要求,所以亞穩(wěn)態(tài)不會(huì)發(fā)
    發(fā)表于 10-19 10:03

    FPGA--中復(fù)位電路產(chǎn)生亞穩(wěn)態(tài)的原因

    FPGA 設(shè)計(jì)需要重視的一個(gè)注意事項(xiàng)。理論分析01 信號(hào)傳輸中的亞穩(wěn)態(tài)在同步系統(tǒng)中,輸入信號(hào)總是系統(tǒng)時(shí)鐘同步,能夠達(dá)到寄存器的時(shí)序要求,所以亞穩(wěn)態(tài)不會(huì)發(fā)生。亞穩(wěn)態(tài)問題通常發(fā)生在一些跨
    發(fā)表于 10-22 11:42

    關(guān)于FPGA設(shè)計(jì)的同步信號(hào)和亞穩(wěn)態(tài)分析

    的時(shí)鐘域時(shí),我們就需要仔細(xì)考慮設(shè)計(jì),以確保我們不會(huì)違反建立和保持時(shí)間并導(dǎo)致亞穩(wěn)態(tài)。當(dāng)然,無(wú)論哪種情況,我們都無(wú)法阻止亞穩(wěn)態(tài)事件的發(fā)生,但我們可以確保我們的設(shè)計(jì)不會(huì)因?yàn)?b class='flag-5'>亞穩(wěn)態(tài)事件的發(fā)生而出現(xiàn)不正確的數(shù)據(jù)
    發(fā)表于 10-18 14:29

    今日說“法”:讓FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)“無(wú)處可逃”

    的穩(wěn)定性。減少亞穩(wěn)態(tài)的產(chǎn)生。 通過上述對(duì)亞穩(wěn)態(tài)分析以及各種模式的處理,相信各位大俠應(yīng)該有所收獲,今日說\"法\"到此結(jié)束,下篇再見,歡迎各位大俠投稿,交流學(xué)習(xí),共同進(jìn)步,祝一切安好
    發(fā)表于 04-27 17:31

    亞穩(wěn)態(tài)產(chǎn)生原因、危害及消除方法

    亞穩(wěn)態(tài)問題是數(shù)字電路中很重要的問題,因?yàn)楝F(xiàn)實(shí)世界是一個(gè)異步的世界,所以亞穩(wěn)態(tài)是無(wú)法避免的,并且亞穩(wěn)態(tài)應(yīng)該也是面試??嫉目键c(diǎn)。
    的頭像 發(fā)表于 09-07 14:28 ?9239次閱讀

    什么是亞穩(wěn)態(tài)?如何克服亞穩(wěn)態(tài)?

    亞穩(wěn)態(tài)在電路設(shè)計(jì)中是常見的屬性現(xiàn)象,是指系統(tǒng)處于一種不穩(wěn)定的狀態(tài),雖然不是平衡狀態(tài),但可在短時(shí)間內(nèi)保持相對(duì)穩(wěn)定的狀態(tài)。對(duì)工程師來(lái)說,亞穩(wěn)態(tài)的存在可以帶來(lái)獨(dú)特的性質(zhì)和應(yīng)用,如非晶態(tài)材料、晶體缺陷等
    的頭像 發(fā)表于 05-18 11:03 ?4466次閱讀

    FPGA設(shè)計(jì)中的亞穩(wěn)態(tài)解析

    說起亞穩(wěn)態(tài),首先我們先來(lái)了解一下什么叫做亞穩(wěn)態(tài)。亞穩(wěn)態(tài)現(xiàn)象:信號(hào)在無(wú)關(guān)信號(hào)或者異步時(shí)鐘域之間傳輸時(shí)導(dǎo)致數(shù)字器件失效的一種現(xiàn)象。
    的頭像 發(fā)表于 09-19 15:18 ?1743次閱讀
    FPGA設(shè)計(jì)中的<b class='flag-5'>亞穩(wěn)態(tài)</b>解析