After the completion of the transmitter HDL in the last week, it was important to understand whether the delta-sigma modulated output was good enough to drive the transducer without additional filtering. Using a simple second-order circuit model of the transducer in MATLAB, we confirmed that the output was fairly low-pass, and therefore adequate for transmission. Since the transducer will be driven using an appropriate transformer circuit, rather than directly from the FPGA output, the actual signal at its input should already be filtered, preventing mechanical distortion and harmonics.

Once it was determined that the transmitter was working properly, we decided to build a Simulink model of the receiver. While the transmitter has a fairly standard architecture, the receiver has a lot of room for fine-tuning, and so simulating it before beginning the HDL implementation is critical to validate the design assumptions.

The model takes as input the signal produced by the behavioural simulation of the transmitter, filtered through the transmitting transducer model and a very roughly simulated channel, with AWGN and Doppler effect but no multipath. Since neither the noise model nor the lack of multipath are realistic, one of the important steps next week will be producing real underwater data from the transmitter to use in the receiver model.

The processed signal then enters the receiver model. This model does not yet include the limited reception bandwidth, since a model of the transducer for reception is not available. The receiver architecture is based on a short-time DFT (as mentioned on the Week #1 post), using a polyphase decimation filter to eliminate out-of-band noise and reduce the sampling frequency.

The results above (top: symbol decision; bottom: spectrogram) were obtained using a very simple decider, which simply picks the symbol which is nearest to the dominant frequency peak. Some experiments with the channel delay demonstrate the importance of accurate symbol synchronisation and Doppler tracking, both of which will be added over the next week.

Finally, given the importance of properly tuning the system, I have implemented a MATLAB function to search the solution space of the various parameters, subject to a number of constraints derived from the required performance targets, as well as the hardware limitations. It became apparent that, while several BFSK solutions exist, solutions for larger constellations will be difficult to find, and we may have to loosen some of the constraints to obtain them.