Skip to the content
PCBKitNew board
4 layers99.7 × 99.7 mmDiode tayloe sdr, the printed circuit board in 3D

Super Heterodyne Direct Conversion Hybrid I/Q SDR Receiver

Size
99.7 × 99.7 mm
Copper layers
4
Thickness
1.6 mm
Parts
279
Nets
185
Pads
830
Tracks, vias
1,947, 665
Pours
5
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
4 Apr 2026
Updated
11 Jun 2026

Overview

Diode tayloe sdr is an open-source printed circuit board by SomethingFourier, from the SomethingFourier/SDR-Receiver repository on GitHub. It is a 4-layer board of 99.7 × 99.7 mm with 279 parts on 185 nets, routed with 1,947 tracks and 665 vias.

It is built around the ADE-1+, CJC5340 and AP7361C-33E, with the LM66100DCK, AG9905LP and 1N4004W among its other parts. Its parts include 112 capacitors, 52 resistors, 16 ICs, 12 inductors and 9 diodes. It belongs with the radio and wireless boards of this library.

Main components

9

README

README.md

SDR-Receiver 📻

Hybrid Super Heterodyne Direct Conversion I/Q SDR Receiver

An open-source, hybrid-architecture Software Defined Radio (SDR) receiver built around the RP2350 microcontroller. This project blends superheterodyne and direct-conversion (Tayloe detector) techniques. It's been designed to listen to the 2-meter band, but covers a tunable range of 5 MHz to 160 MHz. It features both USB-C (USB 1.1) and Ethernet data communication, as well as Power over Ethernet (PoE) capabilities. Ethernet streaming is currently functional but still under active development and not yet ready for final deployment.

System Architecture

System Block Diagram

The receiver is divided into distinct HF and VHF signal paths. Each path utilizes a dedicated antenna equipped with an isolation transformer to prevent ground loops.

  • HF Path: The isolated signal is routed directly to a multiplexer.
  • VHF Path: The signal passes through a low-noise amplifier (LNA) followed by a band-pass filter. This filter prevents image frequencies from interfering with the desired intermediate frequency (IF). The signal is then mixed down by a double-balanced diode ring mixer and sent to the multiplexer.

A multiplexer selects between the HF signal and the down-converted VHF signal, feeding the active path into a shared low-pass filter.

After the low-pass filter, the signal makes its way to the Tayloe detector. The Tayloe detector mixes the signal down to be centered at 0 Hz with both an in-phase and a quadrature output. These I and Q outputs are then fed into the analog-to-digital converter. As this is a first revision board, as a backup and insurance measure, we've also connected the I and Q outputs to a 3.5 mm jack for use with an external sound card.

The whole SDR is built around the RP2350 microcontroller. The RP2350 will talk to SDR software either over a USB-C or Ethernet connection. It will receive commands to change the tuning frequency, and relay that information to the clock generator for this SDR, the Si5351-compatible MS5351M. It will also interface with a small I2C OLED display and a couple of buttons for a local user interface. It will receive the SDR I and Q data from the ADC via I2S, and send that data over either the USB-C or Ethernet connection to the computer running the SDR software.

Hardware Specifications

  • Microcontroller: Raspberry Pi RP2350A (with W25Q128JVS Flash)
  • Mixer Architecture: Dual-Conversion Zero-IF (Double-Balanced Mixer first stage, Tayloe QSD second stage)
  • Clocking: MS5351M (driven by a 24.576 MHz oscillator)
  • Network / Comms: LAN8720A Ethernet PHY (10/100) using RP2350 Programmable IO
  • Power Supply: USB-C (5 V), DC Barrel Jack Input, or Power over Ethernet (PoE via Ag9905LP module delivering a clean 5.65 V stepped down by LDOs)
  • Baseband Amplification: OPA1612 op-amps for ultra-low noise I/Q amplification

Filter Designs

Charles (VHF band-pass filter, 110-160 MHz)

Charles Filter Design

Jaquavix (30 MHz low-pass filter)

Jaquavis Filter Design

RP2350 GPIO Mapping

GPIO PinFunctionSubsystem
0 - 1I2C SDA / I2C SCLI2C
2 - 3Select button / Enter buttonUI Buttons
4Red LEDLED
5Green LEDLED
6 - 7ADC M0 / ADC M1ADC Mode
8VHF BP Filter Mux selectMux Selects
9Mux U18 SelectMux Selects
10 - 12Ethernet TX Enable, TXD0, TXD1Eth TX (Programmable IO)
13 - 15Ethernet Carrier Sense/Data Valid, RXD0, RXD1Eth RX (Programmable IO)
16 - 18LAN8720A Management Data I/O, CLK, ResetEth Manage (Programmable IO)
19 - 21I2S CLK, Word Select, DataI2S (Programmable IO)
22Extra GPIOGeneral
23Ethernet 50 MHz Clk outputProgrammable IO
24 - 25Extra GPIOGeneral
26White LEDLED
27 - 28Extra GPIOGeneral
29Yellow LEDLED
56 - 60QSPI (SCLK, SDO, SD1-3, SS)Flash Memory

(Note: Pin mapping is subject to change as the board layout is finalized. Refer to pico.kicad_sch for the raw schematic).


Software Design

Software Block Diagram

The firmware runs on both cores of the RP2350 simultaneously, dividing responsibilities between real-time data acquisition/DSP (Core 0) and hardware control (Core 1).

Data Path (ADC → USB)

I/Q samples from the ADC are clocked in over I2S using a PIO state machine. A DMA controller with two channels shuttles those samples into a ping-pong buffer pair — while one buffer is being filled (e.g., Ping), the other (Pong) is available for processing. When a transfer completes, a DMA IRQ handler on Core 1 signals Core 0 to begin processing the newly filled buffer, then arms the next DMA transfer into the opposite buffer.

On Core 0, the freshly filled buffer is passed through a FIR delay filter before being handed to the Audio Task. The FIR filter compensates for the ADC clone's fixed channel skew (about 1.9 microseconds between left and right channels), aligning I/Q timing before streaming. The Audio Task packages the filtered I/Q samples and feeds them to the USB Controller as a UAC1 (USB Audio Class 1) stream, making the SDR appear as a standard USB audio device to any SDR application running on the host.

Control Path (USB CDC → Hardware)

A separate CDC Task on Core 0 monitors the USB CDC (virtual serial port) interface for incoming commands from the host. Commands are forwarded to the SDR State Machine on Core 1, which acts as the central coordinator for hardware control. In response, the state machine drives:

  • Clock Generator — updates the si5351 over I2C to retune the LO frequency.
  • MUX Controller — switches the hardware multiplexer to select the active signal path (HF or VHF).

Ethernet software is currently available in development form and can work, but it remains unreliable and is not considered deployment-ready.

The bidirectional arrow between the CDC Task and the SDR State Machine also allows the state machine to send status back to the host over the CDC interface.

Summary

CoreResponsibilities
Core 0FIR filtering, Audio Task (UAC1 streaming), CDC Task (command parsing)
Core 1DMA IRQ handling, SDR State Machine, Clock Generator (I2C), MUX control

Building the Firmware

The firmware uses CMake with the Raspberry Pi Pico SDK.

Prerequisites

  • CMake 3.13+
  • ARM GCC toolchain (arm-none-eabi-gcc)
  • Pico SDK checked out locally

Set the Pico SDK path before configuring:

bash
export PICO_SDK_PATH=/path/to/pico-sdk

Build Steps

bash
cd firmware
mkdir -p build
cd build
cmake ..
cmake --build . -j

The firmware image is generated as sdr.uf2 in the build output directory.

Flashing

  1. Hold BOOTSEL while plugging in USB-C to enter UF2 boot mode.
  2. The board mounts as a USB mass-storage device.
  3. Copy sdr.uf2 onto that device.

Issues for v0.1

The first order of boards arrived and we worked through our board bring-up plan to safely get our board working, finding any errors we may have made. The following issues were discovered.

  • A switching op-amp was used for the 2.25 V power bus and there was significant ringing on this power rail. Simple fix is to place a 50-ohm resistor on the output of the op-amp.
  • Tayloe detector op-amp was miswired. The inverting and non-inverting inputs are swapped on the I inverting amplifier circuit.
  • The Ethernet LAN chip is trying to generate a 50 MHz clock instead of receiving one. The Ethernet LED2 pin needs to be polarity flipped.

Parts

279
QtyValueFootprintReferences
33100nFPCM_JLCPCB:C_0402C13, C19, C21, C33, C35, C37, C39, C41, C42, C101, C103, C105, C107, C110, C114, C120 +17
16100pFPCM_JLCPCB:C_0603C32, C73, C76, C77, C85, C86, C90, C93, C94, C100, C102, C104, C108, C111, C112, C115
1310kΩPCM_JLCPCB:R_0402R6, R10, R16, R17, R20, R22, R25, R27, R28, R32, R33, R35, R46
1210uFPCM_JLCPCB:C_0603C7, C9, C10, C34, C60, C67, C75, C78, C91, C96, C109, C113
12SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mmJP5, JP6, JP11, JP13, JP15, JP16, JP19, JP20, JP23, JP24, JP25, JP31
101uFPCM_JLCPCB:C_0402C36, C38, C40, C43, C45, C50, C52, C82, C84, C119
104.7uFPCM_JLCPCB:C_0402C11, C15, C16, C18, C20, C22, C23, C24, C25, C88
7~Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP10, JP18, JP26, JP27, JP28, JP29, JP30
6SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP3, JP4, JP12, JP14, JP21, JP22
4100kΩPCM_JLCPCB:R_0402R44, R45, R49, R50
4100nFPCM_JLCPCB:C_0805C12, C46, C47, C48
4100ΩPCM_JLCPCB:R_0402R30, R31, R36, R39
410nFPCM_JLCPCB:C_0603C1, C2, C3, C4
41N4004WPCM_JLCPCB:D_SOD-123FLD9, D10, D11, D12
433ΩPCM_JLCPCB:R_0805R34, R37, R38, R42
4AP7361C-33EPackage_TO_SOT_SMD:SOT-223-3_TabPin2U24, U25, U26, U27
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
4Tactile Button, 160gfPCM_JLCPCB:SW_TS-1088-AR02016S1, S2, S3, S4
31kΩPCM_JLCPCB:R_0402R2, R5, R7
3330ΩPCM_JLCPCB:R_0402R11, R12, R19
343pF 1%PCM_JLCPCB:C_0402C80, C81, C89
391pFPCM_JLCPCB:C_0402C61, C65, C66
3LM66100DCKPackage_TO_SOT_SMD:SOT-363_SC-70-6U13, U14, U15
3OPA1612AxDPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2, U3, U8
3~EasyEDA_Lib:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BRU17, U18, U19
3~PCM_JLCPCB:FB_0805FB1, FB2, FB4
21.5kΩPCM_JLCPCB:R_0805R29, R40
2100uF 25VCapacitor_SMD:CP_Elec_6.3x7.7C72, C116
210kΩPCM_JLCPCB:R_0805R21, R41
210pFPCM_JLCPCB:C_0402C6, C49
22.2nFPCM_JLCPCB:C_1206C106, C121
227ΩPCM_JLCPCB:R_0603R8, R9
233pFPCM_JLCPCB:C_0402C14, C17
23GHzEasyEDA_Lib:BNC-TH_DOSIN-801-0051RF1, RF2
24.7kΩPCM_JLCPCB:R_0402R23, R24
2470pFPCM_JLCPCB:C_0805C69, C79
247ΩPCM_JLCPCB:R_0402R14, R15
25.1kΩPCM_JLCPCB:R_0402R1, R4
2634ΩPCM_JLCPCB:R_0402R48, R51
291ΩPCM_JLCPCB:R_0402R47, R52
2Jumper_2_Small_OpenConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJP2, JP17
2LOGOLOGOG***, G***
2MB10Ssdr_project:SOIC245P670X290-4ND3, D4
2RedPCM_JLCPCB:D_0603D1, D5
11.5kΩPCM_JLCPCB:R_0402R26
110uFPCM_JLCPCB:C_0402C68
112kΩPCM_JLCPCB:R_0402R18
1160nHPCM_JLCPCB:L_0805L10
116nHEasyEDA_Lib:IND-SMD_L2.4-W1.7L6
118nHEasyEDA_Lib:IND-SMD_L2.2-W1.6L9
12.2uH,50mAPCM_JLCPCB:L_0805L12
120pFPCM_JLCPCB:C_0402C59
122nHsdr_project:L_APV_AHW2520L7
127nHInductor_SMD:L_1210_3225MetricL3
1300nHPCM_JLCPCB:L_0805L11
133nHEasyEDA_Lib:IND-SMD_L2.2-W1.6L4
133ΩPCM_JLCPCB:R_0402R13
136nHPCM_JLCPCB:L_0603L8
139pFPCM_JLCPCB:C_0402C62
14.7uH,25mAPCM_JLCPCB:L_1206L2
147 1%PCM_JLCPCB:R_0603R43
1470pFPCM_JLCPCB:C_0402C51
147kΩPCM_JLCPCB:R_0402R3
15.65V JumperJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
151pFPCM_JLCPCB:C_0402C58
168nHInductor_SMD:L_1008_2520MetricL5
168pFPCM_JLCPCB:C_0402C63
182pFPCM_JLCPCB:C_0402C64
1ADE-1+sdr_project:ADE12U5
1AOTA-B201610S3R3-101-TEasyEDA_Lib:IND-SMD_L2.0-W1.6_AOTA-B201610S3R3-101-TL1
1Ag9905LPConverter_DCDC:Converter_DCDC_Silvertel_Ag99xxLP_THTU11
1CJC5340Package_SO:TSSOP-16_4.4x5mm_P0.65mmU4
1DC_JumperJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP8
1Debug PinsConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1Display ConnectorConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ5
1External FilterConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ3
1Extra GPIOConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ8
1GNDTestPoint:TestPoint_Pad_1.5x1.5mmTP8
1GreenPCM_JLCPCB:D_0805D13
1H1102NLTsdr_project:XFMR_H1102NLTT1

The 251 most common of 279 parts.

Questions

How big is the Diode tayloe sdr PCB?

It measures 99.7 × 99.7 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Diode tayloe sdr use?

279 parts, built around the ADE-1+, CJC5340, AP7361C-33E and LM66100DCK. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Diode tayloe sdr KiCad files?

From the SomethingFourier/SDR-Receiver repository on GitHub, at the commit this page was made from: the board is kicad/diode_tayloe_sdr.kicad_pcb and its schematic kicad/.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Diode tayloe sdr design in my own project?

Its repository states no licence, so its author keeps all rights: ask SomethingFourier before reusing the design.

Similar boards

  • 4 layers89 × 89.5 mmSDR v3-TayloeDetector FINAL, the printed circuit board in 3D

    SDR v3-TayloeDetector FINAL

    JDPennockGB/ENGR357-SDR-PennockRoque

    A custom-built, high-performance Software Defined Radio (SDR) receiver powered by the Raspberry Pi Pico (RP2040).

    120 parts1
  • 2 layers87.6 × 72.6 mmCw isolator powered, the printed circuit board in 3D

    Cw isolator powered

    colinoflynn/phase-modulation-sca

    Resources to demonstrate phase modulation leakage including over JTAG

    68 parts8
  • 4 layers54.3 × 76.1 mmPhase interferometer, the printed circuit board in 3D

    Phase interferometer

    mpkendall/phase-interferometer

    A 2(or more)-element phase interferometric direction finder for 433 MHz using a passive phased array

    78 parts3
  • 4 layers96 × 90.2 mmTransceiver, the printed circuit board in 3D

    Transceiver

    ngrabbs/ember

    Open pvpanel.kicadpro with KiCad 10. The project contains the recovered schematic, routed PCB, project-local footprint libraries, and solar-module STEP model.

    161 parts1CC0-1.0
  • 2 layers42 × 70 mmPOE, the printed circuit board in 3D

    POE

    cdntinker/In-Wall-POE

    Working on a standalone POE to USB PSU...

    23 parts
  • 4 layers74.4 × 57.3 mmMts demod, the printed circuit board in 3D

    Mts demod

    mahdi-kh1265/mts-electronics

    Analog RF, photodetector, and demodulation electronics for POSM's modulation-transfer spectroscopy (MTS) laser-locking system.

    90 partsMIT
  • 4 layers90 × 40 mmEsp32-poe, the printed circuit board in 3D

    Esp32-poe

    nrwiersma/esp32-poe

    ESP32 Dev Kit with PoE and Ethernet

    58 parts