引言
??本文主要是提供了 ASIC 設(shè)計(jì)中關(guān)于復(fù)位技術(shù)相關(guān)的概念和設(shè)計(jì)。
一、同步復(fù)位 Sync
??當(dāng)時(shí)鐘上升沿檢測(cè)到復(fù)位信號(hào)時(shí),執(zhí)行復(fù)位操作(有效的時(shí)鐘沿是前提)。
always @( posedge clk )begin
if(!rst_n)
b <= 0;
else
b <= a;
end
同步復(fù)位的 RTL 電路圖
優(yōu)點(diǎn)
- 有利于仿真器的仿真;
- 可以使所設(shè)計(jì)的系統(tǒng)成為 100% 的同步時(shí)序電路,有利于時(shí)序分析,而且可綜合出較高的 Fmax;
- 由于只在時(shí)鐘有效電平到來(lái)時(shí)才有效,所以可以濾除高于時(shí)鐘頻率的復(fù)位毛刺。
缺點(diǎn)
- 復(fù)位信號(hào)的有效時(shí)長(zhǎng)必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位任務(wù),同時(shí)還要考慮諸如 Clock Skew、組合邏輯路徑延時(shí)、復(fù)位延時(shí)等因素;
- 由于大多數(shù)的邏輯器件的目標(biāo)庫(kù)內(nèi)的 DFF 都只有異步復(fù)位 SR 端口,所以,倘若采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口上插入組合邏輯,這樣就會(huì)一方面額外增加 FPGA 內(nèi)部的邏輯資源,另一方面也增加了相應(yīng)的組合邏輯門時(shí)延。
二、異步復(fù)位 ASync
??無(wú)論時(shí)鐘上升沿是否到來(lái),只要復(fù)位信號(hào)有效,就執(zhí)行復(fù)位操作。
always @( posedge clk or negedge rst_n )begin
if(!rst_n)
b <= 0;
else
b <= a;
end
異步復(fù)位的 RTL 電路圖
優(yōu)點(diǎn)
- 大多數(shù)目標(biāo)器件庫(kù)的 DFF 都有異步復(fù)位 SR 端口,直接使用的話,就不需要額外的組合邏輯,從而節(jié)省資源;
- 設(shè)計(jì)相對(duì)簡(jiǎn)單;
- 異步復(fù)位信號(hào)識(shí)別方便(電路在任何情況下都能復(fù)位而不管是否有時(shí)鐘出現(xiàn))。
缺點(diǎn)
- 最大的問(wèn)題在于它屬于異步邏輯,問(wèn)題出現(xiàn)在復(fù)位釋放時(shí),而不是有效時(shí),如果復(fù)位釋放接近時(shí)鐘有效沿,則觸發(fā)器的輸出可能進(jìn)入亞穩(wěn)態(tài)(此時(shí) clk 檢測(cè)到的 rst_n 的狀態(tài)就會(huì)是一個(gè)亞穩(wěn)態(tài),即是 0 是 1 是不確定的),從而導(dǎo)致復(fù)位的失??;
- 可能因?yàn)樵肼暬蛘呙淘斐商摷購(gòu)?fù)位信號(hào)(比如以前的游戲機(jī)玩到一半突然復(fù)位)(注意:時(shí)鐘端口、清零和置位端口對(duì)毛刺信號(hào)十分敏感,任何一點(diǎn)毛刺都可能會(huì)使系統(tǒng)出錯(cuò),因此判斷邏輯電路中是否存在冒險(xiǎn)以及如何避免冒險(xiǎn)是設(shè)計(jì)人員必須要考慮的問(wèn)題);
- 靜態(tài)時(shí)序分析比較困難;
- 對(duì)于 DFT 設(shè)計(jì),如果復(fù)位信號(hào)不是直接來(lái)自于 I/O 引腳,在 DFT 掃描和測(cè)試時(shí),復(fù)位信號(hào)必須被禁止,所以還要消耗額外的同步電路。
三、異步復(fù)位、同步釋放
??推薦異步復(fù)位、同步釋放的方式,并且復(fù)位信號(hào)為低電平有效:異步復(fù)位、同步釋放指的是復(fù)位信號(hào)的到來(lái)與撤除都與 clk 無(wú)關(guān),但是復(fù)位信號(hào)的撤除是在下一個(gè) clk 到來(lái)之后才執(zhí)行,也就是復(fù)位信號(hào) rst_sync_n 由高到低時(shí)實(shí)現(xiàn)異步復(fù)位。電路的目的是防止復(fù)位信號(hào)的撤除時(shí)可能產(chǎn)生的亞穩(wěn)態(tài)。
珍貴的手繪圖
??對(duì)于同步釋放,這個(gè)是關(guān)鍵,即當(dāng)復(fù)位信號(hào) rst_async_n 撤除時(shí)(由低到高),由于雙緩沖電路(雙寄存器)的作用,rst_sync_n 不會(huì)隨著 rst_async_n 的撤除而撤除。假設(shè) rst_async_n 撤除時(shí)發(fā)生在 clk 上升沿,如果不加此電路則可能發(fā)生亞穩(wěn)態(tài)事件。
??但是,加上此電路之后,假設(shè)第一級(jí) D 觸發(fā)器 clk 上升沿時(shí) rst_async_n 正好撤除,(第一個(gè) DFF 此時(shí)是出于亞穩(wěn)態(tài)的,假設(shè)此時(shí)識(shí)別到高電平;若是識(shí)別到低電平,則增加一個(gè) Delay)則 DFF1 輸出高電平,此時(shí)第二級(jí)觸發(fā)器也會(huì)更新輸出,但是輸出值為前一級(jí)觸發(fā)器 clk 來(lái)之前時(shí)的 Q1 輸出狀態(tài)。顯然,Q1 之前為低電平,所以第二級(jí)觸發(fā)器輸出保持復(fù)位低電平,直到下一個(gè) clk 來(lái)之后,才隨著變?yōu)楦唠娖剑赐结尫拧?/p>
always @(posedge clk or negedge rst_n)begin
if(!rst_n)
rst_r <= 2'b00;
else
rst_r <= {rst_r[0],1'b1};
end
assign sys_rst_n = rst_r[1];
always @(posedge clk or negedge sys_rst_n)begin
if(!sys_rst_n)
b <= 1'b0;
else
b <= a;
end
異步復(fù)位、同步釋放的 RTL 電路圖
-
asic
+關(guān)注
關(guān)注
34文章
1183瀏覽量
120225 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1714瀏覽量
131275 -
SYNC
+關(guān)注
關(guān)注
1文章
15瀏覽量
11416 -
同步復(fù)位
+關(guān)注
關(guān)注
0文章
26瀏覽量
10694 -
異步復(fù)位
+關(guān)注
關(guān)注
0文章
46瀏覽量
13297
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論