PCIE调试过程总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PCIE?调试总结(2)4.PCI配置空间和设备寄存器PCI总线支持三个独立的物理地址空间:存储器空间、IO空间和配置空间。在每一个PCI设备中的每个功能都有一个PCI配置空间,最大为256B。各PCI功能的配置空间不是统一编址的,而是采用一种ID的寻址方法,用总线号、设备号、功能号和寄存器号来唯一标识一个功能中的配置空间。配置空间只能由处理器通过HOST桥来访问。X86CPU能访问存储器或IO地址空间,但不支持直接访问配置地址空间。PCI规范规定了X86CPU间接访问PCI配置空间的方法,通过HOST桥中映射为I/O的一个地址端口和一个数据端口来索引和访问。在计算机上电的时候PCI设备枚举[29],配置空间被PCIBIOS访问。从中读取PCI设备的配置信息。然后在系统的存储器和I/O地址空间内为其分配一片独立的存储器或I/O地址空间,并将所分配空间的起始地址写入每个BAR,此地址确定了该设备作为完成者(目标)可以响应的地址范围。在计算机上电以后计算机(或驱动程序)可以采用两种方法访问设备寄存器:通过CPU专用的I/O指令或者通过标准内存引用指令。图4描述了这两种方法,下面对这些方法进行简单说明。? 图3 CPU访问I/O与内存寄存器1)、I/O空间寄存器:一些CPU体系结构(尤其是Intel X86)在引用设备驱动程序时使用I/O机器指令。这些特殊指令引用CPU上一个特定的引脚集合,因而为I/O设备定义了一个单独的总线和地址空间。在此总线上的地址也被称作端口,并且与任何内存地址完全隔离。在Intel X86体系结构中,I/O地址空间是64KB大小(16位),汇编语言定义两个指令用于此地址空间读取和写入端口:IN和OUT。2)、内存映射寄存器:并非所有的CPU结构都需要一个独立的I/O地址空间,在这种情况下,设备寄存器的地址直接映射到CPU的内存空间。暴露大量数据缓冲区的设备往往映射到内存空间(如视频卡和数据采集卡),这样就使得高级语言可以更快更直接对他们进行访问。3)、配置地址空间:PCI结构允许32个物理单元(称为设备)插在同一根总线上。每个这样的物理单元最多可以包含8个不同的功能单元(Function)。PCI标准规定,总线上每个单独的PCI功能单元必须有256字节的存储区域用于保存配置数据,这个区域称为PCI功能单元的配置空间。每个PCI功能单元都有256字节的配置寄存器,每4个字节构成一个32位的寄存器,所以配置空间可以看成是由64个32位的寄存器组成。配置空间的前64个字节为预定义信息区〔又称标题区〕,其中的信息由PCI SIG组织进行预定义;后192字节为特殊配置数据区,其中的内容根据接口的特性由生产厂家定义。主机系统可以通过配置寄存器给出的信息来配置操作系统,以实现PCI接口的即插即用特性。图5给出了类型0配置寄存器前64字节的内容。? 图4 配置空间标题区?所有符合PCI要求的设备都必须支持厂商识别码、设备识别码、命令和状态字段。其他寄存器的实现是可选的,具体视设备的功能而定。?现在讲解我们的PEX8112的具体运作方式:5、 FPGA作为从模式的配置读过程:1). 在一个PCI的数据传输过程,都是以拉低FRAME信号开始的。在frame=0 and irdy=1 and trdy=1 and devsel=1 and stop=1的时候,我们把cbe锁存给cmd,把ad锁存给add.其中,锁存住的add的add(31 downto 8),表示地址,add(7 downto 0),代表指令。Cmd代表指令,指令列表如下:表2 总线命令一览表?C/BE#[3:0]命令类型说明0000中断应答(中断识别)0001特殊周期0010读I/O端口0011写I/O端口0100保留0101保留0110存储器读(从内存空间映像中读数据)0111存储器写(从内存空间映像中写数据)1000保留1001保留1010读配置寄存器1011写配置寄存器1100存储器多行读1101双地址周期1110线存储器读取(存储器一行读)1111存储器写并无效??????????????????????2).一个PCI的数据传输过程,都是以拉低FRAME信号开始的。在idsel=1 and frame=0 and irdy=1 and trdy=1 and devsel=1 and stop=1 的前提下,注: idsel高有效,它是唯一区别是的io操作还是寄存器操作的,我们也锁存add信号与cmd信号。3). 下面讲解状态机:配置读状态机:i.在cfg_rd_sel=1 or io_rd_sel=1 or mem_rd_sel=1的前提下,我们进入dev_st1状态,什么时候cfg_rd_sel=1呢?在idsel=1 and frame=0 an

文档评论(0)

gangshou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档