17 Jul 2012 23:58
fixed point fdmdv tx
Hello Gullik (and list), Background: Gullik is working on a fixed point port of the fdmdv tx side. I thought this might be useful for others. For fixed point work in general we use 16 bits for inputs to multiplier data and 32 bits for results. For a fixed point port of the tx filter loop: acc += M * tx_filter_memory[c][j].real * gt_alpha5_root[k]; Take it step by step. At each step test the BER of the modem at the operating SNR of around 7dB using the Octave version of the demod. Plot the float tx output and fixed point on top of each other to spot any gross errors. Use version control to back up if something breaks. 1/ Simulate fixed point quantisation of gt_alpha5_root[k], with something like: short gt_alpha5_root_fixed = (M*gt_alpha5_root[k])<< S + 0.5; acc += tx_filter_memory[c][j].real * gt_alpha5_root_fixed; acc >>= S + (1<<(S-1)); Experiment with S so that gt_alpha5_root_fixed doesn't overflow. The 0.5 and (1<<(S-1)) (half a LSB) are for rounding. 2/ You can then check if acc is overflowing by clipping it to 32 bit limits acc_max and acc_min:(Continue reading)
RSS Feed