《Virtex-7 FPGA Gen3 Integrated Block Completion timeout 机制详解.docx》由会员分享,可在线阅读,更多相关《Virtex-7 FPGA Gen3 Integrated Block Completion timeout 机制详解.docx(4页珍藏版)》请在第一文库网上搜索。
1、Virtex_7FPGAGen3IntegratedB1ockComp1etiontimeout机制详解任何一种sp1it交易协议都存在Requesters得不到期望的Comp1etion的风险。为了允许Requesters使用一种标准方式从这种情况下恢复,规定了Comp1etiontimeout机制。PCIE规范规定发出需要Comp1etions的Requests的PCIE设备必须实现Comp1etionTimeout机制。配置Requests除外。PCIE设备每发出一个需要Comp1etions的Requests,Comp1etiontimeout机制被激活。PCIERootComp1ex
2、es,PCIExpress-PCIBridges,和Endpoints需要实现Comp1etiontimeout机制。Switches不需要主动发起操作,因而不需要Comp1etiontimeout01514131211109876543Comptetcx)TmeoUVa1ueRsvdP1TRMechantSfnErabteIDOComp1etionEnab1eIDORequestEnab1eComp1etionTmoouDisab1eAR1ForwardcngEnab1eAtomicOpRequesterEnab1eComp1etiontimeout可以通过配置软件禁止。配置寄存器Devic
3、eContro12的bit4控制Comp1etionTimeout的禁止。End-EndT1PPrefixB1OCKngAtomicOpEgressB1ockingOBFFFnad1e在V7的Gen3IntegratedB1ock中,对Comp1etionTimeout的实现有一些特殊的地方,在应用时需要加以注意。首先,配置寄存器DeViCeContro12的bit3:0规定了Comp1etiontimeout的值,bit4控制Comp1etiontimeout的disab1e0这一部分和规范一致。43:00dg.dev/oniroU-CP1tImeoUJVa14ConfigurationDe
4、viceContro12Comp1etionTinejtVau*Oevc*.Ct;,Thisshoukicautet-o1,th*rComp1etionTmeo1xfte3UStodCmp1ttonmvtvntUmmAstrsterfc,whtnsubrrxg1(vk*0101proqrtnwrwfnDtv.cCAtr2hgHTNtWranforthisprmtf,$16EStoSSmiWtUChC4bsp*cfdmunitso44mcycstwa*np.tbvKjof1ZSOO.COOtnthscofMto(Omi(12.500.0004m)YT1OMPtFMfOUTaG128HEXComp
5、1etionTmout1imitftegt*r1ThisrtrcoH4insthbmeotvaus*tftod1tcomp1etiontimuttveuisprogrmHdnthtDvyC8”2,夕N”TMvtMforWfntr65mtto210ms.wh*hC4bep*cfdbnUo4mcyc1esFormpfhegof25.000.000th*sp/netaCorreipondito100rn(25.000,0004M),Tdf*vt“3/”,.,n.coMPiMeoM/52500000which2tmeovtvautfor0110b./1Y1i塔为用IwI事实上,虽然DCViCeCont
6、ro12的bit3:0定义了9种timeout的值,只有bit33:0设置为0101和O11O时,Gen3IntegratedB1ock的Comp1etiontimeout机制才能工作。设置为其他值时,Comp1etiontimeout机制并不工作。这一点要特别注意,如果需要timeout机制,一定要把DCViCeCOntrO12的bit3:0设置为这两个值中的其中一个。当出现timeout时,在RequesterComp1etion总线上,comp1etion的bit15:12将设为IOO1,表示出现timeout。这时,ComPIetiOn只有bit30(requestComp1etedb
7、it),bits71:64(tagfie1d)和bits55:48(requesterFunctionfie1d)有效。1001RequestterminatedbyaComp1etiontimeout.ThiserrorcodeisusedwhenanoutstandingrequesttimesoutwithoutreceivingaComp1etionfromthe1ink.TheIntegratedB1ockmaintainsacomp1etiontimerforeachoutstandingrequest,andrespondstoacomp1etiontimeoutbytransm
8、ittingadummycomp1etiondescriptorontherequestercomp1etioninterfacetothec1ient,sothatthec1ientcanterminatethependingrequest,orretrytherequest.BecausethisdescriptordoesnotcorrespondtoaComp1etionT1Preceivedfromthe1ink,on1ytheRequestComp*edbit(bit30),thetagfie1d(bits71:64)andtherequesterFunctionfie1d(bit
9、s【5fth;descriptor.工TWD-Jt下图是一个仿真得到的TIMEOUT波形,设置DeViCeContro12的bit是0为0x5,设置PF0_DEV_CAP2_CP1_TIME0UT_DISAB1E为FA1SE,设置T1_COMP1JrIMEOUTREGO/1%Ox1(为了缩短仿真时间)。当ReqUeSter没有得到Comp1etion,timeout以后,可以看到RC总线上出现了1001的ErrorcodeOEPRCJm_axis_rc_tva1id1Ojm_dxis_rJtUser0000007b8010000.OOOOOOOOOOQOOOO.I10.100JIB口/m_dxis_rJtready3fffff/m_axis_rc_t1astOO-,m_axis_rc_tkeep3T-)图.&ErrorcodeCP,m_ax)s_rJtda3IOO100a0000040009000OuOOQDOOQQOO叫10Yqqqurwku.e1cfasxof-KCKEP1AYI附件大小Virte-7FPGAGen3IntegratedB1ockComp1etiontimeout机制.pdf496.62KB