基于BUFGMUX與DCM的FPGA時(shí)鐘電路設(shè)計(jì)
出處:zj2443 發(fā)布于:2007-04-29 09:50:37
在當(dāng)前的數(shù)字集成電路設(shè)計(jì)中,同步電路占了絕大部分。所謂同步電路,即電路中的所有寄存器由為數(shù)不多的幾個(gè)全局時(shí)鐘驅(qū)動(dòng),被相同時(shí)鐘信號驅(qū)動(dòng)的寄存器共同組成一個(gè)時(shí)鐘域,并可認(rèn)為同時(shí)時(shí)鐘域內(nèi)所有寄存器的時(shí)鐘沿同時(shí)到達(dá)。
然而,在實(shí)際電路中,同時(shí)鐘域內(nèi)寄存器時(shí)鐘沿的到達(dá)時(shí)間存在偏差,即時(shí)鐘偏差。通過合理的時(shí)鐘設(shè)計(jì),可以減少這種時(shí)鐘偏差,使其相對時(shí)鐘周期可以忽略不計(jì),從而達(dá)到同步的效果。
1 ASIC的時(shí)鐘電路
在ASIC的電路設(shè)計(jì)中,自動(dòng)布局布線工具使用動(dòng)態(tài)搭建時(shí)鐘緩沖器樹的方法來解決時(shí)鐘偏差問題。其基本思想就是控制時(shí)鐘源與寄存器之間的門延時(shí)與線路延時(shí)。如果同時(shí)鐘域內(nèi)所有寄存器的時(shí)鐘端與時(shí)鐘源之間的路徑,包含大體相同的時(shí)鐘緩沖器個(gè)數(shù)與連線長度,就可以近似地認(rèn)為時(shí)鐘信號從時(shí)鐘源到各寄存器時(shí)鐘端的延時(shí)是相等的,因此寄存器間的時(shí)鐘偏差可以忽略不計(jì)。
ASIC時(shí)鐘樹結(jié)構(gòu)如圖1所示。
2 FPGA的時(shí)鐘電路
隨著FPGA集成度的不斷提升,單片F(xiàn)PGA已經(jīng)可以完成百萬門級的集成電路設(shè)計(jì)。因此,很多ASIC設(shè)計(jì)可以利用FPGA完成流片前的功能驗(yàn)證。甚至直接使用FPGA進(jìn)行商業(yè)生產(chǎn)。但是,F(xiàn)PGA的特殊結(jié)構(gòu)決定了基于FPGA的設(shè)計(jì)不能直接照搬在ASIC設(shè)計(jì)當(dāng)中的某些經(jīng)驗(yàn),時(shí)鐘設(shè)計(jì)便是其中較突出的一條。ASIC時(shí)鐘樹結(jié)構(gòu)如圖1所示。
由于FPGA的生產(chǎn)工藝,在出廠之前,F(xiàn)PGA內(nèi)部元件之間的連線已經(jīng)完全固定。同時(shí),F(xiàn)PGA具有連線延時(shí)相對門延時(shí)較大的特點(diǎn),造成FPGA并不能通過動(dòng)態(tài)搭建時(shí)鐘緩沖器樹的方法解決時(shí)鐘偏差問題。實(shí)際上,時(shí)鐘樹結(jié)構(gòu)已經(jīng)被預(yù)先固化在芯片當(dāng)中。針對Xilinx公司的Virtex Ⅱ系列的FPGA。其時(shí)鐘樹結(jié)構(gòu)如圖2所示。
該系列FPGA直接利用單獨(dú)一層銅布線層搭建時(shí)鐘網(wǎng)絡(luò)。所有的時(shí)鐘信號,只能通過處于芯片縱向中軸線上下兩端的16個(gè)BUFGMUX進(jìn)入時(shí)鐘網(wǎng)絡(luò)。所有BUFGMUX輸出端一直延伸到芯片的中心,連接到銅布線層處于芯片中央縱向分布寬度為8的時(shí)鐘總線??v向時(shí)鐘總線再連接到橫向的8條寬度為8的時(shí)鐘總線,進(jìn)而延伸到每一個(gè)CLB(Configurable Logic Block,可編程邏輯塊)的GRM(General Route Matrix,通用布線矩陣陣列)上。
也就是說,在Virtex Ⅱ結(jié)構(gòu)的FPGA當(dāng)中,多可以存在16個(gè)時(shí)鐘域,然而同時(shí)只能存在多8個(gè)全局時(shí)鐘(上下兩個(gè)對應(yīng)的BUFGMUX共用一條時(shí)鐘總線)。由于每個(gè)寄存器的時(shí)鐘端都通過橫向和縱向的時(shí)鐘總線連接到位于芯片中央的時(shí)鐘源,而時(shí)鐘源通過相同路徑長度的連線和BUFGMUX連接,因此可以認(rèn)為從同一BUFGMUX出發(fā)的時(shí)鐘信號到芯片內(nèi)所有寄存器的延時(shí)相同,從而沒有時(shí)鐘偏差,經(jīng)過實(shí)際工程驗(yàn)證,同BUFGMUX構(gòu)成的時(shí)鐘域內(nèi)時(shí)鐘偏差多不超過0.3ns。
3 設(shè)計(jì)實(shí)例
為了更好的說明FPGA 時(shí)鐘電路的使用方法與其特殊的問題,下面將用一個(gè)在Virtex Ⅱ 6000 FPGA上實(shí)現(xiàn)的設(shè)計(jì)實(shí)例具體說明時(shí)鐘電路建立的方法。
3.1 問題分析
圖3顯示了在該設(shè)計(jì)當(dāng)中的4個(gè)時(shí)鐘域。
這樣的時(shí)鐘結(jié)構(gòu),在ASIC的時(shí)鐘樹設(shè)計(jì)中,并不會(huì)引發(fā)很大的問題。但是在FPGA的設(shè)計(jì)中,如果不加處理,會(huì)引起電路綜合、布局布線的巨大壓力。其主要的問題源于FPGA綜合軟件對BUFGMUX的自動(dòng)指定,造成門控時(shí)鐘和分頻時(shí)鐘與源時(shí)鐘之間出現(xiàn)較大的時(shí)鐘偏差。
一般,綜合軟件可以通過Verilog HDL的“posedge”和“negedge”關(guān)鍵字,或者VHDL當(dāng)中的“event”關(guān)鍵字判斷出時(shí)鐘信號。然而,綜合工具并沒有判斷門控時(shí)鐘與分頻時(shí)鐘的能力,即就是綜合工具認(rèn)定的時(shí)鐘只能是一根網(wǎng)線,而不能穿越一般的邏輯門。為了讓同時(shí)鐘域的寄存器間沒有時(shí)鐘偏差。綜合工具會(huì)自動(dòng)在時(shí)鐘的源頭為時(shí)鐘信號指定BUFGMUX,使得時(shí)鐘信號使用銅布線資源。
經(jīng)過綜合工具的自動(dòng)指定,終會(huì)將圖3當(dāng)中時(shí)鐘結(jié)構(gòu)轉(zhuǎn)換為圖4中的電路結(jié)構(gòu)。
正如第2節(jié)所述,F(xiàn)PGA通過其特定的時(shí)鐘網(wǎng)絡(luò),使得時(shí)鐘信號從BUFGMUX到每個(gè)CLB的時(shí)鐘端沒有時(shí)鐘偏差。但是,此結(jié)構(gòu)的間接后果是為每個(gè)CLB的時(shí)鐘端添加了一個(gè)相同的時(shí)鐘線延時(shí),即從BUFGMUX通過時(shí)鐘網(wǎng)絡(luò)到達(dá)GRM的時(shí)間,在正常情況下,這個(gè)時(shí)間為6-7ns。
正是由于這一點(diǎn),在綜合工具自動(dòng)指定BUFGMUX之后,為了實(shí)現(xiàn)CLK_2XG這個(gè)門控時(shí)鐘,必須將CLK_2X時(shí)鐘信號通過與門,再經(jīng)過BUFGMUX重新連接到時(shí)鐘資源。顯而易見,CLK_2XG時(shí)鐘域的時(shí)鐘信號相對時(shí)鐘源CLK_IN來說經(jīng)過了兩次BUFGMUX和CLK_2X的時(shí)鐘域產(chǎn)生了至少6ns的時(shí)鐘偏差。同理,CLK_1XG和CLK_1X相應(yīng)與CLK_2X之間存在12ns和6ns的時(shí)鐘偏差。相對CLK_2X 80MHz的時(shí)鐘頻率,一周期為12.5ns,顯然12ns的跨時(shí)鐘域的時(shí)鐘偏差是不能忍受的。從圖5的后仿波形當(dāng)中,可以很明顯地看到這個(gè)時(shí)鐘偏差達(dá)到了13.34ns。
3.2 解決方案
3.2.1 門控時(shí)鐘
實(shí)際上,BUFGMUX并不是簡單的時(shí)鐘緩沖器,他是一個(gè)具有低時(shí)鐘偏差、高驅(qū)動(dòng)能力并帶有選擇端的雙路選擇器。使用不同的原語進(jìn)行實(shí)例化,BUFGMUX可以構(gòu)成時(shí)鐘選擇器、時(shí)鐘門控器或者簡單的時(shí)鐘緩沖器[1]。
盡管BUFGMUX就3種使用方式,但如果讓綜合軟件自動(dòng)在合適的位置指定BUFGMUX,由于綜合軟件只能認(rèn)出網(wǎng)線形式的時(shí)鐘信號,因而只會(huì)使用BUFG的方式使用BUFGMUX,造成了上述的問題。
為了去除由于門控時(shí)鐘造成的時(shí)鐘偏差,只能通過手動(dòng)更改代碼,在合適的位置實(shí)例化BUFGMUX。在此例中可以為CLK_2X信號實(shí)例化BUFG原語,而使用BUFGCE原語替代原來的與門,并直接使用CLK_IN為BUGCE的輸入。這樣CLK_2X和CLK_2XG都只經(jīng)過了一個(gè)BUFGMUX,因此可以近似地認(rèn)為不存在時(shí)鐘偏差。同理CLK_1X和CLK_1XG之間的時(shí)鐘偏差也可以解決。
3.2.2 分頻時(shí)鐘
然而,BUFGMUX的3種使用方式并不能解決分頻寄存器造成的CLK_1X和CLK_2X之間的時(shí)鐘偏差問題。比較簡單的一種方法是使用CLK_IN作為分頻寄存器的輸入,而不對CLK_2X進(jìn)行分頻。
盡管如此,由于分頻寄存器的器件延時(shí)和相應(yīng)的連接線路延時(shí),CLK_2X和CLK_1X之間仍然存在大約2-3ns的時(shí)鐘偏差,對于某些跨時(shí)鐘域的關(guān)鍵路徑和時(shí)鐘保持(Hold Time)約束來說,仍然過大。另外,由于CLK_IN被分頻寄存器當(dāng)作時(shí)鐘使用,可能會(huì)造成綜合軟件自動(dòng)給CLK_IN指定BUFG,導(dǎo)致所有時(shí)鐘信號都需要經(jīng)過兩個(gè)BUFGMUX,產(chǎn)生一個(gè)12ns左右的輸入延時(shí)。
針對這種問題,可以使用FPGA當(dāng)中的另一個(gè)特殊資源——DCM(Digital Clock Manager,數(shù)字時(shí)鐘管理單元)。DCM當(dāng)中包含一個(gè)DLL(Delay-Locked loop,延遲鎖定電路),可以提供對時(shí)鐘信號的二倍頻和分頻功能,并且能夠維持各輸出時(shí)鐘之間的相位關(guān)系,即零時(shí)鐘偏差(更詳細(xì)的說明可查看參考文獻(xiàn)[1,2]。
因此,針對分頻時(shí)鐘,可以直接利用DCM的分頻功能,從而省去分頻寄存器,徹底地解決了CLK_2X和CLK_1X之間的時(shí)鐘偏差。不過更合適的選擇是使用DCM的倍頻功能,這樣只需要為FPGA準(zhǔn)備一個(gè)40MHz的低頻時(shí)鐘輸入,相對80MHz要更容易實(shí)現(xiàn)。
3.2.3 終實(shí)現(xiàn)
通過BUFGMUX和DCM的使用,可以將圖4改造為圖6所示的電路結(jié)構(gòu)。
改造后,每個(gè)時(shí)鐘域的時(shí)鐘信號和信號源CLK_IN之間都只通過一個(gè)DCM和一個(gè)BUFGMUX,他們之間的時(shí)鐘偏差僅為時(shí)鐘網(wǎng)絡(luò)本身的時(shí)鐘偏差和DCM的輸出到各BUFGMUX輸入端之間的線路延時(shí)偏差。如果進(jìn)一步優(yōu)化,通過在布局布線的步驟施加對BUFGMUX的位置約束,迫使圖5中的4個(gè)BUFGMUX都處于FPGA的上方或者下方的8個(gè)BUFGMUX上,跨時(shí)鐘域的時(shí)鐘偏差在VIRTEX Ⅱ 6000FPGA當(dāng)中可以控制在0.5ns以內(nèi),基本滿足80MHz的要求。改造后的時(shí)鐘電路的后仿波形如圖7所示,其的時(shí)鐘偏差為0.722ns。
實(shí)際上,DCM和BUFGMUX從VIRTEX Ⅱ開始,已經(jīng)成為FPGA的標(biāo)準(zhǔn)元件,可以在SPARTAN-3,VIRTEX Ⅱ,VIRTEX Ⅱ PRO,VIRTEX-4等器件上直接使用,因此該電路結(jié)構(gòu)也可相應(yīng)推廣到這些FPGA的電路設(shè)計(jì)當(dāng)中。
4 結(jié)語
本文通過比較ASIC時(shí)鐘樹結(jié)構(gòu)和FPGA時(shí)鐘網(wǎng)絡(luò)的結(jié)構(gòu),說明了FPGA時(shí)鐘網(wǎng)絡(luò)的自身特點(diǎn)。通過一個(gè)設(shè)計(jì)實(shí)例,分析了直接使用綜合工具實(shí)現(xiàn)多時(shí)鐘域的電路設(shè)計(jì)所存在的問題,并針對這些問題提出了利用BUFGMUX的三種使用方式代替門控時(shí)鐘與利用DCM代替分頻時(shí)鐘的方法,較好地解決了FPGA時(shí)鐘電路的時(shí)鐘偏差問題,并具有一定的適用性。
參考文獻(xiàn):
[1]. 12ns datasheet http://www.hbjingang.com/datasheet/12ns_2105238.html.
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52
- PCB焊盤與過孔設(shè)計(jì)核心實(shí)操規(guī)范(含可焊性與可靠性保障)
- 汽車電子常用電子元器件選型指南
- MOSFET驅(qū)動(dòng)與隔離方案設(shè)計(jì)
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號完整性(SI)設(shè)計(jì)核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計(jì)算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計(jì)
- 連接器耐腐蝕性能測試方法









