1 A-Board / Prj123
The A-board is a 12 bit, <3 MSPS ADC board with anti-aliasing filter. (Sometimes this is also referred to as a Prj123 board). The sampling rate is configurable to common Ethernet SDR frequencies to support use with several SDR software packages. Two stages of configurable gain are provided. A 10.7MHz ceramic filter is used for anti-aliasing while provisions are made on the board for a user defined 3rd order bandpass LC filter. Serial data is pumped out of the ADC using the BBB PRU. Conversion from real to complex samples is done within the BBB ARM processor. The BBB 100MB/s Ethernet is used to transmit samples and for control of the board set.
The basic top level architecture is shown below.
1.1.1 Power and Misc
The board uses the BBB system 5V input with a single low noise 3.3V regulator. An I2C eeprom is include to store the device tree for the cape and allow automatic probing of the board. Due to space, fixed SMT resistors are used for board identification rather than a DIP switch. Two 2x5 stacking headers are provided to allow mixer/amplifier/synthesizer/filter boards to be stacked on top of this board. This allows those boards to recoup BBB cape space which would be used by Ethernet connector cut out and the P8/P9 connectors running the length of the board.
There are two anti-aliasing filters on the PCB. The first is a 10.7MHz ceramic filter with 330kHz 3dB bandwidth. It is input and output matched to 300 ohms (input via C101 and L101, output at first stage amplifier input). The second filter is a 3rd order bandpass LC filter which can be configured by the user. The ADC uses sub-sampling or Nyquist wrapping to sample a narrow bandwidth, determined by the sampling rate, of a higher frequency IF.
Two stages of amplification are provided. The second stage is primarily to buffer the ADC but does provide gain. Each stage is implemented using a high bandwidth OpAmp (U109, U111). Two gains are dynamically configured via GPIOs to a MUX selecting the feedback resistor on the inverting input. Each OpAmp uses an independent virtual ground and is AC coupled to accommodate independence and modification. In the case of lower desired gains (e.g. for large signal instrumentation applications), compensated OpAmps should be used.
The ADC used is a 3MSPS single ended input with a 55MHz half power bandwidth explicitly chosen for sub-sampling application and cost. It uses a standard serial interface with the sample clock being the chip select. (the BBB SPI interface was attempted, however, it is not suitable for this purpose given the jitter on the serial CS even in FIFO mode).
1.1.5 Sample Clock Generation
One of the more subtle aspects of the A-board is low phase noise sample clock generation. Earlier versions of the board used the BBB PWM output as the sample clock. While this produced reasonable phase noise, it is not sufficient for most RF work (It is quite good considering the BBB intended application, indeed, A-boards can be modified to use this and achieve a wide range highly configurable sample clock. Sample clocks in excess of 2MSPS have been used). The summary of sample clock generation is that a 20MHz TCXO is divided by 12, 16, or 4. The clock divider value is set via GPIOs. This clock is provided to the ADC as well as the PRU (to be used in triggering serial clocking out of the data). The divided 50% duty cycle clock is AND’ed with a PRU output to generate the actual ADC sample clock. This allows the PRU to “hold” the next sample clock edge to achieve different sampling rates. Given the PRU’s fixed instruction cycle of 5nS, good control of lower sample rates is achieved. (the falling edge drives the sampling process and has the low phase noise of the divided TCXO).
1.1.1 PRUs and CPU
Processor performance is another subtle aspect of the design. PRU0 controls the serial transfer of sample words from the ADC. These are placed in SRAM where PRU1 extracts them and stores to DRAM where the processor can access them. For higher sampling rates it is necessary to use the second PRU as the DRAM interface rather than having the first PRU deal with variable and large memory latency and the ADC serial interface. The ARM processor extracts the real samples from DRAM converts them to complex samples via Fs/4 mixing and low pass FIR filters (Hilbert transform logical operation). This is done using 32 bit signed integers to offset the ARM floating point performance (software emulation). IP packets of complex samples are then sent to the network.
There are three primary components in the software used. Those are the BBB low level software, BBB application servers, and the PC applications which interface to the BBB.
1.2.1 BBB Low Level Software
The first utility is pructl. This tool loads the images for the PRUs and provides debug and diagnostic information regarding the state of the SRAM and DRAM sample fifos. The second set of utilities are scripts to set the gains of the IF amplifiers and select the clock divider value. All of these are user space utilities written in C/C++/Bash scripts. The only required kernel module are the pruss driver for the PRU, and GPIO driver, both of which come configured within the default BBB kernels. The HDMI portion of the device tree must be configured out of BBB to use some of the io pins. This involves a one-time configuration of the kernel boot arguments and is well documented on the BBB wiki.
1.2.2 Application Servers
The application servers are user space Linux processes and required no additional kernel modules. They are written in C/C++ and require no additional libraries or software packages beyond those included in the default BBB Linux distribution. A single process uses multiple threads to provide an ASCP (amateur station control protocol) interface, a human usable command line interface (accessed via telnet’ing into the process from any host on the network), and an ADC test and evaluation tool interface.
1.2.3 PC Applications
The PC applications fall into two categories: open source / publically available SDR packages (i.e. CuteSDR, SDR.com) and small custom java applications used for test and specialized instrumentation purposes.