The week begins with investigation for blocks to be added to the gr-dpd OOT module to get the RLS algorithm for Digital Pre-Distortion demonstrated by running a flowgraph involving the blocks for performing Adaptive predistortion based on Fast RLS Algorithm.
All the blocks which have been figured out and added to the OOT module for the demonstration of DPD Algorithm are:
- stream_to_message : This block is used to convert a regular stream into a kind of stream of messages, published through output message port – samples.
- stream_to_gmp_vector : This block is used to convert a single data stream into stream of vectors of size as : [ (K_a * L_a) + (K_b*M_b*L_b)] ; where K_a, L_a, K_b, M_b and L_b are parameters of the GMP model considered for DPD Algorithm.
- predistorter_training : This block is used to apply the predistortion on the input signal by multiplying the input signal regression row vector with the current weights vector (taps) which are passes on through message parsing.
- RLS_postdistorter : This block is used to update or estimate the weights or taps or coeffficients of GMP model PA (Power Amplifier) using RLS based Algorithm discussed earlier.
- gain_phase_calibrate : This block is used to get the PA output signal with its gain-phase/part removed to calibrate it with the PA_input to fed it as an input stream along with predistorted PA_input messages to calculate the updated weights vector.
After addition of the above blocks, there comes the time to get them tested with the help of flowgraph to debug the blocks and improve the performance.
I have added a flowgraph Test.grc in examples folder.
Further tasks proposed are:
- Thorough testing of the DPD blocks to ensure their working and prevent crashing for any corner cases.
- Working towards the debuging and improvement of RLS algorithm implemented in form of OOT blocks.
Any kind of suggestions or improvements to this OOT module gr-dpd and progression of its development are highly appreciated and welcomed.