I was looking at some Stereo FM demodulators on the Internet, and I can't understand the use of the complex to real block for demodulation of the L-R signal (DSBSC-AM) which can be seen in different projects, for example:
- https://github.com/gnuradio/gnuradio/blob/master/gr-analog/python/analog/wfm_rcv_pll.py#L145-L147
- https://github.com/vsergeev/luaradio/blob/master/radio/composites/wbfmstereodemodulator.lua#L36-L39
My (possibly flawed) understanding is that complex to real can be used here only because in both cases there is a PLL which accurately tracks the phase. Is this correct? Because I also explored the gr-rds project, and I can't understand how it works without a PLL block. There were PLL blocks until this commit but they were removed. Another example is the luaradio SSB demodulator which again uses complex to real without some type of carrier recovery.
So, my question is: what is the right way to demodulate a DSBSC-AM signal (with and without a pilot tone) and how is the complex to real (not complex to magnitude) block able to do it, even without a PLL in the rds_rx flowgraph?