ArticlesProjectsWeeklyCredentialsAbout

TMC #0010: Transistor: BJT Ebers-Moll Simulator

A pure-Python simulation of a 1947-era germanium BJT transistor: Ebers-Moll large-signal model, switch and amplifier analysis, and a physical comparison with the vacuum tube it replaced.

transistorbjtebers-mollsemiconductorsbell-labspythonsimulation

The transistor Bardeen and Brattain demonstrated at Bell Labs on 16 December 1947 was a germanium point-contact device with a current gain of ~18. This simulator models a slightly later germanium BJT using the Ebers-Moll equations: the large-signal DC model that has described bipolar transistor behaviour since Ebers and Moll's 1954 IRE paper: and demonstrates the three ways transistors changed computing.

What It Includes

NPN_BJT (Ebers-Moll): Full large-signal DC model: collector current, base current, emitter current, and operating region classification (cut-off / active / saturation). Parameters calibrated to a 1950s germanium device (I_S ≈ 1 µA, β_F = 50).

Switch demo: Cut-off vs saturation states, ON/OFF current ratio, and the logic-level interpretation. Shows why V_BE = 0 → logic LOW and V_BE = 0.25 V → logic HIGH for this device.

Amplifier demo: Common-emitter configuration. Sweeps VBE to find the usable Q-point range, then performs detailed small-signal analysis: transconductance g_m, input resistance rπ, and voltage gain A_v = −g_m × R_C.

Vacuum tube comparison: Specification table: 6SN7 triode vs 1947 germanium transistor across heater power, volume, mass, MTBF, warm-up time, and gain. Computes what ENIAC's 17,468 tubes would look like replaced with equivalent transistors (~1,000× volume reduction).

Running It

python transistor_sim.py                      # all demos
python transistor_sim.py --demo switch        # digital switch only
python transistor_sim.py --demo amplifier --trace  # amplifier with working
python transistor_sim.py --demo compare       # vacuum tube vs transistor

No external dependencies: pure Python 3.10+.

Source code
# BJT Transistor Simulator — Ebers-Moll Model

Code companion to [TMC #0010 — The Transistor](https://rishisharma.in/articles/tmc-0010-transistor-bell-labs).

Implements the Ebers-Moll large-signal DC model of a 1947-era germanium BJT, demonstrating switch behaviour, common-emitter amplification, and a physical comparison with the vacuum tube it replaced.

## Usage

```bash
python transistor_sim.py                        # run all demos
python transistor_sim.py --demo switch          # digital switch
python transistor_sim.py --demo amplifier       # CE amplifier
python transistor_sim.py --demo amplifier --trace  # with full working
python transistor_sim.py --demo compare         # vacuum tube vs transistor
```

Requires Python 3.10+. No external dependencies.

## Contents

| File                | Description                                                 |
| ------------------- | ----------------------------------------------------------- |
| `transistor_sim.py` | Ebers-Moll model, switch, amplifier, vacuum tube comparison |

## Key References

- Bardeen & Brattain (1948). _Physical Review_, 74(2), 230–231.
- Ebers & Moll (1954). _Proceedings of the IRE_, 42(12), 1761–1772.
- Riordan & Hoddeson (1997). _Crystal Fire_. Norton.