--- name: iqd description: IQD Frequency Products MPN encoding patterns, package decoding, and handler guidance. Use when working with IQD crystals, oscillators, TCXOs, VCXOs, or OCXOs. --- # IQD Frequency Products Manufacturer Skill ## Manufacturer Overview IQD (International Quartz Devices) is a UK-based manufacturer specializing in frequency control products. Their product range includes: - **Crystals**: Low frequency, standard, SMD, and through-hole crystal units - **Oscillators**: Standard clock oscillators (XO) - **TCXOs**: Temperature Compensated Crystal Oscillators - **VCXOs**: Voltage Controlled Crystal Oscillators - **OCXOs**: Oven Controlled Crystal Oscillators - **Clock Modules**: Integrated timing solutions - **RTC Modules**: Real-Time Clock modules - **Filters**: Crystal filters, SAW filters, resonator bandpass --- ## MPN Structure IQD MPNs follow product-family-specific structures: ### Crystal Units ``` [PREFIX][SIZE]-[FREQUENCY]-[TOLERANCE]-[LOAD]-[TEMP] | | | | | | | | | | | +-- Temperature range | | | | +-- Load capacitance | | | +-- Frequency tolerance (PPM) | | +-- Frequency value | +-- Size code (e.g., 016, 020, 032) +-- Series prefix (CFPX, XTALS, XTAL, LFXTAL) ``` ### Oscillators (XO, TCXO, VCXO, OCXO) ``` [PREFIX]-[SIZE][SPEC]-[FREQUENCY]-[STABILITY]-[OUTPUT] | | | | | | | | | | | +-- Output type | | | | +-- Stability (PPM) | | | +-- Frequency value | | +-- Specification variant (H=High freq, L=Low power) | +-- Package size code (21, 25, 32, 50, 70, 90) +-- Family prefix (IQXO, IQTX, IQVCXO, IQOCXO) ``` --- ## Example Decoding ### Crystal Examples ``` CFPX-032-16.000MHz-10ppm | | | | | | | +-- 10 PPM frequency tolerance | | +-- 16.000 MHz frequency | +-- 032 = 3.2 x 2.5mm package +-- Standard Crystal series XTALS-020-8.000MHz | | | | | +-- 8.000 MHz frequency | +-- 020 = 2.0 x 1.6mm package +-- SMD Crystal series LFXTAL-25.000kHz | | | +-- 25.000 kHz (low frequency) +-- Low Frequency Crystal series ``` ### Oscillator Examples ``` IQXO-32-16.000MHz | | | | | +-- 16.000 MHz output frequency | +-- 32 = 3.2 x 2.5mm package +-- Standard Oscillator IQXO-L50-1.000MHz | || | | || +-- 1.000 MHz frequency | |+-- 50 = 5.0 x 3.2mm package | +-- L = Low Power variant +-- Low Power Oscillator IQTX-H25-10.000MHz-0.5PPM | || | | | || | +-- 0.5 PPM stability | || +-- 10.000 MHz frequency | |+-- 25 = 2.5 x 2.0mm package | +-- H = High Stability variant +-- High Stability TCXO IQVCXO-32-100.000MHz | | | | | +-- 100.000 MHz center frequency | +-- 32 = 3.2 x 2.5mm package +-- Voltage Controlled Crystal Oscillator IQOCXO-H70-10.000MHz-1PPB | || | | | || | +-- 1 PPB (parts per billion) stability | || +-- 10.000 MHz frequency | |+-- 70 = 7.0 x 5.0mm package | +-- H = High Stability variant +-- High Stability Oven Controlled Crystal Oscillator ``` ### Module Examples ``` IQCM-100-25.000MHz | | | | | +-- 25.000 MHz output | +-- Series/variant code +-- Clock Module IQRTC-32768Hz | | | +-- 32.768 kHz (standard RTC frequency) +-- RTC Module IQXF-455kHz | | | +-- 455 kHz center frequency +-- Crystal Filter IQSPF-100.000MHz | | | +-- 100.000 MHz center frequency +-- SAW Filter ``` --- ## Package Codes ### Crystal Packages (CFPX, XTALS series) Size codes appear after a dash and indicate package dimensions: | Code | Package Size | Common Use | |------|--------------|------------| | 016 | 1.6 x 1.2mm | Ultra-small SMD | | 020 | 2.0 x 1.6mm | Small SMD | | 025 | 2.5 x 2.0mm | Standard SMD | | 032 | 3.2 x 2.5mm | Standard SMD (most common) | | 050 | 5.0 x 3.2mm | Larger SMD | | 070 | 7.0 x 5.0mm | Large SMD | ### Oscillator Packages (IQXO, IQTX, IQVCXO, IQOCXO series) Size codes appear after the dash (or after H/L modifier): | Code | Package Size | Common Use | |------|--------------|------------| | 21 | 2.0 x 1.6mm | Ultra-compact oscillators | | 25 | 2.5 x 2.0mm | Compact oscillators | | 32 | 3.2 x 2.5mm | Standard oscillators | | 50 | 5.0 x 3.2mm | Standard/high stability | | 70 | 7.0 x 5.0mm | High stability / OCXO | | 90 | 9.0 x 7.0mm | High stability OCXO | --- ## Component Type Prefixes ### Crystal Prefixes | Prefix | Component Type | Description | |--------|----------------|-------------| | LFXTAL | Low Frequency Crystal | 32.768 kHz and other low frequencies | | CFPX | Standard Crystal | General purpose SMD crystals | | XTALS | SMD Crystal | Surface mount crystal units | | XTAL | Through-hole Crystal | Leaded crystal units (HC-49, etc.) | ### Oscillator Prefixes | Prefix | Component Type | Description | |--------|----------------|-------------| | IQXO | Standard Oscillator | Basic clock oscillator (XO) | | IQXO-H | High Frequency Oscillator | Higher frequency range XO | | IQXO-L | Low Power Oscillator | Reduced power consumption XO | | IQTX | TCXO | Temperature Compensated Crystal Oscillator | | IQTX-H | High Stability TCXO | Tighter frequency stability | | IQTX-L | Low Power TCXO | Reduced power consumption | | IQVCXO | VCXO | Voltage Controlled Crystal Oscillator | | IQVCXO-H | High Stability VCXO | Tighter frequency stability | | IQOCXO | OCXO | Oven Controlled Crystal Oscillator | | IQOCXO-H | High Stability OCXO | Ultra-stable (PPB range) | ### Module and Filter Prefixes | Prefix | Component Type | Description | |--------|----------------|-------------| | IQCM | Clock Module | Integrated clock/timing module | | IQRTC | RTC Module | Real-Time Clock module | | IQXF | Crystal Filter | Crystal-based bandpass filter | | IQSPF | SAW Filter | Surface Acoustic Wave filter | | IQRB | Resonator Bandpass | Resonator-based bandpass filter | --- ## Supported Component Types The IQDHandler supports these component types: | ComponentType | Description | |---------------|-------------| | CRYSTAL | Base crystal type | | CRYSTAL_IQD | IQD-specific crystal | | OSCILLATOR | Base oscillator type | | OSCILLATOR_IQD | IQD standard oscillator | | OSCILLATOR_TCXO_IQD | IQD TCXO | | OSCILLATOR_VCXO_IQD | IQD VCXO | | OSCILLATOR_OCXO_IQD | IQD OCXO | | CRYSTAL_FILTER_IQD | IQD crystal filter | | RTC_MODULE_IQD | IQD RTC module | --- ## Handler Implementation Notes ### Package Code Extraction ```java // For crystals (CFPX, XTALS), size code is 3 digits after dash // CFPX-032-16.000MHz → dashIndex=4, extract positions 5-7 → "032" int dashIndex = upperMpn.indexOf('-'); if (dashIndex > 0 && dashIndex + 4 <= upperMpn.length()) { String sizeCode = upperMpn.substring(dashIndex + 1, dashIndex + 4); // Map to readable format } // For oscillators (IQXO, IQTX, etc.), size code is 2 digits // Split by dash, take first 2 chars of second part // IQXO-32-16.000MHz → parts[1]="32..." → pkgCode="32" String[] parts = upperMpn.split("-"); if (parts.length >= 2) { String pkgCode = parts[1].substring(0, 2); // Map to readable format } ``` ### Series Extraction ```java // Series extraction uses prefix matching with variant detection // More specific variants (H, L) checked before base prefix if (upperMpn.startsWith("IQXO")) { if (upperMpn.startsWith("IQXO-H")) return "High Frequency Oscillator"; if (upperMpn.startsWith("IQXO-L")) return "Low Power Oscillator"; return "Standard Oscillator"; // Base case last } if (upperMpn.startsWith("IQTX")) { if (upperMpn.startsWith("IQTX-H")) return "High Stability TCXO"; if (upperMpn.startsWith("IQTX-L")) return "Low Power TCXO"; return "Standard TCXO"; } ``` ### Replacement Compatibility Logic ```java // IQDHandler implements sophisticated replacement logic: // 1. Same series required (or compatible upgrade) // 2. Same package size required // 3. Same frequency required // 4. Better or equal stability allowed // Compatible upgrades: // - High Stability can replace Standard (e.g., IQTX-H → IQTX) // - Low Power variants may be compatible with Standard // Stability comparison: // Lower PPM value = better stability // A 0.5 PPM part can replace a 2.5 PPM part ``` --- ## Stability Grades Frequency stability is a key specification for timing products: | Grade | Typical PPM | Application | |-------|-------------|-------------| | Standard | +/- 20-100 | General purpose | | Medium | +/- 2.5-10 | Precision timing | | High | +/- 0.5-2.5 | High accuracy | | Ultra | +/- 0.1-0.5 | Precision instruments | | OCXO | PPB range | Ultra-stable references | --- ## Common Frequency Values ### Standard Crystal Frequencies | Frequency | Common Application | |-----------|-------------------| | 32.768 kHz | RTC, watch crystals | | 4.000 MHz | General purpose | | 8.000 MHz | Microcontrollers | | 12.000 MHz | USB (12 Mbps) | | 16.000 MHz | Microcontrollers | | 20.000 MHz | General purpose | | 25.000 MHz | Ethernet PHY | | 48.000 MHz | USB (480 Mbps) | ### Standard Oscillator Frequencies | Frequency | Common Application | |-----------|-------------------| | 1.000 MHz | Low frequency reference | | 10.000 MHz | Reference standard | | 12.288 MHz | Audio (48 kHz * 256) | | 19.200 MHz | Telecom reference | | 24.576 MHz | Audio (96 kHz * 256) | | 100.000 MHz | High-speed systems | --- ## Related Files - Handler: `manufacturers/IQDHandler.java` - Component types: `CRYSTAL`, `CRYSTAL_IQD`, `OSCILLATOR`, `OSCILLATOR_IQD`, `OSCILLATOR_TCXO_IQD`, `OSCILLATOR_VCXO_IQD`, `OSCILLATOR_OCXO_IQD`, `CRYSTAL_FILTER_IQD`, `RTC_MODULE_IQD` --- ## Known Issues (Technical Debt) The IQDHandler has these documented issues: 1. **HashSet in getSupportedTypes()** - Should use `Set.of()` for immutability 2. **Missing IC type** - Handler registers patterns for `ComponentType.IC` (clock modules, RTC, filters) but does not include `IC` in `getSupportedTypes()` 3. **No handler tests** - Listed in handlers without tests in CLAUDE.md --- ## Learnings & Quirks - **Variant modifiers (H, L)**: Appear between prefix and size code (e.g., IQXO-H32 vs IQXO-32). The handler correctly checks for these before falling back to base series. - **Package extraction differs by product type**: Crystals use 3-digit codes after dash, oscillators use 2-digit codes. The handler splits logic based on prefix. - **Replacement compatibility**: IQD handler includes sophisticated replacement logic that considers stability grades - better stability parts can replace worse ones but not vice versa. - **PPM vs PPB**: OCXOs use parts-per-billion (PPB) while other products use parts-per-million (PPM). Both are extracted as stability grades. - **IQTX vs IQXO**: Easy to confuse - IQTX is TCXO (Temperature Compensated), IQXO is standard XO (crystal oscillator). - **Missing IC in getSupportedTypes()**: Clock modules (IQCM), RTC modules (IQRTC), and filters (IQXF, IQSPF, IQRB) are registered under `ComponentType.IC` but IC is not in the supported types set.