BigEd wrote:
Interesting idea to write a design in microcoded style, for simplicity and maintainability, and then implement the microcode in logic. We usually have lots of logic capacity. Indeed, using distributed RAM should be efficient and hopefully also fast, although the speed of the result does remain to be seen.
You may be surprised to see how ROM is implemented in logic. It actually works out very well. A ROM is basically just a collection of 'if <address x> then <data y>'. Which is exactly what the original form of programmable logic (basically an OR of ANDs) does really well, and consequently needs very few cells for. The contemporary form (LUTs) : exactly the same thing (but even more flexible).
I'd highly recommend having a (regular) look at netlists. Under Quartus, these are at Tools -> Netlist Viewers. This gives you a very good idea of what is being baked by the compiler, given your verilog or VHDL ingredients. Very enlightening. As is : knowing the underlying structure of your cells.