Skip to content

基于Tang Primer 20K 开发板,将OV5640摄像头数据读入并计算光流,通过串口或者HDMI输出

License

Notifications You must be signed in to change notification settings

XMebius/fpga_gowin_flow_estimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

content

1. 项目介绍

本项目使用国产高云GW2A-LV18PG484C8/I7型号的Tang Primer 20K fpga实现光流计算。通过使用OV5640摄像头读取视频流,在fpga内部做缩放、光流计算、HDMI显示等操作。

2. 技术路线

视频源设置有两种,一种是使用OV5640摄像头,另一种是使用代码内部生成的动态彩条模拟摄像头视频。分别对应手上有摄像头和没有摄像头两种情况。

视频源的选择通过代码顶层的`define宏定义进行选择,上电默认选择OV5640摄像头作为输入源;FPGA首先使用纯verilog实现的i2c控制器配置ov5640摄像头,将其分辨率配置为640x480@60Hz,同时生成用纯verilog实现动态彩条,其分辨率为640x480@60Hz;FPGA采集到输入视频后,首先将图像送入缓冲FIFO中做跨时钟域处理,即用输出1280x720@60Hz的屏幕背景分辨率作为读FIFO的时钟,这样可以确保在各种分辨率的图像缩放操作中,送入图像缩放模块的时钟时钟足够大;随后将视频送入纯verilog实现的图像缩放模块做图像缩放操作;缩放后的视频,其原有的时序已经被完全打乱,此时调用高云官方的Video Frame Buffer IP核将视频送到外接DDR3中做三帧缓存;调用高云官方的DDR3 Memory Interface IP核实现图像数据到DDR3颗粒的搬运工作;

然后读出视频送VGA输出时序同步像素数据,VGA输出分辨率为1280x720@60Hz;缩放后的视频相当于叠加显示在1280x720的背景之上;最后调用高云官方的DVI TX IP核实现RGB视频到HDMI视频的转换,输出显示器显示;

3. 环境搭建

所使用的工具链为Gowin_1-9.9教育版

4. 运行代码

打开gprj文件,分别执行synthesis和place&route,最后生成bit文件使用programmer下载到板子上即可。

5. 实现效果

连接显示器和摄像头后,上电即可看到显示器上有缩放后的视频流。注意在接摄像头时需要对照src/top.cst文件中对应的引脚来接

About

基于Tang Primer 20K 开发板,将OV5640摄像头数据读入并计算光流,通过串口或者HDMI输出

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published