那曲檬骨新材料有限公司

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

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

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

復(fù)位信號(hào)是什么意思?復(fù)位信號(hào)的作用?詳解Xilinx FPGA復(fù)位信號(hào)那些事

sanyue7758 ? 來(lái)源:FPGA and ICer ? 作者:FPGA and ICer ? 2023-07-27 09:48 ? 次閱讀

復(fù)位的用途

復(fù)位信號(hào)幾乎是除了時(shí)鐘信號(hào)外最常用的信號(hào)了,幾乎所有數(shù)字系統(tǒng)在上電的時(shí)候都會(huì)進(jìn)行復(fù)位,這樣才能保持設(shè)計(jì)者確定該系統(tǒng)的系統(tǒng)模式的狀態(tài),以便于更好的進(jìn)行電子設(shè)計(jì),并且在任意時(shí)刻,確保使用者總能對(duì)電路系統(tǒng)進(jìn)行復(fù)位,使電路從初始的狀態(tài)開始工作。

總結(jié)下來(lái)用途如下:

「使電路在仿真時(shí)具有可知的初始值」 :通常在仿真時(shí)未給入初試狀態(tài)又未經(jīng)復(fù)位,那么這段代碼的初始值是不定態(tài),會(huì)經(jīng)常會(huì)出現(xiàn)X或者Z,也就未知態(tài)。

「使實(shí)際電路在復(fù)位后從確定的初始狀態(tài)開始運(yùn)行」 :在數(shù)字系統(tǒng)中,很多電路都要求從給定的初始狀態(tài)上開始運(yùn)行,避免電路工作于不可預(yù)知的狀態(tài),并因此導(dǎo)致異常或者致命的故障。

「使電路在陷入異常狀態(tài)時(shí)能通過復(fù)位回到可控的初始狀態(tài)」 :通常一個(gè)設(shè)計(jì)者無(wú)法保證所設(shè)計(jì)的數(shù)字邏輯電路在任何情況下都不會(huì)發(fā)生異常或者出現(xiàn)故障,假如電路無(wú)法自己返回正常狀態(tài),可以使用復(fù)位電路,強(qiáng)制使電路從初始狀態(tài)開始工作。

盡管復(fù)位極為重要,但是復(fù)位電路在設(shè)計(jì)中是最常忽視的方面。一個(gè)不正確設(shè)計(jì)的復(fù)位本身可以表現(xiàn)為一個(gè)不可重復(fù)的邏輯錯(cuò)誤。

復(fù)位電平的選擇

有關(guān)復(fù)位電平,實(shí)際上是與FPGA芯片內(nèi)部的觸發(fā)器結(jié)構(gòu)有關(guān),在之前的博文有提到過。作為xilinx 7系列觸發(fā)器,其 R 端口既可用作同步置位/復(fù)位端口,也可用作異步預(yù)設(shè)/清除端口,但無(wú)論哪種方式,都是「高電平有效」Altera的是「低電平有效」

f4e7cb28-2bc3-11ee-a368-dac502259ad0.png

不同公司的觸發(fā)器結(jié)構(gòu)

如果RTL代碼采用了低電平有效的復(fù)位模式,綜合器將在復(fù)位信號(hào)驅(qū)動(dòng)寄存器SR控制端之前的插入一個(gè)反相器(interver)。你必須使用一個(gè)查找表(look up table)來(lái)實(shí)現(xiàn)反向器,以利用LUT的輸入端口。低電平有效的控制信號(hào)帶來(lái)的額外的邏輯可能拉長(zhǎng)了執(zhí)行時(shí)間(runtime),將導(dǎo)致更低的FPGA資源利用率,也將影響時(shí)序和功耗。

同步復(fù)位

同步低復(fù)位

同步低復(fù)位的代碼如下:

modulereset(
inputclk,
inputrst,
input[1:0]in,
outputreg[1:0]out
);
always@(posedgeclk)begin
if(rst=='b0)
out<=?'d0?;
????????else?
????????????out?<=?in?;
????end
endmodule

在使用vivado RTL 分析對(duì)應(yīng)的電路結(jié)構(gòu)如下:

f4fe54b0-2bc3-11ee-a368-dac502259ad0.png

RTL電路結(jié)構(gòu)

使用vivado綜合后結(jié)構(gòu)如下:

f51f408a-2bc3-11ee-a368-dac502259ad0.png

綜合后的實(shí)際電路

由于xilinx的器件結(jié)構(gòu)中的觸發(fā)器為高復(fù)位,所以會(huì)引入LUT實(shí)現(xiàn)復(fù)位信號(hào)的功能,引入額外的邏輯資源。

同步高復(fù)位

同步高復(fù)位的代碼如下:

modulereset(
inputclk,
inputrst,
input[1:0]in,
outputreg[1:0]out
);
always@(posedgeclk)begin
if(rst=='b1)
out<=?'d0?;
????????else?
????????????out?<=?in?;
????end
endmodule

在使用vivado RTL 分析對(duì)應(yīng)的電路結(jié)構(gòu)如下:

f53c35d2-2bc3-11ee-a368-dac502259ad0.png

RTL電路結(jié)構(gòu)

使用vivado綜合后結(jié)構(gòu)如下:

f56e9928-2bc3-11ee-a368-dac502259ad0.png

綜合后的實(shí)際電路

由于xilinx的器件結(jié)構(gòu)中的觸發(fā)器為高復(fù)位,所以在使用同步高復(fù)位時(shí),直接會(huì)將復(fù)位信號(hào)連接到復(fù)位輸入端。

同步復(fù)位的優(yōu)缺點(diǎn)

「同步復(fù)位的優(yōu)點(diǎn):」

有利于仿真器仿真;

設(shè)計(jì)的系統(tǒng)全部是同步時(shí)序電路,有利于時(shí)序分析,可綜合出更高性能的電路;

由于同步復(fù)位信號(hào)是被時(shí)鐘啟動(dòng)(Launch)和鎖存(Latch),而啟動(dòng)和鎖存的時(shí)鐘彼此同步,所以復(fù)位信號(hào)的到達(dá)時(shí)間(Arrival Time)和所需時(shí)間(Required Time)就能很輕易地確定并進(jìn)行正確的時(shí)序裕度(slack)分析。

可以濾除高于時(shí)鐘頻率的復(fù)位毛刺,保證系統(tǒng)更加穩(wěn)定;

對(duì)于邏輯器件內(nèi)部的資源存在同步復(fù)位的端口時(shí),使用同步復(fù)位時(shí)會(huì)節(jié)省FPGA的邏輯資源。

「同步復(fù)位的缺點(diǎn):」

對(duì)于邏輯器件的目標(biāo)庫(kù)內(nèi)的 DFF 都只有異步復(fù)位端口的情況,如果采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會(huì)一方面額外增加 FPGA 內(nèi)部的邏輯資源,另一 方面也增加了相應(yīng)的組合邏輯門時(shí)延,因此較難綜合出更高性能的電路。

復(fù)位信號(hào)的有效時(shí)長(zhǎng)必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位。同時(shí)還要考慮諸多其他因素(諸如時(shí)鐘偏移、組合邏輯路徑延時(shí)、復(fù)位延時(shí)等),所以復(fù)位信號(hào)有時(shí)需要脈沖展寬,用以保證時(shí)鐘有效期間有足夠的復(fù)位寬度(此處可當(dāng)做單信號(hào)的跨時(shí)鐘處理,類似單信號(hào)的跨時(shí)鐘處理方式)。

f5950ee6-2bc3-11ee-a368-dac502259ad0.png

復(fù)位丟失示例

上圖為快時(shí)鐘的同步信號(hào)傳輸給慢時(shí)鐘后造成復(fù)位丟失,具體解決方法可參考單信號(hào)的快時(shí)鐘域轉(zhuǎn)慢時(shí)鐘域的跨時(shí)鐘處理方法。

某些情況不太適用同步復(fù)位

在一些情況中,在出于節(jié)省功耗的目的而使用門控時(shí)鐘時(shí),就可能出現(xiàn)問題。在復(fù)位信號(hào)發(fā)出時(shí),時(shí)鐘可能關(guān)閉。在這種情況下只能使用異步復(fù)位,并在時(shí)鐘恢復(fù)前移除復(fù)位信號(hào)。

又如不同的芯片在復(fù)位的時(shí)候不能把自身的總線接口重置成三態(tài)或者輸入狀態(tài),而是總線上有多個(gè)芯片同時(shí)通過接口將數(shù)據(jù)輸出到總線,總線上將出現(xiàn)電平?jīng)_突,嚴(yán)重時(shí)可能導(dǎo)致接口損壞。因此,在這種時(shí)候,同步復(fù)位就不太適用。

f5b36558-2bc3-11ee-a368-dac502259ad0.png

門控時(shí)鐘導(dǎo)致同步復(fù)位丟失

如果 ASIC/FPGA有內(nèi)部三態(tài)總線,需要時(shí)鐘來(lái)產(chǎn)生復(fù)位。為了阻止芯片上電時(shí)內(nèi)部三態(tài)總線出現(xiàn)競(jìng)爭(zhēng),芯片應(yīng)當(dāng)有下圖所示的異步上電復(fù)位。

f5ca50b0-2bc3-11ee-a368-dac502259ad0.png

輸出使能的異步復(fù)位

當(dāng)然也可以使用同步復(fù)位信號(hào),但是也必須使用復(fù)位信號(hào)直接撤銷三態(tài)使能。

f5e365d2-2bc3-11ee-a368-dac502259ad0.png

用于輸出使能的同步復(fù)位

這種同步技術(shù)的優(yōu)點(diǎn)是能簡(jiǎn)化復(fù)位–高阻這一路徑的時(shí)序分析。

異步復(fù)位(完全異步)

異步低復(fù)位

異步低復(fù)位的代碼如下:

modulereset_async(
inputclk,
inputrst_n,
input[1:0]in,
outputreg[1:0]out
);
always@(posedgeclkornegedgerst_n)begin
if(rst_n=='b0)
out<=?'d0?;
????????else?
????????????out?<=?in?;
????end
endmodule

在使用vivado RTL 分析對(duì)應(yīng)的電路結(jié)構(gòu)如下:

f5f2d8be-2bc3-11ee-a368-dac502259ad0.png

RTL電路結(jié)構(gòu)

使用vivado綜合后結(jié)構(gòu)如下:

f614b72c-2bc3-11ee-a368-dac502259ad0.png

由于xilinx的器件結(jié)構(gòu)中的觸發(fā)器為高復(fù)位,所以會(huì)引入LUT實(shí)現(xiàn)復(fù)位信號(hào)的功能,引入額外的邏輯資源。

異步高復(fù)位

異步高復(fù)位的代碼如下:

modulereset_async(
inputclk,
inputrst,
input[1:0]in,
outputreg[1:0]out
);
always@(posedgeclkorposedgerst)begin
if(rst=='b1)
out<=?'d0?;
????????else?
????????????out?<=?in?;
????end
endmodule

在使用vivado RTL 分析對(duì)應(yīng)的電路結(jié)構(gòu)如下:

f6370fde-2bc3-11ee-a368-dac502259ad0.png

使用vivado綜合后結(jié)構(gòu)如下:

f64c310c-2bc3-11ee-a368-dac502259ad0.png

這里綜合后也沒有引入新的組合邏輯資源,在該層次看并沒有什么影響,「但是Xilinx FPGA綜合規(guī)則中:有和沒有異步復(fù)位的寄存器不能被包裝在一個(gè)Slice,不同異步復(fù)位的寄存器不能被包裝在一個(gè)Slice,這就導(dǎo)致在Slice中的資源無(wú)法充分利用從而造成資源浪費(fèi)。」

異步復(fù)位的優(yōu)缺點(diǎn)

「異步復(fù)位電路的優(yōu)點(diǎn):」

大多數(shù)目標(biāo)器件庫(kù)的DFF都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。

設(shè)計(jì)相對(duì)簡(jiǎn)單,異步復(fù)位信號(hào)識(shí)別方便,而且可以很方便的使用FPGA的全局復(fù)位端口GSR。

「異步復(fù)位電路的缺點(diǎn):」

所有異步信號(hào)的缺點(diǎn)也同時(shí)等效是異步復(fù)位信號(hào)的問題,復(fù)位信號(hào)從本質(zhì)講就是一個(gè)頻繁使用的控制信號(hào),因此可以總結(jié)其缺點(diǎn)如下。

復(fù)位信號(hào)容易受到毛刺的影響;

因?yàn)槭钱惒竭壿嫞瑹o(wú)法避免地存在亞穩(wěn)態(tài)問題。

靜態(tài)定時(shí)分析比較困難,靜態(tài)時(shí)序分析一般是針對(duì)同步設(shè)計(jì)的,都是基于時(shí)鐘周期來(lái)分析時(shí)序的。

對(duì)于 DFT(可測(cè)性設(shè)計(jì))設(shè)計(jì),如果復(fù)位信號(hào)不是直接來(lái)自于 I/O 引腳,在 DFT 掃描 和測(cè)試時(shí),復(fù)位信號(hào)必須被禁止,因此需要額外的同步電路。

復(fù)位信號(hào)的“建立時(shí)間”與“保持時(shí)間”

由于復(fù)位信號(hào)實(shí)現(xiàn)了對(duì)D觸發(fā)器的控制(置位信號(hào)同理),所以但是本質(zhì)上也是實(shí)現(xiàn)了控制相關(guān)物理電路進(jìn)行開關(guān)實(shí)現(xiàn)置位或者復(fù)位,由于異步復(fù)位與系統(tǒng)時(shí)鐘毫無(wú)關(guān)系,不考慮其余因素時(shí),異步復(fù)位可以在任意時(shí)刻撤除。但復(fù)位信號(hào)恰好在時(shí)鐘沿附近時(shí),復(fù)位(置位)信號(hào)同樣也要滿足相應(yīng)的“亞穩(wěn)態(tài)窗口”的不能移除的需求,滿足寄存器的“建立時(shí)間”與“保持時(shí)間”。

「恢復(fù)時(shí)間:」 如果復(fù)位信號(hào)在時(shí)鐘有效沿之前撤消,并且離時(shí)鐘有效沿非常接近,再加上時(shí)鐘有效沿到達(dá)各個(gè)觸發(fā)器有一定時(shí)間差(clock skew),那么極有可能一部份觸發(fā)器仍處于復(fù)位狀態(tài)中而對(duì)時(shí)鐘沿沒有響應(yīng),而一部份觸發(fā)器對(duì)時(shí)鐘有響應(yīng),那么從這一個(gè)時(shí)鐘開始,電路的狀態(tài)已經(jīng)出錯(cuò)了。

「移除時(shí)間:」 如果復(fù)位信號(hào)在時(shí)鐘有效沿之后撤消,并且離時(shí)鐘有效沿非常接近,再加上時(shí)鐘有效沿到達(dá)各個(gè)觸發(fā)器有一定時(shí)間差(clock skew),那么極有可能一部份觸發(fā)器從復(fù)位狀態(tài)中恢復(fù)并響應(yīng)了時(shí)鐘,而一部份觸發(fā)器沒有響應(yīng),那么從這一個(gè)時(shí)鐘開始,電路的狀態(tài)已經(jīng)出錯(cuò)了。

下圖中異步復(fù)位信號(hào)有足夠的恢復(fù)時(shí)間,異步復(fù)位能正常釋放。

f66e2ca8-2bc3-11ee-a368-dac502259ad0.png

當(dāng)異步復(fù)位信號(hào)在時(shí)鐘上升沿附近撤除時(shí),導(dǎo)致觸發(fā)器的輸出為亞穩(wěn)態(tài),亞穩(wěn)態(tài)前文已經(jīng)討論過了,亞穩(wěn)態(tài)在電路中的危害是顯而易見的。

f68b80dc-2bc3-11ee-a368-dac502259ad0.png

恢復(fù)時(shí)間不足造成的亞穩(wěn)態(tài)問題

如果你想讓某個(gè)時(shí)鐘沿起作用,那么你就應(yīng)該在 “恢復(fù)時(shí)間” 之前是異步控制信號(hào)變無(wú)效;如果你想讓某個(gè)時(shí)鐘沿不起作用,那么你就應(yīng)該在 “去除時(shí)間” 過后使控制信號(hào)變無(wú)效。

我覺得這里其實(shí)本質(zhì)上就是要避開觸發(fā)器的建立時(shí)間和保持時(shí)間,避免在亞穩(wěn)態(tài)窗口附近寄存器的雙鎖存結(jié)構(gòu)和復(fù)位結(jié)構(gòu)同時(shí)作用,這將會(huì)引入亞穩(wěn)態(tài)。

異步復(fù)位同步釋放

異步確立和同步釋放的復(fù)位電路通常會(huì)提供比完全異步或完全同步復(fù)位更可靠的復(fù)位。

電路結(jié)構(gòu)如下圖所示:

f6c16c2e-2bc3-11ee-a368-dac502259ad0.png

異步復(fù)位同步釋放電路結(jié)構(gòu)

根據(jù)結(jié)構(gòu)可寫出代碼如下:

modulereset_async_and_free_sync(
inputclk,
inputrst_n,
input[1:0]in,
outputreg[1:0]out
);
regrst_n_dly0,rst_n_dly1;

always@(posedgeclkornegedgerst_n)begin
if(rst_n=='b0)begin
rst_n_dly0<=?'d0?;
????????????rst_n_dly1?<=?'d0?;
????????end
????????else?begin
????????????rst_n_dly0?<=?'d1?;
????????????rst_n_dly1?<=?rst_n_dly0;
????????end
????end
????wire?rstn?=?rst_n_dly1;
????always?@?(posedge?clk?or?negedge?rstn)?begin
????????if?(rstn?==?'b0)
????????????out?<=?'d0?;
????????else?
????????????out?<=?in?;
????end
endmodule

在使用vivado對(duì)應(yīng)的電路結(jié)構(gòu)如下:

f6f8e2d0-2bc3-11ee-a368-dac502259ad0.png

使用vivado綜合后結(jié)構(gòu)如下:

f71bad92-2bc3-11ee-a368-dac502259ad0.png

異步復(fù)位、同步釋放優(yōu)點(diǎn)

異步復(fù)位、同步釋放具有異步復(fù)位和同步的優(yōu)點(diǎn),主要是:

快速?gòu)?fù)位。只要復(fù)位信號(hào)一有效,電路就處于復(fù)位狀態(tài)。

有效捕捉復(fù)位。即使是短脈寬復(fù)位也不會(huì)丟失。

有明確的復(fù)位撤銷行為。復(fù)位的撤離是同步信號(hào),因此有良好的撤離時(shí)序和足夠的恢復(fù)時(shí)間。

過濾復(fù)位毛刺

異步復(fù)位對(duì)毛刺很敏感,這就意味著任何滿足觸發(fā)器最小復(fù)位脈沖寬度的輸入都能引起觸發(fā)器復(fù)位。如果復(fù)位線受到毛刺的影響,這就真的成為問題了。在設(shè)計(jì)中,可能沒有足夠高頻的采樣時(shí)鐘來(lái)檢測(cè)復(fù)位上的小毛刺;下面將會(huì)介紹過濾掉毛刺的方法。該方法需要一個(gè)數(shù)字延時(shí)來(lái)過濾毛刺。復(fù)位輸入引腳也必須是施密特觸發(fā)器引腳才有助于毛刺過濾。下圖顯示了復(fù)位毛刺濾波器的電路和時(shí)序圖。

f74508ea-2bc3-11ee-a368-dac502259ad0.png

復(fù)位毛刺過濾

為了加人延時(shí),一些生產(chǎn)商提供了用于延遲且能夠手動(dòng)實(shí)例化的宏單元。如果沒有這樣的宏單元,設(shè)計(jì)人員就需要在優(yōu)化后的已綜合設(shè)計(jì)中手動(dòng)加入延時(shí)。第二種方法需要?jiǎng)?chuàng)建一個(gè)包含較慢緩沖器的模塊,再多次實(shí)例化該模塊以達(dá)到所期望的延遲。基于這種思想,可以產(chǎn)生許多變種的解決辦法。

由于該方法使用了延遲鏈,因此一個(gè)缺點(diǎn)是所產(chǎn)生的延遲會(huì)隨著溫度、電壓和工藝而變化。必須注意確保延遲在所有PVT環(huán)境下都能滿足設(shè)計(jì)要求。

不“復(fù)位” 可以嗎?

如果針對(duì)Xilinx FPGA的設(shè)計(jì)應(yīng)用,我覺得不進(jìn)行 “復(fù)位” 是可以的,不必要的數(shù)據(jù)信號(hào)可以不進(jìn)行“復(fù)位”,這樣可以節(jié)省資源,在xilinx的白皮書中也是這樣建議的:

當(dāng)一個(gè)Xilinx的FPGA芯片被重新配置時(shí),每一個(gè)單元都將被初始化。在某種意義上講,這是一個(gè)上電之后的“終極的”全局復(fù)位操作,因?yàn)樗粌H僅是對(duì)所有的觸發(fā)器進(jìn)行了復(fù)位操作,還初始化了所有的RAM單元。隨著Xilinx FPGA芯片內(nèi)部的嵌入式RAM資源越來(lái)越多,這種“終極的”全局復(fù)位操作越來(lái)越有意義。對(duì)所有的RAM單元進(jìn)行預(yù)定義,在軟件仿真和實(shí)際操作中都是非常有幫助的,因?yàn)檫@樣避免了在上電時(shí)采用復(fù)雜的啟動(dòng)順序來(lái)清除存儲(chǔ)單元內(nèi)容的操作。

通常可以將設(shè)計(jì)分為兩部分,控制路徑和數(shù)據(jù)路徑

部分?jǐn)?shù)據(jù)路徑的初始值并不重要,此時(shí)的重置是不必要的。

只在設(shè)計(jì)中需要獲得有效幀信號(hào)或設(shè)計(jì)回到已知良好狀態(tài)的部分使用外部復(fù)位。

雖然在這里提到了不進(jìn)行復(fù)位,但是不得不注意的是Xilinx的FPGA在上電后會(huì)對(duì)芯片內(nèi)的資源進(jìn)行復(fù)位,所以即使相關(guān)寄存器不進(jìn)行復(fù)位,在芯片上電后也是能知道恢復(fù)到了芯片設(shè)置的默認(rèn)狀態(tài)的。在xilinx平臺(tái),部分復(fù)位設(shè)計(jì)實(shí)際是沒有多大意義的。

無(wú)復(fù)位電路

編寫代碼使得輸入做一級(jí)寄存處理,然后再將寄存輸出的結(jié)果輸出給out寄存器,此時(shí)對(duì)out這個(gè)寄存器不做復(fù)位處理。編寫代碼如下:

modulenoreset(
inputclk,
inputrst_n,
input[1:0]in,
outputreg[1:0]out
);

reg[1:0]in_r;
always@(posedgeclk)begin
if(rst_n=='b0)begin
in_r<=?'d0?;
????????????//out?<=?'d0?;
????????end
????????else?begin
????????????in_r?<=?in;
????????????out?<=?in_r;
????????end
????end

endmodule

在使用vivado RTL分析后對(duì)應(yīng)的電路結(jié)構(gòu)如下,從結(jié)構(gòu)圖中可以看到,第二級(jí)的輸出寄存器沒有添加相關(guān)復(fù)位信號(hào)控制邏輯資源。

f75e0750-2bc3-11ee-a368-dac502259ad0.png

使用vivado綜合后結(jié)構(gòu)如下,對(duì)輸出寄存器沒有設(shè)置復(fù)位,在綜合分析時(shí)會(huì)自動(dòng)設(shè)置復(fù)位信號(hào)為無(wú)效。

f785a080-2bc3-11ee-a368-dac502259ad0.png

復(fù)位網(wǎng)絡(luò)

在一個(gè)設(shè)計(jì)中,無(wú)論是同步復(fù)位還是異步復(fù)位,其扇出數(shù)量往往僅次于時(shí)鐘網(wǎng)絡(luò)。復(fù)位網(wǎng)絡(luò)通常會(huì)被布線在全局網(wǎng)絡(luò)上,在布線的時(shí)候需要控制各個(gè)路徑的時(shí)鐘偏移保持在大致相等的水平上,使復(fù)位能“同時(shí)”撤離。

下圖為一個(gè)樹狀全局復(fù)位網(wǎng)絡(luò)。

f7b5c99a-2bc3-11ee-a368-dac502259ad0.png

樹狀全局復(fù)位網(wǎng)絡(luò)

當(dāng)復(fù)位信號(hào)驅(qū)動(dòng)的模塊和信號(hào)過多時(shí),會(huì)導(dǎo)致扇出過大,從而使得布局布線變得困難。下圖為一個(gè)全局復(fù)位網(wǎng)絡(luò)的例子,從圖中可以看出,復(fù)位信號(hào)扇出很大,資源分布散亂,從而給布局、布線帶來(lái)很大的困難,增加了EDA的編譯負(fù)擔(dān)。

f7df5382-2bc3-11ee-a368-dac502259ad0.png

復(fù)位網(wǎng)絡(luò)扇出過大

考慮下圖的復(fù)位方案也會(huì)存在,由于rst_ol和rst_o2在撤離時(shí)可能存在一個(gè)時(shí)鐘周期的偏差,因此,在實(shí)際電路系統(tǒng)中,該方式有可能導(dǎo)致復(fù)位失敗,與前文提到的亞穩(wěn)態(tài)的多個(gè)同步器道理相同。

f81833f0-2bc3-11ee-a368-dac502259ad0.png

多個(gè)復(fù)位同步器網(wǎng)絡(luò)

比較合理的設(shè)計(jì)如下圖:

f84db7a0-2bc3-11ee-a368-dac502259ad0.png

模塊化復(fù)位同步網(wǎng)絡(luò)

圖中的復(fù)位電路首先用兩級(jí)寄存器對(duì)復(fù)位進(jìn)行同步,得到根復(fù)位信號(hào)后再對(duì)其用復(fù)位同步器進(jìn)行分發(fā)。由于同步后的根復(fù)位信號(hào)不會(huì)帶來(lái)亞穩(wěn)態(tài)的問題,因此,在分發(fā)根復(fù)位信號(hào)時(shí)再次使用兩級(jí)寄存器對(duì)根復(fù)位信號(hào)進(jìn)行同步和分發(fā)是很安全的。

根復(fù)位信號(hào)經(jīng)過復(fù)位同步器分發(fā)后,各個(gè)子復(fù)位網(wǎng)絡(luò)是各自獨(dú)立的,并且扇出的數(shù)量比根復(fù)位網(wǎng)絡(luò)要小很多。在布局布線的時(shí)候,這些子復(fù)位網(wǎng)絡(luò)需要一一進(jìn)行約束和時(shí)序分析。一般情況下,在設(shè)計(jì)的頂層代碼中劃分專門的復(fù)位模塊,由該模塊統(tǒng)一處理電路所需要的所有復(fù)位信號(hào),使復(fù)位的方案更加清晰安全。在設(shè)計(jì)中,將復(fù)位電路的處理分散到各個(gè)底層模塊是不安全的,有可能導(dǎo)致不同模塊間的復(fù)位行為不一致,使電路因復(fù)位失敗而工作在異常的狀態(tài)上。

f8837dfe-2bc3-11ee-a368-dac502259ad0.png

模塊化復(fù)位網(wǎng)絡(luò)

上圖為使用模塊化的復(fù)位的布局布線的結(jié)果,可以看到,復(fù)位信號(hào)經(jīng)過模塊化的處理后,降低了扇出,更有利于提高電路的工作性能。

多時(shí)鐘域的復(fù)位

在多時(shí)鐘域電路中,合理的復(fù)位處理方式應(yīng)如下圖所示。各個(gè)時(shí)鐘域的復(fù)位信號(hào)由各自的時(shí)鐘進(jìn)行同步。在每個(gè)時(shí)鐘域內(nèi),電路總是能被正確地復(fù)位。

f8ccfeca-2bc3-11ee-a368-dac502259ad0.png

小結(jié)

本文分析了復(fù)位的用途,通過同步復(fù)位和異步復(fù)位兩個(gè)示例表示了在Xilinx FPGA中的不同復(fù)位的編寫方法綜合出的實(shí)際電路,指導(dǎo)我們?cè)趯?shí)際應(yīng)用中去合理的進(jìn)行復(fù)位設(shè)計(jì),同時(shí)引入了恢復(fù)時(shí)間和去除時(shí)間的概念,進(jìn)一步解釋了在復(fù)位時(shí),復(fù)位信號(hào)和時(shí)鐘信號(hào)應(yīng)該遵守的相關(guān)約定,進(jìn)而結(jié)合異步復(fù)位的優(yōu)點(diǎn)和同步復(fù)位的優(yōu)點(diǎn),介紹了異步復(fù)位同步釋放的復(fù)位設(shè)計(jì)方法,在最后介紹了合理的復(fù)位網(wǎng)絡(luò)設(shè)計(jì)與多時(shí)鐘域的復(fù)位設(shè)計(jì)。根據(jù)本文的分析,可以小結(jié)一下關(guān)于復(fù)位的相關(guān)操作的注意事項(xiàng)以及復(fù)位設(shè)計(jì)的小技巧:

異步確立和同步釋放的復(fù)位電路通常提供比完全異步或完全同步復(fù)位更可靠的復(fù)位。

復(fù)位電平的選擇跟芯片結(jié)構(gòu)有關(guān),根據(jù)具體使用的芯片屬性選擇合適的復(fù)位電平。

建議采用異步復(fù)位同步化(異步復(fù)位同步釋放處理)。

全局復(fù)位并不是最佳方式,可使用模塊化方式去處理復(fù)位信號(hào)。

并不是所有時(shí)序電路都要加復(fù)位,但對(duì)于控制信號(hào)以及必須知道初始狀態(tài)的情況,必要的復(fù)位是不可少的。

對(duì)每個(gè)獨(dú)立的時(shí)鐘區(qū)域必須利用一個(gè)分開的復(fù)位同步器。






審核編輯:劉清

聲明:本文內(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)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21796

    瀏覽量

    605999
  • 驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    53

    文章

    8271

    瀏覽量

    147061
  • 反相器
    +關(guān)注

    關(guān)注

    6

    文章

    311

    瀏覽量

    43507
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2171

    瀏覽量

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

    關(guān)注

    11

    文章

    1746

    瀏覽量

    131799
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

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

    關(guān)注

    14

    文章

    2003

    瀏覽量

    61347
  • FPGA芯片
    +關(guān)注

    關(guān)注

    3

    文章

    246

    瀏覽量

    39868
  • 復(fù)位信號(hào)
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    6366

原文標(biāo)題:數(shù)字設(shè)計(jì)小思 - 談?wù)剰?fù)位那些事

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于Xilinx FPGA復(fù)位信號(hào)處理

    內(nèi)都是將復(fù)位信號(hào)作為一個(gè)I/O口,通過撥碼開關(guān)硬件復(fù)位。后來(lái)也看了一些書籍,采用異步復(fù)位同步釋放,對(duì)自己設(shè)計(jì)的改進(jìn)。 不過自從我研讀了Xilinx
    的頭像 發(fā)表于 12-25 12:08 ?2695次閱讀
    基于<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的<b class='flag-5'>復(fù)位</b><b class='flag-5'>信號(hào)</b>處理

    Xilinx FPGA異步復(fù)位同步釋放—同步后的復(fù)位該當(dāng)作同步復(fù)位還是異步復(fù)位

    針對(duì)異步復(fù)位、同步釋放,一直沒搞明白在使用同步化以后的復(fù)位信號(hào)時(shí),到底是使用同步復(fù)位還是異步復(fù)位
    發(fā)表于 06-21 09:59 ?1570次閱讀
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>異步<b class='flag-5'>復(fù)位</b>同步釋放—同步后的<b class='flag-5'>復(fù)位</b>該當(dāng)作同步<b class='flag-5'>復(fù)位</b>還是異步<b class='flag-5'>復(fù)位</b>?

    為什么需要復(fù)位樹?復(fù)位信號(hào)用什么電路產(chǎn)生?

    復(fù)位信號(hào)在數(shù)字電路里面的重要性僅次于時(shí)鐘信號(hào)。對(duì)一個(gè)芯片來(lái)說(shuō),復(fù)位的主要目的是使芯片電路進(jìn)入一個(gè)已知的,確定的狀態(tài)。
    的頭像 發(fā)表于 08-27 10:18 ?2242次閱讀
    為什么需要<b class='flag-5'>復(fù)位</b>樹?<b class='flag-5'>復(fù)位</b><b class='flag-5'>信號(hào)</b>用什么電路產(chǎn)生?

    FPGA開發(fā)中盡量避免全局復(fù)位的使用?(2)

    XilinxFPGA器件中,全局的復(fù)位/置位信號(hào)(Global Set/Reset (GSR))(可以通過全局復(fù)位管腳引入)是幾乎絕對(duì)
    發(fā)表于 02-11 11:46 ?1034次閱讀
    在<b class='flag-5'>FPGA</b>開發(fā)中盡量避免全局<b class='flag-5'>復(fù)位</b>的使用?(2)

    FPGA的理想的復(fù)位方法和技巧

    FPGA設(shè)計(jì)中,復(fù)位起到的是同步信號(hào)作用,能夠?qū)⑺械拇鎯?chǔ)元件設(shè)置成已知狀態(tài)。在數(shù)字電路設(shè)計(jì)中,設(shè)計(jì)人員一般把全局復(fù)位作為一個(gè)外部引腳來(lái)
    發(fā)表于 11-22 17:03 ?5742次閱讀
    <b class='flag-5'>FPGA</b>的理想的<b class='flag-5'>復(fù)位</b>方法和技巧

    Xilinx FPGA的同步復(fù)位和異步復(fù)位

    對(duì)于xilinx 7系列的FPGA而言,flip-flop支持高有效的異步復(fù)/置位和同步復(fù)位/置位。對(duì)普通邏輯設(shè)計(jì),同步復(fù)位和異步復(fù)位沒有區(qū)
    發(fā)表于 07-13 09:31 ?6734次閱讀

    Xilinx復(fù)位信號(hào)設(shè)計(jì)原則

    復(fù)位信號(hào)設(shè)計(jì)的原則是盡量不包含不需要的復(fù)位信號(hào),如果需要,考慮使用局部復(fù)位和同步復(fù)位
    發(fā)表于 10-27 10:09 ?1943次閱讀
    <b class='flag-5'>Xilinx</b><b class='flag-5'>復(fù)位</b><b class='flag-5'>信號(hào)</b>設(shè)計(jì)原則

    【PUC、POR】MSP430的復(fù)位信號(hào)

    MSP430的復(fù)位信號(hào)有2種: 文檔: 上電清除信號(hào)(PUC)、 上電復(fù)位信號(hào)(POR)。 個(gè)人理解: POR是第一次上電
    發(fā)表于 12-16 16:56 ?12次下載
    【PUC、POR】MSP430的<b class='flag-5'>復(fù)位</b><b class='flag-5'>信號(hào)</b>

    FPGA設(shè)計(jì)使用復(fù)位信號(hào)應(yīng)遵循原則

    FPGA設(shè)計(jì)中幾乎不可避免地會(huì)用到復(fù)位信號(hào),無(wú)論是同步復(fù)位還是異步復(fù)位。我們需要清楚的是復(fù)位
    發(fā)表于 03-30 09:55 ?1386次閱讀

    MBIST邏輯的復(fù)位信號(hào)怎么來(lái)的?

    jtag端口的復(fù)位信號(hào)jtag_trst用于復(fù)位TAP狀態(tài)機(jī)模塊,該復(fù)位信號(hào)可選。
    的頭像 發(fā)表于 05-25 15:09 ?1045次閱讀
    MBIST邏輯的<b class='flag-5'>復(fù)位</b><b class='flag-5'>信號(hào)</b>怎么來(lái)的?

    談?wù)?b class='flag-5'>復(fù)位那些

    復(fù)位信號(hào)幾乎是除了時(shí)鐘信號(hào)外最常用的信號(hào)了,幾乎所有數(shù)字系統(tǒng)在上電的時(shí)候都會(huì)進(jìn)行復(fù)位,這樣才能保持設(shè)計(jì)者確定該系統(tǒng)的系統(tǒng)模式的狀態(tài),以便于更
    的頭像 發(fā)表于 06-02 15:11 ?2105次閱讀
    談?wù)?b class='flag-5'>復(fù)位</b><b class='flag-5'>那些</b><b class='flag-5'>事</b>

    你真的會(huì)Xilinx FPGA復(fù)位嗎?

    對(duì)于復(fù)位信號(hào)的處理,為了方便我們習(xí)慣上采用全局復(fù)位,博主在很長(zhǎng)一段時(shí)間內(nèi)都是將復(fù)位信號(hào)作為一個(gè)I/O口,通過撥碼開關(guān)硬件
    發(fā)表于 06-21 10:39 ?1275次閱讀
    你真的會(huì)<b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的<b class='flag-5'>復(fù)位</b>嗎?

    復(fù)位信號(hào)存在亞穩(wěn)態(tài),有危險(xiǎn)嗎?

    復(fù)位信號(hào)存在亞穩(wěn)態(tài),有危險(xiǎn)嗎? 復(fù)位信號(hào)在電子設(shè)備中起著重要的作用,它用于使設(shè)備回到初始狀態(tài),以確保設(shè)備的正常運(yùn)行。然而,我們有時(shí)會(huì)發(fā)現(xiàn)
    的頭像 發(fā)表于 01-16 16:25 ?555次閱讀

    示波器測(cè)量復(fù)位信號(hào)的原理和方法

    在電子工程領(lǐng)域,復(fù)位信號(hào)是確保系統(tǒng)穩(wěn)定、可靠運(yùn)行的關(guān)鍵因素之一。復(fù)位信號(hào)通常用于在系統(tǒng)出現(xiàn)故障或異常時(shí),將系統(tǒng)恢復(fù)到初始狀態(tài),以便重新開始工作。因此,準(zhǔn)確測(cè)量和分析
    的頭像 發(fā)表于 05-17 17:14 ?1619次閱讀

    FPGA復(fù)位的8種技巧

    FPGA 設(shè)計(jì)中,復(fù)位起到的是同步信號(hào)作用,能夠?qū)⑺械拇鎯?chǔ)元件設(shè)置成已知狀態(tài)。在數(shù)字電路設(shè)計(jì)中,設(shè)計(jì)人員一般把全局復(fù)位作為一個(gè)外部引
    的頭像 發(fā)表于 11-16 10:18 ?422次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>復(fù)位</b>的8種技巧
    真人百家乐官网蓝盾娱乐平台| 百家乐官网怎么对冲打| 大发888有银钱的吗| 百家乐游戏出售| 安西县| 威尼斯人娱乐城存取款| 伟德百家乐下载| 百家乐官网自动算牌软件| 百家乐免费试玩| 新全讯网22335555| 百家乐概率统计| 大赢家百家乐官网的玩法技巧和规则| 百家乐官网有没有绝| 飞7棋牌游戏| 百家乐知道| 玩百家乐高手支招篇| 百家乐官网路单破| 百家乐官网策略| 德州扑克技巧视频| 金冠百家乐的玩法技巧和规则| 百家乐怎么玩高手| 百家乐官网游戏模拟| 网上百家乐官网有假的吗| 大西洋城娱乐| 大发888娱乐城注册送筹码| 现金百家乐赌法| 杨公先师24山秘密全书| 百家乐官网视频造假| 二八杠分析仪| 百家乐单机游戏下| 网站百家乐博彩| 百家乐官网园是真的不| 百家乐官网羸钱法| 百家乐官网游戏程序下载| 鸿利国际| 宝胜娱乐城| 钱大发888游戏下载| LV百家乐客户端LV| 百家乐必胜方程式| 百家乐佛牌| 百家乐视频游戏掉线|