scotws wrote:
So let me see if I understand what this difference between HC and AC means. I'm thinking of using the little brother of the '138, the dual 2-to-4 '139. For the 74HC139, the data sheet gives me average of 11 ns, whereas the 'AC139 has 6.5 ns. That's (very roughly) half. So does this mean I could cascade two ACs (technically, two halves of one '139) with about the same speed as one HC?
Generally speaking, yes. Propagation times are essentially additive at the clock speeds we use. I have to question, though, why you'd consider such a scheme. It sounds as though you may be using a complicated solution to handle a simple problem.
Incidentally, bear in mind that "average" performance is for a device running at nominal voltage (e.g., 5 VDC) in a 25° C environment. Timing analysis should always account for the worst-case scenario that is likely in your application, such as lower than normal voltage (CMOS switching performance decreases with operating voltage), higher chip temperature due to close proximity to heat-generating sources, etc. Also, in a random sample of devices, you may get some that are near the maximums, even though being operated at nominal voltage at 25° C. Should you end up cascading two such devices you may end up with a DOA circuit if the clock rate is sufficiently high, even though the average prop time says it should work.
Quote:
The Internet says something about "noise" and "oscillation" with ACs...
What I think you are referring to is "ringing," which is a circuit phenomenon in which the voltage oscillates around the low or high level for a (very) brief period following a state transition. It has nothing to do with 74AC logic in particular.
Circuit ringing becomes a problem with faster silicon of any type, mainly because the output transition time from one state to the other is extremely short (sub-nanosecond in some cases). Due to unavoidable reactance present in all electrical circuits, the effect of a level transition at a connection's far end slightly lags the same transition at a chip's output. As the far end of the connection "catches up" with the chip's output the voltage overshoots and then undershoots before stabilizing, an effect that may persist for many nanoseconds in extreme cases. If the ringing is sufficient in magnitude, the input of the device connected to the circuit may be momentarily driven into an ambiguous area of its switching characteristic, causing undefined behavior at its output(s).
Corollary to ringing is ground bounce, which is a short-term oscillation at the ground pin of the affected device. As input levels are sampled with respect to ground, ground bounce can also cause a device's input to be momentarily driven into the ambiguous area of its switching characteristic. Ground bounce is often attributed to the presence of unwanted reactance and resistance as well, again unavoidable in a practical design.
Ringing cannot be totally prevented in fast circuits but can be dampened in various ways to avoid undesirable side-effects. The number one antidote to ringing (and ground bounce) is short and direct connections. The fact that breadboard layouts use long curving wires is the reason why such units typically can't run very fast—the large amount of reactance present virtually guarantees that severe ringing will occur.
Quote:
...but how important is that when you use the same chip? And isn't this what we put capacitors all over for?
The decoupling capacitors are there to keep switching transients from getting into the common power source and to help mitigate the effects of ground bounce, although the latter is strongly influenced by the "ampacity" of the ground connections to the individual devices. In addition the use of short and direct connections from device output to device input, ringing can be subdued with damping resistors or Schottky diode arrays at the input(s) of the affected device(s)—tactics that shouldn't be necessary with most homebrew designs.
If you are building your unit on a PCB, a four-layer design with inner power and ground layers can do a lot to minimize ground bounce, as well as the overall noise layout. Four-layer also facilitates a more compact layout, leading to shorter inter-device connections. On a wire-wrap unit, use heavier gauge wire for power and ground, and avoid a serial power and ground distribution layout.
Quote:
(Scenario for using both parts of a '139 -- low address space (0000 to 7FFF) is 32k or RAM. High space is divided into four 8k blocks by one half of the '139; three of them get 28c64 ROM 8k chips, the fourth is divided again by second half of '139 to drive four I/O chips, say, one ACIA and three VIAs or something. Just as a real-word example.)
The $0000-$7FFF range can be decoded with A15 alone, since A15 will always be low in that address range. In other words, hook
/CS of your RAM to A15. RAM will be selected as long as the address is less than $8000. A0-A14 would go to the corresponding inputs on the RAM.
I think you are needlessly constricting your available RAM. Allocating 8KB for I/O is, in my opinion, wasteful—worst-case scenario is any one I/O device needs a page. I allocated 4KB for I/O in my POC V1.1 unit, which is enough for 16 devices, and currently have eight I/O slots decoded (with a single 74AC138). I presently have five I/O slots occupied and don't anticipate using anymore in this design.
Also, what do you plan to do with 24KB of ROM? I was able to pack POC's entire BIOS (which includes SCSI drivers) and a full-featured M/L monitor into an 8KB ROM space, and there are some bytes left over. I could see using 16KB of ROM to load a language (e.g., Lee's EhBASIC), but 24KB?