FAQs from Rohde & Schwarz

Ejemplo de cómo generar manualmente un archivo *.wv con Python

Descripción

Quiero generar manualmente un archivo de forma de onda (*.wv) con Python que pueda después cargar en mi generador de señales vectoriales.

Resolución

Para generar manualmente un archivo *.wv necesita los datos I y Q de su forma de onda y la frecuencia de muestreo (reloj) con la que se muestrea la señal.

En este ejemplo sencillo se utiliza un reloj de 10 MHz y una secuencia I/Q de 20 muestras.

FAQ-Example-on-how-to-manually-generate-a-.wv file-with-Python_01

En el encabezado de la forma de onda se insertan las etiquetas. Las etiquetas TYPE, CLOCK, LEVEL OFFS y WAVEFORM son obligatorias para cada forma de onda.

Todas las demás etiquetas son opcionales y se pueden insertar después de la etiqueta TYPE en cualquier orden.

El rango numérico entre –1,0 y +1,0 de los datos I y Q corresponde al rango de modulación del convertidor D/A de 16 bits de forma de onda de -32767 hasta +32767.

Estos números íntegros de 16 bits deben convertirse a los valores I y Q resultantes representados en formato little endian hexadecimal.

A continuación deben insertarse los datos en formato binario en la etiqueta WAVEFORM con la siguiente estructura:

  • Cálculo de la longitud
  • Longitud = número de pares I/Q * 4 + 1 = 20*4 + 1 = 81 bytes
  • Colocar la cadena {WAVEFORM-81:# al inicio del conjunto de datos
  • Colocar el símbolo } al final del conjunto de datos

Tras ejecutar el código indicado arriba se puede abrir el archivo generado con el R&S ARB Toolbox y proporciona la siguiente forma de onda. Comparando los datos I y Q del código Python se puede ver que los datos se han generado correctamente.

FAQ-Example-on-how-to-manually-generate-a-.wv file-with-Python_02

Referencias:
Manual de usuario de SMBV100B
https://www.rohde-schwarz.com/produkte/messtechnik/vektorsignalgeneratoren/rs-smbv100b-vektorsignalgenerator_63493-519808.html