ddr传输 pl ps_Vitis ZYNQ开发秘籍 PS 端任意控制 VGA 显示画面最终实现

本文详细介绍了如何在ZYNQ FPGA开发中,利用DDR传输和PS端控制,实现VGA显示画面的终极方法。通过深入探讨PL和PS之间的交互,揭示了在Xilinx Vitis环境下实现这一目标的关键步骤和技术细节。
摘要由CSDN通过智能技术生成
上一篇文章, 《Vitis ZYNQ开发秘籍》- PS 端任意控制 VGA 显示画面的硬件架构 ,已经介绍了在 Vivado 中需要调用的 IP 已经各 IP 间的连线。 40bf780c2d1534ec338965dbfaf375c2.png 而在实现显示的功能,咱们还需要对 VDMA 这个 IP 进行配置,如果没有正确配置,VDMA 是工作不起来的。当然从图中,也可以看出 VDMA 的配置接口 AXI_LITE 是连接在 ZYNQ IP 的。所以咱们要在 Vitis 中编写 VDMA 的控制代码。 对于 VDMA 的控制代码,先看看文档(PG020)里面说的需要配置哪些寄存器。 b893e2ad751cdb1b67f15e260743c0e8.png 文档里面包含了 VDMA 的 写 和 读 两个通道,但咱们在本次过程中,只使用到了 读通道,所以只需要看介绍中关于 MM2S 的信息就行了。 咱们将上面文档中关于 MM2S 通道的控制信息单独列出来: 1、将控制信息写入通道 VDMACR 寄存器(MM2S的偏移量为0x00),如果需要的话设置启用中断,并设置 VDMACR.RS=1 开始AXI VDMA通道运行。 2、在通道 START_ADDRESS 寄存器 1到N 中写入一个有效的视频帧缓冲区开始地址,其中N等于帧缓冲区 ( 对于MM2S,偏移0x5C到0x98 ) 。如果需要,设置 REG_INDEX 寄存器。 3、写一个有效的帧延迟 (仅对Genlock Slave有效)并大步走到通道FRMDLY_STRIDE 寄存器 (MM2S偏移0x58)。 4、将有效的水平大小写入通道 HSIZE 寄存器(对于 MM2S 偏移量为 0x54 )。 5、将有效的垂直大小写入通道 VSIZE 寄存器(对于MM2S偏移量为0x50) 。这将启动传输视频数据的通道。 当然上面的这 5 个步骤,是启动 VDMA 传输的最起码的步骤,当然也可以有一些其他的完善步骤。对于这些寄存器更加详细的介绍,大家也可以参考 PG020 这个文档。 217eda998837cdabc756c2c8ecff46a8.png 咱们按照上面的步骤,代码如下: e50d89b0462707a15721d7dfc92fa116.png 简单说明代码的意思,将 VDMA 配置的帧缓存起始地址为 0x2000000,尺寸大小为 1280x720,与 720P 的像素尺寸保持一致。 代码编译,下载后,效果如下。 b69f64e47e7d3567ae24068433d540e3.png 是的,显示出来就这么奇葩,为什么会这样呢? 因为目前 DDR3 里面的数据,可以大部分都是一些随机数,大家可能会想咱们现在明明没有向 DDR3 写入数据,但不得不承认的一个事实,你没写数据并不代表它里面没数据,DDR3 在没有写入数据之前,就是这些随机数。 好了,咱们现在往 DDR3 写入一些测试数据,让它显示类似彩条一样的东西。 db16ed250e9e12bcc3d80f20df42cafb.png 运行后的显示结果如下: be3030f70e4d184208d78ced834a2a38.png 现在咱们可以成功的通过 ARM 那边直接控制 VGA 显示的内容了,大家也可以自己更改 C 语言代码进行其他的显示哦。 #下期预告# 咱们现在已经可以在 PS 端控制 VGA显示的内容了,咱们下一期继续在本章的工程上做一个稍微有意思一点的东西,把一副图片预先存在 SD 卡中,之后 ARM 读取 SD 卡中的图片至 DDR3,进而 VGA 显示 DDR3 中的图片。 简言之,VGA 显示 SD 卡中存储的图片! #《Vitis ZYNQ 开发秘籍》往期精彩# 【视频】《Vitis ZYNQ开发秘籍》第二章-开始使用矿板 【视频】《Vitis ZYNQ开发秘籍》第一章-硬件资源介绍 第九章:《Vitis ZYNQ开发秘籍》- PS 端任意控制 VGA 显示画面的硬件架构 第八章:《Vitis ZYNQ开发秘籍》- 在矿板上实现 VGA 画面显示 第七章:《Vitis ZYNQ开发秘籍》-矿板打印“Hello World!” 第六章:《Vitis ZYNQ开发秘籍》-开始使用 Vitis 第五章:《Vitis ZYNQ开发秘籍》- 用户IP打包及ZYNQ IP设置 第四章:《Vitis ZYNQ 开发秘籍》矿板 EABZ4205 的 PL 端晶振改造 第三章:《Vitis ZYNQ开发秘籍》PL端实现流水灯(上)-使用PL端晶振 第二章:《Vitis ZYNQ开发秘籍》-开始使用矿板 第一章:EBAZ4205 矿板+转接板 硬件平台介绍 前言:对于ZYNQ,我想重新写一套教程

1d7f82704bc36fe737aa6678dbc2eac6.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值