gnuradio / gr-dpd

Digital Pre-Distortion implementation in GNU Radio
https://grdpd.wordpress.com
GNU General Public License v3.0
39 stars 16 forks source link

Unsynchronised passing of weight-vector/ taps from postdistorter to predistorter #8

Open alekhgupta1441 opened 4 years ago

alekhgupta1441 commented 4 years ago

Currently, gr-dpd uses message parsing for passsing the trained 'taps' from postdistorter to predistorter after each iteration but as message parsing is highly asynchronous and has no alignment with stream data, it is causing it to reach the predistorter after huge time gap and not simultaneously along the immediate next stream data as expected. To avoid this taps can be passed on as stream data as well BUT GNU Radio flowgraphs donot support loops in flowgraphs so this cannot be done for now.

So, now this is a serious issue to find a way to perform learning in a synchronous manner keeping in view the fact that loops are not allowed in GNU Radio and message parsing can form loops but is totally asynchronous process irrespective of stream flow.

Below is the flowgraph which clearly shows the stream flow and loop which is forming involving message 'taps'.

Screenshot

Any kind of suggestions regarding this issue will be highly appreciated.

alekhgupta1441 commented 4 years ago

A potential cause of Issue #6

alekhgupta1441 commented 4 years ago

At this stage when GSoC has almost came to an end, after discussions with some mentors and some other experienced people I came up with commit@afdb98a that has helped to achieve some sort of synchronisation by using a 'flag' output and input port in predistorter and postdistorter respectively, to keep track of whether 'taps' have been updated in predistorter or not and accordingly perform weights estimation. But since message passing is an uncertain and unreliable process w.r.t. time the performance improvements these changes bring are uncertain too.

                          Screenshot of RLS postdistorter test run for an Input data file

RLS_3

Although above result looks decent to a little extent, there is catch here that this result is achieved for PA model parameters (1, 1, 2, 2, 2) and using DPD parameters (3, 3, 1, 1, 1). So this has been achieved by just experimenting with model parameter values. While ideally for same model parameters there should be decent or desirable predistortion effect. So, synchronisation of passing 'taps' with stream or a possibly quite different approach to achieve synchronised estimation and predistortion is required.