Un chip se describe antes de construirlo
El chip de un teléfono tiene miles de millones de interruptores. Nadie los dibuja uno por uno. Un ingeniero escribe el circuito como texto, en un lenguaje de descripción de hardware, y un programa ejecuta ese texto para ver qué haría el chip mucho antes de fabricarlo.
Al terminar esta lección
Nota
Puedo simular un circuito pequeño escrito en Verilog y leer la tabla y la forma de onda que produce.
Palabras clave
- Módulo: un circuito, con entradas y salidas.
- Banco de pruebas: un módulo que maneja otro y muestra lo que sale.
- Reloj: una señal que sube y baja a un ritmo constante.
- Forma de onda: cómo cambian las señales a medida que pasa el tiempo.
- Simulación: ejecutar la descripción en un ordenador.
Para empezar: lo que ya sabes
Nota
Responde mentalmente. 1. ¿Cuánto es 1 + 1 en binario? 2. ¿Qué da una puerta AND con dos 1? 3. ¿Qué es un bit? Necesitarás la primera respuesta enseguida.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de arriba de esta lección. Este laboratorio es una máquina Ubuntu entera solo para ti, así que tarda un poco más en arrancar que un contenedor. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno tras otro en la misma sesión. Si uno dice que la máquina todavía está arrancando, espera unos segundos y púlsalo de nuevo. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal en la barra.
Un circuito es un texto corto
Tus archivos están en la carpeta hdl. El primer comando entra en ella y el siguiente muestra half_adder.v. Un semisumador suma dos bits. Es un solo módulo con dos entradas, a y b, y dos salidas. sum es a ^ b, que es XOR, y carry es a & b, que es AND.
cd hdlSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
cat half_adder.vSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un banco de pruebas lo ejecuta y muestra la tabla
La herramienta es Icarus Verilog. iverilog compila el circuito y su banco de pruebas en un solo programa y no muestra nada si todo va bien. vvp ejecuta ese programa. El banco de pruebas prueba las cuatro entradas y muestra una tabla de verdad: la fila 1 1 da carry 1 y sum 0, que es 10 en binario, así que 1 + 1 = 2.
iverilog -o /tmp/half half_adder.v half_adder_tb.vSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
vvp /tmp/halfSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprueba
Consejo
¿Qué entradas ponen carry a 1? Respuesta: solo a = 1 y b = 1, la fila en la que la suma no cabe en un bit.
Un error frecuente
Advertencia
Mucha gente cree que un archivo Verilog se ejecuta línea por línea, como un script de Python. No es así. Un módulo describe piezas que existen todas a la vez, y una línea assign es un cable que siempre sigue a sus entradas. Léelo como un dibujo, no como una lista de pasos.
Un reloj y una forma de onda
counter.v es un contador de 4 bits: q sube de uno en uno cada vez que clk sube, y rst lo pone a 0. Su banco de pruebas crea un reloj y guarda todas las señales en un archivo VCD, out/counter.vcd. El segundo Ejecutar muestra q tras 112 unidades de tiempo: 10. El tercero convierte el archivo en texto, una fila por señal y una columna por cada 5 unidades de tiempo. # es 1 y _ es 0. q se queda en 0 mientras rst está alto, y luego sube de uno en uno cada vez que sube clk. dut.q es la misma señal dentro del contador.
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.
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.
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.
Comprueba
Consejo
¿Cuántas veces subió clk mientras q pasaba de 0 a 10? Respuesta: diez, una por cada paso de la cuenta.
El mismo circuito en VHDL
VHDL es el otro lenguaje habitual. GHDL lo ejecuta en tres pasos. ghdl -a analiza los archivos y los comprueba. ghdl -e elabora el banco de pruebas, lo que construye un programa. ghdl -r lo ejecuta, y el banco de pruebas informa de las cuatro filas de la misma tabla de verdad: a, b, carry y sum.
ghdl -a half_adder.vhd half_adder_tb.vhdSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
ghdl -e half_adder_tbSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
ghdl -r half_adder_tbSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprobación final
Consejo
Responde sin volver atrás. 1. ¿Qué hace un banco de pruebas? 2. ¿Qué hace vvp? 3. ¿Cuáles son los tres pasos de GHDL? 4. ¿Qué muestra cuándo cambia una señal? Respuestas: maneja un módulo y muestra lo que sale; ejecuta la simulación compilada; analizar, elaborar, ejecutar; una forma de onda. Ahora abre el README.md de tu carpeta personal con cat ~/README.md: tú escribes el sumador completo y el contador.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección que se trabaja en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia de cada alumno. Se trabaja en un laboratorio de VM: cada alumno tiene su propia máquina Ubuntu con los simuladores instalados, y un botón Ejecutar escribe en su terminal y muestra lo que se imprimió. Puntos clave: 1. Un módulo es un circuito con entradas y salidas. 2. Un banco de pruebas lo maneja y muestra la tabla de verdad. 3. Un reloj hace que un circuito cambie paso a paso, y una forma de onda lo muestra. Error frecuente: leer Verilog como pasos en orden. Material: el laboratorio y un navegador. Consejo: antes del vvp, pida a la clase que prediga las cuatro filas. El propio laboratorio tiene una comprobación que califica tres diseños con bancos de pruebas ocultos. Copie la lección en su propio módulo para cambiarla, o construya una desde cero con el menú Laboratorio del constructor de lecciones.