Verilog中同步復(fù)位和異步復(fù)位比較(共16頁)_第1頁
Verilog中同步復(fù)位和異步復(fù)位比較(共16頁)_第2頁
Verilog中同步復(fù)位和異步復(fù)位比較(共16頁)_第3頁
Verilog中同步復(fù)位和異步復(fù)位比較(共16頁)_第4頁
Verilog中同步復(fù)位和異步復(fù)位比較(共16頁)_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、【Verilog】 同步復(fù)位和異步復(fù)位比較 async vs. sync同步復(fù)位sync異步復(fù)位async特點(diǎn)復(fù)位信號(hào)只有在時(shí)鐘上升沿到來時(shí)才能有效。無論時(shí)鐘沿是否到來,只要復(fù)位信號(hào)有效,就進(jìn)行復(fù)位。Verilog描述always(posedge CLK)always(posedge CLK , negedge Rst_n)優(yōu)點(diǎn)1)利于仿真器仿真。2)因?yàn)橹挥性跁r(shí)鐘有效電平到來時(shí)才有效,所以可以濾除高于時(shí)鐘頻率的毛刺。3)可以使所設(shè)計(jì)的系統(tǒng)成為100%的同步時(shí)序電路,有利于時(shí)序分析。1)設(shè)計(jì)相對簡單。2)因?yàn)榇蠖鄶?shù)目標(biāo)器件庫的dff都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。3)異步復(fù)位信

2、號(hào)識(shí)別方便,而且可以很方便的使用FPGA的全局復(fù)位端口GSR。缺點(diǎn)1)復(fù)位信號(hào)的有效時(shí)長必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位任務(wù)。同時(shí)還要考慮,諸如:clk skew,組合邏輯路徑延時(shí),復(fù)位延時(shí)等因素。2)由于大多數(shù)的邏輯器件的目標(biāo)庫內(nèi)的DFF都只有異步復(fù)位端口,所以,倘若采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會(huì)耗費(fèi)較多的邏輯資源。1)復(fù)位信號(hào)容易受到毛刺的影響。2)在復(fù)位信號(hào)釋放(release)的時(shí)候容易出現(xiàn)問題。具體就是說:若復(fù)位釋放剛好在時(shí)鐘有效沿附近時(shí),很容易使寄存器輸出出現(xiàn)亞穩(wěn)態(tài),從而導(dǎo)致亞穩(wěn)態(tài)??偨Y(jié)推薦使用異步復(fù)位,同步釋放的方式,而且復(fù)

3、位信號(hào)低電平有效。相關(guān)討論:1、同步電路和異步電路的區(qū)別是什么?異步電路主要是組合邏輯電路,用于產(chǎn)生地址譯碼器、或的讀寫控制信號(hào)脈沖,但它同時(shí)也用在時(shí)序電路中,此時(shí)它沒有統(tǒng)一的時(shí)鐘,狀態(tài)變化的時(shí)刻是不穩(wěn)定的,通常輸入信號(hào)只在電路處于穩(wěn)定狀態(tài)時(shí)才發(fā)生變化。也就是說一個(gè)時(shí)刻允許一個(gè)輸入發(fā)生變化,以避免輸入信號(hào)之間造成的競爭冒險(xiǎn)。電路的穩(wěn)定需要有可靠的建立時(shí)間和保持時(shí)間,待下面介紹。 同步電路是由時(shí)序電路(寄存器和各種觸發(fā)器)和組合邏輯電路構(gòu)成的電路,其所有操作都是在嚴(yán)格的時(shí)鐘控制下完成的。這些時(shí)序電路共享同一個(gè)時(shí)鐘,而所有的狀態(tài)變化都是在時(shí)鐘的上升沿(或下降沿)完成的。比如觸發(fā)器,當(dāng)上升延到來時(shí),

4、寄存器把端的電平傳到輸出端。在同步電路設(shè)計(jì)中一般采用D觸發(fā)器,異步電路設(shè)計(jì)中一般采用Latch。2、什么是同步邏輯和異步邏輯?同步邏輯是時(shí)鐘之間有固定的因果關(guān)系。異步邏輯是各時(shí)鐘之間沒有固定的因果關(guān)系。電路設(shè)計(jì)可分類為同步電路和異步電路設(shè)計(jì)。同步電路利用時(shí)鐘脈沖使其子系統(tǒng)同步運(yùn)作,而異步電路不使用時(shí)鐘脈沖做同步,其子系統(tǒng)是使用特殊的“開始”和“完成”信號(hào)使之同步。由于異步電路具有下列優(yōu)點(diǎn)-無時(shí)鐘歪斜問題、低電源消耗、平均效能而非最差效能、模塊性、可組合和可復(fù)用性-因此近年來對異步電路研究增加快速,論文發(fā)表數(shù)以倍增,而Intel Pentium 4處理器設(shè)計(jì),也開始采用異步電路設(shè)計(jì)。異步電路主要

5、是組合邏輯電路,用于產(chǎn)生地址譯碼器、或的讀寫控制信號(hào)脈沖,其邏輯輸出與任何時(shí)鐘信號(hào)都沒有關(guān)系,譯碼輸出產(chǎn)生的毛刺通常是可以監(jiān)控的。同步電路是由時(shí)序電路(寄存器和各種觸發(fā)器)和組合邏輯電路構(gòu)成的電路,其所有操作都是在嚴(yán)格的時(shí)鐘控制下完成的。這些時(shí)序電路共享同一個(gè)時(shí)鐘,而所有的狀態(tài)變化都是在時(shí)鐘的上升沿(或下降沿)完成的。3、什么是線與邏輯,要實(shí)現(xiàn)它,在硬件特性上有什么具體要求?線與邏輯是兩個(gè)輸出信號(hào)相連可以實(shí)現(xiàn)與的功能。在硬件上,要用oc門來實(shí)現(xiàn)(漏極或者集電極開路),由于不用oc門可能使灌電流過大,而燒壞邏輯門,同時(shí)在輸出端口應(yīng)加一個(gè)上拉電阻。(線或則是下拉電阻)4、什么是Setup和Hold

6、up時(shí)間?5、setup和holdup時(shí)間,區(qū)別.6、解釋setup time和hold time的定義和在時(shí)鐘信號(hào)延遲時(shí)的變化。7、解釋setup和hold time violation,畫圖說明,并說明解決辦法。時(shí)間(Setup Time)和保持時(shí)間(Hold time)。建立時(shí)間是指在時(shí)鐘邊沿前,數(shù)據(jù)信號(hào)需要保持不變的時(shí)間。保持時(shí)間是指時(shí)鐘跳變邊沿后數(shù)據(jù)信號(hào)需要保持不變的時(shí)間。如果不滿足建立和保持時(shí)間的話,那么DFF將不能正確地采樣到數(shù)據(jù),將會(huì)出現(xiàn)metastability的情況。如果數(shù)據(jù)信號(hào)在時(shí)鐘沿觸發(fā)前后持續(xù)的時(shí)間均超過建立和保持時(shí)間,那么超過量就分別被稱為建立時(shí)間裕量和保持時(shí)間裕量

7、。8、說說對數(shù)字邏輯中的競爭和冒險(xiǎn)的理解,并舉例說明競爭和冒險(xiǎn)怎樣消除。9、什么是競爭與冒險(xiǎn)現(xiàn)象?怎樣判斷?如何消除?在組合邏輯中,由于門的輸入信號(hào)通路中經(jīng)過了不同的延時(shí),導(dǎo)致到達(dá)該門的時(shí)間不一致叫競爭。產(chǎn)生毛刺叫冒險(xiǎn)。如果布爾式中有相反的信號(hào)則可能產(chǎn)生競爭和冒險(xiǎn)現(xiàn)象。解決方法:一是添加布爾式的(冗余)消去項(xiàng),但是不能避免功能冒險(xiǎn),二是在芯片外部加電容。三是增加選通電路在組合邏輯中,由于多少輸入信號(hào)變化先后不同、信號(hào)傳輸?shù)穆窂讲煌?,或是各種器件延遲時(shí)間不同(這種現(xiàn)象稱為競爭)都有可能造成輸出波形產(chǎn)生不應(yīng)有的尖脈沖(俗稱毛刺),這種現(xiàn)象成為冒險(xiǎn)。10、你知道那些常用邏輯電平?TTL與COMS電平

8、可以直接互連嗎?常用邏輯電平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、PECL(Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage Differential Signaling)、GTL(Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、RS422、RS485(

9、12V,5V,3.3V);TTL和CMOS不可以直接互連,由于TTL是在0.3-3.6V之間,而CMOS則是有在12V的有在5V的。CMOS輸出接到TTL是可以直接互連。TTL接到CMOS需要在輸出端口加一上拉電阻接到5V或者12V。cmos的高低電平分別為:Vih=0.7VDD,Vil=0.9VDD,Vol=2.0v,Vil=2.4v,Vol=0.4v.用cmos可直接驅(qū)動(dòng)ttl;加上拉電阻后,ttl可驅(qū)動(dòng)cmos.1、當(dāng)TTL電路驅(qū)動(dòng)COMS電路時(shí),如果TTL電路輸出的高電平低于COMS電路的最低高電平(一般為3.5V),這時(shí)就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值。2、OC

10、門電路必須加上拉電阻,以提高輸出的搞電平值。3、為加大輸出引腳的驅(qū)動(dòng)能力,有的單片機(jī)管腳上也常使用上拉電阻。4、在COMS芯片上,為了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻產(chǎn)生降低輸入阻抗,提供泄荷通路。5、芯片的管腳加上拉電阻來提高輸出電平,從而提高芯片輸入信號(hào)的噪聲容限增強(qiáng)抗干擾能力。6、提高總線的抗電磁干擾能力。管腳懸空就比較容易接受外界的電磁干擾。7、長線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。上拉電阻阻值的選擇原則包括:1、從節(jié)約功耗及芯片的灌電流能力考慮應(yīng)當(dāng)足夠大;電阻大,電流小。2、從確保足夠的驅(qū)動(dòng)電流考慮應(yīng)當(dāng)足夠?。浑娮栊?/p>

11、,電流大。3、對于高速電路,過大的上拉電阻可能邊沿變平緩。綜合考慮以上三點(diǎn),通常在1k到10k之間選取。對下拉電阻也有類似道理/OC門電路必須加上拉電阻,以提高輸出的搞電平值。OC門電路要輸出“1”時(shí)才需要加上拉電阻不加根本就沒有高電平在有時(shí)我們用OC門作驅(qū)動(dòng)(例如控制一個(gè)LED)灌電流工作時(shí)就可以不加上拉電阻OC門可以實(shí)現(xiàn)“線與”運(yùn)算OC門就是集電極開路輸出總之加上拉電阻能夠提高驅(qū)動(dòng)能力。11、如何解決亞穩(wěn)態(tài)。?亞穩(wěn)態(tài)是指觸發(fā)器無法在某個(gè)規(guī)定時(shí)間段內(nèi)達(dá)到一個(gè)可確認(rèn)的狀態(tài)。當(dāng)一個(gè)觸發(fā)器進(jìn)入亞穩(wěn)態(tài)時(shí),既無法預(yù)測該單元的輸出電平,也無法預(yù)測何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上。在這個(gè)穩(wěn)定期間,觸發(fā)器

12、輸出一些中間級(jí)電平,或者可能處于振蕩狀態(tài),并且這種無用的輸出電平可以沿信號(hào)通道上的各個(gè)觸發(fā)器級(jí)聯(lián)式傳播下去。解決方法:1降低系統(tǒng)時(shí)鐘頻率2用反應(yīng)更快的FF3引入同步機(jī)制,防止亞穩(wěn)態(tài)傳播4改善時(shí)鐘質(zhì)量,用邊沿變化快速的時(shí)鐘信號(hào)關(guān)鍵是器件使用比較好的工藝和時(shí)鐘周期的裕量要大。亞穩(wěn)態(tài)寄存用d只是一個(gè)辦法,有時(shí)候通過not,buf等都能達(dá)到信號(hào)過濾的效果12、IC設(shè)計(jì)中同步復(fù)位與異步復(fù)位的區(qū)別。同步復(fù)位在時(shí)鐘沿采復(fù)位信號(hào),完成復(fù)位動(dòng)作。異步復(fù)位不管時(shí)鐘,只要復(fù)位信號(hào)滿足條件,就完成復(fù)位動(dòng)作。異步復(fù)位對復(fù)位信號(hào)要求比較高,不能有毛刺,如果其與時(shí)鐘關(guān)系不確定,也可能出現(xiàn)亞穩(wěn)態(tài)。13、MOORE與MEELE

13、Y狀態(tài)機(jī)的特征。 Moore狀態(tài)機(jī)的輸出僅與當(dāng)前狀態(tài)值有關(guān),且只在時(shí)鐘邊沿到來時(shí)才會(huì)有狀態(tài)變化. Mealy狀態(tài)機(jī)的輸出不僅與當(dāng)前狀態(tài)值有關(guān),而且與當(dāng)前輸入值有關(guān),這14、多時(shí)域設(shè)計(jì)中,如何處理信號(hào)跨時(shí)域。不同的時(shí)鐘域之間信號(hào)通信時(shí)需要進(jìn)行同步處理,這樣可以防止新時(shí)鐘域中第一級(jí)觸發(fā)器的亞穩(wěn)態(tài)信號(hào)對下級(jí)邏輯造成影響,其中對于單個(gè)控制信號(hào)可以用兩級(jí)同步器,如電平、邊沿檢測和脈沖,對多位信號(hào)可以用FIFO,雙口RAM,握手信號(hào)等??鐣r(shí)域的信號(hào)要經(jīng)過同步器同步,防止亞穩(wěn)態(tài)傳播。例如:時(shí)鐘域1中的一個(gè)信號(hào),要送到時(shí)鐘域2,那么在這個(gè)信號(hào)送到時(shí)鐘域2之前,要先經(jīng)過時(shí)鐘域2的同步器同步后,才能進(jìn)入時(shí)鐘域2。

14、這個(gè)同步器就是兩級(jí)d觸發(fā)器,其時(shí)鐘為時(shí)鐘域2的時(shí)鐘。這樣做是怕時(shí)鐘域1中的這個(gè)信號(hào),可能不滿足時(shí)鐘域2中觸發(fā)器的建立保持時(shí)間,而產(chǎn)生亞穩(wěn)態(tài),因?yàn)樗鼈冎g沒有必然關(guān)系,是異步的。這樣做只能防止亞穩(wěn)態(tài)傳播,但不能保證采進(jìn)來的數(shù)據(jù)的正確性。所以通常只同步很少位數(shù)的信號(hào)。比如控制信號(hào),或地址。當(dāng)同步的是地址時(shí),一般該地址應(yīng)采用格雷碼,因?yàn)楦窭状a每次只變一位,相當(dāng)于每次只有一個(gè)同步器在起作用,這樣可以降低出錯(cuò)概率,象異步FIFO的設(shè)計(jì)中,比較讀寫地址的大小時(shí),就是用這種方法。如果兩個(gè)時(shí)鐘域之間傳送大量的數(shù)據(jù),可以用異步FIFO來解決問題。我們可以在跨越Clock Domain時(shí)加上一個(gè)低電平使能的Loc

15、kup Latch以確保Timing能正確無誤。Verilog里的同步復(fù)位與異步復(fù)位(轉(zhuǎn))1.同步復(fù)位(Synchronous Reset)來看一個(gè)簡單的同步復(fù)位的D觸發(fā)器,Verilog代碼如下:module d_ff (clk,rst_n,datain, dataout);inputclk;inputrst_n;inputdatain;ouputdataout;regdataout;always (posedge clk)beginif (!rst_n)dataout= 1b0;elsedataout= datain;endendmodule綜合后的RTL圖表如下:Altera的MAXII

16、系列的CPLD中,register沒有同步復(fù)位資源,所以同步復(fù)位信號(hào)需要通過額外的邏輯電路實(shí)現(xiàn),同步復(fù)位的優(yōu)點(diǎn):1). 抗干擾性高,可以剔除復(fù)位信號(hào)中周期短于時(shí)鐘周期的毛刺;2). 有利于靜態(tài)時(shí)序分析工具的分析;3). 有利于基于周期的仿真工具的仿真。同步復(fù)位缺點(diǎn):1). 占用更多的邏輯資源;2). 對復(fù)位信號(hào)的脈沖寬度有要求,必須大于指定的時(shí)鐘周期,由于線路上的延遲,可能需要多個(gè)時(shí)鐘周期的復(fù)位脈沖寬度,且很難保證復(fù)位信號(hào)到達(dá)各個(gè)寄存器的時(shí)序;3). 同步復(fù)位依賴于時(shí)鐘,如果電路中的時(shí)鐘信號(hào)出現(xiàn)問題,無法完成復(fù)位。2. 異步復(fù)位(Asynchronous Reset)來看一個(gè)簡單的異步復(fù)位的D

17、觸發(fā)器,Verilog代碼如下:module prac (clk,rst_n,datain,dataout);inputclk;inputrst_n;inputdatain;outputdataout;regdataout;always (posedge clk or negedge rst_n)beginif (!rst_n)dataout= 1b0;elsedataout= datain;endendmodule綜合后的RTL圖表如下:異步復(fù)位的優(yōu)點(diǎn):1). 無需額外的邏輯資源,實(shí)現(xiàn)簡單,而且CPLD有針對復(fù)位信號(hào)的全局不限資源,可以保證復(fù)位管腳到各個(gè)寄存器的clock skew最小(注意

18、不是到各個(gè)寄存器的延遲最小);2). 復(fù)位信號(hào)不依賴于時(shí)鐘。同步復(fù)位缺點(diǎn):1). 復(fù)位信號(hào)容易受到外界的干擾;2). 復(fù)位信號(hào)釋放的隨機(jī)性,可能導(dǎo)致時(shí)序違規(guī),使電路處于亞穩(wěn)態(tài),如下圖。3. 異步復(fù)位同步釋放(Asynchronous Reset Synchronous Release)這種復(fù)位方式在文獻(xiàn)中還有一種稱謂:Synchronized Asynchronous Reset,這種稱謂應(yīng)該在國外的技術(shù)人員中比較流行,與Altera的工程師交流過程中,他們一直使用Synchronized Asynchronous Reset這種稱謂(當(dāng)然也可能是個(gè)人的習(xí)慣)。來看一個(gè)Synchronized

19、 Asynchronous Reset例子,Verilog代碼如下:module prac (clk,reset_n,dataa,datab,outa, outb);inputclk;inputreset_n;inputdataa;inputdatab;outputouta;outputoutb;regreg1;regreg2;regreg3;regreg4;assignouta= reg1;assignoutb= reg2;assignrst_n= reg4;always (posedge clk or negedge reset_n)beginif (!reset_n)beginreg3=

20、 1b0;reg4= 1b0;endelsebeginreg3= 1b1;reg4= reg3;endendalways (posedge clk or negedge rst_n)beginif (!rst_n)beginreg1= 1b0;reg2= 1b0;endelsebeginreg1= dataa;reg2= datab;endendendmodule綜合后的RTL圖表如下:此文來源于Implementation and Timing of Reset Circuits in Altera FPGAs,例子程序可能代碼與源代碼略有出入,RTL圖是用QuartusII 8.1綜合的,

21、與原文也有出入。異步復(fù)位、同步釋放FPGA設(shè)計(jì)中常見的復(fù)位方式即同步復(fù)位和異步復(fù)位。在深入探討亞穩(wěn)態(tài)這個(gè)概念之前, 很多人并沒有對所謂的同步復(fù)位和異步復(fù)位有太多的注意,而在實(shí)踐中充分感受了亞穩(wěn)態(tài)的危害之后,回過頭來細(xì)細(xì)品味Verilog HDL設(shè)計(jì)與驗(yàn)證一書中關(guān)于復(fù)位的章節(jié),可謂受益匪淺。在以前的代碼里大多使用的是異步復(fù)位。一個(gè)簡單的異步復(fù)位的例子always (posedge clk or negedge rst_n)if(!rst_n) b = 1b0;else b = a;我們可以看到FPGA的寄存器都有一個(gè)異步的清零端(CLR),在異步復(fù)位的設(shè)計(jì)中這個(gè)端口一般就是接低電平有效的復(fù)位信號(hào)

22、rst_n。即使說你的設(shè)計(jì)中是高電平復(fù)位,那么實(shí)際綜合后會(huì)把你的復(fù)位信號(hào)反向后接這個(gè)CLR端。一個(gè)簡單的同步復(fù)位的例子always (posedge clk)if(!rst_n) b = 1b0;else b = a;和異步復(fù)位相比,同步復(fù)位沒有用上寄存器的CLR端口,綜合出來的實(shí)際電路只是把復(fù)位信號(hào)rst_n作為了輸入邏輯的使能信號(hào)。那么,這樣的同步復(fù)位勢必會(huì)額外增加FPGA內(nèi)部的資源消耗。那么同步復(fù)位和異步復(fù)位到底孰優(yōu)孰劣呢?只能說,各有優(yōu)缺點(diǎn)。同步復(fù)位的好在于它只在時(shí)鐘信號(hào)clk的上升沿觸發(fā)進(jìn)行系統(tǒng)是否復(fù)位的判斷,這降低了亞穩(wěn)態(tài)出現(xiàn)的概率;它的不好上面也說了,在于它需要消耗更多的器件資源

23、,這是我們不希望看到的。FPGA的寄存器有支持異步復(fù)位專用的端口,采用異步復(fù)位的端口無需額外增加器件資源的消耗,但是異步復(fù)位也存在著隱患,特權(quán)同學(xué)過去從沒有意識(shí)到也沒有見識(shí)過。異步時(shí)鐘域的亞穩(wěn)態(tài)問題同樣的存在與異步復(fù)位信號(hào)和系統(tǒng)時(shí)鐘信號(hào)之間。再看下面一個(gè)兩級(jí)寄存器異步復(fù)位的例子always (posedge clk or negedge rst_n)if(!rst_n) b = 1b0;else b = a;always (posedge clk or negedge rst_n)if(!rst_n) c = 1b0;else c = b;正常情況下,clk的上升沿c更新為b,b更新為a。一旦

24、進(jìn)入復(fù)位,b,c都清零;但是我們不能確定復(fù)位信號(hào)rst_n會(huì)在什么時(shí)候結(jié)束。如果結(jié)束于b_reg0和c_reg0的launch edge stup,launch edge+hold時(shí)間只外,那么一切都會(huì)正常。但如果恰恰相反,會(huì)出現(xiàn)什么情況呢? rst_n的上升變化出現(xiàn)在了clk上升的建立保持時(shí)間上,此時(shí)clk檢測到的rst_n的狀態(tài)就會(huì)是一個(gè)亞穩(wěn)態(tài)(是0是1不確定)。從代碼里我們看到如果此時(shí)b_reg0和c_reg0認(rèn)為rst_n為0,那么依然保持復(fù)位清零,而如果認(rèn)為rst_n為1,那么就跳出復(fù)位。因?yàn)榇藭r(shí)的rst_n的不確定性,就可能出現(xiàn)4種情況,即b_reg0和c_reg0都復(fù)位或者都跳出

25、復(fù)位,再或者一個(gè)復(fù)位一個(gè)跳出復(fù)位。那么后者就會(huì)造成了系統(tǒng)工作不同步的問題,在這個(gè)簡單的兩級(jí)異步復(fù)位實(shí)例中這種危害表現(xiàn)的并不明顯,但是我們試想一個(gè)大的工程項(xiàng)目里眾多的寄存器出現(xiàn)如此情況又會(huì)是如何一番景象呢?上面的分析似乎都讓人意識(shí)到同步復(fù)位和異步復(fù)位都不可靠,那么如何將兩者結(jié)合,取長補(bǔ)短呢。異步復(fù)位、同步釋放always (posedge clk)rst_nr = rst_n;/現(xiàn)將異步復(fù)位信號(hào)用同步時(shí)鐘打一拍always (posedge clk or negedge rst_nr)if(!rst_nr) b = 1b0;else b = a;always (posedge clk or ne

26、gedge rst_nr)if(!rst_nr) c = 1b0;else c = b;如此一來,既解決了同步復(fù)位的資源消耗問題,也解決了異步復(fù)位的亞穩(wěn)態(tài)問題。其根本思想,也是將異步信號(hào)同步化。另外特權(quán)同學(xué)請教過IC設(shè)計(jì)部一位資深專家,他們在設(shè)計(jì)中常用的復(fù)位方式和上面的方法類似,大體如下:VHDL與Verilog中的同步和異步復(fù)位 這兩種復(fù)位方式的區(qū)別主要看是否需要時(shí)鐘的參與:異步復(fù)位不需要時(shí)鐘的參與,只要復(fù)位信號(hào)一有效就立即執(zhí)行復(fù)位操作;同步信號(hào)需要時(shí)鐘參與,只有當(dāng)時(shí)鐘有效沿來時(shí),復(fù)位信號(hào)才有效。 同步復(fù)位的最大好處是有效防止復(fù)位信號(hào)的毛刺引起的誤復(fù)位操作,只要毛刺不在時(shí)鐘有效沿附近出現(xiàn),就

27、不會(huì)影響電路正常工作;而若是異步復(fù)位,其復(fù)位信號(hào)的毛刺會(huì)立即引起電路復(fù)位。 異步復(fù)位可以在沒有時(shí)鐘的情況下完成復(fù)位,所以可以使電路在上電的時(shí)候完成對系統(tǒng)的復(fù)位,而且異步復(fù)位所消耗的資源比同步復(fù)位少。一般的,只要能保證復(fù)位信號(hào)的穩(wěn)定,我們建議使用異步復(fù)位。 我們看一下同步和異步復(fù)位在VHDL和Verilog下的實(shí)現(xiàn)細(xì)節(jié): VHDL: PROCESS(clk,reset)同步復(fù)位 BEGIN If(rising_edge(clk) then If(reset=1) then復(fù)位信號(hào)在時(shí)鐘有效沿下進(jìn)行判斷 -執(zhí)行復(fù)位操作 End if; End if; END PROCESS(clk,reset)異

28、步復(fù)位 BEGIN If(reset=1) then復(fù)位信號(hào)在不需要在時(shí)鐘有效沿下進(jìn)行判斷 -執(zhí)行復(fù)位操作 elsif(rising_edge(clk) then . End if; END Verilog: always (posedge clk or posedge reset)/異步復(fù)位,在敏感信號(hào)里加復(fù)位信號(hào) if(reset) begin /執(zhí)行復(fù)位操作 end else begin end always (posedge clk)/同步復(fù)位,在敏感信號(hào)不用加復(fù)位信號(hào) if(reset) begin /執(zhí)行復(fù)位操作 end else begin End同步復(fù)位和異步復(fù)位的比較各自的優(yōu)

29、缺點(diǎn):1、總的來說,同步復(fù)位的優(yōu)點(diǎn)大概有3條:a、有利于仿真器的仿真。b、可以使所設(shè)計(jì)的系統(tǒng)成為100%的同步時(shí)序電路,這便大大有利于時(shí)序分析,而且綜合出來的fmax一般較高。c、因?yàn)樗挥性跁r(shí)鐘有效電平到來時(shí)才有效,所以可以濾除高于時(shí)鐘頻率的毛刺。他的缺點(diǎn)也有不少,主要有以下幾條:a、復(fù)位信號(hào)的有效時(shí)長必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位任務(wù)。同時(shí)還要考慮,諸如:clk skew,組合邏輯路徑延時(shí),復(fù)位延時(shí)等因素。b、由于大多數(shù)的邏輯器件的目標(biāo)庫內(nèi)的DFF都只有異步復(fù)位端口,所以,倘若采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會(huì)耗費(fèi)較多的邏輯資源。2、對

30、于異步復(fù)位來說,他的優(yōu)點(diǎn)也有三條,都是相對應(yīng)的a、大多數(shù)目標(biāo)器件庫的dff都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。b、設(shè)計(jì)相對簡單。c、異步復(fù)位信號(hào)識(shí)別方便,而且可以很方便的使用FPGA的全局復(fù)位端口GSR。缺點(diǎn):a、在復(fù)位信號(hào)釋放(release)的時(shí)候容易出現(xiàn)問題。具體就是說:倘若復(fù)位釋放時(shí)恰恰在時(shí)鐘有效沿附近,就很容易使寄存器輸出出現(xiàn)亞穩(wěn)態(tài),從而導(dǎo)致亞穩(wěn)態(tài)。b、復(fù)位信號(hào)容易受到毛刺的影響。三、總結(jié):所以說,一般都推薦使用異步復(fù)位,同步釋放的方式,而且復(fù)位信號(hào)低電平有效。這樣就可以兩全其美了。推薦的復(fù)位方式所謂推薦的復(fù)位方式就是上文中所說的:“異步復(fù)位,同步釋放”。這就結(jié)合了雙方面

31、的優(yōu)點(diǎn),很好的克服了異步復(fù)位的缺點(diǎn)(因?yàn)楫惒綇?fù)位的問題主要出現(xiàn)在復(fù)位信號(hào)釋放的時(shí)候,具體原因可見上文)。其實(shí)做起來也并不難,我推薦一種我經(jīng)常使用的方式吧:那就是在異步復(fù)位鍵后加上一個(gè)所謂的“reset synchronizer”,這樣就可以使異步復(fù)位信號(hào)同步化,然后,再用經(jīng)過處理的復(fù)位信號(hào)去作用系統(tǒng),就可以保證比較穩(wěn)定了。reset sychronizer的Verilog代碼如下:module Reset_Synchronizer(output reg rst_n, input clk, asyncrst_n);reg rff1;always (posedge clk , negedge as

32、yncrst_n) beginif (!asyncrst_n) rst_n,rff1 = 2b0;else rst_n,rff1 = rff1,1b1;endendmodule大家可以看到,這就是一個(gè)dff,異步復(fù)位信號(hào)直接接在它的異步復(fù)位端口上(低電平有效),然后數(shù)據(jù)輸入端rff1一直為高電平1。倘若異步復(fù)位信號(hào)有效的話,觸發(fā)器就會(huì)復(fù)位,輸出為低,從而復(fù)位后繼系統(tǒng)。但是,又由于這屬于時(shí)鐘沿觸發(fā),當(dāng)復(fù)位信號(hào)釋放時(shí),觸發(fā)器的輸出要延遲一個(gè)時(shí)鐘周期才能恢復(fù)成1,因此使得復(fù)位信號(hào)的釋放與時(shí)鐘沿同步化。 此外,還有一種方法更為直接,就是直接在異步復(fù)位信號(hào)后加一個(gè)D觸發(fā)器,然后用D觸發(fā)器的輸出作為后級(jí)系

33、統(tǒng)的復(fù)位信號(hào),也能達(dá)到相同的效果。這里就不多說了。3:多時(shí)鐘系統(tǒng)中復(fù)位的處理方法)這是一個(gè)很實(shí)際的問題,因?yàn)樵谳^大型的系統(tǒng)中,一個(gè)時(shí)鐘驅(qū)動(dòng)信號(hào)顯然不能滿足要求,一定會(huì)根據(jù)系統(tǒng)的要求用多個(gè)同源時(shí)鐘(當(dāng)然也可以是非同源了)去驅(qū)動(dòng)系統(tǒng)的不同部分。那么在這樣的多時(shí)鐘系統(tǒng)中,復(fù)位鍵怎么設(shè)置?它的穩(wěn)定與否直接關(guān)系到了整個(gè)系統(tǒng)的穩(wěn)定性,因此要格外注意(在我看來,復(fù)位信號(hào)在同步時(shí)序系統(tǒng)中的地位和時(shí)鐘信號(hào)一樣重要)。下面就說一下具體的處理方法,當(dāng)然所遵循的原則就仍應(yīng)該是上文的“異步復(fù)位,同步釋放”:1.non-coordinated reset removal:顧名思義,就是同一個(gè)系統(tǒng)中的多個(gè)同源時(shí)鐘域的復(fù)位信號(hào),由彼此獨(dú)立的“reset synchronizer”驅(qū)動(dòng)。當(dāng)異步復(fù)位信號(hào)有效時(shí),各時(shí)鐘域同時(shí)復(fù)位,但是復(fù)位釋放的時(shí)間由各自的驅(qū)動(dòng)時(shí)鐘決定,也是就說:時(shí)鐘快的先釋放,時(shí)鐘慢的后釋放,但是各復(fù)位信號(hào)之間沒有先后關(guān)系。2.s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論