[Oberon] FPGA - Colour Support

Jörg joerg.straube at iaeth.ch
Sat Oct 7 14:03:09 CEST 2017

As in Magnus design the 3 bit color needs the same amount of memory as the 4 bit color, I would go for 4 bit color with a color map.

B/W screen takes about reasonable 9% of the 1MB memory., so still leaving ~90% for code and data.
4 bit color however will take 37.5% of 1MB memory leaving only ~60% of memory for code & data.

B/W screen needs a video bandwidth of 1.72 MHz (W x H x screen refresh / pixPerWord) CPU is slowed down to ~23.3 MHz
4 bit color would need 6.88 MHz hence slowing down the CPU to ~18.1 MHz.

These figures lead to the following recommendation for 4 bit colors:
- at least 2 MB of memory. Subtracting the larger framebuffer still leaves more for code & data than today. Adding more SRAM is a matter of cost.
- CPU speed = at least 30 MHz. Subtracting the higher video bandwidth will result in roughly the same netto CPU speed as today.
The RISC-5 can do the memory access, the instruction decoding and register calculations in 40 ns, as it runs today at 25 MHz. If we overclock it 30 MHz it has to do the same things in 33 ns. Perhaps Magnus knows if the FPGA implementation of RISC-5 can handle this speed.


> Am 07.10.2017 um 09:11 schrieb Tomas Kral <thomas.kral at email.cz>:
> Hi,
> I have coded an initial version of B&W bitmaps for `Pepino' (some
> further improvements pending to push to git), now working on pictures. I
> wish to also make some progress with colour support. I have got these
> two mods for `vid.d' kindly provided by Magnus.
> // 3-bit colour
> wire vid_R, vid_G, vid_B;
> assign RGB = {vid_B, vid_B, vid_G, vid_G, vid_G, vid_R, vid_R, vid_R};
> // 4-bit with colour map
> input [23:0] col0, col1, col2, col3,
> input [23:0] col4, col5, col6, col7,
> input [23:0] col8, col9, col10, col11,
> input [23:0] col12, col13, col14, col15,
> assign RGB = {color[23:21], color[15:13], color[7:6]};
> The above would require `Display.Mod' be completely rewritten.
> I was therefore thinking of an implementation as described in the PO2013
> chapter on Display, where there are three distinct bit planes, one
> for B&W, and the other two for colour. 
> `Display.Mod' will work as is, and adding colour means to write to other
> colour planes.
> What do you think? How difficult is it to implement?
> Can it be made as memory efficient as 4-bit colour maps above?
> Many thanks so far.
> -- 
> Tomas Kral <thomas.kral at email.cz>
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon

More information about the Oberon mailing list