I'm nowhere near as far on as J.B.Langston but this is an alternate attempt to get a TMS9918 running using TMS4464 dram.
I'm using a TMS9918 and not the TMS9918A. I've had this in my component box since buying it from Farnell in the early 80s together with a set of 4116 dram. The dram is long gone into another project, probably a zx spectrum upgrade. I did have a pair of TMS4464-15 in the component box, and as it seemed a bit crowded to fit the SRAM circuit into an RC2014 card I thought I'd try a dram version.
The advantage of using dram is that there is no need to latch the address data which reduces the chip count. The 4464 dram still has combined data in/out pins, so the TMS9918 needs a tristate buffer from the AD0-7 outputs to the dram data lines.
Note the TMS9918 generates a 7 bit row followed by a 7 bit column address, so can not be used with the 4416 type ram which requires an 8 bit row and a 6 bit column.
I've spent some time trying to get a simple VRAM test working. This writes a block of data to VRAM, 00, 01, 02 etc, and then reads it back to Z80 memory.
First the TMS4464-15s from my component box were getting very hot, not enough to blister, but not far off. I was able to get a set of TMS4464-10s from SAYAL, a local electronic supplier in Ontario. This seemed to solve the overheating problem so I think the old chips were already fried, or maybe I fried them using a slightly over voltage supply.
I swapped the USB power supply from one that measured 5.29v to one that measured 4.89v. Measured with an uncalibrated dvm so not sure how accurate this was.
With the dram and 74HCT245 removed, and 10K pullups on the RD0-RD7 inputs I was able to read FF, and by pulling each RD input to ground verified that the data inputs were working.
With the dram fitted but the 74HCT245 still removed I was still only able to read FF from every location, although using a logic probe on each data line from the dram was showing both high and low level pulses. I'd expected to read random data from ram.
I was suspecting timing, but everything in the TMS9918A data sheet seemed to be satisfied by the TMS4464-10. I tried finding a data sheet for the TMS9918 (without the A) but have not been able to find a datasheet. I was able to find a schematic for the TI99/4 which I think is the only computer to ever use the TMS9918 (without the A). It shows that a 68pF capacitor was added to the CAS to the 4116 dram, and also a series of 4 74LS04 gates in the WE line to DRAM. This suggests that the timing of the original TMS9918 did not match the 4116 dram correctly.
I added two 33pF caps in parallel to the CAS line as I didn't have any 68pF, but unfortunately this didn't work. This seems likely to be due to the shorter Tdis time of the TMS4464-10 compared to 4116. Adding two more 33pF caps for a total of 142pF seemed to correct the timing. i'm a bit concerned about the high capacitive load on the CAS output of the TMS9918 so I might try again with an RC circuit instead.
So far I've just been using an 11.0592MHz crystal to test the dram interface, I also tried 10MHz but it was 11.0592MHz that was used when the capacitors were added to the CAS line. It seems this is close enough for a black and white image on the tv.
Now that I'm sure the TMS9918 is working I'll try and get the correct crystal, verify the CAS capacitor is still required and then see if I can get a proper display interface software running.
If anyone has a datasheet for the TMS9918 (without the A) I'd very much like to get a copy. Also if anyone has the datasheet for the TMS9118 that includes sections 1, 2 and 3.