一个早起的程序员
主要从事FPGA、ZYNQ、CPU内核、MicroBlaze、STM32、QT、MFC、上位机相关开发,擅长高速接口、视频传输、视频采集,包括PCIe、USB3.0、光纤、SDI、VGA、DVI、HDMI等高速接口。大学期间在学校参加过全国电子设计大赛两届、全国物联网大赛、山东省电子设计大赛、全国信息杯等比赛,并获得全国奖和省级奖十余项。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
44.XDMA逻辑实战1-创建XDMA工程并在线测试
1.上期回顾前面讲解了XDMA的功能、原理及所有寄存器,我们现在开始创建 XDMA IP并生成工程,本篇也会对我们生成的工程进行下载测试,验证PCIe设备是否正常运行。2.XDMA例子功能(1)1个H2C通道和1个C2H通道;(2)使用MSI中断,并开始4个中断向量(2个DMA通道中断、2个用户逻辑中断);(3)开启用户逻辑寄存器空间。3.创建工程下面我会带着大家一步一步创建XDMA IP,文章最下面也会附带本节源代码。我们打开Vivado,点击创建工程下一步原创 2022-01-19 17:15:41 · 3082 阅读 · 20 评论 -
43.XDMA寄存器详解7-MSI-X Vector Table and PBA寄存器组剖析及MSI-X中断详解
目录1.上节回顾2.MSI-X Table and PBA由来3.XDMA MSI-X Table and PBA寄存器4.MSI和MSI-X中断机制5.MSI和MSI-X对比6.MSI/MSI-X Capability结构6.1 MSI Capability结构6.2 MSI消息格式及发送方式6.3 MSI-X Capability结构6.4 MSI-X table查找过程7.下节内容1.上节回顾上节我们讲述了SGDMA Common寄存器组,我们这节原创 2022-01-18 23:29:12 · 3194 阅读 · 0 评论 -
42.XDMA寄存器详解6-SGDMA Common寄存器组剖析
1.上节回顾上节我们讲述了H2C SGDMA/C2H SGDMA寄存器组,我们今天来看SGDMA Common寄存器组,如下。2.SGDMA Common寄存器组2.1 SGDMA标识寄存器2.2 SGDMA描述符控制寄存器2.3 SGDMA描述符信用使能寄存器3.下节内容下节我们对MSI-X Vector Table and PBA相关寄存器组(最后一组)进行详解,大家继续努力。1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与原创 2022-01-18 22:18:54 · 1626 阅读 · 0 评论 -
41.XDMA寄存器详解5-H2C SGDMA/C2H SGDMA寄存器组剖析
目录1.上节回顾2.H2C SGDMA寄存器组2.1H2C SGDMA标识寄存器2.2H2C SGDMA描述符基地址寄存器2.3H2C SGDMA邻接描述符数量寄存器2.4H2C SGDMA描述符信用寄存器3.C2H SGDMA寄存器组4.下节内容1.上节回顾上节我们讲述了Config Block寄存器组,我们今天来看H2C SGDMA/C2H SGDMA寄存器组,如下。H2C SGDMA/C2H SGDMA寄存器组主要是用来描述每个通道DMA描述符相关的一些原创 2022-01-18 21:42:29 · 2470 阅读 · 2 评论 -
40.XDMA寄存器详解4-Config Block寄存器组剖析
目录1.上节回顾2. Config Block寄存器剖析2.1 Config标识寄存器(0x00 只读)2.2 Config设备总线ID寄存器(0x04 只读)2.3 Config最大写请求TLP有效负载寄存器(0x08 只读)2.4 Config最大读请求TLP有效负载寄存器(0x0C 只读)2.5 Config DMA 子系统ID寄存器(0x10 只读)2.6 Config MSI使能寄存器(0x14 只读)2.7 Config PCIE数据位宽寄存器(0x18 .原创 2022-01-18 00:07:07 · 1388 阅读 · 0 评论 -
39.XDMA寄存器详解3-IRQ Block寄存器组剖析
目录1.上节回顾2. IRQ Block寄存器剖析2.1 IRQ标识寄存器(0x00 只读)2.2 IRQ用户中断使能掩码寄存器(0x04)2.3 IRQ DMA引擎中断使能掩码寄存器(0x10)2.4 IRQ用户中断请求寄存器(0x40 只读)2.5 IRQ DMA引擎中断请求寄存器(0x44只读)2.6 IRQ用户中断挂起寄存器(0x48 只读)2.7 IRQ DMA引擎中断挂起寄存器(0x4C 只读)2.8 IRQ 用户中断向量设置寄存器(0x80-0x8C原创 2022-01-17 21:42:09 · 1689 阅读 · 0 评论 -
38.XDMA寄存器详解2-H2C、C2H通道寄存器组剖析
目录1.上节回顾2. H2C寄存器剖析2.1 H2C通道标识寄存器(0x00)2.2 H2C通道控制寄存器(0x04)2.3 H2C通道状态寄存器(0x40)2.4 H2C通道完成描述符数量寄存器(0x48)2.5 H2C通道对齐寄存器(0x4C)2.6 H2C通道查询模式回写地址寄存器(0x88、0x8C)2.7 H2C通道中断掩码寄存器(0x90)2.8 H2C通道性能监视控制寄存器(0xC0)2.9 H2C通道周期计数性能寄存器(0xC4、0xC8)2原创 2022-01-16 14:54:48 · 4291 阅读 · 3 评论 -
37.XDMA寄存器详解1-内部寄存器概览
目录1.XDMA寄存器Bar空间映射规则2.XDMA寄存器概览2.1H2C通道寄存器组2.2C2H通道寄存器组2.3IRQ Block寄存器组2.4Config寄存器组2.5H2C SGDMA寄存器组2.6C2H SGDMA寄存器组2.7SGDMA Common寄存器组2.8MSI-X寄存器组3.XDMA寄存器Bar地址空间访问规则4.下节内容1.XDMA寄存器Bar空间映射规则IP核默认只支持DMA(支持DMA Stream和...原创 2022-01-15 23:29:10 · 3177 阅读 · 0 评论 -
36.XDMA原理详解2-DMA描述符、描述符FIFO、描述符旁路详解
目录1.上节回顾2.描述符详解2.1描述符数据结构2.2描述符各个字段详解3.XDMA描述符FIFO4.XDMA描述符旁路5.下节内容1.上节回顾上节我们讲解了描述符的概念及XDMA数据传输架构,描述符其实是用来描述将要执行的内存块传输,包含DMA传输源地址、目的地址、传输长度等各种核心信息。我们这节详细讲解描述符的数据结构及含义。2.描述符详解2.1描述符数据结构一个描述符由32字节组成,数据结构如下所示。 Offset(偏移)原创 2022-01-14 22:14:42 · 3975 阅读 · 0 评论 -
35.XDMA原理详解1-DMA描述符概述及DMA数据传输架构
1.DMA Operations(DMA操作)PCIe DMA引擎通常在PC内存和FPGA内存之间移动数据,FPGA通常是外接卡。当数据从主机存储器到FPGA存储器,称为主机到卡(H2C)的传输或系统到卡(S2C)的传输。相反,当数据从fpga存储器移动到主机存储器时,它被称为卡到主机(C2H)或卡到系统(C2S)传输。C2H、H2C这些术语有助于描述数据的流动方式(而不是使用读和写,后者很快就会引起混淆)。PCIe DMA引擎只是简单地将数据移动到PCIe地址空间,或者从PCIe地址空间获取数据.原创 2022-01-13 22:50:30 · 5541 阅读 · 3 评论 -
34.XDMA功能详解3-核的功能配置及中断原理
目录1.核的功能配置2.IRQ Module中断原理2.1传统中断2.2 MSI和MSI-X中断3.下节内容1.核的功能配置IP核默认只支持DMA(支持DMA Stream和DMA MM),DMA也是必须要开启的,也就是4通达H2C/4通道/C2H,此时DMA控制和配置寄存器存在于Bar0地址空间。如果使能PCIe to AXI Lite Master,则IP核会多出一个AXI Lite Master,此接口用于访问用户逻辑寄存器,这些寄存器存在于Bar0地址空间,而DMA控制和原创 2022-01-12 22:29:59 · 4510 阅读 · 6 评论 -
33.XDMA功能详解2-XDMA概述、功能框图、应用场景
目录1.XDMA概述2.XDMA功能框图3.支持的事务4.XDMA应用场景5.下节内容以下是对pg195-pcie-dma文档的翻译。每个我都会做对应的红色字体解释。1.XDMA概述DMA/Bridge Subsustem for PCI Express IP核可以被配置为高性能直接内存访问(DMA)搬运器或者被配置为一个桥(PCIe和具有AXI接口的内存空间)。(1)DMA数据搬运器:当作为DMA时,这个IP核可以被配置为AIX4(AXI4 Memory Mapped)原创 2022-01-11 22:37:23 · 4608 阅读 · 1 评论 -
32.XDMA功能详解1-初识XDMA
1.前期回顾前期我们讲解了PIO和XAPP1052的原理及代码剖析,本期我们开始讲解XDMA的相关知识及应用。2.什么是XDMAXDMA其实是Xilinx提供给我们的一个IP核,全程为DMA/Bridge Subsustem for PCI Express IP core,与前面讲解的XAPP1052功能类似,该IP核可以实现通过PCIe链路与PC进行DMA大数据传输,与XAPP1052不同的是该IP核不提供内部实现代码,我们只能去应用它。3.为什么要学习XDMA相比于XAPP1052,原创 2022-01-10 22:02:23 · 6381 阅读 · 0 评论 -
31.XAPP1052乱序分析及处理
目录1.XAPP1052乱序分析2.XAPP1052乱序处理2.1乱序处理方法选择2.2 XAPP1052乱序处理代码详解3.XAPP1052乱序处理后的波形分析3.1发送引擎3.2接收引擎4.XAPP1052乱序处理后的带宽测试5.下期内容1.XAPP1052乱序分析首先先给大家讲解下什么是PCIe的乱序。在PCIe系统中,乱序就是主机发送的TLP序列ID为1、2、3、4到从机,从机接收到的可能不是1、2、3、4。主机和从机如果都不解决乱序的问题,就会导致从机接原创 2022-01-09 12:43:27 · 1391 阅读 · 1 评论 -
30.XAPP1052驱动实战2-DLL动态链接库应用
目录1.上节回顾2.创建MFC应用程序3.拷贝库文件到工程目录4.添加库文件到工程5.测试界面及代码设计6.源代码下载7.下节内容1.上节回顾上节课我们利用Windriver现有的函数封装了自己的PCIe DLL。本节我们要开发一个MFC应用程序,通过调用我们自己封装的DLL实现对DMA读写速度测试,界面如下图所示。2.创建MFC应用程序(1)打开VS2010,点击新建,我们创建MFC应用程序,如下图。(2)点击确定后会跳出以下界面,我们按照下面的原创 2022-01-08 22:52:53 · 538 阅读 · 0 评论 -
29.XAPP1052驱动实战1-DLL动态链接库封装
1.上节回顾上节课我们学习了virtex5_diag.exe应用程序完成DMA读写并实现中断响应的详细流程及源代码,这节我们利用Windriver现有的函数开始封装我们自己的PCIe DLL。2.安装VS2010我们这里使用的VS2010编译器,大家安装即可。3.封装DLL动态链接库代码我已经提前写好了,前面大家有了一定的基础肯定都可以看懂,这里只讲述整个封装DLL的流程及MFC使用方法。大家跟着我一步一步走即可。(1)创建以下文件夹用来存放我们的dll工程,课程中前缀aec代表a_原创 2022-01-08 01:03:44 · 615 阅读 · 0 评论 -
28.XAPP1052驱动详解-WinDriver DMA读写流程
目录1.上节回顾2.PC DMA读写流程图3.PC DMA读写源代码详解3.1 VIRTEX5_DMAGetMaxPacketSize详解3.2 VIRTEX5_DMAOpen详解3.3 VIRTEX5_DMADevicePrepare详解(核心)3.4 VIRTEX5_DmaIntEnable详解3.5 VIRTEX5_IntEnable详解3.6 DMA缓冲区初始化3.7 VIRTEX5_DMAStart详解4.下节内容1.上节回顾上节课我们给XAPP原创 2022-01-06 14:49:14 · 1570 阅读 · 4 评论 -
27.XAPP1052源码实战2-DMA读写在线波形分析
1.上节回顾上节课我们对XAPP1052源代码寄存器读写、DMA读写进行测试,本节课给加硬件逻辑分析仪,在线查看寄存器读写、DMA读写的波形。2.添加硬件逻辑分析仪ila2.1生成IP核如下操作添加IP。2.2接收引擎添加信号我们在接收引擎代码的最下面添加要观察的信号,注释非常清晰,这里不多说了,上节我给大家的代码也都已经添加好了。2.3发送引擎添加信号我们在发送引擎代码的最下面添加要观察的信号。添加完成后,点击生成bit流、烧写、重启电脑。3..原创 2022-01-05 15:30:08 · 2945 阅读 · 0 评论 -
26.XAPP1052源码实战1-DMA读写在线测试
目录1.上节回顾2.本节内容3.在线测试3.1 寄存器测试3.2 DMA测试4.难点分析5.下节内容1.上节回顾截止到现在,XAPP1052源代码已经讲解剖析完毕,本节课我们结合实战,测试下XAPP1052的DMA读写效率。2.本节内容本节我会使用Xilinx K7 FPGA板卡进行下载验证,如果大家手里是A7的也是可以,不懂的可以问我,带注释的源代码我会附在文章结尾。3.在线测试注意:使用A7开发板的记得把器件型号和约束改下重新生成比特流,其他不变,如下原创 2022-01-04 22:36:34 · 1073 阅读 · 3 评论 -
25.XAPP1052源码详解5-接收引擎BMD_64_RX_ENGINE.v剖析
1.上节回顾上节学习了发送引擎(DMA读请求逻辑、DMA写请求逻辑、CPLD发送逻辑),这节我们开始剖析接收引擎。2.接收引擎功能框图接收引擎其实完成了以下功能。(1)解析PC发来的存储器读请求(PC读存储器模块中的寄存器,FPGA设备发送引擎返回CPLD给PC);(2)解析PC发来的存储器写请求(PC写存储器模块中的寄存器);(3)解析PC发来的带数据的完成报文(FPGA设备不是DMA读嘛,PC需要返回多个CPLD TLP),这里接收引擎接收到并且做数据对比。如下框图所示。原创 2022-01-03 15:19:04 · 1116 阅读 · 0 评论 -
24.XAPP1052源码详解4-发送引擎BMD_64_TX_ENGINE.v剖析2
目录1.上节回顾2.带数据的完成报文(CPLD)3.存储器写请求(DMA写)3.1 DMA写TLP详细组成3.2 DMA写逻辑代码剖析4.存储器读请求(DMA读)4.1 DMA读TLP详细组成4.2 DMA读逻辑代码剖析5.下节内容1.上节回顾上节我们学习了发送引擎功能框图、发送引擎BMD_64_TX_ENGINE.v模块接口、发送引擎BMD_64_TX_ENGINE.v状态机组成,这节我们学习发送引擎发送带数据的完成报文(CPLD)、存储器写请求(DMA写)、存原创 2022-01-02 19:09:22 · 919 阅读 · 1 评论 -
23.XAPP1052源码详解3-发送引擎BMD_64_TX_ENGINE.v剖析1
1.上节回顾上节我们对XAPP1052存储器模块内的寄存器做了详细的概述,这节我们开始讲解发送引擎,我们需要学习这些寄存器是如何控制发送引擎完成DMA读写请求,还有就是这些寄存器是怎样为DMA读写请求提供了必要的信息。2.发送引擎功能框图如下图,我们可以知道发送引擎其实完成了存储器读请求(DMA读)、存储器写请求(DMA写)、带数据的完成报文(CPLD)的TLP发送。3.发送引擎BMD_64_TX_ENGINE.v模块接口详解下图详细讲解了BMD_64_TX_ENGINE.v模块原创 2022-01-01 22:50:54 · 1105 阅读 · 0 评论 -
22.XAPP1052源码详解2-BMD_EP_MEM.v寄存器剖析
注意:博文内部附带的图片为高清图片,学习中如果看不清楚双击放大即可。1.上节回顾上节我们对XAPP1052源代码工程结构及模块功能进行了剖析,今天开始讲解存储器模块中的寄存器,讲解完寄存器后,我们会紧接着讲解接收引擎和发送引擎。2.写在前面再次强调,XAPP1052工作方式是PC对FPGA设备存储器模块中DMA控制和状态寄存器进行读写,进而DMA寄存器会主动触发FPGA发送引擎给PC发送存储器读请求和存储器写请求完成DMA传输,如下图所示。因此我们这节核心是存储器模块,也就是对BMD_.原创 2021-12-31 12:17:14 · 1338 阅读 · 3 评论 -
21.XAPP1052源码详解1-源码工程结构及模块功能剖析
目录1.上节回顾2.XAPP1052源码工程结构3.XAPP1052模块功能详解4.下节内容1.上节回顾上节我们深入讲解了XAPP1052架构,这节我们开始对XAPP1052源代码工程结构及模块功能进行剖析。2.XAPP1052源码工程结构XAPP1052文件结构和PIO大部分是一样,都是包含存储器模块、发送引擎、接收引擎三大核心模块,最大的不同就是多了一个axi_trn_top,BMD内部不是直接解析PCIe核的AXI-Stream协议,解析的是经过axi_trn_top转原创 2021-12-29 23:48:23 · 1572 阅读 · 2 评论 -
20.XAPP1052源码(DMA)功能详解
我们其实可以知道PIO例子PC对于FPGA寄存器读写的时候,PC是作为PCIe系统中的主机,而FPGA充当的是从机的角色,并且PC使用的是存储器读请求事务和存储器写请求事务,只是事务的数据长度都是1个DWORD。而XAPP1052中PC读写FPGA存储器(寄存器)其实和PIO例子中的含义是一模一样的,所以XAPP1052只是在PIO例子加入了FPGA读写PC存储器(内存)的一些事务请求逻辑。FPGA读PC存储和FPGA写PC存储器操作都是以FPGA作为PCIe系统中的主机,PC作为从机,所以PIO例子是单向原创 2021-12-28 16:41:11 · 2724 阅读 · 0 评论 -
19.PIO源码实战2-在线调试
目录1.上节回顾2.添加硬件逻辑分析仪3.存储器写操作时序4.存储器读操作时序5.下节内容1.上节回顾上节我们对PIO源代码进行下载并且利用WinDriver进行寄存器读写测试。详细的说明了怎么编译、下载、软件安装、驱动安装、软件使用,相信大家都可以测试成功。本节课给代码添加硬件逻辑分析仪,从波形学习主机对设备寄存器读写的时序。2.添加硬件逻辑分析仪(1)点击Window->IP Catalog(2)添加ila并配置,点击OK(3)添加调试信号.原创 2021-12-27 22:15:04 · 4049 阅读 · 1 评论 -
18.PIO源码实战1-在线测试
1.上节回顾上节我们学习PIO源代码PIO_EP内部存储模块(PIO_EP_MEM_ACCESS),截止到现在,PIO源代码已经讲解剖析完毕,本节课我们结合实战,更为深入的学习PIO。2.本节内容本节我会使用Xilinx K7 FPGA板卡进行下载验证,如果大家手里是A7的也是可以,没有的可以在网上购买或者自己投板,原理图非常简单。本节内容如下:(1)学习FPGA PCIe原理图(2)编译前注意事项(时钟和复位)(3)编译及烧写代码(4)安装WinDriver(5)利用安装驱动原创 2021-12-27 16:37:24 · 5130 阅读 · 3 评论 -
17.PIO源码详解7-PIO_EP_MEM_ACCESS模块(PIO_EP_MEM_ACCESS.v)剖析
1.上节回顾上节我们学习PIO源代码PIO_EP内部发送引擎(PIO_TX_ENGINE),本节我们开始剖析PIO_EP内部的存储模块(PIO_EP_MEM_ACCESS)。PIO_EP模块架构图2.PIO_EP_MEM_ACCESS模块接口下面是存储模块接口代码,非常简单,就是读访问和写访问两组信号。读访问由读地址信号、读字节使能信号(4个字节,哪些字节有效地意思)、读数据信号组成;写访问由写地址信号、写数据信号、写使能信号、写使能字节使能信号、写忙信号组成。3.PIO...原创 2021-12-26 21:06:11 · 871 阅读 · 0 评论 -
16.PIO源码详解6-PIO_TX_ENGINE模块(PIO_TX_ENGINE.v)剖析
手把手学习PCIe总线:1.xilinx PIO代码解析,会分析每一句FPGA逻辑代码 2.xapp1052代码解析,会分析每一句FPGA逻辑代码 3.xdma框架及代码解析,会教大家深入应用xdma IP 核。原创 2021-12-26 16:06:02 · 1178 阅读 · 0 评论 -
15.PIO源码详解5-PIO_RX_ENGINE模块(PIO_RX_ENGINE.v)剖析
目录1.上节回顾2.PIO_RX_ENGINE模块接口3.PIO_RX_ENGINE模块代码剖析3.1 AXI 64位和AXI 128位3.2PIO_RX_ENGINE流程3.3PIO_RX_ENGINE 32位存储器读请求1.上节回顾上节课我们学习了PIO_EP模块,如下,PIO_EP模块包含了接收引擎(PIO_RX_ENGINE)、存储器模块(PIO_EP_MEM_ACCESS)、发送引擎(PIO_TX_ENGINE),这节我们首先学习接收引擎(PIO_RX_ENGI..原创 2021-02-26 18:26:50 · 2441 阅读 · 8 评论 -
14.PIO源码详解4-PIO_EP模块(PIO_EP.v)剖析
目录1.PIO_EP模块架构2.PIO_EP模块核心要点2.1TLP包字段信息2.2接收引擎请求发送引擎发送TLP2.3总线号、设备号、厂商号用法3.PIO_EP模块源代码剖析4.下节内容1.PIO_EP模块架构直接硬核,PIO_EP模块架构图如下,看不清记得点图放大,别眯眼睛。PIO_EP模块内部子模块如下。本来要和上面图画在一起,怕太复杂,大家看晕,所以独立出来,为了更加清晰。其实大家可以看出来PIO_EP模块主要完成了PCIe PIO读和写功能,内部有接收引原创 2021-02-25 23:04:36 · 1384 阅读 · 0 评论 -
13.PIO源码详解3-PIO模块(PIO.v)剖析
1.PIO.v模块架构PIO架构图如下:首先PIO的代码如下,module PIO #( parameter C_DATA_WIDTH = 64, // RX/TX interface data width // Do not override parameters below this line parameter KEEP_WIDTH = C_DATA_WIDTH / 8, // TSTRB width paramete原创 2021-02-24 22:23:23 · 1998 阅读 · 2 评论 -
12.PIO源码详解2-app模块(pcie_app_7x.v)剖析
之所以成为app,就是指应用的意思,这个模块主要实现用户逻辑的,这节课我们讲解app模块(pcie_app_7x.v)的架构和代码。前面说过app主要是提供了配置PCIe Core的一些信息,其实配置信号包括如下,我们知道就行,用的时候不必关心。电源管理配置 错误处理配置 pl层配置 中断配置 其他配置下面为app模块的源代码及注释。除了提供配置信息外,app模块包含了PIO子模块。module pcie_app_7x#( parameter C_DATA_WIDTH = 64原创 2021-02-23 21:37:24 · 1630 阅读 · 1 评论 -
11.PIO源码详解1-顶层模块(xilinx_pcie_2_1_ep_7x.v)剖析
春节已经过完,继续开始忙碌。上一节我们创建一个FPGA PCIe PIO源代码工程,并且讲解了工程文件结构及每个文件的大体功能,这节我们从顶层文件开始学习PIO源代码。1.PIO源代码模块架构首先先给大家贴一个模块包含关系树,大家也可以打开PIO/imports/hierarchy.txt进行查看详细内容,这里我把pcie_7x_0下的子模块删除了,因为pcie_7x_0下的模块是PCIe IP Core相关的模块,我们不需要关心。 xilinx_pcie_2_1_ep_7x | |.原创 2021-02-23 21:08:26 · 1803 阅读 · 2 评论 -
10.手把手Vivado创建PIO源码工程
目录1.前言2.PCIe IP工程创建2.1 打开Vivado2.2 Next2.3 指定工程名和工程路径2.4 指定工程类型2.5 选择器件型号2.6 工程概括2.7 Vivado操作界面2.8 添加PCI Express IP2.9 PCI Express IP Core配置-Basic2.10 PCI Express IP Core配置-IDs2.11 PCI Express IP Core配置-Bars2.12 PCI Express IP C原创 2021-02-11 13:47:04 · 1729 阅读 · 0 评论 -
9.PIO源码功能详解
PIO例子,是我们的PC为主机(PCIe Host),FPGA为从机(PCIe Device),实现的功能就是PC通过PCIe接口读写PFGA的寄存器或者RAM。PIO例子主要实现了以下类型的请求,后面我们分析源代码的时候一一分析,我们上位机使用windriver库函数进行操作,windriver驱动编写会在后面讲解完PIO代码后讲解。32位地址的存储器读请求 32位地址的存储器写请求 64位地址的存储器读请求 64位地址的存储器写请求 IO读请求 IO写请求 注意:PIO例子里原创 2021-02-06 23:55:07 · 1402 阅读 · 1 评论 -
8.PCIe实战后期课程大纲
1.前期回顾前面我们讲解了预备知识点、PIO,XAPP1052,XDMA三者的联系和区别、PCIe TLP详解、AXI 4.0协议。2.后期课程大纲2.1 PIO源码分析(5部分)2.2 XAPP1052源码分析(6部分)2.3 XDMA源码分析(6部分)3.博文更新进度由于前段时间个人原因博文迟迟没有更新,在这里给大家说句抱歉。后期内容我会在最短的时间进行发布,代码已经测试和整理完毕,如下所示,明天我们开始对PIO功能讲解和代码工程创建。1.原创 2021-02-05 23:57:06 · 3640 阅读 · 0 评论 -
7.PCIe协议分析4-AXI4总线详解(理论>>协议>>代码>>波形>>实战)
111原创 2020-11-28 22:52:30 · 3944 阅读 · 4 评论 -
6.PCIe协议分析3-PCIe TLP包详解2
一、回顾 上一篇博文我们讲解了TLP简介以及TLP Header结构,并列出了TLP的所有类型,如下图。本篇博文讲解核心几个TLP类型的具体结构(下图标注红色的),这些核心的TLP包结构,就是我们下章在分析PIO、XAPP1052例程里面实现的所有传输事务使用的TLP包类型。二、核心事务类型的TLP包分析(1)存储器读请求和存储器写请求 存储器读请求是PCIE主机给...原创 2020-03-05 22:42:10 · 6094 阅读 · 15 评论 -
5.PCIe协议分析3-PCIe TLP包详解1
《PCIE协议分析3-PCIE TLP包详解》会分以下两篇博客来讲解:PCIE协议分析3-PCIE TLP包详解1 PCIE协议分析3-PCIE TLP包详解2一、回顾 上一节我们讲解了PIO XAPP1052 XDMA三者联系和区别,大家具体知道了PIO XAPP1052 XDMA实现的基本功能后,就可以进入本节。二、PCIE TLP简介 Host与PCIe设备之...原创 2020-02-28 17:36:58 · 5367 阅读 · 1 评论