版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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í)
2、序分析。1) 設(shè)計(jì)相對(duì)簡(jiǎn)單。2) 因?yàn)榇蠖鄶?shù)目標(biāo)器件庫(kù)的dff都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。3) 異步復(fù)位信號(hào)識(shí)別方便,而且可以很方便的使用FPGA的全局復(fù)位端口GSR。缺點(diǎn)1) 復(fù)位信號(hào)的有效時(shí)長(zhǎng)必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位任務(wù)。同時(shí)還要考慮,諸如:clk skew,組合邏輯路徑延時(shí),復(fù)位延時(shí)等因素。 2) 由于大多數(shù)的邏輯器件的目標(biāo)庫(kù)內(nèi)的DFF都只有異步復(fù)位端口,所以,倘若采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,
3、這樣就會(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ù)位信號(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ā)生變化
4、。也就是說一個(gè)時(shí)刻允許一個(gè)輸入發(fā)生變化,以避免輸入信號(hào)之間造成的競(jìng)爭(zhēng)冒險(xiǎn)。電路的穩(wěn)定需要有可靠的建立時(shí)間和保持時(shí)間,待下面介紹。 同步電路是由時(shí)序電路(寄存器和各種觸發(fā)器)和組合邏輯電路構(gòu)成的電路,其所有操作都是在嚴(yán)格的時(shí)鐘控制下完成的。這些時(shí)序電路共享同一個(gè)時(shí)鐘,而所有的狀態(tài)變化都是在時(shí)鐘的上升沿(或下降沿)完成的。比如觸發(fā)器,當(dāng)上升延到來時(shí),寄存器把端的電平傳到輸出端。在同步電路設(shè)計(jì)中一般采用D觸發(fā)器,異步電路設(shè)計(jì)中一般采用Latch。2、什么是同步邏輯和異步邏輯? 同步邏輯是時(shí)鐘之間有固定的因果關(guān)系。異步邏輯是各時(shí)鐘之間沒有固定
5、的因果關(guān)系。電路設(shè)計(jì)可分類為同步電路和異步電路設(shè)計(jì)。同步電路利用時(shí)鐘脈沖使其子系統(tǒng)同步運(yùn)作,而異步電路不使用時(shí)鐘脈沖做同步,其子系統(tǒng)是使用特殊的“開始”和“完成”信號(hào)使之同步。由于異步電路具有下列優(yōu)點(diǎn)-無時(shí)鐘歪斜問題、低電源消耗、平均效能而非最差效能、模塊性、可組合和可復(fù)用性-因此近年來對(duì)異步電路研究增加快速,論文發(fā)表數(shù)以倍增,而Intel Pentium 4處理器設(shè)計(jì),也開始采用異步電路設(shè)計(jì)。異步電路主要是組合邏輯電路,用于產(chǎn)生地址譯碼器、或的讀寫控制信號(hào)脈沖,其邏輯輸出與任何時(shí)鐘信號(hào)都沒有關(guān)系,譯碼輸出產(chǎn)生的毛刺通常是可以監(jiān)控的。同步電路是由時(shí)序電路(寄存器和各種觸發(fā)器)和組合邏輯電路構(gòu)成
6、的電路,其所有操作都是在嚴(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 和Holdup時(shí)間? 5、setup和holdup時(shí)間,區(qū)別. 6、解釋setup time和hold time的定義和
7、在時(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í)間裕量。8、說說對(duì)數(shù)字邏輯中的競(jìng)爭(zhēng)和冒險(xiǎn)的理解,并舉例說明競(jìng)爭(zhēng)和冒險(xiǎn)怎樣消除。9、什么是競(jìng)爭(zhēng)與冒險(xiǎn)現(xiàn)
8、象?怎樣判斷?如何消除? 在組合邏輯中,由于門的輸入信號(hào)通路中經(jīng)過了不同的延時(shí),導(dǎo)致到達(dá)該門的時(shí)間不一致叫競(jìng)爭(zhēng)。產(chǎn)生毛刺叫冒險(xiǎn)。如果布爾式中有相反的信號(hào)則可能產(chǎn)生競(jìng)爭(zhēng)和冒險(xiǎn)現(xiàn)象。解決方法:一是添加布爾式的(冗余)消去項(xiàng),但是不能避免功能冒險(xiǎn),二是在芯片外部加電容。三是增加選通電路 在組合邏輯中,由于多少輸入信號(hào)變化先后不同、信號(hào)傳輸?shù)穆窂讲煌?,或是各種器件延遲時(shí)間不同(這種現(xiàn)象稱為競(jìng)爭(zhēng))都有可能造成輸出波形產(chǎn)生不應(yīng)有的尖脈沖(俗稱毛刺),這種現(xiàn)象成為冒險(xiǎn)。10、你知道那些常用邏輯電平?TTL與COMS電平可以直接互連嗎? 常用邏輯電平:TTL、CMOS、LVTTL
9、、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(12V,5V,3.3V);TTL和CMOS不可以直接互連,
10、由于TTL是在之間,而CMOS則是有在12V的有在5V的。CMOS輸出接到TTL是可以直接互連。TTL接到CMOS需要在輸出端口加一上拉電阻接到5V或者12V。cmos的高低電平分別為:Vih>=0.7VDD,Vil<=0.3VDD;Voh>=0.9VDD,Vol<=0.1VDD.ttl的為:Vih>=2.0v,Vil<=0.8v;Voh>=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í)
11、就需要在TTL的輸出端接上拉電阻,以提高輸出高電平的值。2、OC門電路必須加上拉電阻,以提高輸出的搞電平值。3、為加大輸出引腳的驅(qū)動(dòng)能力,有的單片機(jī)管腳上也常使用上拉電阻。4、在COMS芯片上,為了防止靜電造成損壞,不用的管腳不能懸空,一般接上拉電阻產(chǎn)生降低輸入阻抗,提供泄荷通路。5、芯片的管腳加上拉電阻來提高輸出電平,從而提高芯片輸入信號(hào)的噪聲容限增強(qiáng)抗干擾能力。6、提高總線的抗電磁干擾能力。管腳懸空就比較容易接受外界的電磁干擾。7、長(zhǎng)線傳輸中電阻不匹配容易引起反射波干擾,加上下拉電阻是電阻匹配,有效的抑制反射波干擾。上拉電阻阻值的選擇原則包括:1、從節(jié)約功耗及芯片的灌電流能力考慮應(yīng)當(dāng)足夠大
12、;電阻大,電流小。2、從確保足夠的驅(qū)動(dòng)電流考慮應(yīng)當(dāng)足夠?。浑娮栊?,電流大。3、對(duì)于高速電路,過大的上拉電阻可能邊沿變平緩。綜合考慮以上三點(diǎn),通常在1k到10k之間選取。對(duì)下拉電阻也有類似道理/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ù)
13、測(cè)該單元的輸出電平,也無法預(yù)測(cè)何時(shí)輸出才能穩(wěn)定在某個(gè)正確的電平上。在這個(gè)穩(wěn)定期間,觸發(fā)器輸出一些中間級(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ù)位對(duì)復(fù)位信號(hào)要求比
14、較高,不能有毛刺,如果其與時(shí)鐘關(guān)系不確定,也可能出現(xiàn)亞穩(wěn)態(tài)。 13、MOORE 與 MEELEY狀態(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)對(duì)下級(jí)邏輯造成影響,其中對(duì)于單個(gè)控制信號(hào)可以用兩級(jí)同步器,如電平、邊沿檢測(cè)和脈沖,對(duì)多位信號(hào)可以用FIFO,雙口RAM,握手信號(hào)等??鐣r(shí)域的信號(hào)要經(jīng)過同步器
15、同步,防止亞穩(wěn)態(tài)傳播。例如:時(shí)鐘域1中的一個(gè)信號(hào),要送到時(shí)鐘域2,那么在這個(gè)信號(hào)送到時(shí)鐘域2之前,要先經(jīng)過時(shí)鐘域2的同步器同步后,才能進(jìn)入時(shí)鐘域2。這個(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í)
16、,就是用這種方法。如果兩個(gè)時(shí)鐘域之間傳送大量的數(shù)據(jù),可以用異步FIFO來解決問題。我們可以在跨越Clock Domain時(shí)加上一個(gè)低電平使能的Lockup Latch以確保Timing能正確無誤。Verilog里的同步復(fù)位與異步復(fù)位(轉(zhuǎn)) 1.同步復(fù)位(Synchronous Reset)來看一個(gè)簡(jiǎn)單的同步復(fù)位的D觸發(fā)器,Verilog代碼如下:module d_ff (clk, rst_n, datain, dataout ); input
17、0; clk; input rst_n; input datain; ouput dataout;
18、reg dataout; always (posedge clk) begin if (!rst_n) dataout
19、 <= 1'b0; else dataout <= datain; endendmodule綜合后的RTL圖表如下:Altera的MAXII系列的CPLD中,register沒有同步復(fù)位資源,所以同步復(fù)位信號(hào)需要通過額
20、外的邏輯電路實(shí)現(xiàn),同步復(fù)位的優(yōu)點(diǎn):1). 抗干擾性高,可以剔除復(fù)位信號(hào)中周期短于時(shí)鐘周期的毛刺;2). 有利于靜態(tài)時(shí)序分析工具的分析;3). 有利于基于周期的仿真工具的仿真。同步復(fù)位缺點(diǎn):1). 占用更多的邏輯資源;2). 對(duì)復(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è)簡(jiǎn)單的異步復(fù)位的D觸發(fā)器,Verilog代碼如下:module prac ( clk,
21、 rst_n, datain, dataout ); input clk; input rst_n; input &
22、#160; datain; output dataout; reg dataout; always (posedge clk or negedge rst_n)
23、0; begin if (!rst_n) dataout <= 1'b0; else
24、0; dataout <= datain; endendmodule綜合后的RTL圖表如下:異步復(fù)位的優(yōu)點(diǎn):1). 無需額外的邏輯資源,實(shí)現(xiàn)簡(jiǎn)單,而且CPLD有針對(duì)復(fù)位信號(hào)的全局不限資源,可以保證復(fù)位管腳到各個(gè)寄存器的clock skew最小(注意不是到各個(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ù)位同步釋放(
25、Asynchronous Reset Synchronous Release)這種復(fù)位方式在文獻(xiàn)中還有一種稱謂:Synchronized Asynchronous Reset,這種稱謂應(yīng)該在國(guó)外的技術(shù)人員中比較流行,與Altera的工程師交流過程中,他們一直使用Synchronized Asynchronous Reset這種稱謂(當(dāng)然也可能是個(gè)人的習(xí)慣)。來看一個(gè)Synchronized Asynchronous Reset例子,Verilog代碼如下:module prac ( clk, reset_n, dataa,
26、60;datab, outa, outb ); input clk; input reset_n; input dataa;
27、 input datab; output outa; output outb; reg
28、 reg1; reg reg2; reg reg3; reg
29、 reg4; assign outa = reg1; assign outb = reg2; assign rst
30、_n = reg4; always (posedge clk or negedge reset_n) begin if (!reset_n) begin &
31、#160; reg3 <= 1'b0; reg4 <= 1'b0;
32、; end else begin reg3 <= 1'b1;
33、0; reg4 <= reg3; end end always (posedge clk or negedge rst_n)
34、 begin if (!rst_n) begin reg1 <= 1'b0;
35、160; reg2 <= 1'b0; end else
36、 begin reg1 <= dataa; reg2 <= datab
37、; end endendmodule綜合后的RTL圖表如下:此文來源于Implementation and Timing of Reset Circuits in Altera FPGAs,例子程序可能代碼與源代碼略有出入,RTL圖是用QuartusII 8.1綜合的,與原文也有出入。異步復(fù)位、同步釋放FPGA設(shè)計(jì)中常見的復(fù)位方式即同步復(fù)位和異步復(fù)位。在深入探討亞穩(wěn)態(tài)這個(gè)概念之前, 很多人并沒有對(duì)所謂的同步復(fù)
38、位和異步復(fù)位有太多的注意,而在實(shí)踐中充分感受了亞穩(wěn)態(tài)的危害之后,回過頭來細(xì)細(xì)品味Verilog HDL設(shè)計(jì)與驗(yàn)證一書中關(guān)于復(fù)位的章節(jié),可謂受益匪淺。在以前的代碼里大多使用的是異步復(fù)位。一個(gè)簡(jiǎn)單的異步復(fù)位的例子always (posedge clk or negedge rst_n)if(!rst_n) b <= 1'b0;else b <= a;我們可以看到FPGA的寄存器都有一個(gè)異步的清零端(CLR),在異步復(fù)位的設(shè)計(jì)中這個(gè)端口一般就是接低電平有效的復(fù)位信號(hào)rst_n。即使說你的設(shè)計(jì)中是高電平復(fù)位,那么實(shí)際綜合后會(huì)把你的復(fù)位信號(hào)反向后接這個(gè)CLR端。一個(gè)簡(jiǎn)單的同步復(fù)位的例
39、子always (posedge clk)if(!rst_n) b <= 1'b0;else b <= a; 和異步復(fù)位相比,同步復(fù)位沒有用上寄存器的CLR端口,綜合出來的實(shí)際電路只是把復(fù)位信號(hào)rst_n作為了輸入邏輯的使能信號(hào)。那么,這樣的同步復(fù)位勢(shì)必會(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)的概率;它的不好上面也說了,在于它需要消耗更多的器件資源,這是我們不希望看到的。FPGA的寄存器有支持異步復(fù)位專用的端口,采用異步復(fù)位
40、的端口無需額外增加器件資源的消耗,但是異步復(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 <= 1'b0;else b <= a;always (posedge clk or negedge rst_n)if(!rst_n) c <= 1'b0;else c <= b;正常情況下,clk的上升沿c更新為b,b更新為a。一旦進(jìn)入復(fù)位,b,c都清零;但
41、是我們不能確定復(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檢測(cè)到的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ù)位或者都跳出復(fù)位,再或者一個(gè)復(fù)位一個(gè)跳
42、出復(fù)位。那么后者就會(huì)造成了系統(tǒng)工作不同步的問題,在這個(gè)簡(jiǎn)單的兩級(jí)異步復(fù)位實(shí)例中這種危害表現(xiàn)的并不明顯,但是我們?cè)囅胍粋€(gè)大的工程項(xiàng)目里眾多的寄存器出現(xiàn)如此情況又會(huì)是如何一番景象呢?上面的分析似乎都讓人意識(shí)到同步復(fù)位和異步復(fù)位都不可靠,那么如何將兩者結(jié)合,取長(zhǎng)補(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 <= 1'b0;else b <= a;always (posedge clk o
43、r negedge rst_nr)if(!rst_nr) c <= 1'b0;else c <= b;如此一來,既解決了同步復(fù)位的資源消耗問題,也解決了異步復(fù)位的亞穩(wěn)態(tài)問題。其根本思想,也是將異步信號(hào)同步化。另外特權(quán)同學(xué)請(qǐng)教過IC設(shè)計(jì)部一位資深專家,他們?cè)谠O(shè)計(jì)中常用的復(fù)位方式和上面的方法類似,大體如下:VHDL與Verilog中的同步和異步復(fù)位 這兩種復(fù)位方式的區(qū)別主要看是否需要時(shí)鐘的參與:異步復(fù)位不需要時(shí)鐘的參與,只要復(fù)位信號(hào)一有效就立即執(zhí)行復(fù)位操作;同步信號(hào)需要時(shí)鐘參與,只有當(dāng)時(shí)鐘有效沿
44、來時(shí),復(fù)位信號(hào)才有效。 同步復(fù)位的最大好處是有效防止復(fù)位信號(hào)的毛刺引起的誤復(fù)位操作,只要毛刺不在時(shí)鐘有效沿附近出現(xiàn),就不會(huì)影響電路正常工作;而若是異步復(fù)位,其復(fù)位信號(hào)的毛刺會(huì)立即引起電路復(fù)位。 異步復(fù)位可以在沒有時(shí)鐘的情況下完成復(fù)位,所以可以使電路在上電的時(shí)候完成對(duì)系統(tǒng)的復(fù)位,而且異步復(fù)位所消耗的資源比同步復(fù)位少。一般的,只要能保證復(fù)位信號(hào)的穩(wěn)定,我們建議使用異步復(fù)位。 我們看一下
45、同步和異步復(fù)位在VHDL和Verilog下的實(shí)現(xiàn)細(xì)節(jié): VHDL: PROCESS(clk,reset)同步復(fù)位 BEGIN If(rising_edge(clk) then
46、60; If(reset=1) then復(fù)位信號(hào)在時(shí)鐘有效沿下進(jìn)行判斷 -執(zhí)行復(fù)位操作 End if;
47、60; End if; END PROCESS(clk,reset)異步復(fù)位 BEGIN If(reset=1) then復(fù)位信號(hào)在不需要在時(shí)鐘有效沿下進(jìn)行判斷 -執(zhí)行復(fù)位操作
48、160; elsif(rising_edge(clk) then . End if; END Verilog:
49、; always (posedge clk or posedge reset)/異步復(fù)位,在敏感信號(hào)里加復(fù)位信號(hào) if(reset) begin
50、 /執(zhí)行復(fù)位操作 end else begin &
51、#160; end always (posedge clk)/同步復(fù)位,在敏感信號(hào)不用加復(fù)位信號(hào) if(reset) &
52、#160; begin /執(zhí)行復(fù)位操作 end &
53、#160; else begin End同步復(fù)位和異步復(fù)位的比較各自的優(yōu)缺點(diǎn):1、總的來說,同
54、步復(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í)長(zhǎng)必須大于時(shí)鐘周期,才能真正被系統(tǒng)識(shí)別并完成復(fù)位任務(wù)。同時(shí)還要考慮,諸如:clk skew,組合邏輯路徑延時(shí),復(fù)位延時(shí)等因素。b、由于大多數(shù)的邏輯器件的目標(biāo)庫(kù)內(nèi)的DFF都只有異步復(fù)位端口,所以,倘若采用同步復(fù)位的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會(huì)耗費(fèi)較多的邏輯資源。2、對(duì)于異步復(fù)位來說,他的優(yōu)
55、點(diǎn)也有三條,都是相對(duì)應(yīng)的a、大多數(shù)目標(biāo)器件庫(kù)的dff都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。b、設(shè)計(jì)相對(duì)簡(jiǎn)單。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é)合了雙方面的優(yōu)點(diǎn),很好的克服了異
56、步復(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 asyncrst_n) beginif (!asyncrst_n) rst_n,rff1 <= 2'b0;else rst_n,rf
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 卸船行業(yè)營(yíng)銷策略方案
- 電視發(fā)射器項(xiàng)目營(yíng)銷計(jì)劃書
- 電照明裝置項(xiàng)目營(yíng)銷計(jì)劃書
- 砂紙卷市場(chǎng)分析及投資價(jià)值研究報(bào)告
- 磁性編碼器產(chǎn)品供應(yīng)鏈分析
- 壓力水箱產(chǎn)品供應(yīng)鏈分析
- 襯衫式外套項(xiàng)目運(yùn)營(yíng)指導(dǎo)方案
- 化妝品用散沫花產(chǎn)品供應(yīng)鏈分析
- 上衣產(chǎn)品供應(yīng)鏈分析
- 可重復(fù)使用的尿布更換墊產(chǎn)品供應(yīng)鏈分析
- 知識(shí)創(chuàng)業(yè)思維與方法智慧樹知到答案2024年湖南師范大學(xué)
- GB 39752-2024電動(dòng)汽車供電設(shè)備安全要求
- 新教科版三上科學(xué)3.6《觀察云》教案(新課標(biāo))
- 財(cái)務(wù)會(huì)計(jì)學(xué)中國(guó)人民大學(xué)商學(xué)院會(huì)計(jì)系戴德明
- 第五章 第1講 開普勒三定律與萬有引力定律-2025高三總復(fù)習(xí) 物理(新高考)
- 新質(zhì)生產(chǎn)力賦能職業(yè)教育高質(zhì)量發(fā)展
- 2024-2030年中國(guó)酒瓶行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 燈謎文化智慧樹知到期末考試答案章節(jié)答案2024年西安交通大學(xué)
- 學(xué)習(xí)動(dòng)機(jī)的干預(yù)策略研究
- 2024年云南省中考英語試卷附答案
- 2024年保育員考試題庫(kù)加解析答案
評(píng)論
0/150
提交評(píng)論