1、pcie硬件
- pci是并行总线,在高速率下信号稳定性不能得到保证
- pcie是串行总线,差分信号传输,Tx+,Tx1,Rx+,Rx-为一条lane
- pcie总线是端对端的传输,之间为link
2、pcie总线的层次
- pcie是串行总线,类似以太网总线,pcie总线需要通过数据包来传输。
- 事务层,数据链接层,传输层。
- .事务层Tansaction Layer,传输的是TLP(tansaction Layer packer)。
3、TLP的主要字段
Type的5位编码与Fmt字段一起用于规定事务类型、头标长度和是否有数据负载,如下图所示,只列举了一部分常用的类型
ftm type 来配置是config memory 读写 memory 读写,IO读写
4、pcie设备的配置过程
1.pcie设备config0,config1两种配置空间,Header Type来表示是桥设备(01)、还是一般的end point(00)。
桥设备:上一级总线号,本级总线号,下级最大的总线号
- Pirmary Bus Number:上游总线号
- Secondary Bus Number:自己的总线号
- Subordinate Bus Number:下游总线号的最大数值 EP
需要的地址空间的size, 深度优先
- Read Config读配置空间,外设需要申请多大的地址空间
- alloc addr分配出一段空间(pci_addrA~100)
- 把分配出来的pci_addrA 写入config配置空间
- cpu就可以读某个cpu_addr来访问外设
5、pcie region转换 目的
- CPU读写某个地址,就可以读写某个PCIe设备的配置空间
- CPU读写某个地址,就可以读写某个PCIe设备的内存、寄存器
地址空间–分成两部分
- CPU本身pcie控制器的配置寄存器
- 后面的部分,就是用来访问pcie外设的
CPU想访问这个设备:Bus=bus,Dev=dev,Fun=fun,Reg=reg,那么CPU读写这个地址即可
0xF8000000 + (bus<<20) | (dev<<15) | (fun<<12) | (reg)
cpu再读写这个地址,这个地址在这些寄存器控制下构建出对应的TLP包
pci_addr = cpu_addr[19:0] | (addr0[31:20] << 20) | (addr1<<32)
= 0x????? + (0xFA0 << 20) | (0 << 32)
= 0xFA0?????
今天的文章PCIE总线协议_1553b总线协议详解分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/75115.html