Re: Details on the W65C02S RDY / BE pins needed
Posted: Thu Aug 01, 2024 8:37 pm
Osric wrote:
In my case, I have created exactly the problem described - long curving wires for both the data bus and the address bus...I am expecting that when I test this setup at 1Mhz it will fail.
Maybe, maybe not. A joke we have around here is you can get away with murder at 1 MHz. That’s not entirely true, but applies to many cases.
The limit on how fast a given circuit will run, assuming the parts used have the necessary characteristics, is determined by timing constraints and signal quality seen at device inputs. More specifically, long, curving wires typical of breadboards can introduce enough reactance into a circuit to where the sharp signal transition expected by a device’s input is not there, meaning the rise and fall time seen at the far end of the wire is outside of the specs for the device receiving the signal. Adding insult to injury, wire inductance effectively adds propagation delay to the signal, which may sabotage timing.
So while breadboards are useful for prototyping circuits, they are not consistent in behavior as the clock rate is increased. The point at which instability or failure will manifest itself will be strongly influenced by wire dress. There are examples around here of breadboard circuits running at pretty high speeds. What they all have in common is a wire dress that minimizes outright length, as well as plenty of bypass capacitors.
Quote:
I haven't yet had the time to do it but it seems like a simple test where I fill the RAM with a pattern and then check for its existence then fill with a different pattern ad infinitum will likely show a problem if I run the computer at a high enough clock.
Such a test will draw out any instability issues, but won’t necessarily prove that an implementation is stable under all reasonable conditions. Most SRAM is much faster than ROM and I/O hardware. So what seems to work okay with RAM won’t necessarily work with ROM and I/O.
Quote:
Once I do that and it fails, I'm left with the task of understanding why it fails. It seems that the reason why it fails (?) may be that the sharp rising edges on the long wires of the address and/or data bus may induce currents in the neighbouring wires and cause issues. Assuming that I want to make the breadboard build I have work at these speeds, I'll have to come up with some solution.
Mutual induction between wires is not usually the issue here. Reaction in individual circuits is what results in slow edges.
Quote:
You've already told me that softening the edges isn't going to work but in fact will make the problem worse; I don't know why that is, but will have to learn.
It is the means by which you are planning to soften the edges that is the problem, not that the edges are softened. Attempting to slow edges by adding R-C delay will cause a non-linear rise and fall, which may confuse CMOS inputs.
Quote:
Meanwhile, the twisted pair alternative presumably also won't work but the idea is not to twist each signal wire with an adjacent one, but to pair each address and data line with a ground line going to the same destination.
In high-speed parallel buses, such as SCSI, cable pinouts are arranged so each signal lead is separated from its neighbor by a ground lead. Also, such buses are terminated at both ends to suppress signal reflections. Such an arrangement is usually unnecessary on a PCB because runs are short enough to avoid transmission line effects at the speeds we usually operate our gadgets. Now, if we were build boards using 1 GHz processors, it would be a very different story.
Quote:
If all the signals and grounds are connected chip-to-chip in adjacent runs, I had thought that this would solve the problem. This too apparently will not work - I would have said it "resembles a ground plane" - and again is something I'll need to understand _why_ it won't work.
Understanding why it won’t work means studying the applicable theory. There’s no getting around that.