完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/FPGA/zdyz_linhanz.html 4)对正点原子FPGA感兴趣的同学可以加群讨论:876744900 5)关注正点原子公众号,获取最新资料 第三十二章双目OV5640摄像头HDMI显示实验 在“双目OV5640摄像头LCD显示实验”中,我们将双目摄像头采集的两路图像显示在LCD上,并在LCD屏上叠加字符。本章我们将使用领航者ZYNQ开发板实现对双目OV5640摄像头的图像采集并通过HDMI显示器实时显示。 本章包括以下几个部分: 3232.1简介 32.2实验任务 32.3硬件设计 32.4软件设计 32.5下载验证 32.1简介 Xilinx官方提供了专门用于视频混合显示和简单文本叠加的视频处理模块,即OSD(On Screen Display)IP核。关于该IP核的详细介绍请大家参考“双目OV5640摄像头LCD显示实验”。 32.2实验任务 本章的实验任务是通过调用OSD IP核,在领航者Zynq开发板上实现双目OV5640摄像头HDMI显示器的实时显示,并在HDMI显示器上叠加字符。 32.3硬件设计 我们的领航者Zynq开发板上有一个扩展接口(位于ATK MODULE附近),该接口可以用来连接双目OV5640摄像头,注意在连接的时候,双目OV5640摄像头的镜头方向朝外。另外需要说明的是,扩展口的引脚和开发板上的部分外设是复用的,因此当扩展口上连接双目OV5640摄像头时,开发板上复用至扩展口上的外设将不能使用。 根据实验任务我们可以画出本次实验的系统框图,如下图所示: 图 32.3.1 系统框图 图 32.3.1与“双目OV5640摄像头LCD显示实验”中的系统框图基本相同,只是将驱动LCD显示的rgb2lcd模块替换成了本次实验中的DVI Transmitter,用于驱动HDMI接口;另外还删除了用于读取LCD ID信息的AXI GPIO模块。因此本次实验的硬件设计部分在“双目OV5640摄像头LCD显示实验”的基础上稍作修改即可。 最终图中的数据流走向为:OV5640图像采集是我们自定义的IP核,负责将OV5640的数据转成视频流数据;视频流数据经过Video in to AXI4-Stream IP核转换成AXI4-Stream IP格式数据流,然后通过VDMA的写通道转成AXI4 Memory Map格式,并最终写入DDR内存中。VDMA通过AXI InterConnect IP核与AXI_HP端口进行连接,从而高效访问DDR3。由于本次实验是对双目OV5640摄像头进行图像采集和显示,因此OV5640图像采集IP核、Video In to AXI4-Stream IP核和VDMA IP核需要添加两次。 两路VDMA输出的AXI4-Stream格式的图像数据连接至OSD IP核,经OSD IP核拼接和叠加字符后,连接至AXI4-Stream to Video Out IP核。AXI4-Stream to Video Out IP核在VTC IP核的控制下,把AXI4-Stream格式的数据转换成视频输出的数据格式,并将输出的视频数据流连接至DVI Transmitter IP核的输入端。DVI Transmitter IP核是本次实验自定义的IP核,用于驱动HDMI接口。 首先要删除“双目OV5640摄像头LCD显示实验”工程中的rgb to lcd和AXI GPIO两个模块,以及LCD相关的接口。如下图所示,我们要删除图中橙色高亮的两个模块和3个接口: 图 32.3.2 删除LCD相关模块 接下来添加DVI Transmitter IP核。该IP核位于工程目录下的ip_repo文件夹中,名为“DVI_TX”。我们需要将其添加到工程的IP库中,添加IP核的方法请大家参考“自定义IP核-呼吸灯实验”。添加完成后,我们要在Block Design中连接DVI Transmitter模块的接口信号,并引出外部端口,具体的连接方式如下图所示: 图 32.3.3 添加并连接DVI_Transmitter IP核 Block Design修改完成后保存,然后重新Generate Output Products。接下来我们还要修改约束文件,为HDMI接口分配引脚。打开工程中名为“system_wrapper.xdc”的约束文件,并将原先LCD相关的约束语句删除,替换成以下内容:
保存约束文件,然后选择“Generate Bitstream”重新生成BIT文件。 在生成Bitstream之后,在菜单栏中选择 File > Export > Export hardware导出硬件,并在弹出的对话框中,勾选“Include bitstream”。然后在菜单栏选择File > Launch SDK,启动SDK软件。 32.4软件设计 本次实验的软件工程与“双目OV5640摄像头LCD显示实验”略有不同,如下图所示: 图 32.4.1 软件工程 图 32.4.1左侧红色方框中的文件夹名为“display_ctrl_hdmi”,它在前面实验中“display_ctrl”的基础上删除了GPIO相关的函数及变量。在本次实验中删除了AXI GPIO模块,因此要删除这些函数和变量,否则会报错。 本次实验的代码如下所示:
可以看出,本次实验的程序与“双目OV5640摄像头LCD显示实验”非常相似。首先删除了读取LCD ID相关的内容,然后将摄像头的输出分辨率固定改成1024*600。有关这部分代码的详细介绍请大家参考“双目OV5640摄像头LCD显示实验”,此处不再赘述。 32.5下载验证 首先我们将下载器与领航者底板上的JTAG接口连接,下载器另外一端与电脑连接。然后使用Mini USB连接线将USB UART接口与电脑连接,用于串口通信。使用HDMI连接线将HDMI显示器连接到领航者底板上的HDMI接口。双目OV5640摄像头连接底板上的扩展口连接(扩展口位于ATK_MODULE旁边,连接时双目摄像头镜头方向朝外),如下图所示。最后连接开发板的电源,并打开电源开关。 图 32.5.1 双目摄像头镜头方向朝外 在SDK软件下方的SDK Terminal窗口中点击右上角的加号设置并连接串口。然后下载本次实验硬件设计过程中所生成的BIT文件,来对PL进行配置。最后下载软件程序,下载完成后,在下方的SDK Terminal中可以看到应用程序打印的信息,打印的信息如下图所示: 图 32.5.2 串口终端中打印的信息 从串口打印的信息可以看出硬件连接的状态和OSD配置的状态。此时HDMI显示器实时显示两路摄像头的视频图像,并且在每一路摄像头的上方叠加了字符串,分别为“OV5640 1”和“OV5640 2”,HDMI显示器显示画面如下图所示: 图 32.5.3 HDMI显示器显示画面 |
|
相关推荐
|
|
飞凌嵌入式ElfBoard ELF 1板卡-CAN编程示例之开发板测试
654 浏览 0 评论
该问题是用APP给芯海科技的CST92F25芯片发指令是出现的
2242 浏览 1 评论
771 浏览 0 评论
1530 浏览 1 评论
2276 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:16 , Processed in 0.387191 second(s), Total 35, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号