A Homebrew SDR Sound card Using The PCM2904
Because of the limitations of sound cards typically integrated into laptop motherboards, part of my setup for playing with Software Defined Radio (SDR) and audio DSP is an M-Audio Transit USB sound card. I chose this card based upon previous experience and recommendations from others but I’ve never been completely satisfied with using it. The quality is good but I was really looking for something smaller that could be easily integrated into other projects. After looking for a while I realized I wasn’t going to find anything commercially so I began looking around to see what I could come up with myself.
My requirements were pretty straightforward:
- At least 16 bit samples, stereo input/output,
- USB interface,
- While not really a requirement, I was more interested in its ability to digitize than playback.
Eventually I ran across the Texas Instrument PCM2904, which is (from their description) a “…single-chip USB stereo audio codec with USB-compliant full-speed protocol controller…” (It was a lot easier to find this once I realized these chips are referred to as audio CODECs.) To put it into English, this is a sound card on a chip, providing stereo input and output with an integrated USB interface. Sampling frequencies of 8, 11.025, 16, 22.05, 32, 44.1, and 48 kHz are supported and on Windows it’s recognized as a generic USB audio device.
Using the reference design from the data sheet it was easy to put together a printed circuit board that fired up the first time (more a tribute to TI’s reference design than my skill in designing PCBs). A screenshot of WinRad using the interface with an Elektor SDR receiver over the Memorial Day weekend is shown below.
I’m not showing a schematic for the board since that’s available in the PCM2904 data sheet. However, once I do some more testing I’ll make the board design available on BatchPCB for those who are interested. I’m especially interested in figuring out what’s up with that mess in the middle of the spectrum. I suspect it comes from the radio rather than the sound card interface since I saw the same thing with the Elektor receiver using the M-Audio Transit board.
Finally, as I use this board I’m realizing there’s a lot here I’m not really taking advantage of. I’m more interested in digitizing the audio than playing it back (I can do playbacks using the integrated sound card) so the circuitry related to playback can go. At that point with some redesign the board’s size is approaching that of a thumb drive, and along with a receiver design like the Softrock it’s looking practical to put together a “receiver on a stick”, which is the ultimate goal of this exercise.
Update: For a simpler example putting this together using stripboard and discrete components go here.