Curso de VHDL (blog)

Lección 12.Curso VHDL.V77. Testbench: reg SISO, SIPO, carga paralelo, reset sincrónico.

En este video te muestro el testbench de un registro de desplazamiento a derecha tipo SISO (serial input serial output) que también es SIPO (serial input parallel output), con carga paralelo, sincrónico y con reset sincrónico. Genero dos pulsos de reset usando “after”. Lo simulo con el ModelSim para comprobar el correcto funcionamiento.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Lección 12.V76. Descripción: registro SISO, SIPO, carga paralelo, sincrónico, genérico, con reset.

En este video te muestro la descripción de un registro de desplazamiento a derecha tipo SISO (serial input serial output) que también es SIPO (serial input parallel output), con carga paralelo, sincrónico y con reset sincrónico. Te muestro el circuito esquemático Technology Map Viewer generado por tool del Quartus II. La señal “serial input” entra al bit más significativo del registro que se encuentra a la izquierda. Uso la concatenación de vectores para generar el nuevo contenido del registro

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Lección 12.V75. Testbench del registro SISO/SIPO, sincrónico, desplazamiento a derecha.

En este video te muestro el testbench de un registro SISO (serial input, serial output)/ SIPO(serial input, parallel output), de desplazamiento a derecha, sincrónico, para 5 bits. Como la descripción no tiene la señal de reset, espero 5 ciclos de reloj, con SI=0 para que el registro se encuentre reseteado.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Lección 12.V74. Descripción: registro SISO/SIPO, genérico, sincrónico, desplazamiento a derecha.

En este video te muestro la descripción de un registro SISO (serial input, serial output)/ SIPO(serial input, parallel output), de desplazamiento a derecha, sincrónico y genérico. La señal “serial input” entra al bit más significativo del registro que se encuentra a la izquierda y el bit menos significativo sale por la derecha a “serial output” (bit menos significativo de la salida en paralelo). Este ejemplo también consta de salida paralelo de manera que también es un registro SIPO. Uso la concatenación de vectores para generar el nuevo contenido del registro.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Lección 12.V73. Testbench y simulación: registro PIPO, sincrónico con habilitación y salida tri-state.

En este video te muestro el testbench para un registro sincrónico PIPO (parallel input parallel output), de 4 bits, con reset sincrónico, habilitación del registro (ce, chip-enable) y habilitación del buffer de salida tri-state (oe, output enable). Luego vemos la simulación. El código del testbench lo puedes ver completo más abajo, ya que no lo expliqué totalmente en el video para no hacerlo demasiado largo. Te muestro cómo sincronizar la señal output enable que en el diseño aparece como asincrónica. Analizo todas las combinaciones de las señales de control de entrada.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Ventana de forma de ondas correspondiente al testbench del registro explicado.

Lección 12.V72. Registro PIPO, sincrónico, habilitación y salida de alta impedancia.

En este video te muestro la descripción VHDL de un registro PIPO (parallel input parallel output), sincrónico, genérico, con habilitación del registro y habilitación de las salidas tri-state. Señales chip-enable y output-enable. Te muestro la sentencia VHDL que permite generar un buffer tri-state. El reset es sincrónico. Luego de compilar, vemos los warnings. Te muestro también el circuito esquemático generado por “Technology Map Viewer” de “Tool” y lo analizo, comprobando la existencia de los buffers tri-state sintetizados.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Lección 12.V70. Descripción de un registro PIPO genérico, sincrónico, con reset.

En este video te muestro la descripción VHDL de un registro PIPO (parallel input, parallel output), sincrónico, genérico. Es muy sencillo, consta de un único proceso explícito que se dispara con la señal de reloj. El reset es sincrónico. Luego de compilar, vemos los warnings. Te muestro también el circuito esquemático generado por “Technology Map Viewer” de “Tool” y lo analizo.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.


Lección 11.V69.2. Análisis de un error de la simulación producido por el testbench del contador M.

En este video te muestro cómo falla la simulación en el ModelSim debido a un mal diseño del testbench del contador de módulo 10 que habíamos visto. El error es debido a la forma de generar los pulsos del reset (distinta a la que expliqué en el video anterior). El simulador del ModelSim se “cuelga” y no da ningún informe.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Este es el código erróneo que no se puede usar en forma simultánea:

Cuando se corre la simulación la ventana Transcript se ve así:

No hay información alguna sobre el resto de la simulación a partir de 0 ps. La simulación no terminó, se “colgó”. No sale ni por verificación exitosa ni por interrupción por error.

Haciendo zoom al inicio de la simulación se puede ver qué sucedió con la señal de reset. La señal de habilitación nunca cambió de estado.

La ventana de forma de ondas antes de hacer el zoom, se veía así:

Lección 11.V69.1. Testbench y simulación del contador sincrónico, módulo M (decimal).

En este video te explico el testbench de un contador de módulo genérico, probado para módulo 10 (contador decimal). Genero un pulso de reset al principio para dar el valor inicial a las señales y otro pulso para resetear el contador cuando estaba funcionando normalmente. Pruebo la señal de habilitación activa e inactiva. Simulo para comprobar el correcto funcionamiento. Te explico el “warning” por “metavalue” que genera el ModelSim y porqué no es importante.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Generación de los pulsos de reset:

Warning que aparece en la ventana Transcript del ModelSim cuando se ejecuta la simulación:

Lección 11.V68. Contador sincrónico, de módulo arbitrario, ejemplo contador decimal.

En este video te explico la descripción de un contador sincrónico, genérico, de módulo M, que no es potencia de 2. Consta de la señal de reset para darle un valor inicial y de la señal de habilitación. Detecta el valor valor máximo de la cuenta, M-1 para reinicializar la cuenta. Explico porqué se compara con el valor del módulo menos uno. Explico qué instrucción va a producir un warning, posteriormente en la simulación con el ModelSim y porqué se produce. Luego analizo el circuito esquemático Technology Map Viewer que genera el Quartus II. Una celda de lógica combinacional sintetizó el detector del 9 (el ejemplo usa una constante M=10, se trata de un contador decimal) usando una compuerta OR. La salida de esa compuerta se niega para generar el port de salida tc_o (cuenta terminal), y se usa para resetear en forma sincrónica los flip-flops, generándose así el valor inicial de la cuenta.

Si te parece útil la explicación no te olvides de darle un clic a “me gusta” ¡Gracias! Para contactarme y solicitarme los manuales del Quartus II que escribí en español en lenguaje amigable (no son una traducción) y también los archivos de las descripciones y testbenchs en formato texto para que los puedas probar, entrá en /contactame/.

Technology Map Viewer.