Valores complexos heterodinâmicos no gnuradio

Dec 01 2020

Eu tenho trabalhado para me educar sobre como o SDR e o GNU Radio funcionam.

Para demonstrar a heterodinação, montei um gráfico de fluxo que consiste em 2 geradores de sinal, um bloco Multiply e QT GUI Frequency Sink. Os geradores são conectados às entradas do bloco Multiply, e a saída do bloco Multiply é conectada ao Freq Sink, a fim de heterodinar os dois sinais do gerador.

A frequência dos geradores está ligada a um controle deslizante. Um gerador é slider_value, o outro é slider_value + 2000. Ambos os geradores estão produzindo uma forma de onda cosseno.

Ao definir todas as entradas para flutuar, conforme movo o controle deslizante, obtenho os resultados que esperaria:

Eu vejo um pico sempre em 2000 Hz: slider_value - slider_value + 2000 = 2000. Ou seja, a diferença de sinal.

Vejo outro pico na soma das saídas do gerador: slider_value + slider_value + 2000 = (2 * slider_value) + 2000.

No entanto, se eu mudar todas as entradas e saídas para complexo, vejo apenas um pico que está na soma dos valores. Não vejo um pico na diferença, ou seja, nada em 2000 (exceto quando slider_value = 0).

Alguém pode me explicar por que não vejo o sinal de diferença ao multiplicar sinais complexos?

Respostas

6 PhilFrost-W8II Dec 01 2020 at 21:47

É assim que funciona a matemática dos sinais complexos.

A prova começa com a fórmula de Euler :

$$ e^{i\varphi} = \cos \varphi + i \sin \varphi \tag 1 $$

Para processamento de sinal, em vez de$\varphi$, geralmente estamos pensando em alguma oscilação senoidal na frequência angular$\omega$que varia com o tempo$t$, que podemos escrever como:

$$ e^{i\omega t} \tag 2 $$

Isto é o que o bloco gerador de sinal emite, quando em modo senoidal e com uma saída complexa. Por (1) acima você pode ver que ambas as partes reais e imaginárias são sinusóides na frequência angular$\omega$, apenas desloca 90 graus em fase.

Quando você multiplica duas dessas senoides complexas juntas, em frequências$\omega_1$e$\omega_2$, você obtém:

$$ e^{i\omega_1 t} e^{i\omega_2 t} \tag 3 $$

que simplifica para

$$ e^{i (\omega_1 + \omega_2) t} \tag 4 $$

que, novamente por (1), é uma senóide complexa única na frequência$\omega_1 + \omega_2$. Não há termo de diferença.

Uma consequência dessa matemática é que$\omega$pode ser negativo. É por isso que no GNU Radio, se você tiver um fluxo complexo com uma taxa de amostragem de, digamos, 48 ​​kHz, isso pode representar 96 kHz de largura de banda: de -48 kHz a 48 kHz.

Os termos de soma e diferença quando heterodinando funções de valor real surgem porque uma função real não pode representar inequivocamente frequências positivas e negativas, mas matematicamente, elas ainda estão lá.

Quão? Considere duas senoides complexas, em frequências$\omega$e$-\omega$, somados:

$$ e^{i\omega t} + e^{-i\omega t} = \cos \omega t + i \sin \omega t + \cos -\omega t + i \sin -\omega t \tag 5 $$

Considerando as identidades trigonométricas:

$$ \cos x = \cos −x \\ \sin x + \sin -x = 0 \tag 6 $$

Agora (5) simplifica para:

$$ e^{i\omega t} + e^{-i\omega t} = 2\cos(\omega t) \tag 7 $$

O que significa que quando você multiplica dois sinusóides reais para heterodino um sinal:

$$ \cos \omega_1 t \times \cos \omega_2 t \tag 8 $$

Então, por (7) e desprezando o fator de 2 (já que só altera a amplitude do resultado, e isso não é importante), equivalentemente você está fazendo:

$$ (e^{i\omega_1 t} + e^{-i\omega_1 t}) (e^{i\omega_2 t} + e^{-i\omega_2 t}) \\ = (e^{-i(\omega_1-\omega_2)} + e^{i(\omega_1-\omega_2)}) + (e^{-i(\omega_1+\omega_2)} + e^{i(\omega_1+\omega_2)}) \tag 9 $$

Observe a diferença das frequências à esquerda e a soma à direita. Cada grupo é composto por variações positivas e negativas da mesma frequência, que por (7) sabemos simplificar para apenas uma senóide de valor real. Então (9) simplifica ainda mais (novamente negligenciando esse fator de 2) para:

$$ \cos((\omega_1-\omega_2) t) + \cos((\omega_1+\omega_2) t) \tag {10} $$

E aí você tem sua equação de heterodinação de função de valor real comum.

Assim, qualquer função de valor real tem frequências positivas e negativas, mas as frequências negativas são apenas um "espelho" das positivas. É por causa dessas frequências negativas que a demodulação LSB pode "inverter" o espectro , e são as frequências negativas que causam o termo de diferença ao heterodinar funções de valor real.