摘要:在FPGA設(shè)計中,,為了成功地操作,可靠的時鐘是非常關(guān)鍵的,。設(shè)計不良的時鐘在極限的溫度、電壓下將導(dǎo)致錯誤的行為,。在設(shè)計PLD/FPGA時通常采用如下四種類型時鐘:全局時鐘,、門控時鐘、多級邏輯時鐘和波動式時鐘,。多時鐘系統(tǒng)包括上述四種時鐘類型的任意組合,。
關(guān)鍵詞:FPGA;時鐘,;邏輯時鐘,;險象
對于一個設(shè)計項目來說,全局時鐘是最簡單和最可預(yù)測的時鐘,。在PLD/FPGA設(shè)計中最好的時鐘方案是由專用的全局時鐘輸入引腳驅(qū)動的單個主時鐘去鐘控設(shè)計項目中的每一個觸發(fā)器,。只要可能就應(yīng)盡量在設(shè)計項目中采用全局時鐘。PLD/FPGA都具有專門的全局時鐘引腳,,它直接連到器件中的每一個寄存器,。這種全局時鐘提供器件中最短的時鐘到輸出的延時。
1 全局時鐘
全局時鐘的實(shí)例如圖1所示,。圖1中定時波形示出觸發(fā)器的數(shù)據(jù)輸入D[1..3]應(yīng)遵守建立時間和保持時間的約束條件,。建立和保持時間的數(shù)值在PLD數(shù)據(jù)手冊中給出,也可用軟件的定時分析器計算出來,。如果在應(yīng)用中不能滿足建立和保持時間的要求,,則必須用時鐘同步輸入信號。
2 門控時鐘
在許多應(yīng)用中,,整個設(shè)計項目都采用外部的全局時鐘是不可能或不實(shí)際的,。PLD具有乘積項邏輯陣列時鐘(即時鐘是由邏輯產(chǎn)生的),允許任意函數(shù)單獨(dú)地鐘控各個觸發(fā)器,。然而,,當(dāng)你用陣列時鐘時,應(yīng)仔細(xì)地分析時鐘函數(shù),,以避免毛刺,。
通常用陣列時鐘構(gòu)成門控時鐘。門控時鐘常常同微處理器接口有關(guān),,用地址線去控制寫脈沖,。然而,每當(dāng)用組合函數(shù)鐘控觸發(fā)器時,,通常都存在著門控時鐘,。如果符合下述條件,門控時鐘可以象全局時鐘一樣可靠地工作,,圖2所示是一個可靠的門控時鐘電路,。
(1)驅(qū)動時鐘的邏輯必須只包含一個“與”門或一個“或”門,。如果采用任何附加邏輯在某些工作狀態(tài)下,會出現(xiàn)競爭產(chǎn)生的毛刺,。
(2)邏輯門的一個輸入作為實(shí)際的時鐘,,而該邏輯門的所有其他輸入必須當(dāng)成地址或控制線,它們遵守相對于時鐘的建立和保持時間的約束,。
在設(shè)計中可以將門控時鐘轉(zhuǎn)換成全局時鐘以改善設(shè)計項目的可靠性,。圖3示出如何用全局時鐘重新設(shè)計圖2所示的電路。地址線在控制D觸發(fā)器的使能輸入,,許多PLD設(shè)計軟件,,如Max+PlusⅡ軟件都提供這種帶使能端的D觸發(fā)器。當(dāng)ENA為高電平時,,D輸入端的值被鐘控到觸發(fā)器中:當(dāng)ENA為低電平時,,維持現(xiàn)在的狀態(tài)。
3 多級邏輯時鐘
當(dāng)產(chǎn)生門控時鐘的組合邏輯超過一級(即超過單個的“與”門或“或”門)時,,驗(yàn)證設(shè)計項目的可靠性變得很困難,。即使樣機(jī)或仿真結(jié)果沒有顯示出靜態(tài)險象,但實(shí)際上仍然可能存在著危險,。通常,,不應(yīng)該用多級組合邏輯去鐘控PLD設(shè)計中的觸發(fā)器。
圖4給出一個含有險象的多級時鐘的例子,。時鐘是由SEL引腳控制的多路選擇器輸出的,。多路選擇器的輸入是時鐘(CLK)和該時鐘的2分頻(DIV2)。多級邏輯的險象可以去除,。例如,可以插入“冗余邏輯”到設(shè)計項目中,。然而,,PLD/FPGA編譯器在邏輯綜合時會去掉這些冗余邏輯,使得驗(yàn)證險象是否真正被去除變得困難了,。為此,,必須應(yīng)尋求其他方法來實(shí)現(xiàn)電路的功能。
圖中SEL引腳和DIV2信號用于使能D觸發(fā)器的使能輸入端,,而不是用于該觸發(fā)器的時鐘引腳,。采用這個電路并不需要附加PLD的邏輯單元,工作卻可靠多了,。
4 行波時鐘
另一種流行的時鐘電路是采用行波時鐘,,即一個觸發(fā)器的輸出用作另一個觸發(fā)器的時鐘輸入。如果仔細(xì)地設(shè)計,,行波時鐘可以像鐘一樣地可靠工作,。然而,,行波時鐘使得與電路有關(guān)的定時計算變得很復(fù)雜。行波時鐘在行波鏈上各觸發(fā)器的時鐘之間產(chǎn)生較大的時間偏移,,并且會超出最壞情況下的建立時間,、保持時間和電路中時鐘到輸出的延時,使系統(tǒng)的實(shí)際速度下降,。