The PCB facilitates configuration of the camera along with capturing data to an SD card.
This project is mostly an exercise in project-based learning. Instead of researching and reading about FPGAs, I want to create a project actually using them. Of course, this means that I’ll likely get things wrong, but that’s just part of the learning experience.
A huge shoutout to Group Gets, without their support this project would not have made it this far! They are a FLIR Boson Distributor, check out their range here: https://store.groupgets.com/collections/flir-boson-accessories
This project is a miniature FPGA based PCB to capture and save images from a camera stream. The FPGA used in the lattice ECP5, the board has 64Mbit of RAM and 8Mbit of FLASH. It runs a RISCV CPU internally to handle the processor centric tasks (UART, state machine, FatFS), but has dedicated hardware to handle the video stream and communicate to the SD card using 4bit SD protocol.
The modules inside the FPGA follow the following bus diagram. They all make use of a common wishbone buses.
All bus connections are created by this project: https://github.com/olofk/wb_intercon. wb_intercon automates the creation of muxes and arbiters required to connect various wishbone components including multiple masters.
After working on updating the verilog module used in my camera to support the HyperRAM using DDR modules and the PLL of the ECP5 FPGA I’m using.
The change increased the performance by 4x. This enables us to capture the datarate from the Boson 640 cores.
Here is a photo of the water tank ~80% full.
For reference here is the same tank using the Boson 320 core.
There are still many performance improvements I have on a list to work on.
But the major functionality of the device is working. We can capture Images at about 3 FPS. Here is the layout of the internal modules in the FPGA
Read more: FLIR BOSON CAMERA FRAME GRABBER USING FPGA