Fork me on GitHub

Project Notes

#024 ResistorTransistorLogic/AND

Test the basic resistor-transistor logic AND gate.


Resistor–transistor logic (RTL) is a class of digital circuits built using resistors as the input network and bipolar junction transistors (BJTs) as switching devices. RTL is the earliest class of transistorized digital logic circuit and is largely obsolete now.

It is interesting to see how various logic gate may be realised with BJTs and resistors alone. Here is the basic AND gate.

This is the “classic” two-transistor AND gate, often used when describing the fundamentals of digital logic. Given two ideal transistors (NPN) with collector-emitter in series, we treat them as switches: only when both are on should there be a high output.

0 0 0
0 1 0
1 0 0
1 1 1

However, that’s the idealised view. In practice things are a little messier. In particular:

  • A pull-down resistor (Rp) is required to get a clean “off”, else the input would be floating.
  • With the lower transistor on, we can see partial activation. This is because we are applying a voltage to the base while the collector is not driven, so the base is appearing on the emitter. We have to work around this problem be definining the threshold for “high” to be above this voltage.

See the TTLBufferDriver project for an example of how to clean up the output with a buffer driver.

Here’s a sample trace. The lower two traces are the signal inputs, and the upper trace is the output of the gate.

processing trace

The Arduino is not really a core part of the circuit. It only does the following:

  • provides +5V power supply (for convenience)
  • automates the toggling of the driving inputs
  • measures the input and output voltages for plotting


The circuit uses a digital output pins to sequence inputs to the AND gate. Three analog input pins are used to read the two input signals and the resuting output, with the values is echoed to the Arduino serial port for plotting with PlotNValues (a simple Processing sketch).


The Schematic

The Build

Credits and References

About LEAP#24 BJTRTLLogic Gates
Project Source on GitHub Project Gallery Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is my personal collection of electronics projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.