An S/PDIF Sound Card Using The PCM2906

When S/PDIF became available in the Teensy Audio Library I thought this might be the solution to ground loop problems I’d been having when interfacing projects to my PC. However, I quickly realized I didn’t have any sound cards with an S/PDIF interface.

In the belief that I’d rather build than buy I decided to update one of my previous projects, a PCM2904 based sound card, to include an S/PDIF interface. The update was a cinch because TI has a pin-for-pin replacement for the PCM2904 (the PCM2906) with an S/PDIF interface. All I had to do was replace the audio jacks with fiber-optic transmitter/receivers connected to the appropriate pins.

The resulting schematic and prototype are shown below. (If you’re interested, the boards are available through OSH Park)


SPDIF Sound Card Schematic

SPDIF Sound Card Prototype

There’s not a lot to it. It’s simply the reference circuit from the PCM2906 data sheet with portions I don’t expect to use eliminated.

Testing The Interface

To test the interface I looped the transmitted fiber optic signal back to the receiver. When plugged into my Linux laptop it registered as a Texas Instruments PCM2906C Audio Codec as shown below.

Bus 004 Device 003: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 004: ID 1bcf:2c02 Sunplus Innovation Technology Inc. 
Bus 003 Device 003: ID 413c:3016 Dell Computer Corp. Optical 5-Button Wheel Mouse
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 013: ID 08bb:29c6 Texas Instruments PCM2906C Audio CODEC
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Starting up the PulseAudio Volume Control and playing back a file using VLC, I could see the input and output audio levels varying with the signal from VLC.

If you want to actually hear the looped back audio you can use the PulseAudio loopback module.

  1. Open a terminal and execute the command shown below. The result will be a list of names associated with alsa modules, sources, and sinks.

    pactl list | grep Name:
  2. Look for the alsa analog stereo output to identify the sink. On my system it takes the form alsa_output.pci-0000_00_1b.0.analog-stereo.

  3. Look for the PCM2906 input to identify the source. Ony my system it took the form alsa_input.usb-BurrBrown_from_Texas_Instruments_USB_AUDIO_CODEC-00.analog-stereo.

  4. Open a terminal and execute the command:

    pactl load-module module-loopback source=<source_name> sink=<sink_name>

    where <source_name> and <sink_name> are those identified above. Please note the source and sink names are case sensitive.

You should now hear the looped-back audio through your system speakers.

Advertisements

3 Comments

  1. I apologize this isn’t posted to the appropriate article, but that page doesn’t seem to accept comments.

    The links to Batch PCB for the PCM-2904 Audio Digitizer and Sound Card don’t work, and only take me to their main page. Do you have updated links, or know where I can find finished PCBs for one or both of these? I searched in their Shared Projects, but couldn’t find your boards. I’m very, very interested in building PCM-2904 codecs for my custom analog front-end that I’m building for a project. It’s prototyping now, but it will move to small-scale manufacturing and it would be nice to have finished PCBs to use, as I’m not great at designing PCB layouts.

    Thanks!!

    • joesugar

      Thanks for letting me know about the links. To remedy that I’ve pushed the Eagle files for the PCM2904 sound card and A2D to my GitHub repo. You can pull them down from https://github.com/joesugar/PCM2904_SoundCard_Interface.

      Fair warning though. I’m not a professional PCB designer so I make no guarantees :).

Trackbacks

  1. An S/PDIF Sound Card Using PCM2906 - Electronics-Lab
Tabula Candida

Doodles of a distracted historian

rtl-sdr.com

A blog about RTL-SDR (RTL2832) and cheap software defined radio

DuWayne's Place

Computers, Electronics, and Amateur Radio from KC3XM

QRP HomeBuilder - QRPHB -

Computers, Electronics, and Amateur Radio from KC3XM

Open Emitter

Computers, Electronics, and Amateur Radio from KC3XM

Ripples in the Ether

Emanations from Amateur Radio Station NT7S

m0xpd's 'Shack Nasties'

Computers, Electronics, and Amateur Radio from KC3XM

%d bloggers like this: