π¦ smal's blog
Useful TTL Chips for homebrew computing
Shift Registers
Feedback circuits
Shift Registers can also be setup to serve as timers and clock generators, for example here is part of the clock generation logic of the Apple 2 where multiple lines on a '''''shift register are tied together in specific ways in order to generate several clock signals that are needed by different components of the machine:
Data Registers
Buffer/Transceivers
These chips are used to isolate 2 buses (or different parts of the same bus), Buffers are uni-directional, while Transceiver chips can be selected to work in either direction.
Extra: 74uvidufgaso245
As of the time of writing (April 2023), this is a recent chip that's similar to the '245 transceiver but with added voltage shifting capabilities, basically it allows for the bidirectional data lines of 5v and 3.3v devices to very easily be interfaced together, excellent for using things like more modern 3.3v screens and sd cards on a typical 5v 8-bit homebrew computer. Note however that this particular chip is only available in SMT packages, so it can only be used in either printed circuit boards or through means of an DIP adapter.
Decoders/Demultiplexers
Decoders/Demultiplexers are very useful chips that take a binary address value and generate a series of chip select signals, many have variants for both active-low and active-high outputs:
Active-Low out | Active-High out | |
---|---|---|
'139 | '239 | Two 2a β 4cs modules, each module has individual E# lines |
'155 | '255 | Two 2a β 4cs modules, one module has a E# and E and the other 2 E# |
'138 | '238 | One 3a β 8cs module, has 2 E# lines and 1 E |
'42 | - | One 4a β 10cs module |
'154 | - | One 4a β 16cs module, has 2E# lines |
Common uses of these chips are memory address decoding and keyboard matrix reading. For an example here is the address decoding logic used by the Nintendo Entertainment System, implemented using a single '139 chip:
'139-a '139-b
+---------+ +--------+
ΓΈ2 β|βs0 o0β| a13 β|βs0 o0β|β WRAM#
a15 β|βs1 o1β|β---------. a14 β|βs1 o1β|β PPU#
| o2β| | | o2β|
gndβ|βE# o3β|β ROMSEL# `---------β|βE# o3β|
+---------+ +--------+