PCIE学习笔记(五)PIO例程设计与仿真分析

PIO 例程设计概述

PIO example设计在终端模式的IP核生成时已经包括在IP核中了。该设计属于简单的典型应用,与终端模式的PCIe IP核的事务层接口(AXI4-Stream接口)进行通讯,用户可以通过使用已经成熟的设计方便构建系统,进而验证通讯链路和功能的正确性。该设计功能如下:

  • 使用Xilinx FPGA的块RAM(block RAM)建立的4个事务专用的2KB的目标区域。(共计8192bytes)。
  • 通过完成型TLP包来支持单个DW数据负载的读写事务(32/64bit地址的存储空间和I/O空间)。
  • 利用IP核(rx_bar_hit[7:0])m_axis_rx_tuser[9:2]信号来区分TLP的目标BAR(基地址寄存器)。
  • 提供对32-bit,64-bit和128-bit AXI4-Stream接口的实现的优化。

下图为PCIe系统架构的组成,包括一个Root Complex,一个PCIe交换机设备和一个终端模式的PCIe。

PIO操作包括:从Root Complex中读取数据流到终端,以及从终端传递数据流到Root Complex。

不管哪种操作,都是首先从主机CPU发起的请求。当CPU请求写PCIe终端板卡的存储寄存器时,Root Complex通常会产生一个写存储的TLP包,其中有MMIO(存储映射输入输出)本地地址和将写入寄存器的数据。该TLP包发送到终端PCIe,终端PCIe接收TLP包,更新寄存器数据。

当CPU请求读PCIe终端板卡的寄存器时,Root Complex通常会产生一个读存储的请求,其中有MMIO的本地地址。终端在接收该TLP包后,读取寄存器数据,并产生一个带数据负载的Cpl响应包,并传递给Root Complex。

2.4.2 PIO 硬件设计的配置

PIO设计通过在一种终端PCIe后的一个8192bytes的FPGA块RAM的目标空间来实现。该32-bit的目标空间支持单DW的I/O读写,64bit或32bit的存储读写TLP来访问。PIO设计产生一个带1个DW的数据负载的响应TLP包,来响应读存储和读I/O的请求。对于写I/O的请求,PIO产生一个不带数据负载的响应TLP包。PIO设计产生一个带1-DW数据负载的响应TLP包,来响应读存储的请求,同时将对应地址的FPGA的块RAM空间对应的数据进行更新为收到的TLP的数据负载中的数据。

 

PIO设计支持4个离散的目标空间。每个空间由一个单独的基地址寄存器(BAR)表示的2KB的块RAM实现。

默认的配置产生的PIO设计包括:

  • 一个64-bit可寻址的存储空间BAR
  • 一个32-bit可寻址的存储空间BAR。

当IP核接收到了事务包,IP核对地址进行解码,然后决定4个区域的哪个为请求访问的目标。IP核将TLP包传递给PIO设计,并根据请求访问的BAR置位(rx_bar_hit[7:0])m_axis_rx_tuser[9:2]信号。

双端口块RAM,对应的TLP包的BAR以及(rx_bar_hit[7:0])m_axis_rx_tuser[9:2]信号如下图所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值