Anche se non è stato il primo a farlo, il software rpitx sembra essere l'implementazione più attiva e matura di quello che i suoi commenti chiamano "un frammento di codice di PE1NNZ". Il trucco è spiegato nell'originale Direct SSB Generation di Guido modulando in frequenza un articolo PLL, ma non capisco bene come funzioni anche l'originale:
L'oscillatore PLL può essere modulato in fase mediante brevi manipolazioni della frequenza configurata. Aumentando temporaneamente la frequenza e quindi ripristinando la sua frequenza originale, la fase verrà spostata verso l'alto, mentre diminuendo temporaneamente la frequenza si ridurrà la fase del segnale. In questo modo l'informazione di fase per la generazione di un segnale SSB può essere applicata al PLL RaspberryPi tramite modulazione di frequenza.
Questo ha quasi senso, ma poi mi perde un po 'più tardi:
Dopo alcuni esperimenti, le informazioni sull'ampiezza possono essere completamente rifiutate [... parla della generazione di una portante non soppressa ...]
Ora suppongo che se hai completato (e drastico) controllo sulla fase di un'onda sinusoidale, è possibile riprodurre qualsiasi altro segnale continuo semplicemente "camminando" avanti e indietro lungo mezzo ciclo di un'onda sinusoidale - fondamentalmente solo ruotando a qualsiasi valore tra -1 e +1 il momento. È questo essenzialmente ciò che riduce anche il trucco di PE1NNZ, o è un modo povero di pensarci?
Ora, anche se sono sulla strada giusta sopra, l'implementazione di rpitx ( codice sorgente) apparentemente ha un ulteriore ostacolo da superare:
Piuttosto che controllare la fase di un'onda sinusoidale, la mia comprensione è che con il Raspberry Pi "hack" la periferica dell'oscillatore utilizzata doveva essere una sorgente dell'orologio. Non sarebbe allora un generatore di onde quadre, ovvero generare (almeno nella sua forma idealizzata) solo i valori di picco -1 e +1 e niente in mezzo?
Certamente posso vedere come i valori discreti potrebbero ancora generare una forma d'onda arbitraria dopo il filtraggio, ad esempio la larghezza dell'impulso o la modulazione della densità dell'impulso. Ma questo non sembra essere il modo in cui né PE1NNZ né i contributori di rpitx sembrano pensarci - altrimenti perché non semplicemente bit-bang qualsiasi pin GPIO invece di usare la periferica di clock!
In qualche modo rpitx sta convertendo dati I / Q arbitrari a segnali RF attraverso una vasta gamma di frequenze (da 130 kHz a 750 MHz) - mi piacerebbe capire la teoria alla base! Posso usare lo stesso trucco per trasformare un ricetrasmettitore FM in una radio "All Mode" iniettando un segnale in ingresso opportunamente trasformato?