In one of my personal pursuits, I wanted to experiment with CMOS cameras.
I interfaced with a few different cameras and the project below is for the
camera that gave the best result. The camera was interfaced with a Spartan
3 FPGA and streamed its output to a VGA port. The camera resolution is
640 X 480 and runs at 60 frames per second. The camera is an Omni-Vision
OV7725.
The core of the project is controlled by the NMPSM3 soft processor that is
discussed in its own project section. An I2C controller was created to
configure the camera. Another control module was created to capture and
buffer video data from the camera. It sends an interrupt to the processor
when data is ready to be read. The video data is then stored in cellular
RAM located on the FPGA development board. The cellular RAM is operated in
burst mode and controlled by a dedicated control module developed for this
project. There is also a VGA module that sends an interrupt to the processor
when it is ready for data.
The CMOS camera was based on a Digilent Nexys 2 FPGA development board. One of the unique parts of the project is the use of the on-board cellular RAM in synchronous (burst) mode. I could find no sample projects on the internet that used the RAM in its burst mode. A large portion of the project was dedicated to making the cellular RAM burst mode controller.
CMOS Camera HDL SourceThe project was designed in Xilinx ISE. The project can be found here:
CMOS Camera FPGA ProjectAs with my other projects that use the NMPSM processor, assembly language had to be written to control the project.
CMOS Camera Software Source