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