哪個(gè)網(wǎng)站賣自己做的手工藝品北京百度關(guān)鍵詞排名
文章目錄
- 前言
- 一、為什么需要復(fù)位呢?
- 二、同步復(fù)位
- 1. 同步復(fù)位定義
- 2. 同步復(fù)位的實(shí)現(xiàn)
- 3. 同步復(fù)位的優(yōu)點(diǎn)和缺點(diǎn)
- 同步復(fù)位優(yōu)點(diǎn)
- 同步復(fù)位缺點(diǎn)
- 三、異步復(fù)位
- 1. 異步復(fù)位定義
- 2. 異步復(fù)位的實(shí)現(xiàn)
- 3. 異步復(fù)位的優(yōu)點(diǎn)和缺點(diǎn)
- 異步復(fù)位優(yōu)點(diǎn)
- 異步復(fù)位缺點(diǎn)
- 四、異步復(fù)位同步釋放
- 1. recovery time和removal time
- 2. 異步復(fù)位同步釋放的含義
- 3. 異步復(fù)位同步釋放的實(shí)現(xiàn)
- 4. 異步復(fù)位同步釋放優(yōu)點(diǎn)
- 總結(jié)
前言
復(fù)位信號(hào)在數(shù)字電路里面的重要性僅次于時(shí)鐘信號(hào)。對(duì)一個(gè)芯片來(lái)說(shuō),復(fù)位的主要目的是使芯片電路進(jìn)入一個(gè)已知的,確定的狀態(tài),主要是觸發(fā)器進(jìn)入確定的狀態(tài)。在一般情況下,芯片中的每個(gè)觸發(fā)器都應(yīng)該是可復(fù)位的。
一、為什么需要復(fù)位呢?
- 復(fù)位可以使電路從確定的初始狀態(tài)開始運(yùn)行
比如上電復(fù)位,上電的時(shí)候,為了避免上電后進(jìn)入隨機(jī)狀態(tài)而使電路紊亂,這個(gè)時(shí)候就需要上電復(fù)位。時(shí)序電路是一個(gè)雙穩(wěn)態(tài)電路,上電之后必須要有一個(gè)初始態(tài),才可以正常運(yùn)行。組合邏輯電路,沒(méi)有存儲(chǔ)功能,不需要復(fù)位信號(hào)。 - 復(fù)位可以使電路從錯(cuò)誤狀態(tài)回到可以控制的確定狀態(tài)
如果電路發(fā)生了異常,比如狀態(tài)不正常,中斷異常,firmware程序跑飛,這個(gè)時(shí)候就可以對(duì)電路進(jìn)行復(fù)位,讓它從錯(cuò)誤的狀態(tài)回到一個(gè)正常的狀態(tài)。 - 電路仿真時(shí)需要電路具有已知的初始值
在仿真的時(shí)候,信號(hào)在初始狀態(tài)是未知狀態(tài)(也就是所謂的x,不過(guò)對(duì)信號(hào)初始化之后的這種情況除外,因?yàn)榉抡娴臅r(shí)候?qū)π盘?hào)初始化就使信號(hào)有了初始值,這就不是x了)。仿真的時(shí)候由于初始狀態(tài)為未知態(tài),控制電路一開始就陷入了未知態(tài)。仿真跟實(shí)際電路不同,仿真是“串行”的,仿真時(shí)控制信號(hào)的初始不定態(tài)會(huì)導(dǎo)致后續(xù)的控制信號(hào)結(jié)果都是不定態(tài),也就是說(shuō),初始的不定態(tài)對(duì)控制通道是致命的。
二、同步復(fù)位
1. 同步復(fù)位定義
同步復(fù)位的前提是,復(fù)位信號(hào)只會(huì)在時(shí)鐘的有效邊沿去影響或者復(fù)位flip-flop。Reset可以作為組合邏輯的一部分送給FF的D端。這種情況下,reset只能放在if條件下。
2. 同步復(fù)位的實(shí)現(xiàn)
一個(gè)簡(jiǎn)單的同步復(fù)位的D觸發(fā)器代碼如下(示例):
module sync_reset_dff_module (input clk,input rst_n, // Synchronous resetinput d,output reg q);always @ (posedge clk)if (!rst_n) q <= 1'b0;else q <= d;
endmodule
3. 同步復(fù)位的優(yōu)點(diǎn)和缺點(diǎn)
同步復(fù)位優(yōu)點(diǎn)
1). 同步復(fù)位會(huì)綜合成更小的觸發(fā)器,特別當(dāng)reset生成邏輯電路作為觸發(fā)器D輸入,但是這種情況下組合邏輯電路的數(shù)量變多,所以總的門電路節(jié)省不是那么顯著;
2). 同步復(fù)位確保電路100%是同步的, 有利于靜態(tài)時(shí)序分析工具的分析;
3). 抗干擾性高,同步復(fù)位確保復(fù)位只發(fā)生在時(shí)鐘有效邊沿,對(duì)小的復(fù)位毛刺來(lái)說(shuō),時(shí)鐘就像濾波器。
同步復(fù)位缺點(diǎn)
1). 大多數(shù)邏輯器件的目標(biāo)庫(kù)內(nèi)的DFF都只有異步復(fù)位端口,使用同步復(fù)位時(shí),綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端插入組合邏輯,占用更多的邏輯資源;
2). 同步復(fù)位依賴于時(shí)鐘,如果電路中的時(shí)鐘信號(hào)出現(xiàn)問(wèn)題,無(wú)法完成復(fù)位;
3). 對(duì)復(fù)位信號(hào)的脈沖寬度有要求,必須大于指定的時(shí)鐘周期,由于線路上的延遲,可能需要多個(gè)時(shí)鐘周期的復(fù)位脈沖寬度,且很難保證復(fù)位信號(hào)到達(dá)各個(gè)寄存器的時(shí)序。
三、異步復(fù)位
1. 異步復(fù)位定義
異步復(fù)位電路即復(fù)位信號(hào)不隨著系統(tǒng)時(shí)鐘的邊沿觸發(fā)起作用。擁有異步復(fù)位的寄存器在設(shè)計(jì)過(guò)程中就多了一個(gè)引腳(復(fù)位引腳)。
2. 異步復(fù)位的實(shí)現(xiàn)
一個(gè)簡(jiǎn)單的異步復(fù)位的D觸發(fā)器代碼如下(示例):
module async_reset_dff_module (input clk,input rst_n, // Synchronous resetinput d,output reg q);always @ (posedge clk or negedge rst_n)if (!rst_n) q <= 1'b0;else q <= d;
endmodule
3. 異步復(fù)位的優(yōu)點(diǎn)和缺點(diǎn)
異步復(fù)位優(yōu)點(diǎn)
1). 由于大多數(shù)的廠商標(biāo)準(zhǔn)單元庫(kù)內(nèi)的觸發(fā)器都有異步復(fù)位端口,那么就可以保證數(shù)據(jù)路徑是干凈的,不會(huì)像同步復(fù)位一樣插入額外的邏輯,可以節(jié)約邏輯資源;
2). 復(fù)位信號(hào)不依賴于時(shí)鐘。
異步復(fù)位缺點(diǎn)
1). 復(fù)位信號(hào)容易受到毛刺的影響;
2). 當(dāng)復(fù)位結(jié)束時(shí)刻恰在亞穩(wěn)態(tài)窗口內(nèi)時(shí),無(wú)法決定現(xiàn)在的復(fù)位狀態(tài)是1還是0,會(huì)導(dǎo)致亞穩(wěn)態(tài)。
四、異步復(fù)位同步釋放
1. recovery time和removal time
在同步電路中,輸入數(shù)據(jù)需要與時(shí)鐘滿足setup time和hold time才能進(jìn)行數(shù)據(jù)的正常傳輸,防止亞穩(wěn)態(tài)。同樣的道理,對(duì)于一個(gè)異步復(fù)位寄存器來(lái)說(shuō),異步復(fù)位信號(hào)同樣需要和時(shí)鐘滿足recovery time和removal time 才能有效進(jìn)行復(fù)位操作和復(fù)位釋放操作,防止輸出亞穩(wěn)態(tài)。
recovery time(恢復(fù)時(shí)間):撤銷復(fù)位時(shí),恢復(fù)到非復(fù)位狀態(tài)的電平必須在時(shí)鐘有效沿來(lái)臨之前的一段時(shí)間到來(lái),才能保證時(shí)鐘能有效恢復(fù)到非復(fù)位狀態(tài),此段時(shí)間為recovery time即復(fù)位釋放與下一個(gè)時(shí)鐘有效邊沿之間需要間隔的最小時(shí)間,類似于同步時(shí)鐘的setup time。
removal time (去除時(shí)間):復(fù)位時(shí),在時(shí)鐘有效沿來(lái)臨之后復(fù)位信號(hào)還需要保持復(fù)位狀態(tài)的一段時(shí)間為去除時(shí)間removal time即復(fù)位釋放與上一個(gè)時(shí)鐘有效邊沿之間需要間隔的最小時(shí)間。類似同步時(shí)鐘hold time。
異步復(fù)位信號(hào)一般會(huì)持續(xù)相對(duì)較長(zhǎng)的時(shí)間,保證寄存器能復(fù)位完成。但是由于復(fù)位信號(hào)是異步的,我們不知道它會(huì)在什么時(shí)刻被釋放。如果異步復(fù)位信號(hào)撤銷時(shí),不滿足recovery time和removal time時(shí),可能會(huì)造成亞穩(wěn)態(tài),因?yàn)閺?fù)位信號(hào)還沒(méi)完全取消時(shí)觸發(fā)器發(fā)現(xiàn)自己該采樣了,最終導(dǎo)致輸出有可能是復(fù)位值0也有可能是采樣到的D端的值,輸出不確定。
另外,并不是復(fù)位信號(hào)撤銷時(shí)才可能出現(xiàn)亞穩(wěn)態(tài),復(fù)位信號(hào)一開始出現(xiàn)時(shí),同樣可能會(huì)存在亞穩(wěn)態(tài),只不過(guò)異步復(fù)位信號(hào)持續(xù)時(shí)間長(zhǎng),即使第一個(gè)周期出現(xiàn)了亞穩(wěn)態(tài)(即第一個(gè)周期復(fù)位未成功),下一個(gè)時(shí)鐘周期也不會(huì)再出現(xiàn)亞穩(wěn)態(tài)了。如果復(fù)位信號(hào)的變化只持續(xù)剛剛一個(gè)時(shí)鐘周期,那么復(fù)位信號(hào)開始和撤銷時(shí)都可能會(huì)出現(xiàn)亞穩(wěn)態(tài)。
2. 異步復(fù)位同步釋放的含義
所謂異步復(fù)位同步釋放(Synchronized Asynchronous Reset),就是在復(fù)位信號(hào)到來(lái)的時(shí)候不受時(shí)鐘信號(hào)的同步,而是在復(fù)位信號(hào)釋放的時(shí)候受到時(shí)鐘信號(hào)的同步。
電路目的:防止復(fù)位信號(hào)撤除時(shí)產(chǎn)生亞穩(wěn)態(tài)事件。
異步復(fù)位:顯而易見(jiàn),reset_n異步復(fù)位后,rst_n將拉低,即實(shí)現(xiàn)異步復(fù)位。
同步釋放:這個(gè)是關(guān)鍵,看如何實(shí)現(xiàn)同步釋放,即當(dāng)復(fù)位信號(hào)reset_n撤除時(shí),由于雙緩沖電路(雙寄存器)的作用,rst_n復(fù)位信號(hào)不會(huì)隨著reset_n的撤除而撤除。
3. 異步復(fù)位同步釋放的實(shí)現(xiàn)
一個(gè)簡(jiǎn)單的異步信號(hào)同步化代碼如下(示例):
//Synchronized Asynchronous Reset
module sync_async_reset (input clk,input rst_async_n,output reg rst_sync_n
);
reg rst_s1;
always @(posedge clk or negedge rst_async_n)
beginif(!rst_async_n) beginrst_s1 <= 1'b0;rst_sync_n <= 1'b0;endelse beginrst_s1 <= 1'b1;rst_sync_n <= rst_s1;end
end
endmodule
當(dāng)異步復(fù)位信號(hào)撤銷時(shí),用來(lái)同步的第二個(gè)寄存器輸入的數(shù)據(jù)仍然是0,因此第二個(gè)寄存器是不會(huì)出現(xiàn)亞穩(wěn)態(tài)的。第一個(gè)寄存器雖然可能出現(xiàn)亞穩(wěn)態(tài),即使其出現(xiàn)了亞穩(wěn)態(tài),這個(gè)亞穩(wěn)態(tài)還需要通過(guò)第二個(gè)寄存器,這時(shí)第二個(gè)寄存器就起到了打拍的作用。也就是說(shuō),第二級(jí)的亞穩(wěn)態(tài)只可能是上一級(jí)寄存器傳播過(guò)來(lái)的,但是這個(gè)亞穩(wěn)態(tài)經(jīng)過(guò)第二級(jí)寄存器后,其大概率已經(jīng)穩(wěn)定下來(lái)了,就算穩(wěn)定下來(lái)不為1,也就相當(dāng)與復(fù)位信號(hào)多持續(xù)了一個(gè)周期而已。因此我們可以看出,使用異步復(fù)位同步釋放時(shí),異步復(fù)位撤銷后需要額外等待一個(gè)時(shí)鐘周期。
4. 異步復(fù)位同步釋放優(yōu)點(diǎn)
異步復(fù)位同步釋放既解決了同步復(fù)位的資源消耗問(wèn)題,又解決了異步復(fù)位的亞穩(wěn)態(tài)問(wèn)題,其根本思想是異步信號(hào)同步化。
總結(jié)
不同的復(fù)位方式有各自的優(yōu)缺點(diǎn)。但是在工程中,一般都用異步復(fù)位的方法,最好是異步復(fù)位同步釋放的方法。