十、基于FPGA的PCIE协议介绍(二)

该文介绍Xilinx的 PCIE XMDA核 。基于上文:https://blog.csdn.net/weixin_41838250/article/details/114919487

1,Xdma核介绍

  1.1 核架构

 a,XDMA核主要有两个数据功能;一个是可以配置为AXI接口或AXIS流接口的数据解析通道;一个是配置为桥,使用PCIE核功能。另外还有中断。

 b,核内交互的4个数据通道:DMA:RQ,RC;桥:CQ,CC

         RQ:通过DMA发送数据通道;

         RC:通过DMA接收数据通道;

         CC:通过桥发送数据通道;

         CQ:通过桥接收数据通道;

  c,DMA:H2C与C2H各有4个;完成TLP报数据解析与处理;然后将数据传递到端口模块

  d,桥:通过Target Bridge了连接PCIE端口到外部端口模块。

1.2,端口介绍

数据端口分为3类:使用DMA的CH,HC接口和AXI-MM;通过桥的AXI-MM接口;配置寄存器的AXI-Lite接口。

3个中断类型:传统中断,MSI中断;MSI-X中断。

传统中断时序:

MSI中断时序:

MSI-X中断时序:

2,寄存器配置

  2.1寄存器地址字段介绍:(详见pg195)

2.2 H2C ,C2H通道寄存器

C2H与H2C类似;

2.3 IRQ寄存器

2.4 配置寄存器

 通道状态状解析如下:

3,IP核配置

 第一页基本属性接口配置:

(1)、mode:可选择Basic or Advanced;   block location : X7芯片只支持X0Y0;

(2)、lane width:可选择 x1,x2,x4,x8 ;  speed:2.5G,5G ; 参考时钟支持:100M,125M,250M

(3)、用户数据位宽:64bit或128bit,用户时钟和位宽相关:64对应250M,128对应125M。

(4)、用户数据接口:AXIS或AXI-M,AXI-lite为BAR空间配置端口根据需要配置。

第二页设备ID,功能配置:

(1)Vendor ID:设备厂商ID;

         Device ID:设备ID,统一配置为:70<链路速率><链路宽度>;

         Revision ID:设备ID扩展;

        Subsystem Vendor ID:设备或程序制造商ID;

        Subsystem ID:设备系统ID;这个值通常与设备ID相同;

(2) Class Code 配置代码标识的一部功能;

          base:定义基本类型;

          sub:具体标识设备功能;

         interface:定义相关寄存器接口。

第四页中断及相关功能配置:

(1)中断数量配置:可选择1-16;

(2)传统中断配置:可选择 A,B,C,D;

(3)MSI中断配置:选择使能,不选不使能;

(4)MSI-X中断配置:选择使能,不选择不使能;

(5)configuration management interface : 支持PCIE配置管理接口

(6)link 状态使能;

第五页DMA通道相关配置

上到下依次为:

    H2C通道个数,C2H通道个数,读通道允许的最大请求个数, 写通道允许的最大请求个数,选择通过H2C通道,选择通过C2H通道,ID位宽,通道状态端口。

到此IP配置完成。 

4,IP例化:

      xdma_0 xdma_0_inst(
        .sys_clk                      (pcie_clk		),
        .sys_rst_n                    (pcie_rst_n     ),
        .user_lnk_up                  (user_lnk_up	), //link status
        //PCIE 端口
        .pci_exp_txp                  (pci_exp_txp    ),
        .pci_exp_txn                  (pci_exp_txn    ),
        .pci_exp_rxp                  (pci_exp_rxp    ),
        .pci_exp_rxn                  (pci_exp_rxn    ),
        //用户端口
        .axi_aclk                     (sys_clk	      ),
        .axi_aresetn                  (sys_rst        ),
        .usr_irq_req                  (0              ),
        .usr_irq_ack                  (               ),
        //用户数据端口
        .s_axis_c2h_tdata_0           (xdma_tx_tdata      ), 
        .s_axis_c2h_tlast_0           (xdma_tx_tlast      ), 
        .s_axis_c2h_tvalid_0          (xdma_tx_tvalid      ),  
        .s_axis_c2h_tready_0          (xdma_tx_tready      ),  
        .s_axis_c2h_tkeep_0           (xdma_tx_tkeep       ),  
        .m_axis_h2c_tdata_0           (xdma_rx_tdata     ), 
        .m_axis_h2c_tlast_0           (xdma_rx_tlast     ), 
        .m_axis_h2c_tvalid_0          (xdma_rx_tvalid    ),  
        .m_axis_h2c_tready_0          (xdma_rx_tready    ),  
        .m_axis_h2c_tkeep_0           (xdma_rx_tkeep     )
    );

      

 

 

  • 6
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值