Lección 15.V102. Sumador serie. Casteo y acondicionamiento de operandos.

En este video describo un sumador serie basado en dos registros de desplazamiento, un sumador completo de 1 bit y un flip-flop tipo D, como muestro en un esquema. Explico cómo generar el flip-flop D y porqué es necesario incluirlo. Explico una solución para realizar la suma de 1 bit cuando los operandos contienen 1 solo bit de un std_logic_vector. Te muestro ejemplos de sumas realizadas de esta manera.

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 https://susycursos.com/contactame/.

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 https://susycursos.com/contactame/.

Technology Map Viewer.

Lección 11.V65. Testbench. Simulación. Metavalue. Contador con habilitación y reset sincrónicos, estado y cuenta terminal.

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 https://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.

Lección 11.V66. Contador binario, sincrónico, genérico, bidireccional.

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 https://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.

RTL Viewer.

Lección 11.V64. Contador binario, habilitación y reset sincrónicos, cuenta terminal y estado.

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 https://susycursos.com/contactame/.

Esquema circuital producido por Technology Map Viewer.

Detalle de las celdas lógicas combinacionales.

Lección 11.V62. Descripción de un contador binario sincrónico, genérico, con reset sincrónico.

En este video te explico la descripción VHDL de un contador binario, genérico, de módulo potencia de 2, con reset sincrónico, también llamado cíclico. Tiene la entrada de pulsos a contar (reloj) y la de reset y como salida el estado de la cuenta. Como uso una señal de tipo unsigned incluyo el package numeric_std. Uso la función rising_edge. Compilo y controlo los “warnings”. Luego recurro a la herramienta “Tool” del Quartus II y selecciono “Technology Map Viewer” para ver y analizar el circuito esquemático 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 https://susycursos.com/contactame/ .



Desplegando el contenido de las celdas combinacionales vemos la señal de reset que llega a todas para generar en forma sincrónica el estado inicial del contador.

Lección 11.V61. Explicación y testbench sobre las limitaciones del contador sin una señal de reset.

En este video te explico el testbench para el contador elemental del video anterior. Se trataba de un contador con solo señal de pulsos a contar y la salida del estado de la cuenta. Te explico los problemas que se generan al no partir de un estado inicial conocido. Te muestro el testbench interactuando con la descripción. También analizo qué sucede en el hardware cuando no hay un estado inicial mirando el circuito generado por la herramienta “Technology Map Viewer” del Quartus II.

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 https://susycursos.com/contactame/ .

Salida de la ventana “transcript” luego de la simulación en el ModelSim.

Lección 11. V60. Contador sincrónico binario de módulo potencia de dos.

En este video te explico la descripción VHDL de un contador binario de módulo potencia de 2, también llamado cíclico. Como primer ejemplo elegí un contador que tiene solamente la entrada de pulsos a contar (reloj) y como salida el estado de la cuenta. Como uso una señal de tipo unsigned incluyo el package numeric_std. Uso la función rising_edge. Compilo y controlo los “warnings”. Luego recurro a la herramienta “Tool” y selecciono “Technology Map Viewer” del Quartus II para ver y analizar el circuito esquemático 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 https://susycursos.com/contactame/ .


Lección 3.V20. Decodificador genérico.

Descripción VHDL de un decodificador genérico de N bits, con habilitación activa en alto y salida activa en alto. Uso de proceso explícito: process. Uso del package numeric_std, para usar tipo de datos unsigned. Uso de la función to_integer para poder usar los std_logic_vector como subíndices. Uso de de generic. Puedes ver el código en mi post Lección 3. VHDL por comportamiento. https://susycursos.com/blog/page/6/. A través de “contactame” puedes pedirme que te envíe los archivos de texto con las descripciones para que los puedas probar y el tutorial del Quartus II, que hice.  https://susycursos.com/contactame/

Lección 3.V19. ROM: binario a Gray.

Descripción VHDL de una memoria ROM genérica usada para convertir de código binario natural de 4 bits a código Gray. Incluyo el package numeric_std para usar datos unsigned y la función to_integer para el casting. Defino un nuevo tipo de datos con type y arreglos con array. Escribo una tabla con el código Gray que será el contenido de la memoria ROM. Analizo el hardware sintetizado con la herramienta Technology Map Viewer del Quartus II. Y finalmente realizo la simulación para comprobar el correcto funcionamiento. Puedes ver el código en mi post Lección 3. VHDL por comportamiento. https://susycursos.com/blog/page/6/. A través de “contactame” puedes pedirme que te envíe los archivos de texto con las descripciones para que los puedas probar y el tutorial del Quartus II, que hice.  https://susycursos.com/contactame/