Lattice iCE40 Ultra Plus FPGA: Gnarly Grey UPDuino – Tutorial 1: The Basics

Long time no post! Now that’s out of the way… As ever, I’m always on the search for cheap electronics and this board is nearly mind blowing given both the price and form factor you can get it in. Enter the Gnarly Grey UPDuino v2.0 based on a Lattice iCE40UP5K FPGA featuring: 120Kbits of BRAM […]

FPGA based OV7670 – Further image compression

In my last post, I was talking about image compression methods, mainly DCT transform based along with colour transform based. I’ve now combined these together and have managed to break the 6fps barrier for video over UART! I’ve implemented 2:1:1, 4:1:1 and 8:1:1 subsampling (I think I can call it that?) with reasonable performance! The […]

FPGA based OV7670 – Image segmentation

As I mentioned in my last post, I wanted to try some image segmentation! I had a quick go at histogram based segmentation where the largest peak of the histogram was used to find the most occuring pixel (after the colour range was bit crushed) but this didn’t have particularly useful results. This could be […]

FPGA based OV7670 – Edge Detection

One of the staples of image processing is edge detection. Edge detection is generally one of the primary steps for further image processing methods including feature detection. Conceptually, edge detection is relatively simply. Look at the image and compare areas of low intensity to areas of high intensity, simple right? Actually yeh, it is that […]

FPGA + OV7670 = Super slow UART webcam

What do you get when you combine an FPGA with some SDRAM and an OV7670 camera, transferring uncompressed frames through UART? Really poor performance, reliability and a pretty useless end product… Though just because it sucks that doesn’t mean it isn’t worth doing! I’ve had my first exam and I’ve wanted to crack on with […]

FPGA based Mandlebrot set generator

Mandlebrot Set Generator As I said in my last post, I implemented a Mandlebrot set generator in my STM32. Even though it was running at 64MHz, generating the set took a fair bit of time, slow enough to not even maximise the fully available SDRAM capacity at the time. At this point, I decided to […]