Signal Generators

A signal generator produces a controlled electrical signal — a sine wave, square wave, triangle wave, or arbitrary waveform — at a specified frequency and amplitude. They're essential for electronics testing and development: you need a known, clean signal to characterise a filter, test an amplifier's frequency response, or check that your ADC is sampling correctly.

Function Generators

The classic bench instrument. Produces sine, square, and triangle waves across a wide frequency range, typically a few Hz to at least 10MHz. Controls for frequency, amplitude, DC offset, and duty cycle. The output impedance is usually 50Ω.

Most modern function generators are DDS-based (Direct Digital Synthesis) — a DAC and lookup table generate the waveform digitally, then it's filtered and amplified. This gives very accurate frequency and good frequency resolution. Older designs used LC oscillators with frequency multipliers, or RC oscillators for audio range.

Arbitrary Waveform Generators (AWGs)

A DDS function generator where you define the lookup table — so you can generate any waveform, not just the standard shapes. Useful for generating modulated signals, realistic noise sources, pulse sequences with specific timing, or any custom waveform you need for testing.

RF Signal Generators

Cover higher frequencies (kHz to GHz) for RF and microwave work. Much better frequency accuracy (often synthesised from a crystal reference), low phase noise, and the ability to add modulation (AM, FM, PSK). Used for testing radio receivers, antenna systems, and RF filters. A spectrum analyser is the companion instrument — the signal generator drives the device under test, and the analyser shows what comes out.

The Cheap DDS Option: AD9833 and Si5351

For makers and hobbyists, a cheap DDS module built around the AD9833 or Si5351 gives surprisingly good results:

  • AD9833 — SPI-controlled DDS IC, generates sine/triangle/square up to 12.5MHz. About $2 as a module. Good enough for audio testing and low-frequency work.
  • Si5351 — three independent clock outputs, 8kHz to 160MHz. Designed as a clock generator but works well as a cheap RF signal source. I2C control. Popular in SDR projects and as a VFO for homebrew radio.
AD9833 SPI control (28-bit register):
Frequency register = f_out × 2^28 / f_MCLK

For f_out = 1kHz with f_MCLK = 25MHz:
Freq reg = 1000 × 268435456 / 25000000 ≈ 10737

555-Based Square Wave Generator

The simplest possible signal generator. The 555 timer in astable mode generates a square wave — no exotic ICs required:

        +VCC
         |
        [RA]
         |
    ─────●─────[RB]─────●─────
    |    |               |    |
   [C]   └───(PIN 2,6)   |   [C_bypass]
    |         555        |    |
   GND   (PIN 3)=out    GND  GND

f ≈ 1.44 / ((RA + 2×RB) × C)
Duty cycle = (RA + RB) / (RA + 2×RB)

Example: RA=1kΩ, RB=10kΩ, C=100nF
f ≈ 1.44 / (21000 × 0.0000001) ≈ 686 Hz

The 555 doesn't produce a perfect 50% duty cycle unless you use steering diodes to split the charge and discharge paths. For a clean 50% square wave at audio frequencies, an oscillator built around a 74HC14 (Schmitt trigger inverter) or an LM393 comparator with RC is more straightforward.

Microcontroller as Signal Generator

A microcontroller's PWM output is a square wave with settable frequency and duty cycle. For a sine wave, generate it from a DAC or by PWM + low-pass filter. An Arduino running DDS at 8-bit resolution can generate sine waves to a few kHz this way. Rasperry Pi Pico, with its PIO state machines and fast DAC, can do much better — audio-quality sine generation in the 10–20kHz range is achievable without dedicated DDS hardware.