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

二、方案设计

首先,我们拿到项目要求,第一件事情就是分析其需求。而且,需求分解尽可能细致、详尽。那么,对于本项目要求来说,我们也可以大致对其需求分解:

  1. 摄像头信号采集
  2. 图像数据传输
  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]

接下来,我们可以初步画出系统框图了:(后面使用电脑重新画图,便于查看)

根据系统设计,我们将项目分为以下三个子模块:

  1. 图像采集子模块(接收模块) image_capture.v
  2. DDR缓存子模块(缓存模块) ddr_top.v
  3. LCD驱动子模块(发送模块)lcd_drive.v

——>接收——缓存——发送——>

接下来,我们再仔细讨论这几个子模块。

三、代码实现

各模块的详细规划设计以及代码实现,我们下期见。

项目涉及到DDR3部分可以参考博文:

Xilinx FPGA平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了

【FPGA工程篇】图像采集及显示(一)相关推荐

  1. ZYNQ HDMI输出实验——FPGA Vitis篇

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. 前言 1.1 HDMI介绍 1.2 TMDS介绍 1.3 HDMI传输周期 2. Vivado工程的编写 3. Vit ...

  2. 自定义AXI IP核实验——FPGA Vitis篇

    文章目录 1. 前言 2. Vivado工程的编写 2.1 创建自定义IP 2.2 添加自定义IP到工程 3. Vitis工程的编写 A. 工程源码下载 1. 前言 Xilinx官方为大家提供了很多I ...

  3. ZYNQ PS端MIO的使用——FPGA Vitis篇

    文章目录 1. 前言 2. MIO介绍 3. Vivado工程编写 4. Vitis工程编写 5. 实验小结 A. 附录 B. 工程源码下载 1. 前言 本实验介绍如何使用ZYNQ芯片PS端的MIO. ...

  4. ZYNQ AXI GPIO中断实验——FPGA Vitis篇

    文章目录 1. 前言 2. Vivado工程的编写 2.1 Block Design工程设计 2.2 创建XDC管脚约束 3. Vitis工程的编写 4. 实验小结 5. 工程源码下载 1. 前言 使 ...

  5. 使用Quartus建立第一个FPGA工程

    到 www.altera.com.cn 免费申请到Quartus网络版并且安装,这个过程非常简单. 安装好Quartus后,我们开始建立第一个FPGA工程,我们开始建立第一个FPGA工程. 打开后界面 ...

  6. Java面试通关要点汇总集之工程篇参考答案

    2019独角兽企业重金招聘Python工程师标准>>> 工程篇 需求分析 你如何对需求原型进行理解和拆分 http://www.woshipm.com/pmd/712972.html ...

  7. AD9361官方FPGA工程编译

    作者:ShownSun 工作室:时沿科技 文章目录 AD9361官方FPGA工程编译 1 引言 2 工程建立 2.1 自我环境检查 2.2 克隆对应代码 2.3 安装编译工具 2.4 编译tcl工程 ...

  8. FPGA学习之HDMI接口显示

    FPGA学习之HDMI接口显示 简介 程序代码 实验任务 实验原理 代码部分 方块移动实验 参考正点原子视频 简介 HDMI接口英文全称叫High Definition Multimedia Inte ...

  9. 基于DE2-115 FPGA开发板的VGA显示

    文章目录 一.VGA简介 二.基于DE2-115 FPGA开发板的VGA显示 一.VGA简介 VGA的全称是Video Graphics Array,即视频图形阵列,是一个使用模拟信号进行视频传 输的 ...

最新文章

  1. 分析部署无线局域网的关键要素
  2. Jedis的Spring配置
  3. 《Python Cookbook 3rd》笔记(5.13):读写压缩文件
  4. 架构设计 | 分布式业务系统中,全局ID生成策略
  5. 高通发布两款耳机芯片:支持主动降噪和语音助手功能
  6. python paramiko并发_python paramiko 多线程批量执行指令及批量上传文件和目录
  7. [Flink]Flink的window介绍
  8. 非常有价值的电商系统,包括前台商城和后台管理系统!直接拿来用
  9. HTML iframe标签用法案例详解
  10. STM32f401驱动【语音模块】
  11. 游戏HTML翻翻乐,大班益智游戏翻翻乐教案
  12. java声音变音代码实现_大话音频变声原理 附简单示例代码
  13. 输入一个数,判断它是否是素数,如果是素数输出yes,否则输出no
  14. 使用mysql.help_topic生成序列
  15. 6657生成调试工程pdkProjectCreate说明
  16. c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
  17. 使用Opencv2+Pyqt5实现人脸识别视频马赛克
  18. 核芯显卡和集成显卡、独立显卡的区别是什么
  19. 1251:丛林中的路
  20. cmd批量修改文件名 增加文字_文件名如何进行批量更改?

热门文章

  1. C++音乐播放器:MCI库的使用
  2. 【深度干货】数据中心机柜综合布线
  3. 人生第一笔试加面试 SAP胜略
  4. 让DedeCMS的栏目页标题显示页码数
  5. python用户输入字符串串从小到大排序_python字符串从小到大排序
  6. 攒口水,吊仙气,且行且珍惜!
  7. 红图app的模式有未来吗?
  8. 秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官
  9. 高德地图html js开发例子,vue.js高德地图实现热点图代码实例
  10. web网页设计—— 中国餐饮协会(HTML+CSS)