Why complicate things?
Run Z80 at any speed up to 20mhz (Turbo 3x) and beyond but change the serial board to eg. MC68B50 or 16C550.
I think just generating some wait states for IORQ is enough, but not certain. Will have to look into the details.Have you looked at this?
Phillip Stevens wrote:
I think just generating some wait states for IORQ is enough, but not certain. Will have to look into the details.Have you looked at this?
Not everything scales neatly off \WAIT with frequency. Things like the write hold time do not and some of the devices do care about write hold times as I found out with the 65C02/65C816 boards.
The 68B50 can handle the speed and needs no software changes (neither does 16x50 for ROMWBW nowdays)
https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:microz
https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:micro80
Bill
Here is my RED HOT system; Z80 at 20Mhz, can probably overclock to 24mhz without issues, with a MC68B50 at 7,3Mhz onboard.
Karl
At 3 x clock speed using z80 peripheral chips might be a problem. To use mode 2 interrupts the peripheral would need to monitor instructions during M1 fetch, so you might need wait states in both M1 fetch and IORQ. Also IEI/IEO chain would have less time and might need a look ahead circuit.
There is some comforting text in one of the early Z80 manuals (1976) which says paraphrased, the Z80 generates its own timing relationships internally, and all the signals are asynchronous to the clock (edges). I think that means that while the clock is always represented in timing measurements, it doesn't matter if there is skew. I've not seen similar text in any of the Z80 peripheral documents, so it is hard to say whether they need to keep to the correct timing relationships with respect to the clock, or not. Thoughts?

Regarding overclocking.When running the Z80 at 20Mhz, it is within speck for the Z84C0020 CPU, and is not regarded as overclocking.However the MC68B50 is rated for 2Mhz, but runs happily at 7,3Mhz same as in RC2014 classic.
karlab wrote:Regarding overclocking.However the MC68B50 is rated for 2MHz, but runs happily at 7,3MHz same as in RC2014 classic.
The 68B50 is rated for a 2MHz 6800 bus cycle (E clock) not a Z80 one so it's not really that overclocked (if at all I've not done the math) at 7.3MHz with a Z80 as the Z80 bus cycle is stretched over multiple CPU clocks, whilst the 680x, 6502, 65C816 one is completed over a single cycle.
Looking through the data sheets for standard RC2014 Modules the only one that I've still got a concern about is the SIO/2 serial module, as I don't know how the IM2 address fetch will work with the clocks "odd"***, even if the IM2 IORQ address fetch is wait stated too. On first pass, every other Module should just work, provided there is an extra 7.3MHz wait state, and stay within their respective specifications.
Mark T wrote:At 3 x clock speed using z80 peripheral chips might be a problem. To use mode 2 interrupts the peripheral would need to monitor instructions during M1 fetch, so you might need wait states in both M1 fetch and IORQ. Also IEI/IEO chain would have less time and might need a look ahead circuit.

Why do Zilog propose the other option 9.0.4 for inserting wait states?
I don't see why the 9.0.3 solution is not sufficient (assuming /IORQ is substituted for /M1 and /MREQ in each option).Why do Zilog propose the other option 9.0.4 for inserting wait states?
Attached a couple of ideas aimed at using wait states on a z80 at higher clock frequencies, both still untested.
The first is using a 74F395, which clocks on the falling edge, and can be configured as a pseudo open collector output by using the none tri-state output to control the tri-state output. This is configured to hold /WAIT low for all clock cycles and releases wait for /IORQ or /MREQ cycles. I figured this might be fail safe as it could insert wait states when not required, instead of failing to generate wait state when it is required. 74LS395 would possibly work at lower clock frequencies.
Similar method might be possible with other flip flops, releasing wait when wait is not required, instead of activating wait when it is required. This is to try and compensate for the short setup time on /WAIT active to T2 fall
The second uses a 2 x clock through a 74ACT163, running as a divide by 2 on regular clock cycles but adds one more cycle when /M1 is active. Timing is quite critical in this case, I've used measurements off one z80 rather than the zilog spec. I think the timing might work at 20MHz to 25MHz, probably not at lower clock rates. Plan is to extend /M1 by half a z80 clock cycle, so M1 fetch matches timing of MREQ access. I've included my timing sketches at the top of the sheet.
I tried to find a D flip-flop that was clocked on the falling edge for the APU Module, but ended up using a JK flip-flop 74HCT107 as the only viable alternative. Using a couple of falling edge triggered JK flip flops (in a single device) might be another way to do this?
I tried to find a D flip-flop that was clocked on the falling edge for the APU Module, but ended up using a JK flip-flop 74HCT107 as the only viable alternative.
There does seem to be a lack of falling edge flip flops in the ttl range, but there is always the possibility of using an inverter on the clock to a 74x74, though there is then some uncertainty in the propagation delay of the inverter.
Don’t forget to consider the possibility of holding wait active and releasing it at appropriate times instead of trying to activate wait after decoding other control signals.
You don’t need to drive wait with an open collector. If the wait state generator is on the processor module you could either ignore wait from the bus or use an and gate between the wait state generator and the z80.
If I can reduce the logic real estate down to one GAL16V8, then there should be space on a standard size Module to add a 74x241 buffer for control signals, and a 74x245 transceiver for data signals, and have them controlled by some combination of /RD and /BUSACK. I think that has become the stretch goal.

I was wondering if the use of 74abt series might be a problem driving the RC2014 bus. They have faster transition time than 74act series and I have seen a few warnings about driving busses using 74act without adding 100 ohm series resistors in the drive circuit or proper bus terminations. 74ahct might be a safer option.
You could possibly use a 74x245 in place of the 74x541, just to avoid stocking two different types.

Mark T wrote:I was wondering if the use of 74abt series might be a problem driving the RC2014 bus. They have faster transition time than 74act series and I have seen a few warnings about driving busses using 74act without adding 100 ohm series resistors in the drive circuit or proper bus terminations. 74ahct might be a safer option.
Phillip Stevens wrote:Good point. I've used ABT before, but it was within a SBC so who knows if there was really an issue...AFAIK the pin outs are the same so any technology would be good to test.
Mark T wrote:I was wondering if the use of 74abt series might be a problem driving the RC2014 bus. They have faster transition time than 74act series and I have seen a few warnings about driving busses using 74act without adding 100 ohm series resistors in the drive circuit or proper bus terminations. 74ahct might be a safer option.
Just digging into this bus termination thing a little more, I found a paper from Leventhal (son of z80 Leventhal???) which draws some scary diagrams at 50MHz, for unterminated ABT devices, and points strongly at AHCT as being much better (at least at these frequencies on unterminated busses).But digging deeper I found a reference to internally terminated ABT devices, designated with a "2" in the number eg. 74ABT2xxx, which have 25 ohm internal series resistors.Supposedly these provide the performance characteristics of ABT, but without ringing artifacts present on unterminated busses.So interestingly there is only a 74ABT2245 device available in 20-DIP. The equivalent 74ABT2541 device doesn't come in through-hole version.I'll have to redesign the board to allow for 2x 245 devices.
Found this very clear analysis of the topic (attached), published by TI quite recently. I've only had 23 years to find it.So the TURBO CPU Module has been redesigned for 2x 74ABT2245 buffer devices across data, control and low address lines.And as all the signals relevant to the Compact Flash Module are now properly driven and terminated it will be interesting to see if it is more reliable.Gerber and Eagle files attached.Phillip
It’s probably worth noting that the problem with act and abt devices is the fast transition time between logic levels, and not the frequency, combined with the length of transmission lines that are the cause of the problem. I’m sure you already read this in your research but thought I’d mention this for the benefit of others following this discussion.
Mark T wrote:I was wondering if the use of 74abt series might be a problem driving the RC2014 bus. They have faster transition time than 74act series and I have seen a few warnings about driving busses using 74act without adding 100 ohm series resistors in the drive circuit or proper bus terminations. 74ahct might be a safer option.
Just digging into this bus termination thing a little more, I found a paper from Leventhal (son of z80 Leventhal???) which draws some scary diagrams at 50MHz, for un-terminated ABT devices, and points strongly at AHCT as being much better (at least at these frequencies on unterminated busses).
But digging deeper I found a reference to internally terminated ABT devices, designated with a "2" in the number eg. 74ABT2xxx, which have 25 ohm internal series resistors.
Supposedly these provide the performance characteristics of ABT, but without ringing artefacts present on un-terminated busses.
So the TURBO CPU Module has been redesigned for 2x 74ABT2245 buffer devices across data, control and low address lines.And as all the signals relevant to the Compact Flash Module are now properly driven and terminated it will be interesting to see if it is more reliable.Gerber and Eagle files attached.
Termination of RC2014 bus may also help with the CF interface problem.
What you are wrestling with ABT buffers is the same kind of problem with CF board. The modern CF devices are fast and swing from 5V to ground, it is like having ABT drivers. This is why CF board may or may not have problem at certain backplane position (reflection) and why its errors are data pattern dependent (ground bounce).

Watching the board production clock now.
Phillip
So, after a few thoughts and revisions, I've finished a board which will be the test bed.In the end, I decided to use the 74AHCT245 devices, because 74ABT2245 devices weren't available from my preferred supplier in quantity 10x.I'll build it first using a 7.3728MHz oscillator, to check that the bus buffering and management works properly. Releasing the bus and reading the bus at the right times.Then, experiment with options for 14.7456MHz and the different wait state options. I hope that having all the options as inputs to the GAL will enable most solutions for /WAIT.
Watching the board production clock now.

--
You received this message because you are subscribed to the Google Groups "RC2014-Z80" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rc2014-z80+...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rc2014-z80/cf2837e8-d9a9-4d25-b3b8-76f659f629d6o%40googlegroups.com.
I not quite sure why i find this so cool - i want one now.... Love your work.
Very interesting. I have been reading and trying to understand how WAIT state processes works. Will the wait states only happen when accessing IO? And memory access is at full speed?

