【【萌新的SOC学习之 VDMA 彩条显示实验之一】】

萌新的SOC学习之 VDMA 彩条显示实验之一

实验任务 :
本章的实验任务是 PS写彩条数据至 DDR3 内存中 然后通过 VDMA IP核 将彩条数据显示在 RGB LCD 液晶屏上

下面是本次实验的系统框图
在这里插入图片描述

VDMA 通过 HP接口 与 PS端的 DDR 存储器 进行交互

因为 VDMA 出来的是 stream流 的 数据 我们现在需要的是把 这个 stream流的数据 通过这个 AXI4-Stream to Video Out 模块
变成 RGB 所能接收的 格式
因为 LCD 有很多的 型号啊 分辨率 之类的
我们可以通过 AXI GPIO 这个接口 接收 LCD的ID 以便 为了后续的设计做处理

下面的 Video Timing Controller VTC 是用来给我们的 RGB 提供一个时序信息

还有一个 动态时钟配置 就是为了给不同屏幕 提供不同的同步时钟
在这里插入图片描述

为什么在这里 它要先把 VDMA的数据传递到 DDR 再传回 VDMA呢
目的是 为了 解决 视频源 和 视频不匹配的问题

我们目前 可以 先简化这样的流程设计
在这里插入图片描述

因为 我们目前所处理的是 固定的型号的屏幕 那么我们可以 删除 AXI GPIO 接口
动态时钟配置 删除 改为 使用 PLL 锁相环 提供 固定时钟的 频率
这个 rgb2lcd 的 IP 只是为了 把 LCD 信号 封装 我们在前期的设计中 也可以暂时将它 删除 取消

还有对于 VTC模块 PS端本来会针对 不同的屏幕 输出 不同的时序 但是 目前来说 我们只针对使用 一个时序 所以可以把PS端 连接输入到 VTC 的 线删除 让它 输出固定频率 不需要调配了
下面是调配完成的 系统框图
在这里插入图片描述

在 zynq中 GP接口 PS 作为 主机 HP接口 PS作为从机
HP 和 GP接口的区别
HP接口 指的是
High-Performance Ports
如果涉及到 大量数据 高带宽的性能传输 用HP
GP 接口指的是
General-Purpose Ports
GP 主要会用到一些中低速的传输

对于zynq HP 是 PL端指向 PS端的
在这里插入图片描述

而对于 GP接口 PS PL 都可以作为主机和从机
在这里插入图片描述

这是我们从图上直观的感知出来的 现在我们观察 用户手册发现HP和 GP 的 区别
HP接口 为PS端的DDR和 OCM 提供一个高带宽的数据路径
每一个HP接口都包含了 FIFO 缓存 提供了 读写的传输

我们在设置的时候 会发现 HP接口是 slave
但是 我们在文档里 可以发现 HP接口 还有显示 master 的 其实这是看我们和什么进行比较 如果我们HP与 AXI interconnect 进行比较时 这就是 master接口
GP接口总线的数据位宽是32位
而HP接口总线的数据位宽 可以是32位 也可以是64位
GP接口 没有FIFO 作缓冲
在这里插入图片描述

VDMA 提供了一种高带宽的存储访问 在 存储器与 目标外设之间
AXI目标外设是 AXI stream video 类型的目标外设
AXI Stream Video 协议
在这里插入图片描述

tuser—作用 start of Frame 表示一帧的开始
tlast ----作用 用来指示 一行的结尾
tkeep 和 tstrb 如果我们 用到了这两个信号 我们就把它赋值为1 就可以了
tuser信号 可能是多个比特的信号 但是只有 bit 0 才代表了 start of Frame

如何用 vaild 和 ready 信号 来传递 SOF信息
在这里插入图片描述

为什么要有 EOL信号 是用来表示我们信号的时序
EOL 代表着 一行的结束 它是在 AXI4-Stream 的 TLAST信号上 的
我们把 TLAST置为高 就相当于 代表着 一行的 结束
VDMA相对于 DMA 不仅接口类型不同 它还会 提供 帧缓存
帧缓存 就是在 存储器内部开辟一个视频空间 用来存储 输入的视频数据 或者是要输出的 视频图像
帧缓存的存在 是为了用来处理 帧速率的 改变 还有图像维度的 改变

在这里插入图片描述

VDMA 模块示意图
VDMA 左边 接到了 DDR上 它是一种 存储映射接口
右边接到了 AXI Stream 的 VDMA 接口
在这里插入图片描述

第二个 fsync 是帧同步信号
帧同步信号的下降沿 标示着一帧信号的开始
然后我们先把 address 的 vaild 信号 拉高 在这里拉高了5次
表示我们从内存中 连续读出 五行 图像 (然后这五行图像组成了1帧)
在这里插入图片描述

下面是 读数据通道 它会返回我们从内存中 读出来的数据

在这里插入图片描述
在这里插入图片描述

这两个 共同组成了MM 接口
下面我们来讲述ST接口
我们从MM 读出的数据 会先存到 line buffer 中 然后从 ST接口传输出去
在这里插入图片描述

我们可以观察到 当tvaild 拉高时 代表从内存读出来的数据以ST的形式正在输出
tlast 拉高 表示的时eol 所以在每一行的最后 都会拉高
在这里插入图片描述

st 接口的 tlast 表示 每一行的 最后一个像素点
在这里插入图片描述

axi协议的 last 信号 实际上是 突发传输的 最后一个数据

下面我们从 Block Design 中 学习具体的内容
在这里插入图片描述

第一个 S_AXI_LITE 接口 主要接到了 zynq 上的 GP端 用来传输 我们主机对 VDMA 的 各种控制
在这里插入图片描述

这两个的 下标前缀都是 AXIS 表示这是 传输 图像数据 的 Stream 接口
剩下两个是相对于我们 在上图 总体规划的左侧的 存储器映射接口

在这里插入图片描述

在这里插入图片描述

Address Width 表示我们最大访问的范围 32 就是 2的32次方
Frame Buffers 帧缓存 我们默认为3
(意思是 在同时使能读 同时使能写 的 状况下 我们 默认为 3 )

现在这里 我们只进行 读 不进行写 所以我们在内存中 只开辟一个帧缓存的空间
在这里插入图片描述

Memory Map Data Width 指的是 存储器 映射位宽

在这里插入图片描述
在这里插入图片描述

这里的 Stream Data Width 实际上就是我们传输的 (图片 这种形式下的 数据位宽
这里我们读RGB888 RGB888是 24bit 的数据
Line Buffer Depth 这里是 行缓存的大小
在这里插入图片描述

这是得到的 最后配置

然后我们观察 Advanced 选项
里面有一个 Fsync Options 这是 设置 帧同步的选项 我们可以选择 None 也可以选择 帧同步
在这里插入图片描述

帧同步 是什么意思呢
我们只有在 帧同步信号的下降沿 我们才对一帧进行操作
在这里插入图片描述

GenLock Mode 指的是 帧缓存的同步模式 这个只有在同步使能读通道 写通道的时候 才会出现这个

我们配置完毕后 选择自动连接 如下是整个电路示意图
在这里插入图片描述

我们观察 如图 发现它会出现两个互联 一个是 AXI interconnect 互联 还有一个是 AXI SmartConnect 互联
现在我们讲述一下 这两个互联之间的 区别和联系
Smart互联 更加紧密的集成到了Vivado的开发环境中去
AXI 互联 可以用在所有的存储器映射中

有一些特定的情况 针对高带宽 的传输 我们使用 Smart互联 他会对我们的设计进行更好的优化 ,它会给系统带来更大的带宽和更小的延时 。
对于中高性能的设计 一般来说用 AXI SmartConnect
对于 低性能如 AXI4-Lite 复杂度比较小 所以用 AXI interconnect

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/191791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux--网络概念

1.什么是网络 1.1 如何看待计算机 我们知道,对于计算机来说,计算机是遵循冯诺依曼体系结构的(即把数据从外设移动到内存,再从内存到CPU进行计算,然后返回内存,重新读写到外设中)。这是一台计算机…

键鼠自动化2.0展示

软件介绍:桌面键鼠自动化工具 Qtc 编写: 本软件采用Qt C编写,旨在提供高效、跨平台的桌面键鼠自动化解决方案。Qt C框架的选择确保了软件的稳定性、可靠性,并通过其图形用户界面实现了用户友好的操作体验。 鼠标移动与点击&#…

redis cluster搭建

k8s部署 Redis Insight k8s部署redis集群_mob6454cc6c6291的技术博客_51CTO博客 占用的内存竟然这么小,才200M左右 随便选个节点进去,看能否连接上其他节点 redis-cli -h redis-cluster-v1-0.redis-cluster.project-gulimall.svc.cluster.local 再创建个…

【总结】I/O接口中的数据线,地址线,控制线,状态线传输什么信息?

数据线 方向:双向功能:在内存、寄存器和数据缓冲寄存器进行数据交换;接口和设备的状态信息也通过数据线传给CPU(这里的状态指的是设备独有的,和状态线中的忙碌、空闲相区别);CPU对外设的控制命…

11 月 11 日 ROS 学习笔记——ROS 架构及概念

文章目录 前言一、 ROS 文件系统级1). 工作空间 Ws2). 功能包3). 消息 msg4). 服务 srv 二、计算图级1). 动态加载节点 nodelet2). 主题 topic3). 服务 srv4). 消息 msg5). 试用练习5). 创建工作空间6). 创建 ROS 功能包和元功能包7). 编译ROS功能包8). 使用 ROS 节点9). 使用主…

JavaEE进阶(1)Java EE 简述(Java EE 发展历程、什么是Web开发? Web网站的工作流程、什么是框架?Java EE 框架学习概览)

目录 Java EE 简述 Java EE 发展历程 什么是Web开发? Web网站的工作流程 什么是框架 框架的定义 源于建筑行业的类比 框架的作用 Java EE 框架学习概览 1. Spring 2. Spring Boot 3. Spring MVC 4. Mybatis 框架之间的关系 Java EE 简述 Java EE是Java平台的企…

optee4.0.0 qemu_v8的环境搭建篇(ubuntu20.10)

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈文章目录 前提条件1、拉取代码2、下载工具链3、编译4、运行

【LeetCode刷题-双指针】--360.有序转化数组

360.有序转化数组 方法&#xff1a;双指针 从两头计算&#xff0c;保存两端较小的值&#xff0c;高中抛物线知识&#xff0c;a>0&#xff0c;向上的抛物线&#xff0c;两端大中间小&#xff0c;从后往前存储计算结果&#xff1b;a<0&#xff0c;向下的抛物线&#xff0c…

学会Bitmap内存管理,你的App内存还会暴增吗?

相信伙伴们在日常的开发中&#xff0c;一定对图片加载有所涉猎&#xff0c;而且对于图片加载现有的第三方库也很多&#xff0c;例如Glide、coil等&#xff0c;使用这些三方库我们好像就没有啥担忧的&#xff0c;他们内部的内存管理和缓存策略做的很好&#xff0c;但是一旦在某些…

MySQL 的执行原理(一)

5.1 单表访问之索引合并 我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级 索引&#xff0c;但存在有特殊情况&#xff0c;在这些特殊情况下也可能在一个查询中使用到多个二 级索引&#xff0c;MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为&…

麒麟 ZYJ 服务器软件适配 参考示例

一、zyj 环境简介 1. ZYJ 概述 国产化 SMZYJ 是由国家 BM 主管部门鉴定并批准生产使用的国内自主开发的 整机 JM 国标设备&#xff0c;设备采用了自主设备基础硬件&#xff08;飞腾、国科微等&#xff09;、安全硬 件自主固件&#xff08;昆仑等&#xff09;自主 SM 专用操作…

第一次组会汇报(2023/11/18)

目录 一&#xff0c;浅谈学习规划 二&#xff0c; 两个比较典型的注意力机制 ㈠SEnet ⒈结构图 ⒉机制流程讲解 ⒊源码&#xff08;pytorch框架实现&#xff09;及逐行解释 ⒋测试结果 ㈡CBAM ⒈结构图 ⒉机制流程讲解 ⒊源码&#xff08;pytorch框架实现&#xff09;…