新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > FPGA重點知識13條,助你構(gòu)建完整“邏輯觀”之二

FPGA重點知識13條,助你構(gòu)建完整“邏輯觀”之二

作者: 時間:2018-02-11 來源:網(wǎng)絡 收藏

  圖 給出一個不可靠的門控的例子。3位同步加法計數(shù)器的RCO輸出用來鐘控觸發(fā)器。然而,計數(shù)器給出的多個輸入起到的作用,這違反了可靠門控所需的條件之一。在產(chǎn)生RCO信號的觸發(fā)器中,沒有一個能考慮為實際的時鐘線,這是因為所有觸發(fā)器在幾乎相同的時刻發(fā)生翻轉(zhuǎn)。而我們并不能保證在PLD/內(nèi)部QA,QB,QC到D觸發(fā)器的布線長短一致,因此,如 圖5 的時間波形所示,在器從3計到4時,RCO線上會出現(xiàn)毛刺(假設QC到D觸發(fā)器的路徑較短,即QC的輸出先翻轉(zhuǎn))。

本文引用地址:http://m.butianyuan.cn/article/201802/375719.htm


  圖5 不可靠的門控時鐘

  (定時波形示出在計數(shù)器從3到4改變時,RCO信號如何出現(xiàn)毛刺的)

  圖6 給出一種可靠的全局鐘控的電路,它是圖5不可靠計數(shù)器電路的改進,RCO控制D觸發(fā)器的使能輸入。這個改進不需要增加PLD的邏輯單元。


  圖6 不可靠的門控時鐘轉(zhuǎn)換為全局時鐘

  (這個電路等效于圖5電路,但卻可靠的多)

  3.多級邏輯時鐘

  當產(chǎn)生門控時鐘的組合邏輯超過一級(即超過單個的“與”門或“或”門)時,證設計項目的可靠性變得很困難。即使樣機或仿真結(jié)果沒有顯示出靜態(tài)險象,但實際上仍然可能存在著危險。通常,我們不應該用多級組合邏輯去鐘控PLD設計中的觸發(fā)器。

  圖7給出一個含有險象的多級時鐘的例子。時鐘是由SEL引腳控制的多路選擇器輸出的。多路選擇器的輸入是時鐘(CLK)和該時鐘的2分頻(DIV2)。由圖7 的定時波形圖看出,在兩個時鐘均為邏輯1的情況下,當SEL線的狀態(tài)改變時,存在靜態(tài)險象。險象的程度取決于工作的條件。 多級邏輯的險象是可以去除的。例如,你可以插入“冗余邏輯”到設計項目中。然而,PLD/編譯器在邏輯綜合時會去掉這些冗余邏輯,使得驗證險象是否真正被去除變得困難了。為此,必須應尋求其它方法來實現(xiàn)電路的功能。

  圖8給出圖7電路的一種單級時鐘的替代方案。圖中SEL引腳和DIV2信號用于使能D觸發(fā)器的使能輸入端,而不是用于該觸發(fā)器的時鐘引腳。采用這個電路并不需要附加PLD的邏輯單元,工作卻可靠多了。 不同的系統(tǒng)需要采用不同的方法去除多級時鐘,并沒有固定的模式。


  圖7 無靜態(tài)險象的多級時鐘

  (這個電路邏輯上等效于圖7,但卻可靠的多)

  4.行波時鐘

  另一種流行的時鐘電路是采用行波時鐘,即一個觸發(fā)器的輸出用作另一個觸發(fā)器的時鐘輸入。如果仔細地設計,行波時鐘可以象全局時鐘一樣地可靠工作。然而,行波時鐘使得與電路有關(guān)的定時計算變得很復雜。行波時鐘在行波鏈上各觸發(fā)器的時鐘之間產(chǎn)生較大的時間偏移,并且會超出最壞情況下的建立時間、保持時間和電路中時鐘到輸出的延時,使系統(tǒng)的實際速度下降。

  用計數(shù)翻轉(zhuǎn)型觸發(fā)器構(gòu)成異步計數(shù)器時常采用行波時鐘,一個觸發(fā)器的輸出鐘控下一個觸發(fā)器的輸入,參看圖9 同步計數(shù)器通常是代替異步計數(shù)器的更好方案,這是因為兩者需要同樣多的宏單元而同步計數(shù)器有較快的時鐘到輸出的時間。圖10 給出具有全局時鐘的同步計數(shù)器,它和 圖9 功能相同,用了同樣多的邏輯單元實現(xiàn),卻有較快的時鐘到輸出的時間。幾乎所有PLD開發(fā)軟件都提供多種多樣的同步計數(shù)器。


  圖9 行波時鐘


  圖10 行波時鐘轉(zhuǎn)換成全局時鐘

  (這個3位計數(shù)器是圖9異步計數(shù)器的替代電路,它用了同樣的3個宏單元,但有更短的時鐘到輸出的延時)

  5. 多時鐘系統(tǒng)

  許多系統(tǒng)要求在同一個PLD內(nèi)采用多時鐘。最常見的例子是兩個異步微處理器器之間的接口,或微處理器和異步通信通道的接口。由于兩個時鐘信號之間要求一定的建立和保持時間,所以,上述應用引進了附加的定時約束條件。它們也會要求將某些異步信號同步化。

  圖11 給出一個多時鐘系統(tǒng)的實例。CLK_A用以鐘控REG_A,CLK_B用于鐘控REG_B,由于REG_A驅(qū)動著進入REG_B的組合邏輯,故CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的要求。由于REG_B不驅(qū)動饋到REG_A的邏輯,CLK_B的上升沿相對于CLK_A沒有建立時間的要求。此外,由于時鐘的下降沿不影響觸發(fā)器的狀態(tài),所以CLK_A和CLK_B的下降沿之間沒有時間上的要求。, 如圖4,2.II所示,電路中有兩個獨立的時鐘,可是,在它們之間的建立時間和保持時間的要求是不能保證的。在這種情況下,必須將電路同步化。圖12 給出REG_A的值(如何在使用前)同CLK_B同步化。新的觸發(fā)器REG_C由GLK_B觸控,保證REG_G的輸出符合REG_B的建立時間。然而,這個方法使輸出延時了一個時鐘周期。


  圖ll 多時鐘系統(tǒng)

  (定時波形示出CLK_A的上升沿相對于CLK_B的上升沿有建立時間和保持時間的約束條件)


  圖12 具有同步寄存器輸出的多時鐘系統(tǒng)

  (如果CLK_A和CLK_B是相互獨立的,則REG—A的輸出必須在它饋送到1REG_B之前,用REG_C同步化)

  在許多應用中只將異步信號同步化還是不夠的,當系統(tǒng)中有兩個或兩個以上非同源時鐘的時候,數(shù)據(jù)的建立和保持時間很難得到保證,我們將面臨復雜的時間問題。最好的方法是將所有非同源時鐘同步化。使用PLD內(nèi)部的鎖項環(huán)(PLL或DLL)是一個效果很好的方法,但不是所有PLD都帶有PLL、DLL,而且?guī)в蠵LL功能的芯片大多價格昂貴,所以除非有特殊要求,一般場合可以不使用帶PLL的PLD。 這時我們需要使用帶使能端的D觸發(fā)器,并引入一個高頻時鐘。


  圖13 不同源時鐘

  如圖13所示,系統(tǒng)有兩個不同源時鐘,一個為3MHz,一個為5MHz,不同的觸發(fā)器使用不同的時鐘。為了系統(tǒng)穩(wěn)定,我們引入一個20MHz時鐘,將3M和5M時鐘同步化,如圖15所示。 20M的高頻時鐘將作為系統(tǒng)時鐘,輸入到所有觸發(fā)器的的時鐘端。3M_EN 和5M_EN將控制所有觸發(fā)器的使能端。即原來接3M時鐘的觸發(fā)器,接20M時鐘,同時3M_EN 將控制該觸發(fā)器使能 ,原接5M時鐘的觸發(fā)器,也接20M時鐘,同時5M_EN 將控制該觸發(fā)器使能。 這樣我們就可以將任何非同源時鐘同步化。


  圖13 同步化任意非同源時鐘

  (一個DFF和后面非門,與門構(gòu)成時鐘上升沿檢測電路)

  另外,異步信號輸入總是無法滿足數(shù)據(jù)的建立保持時間,容易使系統(tǒng)進入亞穩(wěn)態(tài),所以也建議設計者把所有異步輸入都先經(jīng)過雙觸發(fā)器進行同步化。



關(guān)鍵詞: FPGA 時鐘

評論


相關(guān)推薦

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

關(guān)閉