A Few Changes

A project log for STUPID Computer

A 12-bit TTL-based Microprogrammed Computer

steve-tonerSteve Toner 04/02/2018 at 18:200 Comments

Don't know if I'm going to have time to do a video for this, so will try it the old fashioned way...


These signals are not carried out to the bus, so required the use of grabbers to access.  With the pins, the leads can connect directly.  The pins are mounted upside down so they stick up from the top of the board.

The Moving Inversions Memory test does occasionally fail, but it's not a memory problem.  It always fails on the reverse test when it is decrementing the memory address.   Example failure: MemAddr = 8FF, expecting a pattern of E00 but seeing a pattern of C00.  Memory locations 0-7FF contain E00 while locations 800-FFF contain C00.  This appears to be a carry propagation time issue with the ALU.  Assume MemAddr was at 800 and was decremented, but we latched the output before the high 4 bits settled.  Then, instead of 7FF we have 8FF.  Have not been able to confirm this with the Logic Analyzer because it is so infrequent, but changing the decrement instruction (MAR <- --MAR) to 3 instructions (MAR <- ~MAR/MAR <- ++MAR/MAR <- ~MAR) eliminates the problem.  Looking at the '181 data sheet, a difference operation does take slightly longer than a sum operation (on the order of 1-2nsec), so it appears that it is running right on the edge.  Which is odd, because I calculated the worst-case delay for a microinstruction as something like 88 nsec, which is well within the 100nsec cycle time.  Either I calculated wrong somewhere or the chips I'm using didn't read the data sheet...

Anyway, a couple of solutions come to mind:

  1. slow down the clock.  Substituting an 8 MHz oscillator for the current 10 MHz one would add 25 nsec to the cycle time, which should be more than adequate.
  2. add a 74F182 carry lookahead generator and leave the clock alone.  This should gain, I dunno, maybe 10 nsec for ALU operations which would bring it back in line.

Since I have some '182 chips, I'm going to try solution #2.  The only problem is that the ALU board is full.  But there are some individual pads down by the bus lines (you can see in the lower left in the picture above) where it can be put - they're the pads that the power input connector is soldered to on the microcontroller board -  just won't have the niceness of 3 holes-per-pad...  I think once this chip is added, the hardware will be done.