a "first stab" at real-time image processing in hardware
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
I got pretty far into this project before the end of the year, but I had to restart somewhat. With the classic SPI ILI9341 display board, I was able to display an image on the screen at 15FPS. (The image was blue, but--heck, that was fixable with a few more hours of debugging.)
Sadly, driving an image over to the display at 15FPS was pushing the limits of the SPI interface. Pushing an image onto the display over an SPI interface at 15 FPS required an SPI transfer speed of 75 MHz. While I can synthesize a PLL on the FPGA to give me a clock capable of that speed, the SPI interface in the ILI9341 just can't handle that rate of transfer.
Luckily, the ILI9341 chip supports multiple interfaces: SPI, and 8080 Parallel variants. By transferring 8 bits at once, I can reduce the overall clock speed and still display images at 30 FPS. WIth an SPI driver already written and working, I abandoned that approach and wrote an 8080 parallel interface driver instead.
To access the parallel port, I needed a different breakout board. Luckily, Adafruit sells one. I had a couple of bugs along the way, but this time the worst ones were actually in my wiring (forgot to tie the RD line HIGH) and not in my SystemVerilog code. The waveforms look very pretty on the logic analyzer. In case you'd like to try it out, it's on the Gits under ILI9341_MCU_Parallel_Ctrl in the master branch.
Create an account to leave a comment. Already have an account? Log In.
How complicated do you think it would be to capture HDMI and pipe it into the display?How much FPGA RAM would one need to do that?
Become a member to follow this project and never miss any updates
Hi Joshua. I am getting into FPGA and am going to try to use one of the cheap ILI9341 SPI screens. I downloaded your files from GitHub just now after reading this page. I am going to try to figure it out. Thank you for the coding you have already done.
First I am going to try to display a single color on the screen. Then multiple colors in stripes. Then a background color with a rectangle on top of the background. After all that I hope to display a static picture. But, first a single color. :-)