Watermeyer, Kalen. Design of a Hardware Platform for Narrow-band Software Defined Radio applications. MSc Dissertation. Department of Electrical Engineering, University of Cape Town, 2007.
This thesis describes the design and implementation of a hardware platform for Software Defined Radio (SDR) applications.
The Software Defined Radio Forum describes Software Defined Radio as:
a collection of hardware and software technologies that enable reconfigurable system architectures for wireless networks and user terminals. SDR provides an efficient and comparatively inexpensive solution to the problem of building multi-mode, multi-band, multifunctional wireless devices that can be adapted, upgraded or enhanced by using software upgrades. 
SDR applications perform demodulation, modulation and other signal-processing of a digitised source signal using software modules running on a PC or other capable device.
SDR systems typically consist of a transceiver, with a wide-band ADC for signal reception and a DAC for signal generation implemented in hardware, with signal-processing software running on a host PC. In many cases pre- or post-processing of the data occurs in FPGA’s or other
This project was aimed at creating an ADC-based system that could capture samples for processing in software on a host PC, while providing a framework for functionality enhancements through system extensions. The system was designed to integrate with the existing GnuRadio open-source SDR toolkit, with the hardware design was based on the existing USRP system .
In the context of the Radar and Remote Sensing Research Group, this system can be implemented in sample capture applications, as well as software RADAR systems through system extension.
The USRP system was developed by the Free Software Foundation GnuRadio project to complement their open-source SDR software. It is a single board housing a large FPGA which accepts input signals from add-on ADC daughter-boards , and feeds output signals to DAC boards. The USB data transfer to and from the host is carried by a Cypress FX2 microcontroller.
This system is split into two modules; an ADC board responsible for capturing analogue signals, and a USB board which transfers the data to the host PC via USB, also using an FX2.
The ADC module implements a 12-bit 65MSPS dual-channel ADC  to allow for wide-band sampling of analogue inputs. The sample stream is transported to the USB module via LVDS, where it is buffered before transfer to the host PC.
FPGAs are housed on each of the modules, which provide the logic for buffering of data and flow control. Firmware developed for the FPGAs handles the data flow and debug signals, while the FX2 firmware handles the USB transfers to the host PC.
The FX2 firmware used in this project is a modified version of the open-source C code, as are the low-level libraries which interface with the application-level GnuRadio software. As the GnuRadio toolkit is Linux-based, this system was developed on an Ubuntu 6.06 Linux platform.
The open nature of the Linux development platform meant that existing code (both firmware and software) could be readily re-used and modified, which sped up the development cycle considerably. Several proprietry applications and sources are available for Microsoft Windows
development using the Cypress FX2 microcontroller, but these were found to have lower levels of support and documentation, which would have led to a longer development cycle (also considering that a large number of freely-available SDR modules have already been developed by GnuRadio).
The system was assembled and tested. Due to time constraints however, several limitations were imposed on the effective system performance, namely; the sample resolution was reduced to 8 bits to ensure data frame integrity, and the sample rate was reduced considerably to ensure that no discontinuities were introduced in the captured sample streams.
These two limitations introduced compromises in the overall system performance, but recommendations were presented to recover the losses.