Descrizione
Desidero generare manualmente un file di forma d'onda (*.wv) con Python che posso poi caricare sul mio generatore di segnali vettoriali.
Desidero generare manualmente un file di forma d'onda (*.wv) con Python che posso poi caricare sul mio generatore di segnali vettoriali.
Per generare manualmente un file *.wv sono necessari i dati I e Q della forma d'onda e la frequenza di campionamento (clock) con cui il segnale viene campionato.
In questo semplice esempio si utilizza un clock di 10 MHz e una sequenza I/Q di 20 campioni.
Nell'intestazione del file di forma d'onda vengono inseriti i cosiddetti tag. I tag TYPE, CLOCK, LEVEL OFFS e WAVEFORM sono obbligatori per ogni forma d'onda.
Tutti gli altri tag sono opzionali e possono essere inseriti dopo il tag TYPE in ordine arbitrario.
L'intervallo numerico compreso tra -1,0 e +1,0 dei dati I e Q corrisponde all'intervallo di modulazione del convertitore D/A a 16 bit della forma d'onda, compreso fra -32767 e +32767.
Questi numeri interi firmati a 16 bit devono essere convertiti nei valori I e Q risultanti, rappresentati in formato esadecimale Little endian.
Quindi i dati devono essere inseriti in formato binario nel tag WAVEFORM con la seguente struttura:
Dopo aver eseguito il codice di cui sopra, il file generato può essere aperto con R&S ARB Toolbox e fornisce la seguente forma d'onda. Confrontando i dati I e Q del codice Python, si può notare che i dati sono stati generati correttamente.
Riferimenti:
SMBV100B - Manuale d'uso
https://www.rohde-schwarz.com/produkte/messtechnik/vektorsignalgeneratoren/rs-smbv100b-vektorsignalgenerator_63493-519808.html