Originaly posted about my single board CP/M which is a romless design using an FT245 to bootstrap the battery backed RAM without the need for any programmed parts.
I had found that I couldn't get this to run with clock speeds above 12MHz and suspecting this was due to propagation delays in the 74LS156 or slow RAM access time I made some wire mods to try and extend the access time. Attached a copy of the current schematic here.
I was going to try adding a wait state generator as I wanted to test my shift register SPI SD card module at 20MHz.
I was able to check that the Z80 seemed to be actioning instructions received via the FT245 during the first stage bootstrap, although I hadn't confirmed this was writing data to RAM correctly.
Before trying to wire up a prototype wait state generator I loaded the battery backed ram while running at 12MHz, then switched off bootstrap mode, swapped the crystal to 20MHz, and was surprised to see it boot up and run.
The shift register SPI SD card module also seems to be running, tested by using PIP to copy a 1028K file from one sd card to the other. At 12MHz this takes 50 seconds, at 20MHz this is only reduced to 40 seconds as there are overheads in the sd card that are not directly dependent on clock speed. Its not exactly reliable, I have seen an occasional couple of panic messages, but this was using only 74LS163 and I had expected to need to use the 74ALS163 to reach 20MHz.
I'm now suspecting that the issue preventing bootstrap at 20MHz is the time taken to assert WAIT, when the second stage bootloader is reading input data from the FT245.
I've tried swapping the 74HCT138 IO address decoder to a 74ALS138, and also the 74HCT74 to a 74ALS74. I was hoping to see a slight increase in frequency for bootstrap but this is still not working at 14.195MHz.
It looks like its possible to get 74ALS156 so thats one more thing to try. Also building up another module without the wire mods to see what frequency I can run without the modified address decoding.
Mark