Continue to Site

Welcome to

Welcome to our site! is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Microblaze project with VGA framebuffer output

Not open for further replies.


Member level 1
Apr 16, 2006
Reaction score
Trophy points
Activity points
microblaze vga

Hello Forum Users!

I've built an Microblaze prozessor that runs uClinux. One thing however is still missing - I want to put some VGA framebuffer device to be able to run nanoX on it.

For this to work I need an VGA IP Core build as a framebuffer device. I have already found some cores that are going to build some character generator device with VGA output - but nowadays I want to see some graphics :)

Maybe someone knows of an running VGA IP Core?

However I think I will give it a try and improve my VHDL skills and build an VGA Framebuffer core myself.

Maybe someone willing to attend?

This is what I have on top of my head that must be done to get something working:

VGA timings must be implemented. (Should not be that difficult, even with some generics to get different resolutions)

I am going to use the 1MByte SRAM that is already on my spartan starter kit - This must be
- writeable thru the OPB bus (are there bandwith issues?, spartan does not have PLB)
- readable by the VGA core to send the pixels to the VGA
how would that look like in VHDL? Write access during a phase shifted clock? How has this done on VGA graphics cards in the past? I tink they only had some SDRAM on it and allow for resolutions far away from 640x480?

Any more ideas?
Best Regards,

microblaze projects

Are you referring to the Xilinx/Digilent Spartan-3 Starter kit?

I don't know much about OPB, but a frame buffer should be straightforward. The Spartan-3 Starter Kit's 50 MHz clock is just right for an 800x600 display. The board's RGB DACs are only one bit wide, so each pixel needs only three memory bits. To keep things simple, you could store two pixels in each memory byte, for a total of about 1/4 megabyte. The board's SRAM is 32 bits wide, so refreshing the display requires reading a 32-bit word (8 pixels) every 160ns into your pixel shift registers. That's pretty low bandwidth, so you could use the in-between time for MicroBlaze-to-RAM transfers.

Do you have some sort of disk drive attached to your board?

fpga frame buffer

No, there is no disk drive attached yet. Altough I will be installing some 2G falsh some time.

I will not be using the VGA connector internal to the starter kit as it is only 3 bit. I think of using 3 bit per color.

What will be the way to update the framebuffer normally?

I think of serveral ways to do it:

- read 1 (9bit) pixel from sram / write new pixel
this might work only with very fast IC as we need to setup address/read/write..

- move 1 complete line from sram to bram / copy new data to sram

- flip between 2 full memory pages writing the one page while reading the other
(only makes sense if we have 2 sram ics running)

any other ideas? Which is the default way to go?

Best Regards,

frame buffer vhdl

The Spartan-3 Starter Kit provides one megabyte of 10ns asynchronous SRAM. With a little care, you could probably achieve 50 MHz cycle time. Each 32-bit transfer would give you three 9-bit pixels, so for 800x600 display you could do one three-pixel transfer, two CPU accesses, one three-pixel transfer, two CPU accesses, etc. That seems like an easy way to go, although three pixels per word is somewhat awkward.

3 bit vga

Have you had any success finding a VGA controller? I have a microblaze project on a sprartan 3AN. I want to have a go writing some graphics routines. I have already written my own VGA controller that can read from BRAM and display. Seems to work allright but there is not enough BRAM to do anything with respectable colour and resolution. My 3AN starter kit has 64M of sdram which is currently used for program/data storage. I want to use an area of sdram for VGA buffers but can't for the life of me find a VGA controller that can share the sdram controller with the microblaze processer....

Any ideas??? Anybody...

microblaze vga controller

"although three pixels per word is somewhat awkward. "

Can you explain to me why this would be awkward please? thanks

Added after 56 minutes:

anyone can explain that please? thanks

Not open for further replies.

Part and Inventory Search

Welcome to