OV7670 camera + VGA AXI IPs



Yes everything works best on the second try (apparently...). I did not think it would work this quickly but there are plenty of online resources for the old-school OV7670 VGA camera modules. Mostly for Arduino but also some for FPGA. Even for the Basys3 board that I like to use for most of my small projects.
I tried to get the OV7670 working in the past but I was faced with bad camera output. This was definitly mainly due to some bad clocking issues.
You can see the first camera image I got out of the end-to-end system as the cover image of this post. With tweaking some of the camera settings we can potentially get even better images with less noise. But for now this is more than good enough for my needs
Anyways based on this old implementation I started today again and got a working implementation in one evening.
For the future
This is great news. Last year I wanted to use the camera as the input for the Briski barrel core. Maybe I will do this now that it works well. All that would be needed would be a frame buffer that all of the threads of the RISC-V core can access. So far I only ported the BRISKI core to BASYS3 thanks to some helpful remarks of the creator of the RISC-V core Riadh from University of Heidelberg.
You can find the code here: Link to code