On 7/14/2015 11:27 AM, Paul Koning wrote:
On Jul 14, 2015, at 11:46 AM, Jay Jaeger
<cube1 at charter.net> wrote:
...
Using the structural / gate level techniques, one does run into some
issues, most of which have (or will probably have) solutions:
1) R/S latches composed of gates in a combinatorial loop. The problems
this causes are several, including the latch getting folded into the
look up tables for gates which use the signal, and issues when one
brings such a signal out to an I/O pin to feed to a logic analyzer,
which can cause problems to appear and disappear. My experience is that
one can add a D flip flop after the RS latch. This typically works
because at 50 Mhz, it adds only 20 ns delay, which is comparable to gate
delays these old machines typically had.
I didn?t like what happened with flops built out of gates when doing my 6600 model. So I
replaced those by behavioral models. The main reason was that the crossed-gate model
would produce a mess with R and S both asserted, which that design would do at times,
while the behavioral model was written to do something specific for that case.
The approach I have used is a compromise between the two - it isolates
the problems building flip flops out of gates, while still preserving
the original design. That said, when I come across a flip flop on an
SMS card, I will probably build it its own behavioral model.
2) One-shots. I haven't had to address this one yet, but I am sure
that I will. I expect that one can simply use a counter to handle it -
no big deal at all.
If you?re creating a model to run in simulation, you can just write a delay. But that?s
not synthesizable, so if you really do need a delay then a counter, or a shift register,
or something like that will be needed. This is the sort of thing that makes a 6600 design
tricky (and may also apply to some other fast machines): there are places where
propagation delays are used for correctness, and if the replacement hardware is ?too fast?
it doesn?t work.
I am creating one to be sythesizable.
3) Flip flops which are clocked from combinatorial signals. These tend
to cause timing/glitch issues. For example, in one case the
combinatorial output was a zero-check on a counter. Since the counter
flip flops did not all change at exactly the same time, that signal
could glitch during the simulated machines master clock edge. They
respond well to the same general solution as #1 - stick a D flip flop
between the combinatorial output and the clock input. In the case I
mentioned, that gave the signal an entire 50 Mhz clock period to settle
down.
That sounds like a bug in the original. If you have a set of flops clocked by some
signal, and it matters that the outputs don?t all change at the same time, then the
original wasn?t reliable either.
That is just it - the combinatorial inputs were used FOR the clock on
some gates. Right - not a good idea even back in 1972, though it
depends a little on what the rejection time / intertial delay of the
inputs are, but yes - certainly a design that would be prone to failure
(remember that this was a bunch of students trying to put together a
working 12 bit computer in about a month - ours included a cross
assembler and cross-interpreter, so we had real software running our
machine for its demo - including hangman played with the TTY keyboard
and an oscilloscope hooked to a pair of D/A converters for a display).
paul