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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Señal | un valor del circuito que cambia con el tiempo | clk |
| Forma de onda | el dibujo de cómo cambia una señal | |
| Archivo VCD | un texto que anota cada cambio de cada señal | |
| Bus | varios bits que se leen juntos como un número | q |
| Marca de tiempo | una línea del VCD que empieza por # y fija el instante | #15 |
| x | un 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
cd ~/hdlSe 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
iverilog -o /tmp/counter counter.v counter_tb.vSe 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
vvp /tmp/counterSe 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
grep '\$var' out/counter.vcdSe 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
#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
vcd2txt out/counter.vcd 5Se 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
vcd2txt out/counter.vcd 10Se 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
grep -c '^#' out/counter.vcdSe 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
vcd2svg out/counter.vcd out/counter.svgSe 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.