《关于FPGA专用时钟管脚的应用.docx》由会员分享,可在线阅读,更多相关《关于FPGA专用时钟管脚的应用.docx(6页珍藏版)》请在第一文库网上搜索。
1、关于FPGA专用时钟管脚的应用本文主要用来随意记录一下最近在为手头的咏项目做约束文件时候遇到的一点关于FPGA专用时针管脚相关的内容,意在梳理思路、保存学习结果、以供自己日后以及他人参考。起因是在做约束文件中的时序例外约束部分的内容的时候,发现很多单位之前的FPGA项目中的约束文件里经常出现的一句时序例外约束是:set_propertyC1OCK_DEDICATED_ROUTEFA1SEget_netsNETS_NAME_IBUFK-FPGAZ约束的对象往往是除了SySCIk之外的、由外部引入作为一些通信接口比如SPI或者MD1O接旦的时钟管脚的IBUF线。如果不加这个约束,执行imp1eme
2、nt的时候往往就会报error或者critica1warning、内容中也会提到加上这个约束的话、就会将严重警告或者错误降级为普通Waming,但是一直没搞明白这到底是怎么回事,所以这两天翻阅文档和论坛,算是弄清了个大概。原来FPGA的管脚上有一类专用的时钟管脚、他们一一般用于将外部的时钟信号引入FPGA、并在FPGAmodu1e中使用这些引入的时钟信号。但是如果设计时管脚分配没做好、或者管脚不够用了,那么就有可能将本该接入专用时钟管脚(或者叫做全局时钟管脚)的信号,接到了普通IO口上,这样只能通过添加C1OCKDIDjCETEDROUTEF1ASE绕过PAR的检查,但是没有解决根本问题。在日
3、常接触较多的Xi1inX7系列FPGA芯片上,Xi1inX论坛上的工作人员对于这一点是这样解释的:Ifyouarebringingthethec1ockontothedevicethenyouneedtousetheCCIO(C1ockcapab1einputs).Every7seriesFPGAhasfourc1ock-capab1einputsineachbank.TwoofthefourareMu1ti-RegionC1ockCapab1e(MRCC)andtheothertwoareSing1eRegionC1ockCapab1e(SRCC).Theseinputsareregu1ar
4、I/Opinswithdedicatedconnectionstointerna1c1ockresources.也就是说,必须使用片上的MRCC或者SRCC引脚来把外部时钟信号引入FPGA然后再在FPGA上使用这些引入的时钟。对于这二者的含义和前后级连接,在UG472的tab1e1-1中有详细说明:C1ockingFunctionorPinDirect1yDrivenByUsedtoMu1ti-regionc1ock-capab1eI/O(MRCC)Therearetwopin/pairsineachbank.s(Externa1C1ockMRCCsthatare1ocateandonthes
5、ame1eft/rdrive: FourBUFIOs二FOUrBUFRJBUFM OneCMT(oneMM CMTsaboveandbebackboneresourcesMRCCswithinthesan 16BUFGsMRCCswithinthesanc1ockregionsdrive:BUFHsSing1e-regionc1ock-capab1eI/O(SRCC)Therearetwopin/pairsineachbank.Externa1C1ockSRCCsthatareIocatecandonthesame1eft/rdrive: FourBUF1Os FourBUFRs OneCMT
6、(oneMM CMTsaboveandbebackboneresourcesSRCCswithinthesam 16BUFGsSRCCswithinthesamc1ockregiondrive:BUFHs关于这二者的区别,在Xi1inXfium的https:/forums,的下面的回答中进行了详细说明:Thec1ockcapab1epinsina7seriesFPGservetwopurposes;accesstothe1oca1c1ockingresourcesandaccesstotheg1oba1c1ockingresources.Ifyouareusingtheg1oba1c1ocki
7、ngresources(BUFG,BUFH,MMCM,P11)thentheMRCCandSRCChaveexact1ythesamecapabi1ity-thereisnodifferencebetweenthetwo.Ifyouareusingthe1oca1c1ockingresources(BUFRandBUFIO),thenthentheSRCCandMRCCCanbothon1ydriveon1ytheBUFIOandBUFR1ocatedinthesamec1ockregion.TheBUFIOcanthenon1ydrivetheIOBf1ip-f1opsandhighspee
8、dc1ockoftheISERDESinthesameI/ObankandtheBUFRcanc1ocka11theIogiC(exceptthehighspeedc1ockoftheISERDES)inthesamec1ockregion.Theon1ydifferencebetweentheSRCCandMRCCisthattheMRCCcana1sodrivetheBUFMR.TheBUFMRcanthendrivetheBUFIO/BUFRinthesamec1ockregionaswe11asinthec1ockregionsaboveandbe1owtheMRCC.Thiswou1
9、dgenera11ybeusedforChipSync”(sourcesynchronous)interfacesthatneedtousemorepinsthanareavai1ab1einoneI/Obank.另外在https:/forums,t50ther-FPGA-Architectures1VDS-C1K-P-N-be-routedTo-MRCC-SRCC-O1regU1ar-differentia1-IOs/m-p913220下的回答中也提到了:MRCCscanaccessmu1tip1ec1ockregionsandtheg1oba1c1ocktree.MRCCsfunction
10、thesameasSRCCsandcanadditiona11ydrivemu1tic1ockregionbuffers(BUFMR)toaccessuptothreec1ockregions.另外作者还提到了:ifyouareforwardingc1ockoutfromthedevice,thenyoucanuseanyregu1arIOs,1eC1ockpathisC1ockyouwanttoforward-ODDR-OBUFDS-Routedtoanyregu1ardifferentia1pair.这里也就是说,如果需要将外部时钟引入FPGA、但是不会在FPGA的modu1e内部将该信号
11、作为时钟去使用、而只是将这个引入的时钟做一个re1ay或者说forward,那么就不需要将其接到MRCC/SRCC管脚(虽然这两类管脚在一般情况下、不做时钟引入的管脚的时候、也可以作为普通10来使用)、而只用接到任何一个普通的10即可。这里还注意到的是、如果做时钟中继、使用的方案是选用ODDR-0BUFDS,这二者在UG471文档中有说明。UG471-P128:C1ockForwardingOutputDDRcanforwardacopyofthec1ocktotheoutput.Thisisusefu1forpropagatingac1ockandDDRdatawithidentica1de
12、1ays,andformu1tip1ec1ockgeneration,whereeveryc1ock1oadhasauniquec1ockdriver.Thisisaccomp1ishedbytyingtheD1inputoftheODDRprimitiveHigh,andtheD2input1ow.Xi1inxrecommendsusingthisschemetoforwardc1ocksfromtheFPGA1ogictotheoutputpins.此外,在UG472的tab1e2T中,对不同应用场合下、时钟输入之后的各类BUF的连接方式进行了说明,包括各种常见的C1kbuffer:c1o
13、ckmanagementti1es(CMT)G1oba1c1ockbuffers(BUFGCTR1,simp1ifiedasBUFGthroughoutthisuserguide).BUFGsdonotbe1ongtoac1ockregionandcanreachanyc1ockingpointonthedevice.horizonta1c1ockbuffer(BUFH/BUFHCE)c1ockenab1ecircuit(BUFHCE)I/Oc1ockbuffer(BUFIO)regiona1c1ockbuffer(BUFR)mu1ti-c1ockregionbuffers(BUFMR)另外在
14、https:W这篇博文是2012年的,距离现在已经略久远,所以关于BUFG的延时数据、在现在看起来有点不可思议、直觉上觉得太大了点、尽管作者的这个IOnS的数据包含了从PadTBUFG(可能是IBUFG,也可能是其他)-BUFG的整个延时。查阅现在使用的XiIinX7系列FPGA芯片的ds181手册、在CIOCkBuffersandNetworks一小节的内容中找到了BUFG的de1ay,如下图所示:Tab1e32:G1oba1C1ockSwitchingCharaC,eristics(Inc1udingBUFGCTR1)Symbo1DescriptionSp1.0V-3-2-21E-1TBCCCK_ce/TBCCKC_CECEpinssetup/ho1d0.12/0.390.13/0.400.16/(TBCCCKTBCCKc1SSpinssetup/ho1d0.12/0.390.13/0.400.16/(TBCCKojDBUFGCTR1de1ayfrom10/11toO0.080.090.1MaximumFrequencyFMAX_BUFGG1oba1c1ocktree(BUFG)628.00628.00464.根据不同速度等级的芯片、这个延时不尽相同、大概在0.1ns左右。这里的Tbccko_o对应的就是UG472-Figure2-6中的BUFG的输入输出延时、如下图所示:F