Dr Jefyll wrote:
Probably the '163 counter circuit could be adapted to drive RDY instead [...] I'm sure we can figure something out.
Okay, here's an early draft of a diagram I'll eventually add to my main post. Comments (and proof-reading!) welcome.
This spills the beans on a '163-based RDY sequencer. I've shown detailed timing for only two possible examples, but others exist (based on different counter load values).
As you see, /SELECT being inactive (ie high) means the counter will surely load 0xF. But the value loaded when /SELECT is
low varies between examples. If you wire the counter inputs so the counter loads 0xF or 0xE then the extended cycle will take 2 cycles total, and if you wire the counter to load0xF or 0x
B then the extended cycle will takes 5 cycles total.
Optionally, you can do more than simply lengthen the cycle (pull RDY low). You can connect one of the counter output bits as a timed enable that trims the width of the /RD pulses and /WR pulses sent to the slow IO device -- note the bottom trace in each of the timing diagrams. You're giving the device
extra address setup time before /RD or /WR go active; also
extra address hold time after they've gone inactive. In a high clock rate system, this is the sort of pampering many sluggish devices require.
Without this timed enable you'd probably be forced to use Phi2 to qualify the /RD and /WR pulses -- and using Phi2 means each access will yield not one continuous /RD or /WR pulse but instead a series of short pulses, shown in the timing diagrams as /RDWR(a). Some ROM's may tolerate this, but /RDWR(a) is clearly not an ideal choice
Chromatix's '299 suggestion also bears consideration -- and I agree the 74HC299 is a useful chip to keep in stock.
(BTW for this application the physically smaller 74_166 would work, too, although it'll require an inverter.) As described, the suggested circuit doesn't offer the timed enable I just mentioned, but that's easily remedied simply by adding a second '299 (or 166). One would output to RDY, the other to the enable signal.
Compared to a '163, the pair of shift registers give more flexibility in adjusting the setup and hold times to the minimum required. In some cases that should buy you a modest performance boost.
Doubling up the shift registers involves a space penalty, of course... unless you're willing to piggyback one '299/'166 atop the other. The upper chip would have its parallel inputs tied high/low in a different pattern, but AFAICT only one pin (the serial output) will need an awkward flying lead to connect to the motherboard.
-- Jeff
edit diagram: one minor tweak, one outright bug fix!
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html