FPGA的亞穩(wěn)態(tài)

1. 應用背景

1.1 亞穩(wěn)態(tài)發(fā)生原因

在FPGA系統(tǒng)中解幽,如果數(shù)據(jù)傳輸中觸發(fā)器的Tsu和Th不滿足,或者復位過程中復位信號的釋放相對于有效時鐘沿的恢復時間(recovery time)不滿足,就可能產生亞穩(wěn)態(tài)凉唐,此時觸發(fā)器輸出端Q在有效時鐘沿之后比較長的一段時間處于不確定的狀態(tài),在這段時間里Q端在0和1之間處于振蕩狀態(tài),而不是等于數(shù)據(jù)輸入端D的值椒拗。這段時間稱為決斷時間(resolution time)。經過resolution time之后Q端將穩(wěn)定到0或1上获黔,但是穩(wěn)定到0或者1蚀苛,是隨機的,與輸入沒有必然的關系玷氏。

1.2 亞穩(wěn)態(tài)發(fā)生場合

只要系統(tǒng)中有異步元件堵未,亞穩(wěn)態(tài)就是無法避免的,亞穩(wěn)態(tài)主要發(fā)生在異步信號檢測盏触、跨時鐘域信號傳輸以及復位電路等常用設計中渗蟹。

1.3 亞穩(wěn)態(tài)危害

由于產生亞穩(wěn)態(tài)后,寄存器Q端輸出在穩(wěn)定下來之前可能是毛刺赞辩、振蕩雌芽、固定的某一電壓值。在信號傳輸中產生亞穩(wěn)態(tài)就會導致與其相連其他數(shù)字部件將其作出不同的判斷辨嗽,有的判斷到“1”有的判斷到“0”世落,有的也進入了亞穩(wěn)態(tài),數(shù)字部件就會邏輯混亂糟需。在復位電路中產生亞穩(wěn)態(tài)可能會導致復位失敗屉佳。怎么降低亞穩(wěn)態(tài)發(fā)生的概率成了FPGA設計需要重視的一個注意事項。


2. 理論分析

2.1 信號傳輸中的亞穩(wěn)態(tài)

在同步系統(tǒng)中洲押,輸入信號總是系統(tǒng)時鐘同步忘古,能夠達到寄存器的時序要求,所以亞穩(wěn)態(tài)不會發(fā)生诅诱。亞穩(wěn)態(tài)問題通常發(fā)生在一些跨時鐘域信號傳輸以及異步信號采集上。

它們發(fā)生的原因如下:

  • (1)在跨時鐘域信號傳輸時送朱,由于源寄存器時鐘和目的寄存器時鐘相移未知娘荡,所以源寄存器數(shù)據(jù)發(fā)出數(shù)據(jù),數(shù)據(jù)可能在任何時間到達異步時鐘域的目的寄存器驶沼,所以無法保證滿足目的寄存器Tsu和Th的要求炮沐;
  • (2)在異步信號采集中,由于異步信號可以在任意時間點到達目的寄存器回怜,所以也無法保證滿足目的寄存器Tsu和Th的要求大年;當數(shù)據(jù)在目的寄存器Tsu-Th時間窗口發(fā)生變化换薄,也即當數(shù)據(jù)的建立時間或者保持時間不滿足時,就可能發(fā)生亞穩(wěn)態(tài)現(xiàn)象翔试。如圖所示轻要。


    亞穩(wěn)態(tài)產生示意圖

由圖可知,當產生亞穩(wěn)態(tài)后Tco時間(時鐘到輸出延時)后會有Tmet(決斷時間)的振蕩時間段垦缅,當振蕩結束回到穩(wěn)定狀態(tài)時為“0”或者“1”冲泥,這個是隨機的。因此壁涎,會對后續(xù)電路判斷造成影響凡恍。

2.2 復位電路的亞穩(wěn)態(tài)
2.2.1 異步復位電路

在復位電路設計中,復位信號基本都是異步的怔球,常用異步復位電路Verilog描述如下:

always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) a <= 1’b0;
       else         a <= b;
end

綜合出來復位電路模型如下圖所示:


異步復位電路模型

如下圖所示嚼酝,為復位電路復位時序圖。如果異步復位信號的撤銷時間在Trecovery(恢復時間)和Tremoval(移除時間)之內竟坛,那勢必造成亞穩(wěn)態(tài)的產生闽巩,輸出在時鐘邊沿的Tco后會產生振蕩,振蕩時間為Tmet(決斷時間)流码,最終穩(wěn)定到“0”或者“1”又官,就會可能造成復位失敗。


異步復位時序
2.2.2 同步復位電路的亞穩(wěn)態(tài)

在復位電路中漫试,由于復位信號是異步的六敬,因此,有些設計采用同步復位電路進行復位驾荣,并且絕大多數(shù)資料對于同步復位電路都認為不會發(fā)生亞穩(wěn)態(tài)外构,其實不然,同步電路也會發(fā)生亞穩(wěn)態(tài)播掷,只是幾率小于異步復位電路审编。

如下面verilog代碼對同步復位電路的描述。

always @(posedge clk)
begin
       if(!rst_n) a <= 1’b0;
       else         a <= b;
end

綜合出硬件電路如圖所示歧匈。


同步復位電路

在此垒酬,我們不討論同步復位的消耗資源問題,只討論同步復位的亞穩(wěn)態(tài)產生情況件炉。

當輸入端Din為高電平勘究,而且復位信號的撤銷時間在clk的Tsu和Th內時候,亞穩(wěn)態(tài)就隨之產生了斟冕。如下面時序圖所示口糕,當復位撤銷時間在clk的Tsu和Th內,輸入數(shù)據(jù)為“1”磕蛇,通過和輸入數(shù)據(jù)相與后的數(shù)據(jù)也在clk的Tsu和Th內景描,因此十办,勢必會造成類似異步信號采集的亞穩(wěn)態(tài)情況。


同步復位電路時序圖
2.3 亞穩(wěn)態(tài)產生概率以及串擾概率

在實際的FPGA電路設計中超棺,常常人們想的是怎么減少亞穩(wěn)態(tài)對系統(tǒng)的影響向族,很少有人考慮怎么才能減少亞穩(wěn)態(tài)發(fā)生幾率,以及亞穩(wěn)態(tài)串擾的概率問題说搅。

2.3.1 亞穩(wěn)態(tài)發(fā)生概率

由上面分析得知炸枣,系統(tǒng)亞穩(wěn)態(tài)發(fā)生的原因都是由于clk的Tsu和Th不滿足,又或者是復位信號的移除和恢復時間不滿足弄唧。常用FPGA器件的Tsu+Th約等于1ns适肠,復位移除和恢復時間相加約等于1ns。

當異步信號不是一組數(shù)據(jù)候引,或者信號量較少侯养,那就需要對異步信號進行同步處理,例如對一個異步脈沖信號進行采集澄干,只要脈沖信號變化發(fā)生在時鐘Tsu和Th窗口內逛揩,那就很可能會產生亞穩(wěn)態(tài),亞穩(wěn)態(tài)產生的概率大概為:

概率 = (建立時間 + 保持時間)/ 采集時鐘周期

由公式可以看出麸俘,隨著clk頻率的增加辩稽,亞穩(wěn)態(tài)發(fā)生的幾率是增加的。

例如从媚,為系統(tǒng)采用100M時鐘對一個外部信號進行采集逞泄,采集時鐘周期為10ns,那采集產生亞穩(wěn)態(tài)的概率為:1ns/10ns = 10%
同理采用300M時鐘對一個外部信號進行采集拜效,那產生亞穩(wěn)態(tài)的概率為:1ns/3.3ns = 30%
如果采用三相相位差為120°的時鐘對一個外部信號進行采集喷众,那產生亞穩(wěn)態(tài)的概率接近90%

所以在異步信號采集過程中,要想減少亞穩(wěn)態(tài)發(fā)生的概率:

  • (1) 降低系統(tǒng)工作時鐘紧憾,增大系統(tǒng)周期到千,亞穩(wěn)態(tài)概率就會減小赴穗;
  • (2) 采用工藝更好的FPGA憔四,也就是Tsu和Th時間較小的FPGA器件;
2.3.2 亞穩(wěn)態(tài)的串擾概率

使用異步信號進行使用的時候般眉,好的設計都會對異步信號進行同步處理加矛,同步一般采用多級D觸發(fā)器級聯(lián)處理,如圖所示煤篙,采用三級D觸發(fā)器對異步信號進行同步處理。

三級寄存器同步

這種模型大部分資料都說的是第一級寄存器產生亞穩(wěn)態(tài)后毁腿,第二級寄存器穩(wěn)定輸出概率為90%辑奈,第三極寄存器穩(wěn)定輸出的概率為99%苛茂,如果亞穩(wěn)態(tài)跟隨電路一直傳遞下去,那就會另自我修護能力較弱的系統(tǒng)直接崩潰鸠窗。接下來我們分析這種串擾的概率問題妓羊。

如圖所示為一個正常第一級寄存器發(fā)生了亞穩(wěn)態(tài),第二級稍计、第三極寄存器消除亞穩(wěn)態(tài)時序模型躁绸。


三級寄存器消除亞穩(wěn)態(tài)

由上圖可以看出,當?shù)谝粋€寄存器發(fā)生亞穩(wěn)態(tài)后臣嚣,經過Tmet的振蕩穩(wěn)定后净刮,第二級寄存器能采集到一個穩(wěn)定的值。但是為什么第二級寄存器還是可能會產生亞穩(wěn)態(tài)呢硅则?

由于振蕩時間Tmet是受到很多因素影響的淹父,所以Tmet時間有長有短,所以當Tmet時間長到大于一個采集周期后怎虫,那第二級寄存器就會采集到亞穩(wěn)態(tài)暑认。如下圖所示。


二級寄存器亞穩(wěn)態(tài)

由上圖可知大审,第二級也是一個亞穩(wěn)態(tài)蘸际,所以在這種情況下,亞穩(wěn)態(tài)產生了串擾徒扶,從第一級寄存器傳到了第二級寄存器粮彤,同樣也可能從第二級寄存器串擾到第三級寄存器。這樣會讓設計邏輯判斷出錯酷愧,產生亞穩(wěn)態(tài)傳輸驾诈,可能導致系統(tǒng)死機奔潰。

2.3.3 亞穩(wěn)態(tài)振蕩時間Tmet

亞穩(wěn)態(tài)震蕩時間Tmet關系到后級寄存器的采集穩(wěn)定問題溶浴,Tmet影響因素包括:器件的生產工藝乍迄、溫度、環(huán)境以及寄存器采集到亞穩(wěn)態(tài)離穩(wěn)定態(tài)的時刻等士败。甚至某些特定條件闯两,如干擾、輻射等都會造成Tmet增長谅将。

3. 應用分析

有亞穩(wěn)態(tài)產生漾狼,我們就要對亞穩(wěn)態(tài)進行消除,常用對亞穩(wěn)態(tài)消除有三種方式:

  • (1)對異步信號進行同步處理饥臂;
  • (2)采用FIFO對跨時鐘域數(shù)據(jù)通信進行緩沖設計逊躁;
  • (3)對復位電路采用異步復位、同步釋放方式處理隅熙。
3.1 對異步信號進行同步提取邊沿

在異步通信或者跨時鐘域通信過程中稽煤,最常用的就是對異步信號進行同步提取邊沿處理核芽。對一個異步信號通常通過雙級寄存器提取邊沿。

input          sig_nsyn;
wire           sig_nsyn_p;
reg    [1:0]   sig_nsyn_r;

always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) sig_nsyn_r <= 2’d0;
       else         sig_nsyn_r <= { sig_nsyn_r [0], sig_nsyn };
end

assign     sig_nsyn_p = sig_nsyn_r[0] & ~sig_nsyn_r[1];

這種邊沿提取方式對于一個穩(wěn)定的系統(tǒng)是不合適的酵熙,例如:當?shù)谝患壖拇嫫鞑杉絹喎€(wěn)態(tài)轧简,那勢必造成sig_nsyn_p輸出亞穩(wěn)態(tài),這樣就會對采用sig_nsyn_p的信號進行判斷的電路造成影響匾二,甚至判斷出錯誤的值哮独。

根據(jù)2.3.1小節(jié)的亞穩(wěn)態(tài)產生概率,如果在100M時種下那第一級寄存器產生亞穩(wěn)態(tài)的概率約為10%察藐,隨著系統(tǒng)采集頻率升高皮璧,那產生亞穩(wěn)態(tài)的概率也會隨之上升。因此转培,在進行異步信號跨頻提取邊沿時候恶导,一般采用多進行一級寄存器消除亞穩(wěn)態(tài),可能在系統(tǒng)穩(wěn)定性要求高的情況下浸须,采用更多級寄存器來消除亞穩(wěn)態(tài)惨寿,如下程序清單所示,即為采用4級寄存器消除亞穩(wěn)態(tài)删窒,相應的邊沿信號產生的時間就晚了兩個時鐘周期裂垦。

// 多級寄存器提取邊沿信號
input      sig_nsyn;
wire        sig_nsyn_p;
reg[3:0]   sig_nsyn_r;
always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) sig_nsyn_r <= 2’d0;
       else         sig_nsyn_r <= { sig_nsyn_r [2::0], sig_nsyn };
end
 
assign     sig_nsyn_p = sig_nsyn_r[2] & ~sig_nsyn_r[3];

其他參考:

3.2 FIFO進行異步跨頻數(shù)據(jù)處理

當數(shù)據(jù)流從一個時鐘域到另一個時鐘域的時候肌索,絕大多數(shù)情況下都采用FIFO來作為中間緩沖蕉拢,采用雙時鐘對數(shù)據(jù)緩沖,就可以避免亞穩(wěn)態(tài)的發(fā)生诚亚。

3.3 異步復位晕换,同步釋放

對于復位情況下的亞穩(wěn)態(tài),常常是由于恢復時間和移除時鐘不滿足造成的站宗,因此闸准,最常用的處理方式是采用異步復位、同步釋放梢灭。常用電路模型如所示夷家。采用第二級寄存器輸出作為全局復位信號輸出。

wire        sys_rst_n;
reg [1:0]  rst_r;
always @(posedge clk or negedge rst_n)
begin
       if(!rst_n) rst_r <= 2’d0;
       else         rst_r <= {rst_r[0], 1’b1};
end
assign     sys_rst_n = rst_r[1];

通過上面三種方式處理異步信號敏释、異步數(shù)據(jù)库快、以及異步復位可有效的提高系統(tǒng)的穩(wěn)定性,減少亞穩(wěn)態(tài)的產生钥顽。

  • 對于處理異步信號的兩種方式:
    1.電平义屏、邊沿和脈沖同步器。----------------單路控制信號的電平、邊沿或脈沖
    2.FIFO ------------------多路異步數(shù)據(jù)傳輸
  • 對于異步復位信號的處理可以采用:異步復位湿蛔,同步釋放
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末膀曾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子阳啥,更是在濱河造成了極大的恐慌,老刑警劉巖财喳,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件察迟,死亡現(xiàn)場離奇詭異,居然都是意外死亡耳高,警方通過查閱死者的電腦和手機扎瓶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泌枪,“玉大人概荷,你說我怎么就攤上這事÷笛啵” “怎么了误证?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長修壕。 經常有香客問我愈捅,道長,這世上最難降的妖魔是什么慈鸠? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任蓝谨,我火速辦了婚禮,結果婚禮上青团,老公的妹妹穿的比我還像新娘譬巫。我一直安慰自己,他們只是感情好督笆,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布芦昔。 她就那樣靜靜地躺著,像睡著了一般胖腾。 火紅的嫁衣襯著肌膚如雪烟零。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天咸作,我揣著相機與錄音锨阿,去河邊找鬼。 笑死记罚,一個胖子當著我的面吹牛墅诡,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼末早,長吁一口氣:“原來是場噩夢啊……” “哼烟馅!你這毒婦竟也來了?” 一聲冷哼從身側響起然磷,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤郑趁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姿搜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寡润,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年舅柜,在試婚紗的時候發(fā)現(xiàn)自己被綠了梭纹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡致份,死狀恐怖变抽,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情氮块,我是刑警寧澤绍载,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站雇锡,受9級特大地震影響逛钻,放射性物質發(fā)生泄漏。R本人自食惡果不足惜锰提,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一曙痘、第九天 我趴在偏房一處隱蔽的房頂上張望立肘。 院中可真熱鬧边坤,春花似錦谅年、人聲如沸茧痒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至超燃,卻和暖如春区拳,著一層夾襖步出監(jiān)牢的瞬間意乓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笆凌,地道東北人圣猎。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓乞而,卻偏偏與公主長得像送悔,于是被迫代替她去往敵國和親放祟。 傳聞我的和親對象是個殘疾皇子呻右,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內容