本文主要以Xilinx Virtex Ⅱ系列為例拣宏,對(duì)FPGA內(nèi)部結(jié)構(gòu)作簡(jiǎn)要介紹涧尿,其內(nèi)容主要來(lái)自Xilinx Virtex Ⅱ datasheet形纺、user guide昭抒、以及其它來(lái)自Xilinx網(wǎng)站上的資料。
內(nèi)部結(jié)構(gòu)概述
FPGA內(nèi)部比較復(fù)雜茶鉴,根據(jù)Datasheet上的分類(lèi)锋玲,主要包括以下幾個(gè)部分:
l 輸入/輸出模塊 Input/Output Blocks (IOB)
l 可配置邏輯單元 Configurable Logic Blocks (CLB)
l Bram Block SelectRAM
l 18 x 18 乘法器 (18-Bit x 18-Bit Multipliers)
l 全局時(shí)鐘網(wǎng)絡(luò) (Global Clock Mux)
l 數(shù)字時(shí)鐘管理模塊 (DCM)
l 布線資源 Routing Resources
輸入/輸出模塊 Input/Output Blocks (IOB)
IOB 模塊兩個(gè)一組或者4個(gè)一組分布在芯片的周邊部分,如圖表 1所示涵叮。
每一個(gè)IOB模塊都可以用作輸入或者輸出惭蹂;兩個(gè)IOB可以組成一組差分信號(hào)(Differential Pair)伞插;IOB同交換矩陣(Switch Matrix)相連。
IOB支持的I/O標(biāo)準(zhǔn)IOB能夠支持多種I/O標(biāo)準(zhǔn)盾碗,包括:
l LVTTL, LVCMOS (3.3V, 2.5V, 1.8V, and 1.5V)
l PCI-X compatible (133 MHz and 66 MHz) at 3.3V
l PCI compliant (66 MHz and 33 MHz) at 3.3V
l CardBus compliant (33 MHz) at 3.3V
l GTL and GTLP
l HSTL (Class I, II, III, and IV)
l SSTL (3.3V and 2.5V, Class I and II)
l AGP-2X
IOB還能夠支持差分信號(hào)I/O標(biāo)準(zhǔn):
l LVDS
l BLVDS (Bus LVDS)
l ULVDS
l LDT
l LVPECL
如圖表3所示媚污,在FPGA中,所有的IOB分成8組(Bank)廷雅,每一邊有兩組耗美。
一些I/O標(biāo)準(zhǔn)需要外部的參考電壓VCCO或者VREF,這些外部電壓必須同F(xiàn)PGA引腳相連榜轿。每個(gè)組(Bank)中都有多個(gè)VCCO引腳,在相同的Bank中所有VCCO引腳必須與相同電壓連接朵锣。電壓大小由使用的I/O標(biāo)準(zhǔn)決定谬盐。在一個(gè)組內(nèi)部,如果所有I/O標(biāo)準(zhǔn)都使用相同的VCCO诚些,則它們可以兼容飞傀。
每一組IOB中,能夠使用的時(shí)鐘網(wǎng)絡(luò)只有兩個(gè)诬烹,也就是說(shuō)在每一組中砸烦,至多可以同時(shí)使用兩組不同時(shí)鐘的輸入輸出。
如圖表4所示IOB模塊中包括6個(gè)存儲(chǔ)單元(Reg)绞吁,每個(gè)單元即可以配置成為邊沿觸發(fā)的D寄存器(flip-flop幢痘,F(xiàn)F),也可以配置能電平觸發(fā)的鎖存器(latch)家破。
IOB中颜说,每條路徑上都有兩個(gè)寄存器用來(lái)進(jìn)行DDR(double data rate)數(shù)據(jù)傳送,兩個(gè)寄存器的時(shí)鐘需要保持反相汰聋,可以通過(guò)DCM來(lái)達(dá)到這一點(diǎn)门粪。
可配置邏輯單元 Configurable Logic Blocks (CLB)
CLB是FPGA中的基本邏輯單元,其結(jié)構(gòu)比較復(fù)雜烹困。在Xilinx Virtex Ⅱ系列FPGA中玄妈,一個(gè)CLB單元由,四個(gè)結(jié)構(gòu)類(lèi)似的Slice模塊組成髓梅。在FPGA內(nèi)部拟蜻,所有CLB單元排列成陣列,并于交換矩陣(Switch Matrix)相連枯饿,如圖表6所示:
圖中瞭郑,“X1Y1”、“X1Y0”鸭你、“X0Y1”屈张、“X0Y0”是Slice在FPGA中的位置編號(hào)擒权,在FPGA中每一個(gè)Slice都會(huì)根據(jù)自己的橫縱坐標(biāo)有一個(gè)獨(dú)一無(wú)二的編號(hào)。
每一個(gè)Slice模塊中包含2個(gè)4輸入LUT(Look Up Table阁谆,查找表)和2個(gè)1bit的存儲(chǔ)單元碳抄。其中,LUT能夠根據(jù)設(shè)計(jì)需要配置成為:組合邏輯场绿、單口RAM剖效、雙口RAM、ROM焰盗、移位寄存器和多路選通器璧尸;存儲(chǔ)單元可以配置成為邊沿觸發(fā)的寄存器或者電平觸發(fā)的鎖存器。
LUT
LUT本質(zhì)上講就是一個(gè)16bit的SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)熬拒,4個(gè)輸入實(shí)際上就是SRAM的地址爷光。對(duì)于一個(gè)4輸入得組合邏輯來(lái)說(shuō),他的結(jié)果最多只可能有16種澎粟,那么蛀序,我們完全可以把所有的16種結(jié)果事前全部計(jì)算出來(lái),存放在一塊16bit的區(qū)域中活烙,再將組合邏輯的輸入作為SRAM的讀取地址徐裸,這樣我們就可以通過(guò)LUT的方式實(shí)現(xiàn)了任意4輸入的組合邏輯功能。而且啸盏,使用這樣的實(shí)現(xiàn)方法重贺,電路延遲同組合邏輯無(wú)關(guān),只取決于SRAM的讀寫(xiě)速度回懦。
Distributed SelectRAM Memory
既然LUT本質(zhì)上就是一小塊RAM檬姥,那么在實(shí)際的設(shè)計(jì)過(guò)程中,我們也可以把LUT配置成為RAM來(lái)使用粉怕。LUT作為RAM來(lái)使用的時(shí)候也有兩種配置方式:?jiǎn)慰赗AM和雙口RAM健民。一個(gè)LUT配置成為一塊16bit x 1的RAM,而雙口RAM要多占用一倍的資源贫贝,既需要兩個(gè)LUT才能配置成一塊16bit x 1的RAM秉犹。圖8所示配置成RAM所占用資源的情況,其中“S”代表單口RAM稚晚;“D”代表雙口RAM崇堵。
無(wú)論是LUT配置成的單口RAM還是雙口RAM都可以通過(guò)并聯(lián)或者串聯(lián)來(lái)增加RAM的數(shù)據(jù)位寬度和地址位深度(容量)。
通RAM類(lèi)似客燕,LUT還能夠配置能ROM鸳劳。圖表9所示為L(zhǎng)UT配置成ROM的情況。
移位寄存器
LUT還有一種非常重要的配置方式是移位寄存器也搓。LUT的輸入A[3:0]用來(lái)選擇移位寄存器輸出長(zhǎng)度赏廓,對(duì)于單個(gè)LUT構(gòu)成的移位寄存器來(lái)說(shuō)涵紊,最大程度為16bit。移位寄存器即可以配置成固定長(zhǎng)度的幔摸、靜態(tài)移位寄存器摸柄,也可以配置成動(dòng)態(tài)的移位寄存器。
在每個(gè)時(shí)鐘(CLK)的上升沿既忆,移位寄存器從D(BY)讀取一位數(shù)據(jù)驱负。信號(hào)Output作為移位寄存器的輸出,輸出的位置由A[3:0]的值決定患雇。
移位寄存器有兩種工作模式:靜態(tài)模式和動(dòng)態(tài)模式跃脊。
靜態(tài)模式中,地址A[3:0]都是定值(static value)苛吱,移位寄存器的長(zhǎng)度的范圍為1bit到16bit酪术。可以由以下公式確定:
Length = (8XA3) +(4XA2) + (2XA1) + A0 +1
如果輸入全部為零又谋,則移位寄存器的長(zhǎng)度為1拼缝;如果輸入全部為1娱局,則移位寄存器長(zhǎng)度為16彰亥。
在動(dòng)態(tài)模式中,移位寄存器的長(zhǎng)度可以根據(jù)A[3:0]變化衰齐,計(jì)算公式同靜態(tài)模式中相同任斋。
需要注意的是,盡管我們可以動(dòng)態(tài)的配置移位寄存器的長(zhǎng)度耻涛,但是對(duì)于一個(gè)LUT來(lái)說(shuō)废酷,它本質(zhì)上講還是一個(gè)16bit的移位寄存器,一位寄存器的長(zhǎng)度僅僅是指出了數(shù)據(jù)出口的位置抹缕。例如澈蟆,當(dāng)我們將移位寄存器的長(zhǎng)度從12改為8的時(shí)候,輸出的是第8個(gè)數(shù)據(jù)卓研,但移位寄存器并沒(méi)有將后面的數(shù)據(jù)丟掉趴俘,如果我們這個(gè)時(shí)候再把長(zhǎng)度設(shè)為10還是能夠得到正確的數(shù)據(jù)。
圖表 10 為移位寄存器的結(jié)構(gòu)奏赘,這里需要指出的是在上面的討論中都是沒(méi)有寄存器的情況下寥闪,如果移位寄存器包含了寄存器,既輸出為Registered Output磨淌,則在靜態(tài)模式下移位寄存器的長(zhǎng)度要加1疲憋,動(dòng)態(tài)模式下的情況比較復(fù)雜,請(qǐng)讀者自己分析梁只。
移位寄存器缚柳,還可以級(jí)聯(lián)以進(jìn)行擴(kuò)展埃脏。在FPGA內(nèi)部,有一條專(zhuān)用聯(lián)線喂击,用于移位寄存器的級(jí)聯(lián)擴(kuò)展剂癌,既圖表6種的“SHIFT”,它將前級(jí)移位寄存器的輸出同后級(jí)移位寄存器的輸入相連翰绊。在一個(gè)CLB單元中至多可以構(gòu)成一個(gè)256bit的移位寄存器佩谷。
寄存器/鎖存器 (Register/Latch)
Slice中的存儲(chǔ)單元即可以配置成邊沿觸發(fā)的寄存器,也可以配置成電平觸發(fā)鎖存器监嗜。
寄存器的輸入即可以使LUT的輸出谐檀,也可以是來(lái)自交換矩陣(Switch Matrix)的數(shù)據(jù)。
可以通過(guò)設(shè)置屬性的方式設(shè)置寄存器的初值和清零方式裁奇,INIT1表示初值為1桐猬;INIT0表示初值為0。設(shè)定SRHIGH時(shí)刽肠,在“SR”有效時(shí)寄存器值為“1”溃肪;設(shè)定SRLOW時(shí),在“SR”有效時(shí)寄存器值為“0”音五。
在默認(rèn)情況下惫撰,設(shè)定SRHIGH即表示了INIT1;設(shè)定SRLOW即表示了INIT0躺涝;當(dāng)然厨钻,這兩組屬性也可以分別獨(dú)立設(shè)置。
每個(gè)Slice都可以配置成同步清零或者異步清零坚嗜。
在圖11種夯膀,CLK為時(shí)鐘信號(hào);SR為清零信號(hào)苍蔬;CE為時(shí)鐘有效信號(hào)(Clock Enable)诱建;DY、BY碟绑、DX俺猿、BX都是寄存器的輸入。
可以看出蜈敢,在同一個(gè)Slice中的CLK辜荠、SR、CE信號(hào)都是共用的抓狭。
多路選通器 (Multiplexers)
在圖表7中伯病,有兩個(gè)選通器:MUXF5和MUXFx。其中,MUXF5在每一個(gè)slice中都是完全一樣的午笛,MUXFx則略有區(qū)別惭蟋,分別對(duì)應(yīng)于MUXF6、MUXF7和MUXF8药磺。區(qū)別主要是連線結(jié)構(gòu)不同告组,如圖12所示。
在每一個(gè)Slice中都有一個(gè)MUXF5癌佩,每一個(gè)CLB中有兩個(gè)MUXF6木缝、一個(gè)MUXF7和一個(gè)MUXF8,其連接結(jié)構(gòu)如圖11围辙。
任何一個(gè)LUT都可以構(gòu)成一個(gè)2:1的選通器我碟;
在一個(gè)Slice中,可以構(gòu)成一個(gè)4:1的選通器姚建;
在兩個(gè)Slice中矫俺,可以構(gòu)成一個(gè)81的選通器;
在一個(gè)CLB中掸冤,可以構(gòu)成一個(gè)16:1的選通器厘托;
在兩個(gè)CLB中,可以構(gòu)成一個(gè)32:1的選通器稿湿;
快速進(jìn)位邏輯(Fast Lookahead Carry Logic
)
FPGA內(nèi)部有專(zhuān)用的進(jìn)位邏輯铅匹,可以對(duì)加減法運(yùn)算速率進(jìn)行優(yōu)化,每個(gè)CLB單元中有兩條獨(dú)立的進(jìn)位鏈缎罢。每個(gè)Slice中的進(jìn)位鏈寬度為2bit伊群。專(zhuān)用進(jìn)位鏈和專(zhuān)用的選通器MUXCY還可以用于串聯(lián)LUT考杉,以實(shí)現(xiàn)更復(fù)雜的邏輯策精。
算數(shù)邏輯 (Arithmetic Logic)
Slice內(nèi)部有異或門(mén)(XOR)可以實(shí)現(xiàn)兩位全加器。還有一個(gè)專(zhuān)用的與門(mén)崇棠,可以提高選通器的實(shí)現(xiàn)效率咽袜。
加法是最常用的邏輯結(jié)構(gòu),F(xiàn)PGA內(nèi)部之所以有算數(shù)邏輯結(jié)構(gòu)主要是為了對(duì)加法的速率和實(shí)現(xiàn)進(jìn)行優(yōu)化枕稀。
三態(tài)緩存器 (3-State Buffers)
每一個(gè)Slice中都有2個(gè)三態(tài)緩存器询刹。即圖6中的TBUF。
如圖14所示萎坷,可以利用三態(tài)緩存器構(gòu)建片內(nèi)的總線凹联,實(shí)現(xiàn)同一條連線上的雙向通信。
BRAM(18 Kbit Block SelectRAM Resources)
Xilinx Virtex Ⅱ中集成了大量18 Kbit Block SelectRAM Resources(以下簡(jiǎn)稱(chēng)BRAM)哆档。每一塊BRAM都是物理上的雙口RAM蔽挠,它有兩個(gè)獨(dú)立的時(shí)鐘和兩組獨(dú)立的控制端口。
每一組端口都包括以下輸入:時(shí)鐘(CLK)瓜浸、時(shí)鐘有效(CE澳淑,Clock Enable)比原、寫(xiě)有效(WE,Write Enable)杠巡、復(fù)位(SSR量窘,Set/Reset)、地址(ADDR氢拥,Address)蚌铜,以及數(shù)據(jù)通路DI(Data In)和DO(Data Out)。
BRAM的工作時(shí)同寄存器類(lèi)似嫩海,控制信號(hào)厘线,地址信號(hào)以及數(shù)據(jù)輸入信號(hào)必須要在時(shí)鐘邊沿(一般是上升沿,可以根據(jù)需要配置)的建立時(shí)間(Set-up Time)內(nèi)保持有效出革,BRAM會(huì)在這個(gè)時(shí)鐘周期輸出結(jié)果(讀操作)或者寫(xiě)入數(shù)據(jù)(寫(xiě)操作)造壮。
BRAM的地址位/數(shù)據(jù)位的配置方式
BRAM支持多種配置方式,可以根據(jù)設(shè)計(jì)需要靈活的改變地址位長(zhǎng)度和數(shù)據(jù)為寬度骂束。
從圖15中可以看出耳璧,BRAM可以配置成18Kbit的RAM:2Kx9bit,1Kx18bit和512x36bit展箱;也可以配置成16Kbit的RAM:16Kx1bit旨枯,8Kx2bit和4Kx4bit;
之所以支持9bit混驰、18bit攀隔、36bit的數(shù)據(jù)為寬度,是因?yàn)槠苷ィ梢允褂脩粼跀?shù)據(jù)中加入校驗(yàn)位(Parity)昆汹,具體實(shí)現(xiàn)校驗(yàn)位的邏輯需要用戶在BRAM以外自行構(gòu)建。
BRAM配置成單口模式
BRAM配置成單口RAM的情況比較簡(jiǎn)單婴栽,所有的信號(hào)都是同步信號(hào)满粗。圖16中的“DIP”、“DOP”分別為數(shù)據(jù)輸入校驗(yàn)位和輸出校驗(yàn)位
BRAM配置成雙口模式
BRAM的兩組端口可以分別配置愚争,也就是說(shuō)兩組端口可以使用不同的地址位/數(shù)據(jù)位配置方式映皆。如圖17所示:
每一塊BRAM都是完全同步的RAM。兩組端口和時(shí)鐘都是完全獨(dú)立的轰枝。
BRAM的讀寫(xiě)操作
BRAM的所有操作都是完全同步的捅彻,在時(shí)鐘的上升沿(或者下降沿,取決于設(shè)置)的過(guò)程中鞍陨,如果EN有效步淹,WE信號(hào)無(wú)效,則輸出端口輸出地址線上地址所在的數(shù)據(jù),這個(gè)稱(chēng)作讀操作贤旷;如果EN信號(hào)有效广料,WE信號(hào)也有效則將輸入端口的數(shù)據(jù)寫(xiě)入地址線地址中,這個(gè)稱(chēng)作寫(xiě)操作幼驶。
在讀寫(xiě)操作過(guò)程中艾杏,根據(jù)輸出端口輸入的不同,可以將BRAM的工作模式分為3種:“WRITE_FIRST”盅藻、 “READ_FIRST”和“NO_CHANGE”购桑。
在“WRITE_FIRST” 模式中,寫(xiě)操作的時(shí)候氏淑,輸出端口會(huì)將新寫(xiě)入RAM的數(shù)據(jù)輸出勃蜘。
在“READ_FIRST” 模式中,寫(xiě)操作的時(shí)候假残,輸出端口會(huì)將原來(lái)保存在目標(biāo)地址的數(shù)據(jù)輸出缭贡。
在“NO_CHANGE”模式中,寫(xiě)操作的時(shí)候辉懒,輸出端口會(huì)保留原來(lái)的輸出不變阳惹。只有在讀操作的過(guò)程中輸出端口才會(huì)變化,換句話說(shuō)眶俩,在這個(gè)模式下如果想讀取數(shù)據(jù)莹汤,WE信號(hào)必須無(wú)效。
18 x 18 乘法器 (18-Bit x 18-Bit Multipliers)
FPGA中颠印,為了對(duì)定點(diǎn)數(shù)乘法進(jìn)行優(yōu)化纲岭,內(nèi)置了許多乘法器硬核。
圖19中可以看到线罕,乘法器同交換矩陣止潮、BRAM相連。這里需要指出的是闻坚,乘法器同BRAM在物理上是緊挨著的沽翔,而且兩者共用了某些連線兢孝,他們可以連在一起共同使用窿凤,也可以分別獨(dú)立使用。如果是分別使用那么BRAM必須配置成數(shù)據(jù)位寬為18bit的模式跨蟹,否則將導(dǎo)致錯(cuò)誤雳殊。這樣做的目的是為了對(duì)“乘加”運(yùn)算進(jìn)行優(yōu)化〈靶可以提高運(yùn)行速度和減少使用的資源夯秃。
乘法器是一個(gè)異步器件,他接受兩個(gè)18bit的有符號(hào)定點(diǎn)數(shù)作為輸入仓洼,輸出一個(gè)36bit有符號(hào)定點(diǎn)數(shù)介陶。
全局時(shí)鐘網(wǎng)絡(luò) (Global Clock Mux)
由于FPGA內(nèi)部大部分器件都是同步器件,所以在FPGA開(kāi)發(fā)過(guò)程中不可避免的要使用很多共用時(shí)鐘的同步器件色建。當(dāng)頻率較高時(shí)哺呜,信號(hào)在芯片內(nèi)部的傳輸時(shí)間不能忽略,如果時(shí)鐘信號(hào)到達(dá)每個(gè)同步器件的時(shí)間不同箕戳,那么會(huì)導(dǎo)致災(zāi)難性后果某残。
為了解決這個(gè)問(wèn)題,F(xiàn)PGA內(nèi)部有專(zhuān)用的時(shí)鐘樹(shù)陵吸。時(shí)鐘信號(hào)源連接在樹(shù)的根部玻墅,同步器件連接在樹(shù)的“樹(shù)葉”上,這樣壮虫,通過(guò)特定的結(jié)構(gòu)澳厢,使同一時(shí)鐘信號(hào)到達(dá)所有器件的延時(shí)全部一樣。
時(shí)鐘網(wǎng)絡(luò)可以和專(zhuān)用的時(shí)鐘輸入引腳(也可以用作一般用戶自定義引腳)相連囚似,可以和DCM的輸出相連赏酥,也可以和來(lái)自交換局針的其他信號(hào)相連。
還有就是千萬(wàn)不要將兩個(gè)時(shí)鐘通過(guò)一個(gè)與門(mén)或者或門(mén)谆构,這樣很可能會(huì)產(chǎn)生毛刺裸扶,影響系統(tǒng)穩(wěn)定性,如果要對(duì)時(shí)鐘進(jìn)行操作搬素,例如切換時(shí)鐘等呵晨,請(qǐng)使用FPGA內(nèi)部的專(zhuān)用器件“BUFGMUX”。
DCM(Digital Clock Management)
DCM是FPGA內(nèi)部處理時(shí)鐘的重要器件熬尺,他的左右主要有三個(gè):消除時(shí)鐘偏斜(Clock De-skew)摸屠、頻率合成(Frequency Synthesis)和相位調(diào)整(Phase Shifting)。
圖22中:
l CLKIN DCM的輸入時(shí)鐘信號(hào)粱哼,可以來(lái)自IBUFG季二、IBUF或者BUFGMUX。
l CLKFB DCM接受到的反饋時(shí)鐘(原則上必須連接)揭措,該反饋信號(hào)必須源于CLK0或者CLK2X胯舷,并通過(guò)IBUFG、IBUF或者BUFGMUX相連绊含。
l RST DCM的復(fù)位信號(hào)桑嘶,控制DCM的初始化。
l DSSEN 已經(jīng)不再使用躬充,請(qǐng)不要在設(shè)計(jì)中連接逃顶。
l PSINCDEC DCM的控制信號(hào)讨便,控制輸出時(shí)鐘的相位動(dòng)態(tài)調(diào)整方向。當(dāng)CLKOUT_PHASE_SHIFT=VARIABLE時(shí)以政,該信號(hào)有效霸褒,否則,該信號(hào)接地盈蛮。
l PSEN 為DCM控制信號(hào)傲霸,該信號(hào)是輸出時(shí)鐘相位調(diào)整的使能信號(hào)。當(dāng)CLKOUT_PHASE_SHIFT=VARIABLE時(shí)眉反,該信號(hào)有效昙啄,否則,該信號(hào)接地寸五。
l PSCLK DCM的參考時(shí)鐘信號(hào)梳凛,該信號(hào)是輸出時(shí)鐘動(dòng)態(tài)調(diào)整的參考時(shí)鐘。當(dāng)CLKOUT_PHASE_SHIFT=VARIABLE時(shí)梳杏,該信號(hào)有效韧拒,否則,該信號(hào)接地十性。
l CLK0 DCM的輸出時(shí)鐘信號(hào)叛溢,與CLKIN無(wú)相位偏移。
l CLK90 DCM輸出時(shí)鐘信號(hào)劲适,與CLKIN有90°的相差楷掉。在high-frequency模式下此信號(hào)無(wú)效。
l CLK180 DCM輸出時(shí)鐘信號(hào)霞势,與CLKIN有180°的相差烹植。
l CLK270 DCM輸出時(shí)鐘信號(hào),與CLKIN有270°的相差愕贡。在high-frequency模式下此信號(hào)無(wú)效草雕。
l CLK2X DCM輸出信號(hào),使CLKIN的兩倍頻信號(hào)固以。在high-frequency模式下此信號(hào)無(wú)效墩虹。
l CLK2X180 DCM輸出時(shí)鐘信號(hào),該時(shí)鐘信號(hào)與CLK2X有180°的相差憨琳。
l CLKDV DCM的輸出時(shí)鐘信號(hào)诫钓,是CLKIN的分頻時(shí)鐘信號(hào)。其分頻系數(shù)由CLKDV_DIVIDE設(shè)定栽渴。
l CLKFX DCM的輸出時(shí)鐘信號(hào)尖坤,是CLKIN經(jīng)過(guò)頻率綜合后的時(shí)鐘信號(hào)。其中CLKFX=M/DXCLKIN闲擦,M由CLKFX_MULTIPLY設(shè)定慢味,D由CLKFX_DIVIDE設(shè)定。
l CLKFX180 DCM輸出時(shí)鐘信號(hào)墅冷,該時(shí)鐘信號(hào)與CLKFX有180°的相差纯路。
l LOCKED DCM狀態(tài)信號(hào),用于顯示DCM時(shí)候鎖定CLKIN寞忿。DCM的輸出時(shí)鐘信號(hào)只有在LOCKED為高時(shí)有效驰唬。
l STATUS DCM的狀態(tài)信號(hào),用于顯示DCM的工作狀態(tài)腔彰。
l PSDONE DCM的狀態(tài)信號(hào)叫编,用于顯示輸出時(shí)鐘相位動(dòng)態(tài)調(diào)整是否正常
消除時(shí)鐘抖動(dòng)
DCM的核心器件是數(shù)字鎖相環(huán)(DLL,Delay Locked Loop)霹抛。它是由一串固定時(shí)延的延時(shí)器組成搓逾,根據(jù)網(wǎng)上的相關(guān)資料,每一個(gè)延時(shí)器的時(shí)延為30ps杯拐,也就是說(shuō)霞篡,DCM所進(jìn)行的倍頻、分頻端逼、調(diào)相的精度為30ps朗兵。
上文提到過(guò),由于FPGA芯片中信號(hào)傳輸時(shí)間不能夠忽略顶滩,所以在全局時(shí)鐘緩存中也存在一定時(shí)延余掖。根據(jù)圖23種所示的連接方法,DCM接受BUFG出口的時(shí)鐘信號(hào)作為反饋礁鲁,通過(guò)調(diào)整內(nèi)部串聯(lián)延時(shí)器的個(gè)數(shù)浊吏,當(dāng)延時(shí)器延時(shí)時(shí)間加上BUFG延時(shí)時(shí)間等于工作頻率整數(shù)倍時(shí),DCM就可以保證CLKIN的相位同BUFG出口處的相位完全保持一致救氯,這樣就做到了抖動(dòng)消除找田。
但需要注意的是,DCM可以消除時(shí)鐘上升沿位置的抖動(dòng)着憨,但同時(shí)會(huì)造成時(shí)鐘邊沿的斜率變卸昭谩(時(shí)鐘偏斜),時(shí)鐘信號(hào)變化變得平坦甲抖。所以漆改,請(qǐng)盡量避免一個(gè)時(shí)鐘通過(guò)多個(gè)DCM。
頻率綜合
DCM具有強(qiáng)大的頻率綜合能力准谚,可以方便的進(jìn)行頻率轉(zhuǎn)換挫剑。
CLK2X輸出的是CLKIN的2倍頻;CLKDV輸出的是CLKIN的分頻時(shí)鐘信號(hào)柱衔。其分頻系數(shù)由CLKDV_DIVIDE設(shè)定樊破;CLKFX是CLKIN經(jīng)過(guò)頻率綜合后的時(shí)鐘信號(hào)愉棱。其中CLKFX=M/D*CLKIN,M由CLKFX_MULTIPLY設(shè)定哲戚,D由CLKFX_DIVIDE設(shè)定奔滑。
其他具體細(xì)節(jié)信息請(qǐng)參考User Guide。使用時(shí)請(qǐng)注意在每種頻率下的輸入時(shí)鐘和輸出時(shí)鐘的范圍顺少。
相位調(diào)整
DCM調(diào)相功能也十分強(qiáng)大朋其。
器件本身自帶了一些端口可以輸出固定相差,1/4脆炎、1/2和3/4個(gè)周期的相位差梅猿。
還可以通過(guò)設(shè)定屬性的方式更為精確的設(shè)定相位調(diào)整的值,在VARIABLE模式下秒裕,甚至可以通過(guò)PSINCDEC袱蚓、PSCLK、PSEN在程序運(yùn)行中動(dòng)態(tài)的調(diào)整相位簇爆。
如果通過(guò)設(shè)置屬性改變相位癞松,將會(huì)影響到DCM所有的輸出。
調(diào)相的精度由輸入入蛆、輸出的時(shí)鐘頻率响蓉、DLL時(shí)延的最小精度等多方面因素決定。
其他具體細(xì)節(jié)信息請(qǐng)參考User Guide哨毁。
布線資源
布線資源連通FPGA內(nèi)部所有單元枫甲,連線的長(zhǎng)度和工藝決定著信號(hào)在連線上的驅(qū)動(dòng)能力和傳輸速度。布線資源的劃分:
1)全局性的專(zhuān)用布線資源:以完成器件內(nèi)部的全局時(shí)鐘和全局復(fù)位/置位的布線扼褪;
2)長(zhǎng)線資源:用以完成器件Bank間的一些高速信號(hào)和時(shí)鐘信號(hào)的布線想幻;
3)短線資源:用來(lái)完成基本邏輯單元間的邏輯互連與布線;
4)其他:在邏輯單元內(nèi)部還有著各種布線資源和專(zhuān)用時(shí)鐘话浇、復(fù)位等控制信號(hào)線脏毯。
這里的連線其實(shí)是位于半導(dǎo)體上方的金屬線(我不清楚上面提到的所有連線是不是都是金屬線,尤其是短線資源很可能直接是半導(dǎo)體內(nèi)部的直接互連幔崖,但絕大多數(shù)連線食店,尤其是長(zhǎng)距離的連接都是金屬線)。
金屬線通過(guò)圖25的方式進(jìn)行互連赏寇,這樣所有的不線資源構(gòu)成一個(gè)龐大的交換矩陣(switch matrix)吉嫩。能夠?qū)⑵瑑?nèi)所有資源連接起來(lái)。
當(dāng)FPGA中設(shè)計(jì)比較復(fù)雜嗅定、使用邏輯資源比較多的時(shí)候自娩,往往布線資源變成為瓶頸,導(dǎo)致設(shè)計(jì)難以布局布線(Place and Route渠退,PAR)忙迁。