I'm working on a DVB-S2 Symbol Timing + Carrier Synchronizer with a focus on 16-APSK | 32-APSK modulation Scheme.
I understand that the first section could be achieved using a Polyphase Clock Sync approach (i.e. as implemented in GNURadio), the second functions is usually done using a Costas loops (i.e. in the simple case of M-PSK modulation scheme)
Moreover, The Costas Loop used for carrier synchronization are designed to only accommodate PSK modulations. As such, a Costas loop used on any of the APSK modulations, may try to lock on to any of the PSK modulations corresponding to any of the constellation rings, each of which is a PSK constellation in itself. For example, for 32-APSK, a Costas loop may try to lock on to the 4 points in the inner ring, the 12 points in the middle ring, or the 16 points in the outer ring. The result will be an overall failure to achieve any reasonable carrier synchronization lock (figure represent the output of a 4-order Costas Loop after the Polyphase Clock Sync Scheme)
I'm interested in understanding the NDA or NDA-DD signal processing scheme behind and if there's some implementation for GNURadio environment.