Valori complessi eterodinamici in gnuradio
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
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.