新聞中心

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

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

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

前兩天和師兄討論了一下design rule其中提到了同步的比較這個(gè)常見問題,據(jù)說也是IC公司經(jīng)常問到的一面試題。后來在網(wǎng)上看了些相關(guān)資料,終于在這一點(diǎn)有了比較清晰的感念,眼看就要實(shí)習(xí)了,唯恐同學(xué)們面試時(shí)陰溝里翻船,特此將這個(gè)問題總結(jié)如下(如果你對(duì):你在設(shè)計(jì)中如何復(fù)位?為什么這樣復(fù)位?這兩個(gè)問題概念清晰,本貼可以略過)一、概念::就是指復(fù)位信號(hào)只有在時(shí)鐘上升沿到來時(shí),才能有效,否則無法完成對(duì)系統(tǒng)的復(fù)位工作。用verilog描述如下:always @ (posedge clk)begin if (!Rst_n) ... end:它是指無論時(shí)鐘沿是否到來,只要復(fù)位信號(hào)有效,就對(duì)系統(tǒng)進(jìn)行復(fù)位。用Verilog描述如下:always @ (posedge clk or negedge Rst_n)begin if (!Rst_n) ...end二、各自的優(yōu)缺點(diǎn):1. 的優(yōu)點(diǎn)大概有3條:a. 有利于仿真器的仿真。b. 可以使所設(shè)計(jì)的系統(tǒng)成為的同步時(shí)序電路,這便大大有利于時(shí)序分析,而且綜合出來的一般較高。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都只有端口,所以,倘若采用的話,綜合器就會(huì)在寄存器的數(shù)據(jù)輸入端口插入組合邏輯,這樣就會(huì)耗費(fèi)較多的邏輯資源。2. 異步復(fù)位優(yōu)點(diǎn)也有三條,都是相對(duì)應(yīng)的a. 大多數(shù)目標(biāo)器件庫(kù)的都有異步復(fù)位端口,因此采用異步復(fù)位可以節(jié)省資源。b. 設(shè)計(jì)相對(duì)簡(jiǎn)單。c. 異步復(fù)位信號(hào)識(shí)別方便,而且可以很方便的使用的全局復(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ù)位,同步釋放的方式,而且復(fù)位信號(hào)低電平有效。這樣就可以兩全其美了。也就是上文中所說的:“異步復(fù)位,同步釋放”。這就結(jié)合了雙方面的優(yōu)點(diǎn),很好的克服了異步復(fù)位的缺點(diǎn)(因?yàn)楫惒綇?fù)位的問題主要出現(xiàn)在復(fù)位信號(hào)釋放的時(shí)候,具體原因可見上文)。 具體實(shí)現(xiàn)并不難,這里列出一種方式:那就是在異步復(fù)位鍵后加上一個(gè)所謂的“reset synchronizer”,這樣就可以使異步復(fù)位信號(hào)同步化,然后,再用經(jīng)過處理的復(fù)位信號(hào)去作用系統(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大家可以看到,這就是一個(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è)觸發(fā)器,然后用D觸發(fā)器的輸出作為后級(jí)系統(tǒng)的復(fù)位信號(hào),也能達(dá)到相同的效果。

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


評(píng)論


相關(guān)推薦

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

關(guān)閉