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.

How to implement a big rom ?

Not open for further replies.


Full Member level 2
Apr 4, 2012
Reaction score
Trophy points
Activity points
I want to display an 800x600 picture using a vga controller.I have used a rather "barbaric" method to implement the ROM:using a matlab script I generated 480000 times:
 assign mem [address] = pixel_value

Unsurprisingly synthesizing is taking forever to finish.
So does someone have an idea of how to implement this memory more efficiently?

There are two problems involved with your question:
- suitable methods to enter ROM data to HDL designs
- how to enforce inference of FPGA internal memory for the ROM (provided the FPGA has built-in sufficient memory capacity, which should be checked as a first step.

For the first point, Verilog has the option to read binary and hex files with systems function $readmemb() and $readmemh().

For the second point, the way how the memory is accessed in your code matters. Internally memory is usually synchronoius, it must be read under a clock edge sensitive condition, and you can only read one location for a clock cycle (or possibly two with dual-port memory).
Is $readmemb() and $readmemh() synthesizable?

800x600x8 is 38400000 bits, or 105 36kbit BRAMs. Make sure the FPGA has enough resources. Once you run out of BRAMs, the tools will try distributed rams and registers. At that point it will typically run for a long time and then tell you it failed to implement the design due to overmapping. (or it will work, but use most of the FPGA)

you likely want to start with smaller images, or store the frame in external memories.
thank you for your replies.I will try to implement a smaller picture to see if this works

Not open for further replies.

Part and Inventory Search

Welcome to