【【萌新的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
相关文章:

【【萌新的SOC学习之 VDMA 彩条显示实验之一】】
萌新的SOC学习之 VDMA 彩条显示实验之一 实验任务 : 本章的实验任务是 PS写彩条数据至 DDR3 内存中 然后通过 VDMA IP核 将彩条数据显示在 RGB LCD 液晶屏上 下面是本次实验的系统框图 VDMA 通过 HP接口 与 PS端的 DDR 存储器 进行交互 因为 VDMA 出来的是 str…...
相机通用类之海康相机,软触发硬触发(飞拍),并输出halcon格式对象
//在此之前可以先浏览我编写的通用上位机类,更方便理解 https://blog.csdn.net/m0_51559565/article/details/134403745最近完成一个关于海康采图的demo,记录并说明用法。 先上代码。using System; using System.Collections.Generic; using System.Runt…...
linux时间调整
查看当前系统时间 [rootVM-12-12-centos ~]# date Sat Nov 18 16:09:11 CST 2023 Sat:表示星期六Saturday的缩写 Nov:表示十一月November的缩写 18:表示日期18号 16:09:11:时间 CST:China Standard Time中国标准…...

C++模版初阶
泛型编程 如下的交换函数中,它们只有类型的不同,应该怎么实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp left;left right;right temp; }void Swap(double& left, double& right) {double temp…...

软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】
软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】 课本里章节里所有蓝色字体的思维导图...
Go 语言结构体验证详解:validate 标签与自定义规则
介绍 Go 语言中,结构体验证是保障数据完整性和正确性的重要手段之一。本文将深入探讨 validate 标签的使用方式,并介绍如何结合验证库 go-playground/validator 进行自定义验证规则。 安装与导入验证库 首先,请确保已安装验证库:…...

软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】
软考-高级-系统架构设计师教程(清华第2版)【第19章 大数据架构设计理论与实践 (P691~716)-思维导图】 课本里章节里所有蓝色字体的思维导图...

深度学习YOLOv5车辆颜色识别检测 - python opencv 计算机竞赛
文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向࿰…...

c语言-浅谈指针(3)
文章目录 1.字符指针变量常见的字符指针初始化另一种字符指针初始化例: 2.数组指针变量什么是数组指针变量数组指针变量创建数组指针变量初始化例(二维数组传参的本质) 3.函数指针变量什么是函数指针变量呢?函数指针变量创建函数指…...
从服务器端获取人脸数据,在本地检测特征,并将特征发送给服务器
目录 1.定义函数get_database_process: 2.定义函数features_construct: 3.定义函数send_features_data: 4. 定义函数database_features_construct: 5. main 函数 1.定义函数get_database_process: …...

ARDUINO UNO 12颗LED超酷流水灯效果
效果代码: #define t 30 #define t1 20 #define t2 100 #define t3 50 void setup() { // set up pins 2 to 13 as outputs for (int i 2; i < 13; i) { pinMode(i, OUTPUT); } } /Effect 1 void loop() { effect_1(); effect_1(); effect_…...

Linux下查看pytorch运行时真正调用的cuda版本
一般情况我们会安装使用多个cuda版本。而且pytorch在安装时也会自动安装一个对应的版本。 正确查看方式: 想要查看 Pytorch 实际使用的运行时的 cuda 目录,可以直接输出 cpp_extension.py 中的 CUDA_HOME 变量。 import torch import torch.utils imp…...

分享mfc140u.dll丢失的解决方法,针对原因解决mfc140u.dll丢失的问题
作为电脑小白,如果电脑中出现了mfc140u.dll丢失的问题,肯定会比较的慌乱。但是出现mfc140u.dll丢失的问题,其实也有很简单的办法,所以大家不用慌张,接下来就教大家解决办法,能够有效的解决mfc140u.dll丢失的…...

torch_cluster、torch_scatter、torch_sparse三个包的安装
涉及到下面几个包安装的时候经常会出现问题,这里我使用先下载然后再安装的办法: pip install torch_cluster pip install torch_scatter pip install torch_sparse 1、选择你对应的torch版本:https://data.pyg.org/whl/ 2、点进去然后&…...

软件安利——火绒安全
近年来,以优化、驱动、管理为目标所打造的软件屡见不鲜,大同小异的电脑管家相继走入了公众的视野。然而,在这日益急功近利的社会氛围驱动之下,真正坚持初心、优先考虑用户体验的电脑管家逐渐湮没在了浪潮之中。无论是鲁大师&#…...
Induced AI:一个专门为自动化任务而设计的AI原生浏览器RPA平台
内容来源:xiaohuggg Induced AI:一个专门为自动化任务而设计的AI原生浏览器RPA平台 刚刚获得OpenAI CEOsama的个人投资! 它能够模拟人类浏览网页的行为,自动化地浏览网页,搜集关键信息,并对这些信息进行…...
vue3中使用reactive定义的变量响应式丢失问题(大坑!!!)
前言 在Vue 3中,可以使用reactive函数将普通JavaScript对象转换为响应式对象,这样当对象的属性发生变化时,就会自动更新相应的UI。 但是请注意以下情况可能会丢失数据的响应式: 响应式丢失的情况: 1、对使用reactiv…...

Windows Server 2012 R2系统服务器远程桌面服务多用户登录配置分享
Windows Server 2012系统在没有安装远程多界面的情况下,最多只能同时运行2个远程桌面,如果是有多个技术员、合伙人同时操作或是像游戏开发需要用到多界面,但是没有安装就很不方便,今天飞飞来和你们分享Windows server 2012R2系统远…...

mysql之搭建MHA架构实现高可用
1、定义 全称是masterhigh avaliabulity。基于主库的高可用环境下可以实现主从复制及故障切换(基于主从复制才能故障切换) MHA最少要求一主两从,半同步复制模式 2、作用 解决mysql的单点故障问题。一旦主库崩溃,MHA可以在0-30…...

Databend 与海外某电信签约:共创海外电信数据仓库新纪元
为什么选择 Databend 海外某电信面临的主要挑战是随着业务量的增加,传统的 Clickhouse Hive 方案在数据存储和处理上开始显露不足。 原来的大数据分析采用的 Clickhouse Hive 方案进行离线的实时报表。但随着业务量的上升后,Hive的数据存储压力变大&…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...