【PCIE】基于Riffa架构的PCIE项目

基于Riffa架构的PCIE项目

  1. Pcie分为四层:
    物理层:完成信号的转换以及编码
    包含 PMA 和 PCS
    PMA: Physical Media Attachment 物理媒介层,完成并转串或者串转并的操作
    PCS: Physical Coding Sublayer物理的code,其实就是8b转10b的编码,使用 8b/10b 编码这个编码技术是用于高速接口中使得数据链路中的数据 1 和数据 0 更均衡
    链路层:完成一些编码的操作
    事务层:ipcore 是控制事务处来实现应用层
    应用层

    为什么要经过8b转10b呢?
    因为8b/10b提供了一些沿的信息,它会锁定沿的信息,它知道里边通信的速率是多少,它就能通过通信速率计算出一个基本的周期。再根据沿的偏移量,这样就能算出采集的数据最稳定的地方。它是动态锁定的,并不是锁定一次就不变了。

    ==============

  2. PICE的常用通信框架包括:Riffa框架 和 xilinx的XDMA框架。
    Riffa 可以最多可以支持到8 lane。但是Riffa虚拟出来多个通道,Riffa 最多可以支持 12 个用户的 channel
    在这里插入图片描述
    就跟DDR一样,物理上只能读或者只能写,但是我们虚拟出来几个通道可以同时读写。

    ==============

  3. 这里 RX 和 TX 是使用 xilinx 芯片内部的 GTP 接口实现, (本项目中是 Aritx7 的 GTP接口,将来可以使用 kintex 7 的 GTX 以及高级器件中的 GTH GTY 等高速接口资源)。

    ==============

  4. Riffa框架和xilinx的XDMA框架已经把PCIE的解包和封包做好了,它提供了一个更加简单的接口来给用户使用,使得开发更加高效。如果不使用这种框架的方式,必须自行写解包和封包,这还要涉及到和驱动工程师的配合。

    物理层和链路层由IP自动生成,无需用户关心;用户只需要关心传输层,即TLP包。这部分有框架Riffa和XDMA,可以直接套。
    【PCIE】基于Riffa架构的PCIE项目_第1张图片
    Riffa是通过AXI stream和更底层的pcie core连接。
    在这里插入图片描述

    ==============

  5. Riffa提供的简化接口.
    1)Rx
    【PCIE】基于Riffa架构的PCIE项目_第2张图片
    【PCIE】基于Riffa架构的PCIE项目_第3张图片
    从第二张图可以看出,在接受完数据后CHNL_RX的反应会稍微晚一点,所以代码中需要做一个处理即我们读fifo数据的时候整一个计数器,计数到lenth后保持,直到CHNL_RX拉低后,才退出这一次数据的所有接收。退出之后,再去检测CHNL_RX拉高。

    2)Tx
    【PCIE】基于Riffa架构的PCIE项目_第4张图片
    【PCIE】基于Riffa架构的PCIE项目_第5张图片
    注意LEN的长度为DW长度。
    在这里插入图片描述

    ==============
    6. 以上位机发送1920x1080为例。
    【PCIE】基于Riffa架构的PCIE项目_第6张图片
    一帧开始的时候:隔了一段时间,数据才出来。
    【PCIE】基于Riffa架构的PCIE项目_第7张图片
    一帧结束:
    【PCIE】基于Riffa架构的PCIE项目_第8张图片
    ila保存为modelsim的波形为.wlf文件 ,用modelsim直接打开即可。
    【PCIE】基于Riffa架构的PCIE项目_第9张图片
    【PCIE】基于Riffa架构的PCIE项目_第10张图片
    ==============
    7.riffa框架的用户接口最大只能支持到128位宽,只能到PCIE2.0;而XDMA可以支持到pcie3.0,用户接口最大可以支持到256位。但是XDMA的效率不如riffa的效率高,而且XDMA的AXI-stream的效率很难提高,所以建议只用AXI的接口去开发,不建议使用AXI-stream接口。
    这个DMA其实是DMA到主机的内存,并不是我们板卡的内存。并且XDMA ip只能作为endpoint的设备,不能作为root.

    ==============
    8 . 接收上游发过来的数据的时候,一定要确保对所有数据的处理都是之前双方约定好的包头,所以数据一进来就要产生一个有效帧标志,把其他(异己)帧丢弃

    ==============
    9 . Xilinx 的fifo的机制:先进来的数据要存在fifo的写的高位。

    ==============
    10 . Riffa出来的数据,DW1DW0, DW3DW2, ……… 数据0在低位,数据1在高位。
    【PCIE】基于Riffa架构的PCIE项目_第11张图片

    ==============
    11 . 在写fifo的时候,如何控制写进去的数的个数刚好是4的倍数??
    fifo产生一个几乎满信号,预留好空间;在几乎满的时候,看写进去的数量计数器是否是4的倍数不是则等写到4的倍数后再把ready信号拉高,最多多些3个计数器。
    【PCIE】基于Riffa架构的PCIE项目_第12张图片

你可能感兴趣的:(高速接口,音视频,fpga,hdmi)