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 http://susycursos.com/contactame/.
Ventana de forma de ondas correspondiente al testbench del registro explicado.
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 http://susycursos.com/contactame/.
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 http://susycursos.com/contactame/.
Generación de los pulsos de reset:
Warning que aparece en la ventana Transcript del ModelSim cuando se ejecuta la simulación:
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 http://susycursos.com/contactame/.
En este video explico el testbench del contador sincrónico, genérico, bidireccional. Y luego lo uso para simular. Genera la señal periódica del reloj, genera un pulso de reset. El reset le da un estado inicial a la cuenta. Modeliza el tiempo de establecimiento y tiempos de propagación. Genera secuencias ascendentes de conteo, luego descendentes. Habilita e inhabilita al contador.
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 http://susycursos.com/contactame/.
En este video te explico el testbench para el contador genérico, sincrónico, binario, con señales de habilitación y reset sincrónicos y con salidas: estado y cuenta terminal, descripto en el video anterior. El simulador produce el warning: METAVALUE DETECTED. Analizo este warning y explico cómo evitarlo.
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 http://susycursos.com/contactame/.
El ModelSim da el siguiente warning cuando simula:
No obstante la decisión que tomó (FALSE) es correcta y vemos en la ventana de forma de ondas las salidas esperadas.
El warning es producido por la sentencia del renglón 39 de la descripción VHDL del contador, debido a que la señal auxQ no tiene un valor definido antes de que llegue el primer flanco creciente de la señal de reloj. El valor false que dio el simulador a la comparación: auxQ = M – 1, es correcto, por lo tanto tc_o tendrá un ‘0’ como valor inicial. Esto no es lo que sucede con el hardware, en el que ese valor no se puede conocer.
Hay una forma de evitar ese warning pero no es recomendable porque algunas FPGA sintetizarán hardware y otras no. Simplemente muestro cuál es pero no la voy a usar. Es mejor tener la información de este warning y estudiar a qué se debe y si para nuestro circuito es o no importante.
En el renglón 24, vemos la modificación, ahora la señal auxQ tiene un valor inicial. Para el simulador esta solución es óptima. No para todas las FPGA.
Cuando compilamos nuevamente con esta modificación y simulamos constatamos que el warning no aparece más en la ventana Transcript del ModelSim.
Vemos que en la ventana de forma de ondas ahora la salida q_o ya no tiene el símbolo ‘U’ de undefined, o sea, no inicializado. El resto está igual que en la anterior simulación.
En este video comparo dos descripciones para un contador sincrónico, genérico, bidireccional. Te muestro el RTL Viewer en ambos casos para justificar la segunda descripción (ahorra recuersos de hardware). En esa descripción uso una señal auxiliar “dir” para lograr que el contador incremente el valor de la cuenta cuando la señal del port de entrada “up_i” esté en ‘1’ o que lo decremente cuando” up_i” esté en ‘0’. Uso una señal integer y el atributo “range”, explico porqué es conveniente definir un rango. También comento la diferencia entre usar señales o usar variables. Compilo y analizo el Technology Map Viewer. Muestro que la señal auxiliar “dir” no se sintetizó.
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 http://susycursos.com/contactame/.
Technology Map Viewer.
Te muestro el código “clásico” de un contador bidireccional, para que compares ambos diseños, fíjate cómo el primero es más claro, en él se evitó tener una gran cantidad de sentencias “if” anidadas que ensucian el código. Y, además, a continuación te muestro el esquemático RTL Viewer que generó el Quartus II para que lo compares con el anterior y compruebes cómo el primer diseño optimizó los recursos del hardware.
En este video te explico la descripción de un contador genérico, sincrónico, binario, de módulo potencia de 2, con salidas: cuenta terminal y estado (valor de la cuenta). Analizo una sentencia que en la simulación va a producir un “Warning: metavalue detected”. Analizo el circuito generado.
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, entra en http://susycursos.com/contactame/.
Esquema circuital producido por Technology Map Viewer.
En este video te explico el testbench del contador sincrónico, genérico, binario, con módulo potencia de dos y con reset sincrónico. El reset sincrónico la da un estado inicial. Te muestro cómo se genera la señal de reset y qué ancho aproximado debería tener. Realizo la simulación y la explico.
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, entra en http://susycursos.com/contactame/.