SATSAGEN v.0.9.3.3

Configurazione a tre dispositivi

Da questa versione si può configurare un terzo dispositivo SDR nella scheda Devices in Settings allo scopo di estendere le funzionalità del VNA di Satsagen:

Impostare Three devices con un click sul corrispondente radio button e nella tab RX 2 device impostare il device SDR che si vuole utilizzare come terzo dispositivo.

Infine nella scheda SNA/VNA Mode selezionare la voce VNA dalla lista Mode e Dual RX-Device dalla lista Dual Port Interface.

Con la suddetta configurazione, il VNA utilizzerà il terzo dispositivo come secondo ricevitore e sarà possibile effettuare misure S11 ed S21 in tempo reale senza dover intervenire manualmente sulle connessioni del DUT.

Le condizioni mandatorie per il corretto funzionamento della configurazione a tre dispositivi sono:

  • Una sorgente comune di clock di riferimento, nello schema CLK Source. In alternativa, la sorgente di clock esterna alimenta il primo device e il riferimento agli altri due è fornito con un collegamento in cascata (daisy chain).
  • I dispositivi 1 e 3 designati al ruolo RX devono avere due canali RX sincronizzati, quindi con l’attuale versione 0.9.3.3 sono compatibili solo i dispositivi Pluto rev. C/D.
  • Il dispositivo 2 designato come TX può anche avere un solo canale TX, sono necessarie però due porte TX+ e TX- o l’aggiunta di uno splitter. Per il dispositivo TX sono compatibili diversi device, tra i quali i Pluto e i sintetizzatori PLL LMX2595, ADF4251 ed altri.
Supporto LMX2595

Collegando una board LMX2595 a Satsagen, l’applicazione è in grado di funzionare come Generatore/sweeper e generatore di tracciamento in operazioni SNA/VNA da circa 100MHz fino e oltre 20GHz con una potenza di output in grado di ottenere una dinamica più che sufficiente per le esigenze di caratterizzazione di filtri e altri DUT.

Con Satsagen e in abbinamento ad un dispositivo di ricezione ADALM-PLUTO in modalità in quinta armonica, si sono ottenuti in laboratorio circa 40dB di dinamica a 24GHz!

Un esempio di realizzazione di Gianni IW1EPY con un ADALM-PLUTO in contenitore metallico, board LMX2595 e Pi Pico.

Per migliorare le misure oltre i 20GHz, occorre utilizzare un filtro in cavità per abbattere la fondamentale del LMX2595 (a frequenze superiori a 15GHz si attiva un duplicatore interno al chip) perché può diventare “importante” e saturare i primi stadi del dispositivo RX. Si può utilizzare come filtro anche due transazioni in guida accoppiate.

Un esempio di filtro con due transizioni N-guida-N

Il supporto delle board con il sintetizzatore PLL LMX2595 è fornito mediante un’interfaccia USB costituita da un microcontrollore Arduino o un Raspberry Pi Pico, vedere la pagina relativa a questa interfaccia multifunzione USBDAALBFER per gli schemi, sorgenti e binari che si possono utilizzare.

Alcuni consigli per l’utilizzo di tale board PLL:

  • L’utilizzo di un Raspberry Pi Pico (e Pi Pico 2) è preferibile in quanto l’input e l’output è funzionante allo stesso livello 3,3V del LMX2595 per cui non servono i componenti per l’adattamento dei livelli di tensione. Inoltre il caricamento del firmware sul Pi Pico può ridursi semplicemente alla copia del file binario fornito qui sul disco del Pi Pico che si attiva tenendo premuto il pulsantino e inserendo la USB al PC, quindi non è necessario attrezzarsi con l’ambiente di compilazione Arduino.
  • Su alcune board LMX2595 provenienti dalla Cina, parte della serigrafia dei pin del connettore è riportata sul retro della scheda:
  • L’alimentazione a 5V della board LMX2595 andrebbe fornita tramite una porta USB dedicata o con un alimentatore separato, in quanto la scheda durante il funzionamento può raggiungere picchi di assorbimento di 400mA ed oltre, non è consigliato quindi alimentarla tramite il pin 5V del microcontrollore che sia un Arduino o un Raspberry.
  • Anche la connessione GND tra la board LMX2595 e il microcontrollore è importante per garantire il corretto funzionamento del SPI, andrebbe eseguita con collegamenti corti e utilizzando preferibilmente più pin GND del microcontroller e “vicini” ai pin dedicati alla SPI.
  • Infine, è altamente consigliato inscatolare in contenitori metallici sia la board LMX2595 sia il dispositivo di ricezione (ADALM-PLUTO).
Avvio in stand-alone dei sintetizzatori PLL

Da questa versione, è presente una funzione in Satsagen che permette di programmare l’interfaccia Arduino o Pico abbinata ad un sintetizzatore PLL supportato, come il LMX2595 appena visto, per l’utilizzo in stand-alone, cioè l’interfaccia e i PLL potranno funzionare come generatori CW ad una frequenza e potenza prefissata semplicemente alimentandoli, anche scollegati da Satsagen. Questa funzionalità per esempio può essere utile se abbiamo necessità di un oscillatore locale provvisorio per i nostri progetti di down o up converter.

Per sfruttare la suddetta funzionalità è sufficiente avviare Satsagen con i dispositivi collegati, far partire il Generator ed impostare frequenza e potenza desiderati, quindi, mantenendo il Generator avviato, fare click sul menu Settings->Device stored settings alla voce Save the Generator state to the device. A questo punto si può spegnere Satsagen e scollegare i dispositivi di interfaccia e PLL dal PC. Successivamente se le interfacce con i PLL saranno alimentati tramite USB o con una alimentazione a parte, si avvieranno automaticamente alla frequenza e potenza di uscita prefissate, senza l’ausilio di Satsagen come pilota.

Per azzerare l’impostazione sull’interfaccia, in modo che non si avvii più automaticamente e smetta di far funzionare i PLL come generatori CW in stand-alone, è sufficiente ripetere la suddetta procedura con il Generator spento: avviare Satsagen con i dispositivi collegati, lasciare spento il Generator e fare click sul menu Settings->Device stored settings alla voce Save the Generator state to the device. A questo punto si può spegnere Satsagen e scollegare i dispositivi di interfaccia e PLL dal PC, l’impostazione di funzionamento in stand-alone è stata azzerata.

Harmonic Extended Filter

Nelle scansioni in SNA con generatore di tracciamento, soprattutto in modalità armonica, abbiamo riscontrato la presenza di “picchi” indesiderati, per esempio intorno ai 24 GHz, dovuti alla concomitanza dell’alta impostazione di RX Gain necessaria e alla presenza di armoniche del oscillatore locale di RX cadenti proprio nell’intervallo di IF.

Da questa versione di Satsagen si può attivare un filtro EF, simile nel funzionamento a quello già presente da tempo nello Spectrum Analyzer, anche per le operazioni TSA/SNA, mediante un click sul pulsante EF presente nel pannello centrale dell’applicazione:

Il filtro EF eliminerà i suddetti artefatti durante la scansione effettuando due letture distinte per ogni punto, spostando di poco la frequenza dell’oscillatore locale RX. Il filtro confronterà la coppia di letture eliminando i segnali presenti alla stessa frequenza solo su una delle due letture, segno inequivocabile di artefatti dovuti al oscillatore locale di RX.

Per contro, l’utilizzo del filtro EF determinerà un leggero rallentamento nelle scansioni SNA.

SATSAGEN v.0.9.3.3 / Supporto GPIB

Supporto GPIB

Mediante l’utilizzo di un adattatore GPIB->USB seriale come il progetto AR488, Satsagen può pilotare dispositivi dotati di interfaccia IEEE488 GPIB/HP-IB.

La versione 0.9.3.3 permette di pilotare generatori sintetizzati e power meter come rispettivamente device TX ed RX di Satsagen.

Alcuni antichi dispositivi sono direttamente supportati e sono elencati tra i dispositivi utilizzabili in Settings->Devices, mentre è possibile configurare mediante due modelli di template altri generatori sintetizzati e power meter conoscendone la sintassi dei comandi.

Perché utilizzare Satsagen per pilotare dispositivi dotati di GPIB/HP-IB?

Oltre a poter agire semplicemente come un comando remoto dei dispositivi, Satsagen può funzionare come anello di congiunzione tra più dispositivi eterogenei per creare strumenti SNA/VNA, per esempio Satsagen diventa uno strumento scalare SNA connettendo un generatore e un power meter entrambi in GPIB/HP-IB, oppure un SNA/VNA abbinando un generatore GPIB/HP-IB e un ricevitore SDR come ADALM-PLUTO.

E’ consentito con Satsagen pilotare più dispositivi GPIB/HP-IB mediante un’interfaccia dedicata per ogni dispositivo o con una singola interfaccia collegata su un BUS GPIB/HP-IB dove sono attestati i dispositivi da controllare con indirizzi diversi, ma non è permesso utilizzare contemporaneamente due dispositivi dello stesso BUS GPIB/HP-IB.

GPIB template

I GPIB template sono file di configurazione in formato .ini che permettono a Satsagen di pilotare dispositivi su bus GPIB.

In Satsagen versione 0.9.3.3 sono previsti due modelli di configurazione, uno per pilotare generatori sintetizzati e un altro per i power meter.

Nella directory Documenti\Satsagen\Settings si trovano due file modelli da copiare e modificare in base alle proprie esigenze per generare i template finali da importare in Satsagen: templatePLL_commented.ini per i generatori sintetizzati e templatePM_commented.ini per i power meter.

Copiare quindi i modelli con un nome a piacimento nella stessa directory Documenti\Satsagen\Settings e modificarli con blocco note.

Template PLL

I template PLL consentono a Satsagen di pilotare generatori sintetizzati su bus GPIB. Hanno una unica sezione chiamata CUSTOMGPIBPLL.

I campi mandatori che occorre personalizzare per poter pilotare i generatori sintetizzati su GPIB sono:

  • DeviceAddr: indirizzo GPIB
  • fGEN: frequenza iniziale in Hz. Potrà essere modificata dal pannello Generatore di Satsagen. Mettere per esempio una frequenza a piacimento nel range del dispositivo.
  • TXAttGEN: impostazione attenuatore iniziale in dBm. Anche questo parametro potrà essere modificato dal pannello del Generatore. Mettere per esempio un valore per ottenere una potenza in output iniziale più bassa possibile.
  • XO_FREQUENCY: frequenza di riferimento in Hz del dispositivo. Buona parte dei dispositivi utilizza una frequenza di riferimento di 10 MHz, quindi compilare con 10000000. Questo parametro verrà utilizzato da Satsagen per calcolare l’offset sulla frequenza da generare in base ad una eventuale correzione da apportare.
  • REFTXPWR: compilare con la potenza massima in output del dispositivo espressa in dBm
  • MINFREQTX: compilare con la minima frequenza in Hz consentita dal dispositivo
  • MAXFREQTX: compilare con la massima frequenza in Hz consentita dal dispositivo
  • MINTXATT: compilare con il valore in dB dell’attenuatore del dispositivo per ottenere la minima potenza in uscita. Per esempio -110
  • MAXTXATT: compilare con il valore in dB dell’attenuatore del dispositivo per ottenere la massima potenza in uscita. Solitamente va posto a 0
  • TXATTNSTEP: compilare con la granularità in dB dell’attenuatore del dispositivo, solitamente 10, 1 o 0.1
  • CmdCWON: comando per attivare l’output, per esempio RF1
  • CmdCWOFF: comando per disattivare l’output, per esempio RF0
  • CmdDefSetPwrOut: comando per impostare il livello in uscita del dispositivo. Per esempio PL seguito da una delle seguenti variabili di Satsagen e terminato solitamente dal suffisso DB: %PWRDBMDEC% verrà sostituita con il valore in dBm compreso di segno e un decimale, %PWRDBMINT% verrò sostituita con il valore intero in dBm compreso di segno o %PWRDBMSIGN% che verrà sostituita solo dal carattere di segno. Un esempio di comando potrà essere PL%PWRDBMDEC%DB, Satsagen quindi invierà al dispositivo per impostare un valore di uscita per esempio di -30dBm il comando PL-30.0DB in questo caso.
  • CmdDefSetVFO: comando per impostare la frequenza in Hz del dispositivo. Per esempio CW seguito da una delle seguenti variabili di Satsagen e terminato solitamente dal suffisso HZ: %FREQGHZDEC% frequenza completa in GHz con decimali, per esempio 10,368200125. %FREQGHZ% frequenza solo in GHz, per esempio 10. %FREQMHZDEC% frequenza completa in MHz con decimali, per esempio 10368,200125. %FREQMHZ% frequenza in MHz senza decimali, per esempio 10368. %FREQMHZONLY% rappresenta solo la porzione in MHz, per esempio 368 se la frequenza completa in GHz è 10,368200125. %FREQKHZDEC% frequenza completa in kHz con decimali, per esempio 10368200,125. %FREQKHZ% frequenza espressa in kHz senza decimali, per esempio 10368200. %FREQKHZONLY% solo la porzione in kHz, per esempio 200. %FREQHZ% frequenza completa espressa in Hz, per esempio 10368200125. %FREQHZONLY% solo la porzione in Hz, per esempio 125. Un esempio di comando potrà essere: CW%FREQHZ%HZ, Satsagen quindi per impostare la frequenza nell’esempio 10368200125 Hz la seguente stringa: CW10368200125HZ.

Un file INI di template minimale per il funzionamento con generatori sintetizzati quindi potrebbe risultare come il seguente:

[CUSTOMGPIBPLL]
DeviceAddr=19
fGEN=2000000000
TXAttGEN=-60
XO_FREQUENCY=10000000
REFTXPWR=12
MINFREQTX=2000000000
MAXFREQTX=18000000000
MINTXATT=-110
MAXTXATT=0
TXATTNSTEP=1
CmdCWON=RF1
CmdCWOFF=RF0
CmdDefSetPwrOut=PL%PWRDBMDEC%DB
CmdDefSetVFO=CW%FREQHZ%HZ
Importazione (ed esportazione) dei template

Per rendere operativa la configurazione template, occorre importare il file appena creato nella memoria di Satsagen.

Dalla scheda Devices in Settings scegliere dalla lista Model la voce GPIB/Custom PLL Synthesizer e importare il file .ini tramite il pulsante Load Template.

Se il controllo della sintassi avrà avuto esito positivo, un messaggio di conferma dell’importazione verrà visualizzato da Satsagen e da quel momento il device GPIB/Custom PLL Synthesizer potrà essere utilizzato con la configurazione appena creata anche nelle sessioni successive.

Una nuova importazione di un altro file tramite il pulsante Load Template provocherà la sovrascrittura in memoria della configurazione.

E’ possibile esportare in un file .ini la configurazione attiva in memoria tramite il pulsante Export Template. E’ anche possibile esportare il contenuto della configurazione in memoria su un file .ini esistente, questo può essere utile per conservare eventuali commenti non presenti in memoria e che andrebbero persi se si esportasse la configurazione in un nuovo file.


Molti altri campi possono essere utilizzati nella configurazione di un template per ottimizzare il funzionamento di controllo del dispositivo GPIB ed aggiungere delle funzionalità.

Campi di controllo stato dispositivo

In ordine di importanza, se il dispositivo lo permette, andrebbero aggiunti i campi che verificano lo stato di lock del PLL del generatore sintetizzato che si vuole controllare. Tale verifica è necessaria se in seguito all’invio dei comandi quali ON e OFF del CW, impostazione della potenza di uscita e della frequenza, il dispositivo non preveda un controllo automatico del lock in conferma dei comandi ricevuti. In tali condizioni, il controllo potrebbe non funzionare correttamente, generando errori o blocchi dell’applicazione durante l’utilizzo.

Solitamente il metodo più comune per la verifica del lock è offerto tramite il test di un bit dello status byte (o word) del dispositivo.

I campi PhaseLockedStatusMask e PhaseLockedStatusBitNegate definiscono come testare il bit dello status per la verifica del lock PLL.

Il campo PhaseLockedStatusMask definisce la maschera per “estrarre” il bit dallo status. Se per esempio, il bit che indica il lock del PLL è quello con peso 16 allora la maschera dovrà essere impostata a PhaseLockedStatusMask=16 (o 0x10 in esadecimale). Se il dispositivo indica che il lock del PLL avviene quando il suddetto bit è a zero, quindi con una logica negata, allora dovremmo impostare PhaseLockedStatusBitNegate=1.

Una metodologia alternativa per testare il lock del PLL offerta da Satsagen nel caso lo status byte (o word) del dispositivo non lo prevede, è l’invio di un comando e l’analisi del risultato a tale comando. Con il campo CmdGetPhaseLocked definiamo il comando da inviare al dispositivo e con RegEx2MatchMessagePhaseLocked definiamo l’espressione regolare da utilizzare per effettuare il match sul risultato quando il lock del PLL avviene. Per esempio, se il dispositivo prevede di testare il lock mediante il comando LOCK? allora impostiamo CmdGetPhaseLocked=LOCK? e se la risposta è semplicemente il numero 1 per il lock e 0 per l’unlock, allora dovremo impostare RegEx2MatchMessagePhaseLocked=[1]. Se CmdGetPhaseLocked è definito, la maschera sullo status byte vista in precedenza non avrà effetto.

E’ possibile inoltre regolare nelle tempistiche il suddetto meccanismo di verifica del lock, sia se si utilizza lo status byte che un comando. Mediante il campo timeoutPhaseLock definiamo il timeout in millisecondi scaduto il quale se i suddetti metodi non hanno riscontrato il lock, la procedura va in errore e l’applicazione si ferma informando l’utente. Con usSleepPhaseLockWaitCycle definiamo l’attesa in microsecondi tra un test e l’altro fino a quando non si riceve una risposta positiva o scade il timeout visto prima. Questo parametro è utile per non sovracaricare inutilmente il dispositivo di richieste.

Nel caso peggiore che il dispositivo non preveda nessun metodo per verificare lo stato del lock, è possibile inserire un’attesa fissa in millisecondi in seguito all’invio dei comandi, quantificabile in base a verifiche che andrebbero eseguite manualmente, per esempio inviando i comandi con il terminale GPIB a disposizione nell’applicazione Satsagen. Tali ritardi è possibile specificarli con i seguenti campi:

msSleepAfterCWTurnONOFF attesa in millisecondi in seguito all’invio del comando di CW ON o OFF

msSleepAfterSetPwrOut attesa in millisecondi in seguito all’invio del comando di potenza di uscita

msSleepAfterSetVFO attesa in millisecondi in seguito all’invio del comando di impostazione della frequenza

Identici nella sintassi del controllo del lock appena visto, sono disponibili altrettanti campi per la verifica dello stato di pronto (ready) del dispositivo, utili da testare soprattutto prima di inviare nuovi comandi. Nell’ordine, DeviceReadyStatusMask, DeviceReadyStatusBitNegate, CmdGetDeviceReady, RegEx2MatchMessageDeviceReady, timeoutDeviceBusy e usSleepDeviceBusyWaitCycle.

Sempre simili nella sintassi, sono anche disponibili i seguenti campi per la verifica di presenza di errori: ErrorStatusMask, ErrorStatusBitNegate, CmdTestError e RegExTestError. In questo caso, i parametri relativi ai timeout e attese non sono necessari, mentre sono disponibili due campi che consentono di leggere dal dispositivo una descrizione dell’errore appena riscontrato: CmdGetError e RegExGetError.

Per far sì che la definizione dei suddetti campi di controllo di lock, device ready e presenza di errori diventino operativi occorre attivarli dove serve, nelle “sezioni” relative ai comandi principali di CW ON e OFF, impostazione della potenza di uscita e della impostazione della frequenza. Questo lo si fa impostando a 1 i campi testPhaseLockedxxx, testDeviceReadyBeforexxx e testDeviceReadyAfterxxx e testErrorxxx.

L’esempio di configurazione per un template PLL visto in precedenza diventerà il seguente completo di campi di controllo lock, ready ed error:

[CUSTOMGPIBPLL]
;;;Definizione generale del dispositivo
DeviceAddr=19
fGEN=2000000000
TXAttGEN=-60
XO_FREQUENCY=10000000
REFTXPWR=12
MINFREQTX=2000000000
MAXFREQTX=18000000000
MINTXATT=-110
MAXTXATT=0
TXATTNSTEP=1
;;;Definizione dei test su lock PLL, device ready ed error
PhaseLockedStatusMask=16
PhaseLockedStatusBitNegate=1
timeoutPhaseLock=3000
usSleepPhaseLockWaitCycle=20000
;;;-------------------------------------------------------
DeviceReadyStatusMask=8
DeviceReadyStatusBitNegate=0
timeoutDeviceBusy=3000
usSleepDeviceBusyWaitCycle=20000
;;;-------------------------------------------------------
ErrorStatusMask=2
ErrorStatusBitNegate=0
;;;Definizione dei comandi principali e attivazione dei test
testDeviceReadyBeforeCWONOFF=1
CmdCWON=RF1
CmdCWOFF=RF0
testErrorCWONOFF=1
testDeviceReadyAfterCWONOFF=1
testPhaseLockedCWONOFF=1
;;;---------------------------------------------------------
testDeviceReadyBeforeSetPwrOut=1
CmdDefSetPwrOut=PL%PWRDBMDEC%DB
testErrorSetPwrOut=1
testDeviceReadyAfterSetPwrOut=1
testPhaseLockedSetPwrOut=1
;;;---------------------------------------------------------
testDeviceReadyBeforeSetVFO=1
CmdDefSetVFO=CW%FREQHZ%HZ
testErrorSetVFO=1
testDeviceReadyAfterSetVFO=1
testPhaseLockedSetVFO=1

Infine, tra i campi di controllo di stato dispositivo, ma che hanno solo una funzione visiva, sono quelli che permettono di leggere la temperatura o di monitorare l’oven del cristallo di riferimento del dispositivo, aggiornando nella finestra principale di Satsagen il colore e le informazioni tramite il LED posto accanto al pulsante Power On.

Specificare con CmdReadTemp il comando da inviare per ottenere la temperatura del dispositivo, per esempio CmdReadTemp=TEMP?. Nel contempo specificare RegEx2DecodeMessageReadTemp con l’espressione regolare che permette di estrarre dalla risposta al comando precedente il valore della temperatura comprensivo di segno e parte decimale, per esempio RegEx2DecodeMessageReadTemp=([-+]?\d+(?:.\d+)?)

Se il dispositivo non prevede un comando di lettura di temperatura, ma tramite un bit dello status byte se l’oven del cristallo di riferimento ha raggiunto la temperatura di esercizio, allora con OvenStatusMask specificare la maschera del bit in questione, per esempio se è il bit con peso 4, OvenStatusMask=4 e nel caso sia negato, cioè a zero quando l’oven è in temperatura, aggiungere OvenStatusBitNegate=1.

Comandi di inizio, fine connessione e modo alternativo al serial poll status byte

Con i campi CmdInit e CmdEndConn è possibile specificare eventuali comandi da inviare al dispositivo rispettivamente all’atto della connessione e disconnessione di Satsagen. Con CmdInitResponseToTrace=1 si attiva l’invio della risposta al comando CmdInit sulla trace log, può essere utile se con CmdInit inviamo per esempio un comando per interrogare la versione del dispositivo, la quale potrà poi essere letta nella trace di Satsagen.

Infine è possibile far usare da Satsagen un metodo alternativo al GPIB serial poll per la lettura dello status byte (o word), se previsto dal dispositivo. Con il campo CmdGetDeviceStatus si definisce il comando da inviare per ottenere lo status byte e con RegEx2DecodeDeviceStatus l’espressione regolare da utilizzarsi per fare il match sul valore numerico dello status byte, per esempio semplicemente con RegEx2DecodeDeviceStatus=\d?

Template Power Meter

I template Power Meter consentono a Satsagen di pilotare i Power Meter su BUS GPIB. Hanno una unica sezione chiamata CUSTOMGPIBPM.

I campi mandatori che occorre personalizzare per poter pilotare i Power Meter su BUS GPIB sono:

  • DeviceAddr: indirizzo GPIB
  • REFGAIN0: offset rispetto alla lettura. Con questo campo possiamo specificare un offset in dB che Satsagen apporterà alla lettura prima della visualizzazione. Di norma va messo a zero REFGAIN0=0, ma può essere utile specificare un valore in offset per la calibrazione del dispositivo, se quest’ultimo non la prevede internamente.
  • MINFREQRX: specificare con questo campo la frequenza minima in Hz del dispositivo Power Meter.
  • MAXFREQRX: specificare con questo campo la frequenza massima in Hz del dispositivo Power Meter.
  • MAXINPUT: indica la potenza massima ammessa dal Power Meter espressa in dBm
  • DYNAMICRANGE: specificare con questo campo la dinamica del Power Meter espressa in dB. Per esempio con DYNAMICRANGE=106 e il precedente campo MAXINPUT=6, il Power Meter può misurare da -100 dBm a +6 dBm.
  • nreadsmeanTSA: è il numero di letture per il calcolo della media per ogni punto di scansione TSA se il Power Meter lo si utilizza come dispositivo RX in una configurazione SNA, cioè abbinato con un secondo device con ruolo di TX, generatore di tracking.
  • CmdReadPwr: è il comando da inviare al dipositivo per effettuare la lettura di potenza.
  • RegEx2DecodeMessageReadPwr: è l’espressione regolare da utilizzare per estrarre (fare il match) dalla risposta del comando precedente (CmdReadPwr) il valore della lettura.

Un file INI di template minimale per il funzionamento con i Power Meter quindi potrebbe risultare come il seguente:

DeviceAddr=8
REFGAIN0=0
MINFREQRX=1000000
MAXFREQRX=200000000
MAXINPUT=6
DYNAMICRANGE=106
nreadsmeanTSA=1
CmdReadPwr=IPW,TRG
RegEx2DecodeMessageReadPwr=([-+]?\d+(?:\.\d+)?)

I campi di controllo CmdGetDeviceReady, DeviceReadyStatusMask, CmdTestError e CmdGetError già visti nel precedente capitolo del template PLL, possono essere utilizzati con la stessa sintassi anche nella configurazione per i Power Meter. I campi che attivano i controlli per i Power Meter sono: testDeviceReadyBeforeRead, testErrorRead e testDeviceReadyAfterFailedRead.

Il suddetto esempio di configurazione diventerà quindi il seguente se completato dei campi di controllo:

;;;Definizione generale del dispositivo
DeviceAddr=8
REFGAIN0=0
MINFREQRX=1000000
MAXFREQRX=200000000
MAXINPUT=6
DYNAMICRANGE=106
nreadsmeanTSA=1
;;;Definizione dei test su device ready ed error
DeviceReadyStatusMask=8
DeviceReadyStatusBitNegate=0
timeoutDeviceBusy=3000
usSleepDeviceBusyWaitCycle=20000
;;;-------------------------------------------------------
ErrorStatusMask=2
ErrorStatusBitNegate=0
;;;Definizione del comando principale e attivazione dei test
testDeviceReadyBeforeRead=1
CmdReadPwr=IPW,TRG
testErrorRead=1
RegEx2DecodeMessageReadPwr=([-+]?\d+(?:\.\d+)?)
testDeviceReadyAfterFailedRead=1

Infine è possibile utilizzare anche i seguenti campi, identici nella sintassi a quelli già visti nel capitolo precedente Template PLL:

CmdInit, comando inviato nel momento della connessione e CmdInitResponseToTrace, se è 1 invia la risposta del CmdInit sulla trace log. CmdEndConn, comando inviato alla disconnessione. CmdGetDeviceStatus, comando alternativo al serial poll status byte e RegEx2DecodeDeviceStatus, espressione regolare per fare il match sul valore numerico dello status. CmdReadTemp, comando per leggere la temperatura del device e RegEx2DecodeMessageReadTemp per estrarre il valore double della temperatura con un espressione regolare. OvenStatusMask, in alternativa al comando precedente, bit dello status che determina se l’oven è in temperatura e OvenStatusBitNegate per negarlo.

Terminale GPIB

Satsagen include un terminale con il quale è possibile “dialogare” con il dispositivo collegato in GPIB a scopo di debug/troubleshooting.

Per aprire il terminale fare un click su Open GPIB terminal dal menu View, anche con Satsagen in Power Off.

A questo punto l’applicazione presenterà una lista delle interfacce disponibili:

Selezionare l’interfaccia desiderata e fare doppio-click o click su Ok.

A connessione avvenuta si aprirà un terminale in modalità verbose da dove è possibile inviare comandi sia all’interfaccia (preceduti da ++) o direttamente sul dispositivo all’indirizzo di default, 1.

Per cambiare l’indirizzo in uso dare il comando ++addr x, dove x è il numero del dispositivo GPIB. Con ++help otteniamo l’elenco e descrizione dei comandi dell’interfaccia preceduti da ++. Per una descrizione completa fare riferimento alla documentazione AR488.

Ricordarsi al termine delle operazioni, di chiudere il terminale in modo da liberare la porta seriale perché possa essere utilizzata da Satsagen per eventualmente connettersi al dispositivo e controllarlo.

Funzionamento del backspace nel terminale GPIB

Probabilmente riscontrerai che il tasto backspace non ha effetto durante l’utilizzo del terminale, o meglio, il cursore sembra retrocedere, però nella memoria buffer della riga questo non avviene, per cui se lo utilizzi per correggere un comando, questo comunque verrà inviato al dispositivo in modo errato.

Per risolvere tale problema, occorre modificare il file AR488.ino nei sorgenti del AR488 ed aggiungere le seguenti righe che permettono il funzionamento del backspace.

 // handle the backspace in verbose mode - albfer 21/12/2024
      case 0x7f:
      case 'x8:
      if(isVerb && pbPtr)
        pbPtr--;
        else
        {
        addPbuf(c);
        isEsc = false;
        }
      break;  

Le suddette righe vanno inserite all’interno della funzione parseInput(char c), dalla riga seguente a switch(c){ in modo da ottenere le prime righe di tale funzione in questo modo:

uint8_t parseInput(char c) {

  uint8_t r = 0;

  // Read until buffer full
  if (pbPtr < PBSIZE) {
    if (isVerb && c!=LF) dataPort.print(c);  // Humans like to see what they are typing...
    // Actions on specific characters
    switch (c) {
      // handle the backspace in verbose mode - albfer 21/12/2024
      case 0x7f:
      case 'x8:
      if(isVerb && pbPtr)
        pbPtr--;
        else
        {
        addPbuf(c);
        isEsc = false;
        }
      break;        
      // Carriage return or newline? Then process the line
      case CR:
      case LF:
.
.
.

Ricompilare con l’ambiente Arduino e ricaricare sull’interfaccia.

Le tabelle di correzione RX/TX di SATSAGEN

Le tabelle di correzione RX/TX di SATSAGEN, dette anche tabelle di compensazione/linearizzazione, sono utilizzate per colmare alcune carenze dei dispositivi supportati, principalmente per:

  • Assenza del controllo automatico del livellamento ALC
  • Scarsa linearità dell’LNA, del mixer e di altri componenti RF

L’obiettivo è ottenere la potenza di uscita del dispositivo impostata dall’utente entro +/- 1 dB di tolleranza nell’intera gamma di frequenza e gli stessi livelli affidabili visualizzati dall’analizzatore di spettro.

Le tabelle sono file di testo in formato INI salvati nella directory Documents/satsagen/settings dal setup e caricati in memoria al Power On dell’applicazione.

Il percorso completo delle tabelle è specificato nella scheda Level Correction sotto Settings:

Le tabelle possono essere abilitate/disabilitate dalla stessa scheda con le seguenti caselle di controllo:

La casella TX level correction abilita il livellamento dell’uscita per il generatore, lo sweeper e l’analizzatore di spettro con tracciamento (TSA).

La casella RX level correction TSA abilita la compensazione del livello di lettura per l’analizzatore di spettro con tracciamento.

La casella RX level correction SA abilita la compensazione del livello di lettura solo per l’analizzatore di spettro.

I seguenti due esempi sono realizzati utilizzando un ADALM-PLUTO con cavo loopback che esegue una scansione TSA per tutta la gamma di frequenze con le tabelle di correzione abilitate e non:

Una scansione con la correzione del livello TX e la correzione del livello RX TSA entrambe abilitate.

IIn questa schermata, la stessa scansione con la correzione del livello TX e la correzione del livello RX TSA entrambe disabilitate.

Le tabelle sono precompilate e distribuite con il setup di Satsagen, contengono la caratterizzazione dei device supportati, effettuata utilizzando alcuni dispositivi campione. Potrebbe però essere necessaria una personalizzazione, vedremo in seguito come fare .

Il nome del file della tabella di linearizzazione TX standard distribuito con l’installazione SATSAGEN è curvecorrTX.ini .

Semplificando, la tabella di linearizzazione TX contiene un elenco di voci Hz=dB per ciascun dispositivo supportato dove Hz è la frequenza e dB è la variazione rispetto alla potenza prevista corretta a quella frequenza: un valore negativo dB corrisponde ad un valore finale di incremento della potenza TX. Altri campi sono disponibili, li vedremo più avanti .

La tabella di linearizzazione TX agisce sull’attenuatore del device assegnato come TX, correggendo con incrementi o decrementi la potenza in uscita.

La tabella di compensazione RX agisce sui livelli letti dal dispositivo correggendoli invece passivamente, quindi ad esempio se il dispositivo legge -40 dBm e dovrebbe essere -30 dBm, la tabella di compensazione RX incrementa di -10 dB per visualizzare il valore corretto di -30 dBm sullo spettro.

Il nome del file della tabella di compensazione RX standard distribuito con l’installazione SATSAGEN è curvecorrRX_PLUTOCGT.ini .

In entrambi i casi delle tabelle RX e TX, l’applicazione effettua un’interpolazione se la frequenza in test è compresa tra due voci della tabella.

Lo strumento di modifica INI

È possibile modificare i file INI delle tabelle di correzione con un editor come Blocco note… ma è un inferno!

Un altro modo, ma solo un po’ più user-friendly, è utilizzare lo strumento di modifica INI incluso in Satsagen.

Lo strumento di modifica INI con il file curvecorrTX.ini caricato

Crea sempre una copia di backup dei tuoi file INI prima di utilizzare lo strumento INI Edit tool.

Per utilizzare lo strumento, aprilo dalla scheda Level correction in Settings facendo clic sul pulsante  INI Edit Tool.

È utile lasciare aperto l’INI Edit Tool, chiudendo solo la finestra Settings, per utilizzarlo durante le operazioni dell’Analizzatore di spettro.

Questo strumento è come un editor di tabelle di database. La finestra di questo tool comprende una griglia editabile nella parte superiore, una barra di navigazione nella parte inferiore, un elenco contenente i dispositivi supportati e alcuni pulsanti funzione.

La tabella parte vuota e il dispositivo selezionato corrisponde al primo device supportato, ADALM-PLUTO.

Puoi iniziare modificando una nuova tabella, selezionando altri dispositivi o importandone una esistente con il pulsante Import.

Puoi salvare su file INI con il pulsante Export. Tutte le funzioni sono relative solo al dispositivo selezionato, ad esempio, se hai effettuato un’esportazione, solo la tabella del dispositivo selezionato verrà modificata sul file INI di destinazione specificato.

Quando si esporta nel file INI configurato attivo, questo viene ricaricato automaticamente e le modifiche diventano operative.

Segue un esempio di utilizzo dello strumento INI Edit tool per modificare una voce della tabella di correzione RX e visualizzare il risultato in tempo reale (Prerequisiti: un ADALM-PLUTO collegato via USB o Ethernet e un cavo di loopback):

  • Effettuare una copia di backup del file curvecorrRX_PLUTOCGT.ini in documenti\satsagen\settings
  • Vai su Settings, scheda Level correction e apri lo strumento di modifica INI
  • Chiudi la finestra Settings lasciando aperta la finestra INI Edit tool
  • Importa il file curvecorrRX_PLUTOCGT.ini dalla directory documenti\satsagen\settings con lo strumento di modifica INI
  • Configura ed esegui una scansione TSA come mostrato nello screenshot seguente

  • Modifica una voce, per esempio quella a 1190 MHz, da -4 dB a -10 dB
  • Conferma la modifica con il pulsante Visto dalla barra degli strumenti del navigatore
  • Esportare nel file curvecorrRX_PLUTOCGT.ini confermando la sovrascrittura
  • Dovrebbe essere visibile sul display la modifica apportata:

  • Ripristina la voce con il valore originale di -4 dB ed esporta nuovamente nel file curvecorrRX_PLUTOCGT.ini
Approfondimento sui campi delle tabelle di correzione RX/TX

I campi della tabella di correzione RX

Freq : frequenza in Hz
cordB : correzione dB come spiegato sopra
min_GAdB  e  max_GAdB : specificano l’intervallo di guadagno RX
tipo : 0  per voci di correzione della frequenza fondamentale
           1  per correzione aggiuntiva della frequenza fondamentale *
           2  per voci di correzione della frequenza della terza armonica
          3  per la correzione della frequenza della quinta armonica voci
          12  per la correzione aggiuntiva della frequenza della terza armonica
          13  per la correzione aggiuntiva della frequenza della quinta armonica

port :  0  per tutte le voci, ad eccezione dei dispositivi che hanno più canali, come Pluto rev C/D, in questo caso,   significa tutte le porte,   solo per le porte del primo canale e   solo per le porte del secondo canale

Con i campi min_GAdB e max_GAdB è possibile specificare un range di RX Gain dove agiscono i campi Hz e CordB . Questi campi sono utili per caratterizzare comportamenti specifici dei dispositivi di non linearità legati agli intervalli di guadagno RX.

I tipi 1, 12 e 13 sono voci di correzione aggiuntive, utili per specificare la caratterizzazione specifica all’interno degli intervalli di frequenza dei tipi di voci 0, 2 e 3.

* Le voci di tipo 1 hanno una particolarità: il campo Hz delle voci di tipo 1 non si riferisce alla frequenza dello spettro ma alla frequenza del LO. Possono quindi essere utilizzati per descrivere correzioni aggiuntive a seconda della frequenza dell’oscillatore locale. Ciò corrisponde ad esempio alla frequenza centrale impostata quando si utilizza l’analizzatore di spettro.

Il seguente semplice esempio è una tabella di compensazione RX che descrive una compensazione lineare che inizia da 1 MHz e termina a 1 GHz con una correzione finale di 10 dB. Le due voci di tipo 1 descrivono una correzione aggiuntiva di +4 dB nell’intervallo da 300 MHz a 400 MHz solo per l’intervallo di guadagno RX da 0 a 10 dB.

I campi della tabella di correzione TX

Freq : frequenza in Hz
cordB : correzione dB come spiegato sopra
min_GAdB  e  max_GAdB : specificano l’intervallo della potenza TX consentito solo per le voci di tipo 1.
tipo :  0  per le voci di correzione della frequenza fondamentale
           1  per la correzione aggiuntiva della frequenza fondamentale all’interno dell’intervallo di potenza TX specificato da min_GAdB e max_GAdB
           2  per le voci di correzione della frequenza della terza armonica (utilizzate solo dal NF/G Analyzer)
port :  0  per tutte le voci, ad eccezione dei dispositivi che hanno più canali, come Pluto rev C/D, in questo caso,   significa tutte le porte,   solo per le porte del primo canale e   solo per le porte del secondo canale

Come scrivere una tabella di correzione

La creazione di una tabella di correzione richiede molta dedizione e tempo, inoltre alcuni strumenti necessari per completare questa attività non sono sempre disponibili nei nostri laboratori.

Normalmente non è necessario creare tabelle da zero, perché queste sono già incluse nella distribuzione di Satsagen per tutti i dispositivi supportati, si tratta piuttosto di personalizzazione. Può però essere utile vedere come creare una nuova tabella per comprendere l’utilizzo di tutti i campi coinvolti.

Prerequisiti

  • Un dispositivo supportato affidabile come un ADALM-PLUTO può velocizzare le operazioni.
  • Un generatore sintetizzato calibrato con l’opzione sweeper
  • Un misuratore di potenza calibrato o un analizzatore di spettro calibrato

Se la tabella da creare riguarda un dispositivo che ha una gamma di frequenza che rientra in parte in quella di un ADALM-PLUTO allora è meglio utilizzare un ADALM-PLUTO principalmente come strumento di riferimento e utilizzare un generatore sintetizzato con l’opzione sweeper, un misuratore di potenza e un analizzatore di spettro per la restante gamma di frequenze non coperta.

Un esempio di creazione di una tabella da zero

Creiamo una tabella di compensazione RX per il dispositivo RTL-SDR V4.

In generale, il primo passo è scrivere le voci di tipo frequenza fondamentale del lato RX (tipo 0). Queste voci descrivono il comportamento del dispositivo nella sua gamma di frequenza fondamentale. Ad esempio, per i dispositivi basati su AD936x va da circa 55 MHz a circa 6 GHz, per i dispositivi basati su R82x, come RTL-SDR V4 con l’opzione up-converter, va da circa 500 kHz a circa 28 MHz per l’HF e da circa 28 MHz a circa 1700 MHz per la gamma VHF/UHF. Il passo successivo dovrebbe essere quello di scrivere le voci di tipo armonico del lato RX (tipo 2,3,12 e 13), ma in questo esempio sono necessarie solo le voci di tipo fondamentale per il dispositivo RTL-SDR V4.

Collega un ADALM-PLUTO a un dispositivo RTL-SDR V4 con un cavo loopback e due attenuatori da 10 dB, in modo che il Pluto agisca come dispositivo di riferimento TX.

Un dispositivo RTL-SDR V4 collegato a un ADALM-PLUTO tramite un cavo loopback

Configura SATSAGEN come segue:

Accendi SATSAGEN e avvia l’analizzatore di spettro con tracciamento con la seguente configurazione:

Attendere circa 10 minuti affinché i dispositivi entrino in un regime di temperatura costante e la funzione disciplina XO sincronizzi bene la frequenza TX con la frequenza del dispositivo RX.

La traccia risultante dovrebbe essere la caratterizzazione della curva RX del dispositivo con un offset di -30 dB.

Potresti copiare il risultato come una nuova tabella di compensazione RX sottraendo la costante di offset di -30 dB dai valori e il gioco sarebbe fatto.

SATSAGEN include una funzionalità che ci aiuta in questo compito per ridurre drasticamente la suddetta manualità, il capitolo seguente spiega come esportare l’ultima scansione TSA completata in una tabella di correzione:

Esporta l’ultima scansione TSA completata in una tabella di correzione

SATSAGEN versione 0.9.1.0 include una funzionalità che esporta il risultato della scansione TSA in una tabella di correzione.

Questa funzionalità può essere utilizzata quando almeno una scansione è completata ed è disponibile.

Per avviare l’esportazione utilizzare la voce di menu File->Export->Export last completed TSA scan to the RX (o TX) Correction Table.

Se si esporta nella tabella di correzione RX, si presuppone che il dispositivo sottoposto a test sia l’ RX e che il dispositivo TX utilizzato nella scansione sia il riferimento. I dati verranno salvati nel file INI definito come File INI RX correction in Settings, scheda Level correction.

Se si esporta nella tabella di correzione TX si presuppone che il dispositivo in prova sia il TX , quindi i dati verranno salvati nel file INI definito come File INI TX correction.

Per completare il lavoro iniziato nel capitolo precedente, scegliamo l’opzione Export last completed TSA scan to the RX Correction Table. Si aprirà la seguente finestra di dialogo:

La parte superiore della finestra di dialogo contiene i campi Min GadB, Max GadB, Type e Port. Possiamo lasciare invariati questi campi per creare la tabella di compensazione per le voci di tipo fondamentale per il dispositivo RTL-SDR v4.

La parte inferiore della finestra di dialogo contiene i campi Min step dB e Offset dB. Il campo Min step dB permette di definire il passo minimo in dB per la creazione di una nuova voce nella tabella di destinazione, questo accorgimento riduce notevolmente il numero di voci create rispetto alla definizione della scansione sorgente. Il campo Offset dB viene calcolato automaticamente sottraendo il valore di RX Gain dal valore TX Pwr.

Successivamente, mantenendo invariati i campi della finestra di dialogo e cliccando su OK, SATSAGEN leggerà in sequenza il risultato dei 512 punti di scansione e creerà tante voci nella tabella di correzione RX con le caratteristiche definite nella parte superiore della finestra, sottraendo l’Offset dB dai valori e verificando che tra un inserimento e l’altro venga rispettato almeno uno step di Min step dB specificato.

La tabella di destinazione deve essere vuota per i campi definiti nella parte superiore della finestra di dialogo, altrimenti la funzione di esportazione si interrompe e visualizza un errore. Questo controllo viene eseguito per proteggere dalla corruzione le tabelle esistenti.

Una volta completata l’esportazione e la creazione della tabella di compensazione RX, verrà visualizzato il seguente messaggio di conferma.

Dobbiamo ancora creare le voci nella tabella di compensazione RX per la restante gamma di frequenze da 0 a 50 MHz non coperta dal dispositivo di riferimento ADALM-PLUTO appena utilizzato.

Come creare una tabella di correzione RX utilizzando un generatore sweeper esterno

Per continuare il lavoro precedente di caratterizzazione del dispositivo RTL-SDR V4 dobbiamo ora configurare un generatore/sweeper calibrato.

Configurare il generatore sweeper per eseguire la scansione lenta, di circa 1 MHz al secondo nell’intervallo da circa 0 a 50 MHz, con un’uscita di -30 dBm CW.

Un generatore/sweeper HP 8601A della fine degli anni ’60

Collega l’ RTL-SDR V4 al generatore/sweeper mantenendo inserito l’attenuatore da 10 dB.

Lasciare invariata la configurazione Satsagen, come utilizzata nel paragrafo precedente.

Eseguire l’analizzatore di spettro, con Max Hold selezionato, con la seguente configurazione.

Lasciarlo funzionare per alcuni minuti finché lo spettro non sarà sufficientemente definito.

Ingrandisci lo spettro per evidenziare la maggior parte dei cambiamenti di livello e annotarli.

Dovresti ottenere un elenco simile a questo::

0 MHz-53.40 dBm
1,5 MHz-46,90 dBm
1,6 MHz-51,90 dBm
6 MHz-42,60 dBm
9,3 MHz-38,50 dBm
11,6 MHz-37,80 dBm
21 MHz-42,40 dBm
25 MHz-47,50 dBm
27,8 MHz-53,90 dBm
28,2 MHz-44,50 dBm
50 MHz-46,20 dBm
  • Effettua una copia di backup del file curvecorrRX_PLUTOCGT.ini in documenti\satsagen\settings
  • Vai su Settings, scheda Level correction e apri lo strumento di modifica INI
  • Chiudi la finestra Settigns lasciando aperta la finestra INI Edit tool
  • Importa il file curvecorrRX_PLUTOCGT.ini dalla directory documenti\satsagen\settings con lo strumento di modifica INI
  • Seleziona il dispositivo RTL-SDR V4 dall’elenco dei dispositivi
  • Inserisci le voci precedenti nella parte superiore della tabella, diminuendo i livelli dBm dell’offset di -30 dB.

  • Esportare nel file curvecorrRX_PLUTOCGT.ini confermando la sovrascrittura
Un’ulteriore messa a punto

Un comportamento strano che ho notato nel dispositivo RTL-SDR V4, che potrebbe non essere visibile in una scansione come quella usata sopra, è un aumento di lettura di circa 5 dB quando la frequenza centrale dell’analizzatore di spettro è impostata da circa 500 kHz a esattamente 2200kHz.

Per correggere questo problema è possibile utilizzare un paio di voci di tipo 1 illustrate nel capitolo Approfondimento sui campi delle tabelle di correzione RX/TX aggiunti alla fine della tabella:

Creazione da zero di una tabella di linearizzazione TX

Per creare una tabella di linearizzazione TX di un dispositivo supportato in SATSAGEN procedere esattamente come illustrato nell’esempio precedente , dove è stata creata la tabella di compensazione per il dispositivo RTL-SDR V4, con l’unica differenza che i dispositivi devono essere invertiti!

Pertanto, per la gamma di frequenza coperta da ADALM-PLUTO, questo verrà configurato come dispositivo RX nella scheda Devices in Settings e il dispositivo sotto test come dispositivo TX. L’esportazione nella tabella di correzione TX verrà eseguita al termine della procedura di scansione

Per l’intervallo non coperto da ADALM-PLUTO, il generatore/sweeper SATSAGEN è configurato per eseguire una scansione nell’intervallo richiesto e un analizzatore di spettro calibrato esterno è collegato al dispositivo TX per ottenere la curva Max Hold da scrivere manualmente nel TX file INI di correzione utilizzando lo strumento INI Edit tool.

Note sulla compilazione delle tabelle di correzione

L’applicazione Satsagen legge le tabelle in sequenza dal primo all’ultimo record. L’applicazione non esegue un ordinamento delle voci. L’attività di ordinamento delle voci dei campi in base alla frequenza, dalla frequenza minima del dispositivo alla frequenza massima del dispositivo, è lasciata all’utente. Inoltre, l’utente dovrebbe prestare attenzione ai campi raggruppati: le voci devono essere raggruppate per campo porta, campo tipo e intervallo min_GAdB e max_GAdB.

L’immagine seguente è un esempio che include una serie di voci correttamente ordinate e raggruppate:

SATSAGEN v.0.9.0.1

Download Page

I punti salienti di questa versione sono:

Radio

Le condizioni preliminari per l’utilizzo della Radio sono:

  • In Settings, scheda Extra, se non già attiva, abilitare la voce Multithreading
  • Se si usa il dispositivo Pluto, abilitare anche la voce Kernel buffers in Settings, scheda Device Options
  • I filtri LO F ed EF presenti nella scheda SA Filters/trace types devono essere spenti
  • Lo Span deve essere inferiore o uguale al massimo bandwidth istantaneo del dispositivo. Per esempio, con Pluto lo Span deve essere al massimo di 2 MHz (4 MSPS)
  • Il resolution bandwidth, nella voce del FFT size, deve rientrare in un range adatto per il dispositivo SDR utilizzato. All’accensione della Radio, Satsagen pone l’FFT size, se troppo basso, a 4K come base di partenza adatta per la maggior parte dei dispositivi.

Se una o più delle suddette condizioni non sono soddisfatte, la Radio può rimanere in standby o funzionare con una riproduzione all’ascolto non soddisfacente.

Declino ogni responsabilità per eventuali danni all’udito derivanti da un utilizzo improprio delle funzioni audio di Satsagen, soprattutto con l’ausilio di cuffie.

Prima di accendere la radio, selezionando uno dei modi di demodulazione previsti, posizionare sempre i controlli AF Gain e Volume ad un livello il più basso possibile, per poi alzarli gradualmente fino ad ottenere un’ampiezza di riproduzione desiderata.

Bump, scariche ed altri fastidiosi suoni possono essere riprodotti, nonostante abbia previsto un fading automatico in alcune occasioni, come per esempio quando si passa da una demodulazione ad un’altra. Questi forti e pericolosi suoni sono riprodotti soprattutto utilizzando delle demodulazioni dipendenti dall’ampiezza del segnale in ingresso, che non è prevedibile, quali l’AM ed SSB.

Per accendere la Radio:

  • Avviare lo Spectrum Analyzer alla frequenza centrale desiderata e RX Gain sufficiente
  • Attivare la scheda Radio e scegliere la demodulazione desiderata dalla lista Mode:
La radio attiva con una demodulazione FM e 50uS di de-emphasis

Una volta scelto il tipo di demodulazione, la Radio si avvia riproducendo sull’audio predefinito del PC.

Un cursore di sintonia, largo quanto l’IF BW selezionato, viene visualizzato nel display. Per spostare la sintonia è sufficiente effettuare un click sul display alla posizione della frequenza desiderata oppure agendo sulla manopolina di sintonia posta accanto alla lista dei modi di demodulazione. Se la stazione che si desidera ascoltare è al di fuori dello span visualizzato, occorre necessariamente agire sulla frequenza centrale dello spectrum analyzer mediante i consueti controlli, compresi quelli offerti dal gesture su display touch screen.

Effettuando un doppio click sul cursore di sintonia si ottiene un ingrandimento che permette un più agevole centramento in frequenza del segnale che si desidera demodulare. Un successivo doppio click nell’area di sintonia riporta il fattore di zoom ai valori precedenti.

Il cursore di sintonia è in sostanza un marcatore visibile nella Edit SA markers table come CalcMode DEMOD. Quando la radio è attiva, l’utilizzo degli altri marcatori non è consentito, mentre è possibile utilizzare i cursori per eventuali misurazioni.

Per spegnere la Radio, scegliere dalla lista Mode la voce No demod.

Le demodulazioni previste sono:

  • AM. L’IF bandwidth parte di default da 12 kHz e può essere regolato nel range da 2 a 250 kHz. L’ AF Gain può raggiungere i 45 dB. La sintonia può essere controllata a step di 100 Hz.
  • N-FM. L’IF bandwidth parte di default da 12 kHz e può essere regolato nel range da 2 a 16 kHz. L’ AF Gain può essere impostato al massimo a 30 dB. La demodulazione narrow FM utilizza un filtro passa banda audio da 200 Hz a 4200 Hz e un filtro di de-enfasi da 530 uS. E’ possibile l’utilizzo dello squelch. La sintonia può essere controllata a step di 100 Hz.
  • FM. L’IF bandwidth parte di default da 150 kHz e può essere regolato nel range da 2 a 250 kHz. L’ AF Gain può essere impostato al massimo a 30 dB. Questa demodulazione non utilizza nessun filtro se non l’AF Filter impostato dall’utente. E’ possibile l’utilizzo dello squelch. La sintonia può essere controllata a step di circa 1 kHz.
  • FM 50uS DE e FM 75uS DE. L’IF bandwidth parte di default da 150 kHz e può essere regolato nel range da 2 a 250 kHz. L’ AF Gain può essere impostato al massimo a 30 dB. Queste demodulazioni sono in FM mono, il 19 kHz presente nelle emittenti stereo viene soppresso in parte dal filtro di de-enfasi e dalla impostazione del AF Filter. Il filtro di de-enfasi è rispettivamente di 50 uS e 75 uS. E’ possibile l’utilizzo dello squelch. La sintonia può essere controllata a step di circa 1 kHz.
  • LSB e USB. L’IF bandwidth parte di default da 2.8 kHz e può essere regolato nel range da 2 a 8 kHz. L’ AF Gain può raggiungere i 45 dB. La sintonia può essere controllata a step di 1 Hz, con la granularità prevista dal dispositivo SDR in uso.

La radio non è compatibile con le seguenti funzionalità di Satsagen: Full Band, Zero Span, NF/G Analyzer e i filtri LO F ed EF. Se si tenta l’utilizzo contemporaneo di una delle suddette funzionalità con la Radio, quest’ultima verrà posta in standby o le funzionalità non si attiveranno.

Misuratore di deviazione e ampiezza di modulazione

E’ possibile effettuare misure di deviazione FM e modulazione AM con l’ausilio della Radio.

Misura deviazione FM
  • Accendere la Radio su uno dei modi di demodulazione FM
  • La portante da misurare dovrebbe preferibilmente essere modulata con 1 kHz circa ed avere una potenza sufficiente. Indicativamente, utilizzando un ADALM-PLUTO, occorre una portante di almeno -80 dBm. Con una impostazione di 40 dB di RX Gain, la tolleranza della misura è intorno al 5%.
  • Impostare un IF BW adatto con la misurazione di deviazione da effettuare
  • Centrare il più possibile la portante o la sintonia sulla portante
  • Attivare la voce Radio Modulation Metering dal menu View
  • La terza riga di testo del cursore di sintonia visualizzerà in tempo reale le misurazioni di deviazione e deviazione negativa/positiva dalla frequenza centrale del canale sintonizzato, in kHz per wide FM ed in Hz per narrow FM:
Misurazione di deviazione FM, in questo esempio risulta essere di circa 79 kHz

Per migliorare la precisione della misura, effettuare la calibrazione:

  • Accendere la Radio su uno dei modi di demodulazione FM
  • Sintonizzare la portante, in questo caso deve essere non modulata, CW
  • Dal menu Run, voce FM modulation metering calibration scegliere Run Calibration
  • Dopo circa un secondo, se la calibrazione è avvenuta correttamente, dovrebbero essere visualizzati valori misurati intorno allo zero.
  • Proseguire con la misura modulando ora la portante con circa un kHz
Misura modulazione AM
  • Accendere la Radio su demodulazione AM
  • La portante da misurare dovrebbe preferibilmente essere modulata con 1 kHz circa
  • Attivare la voce Radio Modulation Metering dal menu View
  • La terza riga di testo del cursore di sintonia visualizzerà in tempo reale la misurazione di ampiezza in percentuale di modulazione :
Misurazione di modulazione AM, in questo esempio risulta essere di circa 88 %

Anche nel caso dell’AM è possibile effettuare una calibrazione a priori per migliorare la precisione della misura di modulazione:

  • Accendere la Radio su uno dei modi di demodulazione AM
  • Sintonizzare sulla frequenza desiderata senza la portante presente, in modo che Satsagen acquisisca solo il livello del noise floor
  • Dal menu Run, voce AM modulation metering calibration selezionare Run Calibration
  • Dopo circa un secondo, se la calibrazione è avvenuta correttamente, dovrebbero essere visualizzati valori oscillanti inferiori a 99%.
  • Proseguire con la misura attivando la portante modulata in AM a circa un kHz

Noise/Gain Analyzer

La funzionalità di Noise/Gain Analyzer è stata potenziata, soprattutto al fine di migliorarne la precisione delle misure e ridurre le attività ripetitive di calibrazione.

Modalità adattiva

In Settings, scheda Computations, si abilita la nuova modalità adattiva mediante la voce Adaptive on three gain settings:

La scheda Computations in Settings dove abilitare la modalità adattiva

La modalità adattiva, in fase di misura, imposta il guadagno di ricezione più idoneo per le caratteristiche del dispositivo in prova, evitando in questo modo letture falsate in seguito ad overload degli stadi di ingresso e ADC del dispositivo SDR utilizzato.

Una volta configurata la modalità adattiva si può procedere con la calibrazione e la misura con la stessa procedura di sempre, in sostanza sarà solo il tempo occorrente alla calibrazione a cambiare, ma vediamo nel dettaglio cosa il programma effettua in questa nuova modalità:

La fase di calibrazione richiede più tempo per completarsi rispetto alla modalità classica non adattiva, in quanto il programma deve analizzare su diversi livelli di Gain il comportamento del sistema noise source e ricevitore SDR per poi utilizzare queste informazioni in fase di misura.

La calibrazione in modalità adattiva si compone delle seguenti macro fasi:

  • Determina il range di RX Gain fruibile facendo partire l’acquisizione con il massimo RX Gain disponibile e riducendolo progressivamente fino a trovarne il livello minimo dove le variazioni ON/OFF del noise source possono essere ancora utilizzabili.
  • Divide in tre livelli di gain il suddetto range
  • Effettua tre calibrazioni mediante i tre livelli di gain individuati
  • Calcola il guadagno massimo misurabile dei dispositivi in prova e mappa le tre calibrazioni su tre range del guadagno dei DUT

In fase di misura, il programma determina quale dei tre livelli di RX Gain e annessa calibrazione utilizzare in base al guadagno approssimativo del dispositivo in prova.

Se in fase di calibrazione, il programma determina che non ci siano le condizioni per creare tre range di RX Gain, perché lo scostamento tra massimo gain ed il minimo fruibile è troppo piccolo, allora la modalità adattiva è automaticamente disabilitata e il sistema procede nel modo classico.

Compensazione armoniche

Alcuni dispositivi SDR, quali per esempio il Pluto, possono introdurre un errore di lettura in fase di calibrazione dovuto al comportamento armonico enfatizzato dei mixer in ricezione e per il fatto che non è presente un filtro preselettore in ingresso. Queste condizioni fanno sì che il livello di noise della testina sorgente non sia solo ricevuto alla frequenza fondamentale di misura ma anche alle frequenze armoniche, in modo più marcato alla terza e quinta armonica. Tale errore si riflette sui risultati delle misure, soprattutto in una sottostima del Gain del dispositivo in prova, in modo particolare questo avviene misurando DUT a banda stretta.

Da questa versione, Satsagen prevede l’applicazione di una compensazione che riduce notevolmente l’errore sia sul Gain che sul Noise figure misurato. Per attivare tale meccanismo di compensazione è sufficiente compilare il campo Bandwidth del marcatore utilizzato per le misure con il valore approssimativo del bandwidth del dispositivo in prova:

La markers table e la colonna BandWidth da compilare per abilitare il meccanismo di compensazione

La compensazione verrà calcolata dal programma in base alle caratteristiche del SDR utilizzato e da come si comporta alle frequenze armoniche abbinate alle informazioni ENR della tabella del Noise Source utilizzato.

La compensazione verrà applicata solo durante la visualizzazione finale della misura del dispositivo, quindi quando quest’ultimo verrà collegato al sistema, per cui non sarà visualizzato al termine della calibrazione dove i display di Gain e Noise Figure oscillerannno sempre intorno allo zero.

Se si vuole conoscere il livello di compensazione già in fase di calibrazione, attivare la voce Show the mixer’s harmonic compensation at the calibration level dal menu Computations->NF/G Analyzer->Session settings.

Utilizzo del TX SDR come Noise Source!

Ho pensato che poteva essere interessante, in via sperimentale, utilizzare la parte TX del SDR come Noise Source!

Satsagen era già dotato nella parte del generatore di una modulazione NPR che consente la misurazione della intermodulazione di canali adiacenti. In sostanza è un generatore di noise pseudo-casuale comprensivo di tre filtri notch. Ora la parte di NF/G Analyzer può essere configurata per utilizzare tale generatore come Noise Source per le misure di Noise Figure e Gain.

Va detto che tale possibilità produce risultati attendibili di Noise Figure solo se il sistema verrà caratterizzato mediante strumentazione professionale e calibrata, al fine di crearne una tabella personalizzata ENR da inserire nel programma. Inoltre, rispetto ad una testina Noise Source, l’utilizzo di un dispositivo SDR come sorgente di rumore ha i seguenti svantaggi:

  • Una volta caratterizzato l’SDR con attenuatore installato mediante strumentazione calibrata, il dispositivo deve essere dedicato solo per le misure NF/G; per esempio, anche solo l’operazione di svitare l’attenuatore per poi rimetterlo può invalidare la caratterizzazione appena effettuata.
  • L’instabilità in frequenza e potenza di un SDR rispetto alle variazioni termiche è superiore a quella di una testina tradizionale e potrebbe introdurre errori di misura di Noise Figure inaccettabili.
  • Il range di frequenza utilizzabile è normalmente inferiore rispetto ad una tradizionale testina Noise Source. Ad esempio con un Pluto si può generare noise da circa 70 MHz a 6 GHz.
  • Non per ultimo, un SDR come sorgente di rumore può essere utilizzato solo da Satsagen, mentre una tradizionale testina può essere utilizzata con la maggior parte dei sistemi di misura hardware e con Satsagen.

Per le suddette ragioni, l’utilizzo di una testina Noise Source è sempre la scelta migliore. Poiché l’acquisto di una testina branded sta diventando con il tempo sempre più un’operazione onerosa, varrebbe la pena tentarne l’autocostruzione o scegliere prodotti emergenti come quelli proposti dal collega radioamatore Mauro IZ1OTT che offre un portfolio di componenti RF microonde dall’ottimo rapporto qualità/prezzo. Informazioni a riguardo si possono trovare sul sito di Mauro: https://www.mauroottaviani.com.

Abilitare il TX SDR come noise source è semplice. In Settings, tab Ext In/Out scegliere la voce Generator as a Noise Source dalla lista Noise source power interface, quindi nella tab Computations, inserire il nome del file contenente la tabella di caratterizzazione ENR del TX SDR. Le istruzioni come caratterizzare un SDR come Noise Source le illustro nel successivo capitolo. A scopo puramente indicativo, ho inserito nel setup di Satsagen, alcuni esempi di tabelle ENR dei dispositivi SDR, si trovano in Documenti\satsagen\settings\ENRTables. I nomi dei file di esempio sono composti in questo modo: un prefisso ENR seguito dal nome del dispositivo SDR e opzionale la frequenza di campionamento usata nella caratterizzazione. Il nome del file termina sempre con un suffisso indicante il valore dell’attenuatore TX utilizzato. Per esempio, il nome della tabella per l’ADALM-PLUTO a 8 MSPS con un attenuatore da 20 dB è: ENRADALMPLUTO8MSPS-20. Se la frequenza di campionamento non è specificata nel nome, la tabella è adatta nella condizione peggiore di utilizzo del TX SDR come Noise Source, dove il dispositivo viene utilizzato contemporaneamente anche come RX e la banda base è condivisa, per cui la frequenza di campionamento è fissata dalla parte di ricezione e può non essere l’ottimale, come nel caso di ADALM-PLUTO a 8 MSPS.

I dispositivi SDR contemplati da Satsagen come Noise Source sono:

  • ADALM-PLUTO e annessi con attenuatore su connettore TX da 20 dB
  • USRP con attenuatore TX da 30 dB
  • AntSDR E200 con attenuatore TX da 30 dB
  • HackRF One con attenuatore TX da 50 dB
Caratterizzazione di un TX SDR come Noise Source

Per la caratterizzazione ENR di un dispositivo è necessario uno strumento di misura ENR affidabile e calibrato.

Di seguito la procedura per caratterizzare un ADALM-PLUTO come Noise Source:

Il setup deve coincidere con quello finale di misura, quindi per esempio se si utilizzerà il NF/G Analyzer con un singolo dispositivo ADALM-PLUTO con i ruoli sia di ricevitore che di Noise Source (la condizione peggiore in termini di affidabilità nelle misure), il setup di caratterizzazione sarà un singolo ADALM-PLUTO con un attenuatore sul connettore TX di -20 dB. Mentre se si ha la possibilità di utilizzare due ADALM-PLUTO, uno dedicato alla ricezione e un altro come Noise Source, allora il setup di caratterizzazione dovrà essere composto da due ADALM-PLUTO con il dispositivo dedicato a Noise Source corredato di un attenuatore da -20 dB sul connettore TX.

  • Collegare il TX (chiaramente l’uscita dell’attenuatore) allo strumento di misura ENR
  • In Settings, tab Ext In/Out scegliere la voce Generator as a Noise Source dalla lista Noise source power interface
  • Creare tanti marcatori di tipo CalcMode NF/G con span 400000 alle frequenze che si desidera caratterizzare in ordine crescente. Per esempio 71000000, 100000000, 144000000, 432000000 e così via di seguito.
  • Selezionare il primo marcatore con la frequenza più bassa
  • Avviare il NF/G Analyzer facendo un click sul pulsante ON nella tab NF/G Analyzer
  • Configurare lo strumento di misura ENR con un bandwidth corrispondente alla metà del valore visualizzato nella casella Sampling kHz del generatore di Satsagen
  • Fare un click sul piccolo pulsante TX On del generatore e annotare la frequenza e il valore ENR letto sullo strumento di misura
  • Selezionare il successivo marcatore e fare di nuovo click sul pulsante TX On e annotare frequenza e valore ENR visualizzati dallo strumento di misura. Ripetere questo passo per tutti i marcatori creati.
  • Aprire in Settings, tab Computations, il tool di scrittura dei file ENR tramite il pulsante ENR INI Edit Tool e copiare frequenze ed ENR annotate nella tabella. Quindi salvare tramite il pulsante Export su un file ENRADALMPLUTO-20.ini

Salvataggio dati di calibrazione

Il sistema di NF/G Analyzer da questa versione salverà automaticamente i dati di calibrazione. I dati salvati possono essere riutilizzati per effettuare nuove misure risparmiando il tempo occorrente per la calibrazione. Per esempio è da ora possibile effettuare una calibrazione e misura di un DUT, chiudere l’applicazione, riaprirla ed effettuare la misura su un nuovo DUT con le stesse caratteristiche di frequenza e bandwidth, saltando la fase di calibrazione. E’ possibile altresì calibrare il sistema su più frequenze e bandwidth e successivamente effettuare la misura su più DUT, senza dover ricalibrare il sistema ogni volta.

Usufruire di questa nuova funzionalità è molto semplice. Se sono presenti dei dati di calibrazione in memoria, utilizzabili per le caratteristiche del marcatore attualmente selezionato, allora un piccolo LED posto accanto al pulsante di calibrazione si colorerà di giallo:

Il piccolo LED di colore giallo posto accanto al pulsante SYS CAL

A questo punto, si può decidere se utilizzare i dati in memoria o effettuare un nuovo ciclo di calibrazione e misura. Per utilizzare i dati di calibrazione in memoria ed avviare immediatamente la misura del DUT, fare click sul pulsante SYS CAL tenendo premuto contemporaneamente il tasto CTRL della tastiera. Il pulsante SYS CAL si colorerà immediatamente di verde ad indicare il recupero corretto dei dati di calibrazione e l’avvio della fase di misura. Invece, per ignorare la presenza di dati di calibrazione salvati ed effettuare un nuovo ciclo di calibrazione, sovrascrivendo così sui dati in memoria, allora è sufficiente fare click sul pulsante SYS CAL come di consueto.

Per far sì che il sistema proponga come riutilizzabili dei dati di calibrazione, alcuni parametri di configurazione della nuova misura devono essere identici a quelli salvati, tra cui i principali sono:

  • Stessa tipologia di misura: Manuale, Auto o Auto Adaptive
  • Stessa Frequenza
  • Stessa Frequenza IF se specificata
  • Stesso Bandwidth (Span)

Se uno o più dei suddetti parametri principali non coincide, allora il piccolo LED dedicato a segnalare la presenza di dati di calibrazione riutilizzabili, rimarra spento.

Per visualizzare la lista dei dati di calibrazione presenti in memoria, selezionare la voce List the saved calibration data to the trace log dal menu Computation->NF/G Analyzer->Calibration data:

Un esempio di lista dei dati di calibrazione salvati

Nel caso siano presenti dei dati di calibrazione riutilizzabili che rispecchiano i suddetti principali parametri, ma uno o più parametri secondari che potrebbero pregiudicare la bontà delle misure differiscono, allora il piccolo LED si colorerà di rosso ed è possibile utilizzare le informazioni visualizzate nel ballon tip per risalire ai parametri non corrispondenti:

Il piccolo LED accanto al pulsante SYS CAL è di colore rosso per via del parametro 24 non coerente rispetto ai dati di calibrazione salvati

In questo esempio, il parametro di configurazione attuale non corrispondente con quello salvato è il #24. Per risalire ad una descrizione del parametro partendo da questo numero, scegliere la voce Dump the selected calibration data to the trace log dal menu Computation->NF/G Analyzer->Calibration data:

Uno stralcio dei dati di calibrazione salvati del marcatore NF/G attualmente selezionato

Nell’esempio, il parametro che differisce è relativo alla temperatura dell’ambiente di lavoro che risulta essere di 296 Kelvins nei dati salvati mentre ad esempio è stata modificata dall’utente in configurazione a 290 Kelvins.

Misuratore di ENR

Il NF/G Analyzer di Satsagen può essere utilizzato per misurare l’ENR di una sorgente di rumore. Va premesso che per effettuare tale misura occorre una testina Noise Source perfettamente caratterizzata da usarsi come campione. Inoltre, questo misuratore non può sostituire una strumentazione professionale e calibrata in quanto gli errori introdotti dal sistema SDR possono accumularsi e portare a risultati non soddisfacenti. A tale proposito, si consiglia per queste misure l’utilizzo di un SDR che non abbia i mixer con comportamento armonico enfatizzato, come per esempio un RTL-SDR, con il quale è possibile misurare ENR con buoni risultati fino a circa 1,4 GHz.

  • Configurare il sistema come se si dovessero effettuare tradizionali misure di Noise Figure e Gain. Eventualmente visionare questo post dove illustro le basi per l’utilizzo del NF/G Analyzer.
  • Disattivare la voce Adaptive on three gain settings da Settings, tab Computations, in quanto tale modalità non è compatibile con la misura ENR
  • Attivare la voce ENR measurement dal menu Computation->NF/G Analyzer->Modes
  • Creare tanti marcatori di tipo CalcMode NF/G con span 400000 alle frequenze che si desidera caratterizzare in ordine crescente. Per esempio 71000000, 100000000, 144000000, 432000000 e così via di seguito.
  • Collegare la testina Noise Source campione
  • Selezionare il primo marcatore creato
  • Avviare il NF/G Analyzer facendo un click sul pulsante ON nella tab NF/G Analyzer
  • Fare click su SYS CAL e attendere il termine dell’acquisizione quando il pulsante diverrà di colore verde
  • Selezionare il prossimo marcatore ed effettuare nuovamente la procedura cliccando su SYS CAL, proseguendo poi per tutti i marcatori restanti, in questo modo il sistema memorizzerà i dati ENR della testina campione
  • Collegare la testina Noise Source da caratterizzare
  • Selezionare il primo marcatore
  • Tenendo premuto il tasto CTRL fare click sul pulsante SYS CAL
  • Annotare la lettura ENR:
Il display centrale visualizza il valore di ENR dB
  • Selezionare il successivo marcatore e tenendo premuto il tasto CTRL fare click su SYS CAL. Proseguire quindi con i restanti marcatori.
Varie, nuovi parametri di configurazione

In Settings, tab Computations, si possono specificare questi nuovi parametri al fine di perfezionare la precisione delle misure del NF/G Analyzer:

I nuovi parametri di configurazione per l’NF/G Analyzer

NS ON/OFF è un tempo di ritardo che il sistema introduce di seguito all’accensione o spegnimento della testina Noise Source prima di proseguire nella lettura. Può essere specificato in millisecondi o in drop samples, fare un click sul titolo dell’unità di misura per passare da una all’altra.

Ambient temperature può essere specificato in gradi Celsius o Kelvins

I campi Loss 1 e Loss 2 permettono rispettivamente di specificare la perdita di inserimento di cavi o connettori utilizzati per collegare verso l’ingresso e l’uscita dei DUT, i quali non sono contemplati dalla calibrazione.

Average/Time e Cumulative Folding

Average/Time e Cumulative sono metodi di folding che permettono di discriminare in modo netto i segnali dal rumore di fondo, soprattutto usati in ambito della radioastronomia.

Average/Time Folding

E’ un filtro che si seleziona tra i disponibili presenti nella lista VFilter Type con la voce Folding:

La manopola VF F per il controllo dei parametri di Folding attualmente selezionata per i cicli di AVG

Questo filtro è funzionante solo con il Multithreading attivo e con valori di Span inferiori o uguali al massimo bandwidth istantaneo del dispositivo, quindi per esempio nel caso di un RTL-SDR equivale a 1 MHz o per un ADALM-PLUTO rev B corrisponde a 30 MHz. Se una o più delle suddette condizioni non è soddisfatta, allora il filtro si disattiverà e la scritta VFilter Type lampeggierà in colore rosso.

Descrizione del funzionamento: I dati visualizzati sullo spettro sono processati in prima battuta da un filtro average classico che ne effettua una media su un numero di passaggi che l’utente può specificare da 1 (disabilitato) a 30 mediante la manopola VF F AVG. Nel suddetto esempio, il filtro average è configurato per 17 cicli. Successivamente i dati sono inseriti in un registro a scorrimento composto da un numero di blocchi che l’utente può specificare con la stessa manopola posizionata su VF F Blocks:

La manopola VF F per il controllo dei parametri di Folding attualmente selezionata per modificare il numero di blocchi del registro a scorrimento

Nell’esempio, il registro a scorrimento del filtro è costituito da 2362 blocchi.

I dati vengono quindi processati dal registro a scorrimento e visualizzati. Nell’esempio, in uscita dal registro a scorrimento avremo la media degli ultimi 2362 blocchi in un periodo di tempo (Folding Period) determinato dalla dimensione del pre-filtro average e dal numero di blocchi del registro, il quale periodo è stimato in tempo reale e visualizzato in secondi accanto alla manopola, 32 secondi nel nostro esempio.

Poiché il consumo di memoria di questo filtro può raggiungere valori elevati per via della quantità dei dati presenti nel registro a scorrimento che corrisponde ai dati dello spettro nella risoluzione determinata dal FFT size moltiplicata per il numero dei blocchi costituenti il registro, il sistema ne limita la dimensione a circa 1 GB di RAM massimi.

Cumulative Folding

Il Cumulative Folding è implementato in Satsagen partendo dai dati grezzi processati dal FFT in un flusso a se stante, quindi indipendente dai filtri VFilter e da quanto verrà poi visualizzato sul display principale dello spettro. Difatti, i risultati del Cumulative Folding sono visualizzati in una finestra indipendente in un display dedicato, dove l’ampiezza è espressa in mW.

Il Cumulative Folding si avvia con la voce SA cumulative folding dal menu Run.

In sostanza, il Cumulative Folding ripiega su se stesso lo spettro effettuandone una mera somma algebrica, in modo ripetitivo fino a quando l’utente non lo ferma tramite la stessa voce del menu Run->SA cumulative folding o all’occorrenza di uno dei seguenti eventi:

  • Chiusura completa del programma Satsagen
  • Modifica della frequenza centrale, dello span o del resolution bandwidth dello spectrum analyzer di Satsagen

Mentre l’azione di spegnimento e riaccensione dello spectrum analyzer implica solo una interruzione momentanea del Cumulative Folding.

Il tempo di esposizione accumulato dal Folding viene visualizzato in secondi nel titolo del display della finestra dedicata.

Lo stesso titolo visualizza il nome del file di appoggio dove il programma salva i risultati automaticamente ogni circa 10 secondi.

I file sono salvati nella cartella documenti\satsagen\export e possono essere aperti anche off-line per essere visionati tramite il menu File con la voce Load Cumulative Folding Data. Da questa visualizzazione è possibile anche esportare i dati in formato CSV tramite il menu File e la voce Save as CSV.

Se si fa ripartire da zero innavertitamente il Cumulative Folding, è possibile comunque ripristinare l’acquisizione con i dati accumulati e salvati mediante la seguente procedura:

  • Far partire una nuova acquisizione
  • Dal menu File scegliere Load cumulative folding data e aprire il file della registrazione interrotta dalla directory documenti\satsagen\export
  • Dal menu File della stessa finestra di caricamento scegliere la voce Merge e confermare la volontà di effettuare il merge dei dati del file appena caricato sulla sessione di acquisizione in corso

Miglioramenti e aggiunte

Profili di configurazione

Da queste versione, oltre all’icona shortcut principale, il setup crea ulteriori tre shortcut al programma Satsagen con tre profili di configurazione distinti: SATSAGEN Config #1, #2 e #3.

I quattro shortcut creati dal Setup di Satsagen

Le tre configurazioni aggiuntive sono assolutamente separate, è possibile in questo modo avviare in totale quattro istanze di Satsagen (non necessariamente in modo contemporaneo) con quattro distinte configurazioni, da eventualmente dedicare per l’utilizzo del NF/G Analyzer, o del VNA, o al power meter e così via, senza dover necessariamente modificare la configurazione per adattarla ai dispositivi e alle funzionalità che servono di volta in volta.

Nel titolo della finestra principale di SATSAGEN viene visualizzato in numero di configurazione attualmente in uso
Filtro Smoothing in secondi per dB

E’ stato aggiunto un filtro di tipo Smoothing selezionabile dalla lista VFilter Type come Smooth S/dB.

Nel filtro Smoothing tradizionale, la visualizzazione dei segnali ricevuti è “levigata” aggiungendo ad ogni passaggio una frazione di dBm impostata dall’utente, fino al raggiungimento della potenza reale.

In questo filtro, la visualizzazione nella potenza piena dei segnali si raggiunge in termini di secondi per dB impostabili dall’utente, da un minimo di 0.01 secondi per dB ad un massimo di 600 secondi per dB.

Immaginando la presenza di un segnale CW a -90 dBm, un noise floor a circa -100 dBm e un’impostazione di Smooth S/dB a 1 secondo/dB, il suddetto segnale verrà visualizzato con una crescita progressiva fino alla potenza di -90 dBm in circa 10 secondi.

In questo modo è possibile discriminare i segnali che hanno una continuità definita nel tempo.

Bias DC su connettore RX

Alcuni dispositivi SDR (quali l’RTL-SDR, AirSpy, HackRF ed altri) possono fornire una tensione DC sul connettore RX utile per eventualmente alimentare amplificatori esterni di antenna.

Di default, questa opzione, se presente nel dispositivo, è disabilitata.

Da questa versione di Satsagen, è possibile manualmente attivare il Bias DC agendo sul menu Settings->Device session settings alla voce Enable DC Bias Antenna.

Se il dispositivo di ricezione non prevede la suddetta opzione, la voce di menu sarà disabilitata.

Poiché la tensione DC fornita dal SDR può danneggiare eventuali dispositivi sensibili quali attenuatori o altri SDR direttamente collegati che hanno un accoppiamento in corrente continua, l’abilitazione avrà una validità solo all’interno della sessione di collegamento al dispositivo, per cui al riavvio del programma, o ad un ciclo di Power Off/On, il DC Bias verrà disabilitato e dovrà essere all’occorrenza acceso manualmente di nuovo tramite la suddetta voce di menu.

Un’ulteriore sicurezza è data dal messaggio di conferma per l’abilitazione del DC bias che verrà visualizzato in seguito alla scelta della voce Enable DC Bias Antenna:

Il messaggio di richiesta conferma per l’abilitazione del DC Bias
Generatore, pulsante TX On

Nel pannello del Generatore, ho aggiunto un pulsante TX On utilizzabile per spegnere o accendere l’output TX.

Il piccolo pulsante TX On del pannello Generator

Rispetto al pulsante che avvia il Generatore, il TX On ha una risposta immediata perché agisce direttamente sugli stadi di output, mentre il pulsante di avvio Generatore determina e prepara la configurazione del dispositivo SDR in base alle impostazioni dell’utente e poi avvia lo stream in output, per cui, per esempio, la creazione in memoria di uno stream di modulazione a 10 Hz può richiedere un tempo attesa che può anche superare un secondo, in base alle caratteristiche del PC in uso.

Se Satsagen viene configurato nella modalità dual-devices, dove un dispositivo ha un ruolo esclusivo di RX e l’altro di TX, è possibile abilitare la voce Discipline XO nei Device Options del riquadro TX device. La suddetta funzione è già presente da tempo nella storia delle versioni di Satsagen ed è un meccanismo che automaticamente regola la correzione sul clock di riferimento del dispositivo TX in modo da mantenerlo costantemente allineato alla frequenza del RX durante le scansioni di Spectrum Analyzer con tracking.

Poiché ho riscontrato che può essere poco pratico all’occorrenza abilitare o disabilitare tale funzionalità di disciplina XO passando da Settings e di conseguenza bloccando la scansione in corso, ho aggiunto un menu contestuale che permette tale manovra (ed anche altro) durante le scansioni facendo semplicemente un click destro nell’area di stato del pannello Spectrum Analyzer con tracking e scegliendo l’azione desiderata:

Il menu pop-up che permette di controllare la funzione discipline XO durante le scansioni

Multithread Max instant bandwidth

Con il multithreading abilitato, Satsagen esegue una serie di processi dedicati che si occupano di acquisire in tempo reale dal dispositivo SDR il flusso di dati (stream).

Questo avviene solo se lo Span impostato dall’utente rientra nel massimo bandwidth istantaneo del dispositivo SDR.

Se il sistema PC/USB o Ethernet/SDR non è sufficientemente veloce, avvengono degli overflow che sono conteggiati e visualizzati sotto il display dello spettro con la voce OF.

In situazioni limite, dove la frequenza degli overflow è alta, con determinati dispositivi SDR possono avvenire dei blocchi o i thread che si occupano dell’acquisizione possono chiudersi in modo inaspettato fermando la visualizzazione dello spettro.

Per evitare i suddetti blocchi e chiusure inaspettate, è possibile impostare in configurazione il massimo instant bandwidth oltre il quale Satsagen spegne l’acquisizione in tempo reale commutando in una modalità più lenta, ma che non produce più blocchi e chiusure inaspettate.

Per impostare tale soglia andare in Settings alla scheda Extra:

Il selettore per impostare il massimo instant bandwidth

La voce Max instant bandwidth è di default impostata sulla massima velocità del dispositivo (Device MAX); è possibile quindi posizionarla da un minimo di 5 MSPS fino ad un massimo di 56 MSPS. Il valore corretto deve essere trovato effettuando dei test, per esempio partendo dal valore più basso e innalzandolo fino a quando il sistema “regge” senza provocare blocchi o chiusure inaspettate.