I am trying to build a 16 bit single board computer based around the 68000 and am wondering if there are any non proprietary 16 bit graphics chips like the Yamaha V9958 with readily available datasheets.
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It only takes a minute to sign up.Sign up to join this community
Well, one obvious choice would be to use the chip that the Yamaha devices you mention were extended clones of, the TMS9918. They're not manufactured any more but can be acquired with relative ease if you look in the right places, so are definitely a plausible choice. The TMS9918 was used in the first 16-bit personal computer, the TI-99/4, so you'd be in good company there. You'd lose a bit of resolution versus the MSX, but it's still a pretty reasonable system.
Another choice would be the Motorola 6845, which was somewhat less advanced but a lot more versatile -- it ended being used as the basis for the IBM PC graphics cards up to and including EGA (and is present in backwards-compatible form in the VGA too), so is capable enough for real work.
The NEC uPD7220 is another good candidate, or more particularly its 16-bit successor the uPD72120. Unlike the 6845 this implements a command-based system where you tell the chip what to draw and it updates the video memory for you. Like the 99x8 chips, it is designed to have its own memory that it manages access to (whereas the 6845 is agnostic about whether the memory it's connected to is its own or managed by the host CPU: it only generates addresses and expects external circuitry to perform the actual memory access) and provides a way of requesting changes to the memory from the CPU along with general drawing primitives (but unlike the 99x8 it provides a bus request/acknowledge protocol that allows direct access to it too, and is able to use a standard DMA protocol to perform block transfers to and from system memory).
Like the others above, it's an obsolete part no longer manufactured, but can be purchased on ebay and similar sites.
I had a look at Xilinx FPGA's. I made an VGA/SVGA/XGA table with various bits per pixel: 3,9,12.. Some results:
Then I tried to map that on an FPGA. The limiting factor is the internal memory. ~$25 gives you 1.6Mbits. ~$57 gives you 2.7Mbits
Next I looked at using external SRAM. Much cheaper! A 100 pin FPGA is about $8, an 16Mbit SRAM is ~$7 (LQFP package) That gives you theoretical XGA with 262K colours per pixel.
Then you can add a DAC or use a resistor network.
What I could not check is if the selected FPGA is big enough for XGA code. The code is very simple, just a series of counters but you have to add a CPU interface and may be a character ROM mode.
If I am very bored I might try to write one tomorrow.
Question is currently on hold but I give an update anyway.
Started with a 100 pin XC3S50. I to had reduce the video interface to 12 bits and the CPU data bus to 8 bits to remain within the pin count. (This is for XVGA) The design fits easily. I added a 256x54 bit RAM to work as character "ROM" (Use-able as 9x6 or 10x5). By that time, with the FIFO, I ran out of internal memory.
Then I tried a 144 pin XC6SL4. I chose a bigger device because experience has shown you always need a bit more then you expected. It costs $2 more. This time I had spare internal memory blocks and multipliers. Struggling with the pin count, I managed to go up to 18bit/pixel with 16 bit CPU data bus, or 15bits/pixel with 32 bit CPU data bus.
In both cases the memory bandwidth is not enough to read & write at the same time so in both designs there is a FIFO which catches the CPU writes and executes them in the blanking period. With 256 entries the 68000 CPU is not fast enough to fill the FIFO in a line time.
Both designs can work in graphics or character mode. All the video timing is programmable (Like the 6845 but bigger and faster) thus it can do many video modes up to 1024x768. I have not added colours to the graphics mode but that is just a matter of a bit more time. (e.g. 16 foreground and 16 background colours). As there were some spare gates the graphics mode can be joined or separated. (In separated mode the hardware adds blanking pixels around the characters so they stand out.)
I have no hardware which means none of this could be tested in real life.