當(dāng)你需要將FPGA/CPLD內(nèi)部的信號(hào)通過(guò)管腳輸出給外部相關(guān)器件的時(shí)候,如果不影響功能最好是將這些信號(hào)通過(guò)用時(shí)鐘鎖存后輸出。因?yàn)橥ǔG闆r下一個(gè)板子是工作于一種或兩種時(shí)鐘模式下,與FPGA/CPLD相連接的芯片的工作時(shí)鐘大多數(shù)情形下與FPGA的時(shí)鐘同源,如果輸出的信號(hào)經(jīng)過(guò)時(shí)鐘鎖存可以起到如下的作用:
容易滿足芯片間信號(hào)連接的時(shí)序要求;
容易滿足信號(hào)的建立保持時(shí)間;

如上圖所示,比如FPGA/CPLD在CLK的時(shí)鐘沿1鎖存一個(gè)信號(hào)得到SIG所示的波形,SIG信號(hào)需要給另外的一個(gè)與其接口的芯片,那么該芯片將一定會(huì)在CLK的時(shí)鐘沿2正確采樣到SIG信號(hào)。但是如果該信號(hào)在FPGA/CPLD中輸出的時(shí)候不是用時(shí)鐘沿鎖存的,那將有可能出現(xiàn)SIG1/SIG2所示的時(shí)序關(guān)系,則與其接口的芯片在時(shí)鐘沿2處采樣該信號(hào)的時(shí)候有可能出現(xiàn)建立保持時(shí)間不滿足要求而出現(xiàn)采樣不可靠、沿打沿等情況。另外通過(guò)組合邏輯輸出還有可能出現(xiàn)毛刺的情況。所有這些不規(guī)范的設(shè)計(jì)都會(huì)引起系統(tǒng)工作時(shí)的不可靠、不穩(wěn)定的情形。
2.5 寄存異步輸入信號(hào)
我們?cè)谌粘5脑O(shè)計(jì)工作中,F(xiàn)PGA/CPLD總是要與別的芯片相連接的,F(xiàn)PGA/CPLD會(huì)給別的芯片輸出信號(hào),同時(shí)也要處理別的芯片送來(lái)的信號(hào),這些信號(hào)往往對(duì)FPGA/CPLD內(nèi)部的時(shí)鐘系統(tǒng)而言是異步的,為了可靠的采樣到這些輸入信號(hào),建議將這些輸入信號(hào)使用相應(yīng)的時(shí)鐘鎖存后在處理,這樣做:
將原來(lái)的異步信號(hào)轉(zhuǎn)化成同步來(lái)處理;
去除輸入信號(hào)中的毛刺(特別是對(duì)于數(shù)據(jù)總線);

FPGA/CPLD中信號(hào)的輸入、輸出鎖存
2.6 FPGA/CPLD中的時(shí)鐘設(shè)計(jì)
無(wú)淪是用離散邏輯、可編程邏輯,還是用全定制硅器件實(shí)現(xiàn)的任何數(shù)字設(shè)計(jì),為了成功地操作,可靠的時(shí)鐘是非常關(guān)鍵的。設(shè)計(jì)不良的時(shí)鐘在極限的溫度、電壓或制造工藝的偏差情況下將導(dǎo)致錯(cuò)誤的行為,并且調(diào)試?yán)щy、花銷很大。在設(shè)計(jì)FPGA/CPLD時(shí)通常采用幾種時(shí)鐘類型。時(shí)鐘可分為如下四種類型:全局時(shí)鐘、門控時(shí)鐘、多級(jí)邏輯時(shí)鐘和波動(dòng)式時(shí)鐘。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合。
無(wú)論采用何種方式,電路中真實(shí)的時(shí)鐘樹也無(wú)法達(dá)到假定的理想時(shí)鐘,因此我們必須依據(jù)理想時(shí)鐘,建立一個(gè)實(shí)際工作時(shí)鐘模型來(lái)分析電路,這樣才可以使得電路的實(shí)際工作效果和預(yù)期的一樣。在實(shí)際的時(shí)鐘模型中,我們要考慮時(shí)鐘樹傳播中的偏斜、跳變和絕對(duì)垂直的偏差以及其它一些不確定因素。
對(duì)于寄存器而言,當(dāng)時(shí)鐘工作沿到來(lái)時(shí)它的數(shù)據(jù)端應(yīng)該已經(jīng)穩(wěn)定,這樣才能保證時(shí)鐘工作沿采樣到數(shù)據(jù)的正確性,這段數(shù)據(jù)的預(yù)備時(shí)間我們稱之為建立時(shí)間(setup time)。數(shù)據(jù)同樣應(yīng)該在時(shí)鐘工作沿過(guò)去后保持一段時(shí)間,這段時(shí)間稱為保持時(shí)間(hold time)。因此具體的時(shí)鐘如圖5所示。其中網(wǎng)絡(luò)延遲是指時(shí)鐘的傳播延時(shí)以及因?yàn)樘儾淮怪钡刃У钠?,在此基礎(chǔ)上考慮一些不確定因素實(shí)際的工作時(shí)鐘沿如圖中所示。保持時(shí)間(hold)和建立時(shí)間(setup)都是相對(duì)于實(shí)際時(shí)鐘跳變而言的。因此在確定電路時(shí)序時(shí),必須要考慮到這些因素,使得建立時(shí)間和保持時(shí)間符合要求。
?

?
圖5 工作時(shí)鐘模型
為了使電路正常工作,建立時(shí)間和保持時(shí)間應(yīng)該分別滿足:
其中tclock_Q_max是時(shí)鐘沿變化到數(shù)據(jù)輸出端變化的最慢變化情況,tlogic_max是寄存器間組合邏輯的最大可能延遲,tclock_Q_min和tlogic_min表示最快情況。在考慮建立保持時(shí)間時(shí),應(yīng)該考慮時(shí)鐘樹向后偏斜的情況,在考慮建立時(shí)間時(shí)應(yīng)該考慮時(shí)鐘樹向前偏斜的情況。在進(jìn)行后仿真時(shí),最大延遲用來(lái)檢查建立時(shí)間,最小延時(shí)用來(lái)檢查保持時(shí)間。
2.6.1 全局時(shí)鐘
對(duì)于一個(gè)設(shè)計(jì)項(xiàng)目來(lái)說(shuō),全局時(shí)鐘(或同步時(shí)鐘)是最簡(jiǎn)單和最可預(yù)測(cè)的時(shí)鐘。在PLD/FPGA設(shè)計(jì)中最好的時(shí)鐘方案是:由專用的全局時(shí)鐘輸入引腳驅(qū)動(dòng)的單個(gè)主時(shí)鐘去鐘控設(shè)計(jì)項(xiàng)目中的每一個(gè)觸發(fā)器。只要可能就應(yīng)盡量在設(shè)計(jì)項(xiàng)目中采用全局時(shí)鐘。PLD/FPGA都具有專門的全局時(shí)鐘引腳,它直接連到器件中的每一個(gè)寄存器。這種全局時(shí)鐘提供器件中最短的時(shí)鐘到輸出的延時(shí)。
圖1示出全局時(shí)鐘的實(shí)例。圖1定時(shí)波形示出觸發(fā)器的數(shù)據(jù)輸入D[1..3]應(yīng)遵守建立時(shí)間和保持時(shí)間的約束條件。建立和保持時(shí)間的數(shù)值在PLD數(shù)據(jù)手冊(cè)中給出,也可用軟件的定時(shí)分析器計(jì)算出來(lái)。如果在應(yīng)用中不能滿足建立和保持時(shí)間的要求,則必須用時(shí)鐘同步輸入信號(hào)(參看下一章“異步輸入”)。

?
圖1 全局時(shí)鐘
(最好的方法是用全局時(shí)鐘引腳去鐘控PLD內(nèi)的每一個(gè)寄存器,于是數(shù)據(jù)只要遵守相對(duì)時(shí)鐘的建立時(shí)間tsu和保持時(shí)間th)
2.6.2 門控時(shí)鐘
在許多應(yīng)用中,整個(gè)設(shè)計(jì)項(xiàng)目都采用外部的全局時(shí)鐘是不可能或不實(shí)際的。PLD具有乘積項(xiàng)邏輯陣列時(shí)鐘(即時(shí)鐘是由邏輯產(chǎn)生的),允許任意函數(shù)單獨(dú)地鐘控各個(gè)觸發(fā)器。然而,當(dāng)你用陣列時(shí)鐘時(shí),應(yīng)仔細(xì)地分析時(shí)鐘函數(shù),以避免毛刺。
通常用陣列時(shí)鐘構(gòu)成門控時(shí)鐘。門控時(shí)鐘常常同微處理器接口有關(guān),用地址線去控制寫脈沖。然而,每當(dāng)用組合函數(shù)鐘控觸發(fā)器時(shí),通常都存在著門控時(shí)鐘。如果符合下述條件,門控時(shí)鐘可以象全局時(shí)鐘一樣可靠地工作:
驅(qū)動(dòng)時(shí)鐘的邏輯必須只包含一個(gè)“與”門或一個(gè)“或”門。如果采用任何附加邏在某些工作狀態(tài)下,會(huì)出現(xiàn)競(jìng)爭(zhēng)產(chǎn)生的毛刺。
邏輯門的一個(gè)輸入作為實(shí)際的時(shí)鐘,而該邏輯門的所有其它輸入必須當(dāng)成地址或控制線,它們遵守相對(duì)于時(shí)鐘的建立和保持時(shí)間的約束。
圖2和圖3是可靠的門控時(shí)鐘的實(shí)例。在 圖2 中,用一個(gè)“與”門產(chǎn)生門控時(shí)鐘,在 圖3 中,用一個(gè)“或”門產(chǎn)生門控時(shí)鐘。在這兩個(gè)實(shí)例中,引腳nWR和nWE考慮為時(shí)鐘引腳,引腳ADD[o..3]是地址引腳,兩個(gè)觸發(fā)器的數(shù)據(jù)是信號(hào)D[1..n]經(jīng)隨機(jī)邏輯產(chǎn)生的。
?

?

圖2 “與”門門控時(shí)鐘
?


圖3 “或”門門控時(shí)鐘
圖2和圖3的波形圖顯示出有關(guān)的建立時(shí)間和保持時(shí)間的要求。這兩個(gè)設(shè)計(jì)項(xiàng)目的地址線必須在時(shí)鐘保持有效的整個(gè)期間內(nèi)保持穩(wěn)定(nWR和nWE是低電平有效)。如果地址線在規(guī)定的時(shí)間內(nèi)未保持穩(wěn)定,則在時(shí)鐘上會(huì)出現(xiàn)毛刺,造成觸發(fā)器發(fā)生錯(cuò)誤的狀態(tài)變化。另一方面,數(shù)據(jù)引腳D[1..n]只要求在nWR和nWE的有效邊沿處滿足標(biāo)準(zhǔn)的建立和保持時(shí)間的規(guī)定。
我們往往可以將門控時(shí)鐘轉(zhuǎn)換成全局時(shí)鐘以改善設(shè)計(jì)項(xiàng)目的可靠性。圖4示出如何用全局時(shí)鐘重新設(shè)計(jì)圖2的電路。地址線在控制D觸發(fā)器的使能輸入,許多PLD設(shè)計(jì)軟件,如MAX+PLUSII軟件都提供這種帶使能端的D觸發(fā)器。當(dāng)ENA為高電平時(shí),D輸入端的值被鐘控到觸發(fā)器中:當(dāng)ENA為低電平時(shí),維持現(xiàn)在的狀態(tài)。


圖4 “與”門門控時(shí)鐘轉(zhuǎn)化成全局時(shí)鐘
圖4中重新設(shè)計(jì)的電路的定時(shí)波形表明地址線不需要在nWR有效的整個(gè)期間內(nèi)保持穩(wěn)定;而只要求它們和數(shù)據(jù)引腳一樣符合同樣的建立和保持時(shí)間,這樣對(duì)地址線的要求就少很多。
圖5給出一個(gè)不可靠的門控時(shí)鐘的例子。3位同步加法計(jì)數(shù)器的RCO輸出用來(lái)鐘控觸發(fā)器。然而,計(jì)數(shù)器給出的多個(gè)輸入起到時(shí)鐘的作用,這違反了可靠門控時(shí)鐘所需的條件之一。在產(chǎn)生RCO信號(hào)的觸發(fā)器中,沒(méi)有一個(gè)能考慮為實(shí)際的時(shí)鐘線,這是因?yàn)樗杏|發(fā)器在幾乎相同的時(shí)刻發(fā)生翻轉(zhuǎn)。而我們并不能保證在PLD/FPGA內(nèi)部QA,QB,QC到D觸發(fā)器的布線長(zhǎng)短一致,因此,如 圖5的時(shí)間波形所示,在器從3計(jì)到4時(shí),RCO線上會(huì)出現(xiàn)毛刺(假設(shè)QC到D觸發(fā)器的路徑較短,即QC的輸出先翻轉(zhuǎn))。


圖5 不可靠的門控時(shí)鐘
(定時(shí)波形示出在計(jì)數(shù)器從3到4改變時(shí),RCO信號(hào)如何出現(xiàn)毛刺的)
圖6給出一種可靠的全局鐘控的電路,它是圖5不可靠計(jì)數(shù)器電路的改進(jìn),RCO控制D觸發(fā)器的使能輸入。這個(gè)改進(jìn)不需要增加PLD的邏輯單元。
?

?
圖6 不可靠的門控時(shí)鐘轉(zhuǎn)換為全局時(shí)鐘
電子發(fā)燒友App













評(píng)論