xlinx_pcie_ip 使用笔记

本文是关于Xilinx PCIe IP核的学习笔记,详细介绍了PCIe的基础知识,包括PCIe的概述、层次结构、BAR空间和中断机制。接着,文章深入探讨了TLP包报文的结构和不同类型,并重点讲解了ISE_PCIE_core的配置步骤,包括选择BAR空间、配置中断和PIO模式的收发。最后,简要提到了DMA模式的收发。
摘要由CSDN通过智能技术生成

PCIE_ISE_学习笔记

我也是刚学习摸索赛灵思的IP核怎么与理论对应上,也有很多不足之处,欢迎大家与我交流

一.  PCIE概述    

首先需要定位的是什么时候需要用到 PCIe 的问题。(PCIe 是什么这里就不做介绍了,不然冗长的像写论文了。 )翻开电脑(台式机),主板上可以清晰的看到常用的接口,能和外面连接的插槽主要有:USB、 Ethernet、 PCIe、PCI、 SATA/PATA、 Audio、 VGA/DVI/HDMI, UART/并口。其中 Audio、VGA/DVI/HDMI制作专用数据输出, UART/并口的速率摆在那里,不适合高速数据传输,剩下的接口最大吞吐率如下:接口最大速率USB USB2.0 480Mbps, USB3.0 5Gbps(USB2.0 速率的 10 倍)Ethernet 1Gbps PCIe X8 Gen1 双向各 16Gbps, X8 Gen2 双向各 32GbpsPCI 2.112Gbps@66Mhz*32 位 SATA/PATA SATA II 3.0Gbps,SATA III 6.0Gbps 排除协议开销,OS 开销,平常使用中 USB 能达到的速度 USB2.0 一般在 30-40MB;Ethenet 如果用硬件实现较低层次的协议在 70-80MBps; PCI 有 64 位的,但是普通PC 或服务器一般是 32 位的,见过效率发挥的较好的能达到 120MB,但是 PCI 是共享总线的,如果总线有多个设备开销,这个速度就难保证了;SATA/PATA 在 PC 中一般用于存储,用自定义设备的很少见。因此,如果数据量超过100M。  
    PCI-Express(peripheralcomponent interconnect express)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。PCIe交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”,简称“PCI-e”。它的主要优势就是数据传输速率高,目前最高的16X 2.0版本可达到10GB/s,而且还有相当大的发展潜力。PCI Express也有多种规格,从PCI Express x1到PCI Express x32,能满足将来一定时间内出现的低速设备和高速设备的需求。PCI-Express最新的接口是PCIe 3.0接口,其比特率为8Gbps,约为上一代产品带宽的两倍,并且包含发射器和接收器均衡、PLL改善以及时钟数据恢复等一系列重要的新功能,用以改善数据传输和数据保护性能。PCIe闪存卡的供应商包括:INTEL、IBM、LSI、OCZ、三星(计划中)、SanDisk、STEC、SuperTalent和东芝(计划中)等,而针对海量的数据增长使得用户对规模更大、可扩展性更强的系统所应用,PCIe 3.0技术的加入最新的LSI MegaRAID控制器及HBA产品的出色性能,就可以实现更大的系统设计灵活性。当然,主流主板都能能支持PCIExpress 1.0 x16,也有部分较高端的主板支持PCI Express2.0 x16。

二.简介

1.层次结构

PCIe 规范对于设备的设计采用分层的结构,有事务层、数据链路层和物理层组成,各层有都分为发送和接收两功能块。


在设备的发送部分,首先根据来自设备核和应用程序的信息,在事务层形成事务层包(TLP),储存在发送缓冲器里,等待推向下层;在数据链路层,在 TLP 包上再串接一些附加信息,这些信息是对方接收 TLP 包时进行错误检查要用到的;在物理层,对TLP 包进行编码,占用链路中的可用通道,从查封发送器发送出去。事务层包( TLP),数据链路层包(DLLP),物理层( PLP)产生于各自所在层,最后通过电或光等介质和另一方通讯。这其中数据链路层包(DLLP),物理层( PLP)的包平常不需要关心,在 IP 核中封装好了。在 FPGA 上做 PCIe的功能,变成完成事务层包(TLP)处理。

2.bar空间

PCIe 通讯是靠发送 TLP 包,如果再进一步参考了PCIe 更详细的书籍就能发现读写包里都有地址信息。如果板卡向 PC 发送TLP 包,例如 MWr 包,那很好理解,地址信息就是PC 的物理地址(注意这里说的是物理地址);如果是 MRd 包,那 PC 收到后回复一个完成包,板卡从完成包分析出数据即得到 MRd 读取地址的数据。那PC 如何读写板卡的数据呢?简单的解释, PC 启动是, BIOS 探测所有的外设。对 PCIe( PCI)设备来说, BIOS 检测到板卡有多少个 BAR 空间,每个空间有多大,然后对应为这些 BAR 空间分配地址。对 PC 设备来说,它能“看”到 PCIe 板卡的空间只有 BAR 空间,也就只能访问这些 BAR 空间。也就是说,板卡可以发送合法的PCIe TLP 包,并得到 PC 端的相应;但是 PC 端访问板卡被局限在 BAR 空间。

简单来说,PC机想操作PCIE设备的内存空间,只能通过bar空间来进行操作。如下图:PC机只能看见bar空间(忽略地址起始和开始),PCIE核通过检测不同的地址来判断要进行task1还是task2。

xilinx_zynq7020 自定义 IP 开发文档是一份描述如何开发和使用自定义 IP(Intelligent Property)的技术文档。Zynq-7020 是 Xilinx 公司生产的一款可编程逻辑器件,搭载了 ARM 处理器和 FPGA 芯片,能够同时实现软件和硬件设计,为嵌入式系统开发提供一种更灵活的解决方案。 在自定义 IP 开发文档中,我们将了解如何使用 Vivado 设计套件来开发自己的 IP。首先,我们需要对 IP 的功能和硬件架构进行规划和设计。可以选择将已有的硬件模块集成为 IP 核,也可以通过硬件描述语言(HDL)从零开始编写 IP 核。然后,我们将详细说明如何使用 Vivado 的 IP Integrator 工具集成 IP 核到我们的设计中,并进行连接和配置。 在自定义 IP 开发文档中,我们还将了解如何为 IP 核创建适当的接口,包括输入输出端口和控制寄存器等。可以通过使用 AXI 或者其他总线协议来定义接口。此外,我们还将学习如何为 IP 核编写相应的测试代码,并在仿真和实际硬件中进行验证和调试。 除了基础的 IP 开发知识,这份文档还提供了一些高级话题,如如何优化 IP 核的性能,如何编写可重用的 IP 代码等。另外,文档还包含了一些实际案例,以帮助读者更好地理解和应用这些知识。 总之,xilinx_zynq7020 自定义 IP 开发文档详细介绍了如何使用 Vivado 设计套件开发和使用自定义 IP 核。通过学习这份文档,读者可以了解到 IP 开发的基础知识,掌握相关工具的使用方法,并具备开发和优化 IP 核的能力,从而更好地应用于各种嵌入式系统开发中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值