點(diǎn)擊上方藍(lán)字關(guān)注我們

系統(tǒng)的復(fù)位對于系統(tǒng)穩(wěn)定工作至關(guān)重要,最佳的復(fù)位方式為:異步復(fù)位,同步釋放。以下是轉(zhuǎn)載博客,原文標(biāo)題及鏈接如下:復(fù)位最佳方式:異步復(fù)位,同步釋放
異步復(fù)位;
異步:
always@(posedgeclkornegedgerst_n)
if(!rst_n)
(優(yōu)點(diǎn):占用較少邏輯單元
缺點(diǎn):可能會產(chǎn)生競爭冒險)
同步:always @(posege clk or posedge rst_n)
If(!rst_n)
(優(yōu)點(diǎn):可以盡量點(diǎn)少競爭冒險的可能
缺點(diǎn):會占用更多的邏輯單元)
Altera 最佳解決辦法:異步復(fù)位,同步釋放
//異步復(fù)位 同步釋放rtl視圖
原理:
所謂異步復(fù)位和同步釋放,是指復(fù)位信號是異步有效的,即復(fù)位的發(fā)生與clk無關(guān)。后半句“同步釋放”是指復(fù)位信號的撤除(釋放)則與clk相關(guān),即同步的。
下面說明一下如何實現(xiàn)異步復(fù)位和同步釋放的。
異步復(fù)位:顯而易見,rst_async_n異步復(fù)位后,rst_sync_n將拉低,即實現(xiàn)異步復(fù)位。
同步釋放:這個是關(guān)鍵,看如何實現(xiàn)同步釋放,即當(dāng)復(fù)位信號rst_async_n撤除時,由于雙緩沖電路的作用,rst_sync_n復(fù)位信號不會隨著rst_async_n的撤除而撤除。
假設(shè)rst_async_n撤除時發(fā)生在clk上升沿,如果不加此電路則可能發(fā)生亞穩(wěn)態(tài)事件(在始終上升沿附近rst置1,這時候建立時間還不夠長,數(shù)據(jù)可能還未打入寄存器,導(dǎo)致輸出不確定)。但是加上此電路以后,假設(shè)第一級D觸發(fā)器clk上升沿時rst_async_n正好撤除,則D觸發(fā)器1輸出高電平“1”,此時第二級觸發(fā)器也會更新輸出,但是輸出值為前一級觸發(fā)器次clk來之前時的Q1輸出狀態(tài)。顯然Q1之前為低電平,顧第二級觸發(fā)器輸出保持復(fù)位低電平,直到下一個clk來之后,才隨著變?yōu)楦唠娖健<赐结尫拧?/span>
代碼實現(xiàn):(Altera 官方資料)
module reset_best(clk,asyn_reset,syn_reset);
input clk;
input asyn_reset;
output syn_reset;
reg rst_s1;
reg rst_s2;
always @( posedge clk ,posedge asyn_reset)
begin
if(asyn_reset)
begin
rst_s1<=1'b0;
rst_s2<=1'b0;
end
else
begin
rst_s1<=1'b1;
rst_s2<=rst_s1;
end
end
assign syn_reset=rst_s2;
endmodule

有你想看的精彩 至芯科技FPGA就業(yè)培訓(xùn)班——助你步入成功之路、9月23號北京中心開課、歡迎咨詢! FPGA學(xué)習(xí):精簡指令集RISC_CPU 至芯FPGA初級課程之 FIFO
掃碼加微信邀請您加入FPGA學(xué)習(xí)交流群


歡迎加入至芯科技FPGA微信學(xué)習(xí)交流群,這里有一群優(yōu)秀的FPGA工程師、學(xué)生、老師、這里FPGA技術(shù)交流學(xué)習(xí)氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!
點(diǎn)個在看你最好看
原文標(biāo)題:FPGA學(xué)習(xí)-異步復(fù)位,同步釋放
文章出處:【微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21954瀏覽量
613996
原文標(biāo)題:FPGA學(xué)習(xí)-異步復(fù)位,同步釋放
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
復(fù)位電路的作用、控制方式和類型

評論