硕士论文:AXI总线的DMA数据高速传输

  • 1 基于AXI总线的DMA高速通道及驱动设计与实现[D]
  • 1 绪论
    • 1.1 背景
    • 1.2 DMA意义
    • 1.3 Zynq 7000介绍
      • 1.3.1 Zynq开发
      • 1.3.2 开发套件与设计资源
      • 1.3.3 下载bit文件
      • 1.3.4 Linux下开发环境
  • 2 相关原理
    • 2.1 AXI总线协议
    • 2.2 DMA技术
  • 3 三种数据传输通道的硬件实现
  • 4 数据传输通道的驱动实现
    • 4.1 Linux系统架构
    • 4.2 Linux程序
    • 4.3 启动方式
  • 5 验证与测试
  • 总结与收获

学习论文:基于AXI总线的DMA高速通道及驱动的设计与实现[D]

1 基于AXI总线的DMA高速通道及驱动设计与实现[D]

背景:随着arm嵌入式系统和SoPC的不断发展,以及IP核的复用技术,使得系统中的数据交互量大大提高,系统存储器和外部设备之间的数据交互不仅数据量极大而且对数据传输速度的要求越来越高。----大背景
专注点:高速数据传输中的 读写操作–DMA。—DMA的重要性意义
该论文工作:基于 Zynq 7000 SoPC 平台,在分析 AXI 总线接口和 DMA 工作原理的基础上,设计并实现四种不同应用下的高速数据传输方案,并将各个方案封装成可复用的 IP 核。
①Linux OS 下基于 AXI-HP DMA 传输 ②基于 AXI-HP DMA 裸机传输 ③基于 AXI-HP CDMA 裸机传输 ④基于 AXI-ACP CDMA 裸机传输。

设计验证方案,搭建验证平台:1.测试上行数据通路,2.验证各方案中数据传输的正确性与可靠性,3.测试各个方案的数据传输速率,并进行分析与总结。

1 绪论

1.1 背景

嵌入式系统是一种专用的计算机应用系统,其形式多样、体积小、配置较为精简,设计人员可根据需要进行软硬件裁剪和定制。嵌入式系统大多以ARM处理器为核心,集成 USB、UART、AD/DA、IIC 以及网口等多种外围设备和接口。
一个典型的计算机系统在硬件上由中央处理器、总线系统、存储系统、输入输出系统这几个部分构成:

1.中央处理器:主要由程序计数器(Program Counter, PC)、寄存器文件、算术逻辑单元(Arithmetic and Logic Unit, ALU)和总线接口组成,主要关注工作频率、字长、指令集、缓存等几个重要参数。
2.存储器用于存储程序、数据和文件,由主存储器和磁盘等外部存储器组成,往往采用多级存储结构。
3.系统总线(System Bus)用来规范 CPU、系统存储器和外部设备之间的通信标准,是系
统中各个功能模块之间进行通信的公共通道,包括传输地址的地址总线,传输数据的数据总线以及传输控制信息的控制总线。
4. 输入输出系统(Input/Output System)由输入输出控制器和外部设备构成,CPU 通过 I/O 总线和输入输出系统连接并与鼠标、键盘、显示器等外部设备通信

1.2 DMA意义

数据传输带宽是影响计算机整体性能的重要参数。
传统一般进行一次数据传输,CPU 需向控制总线和地址总线发送相关指令,通过数据总线将数据传输到系统存储器或某个外部设备端口,这种 CPU 控制数据传输的方式速度较低,而且导致 CPU 无法及时进行其他的指令处理。
DMA意义:是指外部设备和系统存储器之间或者存储器与存储器之间直接进行数据传输交易的传输方法,DMA技术使得 CPU 不需要在读写数据上消耗时间,可以将工作主要集中在数据运算上,从而减轻了 CPU 传输数据的负担,不仅加快了系统的运算速度,也提升了整个系统的运行效率。
片上系统上的的各 IP 核通过片上总线与系统中的其他模块进行通信

1.3 Zynq 7000介绍

Zynq 7000系列芯片将ARM公司的高性能双核Cortex A9 硬核处理器嵌入到 Xilinx 7 系列的 FPGA 架构中,构成全可编程处理平台,之间通过一组高度定制的 AXI 互联和接口将两个 ARM Cortex-A9 处理器和 Xilinx 7 系列 FPGA 整合到一起。
不仅拥有 ASIC 在能耗、性能和兼容性方面的优势,而且具备 FPGA 硬件可编程性、灵活性、可扩展性的优点。
PS:代表处理器 PL:代表可编程

1.3.1 Zynq开发

1.在 Zynq 中,PS 和 PL 部分均可独立运行,互相不受控制,将可编程逻辑部分和处理器部分当成对等的主设备
2.可以将 PS 当做主设备,将 PL 看做从设备,PL 作为 PS 的一个可配置的外设受 ARM 处理器控制,比如 ARM 接口不足时可使用 PL 来扩展接口。
3.PL 也可以作为主设备从应用处理单元的存储器中读写数据,并对处理器系统进行控制。当 PL 作为主设备时,系统无法通过启动 PS对 PL 进行配置,所以需通过 JTAG 接口连接板卡并对 PL 进行配置。
一般情况下,是处理器系统首先启动,故一般以 PS 为核心进行 PL 启动和配置。PL 可以配置为整个系统启动过程中的一部分,也可在 ARM 启动后配置

1.3.2 开发套件与设计资源

Zynq-7000 系列提供完备的开发套件与设计资源,Vivado 开发工具为软硬件工程师和系统级设计人员提供简单方便的开发环境。还有大量软 IP 模块、板级支持包(Board Support Package, BSP)和来自第三方合作伙伴的其他操作系统。
Zynq 7000 综合了处理器和可编程逻辑两种优点,适合进行软硬件协同设计
开发软件:Xilinx Design Suite Vivado 2017.4。 共使用到两个核心软件:Vivado IDE 和 软件设计的软件开发套件
Vivado 用于搭建硬件架构,实现硬件数据处理通道,使用 Verilog HDL 语言实现硬件设计,SDK 用于完成裸机的驱动
Vivado IDE 用于搭建系统设计中硬件方面的互联结构及数据通路。设计人员可编写硬件代码,可在图形化界面使用 Xilinx Zynq 7000 提供的 IP 核,可自由配置、实现、验证、集成和封装 IP 核,如对 ARM 处理器核、存储器接口、外设接口、扩展接口及总线等等进行配置与互联。

1.3.3 下载bit文件

Vivado IDE 搭建的硬件工程最终会生成一个 BIT 类型文件,称作这个工程的比特流,它包含整个硬件工程的所有信息
若要使用板载的 QSPI Flash 或者 SD 卡运行开发板,无论基于裸机还是 Linux 操作系统,均需要将比特流和一级启动文件、裸机下软件应用
程序的 ELF 文件或者 Linux OS 下的 uboot.elf 文件一起生成 BOOT.bin,将 BOOT.bin烧写至 QSPI Flash 或者存入 SD 卡相应分区,才能实现板载启动。

1.3.4 Linux下开发环境

SDK 是基于 Eclipse 平台开发的软件设计工具,内部包括 Xilinx IP 核的部分驱动、板级支持包、GNU 编译链接器、支持 ARM 和 NEON 扩展的 GCC 库以及程序的调试器,支持使用 C/C++语言。
使用 SDK 完成裸机工程的软件部分开发,主要用于设计 DMA 驱动程序、测试程序,并进行板载调试。
在带 Linux 操作系统的情况下,需使用 SDK 生成 FSBL,加载设备树资源包,生成设备树工程以及使用 BOOTGEN 生成板载启动文件 BOOT.bin
安装交叉编译器环境,用于对驱动及测试程序进行交叉编译,生成在目标板上可执行的文件。
还需准备 GDB 调试工具、二级启动程序 uboot 和Linux 内核源码并进行编译、编译设备树工具 DTC 等。

2 相关原理

2.1 AXI总线协议

Zynq-7000 SoPC 有三种 AXI4 总线类型.Zynq 7000 中 PS 和 PL 两者之间通信的桥梁主要是 AXI 互联和接口. 握手机制

  • AXI4 是最高性能的接口,主要面向高性能地址映射通信的需求。
  • AXI4-Lite 是一个轻量级、单次传输的地址映射接口,每次传输单个数据和这个数据相对应的一个地址,占用的逻辑资源很少。
  • AXI-Stream 支持面向高速流式数据的传输,没有地址机制,支持批量突发传输无限大小的数据。
    该论文关注的 AXI4-Stream 总线协议中主要的时序信号如下:
    (1)ACLK: 总线时钟;
    (2)ARESETN:总线复位;
    (3)TDATA: 数据,可选位宽有 32/64/128/256 位;
    (4)TREADY: 从机通知主机已经做好传输准备;
    (5)TLAST: 在批量传输的最后一个数据处拉高;
    (7)TVALID: 主机通知从机传输的数据有效[

2.2 DMA技术

在嵌入式系统中,CPU 针对不同设备可以使用轮询、中断控制和 DMA 等方式控制外部设备的访问。

  • 轮询方式
    轮询方式是指CPU 不断查询外设的状态,如果外部设备准备好,就可以向其发送数据或者读取数据,这种方式虽然非常简单,但不断查询总线而导致 CPU 无法执行其他指令,系统效率低下。
  • 中断处理方式
    中断控制方式克服了 CPU 轮询外部设备的缺点,外部设备准备好数据之后,向 CPU 发起中断信号,CPU 收到中断信号后停止当前的工作,根据中断信号指定的设备号处理相应的设备。种处理方式既不影响 CPU 运行,也能保证外部设备的数据得到及时的处理,但对于大量的数据传输的情况,中断方式会不断地向 CPU 发起中断。
    *DMA方式
    使得大量的数据传输可以不通过 CPU 而直接传送到系统存储器,外部设备在准备好数据之后只需要向 DMA 控制器发送一个命令,把数据的地址和大小传送过去,由DMA 控制器负责把数据从外部设备直接存放到系统存储器。
    DMA工作过程:向DMA控制器初始化–>向CPU申请总线控制权–>CPU仲裁—>DMA处理完成,发出中断交还总线控制权。

上行通道和下行通道 是代表着传输方向。

3 三种数据传输通道的硬件实现

三种数据传输方案的硬件部分实现,即基于 AXI-HP DMA、AXI-HP CDMA、AXI-ACP CDMA 的硬件实现。
详情见文章,但没给出具体代码。

4 数据传输通道的驱动实现

AXI-HP DMA基于 Linux 操作系统完成的软件设计。
Linux 内核负责管理系统的进程、内存、设备驱动、文件系统和网络系统。Linux 设备驱动分为字符设备、块设备和网络设备三种。Linux 操作系统将设备驱动大致分成总线、驱动和设备三个部分。

4.1 Linux系统架构

DMA 驱动是用户空间应用程序和硬件层的 DMA IP 核的中间层,此驱动需向上层提供一系列应用程序接口(Application Programming Interface, API)函数,屏蔽底层硬件的操作细节,向下需了解 DMA 的实现原理以及寄存器状态。

4.2 Linux程序

一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序 。

  • Bootloader
    将系统的软件和硬件联系在一起,是启动之后的第一段执行代码,主要用来初始化硬件,提供硬件信息,然后装载操作系统,应用最为广泛的为 uboot。
  • Linux 内核
    Linux 内核包含 Linux 操作系统最核心、最基本的功能,包括内存管理、基本设备驱动、系统初始化等代码,内核文件一般较小。
  • 文件系统
    内核启动之后会挂载根文件系统(Root Filesystem),根文件系统是 Linux 系统的数据和文件存储区域,包括应用程序、库文件和系统配置文件等等,通常挂载在某种存储介质的一个分区上。
  • 应用程序
    应用程序是嵌入式系统的功能载体,代表系统设计想要达到的目标。
    在没有外部 JTAG 的情况下,Zynq-7000 SoPC 首先启动处理器系统(PS),然后通过处理器启动并配置可编程逻辑部分(PL)

4.3 启动方式

  • JTAG,基于裸机的方案采用这种方式,软硬件设计好之后,通过 JTAG 连接线连接开发板和计算机,在 IDE 中将软硬件加载到板子中进行调试。
  • SD卡,基于 Linux OS 的方案采用这种启动方式,将硬件比特流、Linux 内核、AXI DMA 驱动、应用程序等文件存入 SD 卡相应分区,将板子上的跳线设置为 SD 卡启动方式,上电即可启动系统。
    硬件调试信息通过逻辑分析仪抓取相应的信号,在 Vivado 窗口中查看抓取的信息,软件调试信息通过 UART 打印出来或采用存储相关信息到板卡的方式进行调试与验证。

5 验证与测试

总结与收获

  • 了解Zynq的配置及开发过程
  • 了解AXI总线和DMA控制
  • 了解ARM上Linux os的开发

AXI总线的DMA数据高速传输相关推荐

  1. AMBA 系列之 AXI 总线协议

    目录 0.绪论 1.简介 1.1 AXI协议特点 1.2 AXI 读写架构 1.3 接口和互联 1.4 复位 2. 信号描述 2.1 全局信号 2.2 写地址通道信号 2.3 写数据通道信号 2.4 ...

  2. AXI总线学习(AXI34)

    AXI总线学习 AXI协议的主要特征 主要结构 通道定义 读写地址通道 读数据通道 写数据通道 写操作回应信号 接口和互联 寄存器片 基本传输 Read burst Overlapping read ...

  3. AMBA 系列之 AXI 总线协议初探

    目录 0.绪论 1.简介 1.1 AXI协议特点 1.2 AXI 读写架构 1.3 接口和互联 1.4 复位 2. 信号描述 2.1 全局信号 2.2 写地址通道信号 2.3 写数据通道信号 2.4 ...

  4. AXI DMA测试-AXI总线最后一章

    AXI DMA测试 增加一个AXIDMA章节,这部分内容是很多例程的基础,难度不大但是也不小,需要彻底理解整个运行机制. 图4‑61 测试框图 处理器通过M_AXI_GP0接口和AXI_DMA通信,以 ...

  5. ZYNQ | AXI DMA数据环路测试

    利用AXI DMA进行批量数据环路的测试 背景 软硬件平台 原理概述 工程搭建 1.新建一个vivado工程 2.创建block design ①zynq ip核的添加与配置 ②AXI DMA ip核 ...

  6. 镭速-跨国车企数据高速、安全跨境传输解决方案

    一.背景及趋势 在新一代信息技术驱动的数字经济时代,数据已然成为新型生产要素,是国家基础性资源和战略性资源.在汽车市场全球化背景下,产品.数据双跨境将成为车企未来常态.数据的价值核心在于流通和应用,但 ...

  7. ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)

    ZYNQ .AXI协议.PS与PL内部通信  三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...

  8. AMBA、AHB、APB、AXI总线

    AMBA.AHB.APB总线 * AMBA (Advanced Microcontroller Bus Architecture) 高级微处理器总线架构 * AHB (Advanced High-pe ...

  9. (13)ZYNQ AXI总线应用范围(学无止境)

    0 AXI协议应用 ZYNQ FPGA中PL与PS交互接口为AXI接口,AXI接口按照协议分类,可以分为AXI4总线.AXI4-Lite.AXI4-Stream. 1 AXI4总线简介 (For hi ...

最新文章

  1. 直接可以拿去用的正则验证表达式
  2. 智源神经元识别挑战赛发布:收获不只是10万元奖金
  3. 博客作业2---线性表
  4. 机器学习数据集划分-训练集,验证集,测试集
  5. linux培训笔记1
  6. 3.数据结构 --- 栈和队列
  7. iOS开发第三方库汇总
  8. 以未来式计算机为题目的作文,未来式科技想象作文
  9. 渗透测试思路 - 关于黑灰产的那些事(番外篇)
  10. 神经网络中epoch、batch、batch_size、epoch、iteration理解
  11. weblogic 打补丁
  12. uni-app注册 page-head
  13. 英雄联盟手游服务器维护中,英雄联盟手游Server is currently under maintenance解决方法...
  14. 第53章 SQL GROUP BY 语句教程
  15. 0818骑行仙湖绿道
  16. 如何在家远程控制公司的电脑,高效便捷的远程办公?
  17. 我的世界 1.18.1 Forge版 开服教程,可装MOD,带面板
  18. 通过souce执行shell脚本与直接执行脚本的区别
  19. java paint的使用_java使用paint方法画图的方法
  20. 网站服务器如何移动路线,移动线路云服务器

热门文章

  1. 2022-2000-1978:世纪前后22年
  2. Win7程序运行出现Windows Based Scrip Host 已停止工作问题的解决方法
  3. 又是一年毕业季,这百道前端面试题你都会了嘛(基础题+2套简历模板)
  4. Windows下Django项目创建
  5. K3 单据,单据体自定义字段显示及时库存
  6. mbp安装steam显示“steam_osx”已损坏,mac安装steam方法
  7. 计算机excl知识题,计算机excel考试试题「附答案」
  8. Linux系统下海康机器人MVS安装
  9. 2019开年dbaplus北京站沙龙归来
  10. Linux操作系统(一)——Unix、Linux、Ubuntu之间的关系