Display ov7670 camera video on VGA monitors through Video DMA on ZedBoard.
As shown in the figure above, the project uses two seperated VDMAs to move video data from OV7670 and to VGA monitors as the basic structure, which will be introduced in the first version. Other versions will be improved on this one.
This project is tested by using a ZedBoard with a 18-pin OV7670. The pin assigments can be found within the xdc file. Vivado 2015.4 is used and tested successfully under Ubuntu 14.04.
This project contains recursive repos ip_repo
; therefore parameter --recursive
is used to clone all repositories. But not all of these IPs are used.
git clone --recursive https://github.com/dhytxz/ov7670_VDMA_VGA.git
Scripts in this project can help to create both vivado and xsdk projects as well as the BOOT.bin
file under the project/boot folder.
./build.sh <Project Name> <Version>
There are three workable versions: v1
, v2
and v3
. The differences are listed below:
Descriptions | |
---|---|
v1 | As the figure shown, the system has two separate VDMAs , namely s2mm, and mm2s. Both of them work on a single frame buffer in DDR |
v2 | This version has the same dataflow with the first version. But the dedicated camera controller ov7670_controller is removed; while the camera configurations are done within ARM through a I2C port. The configuration is different from v1, and the image is a little bit sharper than that of v1. |
v3 | This version has a different VDMA structure from the first two. Two separated VDMAs are combined to one with two channels that are gen-locked with each other. Both two channels go through the three frame buffers under the dynamic mode. The camera configuration is the same with version 2. |
This project is inspired by and improved from Mike's project, UToronto's project, todotani, and Lauri's blog.