FPGA重點(diǎn)知識13條,助你構建完整“邏輯觀(guān)”之二
FPGA的全局時(shí)鐘應該是從晶振分出來(lái)的,最原始的頻率。其他需要的各種頻率都是在這個(gè)基礎上利用PLL或者其他分頻手段得到的。
2. 全局時(shí)鐘和BUFG:
BUFG,輸入為固定管腳,輸出為H型全銅全局高速網(wǎng)絡(luò ),這樣抖動(dòng)和到任意觸發(fā)器的延時(shí)差最小,這個(gè)也就是FPGA做同步設計可以不需要做后仿真的原因。
全局時(shí)鐘:今天我們從另一個(gè)角度來(lái)看一下時(shí)鐘的概念:時(shí)鐘是D觸發(fā)器的重要組成部分,一個(gè)有效邊沿使得D觸發(fā)器進(jìn)行一次工作。而更多的時(shí)候,D觸發(fā)器保持住上次的值。對于D觸發(fā)器來(lái)說(shuō),可以將輸入信號和時(shí)鐘作比較。也許你會(huì )問(wèn),這么比較有什么意義。首先看我們比較得出什么東西:
翻轉率:R=Dr/Crx100%
就是D觸發(fā)器改變一次值與時(shí)鐘有效沿個(gè)數的比值。
舉例:你寫(xiě)了一個(gè)來(lái)一個(gè)時(shí)鐘有效沿就取一次反的電路,那么他的翻轉率就是100%,翻轉率和你的FPGA的功率有很大關(guān)系,翻轉率越高,FPGA功率越高。
3. 全局時(shí)鐘不夠用是什么意思?
因為全局時(shí)鐘需要驅動(dòng)很多模塊,所以全局時(shí)鐘引腳需要有很大的驅動(dòng)能力,FPGA一般都有一些專(zhuān)門(mén)的引腳用于作為全局時(shí)鐘用,他們的驅動(dòng)能力比較強。但是如果這些引腳用完了,就只能用一般的引腳了,而他們的驅動(dòng)能力不強,有可能不能滿(mǎn)足你的時(shí)序要求。(驅動(dòng)能力小的,產(chǎn)生的延遲會(huì )大一些)
理論上,FPGA的任意一個(gè)管腳都可以作為時(shí)鐘輸入端口,但是FPGA專(zhuān)門(mén)設計了全局時(shí)鐘,全局時(shí)鐘總線(xiàn)是一條專(zhuān)用總線(xiàn),到達片內各部分觸發(fā)器的時(shí)間最短,所以用全局時(shí)鐘芯片工作最可靠,但是如果你設計的時(shí)候時(shí)鐘太多,FPGA上的全局時(shí)鐘管腳用完了就出現不夠用的情況。
4. 什么是第二全局時(shí)鐘?
比如我有一個(gè)同步使能信號,連接到FPGA內部80%的資源(但不是時(shí)鐘),這個(gè)時(shí)候,你的信號走線(xiàn)到達各個(gè)D觸發(fā)器的延遲差很大,或者翻轉率比較大的時(shí)候(>40%),這個(gè)時(shí)候你就需要使用第二全局時(shí)鐘資源。
第二全局時(shí)鐘資源的驅動(dòng)能力和時(shí)鐘抖動(dòng)延遲等指標僅次于全局時(shí)鐘信號。第二全局時(shí)鐘資源其實(shí)是通過(guò)片內的高速行列總線(xiàn)來(lái)實(shí)現的,而不像全局時(shí)鐘總線(xiàn)是一條專(zhuān)用總線(xiàn)。第二全局時(shí)鐘總線(xiàn)是通過(guò)軟件布線(xiàn)得到的,所以硬指標肯定是拼不過(guò)全局時(shí)鐘總線(xiàn)。特別是當你在已經(jīng)有80%以上的布線(xiàn)率的情況下,可能會(huì )出現約束第二全局時(shí)鐘資源失敗的情況。
5.CCLK:
CCLK:FPGA同步配置時(shí)鐘。如果配置模式為主模式,則該時(shí)鐘由FPGA器件生成,并輸出;如果配置模式為從模式,則該時(shí)鐘由外部提供;
當所配置的數據存放在PROM中,即通過(guò)PROM來(lái)配置器件時(shí),必須選擇CCLK時(shí)鐘;
USER CLOCK:用戶(hù)定義的配置時(shí)鐘信號,該配置時(shí)鐘目前很少采用;
JTAG CLOCK:JTAG模式的配置時(shí)鐘,該時(shí)鐘提供給內部的JTAG控制邏輯。
默認值為:CCLK
6. CCLK是怎么產(chǎn)生的:
CCLK的產(chǎn)生根據配置模式不同而不同,如果設置為Master模式,則由內部的震蕩電路產(chǎn)生,作為外部ROM的工作時(shí)鐘,默認為6MHZ,可通過(guò)配置選項設置;如果設置為Slave模式,則由計算機(或其他下載設備)提供,作為芯片內部下載電路的工作時(shí)鐘;在JTAG模式情況下,CCLK不輸出,此時(shí)芯片內部下載電路時(shí)鐘由內部震蕩電路提供,TCK僅用作邊界掃描相關(guān)電路時(shí)鐘。
補充:FPGA的主配置模式中,CCLK信號是如何產(chǎn)生的?
CCLK是由FPGA內部一個(gè)晶振電路產(chǎn)生的,同時(shí)ISE的軟件在生成BIT流文件時(shí),有個(gè)CCLK CONFIG選項,這個(gè)選項只有在時(shí)鐘為CCLK時(shí)才可以起作用,可以在4-60MHz選擇,可以控制CCLK的頻率。
在主從模式配置,配置數據的前60個(gè)字節導入FPGA之前,CCLK一直是2.5MHz,接下來(lái)由于前60個(gè)配置字節的作用,CCLK改為CONFIG設定的頻率,直到結束,一般CONFIG默認的頻率是4MHz.
7. FPGA中全局時(shí)鐘怎么用啊?是把時(shí)鐘接到FPGA的全局時(shí)鐘輸入引腳后,就起到全局時(shí)鐘的作用了,還是在編譯時(shí)需要制定某個(gè)時(shí)鐘為全局時(shí)鐘阿?
其實(shí)全局時(shí)鐘的使用關(guān)鍵在你的代碼… 如果你的代碼中只用了一個(gè)時(shí)鐘作為所有的或者大部分觸發(fā)器的時(shí)鐘,編譯器自然會(huì )把它編譯為全局時(shí)鐘。當然硬件連接上還是用全局時(shí)鐘引腳較好,尤其是帶PLL的,不是所有的全局時(shí)鐘腳都能用PLL。
無(wú)淪是用離散邏輯、可編程邏輯,還是用全定制硅器件實(shí)現的任何數字設計,為了成功地操作,可靠的時(shí)鐘是非常關(guān)鍵的。設計不良的時(shí)鐘在極限的溫度、電壓或制造工藝的偏差情況下將導致錯誤的行為,并且調試困難、花銷(xiāo)很大。 在設計PLD/FPGA時(shí)通常采用幾種時(shí)鐘類(lèi)型。時(shí)鐘可分為如下四種類(lèi)型:全局時(shí)鐘、門(mén)控時(shí)鐘、多級邏輯時(shí)鐘和波動(dòng)式時(shí)鐘。多時(shí)鐘系統能夠包括上述四種時(shí)鐘類(lèi)型的任意組合。
1.全局時(shí)鐘
對于一個(gè)設計項目來(lái)說(shuō),全局時(shí)鐘(或同步時(shí)鐘)是最簡(jiǎn)單和最可預測的時(shí)鐘。在PLD/FPGA設計中最好的時(shí)鐘方案是:由專(zhuān)用的全局時(shí)鐘輸入引腳驅動(dòng)的單個(gè)主時(shí)鐘去鐘控設計項目中的每一個(gè)觸發(fā)器。只要可能就應盡量在設計項目中采用全局時(shí)鐘。PLD/FPGA都具有專(zhuān)門(mén)的全局時(shí)鐘引腳,它直接連到器件中的每一個(gè)寄存器。這種全局時(shí)鐘提供器件中最短的時(shí)鐘到輸出的延時(shí)。
圖1 示出全局時(shí)鐘的實(shí)例。圖1 定時(shí)波形示出觸發(fā)器的數據輸入D[1..3]應遵守建立時(shí)間和保持時(shí)間的約束條件。建立和保持時(shí)間的數值在PLD數據手冊中給出,也可用軟件的定時(shí)分析器計算出來(lái)。如果在應用中不能滿(mǎn)足建立和保持時(shí)間的要求,則必須用時(shí)鐘同步輸入信號(參看下一章“異步輸入”)。

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

圖2 “與”門(mén)門(mén)控時(shí)鐘

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

圖4 “與”門(mén)門(mén)控時(shí)鐘轉化成全局時(shí)鐘
圖4 中重新設計的電路的定時(shí)波形表明地址線(xiàn)不需要在nWR有效的整個(gè)期間內保持穩定;而只要求它們和數據引腳一樣符合同樣的建立和保持時(shí)間,這樣對地址線(xiàn)的要求就少很多。
評論