新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > FPGA開發(fā)技巧之同步復(fù)位與異步復(fù)位的理解

FPGA開發(fā)技巧之同步復(fù)位與異步復(fù)位的理解

作者: 時間:2017-10-13 來源:網(wǎng)絡(luò) 收藏

前兩天和師兄討論了一下design rule其中提到了同步的比較這個常見問題,據(jù)說也是IC公司經(jīng)常問到的一面試題。后來在網(wǎng)上看了些相關(guān)資料,終于在這一點有了比較清晰的感念,眼看就要實習(xí)了,唯恐同學(xué)們面試時陰溝里翻船,特此將這個問題總結(jié)如下(如果你對:你在設(shè)計中如何復(fù)位?為什么這樣復(fù)位?這兩個問題概念清晰,本貼可以略過)一、概念::就是指復(fù)位信號只有在時鐘上升沿到來時,才能有效,否則無法完成對系統(tǒng)的復(fù)位工作。用verilog描述如下:always @ (posedge clk)begin if (!Rst_n) ... end:它是指無論時鐘沿是否到來,只要復(fù)位信號有效,就對系統(tǒng)進(jìn)行復(fù)位。用Verilog描述如下:always @ (posedge clk or negedge Rst_n)begin if (!Rst_n) ...end二、各自的優(yōu)缺點:1. 的優(yōu)點大概有3條:a. 有利于仿真器的仿真。b. 可以使所設(shè)計的系統(tǒng)成為的同步時序電路,這便大大有利于時序分析,而且綜合出來的一般較高。c. 因為他只有在時鐘有效電平到來時才有效,所以可以濾除高于時鐘頻率的毛刺。缺點:a. 復(fù)位信號的有效時長必須大于時鐘周期,才能真正被系統(tǒng)識別并完成復(fù)位任務(wù)。同時還要考慮,諸如:clk skew組合邏輯路徑延時,復(fù)位延時等因素。b. 由于大多數(shù)的邏輯器件的目標(biāo)庫內(nèi)的DFF都只有端口,所以,倘若采用的話,綜合器就會在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會耗費較多的邏輯資源。2. 異步復(fù)位優(yōu)點也有三條,都是相對應(yīng)的a. 大多數(shù)目標(biāo)器件庫的都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。b. 設(shè)計相對簡單。c. 異步復(fù)位信號識別方便,而且可以很方便的使用的全局復(fù)位端口GSR。缺點:a. 在復(fù)位信號釋放(release)的時候容易出現(xiàn)問題。具體就是說:倘若復(fù)位釋放時恰恰在時鐘有效沿附近,就很容易使寄存器輸出出現(xiàn)亞穩(wěn)態(tài),從而導(dǎo)致亞穩(wěn)態(tài)。b. 復(fù)位信號容易受到毛刺的影響。三、總結(jié)及推薦復(fù)位方式: 所以說,一般都推薦使用異步復(fù)位,同步釋放的方式,而且復(fù)位信號低電平有效。這樣就可以兩全其美了。也就是上文中所說的:“異步復(fù)位,同步釋放”。這就結(jié)合了雙方面的優(yōu)點,很好的克服了異步復(fù)位的缺點(因為異步復(fù)位的問題主要出現(xiàn)在復(fù)位信號釋放的時候,具體原因可見上文)。 具體實現(xiàn)并不難,這里列出一種方式:那就是在異步復(fù)位鍵后加上一個所謂的“reset synchronizer”,這樣就可以使異步復(fù)位信號同步化,然后,再用經(jīng)過處理的復(fù)位信號去作用系統(tǒng),就可以保證比較穩(wěn)定了。reset sychronizer的代碼如下:module Reset_Synchronizer( output reg rst_n, input clk, asyncrst_n); reg rff1;always @ (posedge clk , negedge asyncrst_n) begin if (!asyncrst_n) {rst_n,rff1} = 2b0; else {rst_n,rff1} = {rff1,1b1}; endendmodule大家可以看到,這就是一個dff,異步復(fù)位信號直接接在它的異步復(fù)位端口上(低電平有效),然后數(shù)據(jù)輸入端rff1一直為高電平1。倘若異步復(fù)位信號有效的話,觸發(fā)器就會復(fù)位,輸出為低,從而復(fù)位后繼系統(tǒng)。但是,又由于這屬于時鐘沿觸發(fā),當(dāng)復(fù)位信號釋放時,觸發(fā)器的輸出要延遲一個時鐘周期才能恢復(fù)成1’,因此使得復(fù)位信號的釋放與時鐘沿同步化。此外,還有一種方法更為直接,就是直接在異步復(fù)位信號后加一個觸發(fā)器,然后用D觸發(fā)器的輸出作為后級系統(tǒng)的復(fù)位信號,也能達(dá)到相同的效果。

本文引用地址:http://butianyuan.cn/article/201710/365680.htm


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉