FAQs from Rohde & Schwarz

Esempio di come generare manualmente un file *.wv con Python

Descrizione

Desidero generare manualmente un file di forma d'onda (*.wv) con Python che posso poi caricare sul mio generatore di segnali vettoriali.

Risoluzione

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.

FAQ-Esempio su come generare manualmente un file.wv con Python_01

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:

  • Calcolo della lunghezza
  • Lunghezza = Numero di coppie I/Q * 4 + 1 = 20*4 + 1 = 81 byte
  • Posizionare la stringa {WAVEFORM-81:# all'inizio del set di dati
  • Posizionare il simbolo } alla fine del set di dati

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.

FAQ-Esempio su come generare manualmente un file.wv con Python_02

Riferimenti:
SMBV100B - Manuale d'uso
https://www.rohde-schwarz.com/produkte/messtechnik/vektorsignalgeneratoren/rs-smbv100b-vektorsignalgenerator_63493-519808.html