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
| Prefix | Product Type | Description | |--------|--------------|-------------| | NX | Standard Crystal | AT-cut MHz range crystals | | NT | Tuning Fork Crystal / TCXO | 32.768 kHz crystals or TCXOs | | NH | High Frequency Crystal | High frequency AT-cut crystals | | NAT | Automotive Crystal | AEC-Q200 qualified crystals | | NZ | Standard Oscillator | SPXO (Simple Packaged Crystal Oscillator) | | NP | Programmable Oscillator | User-programmable frequency | | NV | VCXO / Low Jitter | Voltage controlled or low jitter oscillators | | NTW | Wide Temp TCXO | Extended temperature range TCXO | | NVW | Wide Pull VCXO | Extended pull range VCXO | | NO | OCXO | Oven Controlled Crystal Oscillator | | VS | VCSO | Voltage Controlled SAW Oscillator | | VSW | Wide Pull VCSO | Extended pull range VCSO | | SF | SAW Filter | Surface Acoustic Wave filter | | SR | SAW Resonator | Surface Acoustic Wave resonator | | SD | SAW Duplexer | Surface 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:
| ComponentType | Description | Example Prefixes |
|---------------|-------------|------------------|
| CRYSTAL | Generic crystal type | NX, NT, NH, NAT |
| CRYSTAL_NDK | NDK-specific crystal | NX, NT, NH, NAT |
| OSCILLATOR | Generic oscillator type | NZ, NP, NV, NT, NTW, NVW, NO, NH, VS, VSW |
| OSCILLATOR_NDK | NDK-specific oscillator | NZ, NP, NV |
| OSCILLATOR_TCXO_NDK | Temperature compensated | NT, NTW |
| OSCILLATOR_VCXO_NDK | Voltage controlled | NV, NVW |
| OSCILLATOR_OCXO_NDK | Oven controlled | NO, NH |
| SAW_FILTER_NDK | SAW filter devices | SF |
| SAW_RESONATOR_NDK | SAW resonator devices | SR |
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 Code | Package Dimensions | |-----------|-------------------| | 12 | 1.2 x 1.0mm | | 16 | 1.6 x 1.2mm | | 20 | 2.0 x 1.6mm | | 25 | 2.5 x 2.0mm | | 32 | 3.2 x 2.5mm | | 50 | 5.0 x 3.2mm | | 80 | 8.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 Code | Package Dimensions | |-----------|-------------------| | 21 | 2.0 x 1.6mm | | 25 | 2.5 x 2.0mm | | 32 | 3.2 x 2.5mm | | 50 | 5.0 x 3.2mm | | 70 | 7.0 x 5.0mm | | 98 | 9.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
| Prefix | Series Name | |--------|-------------| | NX | Standard Crystal | | NT | Tuning Fork Crystal | | NH | High Frequency Crystal | | NAT | Automotive Crystal |
Oscillator Series
| Prefix | Variant Check | Series Name | |--------|---------------|-------------| | NZ | - | Standard Oscillator | | NP | - | Programmable Oscillator | | NV | char[2] == 'W' | Wide Pull VCXO | | NV | (other) | VCXO | | NT | char[2] == 'W' | Wide Temp TCXO | | NT | (other) | TCXO | | NO | - | OCXO | | NH | (not crystal pattern) | High Stability OCXO |
VCSO Series
| Prefix | Series Name | |--------|-------------| | VS | VCSO | | VSW | Wide Pull VCSO |
SAW Device Series
| Prefix | Series Name | |--------|-------------| | SF | SAW Filter | | SR | SAW Resonator | | SD | SAW Duplexer |
Frequency Code Patterns
NDK MPNs include frequency specifications after the hyphen:
| Format | Meaning | Example |
|--------|---------|---------|
| XX.XXXM | Megahertz | 24.000M, 48.000M |
| XX.XXXXM | Megahertz (4 decimal) | 24.0000M |
| 32.768K | 32.768 kHz | Tuning 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)
| MPN | Type | Size | Frequency | |-----|------|------|-----------| | NX3225SA-24.000M | Standard | 3.2 x 2.5mm | 24 MHz | | NX2520SA-16.000M | Standard | 2.5 x 2.0mm | 16 MHz | | NX2016SA-32.000M | Standard | 2.0 x 1.6mm | 32 MHz | | NX5032GA-8.000M | Standard | 5.0 x 3.2mm | 8 MHz |
Tuning Fork Crystals (NT)
| MPN | Type | Size | Frequency | |-----|------|------|-----------| | NT2012SA-32.768K | Tuning Fork | 2.0 x 1.2mm | 32.768 kHz | | NT1612SA-32.768K | Tuning Fork | 1.6 x 1.2mm | 32.768 kHz |
Automotive Crystals (NAT)
| MPN | Type | Size | Frequency | |-----|------|------|-----------| | NAT3225SBTC-25.000M | Automotive | 3.2 x 2.5mm | 25 MHz | | NAT2520SBTA-20.000M | Automotive | 2.5 x 2.0mm | 20 MHz |
Standard Oscillators (NZ)
| MPN | Type | Size | Frequency | |-----|------|------|-----------| | NZ2520SDA-20.000M | Standard | 2.5 x 2.0mm | 20 MHz | | NZ3225SDA-24.000M | Standard | 3.2 x 2.5mm | 24 MHz | | NZ5032SDA-50.000M | Standard | 5.0 x 3.2mm | 50 MHz |
TCXOs (NT oscillator)
| MPN | Type | Size | Stability | |-----|------|------|-----------| | NT2520SD-26.000M | TCXO | 2.5 x 2.0mm | Standard | | NTW3225CC-26.000M | Wide Temp TCXO | 3.2 x 2.5mm | Extended temp |
VCXOs (NV)
| MPN | Type | Size | Pull Range | |-----|------|------|------------| | NV2520SA-100.000M | VCXO | 2.5 x 2.0mm | Standard | | NVW3225SD-155.520M | Wide Pull VCXO | 3.2 x 2.5mm | Extended |
OCXOs (NO)
| MPN | Type | Size | Stability | |-----|------|------|-----------| | NO5032SD-10.000M | OCXO | 5.0 x 3.2mm | High | | NO7050SD-10.000M | OCXO | 7.0 x 5.0mm | Very 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:
- Series compatibility - Same series or compatible upgrade path
- Package match - Same physical dimensions required
- 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 useSet.of()for immutability (see CLAUDE.md "Handlers Without Tests" section) - Missing IC type in getSupportedTypes(): SAW devices (SF, SR, SD) register patterns under
ComponentType.ICbutICis not ingetSupportedTypes() - 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
| Type | Stability | Temperature Range | Use Case | |------|-----------|-------------------|----------| | SPXO (NZ) | ±25-50 ppm | -20 to +70°C | General timing | | TCXO (NT) | ±0.5-2 ppm | -30 to +85°C | Cellular, GPS, IoT | | VCXO (NV) | ±25-50 ppm | -20 to +70°C | PLL, clock recovery | | OCXO (NO) | ±0.01-0.1 ppm | -40 to +85°C | Telecom, instrumentation |
SAW Device Applications
| Type | Application | |------|-------------| | 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
| NDK | Epson | TXC | Kyocera/AVX | Murata | |-----|-------|-----|-------------|--------| | NX series | FA series | 7A series | KC series | - | | NZ series | SG series | 8Z series | KT series | - | | NT (TCXO) | TG series | 8P 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
| Suffix | Meaning | |--------|---------| | -K or K3 | Tape and reel packaging | | (no suffix) | Tray packaging |
<!-- Add new learnings above this line -->
Scan to join WeChat group