Close

Counters, counters, counters...

A project log for Discrete YASEP

a 16-bits YASEP computer (mostly) made of DIP/SOIC chips like in the 70s and 80s... with 2010's twists!

yann-guidon-ygdesYann Guidon / YGDES 12/01/2015 at 18:440 Comments

I know it's getting out of hand...

In the beginning I decided to implement the YASEP's registers as counters, which saves some cycle time. This significantly boosts the system's MIPS/MHz ratio so I got a bunch of 74HC193 counters.

And why not use them for other purposes in other places ?

This time the victim is the FIFO of P1A: the nibble-wide shift register is cool but what if you want to input consecutive data ? How often do we use consecutive addresses ?

A preloadable counter is required. Actually, it should be able to choose its input from the previous hex digit or one of the available bus values (coming from P1B ?) so you can quickly input a bus address, type data in, and move to the next address...

Why not implement a separate "address" register/counter ? That's interesting but I also want to increment/decrement a value that is already present in the FIFO.

But the 74HC193 is not very cooperative. It's actually good at counting but the preload and the timing are a mess. The '193 works as a "transparent latch", not a D-latch which makes preloading awkward, but shifting even more !

I wouldn't write this log without a clever solution. And this times it comes from the 74HC573. I favor the use of the 574 because it is a D-latch but this time, the 573 transparent latch comes to the rescue. In this case it's even a perfect fit because the /PL input (preload) of the '193 has an opposite active polarity to the 573.

This is pretty cool because together, they make a D-latch:

(see www.cs.ucr.edu/~ehwang/courses/cs120b/flipflops.pdf )

The "master" is the '193 which can be updated at will, the /PL input remains high and keeps the output stable, while the LE input (latch enable) stays high too, putting the '573 in transparent mode. The counting effects are immediately visible to the outside. There is no need of an inverter, unlike the above diagram :-)

The '573 also helps with multiplexing, thanks to the /OE function. The counters can be loaded with any data coming from another tristate bus.

Apparently I'll have to totally redesign the P1A board and unsolder the already existing prototype...

Discussions