Valori complessi eterodinamici in gnuradio

Dec 01 2020

Ho lavorato per istruirmi su come funzionano SDR e GNU Radio.

Per dimostrare l'eterodina, ho impostato un diagramma di flusso composto da 2 generatori di segnali, un blocco Multiply e un dissipatore di frequenza QT GUI. I generatori sono collegati agli ingressi del blocco Multiply e l'uscita del blocco Multiply è collegata al Freq Sink, in modo da eterodinare i due segnali del generatore.

La frequenza dei generatori è collegata ad uno slider. Un generatore è slider_value, l'altro è slider_value + 2000. Entrambi i generatori emettono una forma d'onda del coseno.

Quando si impostano tutti gli input su float, mentre sposto il cursore ottengo i risultati che mi aspetterei:

Vedo un picco sempre a 2000 Hz: slider_value - slider_value + 2000 = 2000. Cioè, il segnale di differenza.

Vedo un altro picco alla somma delle uscite del generatore: slider_value + slider_value + 2000 = (2 * slider_value) + 2000.

Tuttavia, se cambio tutti gli ingressi e le uscite su complesso, vedo solo un picco che è alla somma dei valori. Non vedo un picco alla differenza, cioè niente a 2000 (tranne quando slider_value = 0).

Qualcuno può spiegarmi perché non vedo il segnale di differenza quando si moltiplicano segnali complessi?

Risposte

6 PhilFrost-W8II Dec 01 2020 at 21:47

Ecco come funziona la matematica dei segnali complessi.

La dimostrazione inizia con la formula di Eulero :

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

Per l'elaborazione del segnale, invece di$\varphi$, di solito si pensa a qualche oscillazione sinusoidale a frequenza angolare$\omega$che varia con il tempo$t$, che possiamo scrivere come:

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

Questo è ciò che emette il blocco del generatore di segnali, quando è in modalità sinusoidale e con un'uscita complessa. Con (1) sopra puoi vedere che sia la parte reale che quella immaginaria sono sinusoidi a frequenza angolare$\omega$, appena sfalsato di 90 gradi in fase.

Quando moltiplichi due di queste complesse sinusoidi insieme, a frequenze$\omega_1$e$\omega_2$, ottieni:

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

che semplifica a

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

che, sempre per (1), è una singola sinusoide complessa in frequenza$\omega_1 + \omega_2$. Non c'è nessun termine di differenza.

Una conseguenza di questa matematica è che$\omega$può essere negativo. Ecco perché in GNU Radio se hai un flusso complesso con una frequenza di campionamento di 48 kHz, questo può rappresentare 96 kHz di larghezza di banda: da -48 kHz a 48 kHz.

I termini di somma e differenza durante l'eterodina di funzioni a valori reali derivano dal fatto che una funzione reale non può rappresentare in modo inequivocabile frequenze positive e negative, ma matematicamente sono ancora lì.

Come? Considera due sinusoidi complesse, a frequenze$\omega$e$-\omega$, riassunti insieme:

$$ 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 le identità trigonometriche:

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

Ora (5) si semplifica in:

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

Ciò significa che quando moltiplichi due sinusoidi reali per eterodinare un segnale:

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

Quindi per (7) e trascurando il fattore 2 (poiché cambia solo l'ampiezza del risultato, e questo non è importante), equivalentemente stai facendo:

$$ (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 $$

Notare la differenza delle frequenze a sinistra e la somma a destra. Ogni gruppo è composto da variazioni positive e negative della stessa frequenza, che per (7) sappiamo semplificare a solo una sinusoide con valori reali. Quindi (9) semplifica ulteriormente (trascurando ancora una volta quel fattore di 2) in:

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

E lì hai la tua comune equazione di eterodina della funzione a valori reali.

Pertanto, qualsiasi funzione con valori reali contiene frequenze sia positive che negative, ma le frequenze negative sono solo uno "specchio" di quelle positive. È a causa di quelle frequenze negative che la demodulazione LSB può "capovolgere" lo spettro , e sono le frequenze negative che causano il termine di differenza durante l'eterodina di funzioni a valori reali.