After first dipping my toes into FPGAs at ChipHack in Cambridge, I wanted to try doing something a bit more involved. BaseBandBoard (BBB) was my first real project involving an FPGA.
It uses a DE0-Nano FPGA board (Cyclone IV with some SDRAM and IO connectors) with a custom analogue board containing a dual-channel ADC and single DAC, and a custom display board with a 4.3” touchscreen LCD.
The goal was to replicate an undergraduate lab investigating pulse shaping and eye diagrams; that lab used several pieces of test gear and a custom project box containing various digital electronics. Students generated a pulse train of random data, fed it through an analogue pulse-shaping filter, added some analogue random noise with variable amplitude, and fed the result into a decoder which counted errors against a resynchronised PRNG.
In the FPGA implementation, the pulse shaping and random noise is done entirely digitally, but the digital signals are fed out of the DAC for investigation on an oscilloscope or for further analogue mapipulation before being fed back into the ADC. The newly-digitised signals are then decoded and the receiver bit error rate is computed.
The touchscreen allows the user to control the pulse shaping and noise parameters and control the decoding time instant and slicer threshold level, and then see the resulting bit error rate.