NBW-SDR: NBitWonder software defined radio

NBitWonder writes:

Over at NBitWonder, we have been working to develop a software-defined radio for a few months. Last weekend, the radio received its very first signals. There is a short writeup and demonstration video at our website.

This is quite similar to Jeri Ellsworth’s design in that is uses a Tayloe detector and some DSP to recover a signal. This design, though, achieves frequency agility using a DS1085 programmable oscillator module — it can be set from 8kHz to 133MHz in 10kHz steps. A CPLD performs clock division, level conversion, and quadrature clock generation, and feeds a high-speed bus multiplexer that actually does the demodulation. After some simple subtraction performed by a high-bandwidth op-amp, the in-phase and quadrature signals are passed to a PIC32 via a low-pass anti-aliasing filter. Inside the PIC, an FFT is used to filter the signal to any of several possible bandwidths, then an IFFT is taken and demodulation is performed in the time domain. Finally, an audio signal is reconstructed via PWM, low-pass filtered, and sent to the output.

Modes of operation are set by firmware, and are slated to include AM, USB/LSB, FM, and an unprocessed IQ output. Check out NBitWonder’s Github page and their project forum for more info and code.

Via the contact form.

Join the Conversation


  1. Thanks!

    CW shouldn’t be that hard to add. I’ll have to look into it.

    I’d also like to add that in this version, we actually use an Si570 for the oscillator. It has better frequency and phase stability, and it about as easy to use as the DS1085 would have been.

  2. Oh my, another person blindly diving into direct-conversion SDR without understanding what’s really needed for decent performance. First, Jeri Ellsworth’s example is an exercise in what not to do. Second, the choice of the DS1085 points to a fundamental lack of understanding about RF systems engineering. The stability and (most importantly) phase noise of the DS1085 makes this part totally inappropriate for any DC SDR design unless actual performance doesn’t matter at all. Take a look at something like Linear’s Si570 oscillator for an example of good phase noise/jitter performance. Also consider one of ADI’s DDS parts, but keep an eye out for spurious products and pay attention to the output filter design. Remember, you really should divide by four to obtain a truly symmetrical I/Q source. Third, for any form of near real-time small signal work, the dsPIC’s A/D converters have nether the bit-depth nor the dynamic range needed for decent performance. 16 (better 24) bit A/D’s with at least 100dB dynamic range is where you should be looking. And we haven’t even touched upon the software yet…

    1. @Drone: I am no RF expert (or an anything-else-expert, for that matter). I build things and make mistakes to learn more about things. This is one such attempt.

      In the prototype in the video (documented in later forum posts and our github repo), we actually do use an Si570, and a 4x divider is implemented in the CPLD. A forum participant pointed out the error of our ways with the internal ADC, so an external 24-bit audio codec was used in the end. It seems some of this was missed in the post above. The results aren’t perfect, but again, that’s how I learn.

      I’d be interested to hear what you have to say about the software.

      1. Hi Ben,

        As for the software…

        I suggest you do not stumble around with the software learning through mistakes. Stand on the excellent work of others and start with existing SDR software – most of which is open-source but designed to run on IAx86 architecture (PC’s). Personally, if you’re just starting out, I suggest you first install GnuRadio on a PC in Linux or xBSD complete with the graphical interface and work with the software architecture there. when you are close to satisfied, port the source to your platform. That’s when problems start cropping up though. For example, you might have issues with the A/D and sound system on your platform.

        Work with the PC’s sound card first. Get a decent PC sound card too; the M-Audio Delta-44 card is a mainstay for SDR work. For USB I’ve heard the Creative E-MU 0204 works well, but I don’t know how you’ll fare in xBSD/Linux with that box. Laptops and Netbooks typically have lousy sound hardware, many don’t even have stereo input much less line-in jacks. A good PC sound card will help you to compare how your stand-alone system is working.

        Just from memory, I list some SDR packages below. I’m sure there are other perhaps newer projects out there. Ask around on the various SDR Yahoo and Google/NNTP Groups.

        A few more words on the hardware… Be sure to study in-detail Youngblood’s dated but still pertinent four-part article “Software Defined Radio for the Masses”. Understand completely that the type of direct-conversion radio you’re dealing with really must have a good antenna match for decent performance. Antenna mismatches will affect several key operating parameters with this type of radio. I provide a link where you can download Youngbloods’s series below.

        Also, if you’re working at HF through VHF (and above), understand how noise increases as you go down in frequency from VHF to HF to MF. At mid-low HF through MF you are going to want to knock your down-conversion system gain down, you can do it closer to the antenna at these frequencies because system noise figure is less important. One sign of a good design is proper gain and noise distribution for the particular frequencies covered.

        Finally, I suggest you use good quality low noise differential or instrumentation amplifier stages. Differential stages help mitigate the affect of antenna perturbations on performance compared with single-ended designs.

        I hate to flog a dead horse, but… There’s really no substitute for doing proper research before firing up a compiler and/or a soldering iron – just my opinion though. How you use your valuable time is up to you.

        Please keep us posted how the project goes… Regards, David

        * GnuRadio


        * Linrad


        * SDR-Shell for DttSP


        * DttSP


        * Quisk


        * A Software Defined Radio for the Masses by Youngblood, Parts-1 through 4


  3. Drone, doing the puzzle is often a lot more fun than skipping to the back of the book and reading the answer key. I’m usually not interested in my finished projects once they are complete they’ll either sit on the shelf or I’ll scavenge the parts for the next adventure. Oh, and thanks for the links.

Leave a comment

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.