FPGA系列之吃透PCIE(1)一些概念性介绍

目录

  

PCIE介绍

历史渊源        

通信拓扑结构

地址映射与管理

加载与初始化过程

总结


PCIE介绍

        首先如果你对PCIE这个接口体系不算了解的话,我建议你可以看看SSDfans里面老男孩关于PCIE的知识体系讲解,或者你更有耐心的话也可以研习一下PCIE的协议手册……或者你可以简单看看下面我这两段话有个大体的了解。

历史渊源        

        PCIE呢源自于PCI总线,全称自己百度去……PCIE与PCI的区别,字面就很明显就是PCI EXpress,就是PCI特快专线的意思,哈哈哈。通过什么方式实现呢?其实就是物理层降维打击PCI是并行总线,PCIE是高速串行数据总线,PCI一般是几十兆或者一百多兆的数据速率,当然32位的话总的算下来,最高也有有两三个G的bps,但是PCIE1x的最低速率也有2.5G,所以很快的。

PCIE的高层次操作逻辑其实是对PCI的功能性扩容得来的。其拓扑结构呢就是一个root节点挂若干个endpoint,root节点一般就是对应我们pci上的host端,endpoint就是我们的板卡或者设备端,当然FPGA里的pcie也可以配置为root模式作为host,将另外的设备挂载在上面。

通信拓扑结构

        一般的PCIE通信模式就是host需要数据或者host被通知数据到达时,host通过配置endpoint端DMA寄存器,然后DMA通过PCIE将数据由endpoint端搬运至HOST端的过程,当host需要发送数据给endpoint时,则通过配置endpiont端的DMA寄存器将数据通过PCIE由host端搬运至endpoint端,这里你可能有个疑问为什么host不自己搬呢?当然他是可以自己搬得host可以用cpu去读写endpoint端,自己也有DMA辅助读写endpoint端,但是当有多个endpoint设备的时候可能就忙不过来了,既然每个endpoint都有自己的DAM,反正闲着也是闲着,不剥削白不剥削……

地址映射与管理

        好了了解完上面的操作逻辑后,你又该问了,DMA怎么知道从哪里搬到哪里呢?这个就要讲PCIE的地址空间管理了,PCIE通过BAR空间映射将设备端的地址空间映射到主机里的一段地址空间,这样在主机端直接操作对应的BAR空间就是在操作endpoint里面的地址空间了,而这种映射关系就需要主机在驱动加载的过程中,去配置对应endpoint的BAR空间寄存器去分配地址空间和长度。

加载与初始化过程

        好了说了这么多,也没有个图,接下来咱们捋一下:从上电开始说起,我们的电脑就是HOST端,我们的板卡就是EP端;上电后双方各自加载各自的软件,EP加载完后等着电脑(电脑比较慢,也需要他慢),HOST在上电后先初始化自己的PCIE设备,然后扫描PCIE总线上的EP设备(这一部分在HOST驱动完成),如果EP在物理层上与HOST端LINK上了,那HOST就会给EP分一个设备号,并且获取EP的PCIE的header寄存器(一般存储了PCIE设备的ID,和其他的能力属性),将这些信息暂存。当系统启动末期在加载设备驱动的时候PCIE总线驱动会匹配驱动程序的ID与上面暂存的ID,如果匹配成功,加载设备的驱动程序,在设备驱动里完成EP的BAR空间分配,中断分配等工作。那这个通信链路就算搭建完成了……

        解释一下上面的两个驱动一个是HOST端驱动,指的是运行在HOST主机上,去配置HOST端PCIE设备的驱动,然后EP设备驱动,指的的是也运行在HOST主机上但是通过PCIE去配置EP设备的驱动,两者是不一样的,我们通常所做的一般都是EP设备驱动,HOST端驱动一般系统里面已经集成了……

总结

好了,说了这么多,你听明白了么?听不明白的欢迎在下方讨论,下一篇,咱们研究一下XDMA里面的对应着本篇里边的那些设置……

  • 32
    点赞
  • 199
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值