《基于FPGA的PCIE应用架构设计分析(2).docx》由会员分享,可在线阅读,更多相关《基于FPGA的PCIE应用架构设计分析(2).docx(28页珍藏版)》请在第一文库网上搜索。
1、基于FPGA的Pe1E应用架构设计分析(2)基于VIVADO的PCIEIP的使用项目简述上一篇内容我们已经对PeIE协议进行了粗略的讲解。那么不明白具体的PC1E协议,我们就不能在EE”中使用PC1E来进行高速数据传输了吗?答案是否定的。因为XiIinX官方给我们提供了完善的PeIEIP,基于这些IP我们设置不需要知道T1P包的组包原理我们便可以把PCIE使用起来。这篇博客我们主要把FPGA作为endpoint来进行讲解,当然也对作为rootPort进行简单的描述。我们使用的主要IP是乂股,主要参考资料是米联客。如果对IP的使用感觉到疑惑可以参考米联客的资魁。因为手头上硬件条件不够,没办法进行
2、下板测试,我们主要进行介绍IP的定制和BIoCkDeSign的搭建。XDMAIP的定制为什么使用XDMAIP而不使用我们前面介绍的PCIEIP,因为前面介绍的IP需要我们自己构建T1P包,还有分散收集策略,基于该IP使用起来PCIE还是有点困难。但是XDMA就特别简单了,他不需要FPGA设计者熟悉PCIE协议,直接将PCIE协议转换成AXI4与AXI_1ite协议,可以直接对DDR进行操作。XDMA内部的分散收集操作、T1P组包、DMA操作等等进行了完整的封装。我们可以把XDMAIP看成我们经常使用的ZYNQIP,他的BAR空间被AX11ite总线进行读写操作用于寄存器的配置,AXI总线用于大
3、数据的传输直接与DDR对接。XDMA的内部额框图如下:对XDMA的内部描述如下:1、AX14、AXH-Stream,必须选择其中一个,用来数据传输2、AXI4-1iteMaster,可选,用来实现PC1EBAR地址到AXI4-1ite寄存器地址的映射,可用来读写用户逻辑寄存器3、AXH-1iteS1ave,可选,用来将XDMA内部寄存器开放给用户逻辑,用户逻辑可以通过此接旦访问XDMA内部寄存器,不会映射到BAR4、XI4Bypass接口,可选,用来实现PCIE直通用户逻辑访问,可用于低延迟数据传输首先选择XDMAIP如下:B1OCKDeSIGNPa1SyStm5Bomos -Uo26。seu
4、9sDtagramAddressEdrtorCOreSIinterfacesASearch;QPCIENamevVivadoRepositoryIPCataioo(3matches)7AI4StatusUcenseV1NVvStandard8usInterfaces)esioDesignSBedsd d-vPCIExpress7SenesIntegratedB1ockforPCIExpressAX14-S1reamAX1MemoryMappedToPCIExpressAXI4CDUAridgeSubsystemforPCIExpressAX141AXU-StreamProductionIndu
5、dedXihnKcomppe_7n3.ProductionIndudedipai-pde2双击点开该IP的配置:.Re-CustomaeIPDMABridgSubsystemforPCIExpress(PCI)(4.1)ODocumentationIP1ocation0Showdisab1edportsPC1eB1ock1ocationXOYOsys_dksys_rst_nusr_irq_req|1O)M.AXI+:;M_AXJ_1ITE+pci.mgt+Huserjnk_up-axi_ac1k-axi_aresetnusrjrq_ack(1:0)msi_enab1e-msi_vector_w
6、idth2:O)AX1InterfeAXIAcAXID;AXICiEnab1ePIPESimu1a1ionOEnab1eGTChanne1DRPPortsEnab1ePCIeDRPPcxts;Additiona1TransceiverContro1andStatusPorts1、该IP是作为EndPoint来进行PCIE操作的2、IP定制的模式是高级,这样一来可供选择的IP定制选项就会增多3、PeIE硬核的位置,这里我们的型;只有一个硬核,所以这里默认即可4、Iane的个数,与开发板相对应,这里选择2个5、XDMA将PC1E转换成AX1协议,这个就是AX1协议的位宽6、该片子的高速串行接口是G
7、TP口,支持PCIEGen1Gen2协议,速度分别是2.园T/s5GTs,这里选择最大速度5GT/s7、PC1E参考时钟的频率,与板子的时钟情况有关,这里是IOOMHZ8、AXI总线的时钟频率,这里我们选择125MHZ9、这里我们直接将Pe1E协议转换成AX1协议,而不选择AX1Stream协议,简化我们的操作DMA/BridgeSubsystemforPCIExpress(PCI)(4.1)。DocumentationIP1ocationComponentNameJIdmaj)BasicPCIeK)POe:M1SCPOeiDMAShaiIDIniUA1Va1uesSy1CIksysjst-n
8、usr_irq_req(1:0M_AXI+M_AX1_UTE+usr_iiq_ack10msi-enab1e-msi_vector_width(20C1assCode1ookupAssistantUUseC1assCode1ookupAssistantBaseC1assMenuBaseC1assva1ueSubC1assInterfaceMenuSimp1ecommunicationco16450compatib1esea1cSuDC1assva1ue01070001InteffaceVa1ueC1assCode1、厂商ID,专属于XiIinX的PCIE的ID,是固定的。2、设备ID,与厂商I
9、D一起指明数据的类型,被使用选择PC1E上位机的软件驱动。3、版本ID,指明使用该PC1EIP进行设置的版本4、子厂商ID,用来更近一步的区分Xi1inX旗下的厂商5、子系统ID,用来识别板卡的的ID6、PCIE在实验中承担的角色,这里我们选择默认即可DMABridgSubsystemforPCIExpress(PCI)(4.1)_ShowdisatMedportsQDocumentationIP1ocationComponentNameXdmaJ)BasicPO1DPCIe:BARsP-MISCPCJezDMASharsy3-c1ksys_rst_nusrjrq-req(10M_AX1+m_
10、axi_ute+:pcie-mgtuserjnk-up-axi_acik-axi_aresetnousr_irq_ack(10,msi_enaoie-msi_vector_width(20,PCIetoAXI1iteMasterInterfacePCIetoDMABypassinterfaceSize1VSca1eMeva1ueKffoooooPcietoAXJTransiatJonOXoOoooOooOooOOOoo1、首先使能PCIEtoAXI1iteMasterInterface,这样可以在主机一侧通过PC1E来访问用户逻辑侧寄存器或者其他AXIK1ite总线设备2、主机侧PCIEBAR
11、地址与用户逻辑侧地址是不一样的,这个设置就是进行BAR地址到AX1地址的转换,比如主机一侧BAR地址为0,IP里面转换设置为0x80000000,则主机访问BAR地址0转换到AX11Ite总线地址就是0x80000000,这点的理解特别重要3、选择64bit使能4、用来实现PCIE直通用户逻辑访问,可用于低延迟数据传输,这里不选择。DMZkZBridgeSubsystemforPC1Express(PCI)(4.1)ODocumentationIP1ocationComponentNameXdmaj)OShowdsaNedportsBasicPCteDPOezBARsPCIerMISCPCte
12、rOMAUserInterruptsNumberofuserinterruptsRequest(116)2v1egacyInterruptSettings1egacyinterruptSettingsINTA%/MSICapaUimessys_.dksys_rst_nusrjrq_req|1:0|MAX1+:一M_AXIJJTEpce.mgt+IJSerjnkJJP-axi_acik-axi_aresetnOusrjrq_ack(10msi_enabie一msjectOjWIdt20.EnaNeMSICapabi1ityStructureMu1tip1eMessageCapatxitty1ve
13、ctorvUS1RXPINENFA1SEvMSIXCapabi1ities_EnaNeMS1-XCapaMIityStructureMisce11aneous1FinIteComp1etionCreditsJExtendedTagAe1dOAJ!ePC1tXVC-VSECtomeExamp1eDesignOConfigurationManagementinterface1mkStatusRegisterSe1ectswhetherthedevicereferencedockisprovidedbytheConneC(Synchronous)orgeneratedviaanontoardP11(
14、Asynchronous)“:Enab1eS1otOodeConIiQUfation1、选择消息中断,因为下面的工程中使用了2个中断,所以这里我们选择22、引脚中断,这里选不选择意义不大其余的默认设置即可。DMABridgSubsystemforPCIExpress(PCIe)(4.1)ODocumentationIP1ocationOShowdisab1edportssys-c1ksys_rst_nusrjrq-req1.OM_AXJ+M-AxIjJTE+:pc1e.mgt+user_1nk_up-axi_ac1k-a1-aresetn(usr_irq_ack(10msi_enaoie-ms1-vector-widt2.0)ComponentNameidma_0BaskPCIeK)PCfezBARsPC1e:MSCPCIerDMANumberofDMAReadChanne1(H2C)2NumberofDMAWnteCae1(C2H)2NumberofRequestIDsforReadchanne1(248.16.32,64)32NumberofRequestIDsforWntechanne1(2,4,8,