异步复位同步释放_简谈同步复位和异步复位
簡談同步復(fù)位和異步復(fù)位
大俠們,江湖偌大,有緣相見,歡迎一敘,今天來聊一聊數(shù)字電路設(shè)計(jì)中的同步復(fù)位和異步復(fù)位。
談到同步復(fù)位和異步復(fù)位,那咱們就不得不來聊一聊復(fù)位這個(gè)詞了。在數(shù)字邏輯電路設(shè)計(jì)中,電路通過復(fù)位來啟動(dòng),復(fù)位猶如數(shù)字電路的“起搏器”。那在設(shè)計(jì)中,主要會(huì)出現(xiàn)以下三種類型的,一是無復(fù)位:天生就強(qiáng)壯著,上電就啟動(dòng);二是異步復(fù)位:好心人路過,隨便踢了一腳,起搏了,這完全沒有心理準(zhǔn)備,隨時(shí)都有可能復(fù)活啊;三是同步復(fù)位:專業(yè)救援隊(duì),手按住胸口,不起搏按住不放啊。直到聽到“砰砰”聲才離開,非常關(guān)鍵,必須要按住一會(huì)會(huì)。
那下面咱們就來詳細(xì)聊聊這三種類型。
一、無復(fù)位
沒見過這樣寫代碼的,竟然沒有復(fù)位,老師都說數(shù)字電路離不開復(fù)位的,沒有復(fù)位,寄存器怎么賦初值啊?沒有確定的初值,這電路怎么工作呢?其實(shí),不用擔(dān)心,FPGA上電之后,寄存器初始值默認(rèn)為“0”,當(dāng)然,也可以人為的賦初值。下面為無復(fù)位的代碼舉例:
如果沒有復(fù)位信號(hào),省了很多資源,編譯和布線時(shí)間也縮短不少,如果規(guī)模很大,對(duì)提高設(shè)計(jì)整體性能也是有幫助的。但是在數(shù)字電路設(shè)計(jì)中,我們很少不用復(fù)位電路。倒是我們經(jīng)常利用FPGA這個(gè)特性,自己產(chǎn)生內(nèi)部復(fù)位電路。
二、異步復(fù)位
異步復(fù)位電路描述:在always語句中添加復(fù)位信號(hào)在敏感量列表中,即可實(shí)現(xiàn)異步復(fù)位。下面為異步復(fù)位的代碼舉例以及電路圖舉例:
異步復(fù)位的缺點(diǎn):
異步復(fù)位對(duì)復(fù)位信號(hào)要求很嚴(yán)格的,不然隨便一個(gè)毛刺就會(huì)把電路給復(fù)位掉的。另外,異步復(fù)位信號(hào)依賴于FPGA內(nèi)部的傳導(dǎo)延時(shí),因此,在微小的電壓或溫度差異下,設(shè)計(jì)都有可能輸出錯(cuò)誤,設(shè)計(jì)的可移植性也很差。上面不是說了嘛,這隨便一腳提過來,有時(shí)候能感覺到,有時(shí)候感覺不到啊。冬天穿個(gè)大棉襖,就得使個(gè)大勁才能有感覺。
正因?yàn)閷?duì)不同寄存器延遲是不同的,所以容易引發(fā)間斷性設(shè)計(jì)問題。怎么理解呢?
如圖所示,2 bit的移位寄存器組成一個(gè)環(huán),復(fù)位后,左邊寄存器清零,右邊寄存器置位,而且都在同一上升沿觸發(fā),所以,如果左邊寄存器上升沿來的時(shí)候,復(fù)位信號(hào)已經(jīng)釋放掉了,但是右邊寄存器還處于復(fù)位狀態(tài),這個(gè)時(shí)候數(shù)據(jù)就錯(cuò)誤。
異步復(fù)位的優(yōu)點(diǎn):
異步復(fù)位不依賴于時(shí)鐘。所以如果時(shí)鐘是外部輸入的,而且時(shí)鐘有可能丟失,例如處于省電模式時(shí),只能使用異步復(fù)位。
另外一個(gè)優(yōu)勢是設(shè)計(jì)更快的物理實(shí)現(xiàn)。相對(duì)于同步復(fù)位,異步復(fù)位有更寬松的時(shí)序約束。從而布局布線工具使用更少的時(shí)間便可達(dá)到約束條件。
三、同步復(fù)位
同步復(fù)位就是非常專業(yè),不留一點(diǎn)馬虎,和他的名字一樣,只在時(shí)鐘的有效沿發(fā)生,所以一個(gè)有效的同步信號(hào),至少要維持一個(gè)時(shí)鐘周期(把你叫不醒,是不會(huì)停的)。由于僅僅在時(shí)鐘的有效沿有效,所以可以濾除復(fù)位信號(hào)上的毛刺,電路可靠性好很多。下面為同步復(fù)位的代碼舉例:
所以,總結(jié)一下。其優(yōu)點(diǎn)是“彌補(bǔ)了異步復(fù)位的所有缺點(diǎn)”,其缺點(diǎn)是“沒有異步復(fù)位的優(yōu)點(diǎn)“。這個(gè)總結(jié)夠簡單吧。
總結(jié)
我們熟悉了3種復(fù)位方式,了解了他們的脾氣,那就總結(jié)一下,在我們平時(shí)設(shè)計(jì)中如何使用他們。
盡量用同步復(fù)位,如果你的規(guī)模不是特別大,雖然占有布線資源多一點(diǎn),但是對(duì)系統(tǒng)可靠性還是有幫助的。
規(guī)模很大的時(shí)候,可以考慮混合復(fù)位方式,在什么場合呢?比如說設(shè)計(jì)中有多個(gè)IP核和功能模塊,要求有不同的復(fù)位方式,這個(gè)時(shí)候就要求混合復(fù)位方式,另外,還有電路延遲,大型電路中兩個(gè)模塊之間信號(hào)延遲可能超過10ns,如果時(shí)鐘周期為3ns,需要3個(gè)時(shí)鐘周期才能通過,所以,大型設(shè)計(jì)中完全同步是非常不容易的。如圖所示為一個(gè)復(fù)雜的混合復(fù)位樹。各種復(fù)位都用上了。
完
后續(xù)會(huì)持續(xù)更新,帶來Vivado、 ISE、Quartus II 、candence等安裝相關(guān)設(shè)計(jì)教程,學(xué)習(xí)資源、項(xiàng)目資源、好文推薦等,希望大俠持續(xù)關(guān)注。
江湖偌大,繼續(xù)闖蕩,愿大俠一切安好,有緣再見!
總結(jié)
以上是生活随笔為你收集整理的异步复位同步释放_简谈同步复位和异步复位的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 水仙花python代码_「每日一练」巧用
- 下一篇: 上项线体表位置_实用人体体表解剖:头颈部