《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > FPGA 的 DCM時(shí)鐘管理單元概述

FPGA 的 DCM時(shí)鐘管理單元概述

2021-05-29
來源: FPGA數(shù)字信號(hào)處理
關(guān)鍵詞: DCM FPGA

有些FPGA學(xué)習(xí)者,看Xilinx的Datasheet會(huì)注意到Xilinx的FPGA沒有PLL,,其實(shí)DCM就是時(shí)鐘管理單元,。

1,、DCM概述

 DCM內(nèi)部是DLL(Delay Lock Loop結(jié)構(gòu),對時(shí)鐘偏移量的調(diào)節(jié)是通過長的延時(shí)線形成的。DCM的參數(shù)里有一個(gè)PHASESHIFT(相移),可以從0變到255,。所以我們可以假設(shè)內(nèi)部結(jié)構(gòu)里從輸入引腳clkin到輸出引腳clk_1x之間應(yīng)該有256根延時(shí)線(實(shí)際上,由于對不同頻率的時(shí)鐘都可以從0變到255,,延時(shí)線的真正數(shù)目應(yīng)該比這個(gè)大得多),。DCM總會(huì)把輸入時(shí)鐘clkin和反饋時(shí)鐘CLKFB相比較,如果它們的延時(shí)差不等于所設(shè)置的PHASESHIFT,,DCM就會(huì)改變在clkin和clk_1x之間的延時(shí)線數(shù)目,,直到相等為止,輸出和輸入形成閉環(huán),,動(dòng)態(tài)調(diào)整到設(shè)定值再退出,。這個(gè)從不等到相等所花的時(shí)間,就是輸出時(shí)鐘鎖定的時(shí)間,,相等以后,,lock_flag標(biāo)識(shí)才會(huì)升高。

當(dāng)DCM發(fā)現(xiàn)clkin和clkfb位相差不等于PHASESHIFT的時(shí)候,,就去調(diào)節(jié)clk_1x和clkin之間延時(shí),,所以如果clk_1x和clkfb不相關(guān)的話,那就永遠(yuǎn)也不能鎖定了,。

微信圖片_20210529104125.png

 2、如何使用DCM

DCM一般和BUFG配合使用,,要加上BUFG,,應(yīng)該是為了增強(qiáng)時(shí)鐘的驅(qū)動(dòng)能力。DCM的一般使用方法是,,將其輸出clk_1x接在BUFG的輸入引腳上,,BUFG的輸出引腳反饋回來接在DCM的反饋時(shí)鐘腳CLKFB上。另外,在FPGA里,,只有BUFG的輸出引腳接在時(shí)鐘網(wǎng)絡(luò)上,,所以一般來說你可以不使用DCM,但你一定會(huì)使用BUFG,。有些兄弟總喜歡直接將外部輸入的時(shí)鐘驅(qū)動(dòng)內(nèi)部的寄存器,,其實(shí)這個(gè)時(shí)候雖然你沒有明顯地例化BUFG,但工具會(huì)自動(dòng)給你加上的,。

3,、使用DCM可以消除時(shí)鐘skew

使用DCM可以消除時(shí)鐘skew。這個(gè)東西一直是我以前所沒有想清楚的,,時(shí)鐘從DCM輸出開始走線到寄存器,,這段skew的時(shí)間總是存在的,為什么用DCM就可以消除呢,?直到有一天忽然豁然開朗,,才明白其原委。對高手來說,,也許是極為easy的事情,,但也許有些朋友并不一定了解,所以寫出來和大家共享,。

為說明方便起見,,我們將BUFG的輸出引腳叫做clk_o,從clk_o走全局時(shí)鐘布線到寄存器時(shí)叫做clk_o_reg,,從clk_o走線到DCM的反饋引腳CLKFB上時(shí)叫clkfb,,如圖所示。實(shí)際上clk_o,, clk_o_reg,, clkfb全部是用導(dǎo)線連在一起的。

所謂時(shí)鐘skew,,指的就是clk_o到clk_o_reg之間的延時(shí),。如果打開FPGA_Editor看底層的結(jié)構(gòu),就可以發(fā)現(xiàn)雖然DCM和BUFG離得很近,,但是從clk_o到clkfb卻繞了很長一段才走回來,,從而導(dǎo)致從clk_o到clk_o_reg和clkfb的延時(shí)大致相等。

總之就是clk_o_reg和clkfb的相位應(yīng)該相等,。所以當(dāng)DCM調(diào)節(jié)clkin和clkfb的相位相等時(shí),,實(shí)際上就調(diào)節(jié)了clkin和clk_o_reg相等。而至于clk_1x和clk_o的相位必然是超前于clkin,, clkfb,, clk_o_reg的,,而clk_1x和clk_o之間的延時(shí)就很明顯,就是經(jīng)過那個(gè)BUFG的延遲時(shí)間,。

 4,、對時(shí)鐘skew的進(jìn)一步討論

最后,說一說時(shí)鐘skew的概念,。時(shí)鐘skew實(shí)際上指的是時(shí)鐘驅(qū)動(dòng)不同的寄存器時(shí),,由于寄存器之間可能會(huì)隔得比較遠(yuǎn),所以時(shí)鐘到達(dá)不同的寄存器的時(shí)間可能會(huì)不一樣,,這個(gè)時(shí)間差稱為時(shí)鐘skew,。這種時(shí)鐘skew可以通過時(shí)鐘樹來解決,也就是使時(shí)鐘布線形成一種樹狀結(jié)構(gòu),,使得時(shí)鐘到每一個(gè)寄存器的距離是一樣的,。很多FPGA芯片里就布了這樣的時(shí)鐘樹結(jié)構(gòu)。也就是說,,在這種芯片里,,時(shí)鐘skew基本上是不存在的。

說到這里,,似乎有了一個(gè)矛盾,,既然時(shí)鐘skew的問題用時(shí)鐘樹就解決了,那么為什么還需要DCM+BUFG來解決這個(gè)問題,?另外,,既然時(shí)鐘skew指的是時(shí)鐘驅(qū)動(dòng)不同寄存器之間的延時(shí),那么上面所說的clk_o到clk_o_reg豈非不能稱為時(shí)鐘skew,?

 先說后一個(gè)問題,。在一塊FPGA內(nèi)部,時(shí)鐘skew問題確實(shí)已經(jīng)被FPGA的時(shí)鐘方案樹解決,,在這個(gè)前提下clk_o到clk_o_reg充其量只能叫做時(shí)鐘延時(shí),,而不能稱之為時(shí)鐘skew??上У氖荈PGA的設(shè)計(jì)不可能永遠(yuǎn)只在內(nèi)部做事情,,它必然和外部交換數(shù)據(jù)。例如從外部傳過來一個(gè)32位的數(shù)據(jù)以及隨路時(shí)鐘,,數(shù)據(jù)和隨路時(shí)鐘之間滿足建立保持時(shí)間關(guān)系(Setup Hold TIme),,你如何將這32位的數(shù)據(jù)接收進(jìn)來?如果你不使用DCM,,直接將clkin接在BUFG的輸入引腳上,,那么從你的clk_o_reg就必然和clkin之間有個(gè)延時(shí),那么你的clk_o_reg還能保持和進(jìn)來的數(shù)據(jù)之間的建立保持關(guān)系嗎,?顯然不能,。相反,如果你采用了DCM,,接上反饋時(shí)鐘,,那么clk_o_reg和clkin同相,就可以利用它去鎖存進(jìn)來的數(shù)據(jù),??梢姡珼CM+BUFG的方案就是為了解決這個(gè)問題,。而這個(gè)時(shí)候clk_o到clk_o_reg的延時(shí),,我們可以看到做內(nèi)部寄存器和其他芯片傳過來的數(shù)據(jù)之間的時(shí)鐘skew。

由此,,我們可以得出一個(gè)推論,,從晶振出來的時(shí)鐘作為FPGA的系統(tǒng)時(shí)鐘時(shí),我們可以不經(jīng)過DCM,,而直接接到BUFG上就可以,,因?yàn)槲覀儾⒉辉谝鈴腸lkin到clk_o_reg的這段延時(shí)。




電子技術(shù)圖片.png


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。