Lib-electronic-components ndk

NDK (Nihon Dempa Kogyo) timing devices MPN encoding patterns, suffix decoding, and handler guidance. Use when working with NDK crystals, oscillators, TCXOs, VCXOs, OCXOs, VCSOs, or SAW devices.

install
source · Clone the upstream repo
git clone https://github.com/Cantara/lib-electronic-components
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Cantara/lib-electronic-components "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/manufacturers/ndk" ~/.claude/skills/cantara-lib-electronic-components-ndk && rm -rf "$T"
manifest: .claude/skills/manufacturers/ndk/SKILL.md
source content

NDK (Nihon Dempa Kogyo) Manufacturer Skill

Manufacturer Overview

NDK (Nihon Dempa Kogyo Co., Ltd.) is a leading Japanese manufacturer of timing devices and frequency control products including:

  • Crystal Units: Standard crystals (NX), tuning fork crystals (NT), high frequency crystals (NH), automotive grade (NAT)
  • Clock Oscillators: Standard oscillators (NZ), programmable oscillators (NP), low jitter oscillators (NV)
  • TCXOs: Temperature Compensated Crystal Oscillators (NT, NTW)
  • VCXOs: Voltage Controlled Crystal Oscillators (NV, NVW)
  • OCXOs: Oven Controlled Crystal Oscillators (NO, NH)
  • VCSOs: Voltage Controlled SAW Oscillators (VS, VSW)
  • SAW Devices: SAW filters (SF), SAW resonators (SR), SAW duplexers (SD)

NDK is known for high-precision timing components used in telecommunications, networking, automotive, and industrial applications.


MPN Structure

NDK MPNs follow this general structure:

[PREFIX][SIZE][VARIANT]-[FREQUENCY][OPTIONS]
   |       |      |          |         |
   |       |      |          |         +-- Temperature grade, packaging
   |       |      |          +-- Frequency code (MHz or kHz)
   |       |      +-- Variant/specification letter
   |       +-- Size code (2 digits indicating package dimensions)
   +-- Product family prefix (NX, NT, NZ, NV, etc.)

Family Prefixes

PrefixProduct TypeDescription
NXStandard CrystalAT-cut MHz range crystals
NTTuning Fork Crystal / TCXO32.768 kHz crystals or TCXOs
NHHigh Frequency CrystalHigh frequency AT-cut crystals
NATAutomotive CrystalAEC-Q200 qualified crystals
NZStandard OscillatorSPXO (Simple Packaged Crystal Oscillator)
NPProgrammable OscillatorUser-programmable frequency
NVVCXO / Low JitterVoltage controlled or low jitter oscillators
NTWWide Temp TCXOExtended temperature range TCXO
NVWWide Pull VCXOExtended pull range VCXO
NOOCXOOven Controlled Crystal Oscillator
VSVCSOVoltage Controlled SAW Oscillator
VSWWide Pull VCSOExtended pull range VCSO
SFSAW FilterSurface Acoustic Wave filter
SRSAW ResonatorSurface Acoustic Wave resonator
SDSAW DuplexerSurface Acoustic Wave duplexer

Example MPN Decoding

Crystal Example

NX3225SA-24.000M
|  |  | |     |
|  |  | |     +-- 24.000M = 24 MHz frequency
|  |  | +-- - = Separator
|  |  +-- SA = Series/specification variant
|  +-- 32 25 = 3.2 x 2.5mm package
+-- NX = Standard Crystal family

Oscillator Example

NZ2520SDA-20.000M
|  |  |  |     |
|  |  |  |     +-- 20.000M = 20 MHz frequency
|  |  |  +-- - = Separator
|  |  +-- SDA = Series/specification variant
|  +-- 25 20 = 2.5 x 2.0mm package (note: size code is first 2 digits after prefix)
+-- NZ = Standard Oscillator family

Automotive Crystal Example

NAT3225SBTC-25.000M
|   |   |     |
|   |   |     +-- 25.000M = 25 MHz frequency
|   |   +-- SBTC = Automotive specification variant
|   +-- 32 25 = 3.2 x 2.5mm package
+-- NAT = Automotive grade Crystal

Supported Component Types

The NDKHandler supports these ComponentTypes:

ComponentTypeDescriptionExample Prefixes
CRYSTAL
Generic crystal typeNX, NT, NH, NAT
CRYSTAL_NDK
NDK-specific crystalNX, NT, NH, NAT
OSCILLATOR
Generic oscillator typeNZ, NP, NV, NT, NTW, NVW, NO, NH, VS, VSW
OSCILLATOR_NDK
NDK-specific oscillatorNZ, NP, NV
OSCILLATOR_TCXO_NDK
Temperature compensatedNT, NTW
OSCILLATOR_VCXO_NDK
Voltage controlledNV, NVW
OSCILLATOR_OCXO_NDK
Oven controlledNO, NH
SAW_FILTER_NDK
SAW filter devicesSF
SAW_RESONATOR_NDK
SAW resonator devicesSR

Note: SAW devices (SF, SR, SD) are registered under

ComponentType.IC
in patterns but
SAW_FILTER_NDK
and
SAW_RESONATOR_NDK
are listed in
getSupportedTypes()
.


Package Code Extraction

The handler extracts package dimensions from the size code in the MPN. The size code is positions 3-4 (0-indexed) after the prefix.

Crystal Packages (NX, NT, NH, NAT)

Size CodePackage Dimensions
121.2 x 1.0mm
161.6 x 1.2mm
202.0 x 1.6mm
252.5 x 2.0mm
323.2 x 2.5mm
505.0 x 3.2mm
808.0 x 4.5mm

Extraction Logic:

// For crystals: extract characters at positions 3-4 (after NX, NT, NH, or NAT prefix)
// Example: NX3225SA → position 3 is "3", position 4 is "2" → "32" → 3.2 x 2.5mm
String sizeCode = upperMpn.substring(3, 5);  // Gets "32" from "NX3225..."

Oscillator Packages (NZ, NP, NV, NO)

Size CodePackage Dimensions
212.0 x 1.6mm
252.5 x 2.0mm
323.2 x 2.5mm
505.0 x 3.2mm
707.0 x 5.0mm
989.8 x 7.5mm

Extraction Logic:

// For oscillators: extract characters at positions 3-4
// Example: NZ2520SDA → "25" → 2.5 x 2.0mm
String sizeCode = upperMpn.substring(3, 5);

Series Extraction

The handler returns descriptive series names based on the MPN prefix:

Crystal Series

PrefixSeries Name
NXStandard Crystal
NTTuning Fork Crystal
NHHigh Frequency Crystal
NATAutomotive Crystal

Oscillator Series

PrefixVariant CheckSeries Name
NZ-Standard Oscillator
NP-Programmable Oscillator
NVchar[2] == 'W'Wide Pull VCXO
NV(other)VCXO
NTchar[2] == 'W'Wide Temp TCXO
NT(other)TCXO
NO-OCXO
NH(not crystal pattern)High Stability OCXO

VCSO Series

PrefixSeries Name
VSVCSO
VSWWide Pull VCSO

SAW Device Series

PrefixSeries Name
SFSAW Filter
SRSAW Resonator
SDSAW Duplexer

Frequency Code Patterns

NDK MPNs include frequency specifications after the hyphen:

FormatMeaningExample
XX.XXXM
Megahertz24.000M, 48.000M
XX.XXXXM
Megahertz (4 decimal)24.0000M
32.768K
32.768 kHzTuning fork crystal frequency

Extraction Logic:

private String extractFrequencyCode(String mpn) {
    // Extract everything after the last hyphen
    int lastDash = mpn.lastIndexOf('-');
    if (lastDash >= 0 && lastDash < mpn.length() - 1) {
        return mpn.substring(lastDash + 1);
    }
    return "";
}

Common Example MPNs

Standard Crystals (NX)

MPNTypeSizeFrequency
NX3225SA-24.000MStandard3.2 x 2.5mm24 MHz
NX2520SA-16.000MStandard2.5 x 2.0mm16 MHz
NX2016SA-32.000MStandard2.0 x 1.6mm32 MHz
NX5032GA-8.000MStandard5.0 x 3.2mm8 MHz

Tuning Fork Crystals (NT)

MPNTypeSizeFrequency
NT2012SA-32.768KTuning Fork2.0 x 1.2mm32.768 kHz
NT1612SA-32.768KTuning Fork1.6 x 1.2mm32.768 kHz

Automotive Crystals (NAT)

MPNTypeSizeFrequency
NAT3225SBTC-25.000MAutomotive3.2 x 2.5mm25 MHz
NAT2520SBTA-20.000MAutomotive2.5 x 2.0mm20 MHz

Standard Oscillators (NZ)

MPNTypeSizeFrequency
NZ2520SDA-20.000MStandard2.5 x 2.0mm20 MHz
NZ3225SDA-24.000MStandard3.2 x 2.5mm24 MHz
NZ5032SDA-50.000MStandard5.0 x 3.2mm50 MHz

TCXOs (NT oscillator)

MPNTypeSizeStability
NT2520SD-26.000MTCXO2.5 x 2.0mmStandard
NTW3225CC-26.000MWide Temp TCXO3.2 x 2.5mmExtended temp

VCXOs (NV)

MPNTypeSizePull Range
NV2520SA-100.000MVCXO2.5 x 2.0mmStandard
NVW3225SD-155.520MWide Pull VCXO3.2 x 2.5mmExtended

OCXOs (NO)

MPNTypeSizeStability
NO5032SD-10.000MOCXO5.0 x 3.2mmHigh
NO7050SD-10.000MOCXO7.0 x 5.0mmVery High

Handler Implementation Notes

Pattern Registration

The handler registers patterns for both base types and NDK-specific types:

// Crystal patterns - register for BOTH generic and manufacturer-specific types
registry.addPattern(ComponentType.CRYSTAL, "^NX[0-9].*");
registry.addPattern(ComponentType.CRYSTAL_NDK, "^NX[0-9].*");

Prefix Overlap Issues

NT Prefix Conflict: The

NT
prefix is used for BOTH:

  • Tuning fork crystals (when followed by size code like NT1612, NT2012)
  • TCXOs (Temperature Compensated Crystal Oscillators)

The handler's

extractSeries()
method has overlapping checks:

// This check comes first, returning "Tuning Fork Crystal"
if (upperMpn.startsWith("NT")) return "Tuning Fork Crystal";

// This check is never reached because the first one matches
if (upperMpn.startsWith("NT") && upperMpn.length() > 3) {
    // TCXO logic
}

NH Prefix Conflict: The

NH
prefix is used for BOTH:

  • High frequency crystals
  • High stability OCXOs

Replacement Compatibility

The

isOfficialReplacement()
method checks:

  1. Series compatibility - Same series or compatible upgrade path
  2. Package match - Same physical dimensions required
  3. Frequency match - Identical frequency code required
// Compatible series: Wide temp/stability can replace standard
if (series1.startsWith("Wide Temp") &&
    series2.equals(series1.replace("Wide Temp ", ""))) return true;
if (series1.startsWith("High Stability") &&
    series2.equals(series1.replace("High Stability ", ""))) return true;

Related Files

  • Handler:
    manufacturers/NDKHandler.java
  • Component types:
    CRYSTAL
    ,
    CRYSTAL_NDK
    ,
    OSCILLATOR
    ,
    OSCILLATOR_NDK
    ,
    OSCILLATOR_TCXO_NDK
    ,
    OSCILLATOR_VCXO_NDK
    ,
    OSCILLATOR_OCXO_NDK
    ,
    SAW_FILTER_NDK
    ,
    SAW_RESONATOR_NDK

Learnings & Quirks

Handler Issues (Identified)

  • HashSet in getSupportedTypes(): Uses mutable
    HashSet
    , should use
    Set.of()
    for immutability (see CLAUDE.md "Handlers Without Tests" section)
  • Missing IC type in getSupportedTypes(): SAW devices (SF, SR, SD) register patterns under
    ComponentType.IC
    but
    IC
    is not in
    getSupportedTypes()
  • NT prefix ambiguity: Same prefix used for tuning fork crystals AND TCXOs; series extraction logic has unreachable code
  • NH prefix ambiguity: Same prefix used for high frequency crystals AND high stability OCXOs
  • Package extraction position: Uses fixed positions 3-4 which assumes 2-letter prefix; NAT (3-letter) will extract wrong characters ("T3" from "NAT3225...")

Size Code Mapping

NDK uses a unique size code system where digits represent dimensions:

  • First digit = first dimension (mm), second digit = second dimension
  • "32" = 3.2mm x 2.5mm (but "25" in oscillators = 2.5mm x 2.0mm)
  • The mapping is not always intuitive; always verify against datasheet

Oscillator Type Hierarchy

TypeStabilityTemperature RangeUse Case
SPXO (NZ)±25-50 ppm-20 to +70°CGeneral timing
TCXO (NT)±0.5-2 ppm-30 to +85°CCellular, GPS, IoT
VCXO (NV)±25-50 ppm-20 to +70°CPLL, clock recovery
OCXO (NO)±0.01-0.1 ppm-40 to +85°CTelecom, instrumentation

SAW Device Applications

TypeApplication
SF (Filter)RF filtering in mobile phones, base stations
SR (Resonator)Timing reference for RF circuits
SD (Duplexer)Simultaneous TX/RX in wireless devices

Competing Products

NDKEpsonTXCKyocera/AVXMurata
NX seriesFA series7A seriesKC series-
NZ seriesSG series8Z seriesKT series-
NT (TCXO)TG series8P series--
SF/SR/SD---SAW devices

Temperature Grade Suffixes

Common temperature grade indicators in NDK MPNs:

  • No suffix: Commercial (0°C to +70°C)
  • T or TC: Industrial (-40°C to +85°C)
  • A or AC: Automotive (-40°C to +125°C)

Packaging/Tape Options

SuffixMeaning
-K or K3Tape and reel packaging
(no suffix)Tray packaging
<!-- Add new learnings above this line -->