Hello guys,
These days I started working on a graphic VGA controller. My initial specifications are:
Display resolution: 1024x768 (XGA+). My screen can go up to 1280x1024 (SVGA), but it requires about 100 MHz of pixel rate. However, I am getting a bit of flickering on the screen with my RGB hardware, so I decided to stay with a pixel rate of about 62 MHz.
4-bit color graphics: My FPGA board outputs RGB444 (12 bits). To decrease the size of the future necessary video RAM and also the FPGA LUT used, I decided to lower the 12 bits to only 4 bits. This limits the number of colors to 16, but to have more choices of colors, I decided to use palettes of colors. This means that I am using palettes of any 16 colors chosen from the 4096 (12 bits) possible colors.
Remark: I made this choice because in my application I do not really need to display realistic images (photos). For now, I just want to be able to display computer GUI-like pictures.
In my actual design, I am displaying:
A background color, which can be chosen from the entire RGB444 palette (4096 colors).
Above, on layer 0, a rectangle with the 16 colors of 4 different color palettes, with a palette change every ~3 seconds.
Above, on layer 1, I superimposed an image of one of our Jedi masters.
Above, on layer 2, I superimposed a higher resolution, dithered image of the same master. I also put on the same layer the same image but moving!
For that image of Obi-Juan, I used MATLAB to convert a colored PNG file into a monochrome-dithered image file, and then used a Python script to process it. The Python script (written by ChatGPT ;P ) removes all the line returns and adds a space between each bit, which gives a good binary format for IceStudio!
You can see a video and image of my actual results here. and i am joining the .ice file
@Obijuan : I hope you are fine my friend !, and sorry for using your picture without asking you the rigths! ;-))
As you can see on the video, i have a bit of flickering mostly visible on the high-res pictures. maybe a syncing problem or an electrical noise noise (62mhz on 2layers pcb) ?
Currently, the resource usage is 731 LUTs on ECP5. We also need 5 x 16kbit BRAM blocks (2 for the first image, 3 for the second higher-resolution and bigger images). So it should barely fit on the Alhambra 2. If you have problems loading it on this board, just disconnect one of the 2 picture layers.
Next, I will try to work on:
Generating the contents of a layer with the help of a processor core (and its assembler program). Big Task !!!
Maybe using a simple software compression algorithm (like RLE) to compress (in the computer) a simple monochrome images. like :

This decrease in size will make it easier to fit more stuff in our BRAM. Then I will use a decompression fpga circuit to get back a usable image (on my layers system).
Then I will see if using the SRAM (of my Colorlight ECP5 board) can help (video ram buffer) !
So still a long way to go... ;-)
Remark: To run it on an ICE40 board you will need to:
- Make your own ICE40 PLL (SB_PLL40_CORE). because In this design, I am using an ECP5 PLL
primitive to generate the 62 MHz.
- Of course, you will also need a RGB444 VGA output hardware.
Big hug guys!
--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/fpga-wars-explorando-el-lado-libre/090e8de2-e11e-4362-9713-d85310176772n%40googlegroups.com.
@Obijuan : I hope you are fine my friend !, and sorry for using your picture without asking you the rigths! ;-))
--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.



--
Has recibido este mensaje porque estás suscrito al grupo "FPGAwars: explorando el lado libre" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a fpga-wars-explorando-el...@googlegroups.com.