Text & images (c) 2016-2023 XDRGuy LLC - All rights reserved.
HD Radio's Extended Spectral Content
Analog FM frequency response is limited to 15 KHz. HD Radio can extend out to 20 KHz. If the station is paying attention to audio quality they can make full use of this capability of HD Radio. But some stations apparently run the audio signal through a brick wall filter to cut off everything above 15 KHz, as if it was analog FM. Other stations use the entire audio spectrum up to 20 KHz. See the spectral analysis plots below.
Above: Spectral analysis of music on KRVM-HD1. Note the audio content extends out to 20 KHz.
Below: Spectral analysis of music on KLCC-HD1*. Note the audio content does not extend beyond 15 KHz. *KLCC dropped HD service a few years ago.
HD Radio With Different Digital to Analog Conversion (EXPERIMENTAL ONLY, Not For Sale)
Normally the received audio, whether from analog or digital HD stations, is routed through the XDR's DSP/DAC module.
The tuner's HD module sends the received digital audio stream to the DSP module via an I²S bus. It's possible to tap into the I²S bus and use a different digital processor, completely bypassing the XDR's native digital to analog conversion.
I've successfully implemented a couple of I²S converter boards in the XDR, based on the ESS SABRE ES9023 (apparently discontinued as of 6/17), and the TI/Burr Brown PCM5102A DAC. The HD digital audio stream is coupled directly to the alternate D-to-A converter board with oversampling & jitter elimination, with its own analog Line Out. This "HD Only" analog Line Out is completely separate from the XDR's native Line Out and is only active if the XDR is successfully tuned to an HD station.
The output of the experimental DAC is muted while the XDR is tuned to analog, or while it’s trying to acquire an HD lock. The DAC’s audio output is active only when the XDR has a lock on an HD signal.
The XDR's regular Line Out continues to function normally at all times and still benefits from all the other upgrades.
This HD-only mod works great, sounds great, and doesn't interfere with the XDR's normal Line Out. It lets you experience digital HD Radio processed through a completely different path.
S/PDIF Digital Output for HD Radio only (EXPERIMENTAL ONLY, Not For Sale)
Why no digital output? Getting the digital HD data to a TOSLINK or S/PDIF output from the XDR is problematic because the XDR doesn't provide the needed MCLK master clock signal for the I²S bus. And the reason why I'm not doing a TOSLINK or S/PDIF output for analog stations is the analog programs have already been converted to digital by the XDR's DSP module, then converted back to analog. It makes little sense to me to take that analog signal and convert it back to digital again. So I've been focused on the HD Radio digital stream, which I can grab "raw" and potentially process outside the XDR.
UPDATE 7/6/16: The S/PDIF digital output for HD Radio kind of works but it's not 100%. There's an intermittent "click" noise in the left channel, especially during silence. I've been pulling my hair out trying to figure this out. I'm sure it's an incompatibility with the XDR's implementation of the I²S bus (which lacks a master clock), and the WM8804 chip that converts I²S to S/PDIF. I've tried everything I can think of to get it working 100% without success. And even without the "clicking" it doesn't really sound particularly good.
UPDATE 10/28/21: It's been five years since I worked on tapping into the pure HD Radio digital signal on the XDR's I²S bus and converting it to S/PDIF for processing by an outboard DAC. I decided it's time to revisit this. Long story short is it works now! I suspect the old A/V receiver I used for testing it in 2016 (purchased cheap at Goodwill) had a bad S/PDIF input or something. Trying it now with a new "modern" receiver with an S/PDIF input, it works fine. I've also tried running the S/PDIF HD signal into a Schiit MODI 3+ and it works. As a bonus it even sounds good, especially through the Schiit.
What's interesting is that for bench testing I'm using an external asynchronous source for MCLK (async in the sense it's not synchronized with the other I²S clock and data signals). Yet it works with no audible artifacts. A more correct approach to generating a synchronized MCLK would be to take BCLK and run it through a clock multiplier. MCLK needs to be 8x BCLK. I've ordered some sample PLL clock multiplier chips and will be trying that out soon. UPDATE: That didn't work.
The "experimental" stuff described here is still not available for sale.