【FPGA工程篇】图像采集及显示(一)
FPGA学习入门:流水灯;
FPGA项目入门:图像采集及显示。
----FPGA大叔·沃自己硕得
目录
前言
一、项目要求
二、方案设计
三、代码实现
前言
很多小伙伴在学习FPGA的时候,肯定都是先了解了verilog语法后,写了几个加法器;然后搞块学习开发板,跑跑流水灯、搞搞数码管显示对吧。流水灯的点亮,也可以说是点亮了我们FPGA殿堂的第一盏灯。
而同样的,图像采集及显示,在笔者看来可以说是FPGA项目入门的第一个项目也不为过。在该系统中,涉及到接口时序、缓存(FIFO、DDR3)、显示驱动(LCD)等,一个较为完整而又较为容易理解的系统。另外,上板调试还会涉及到约束文件的编写、硬件的连接、bit文件及mcs文件的生成、程序固化等,一个完整的入门项目。
其他图像处理类项目,基本可以在此基础上进行扩展。包括图像前处理(图像滤波、伽马矫正、图像增强etc)、图像后处理(锐化、边沿提取etc)等。
所以,笔者在此对其进行整理。温故而知新。
一、项目要求
对摄像头信号采集并传输到LCD屏上显示。
硬件平台:
摄像头型号 :MT9V034(灰度摄像头,8位并行接口,分辨率:752*480 ,帧率:15-60fps)
FPGA型号 :Xilinx A7
软件平台:
Vivado 2018.3
二、方案设计
首先,我们拿到项目要求,第一件事情就是分析其需求。而且,需求分解尽可能细致、详尽。那么,对于本项目要求来说,我们也可以大致对其需求分解:
- 摄像头信号采集
- 图像数据传输
- LCD屏显示
针对各个需求,我们再进一步深究其内涵。
摄像头信号采集,如何采集、根据什么采集?根据摄像头手册可知,摄像头将采集到的模拟信号转为数字信号,包括: 场同步信号、行同步信号、8位并行数据信号;这里,简单解释下,场同步信号代表一帧图像的有效范围;行同步信号确定有效像素数据。在场同步信号以及行同步信号都有效时,数据为有效像素数据。
所以,我们只需要在同步信号有效时,采集这8位并行数据即可。
图像数据传输,从采集到输出显示,如何保证不丢帧,不撕裂?一般来说,由于FPGA内部存储容量有限,会外挂DDR芯片作为存储扩展;所以,常用的做法是,先通过FIFO进行数据缓存,然后写入DDR,进行缓存一定帧数的图像(通常,项目也会要求xxM大小的缓存容量)。同时,FIFO还能起到跨时钟域数据同步的作用。最后,再从DDR读出图像数据,根据发送接口的不同,对发送模块设计相应的时序控制。
LCD屏显示,需要我们设计驱动模块,提供LCD显示所需的行/场同步信号以及RGB信号。RGB数据为565格式。即:R[4:0]G[5:0]B[4:0]
接下来,我们可以初步画出系统框图了:(后面使用电脑重新画图,便于查看)
根据系统设计,我们将项目分为以下三个子模块:
- 图像采集子模块(接收模块) image_capture.v
- DDR缓存子模块(缓存模块) ddr_top.v
- LCD驱动子模块(发送模块)lcd_drive.v
——>接收——缓存——发送——>
接下来,我们再仔细讨论这几个子模块。
三、代码实现
各模块的详细规划设计以及代码实现,我们下期见。
项目涉及到DDR3部分可以参考博文:
Xilinx FPGA平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了
【FPGA工程篇】图像采集及显示(一)相关推荐
- ZYNQ HDMI输出实验——FPGA Vitis篇
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. 前言 1.1 HDMI介绍 1.2 TMDS介绍 1.3 HDMI传输周期 2. Vivado工程的编写 3. Vit ...
- 自定义AXI IP核实验——FPGA Vitis篇
文章目录 1. 前言 2. Vivado工程的编写 2.1 创建自定义IP 2.2 添加自定义IP到工程 3. Vitis工程的编写 A. 工程源码下载 1. 前言 Xilinx官方为大家提供了很多I ...
- ZYNQ PS端MIO的使用——FPGA Vitis篇
文章目录 1. 前言 2. MIO介绍 3. Vivado工程编写 4. Vitis工程编写 5. 实验小结 A. 附录 B. 工程源码下载 1. 前言 本实验介绍如何使用ZYNQ芯片PS端的MIO. ...
- ZYNQ AXI GPIO中断实验——FPGA Vitis篇
文章目录 1. 前言 2. Vivado工程的编写 2.1 Block Design工程设计 2.2 创建XDC管脚约束 3. Vitis工程的编写 4. 实验小结 5. 工程源码下载 1. 前言 使 ...
- 使用Quartus建立第一个FPGA工程
到 www.altera.com.cn 免费申请到Quartus网络版并且安装,这个过程非常简单. 安装好Quartus后,我们开始建立第一个FPGA工程,我们开始建立第一个FPGA工程. 打开后界面 ...
- Java面试通关要点汇总集之工程篇参考答案
2019独角兽企业重金招聘Python工程师标准>>> 工程篇 需求分析 你如何对需求原型进行理解和拆分 http://www.woshipm.com/pmd/712972.html ...
- AD9361官方FPGA工程编译
作者:ShownSun 工作室:时沿科技 文章目录 AD9361官方FPGA工程编译 1 引言 2 工程建立 2.1 自我环境检查 2.2 克隆对应代码 2.3 安装编译工具 2.4 编译tcl工程 ...
- FPGA学习之HDMI接口显示
FPGA学习之HDMI接口显示 简介 程序代码 实验任务 实验原理 代码部分 方块移动实验 参考正点原子视频 简介 HDMI接口英文全称叫High Definition Multimedia Inte ...
- 基于DE2-115 FPGA开发板的VGA显示
文章目录 一.VGA简介 二.基于DE2-115 FPGA开发板的VGA显示 一.VGA简介 VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传 输的 ...
最新文章
- 分析部署无线局域网的关键要素
- Jedis的Spring配置
- 《Python Cookbook 3rd》笔记(5.13):读写压缩文件
- 架构设计 | 分布式业务系统中,全局ID生成策略
- 高通发布两款耳机芯片:支持主动降噪和语音助手功能
- python paramiko并发_python paramiko 多线程批量执行指令及批量上传文件和目录
- [Flink]Flink的window介绍
- 非常有价值的电商系统,包括前台商城和后台管理系统!直接拿来用
- HTML iframe标签用法案例详解
- STM32f401驱动【语音模块】
- 游戏HTML翻翻乐,大班益智游戏翻翻乐教案
- java声音变音代码实现_大话音频变声原理 附简单示例代码
- 输入一个数,判断它是否是素数,如果是素数输出yes,否则输出no
- 使用mysql.help_topic生成序列
- 6657生成调试工程pdkProjectCreate说明
- c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
- 使用Opencv2+Pyqt5实现人脸识别视频马赛克
- 核芯显卡和集成显卡、独立显卡的区别是什么
- 1251:丛林中的路
- cmd批量修改文件名 增加文字_文件名如何进行批量更改?