PCIE&串行通信基本概念

发布时间 2023-04-10 15:04:08作者: 张喆坤

 

 

 root complex 是一切的根,向下生长的是pcie链路

 

 

 

 

 

 PCI-Express是继ISA和PCI总线之后的第三代I/O总线,即3GIO。 由Intel在2001年的IDF上提出,由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”。它的主要优势就是数据传输速率高,另外还有抗干扰能力强,传输距离远,功耗低等优点

 

 PCI-E接口根据总线位宽不同而有所差异,一个PCI Express连接可以被配置成x1, x2, x4, x8, x12, x16和x32的数据带宽。

(x2 and x12 link widths are optional) PCI-E 各种位宽Device可以自由搭配使用,比如x1 的卡可以插到x8的插槽中使用, x8 的卡可以插到x16的插槽中使用,升级方便。

 

 

 

 

 

从软件角度看待PCI/PCIE

内存是最容易访问的设备

volatile unsigned int *p=addr;

unsigned int val;

*addr=val;//写

val=*p;//读

 

访问设备  其他设备不被干扰(片选控制器)

当cpu发出的地址,属于某个设备的地址范围的时候,设备就被选中了

cpu发出的地址空间和设备的地址空间不是一回事,就像街道编号和小区房间编号

 

 

 

 

 

 

 

 

 cpu 不能直接访问emmc flash ,因为两个地址空间是隔离的

但是pcie的做法就是,直接转换cpu的地址 为pcie的地址

这样驱动程序只要读写pcie的地址就可以了

 

 

 1.配置空间申明需要多大的空间  地址空间

 2.主机读出当前申明,分配1m空间(32b  0-4g   f分配1m  a-b 地址空间  写入地址空间)

 3.设置cpu地址空间与pci地址空间的转换

 

 

pci   地址和信号是复用的(通过frame区分),但是并行高速传输有干扰

 

 

 

 

 

 

pcie 串行差分信号传输:

PCIe差分信号是计算机硬件中一种用于高速数据传输的电信号。它由两个相反方向的电信号组成,一个叫做“正极性”(p)信号,另一个叫做“负极性”(n)信号。

这两个信号被一起使用来传输数字信号,因为它们可以减少电磁干扰并提高传输距离。PCIe差分信号通常用于将图形卡、网络适配器和其他高速I/O设备连接到计算机主板上。

 

 

 

 

 

 

 

 

 

 

 在第一个时钟 ,frame低电平传输的是地址,后面传输的是数据

1.pcie 地址空间 给每个设备分配地址

 2.将地址写入pcie配置寄存器

 

一开始配置的时候,没有地址空间,是怎么确定设备的?

idselect 初始化设备选择

linux驱动大全开发之pci和pcie_哔哩哔哩_bilibili  36:00~47:16

 

 

 

 

 

 

 


同时也可以链接pcie桥,作用是转发(分辨 headtype 区别是普通pcie设备还是桥设备)

 

 

 

 

 

多次转发:bus0->bus1->2->bus3

1.判断bus信号是否属于自己处理,不是的话就转发到指定的pci设备

2.将type1命令转换为type0命令

 

 

 

 

 

 

 

 

 

 

iic/uart/spi

 

 IIC 通过从机地址,确定访问哪个器件。

 

 

 

 

 

 

 

 

 

 

 

 

UART  通信协议   起始位一般不会选择刚开始的地方  不稳定