¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo leer un diagrama de ondas

Después de esta lección: Puedo leer un archivo de ondas y decir qué pasó en cada pulso del reloj.

Lección de 50 min8 comandosLaboratorio de Diseño digital: Verilog, VHDL y yosys en una VM Ubuntu privada

Qué hizo el circuito y cuándo

Un diagrama de ondas, o forma de onda, muestra cómo cambia cada señal de un circuito a lo largo del tiempo. Leerlo es la forma normal de saber qué hizo un circuito y de encontrar por qué falla.

Piensa en el registro de un torno de metro, que apunta la hora de cada paso. Una onda es lo mismo para cada señal del circuito.

Al final de esta lección

Nota

Puedo leer un archivo de ondas y decir qué pasó en cada pulso del reloj.

Palabras clave

PalabraQué significaEjemplo
Señalun valor del circuito que cambia con el tiempoclk
Forma de ondael dibujo de cómo cambia una señal
Archivo VCDun texto que anota cada cambio de cada señal
Busvarios bits que se leen juntos como un númeroq
Marca de tiempouna línea del VCD que empieza por # y fija el instante#15
xun valor desconocido todavía

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un archivo VCD es una lista de cambios

El simulador guarda las ondas en un archivo VCD, que es solo texto. No anota el valor de cada señal en cada instante. Anota cambios.

Primero, líneas $var que dan un código corto a cada señal. Después, una marca de tiempo como #5 y debajo las señales que cambian en ese instante. Los Runs simulan el contador del laboratorio y miran su archivo.

Entra en la carpeta del laboratorio

Comando
cd ~/hdl

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Compila el contador con su banco de pruebas

Comando
iverilog -o /tmp/counter counter.v counter_tb.v

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Simula y escribe el archivo VCD

Comando
vvp /tmp/counter

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Las señales que anota el archivo

Comando
grep '\$var' out/counter.vcd

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo: el principio de los cambios

Código: bash
#0
$dumpvars
bx $
1#
0"
bx !
$end
#5
b0 !
b0 $
1"
#10
0"

vcd2txt convierte la onda en filas de texto

El laboratorio trae la herramienta vcd2txt. Escribe una fila por señal y una columna por cada tantas unidades de tiempo como le pidas.

Un _ es un 0 y un # es un 1. En un bus se ve el número. Una x es un valor desconocido.

La onda con una columna cada 5 unidades

Comando
vcd2txt out/counter.vcd 5

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

La misma onda con una columna cada 10

Comando
vcd2txt out/counter.vcd 10

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que una onda con pocas columnas es igual de fiel. Si cada columna dura más que medio periodo del reloj, se salta cambios. Con 10 unidades por columna, el reloj parece parado en 0.

Qué pasó en cada pulso del reloj

Para saber qué pasó en un pulso, mira la columna donde el reloj sube y compara la de antes con la de después.

En el contador, el reloj sube cada 10 unidades desde la 5. El reset baja en la 12, así que el primer pulso con cuenta es el de la 15, donde q pasa de 0 a 1. El archivo tiene una marca por cada instante con cambios: 23 múltiplos de 5, más la 12 y la 112 del final.

Cuántas marcas de tiempo tiene el archivo

Comando
grep -c '^#' out/counter.vcd

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Dibuja la onda como imagen

Comando
vcd2svg out/counter.vcd out/counter.svg

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos

El puerto 8000 del laboratorio muestra la carpeta out. Abre la imagen counter.svg en el navegador y busca los cuadros del bus q: cada cuadro es un valor.

Compara con la fila de texto. Pregúntate qué onda daría un contador con una habilitación que se apaga en mitad de la cuenta.

Sobre este laboratorio y su código: Laboratorio de Diseño digital: Verilog, VHDL y yosys en una VM Ubuntu privada

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.