Synchronization and Clock Recovery
As I talked before, we will use 2nd Order Costas Loop as Carrier Wave Recovery (synchronization) and M&M Clock Recovery to recover the Symbol Clock. GNU Radio provides blocks for both algorithms. Let’s start with Costas Loop.
For the parameters we will only need 0.00199 as Loop Bandwidthand 2 as Order. After that we should have our virtual carrier in the base band. Now we only need to synchronize our samples with clock using M&M Clock Recovery.
M&M Clock Recovery
For the M&M Parameters we will use Omega as 4.25339that is basically our symbols per sample rate, or sample_rate / symbol_rate. That is the first symbolrate guess for M&M. For Gain Omega we use (alpha ^ 2) / 4, that is alpha = 3.7e-3, so our Gain Omega be 3.4225e-6, Mu as 0.5, Gain Mu as alpha (or 3.7e-3), Omega Relative Limit as 5e-3.
So you can notice that I called a new parameter alphain M&M that is not a direct parameter of the block. That alpha is a parameter to adjust how much the M&M clock recovery can deviate from the initial guess. You can experiment with your own values, but 3.7e-3 was the best option to me.
Now at the output of M&M we will have our Complex Symbols pumped out with the correct rate. Now we only need to extract our values.