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

Technology Map Viewer.

Lección 10.V50. Descripción de un flip-flop D.

En este video te explico la descripción de un flip-flop D activo por flanco ascendente, que es el circuito secuencial sincrónico más sencillo que hay. Sirve para ver la estructura básica de los circuitos secuenciales sincrónicos o sea aquellos secuenciales que tienen señal de reloj que los sincroniza. Te explico las diferencias con el latch D que vimos anteriormente y que es un dispositivo asincrónico. Uso sentencias secuenciales, como “process” e “if…then”. Comparo la sentencia condicionada secuencial “if…then” con la equivalente concurrente, “when…else”. Te presento nuevas funciones: “rising_edge” y “falling_edge” que permiten detectar respectivamente el flanco ascendente y el descendente de una señal, en este caso aplicadas a la señal de reloj. Analizo los “warnings”. Te muestro el esquemático generado por la herramienta RTL 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 http://susycursos.com/contactame/

Descripción VHDL de un flip-flop D. Flanco ascendente.
Esquema del flip-flop D disparado por flanco ascendente.
Tabla de verdad del flip-flop D, disparado por flanco ascendente.

Lección 9.V48. Descripción de un latch SR con reset prioritario.

En este video te muestro la descripción de un latch SR con reset prioritario. Uso la sentencia condicionada “when…else” para generar la prioridad y al usarla incompletamente especificada infiero memoria. Compilo. Analizo los “warnings” y te muestro el esquemático generado con la herramienta “Technology Map Viewer” del “Tool” 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 http://susycursos.com/contactame/

Descripción VHDL de un latch SR con reset prioritario.
Tabla de verdad del latch SR con reset prioritario.

Lección 9.V46. Descripción de un biestable (latch) D.

Con este video inicio la segunda parte del curso que consta de las descripciones y los testbenchs de circuitos lógicos secuenciales. Para empezar describo el más sencillos de todos los circuitos que es un biestable (latch) D. Uso la sentencia when…else incompletamente especificada para inferir memoria. Te muestro el esquemático generado por el Technology Map Viewer del Quartus II y te lo explico. Analizo los “warnings” y te muestro y explico los distintos tiempos de propagación del informe producido por la herramienta “timing analyzer”. 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 del latch D.
Tabla de verdad del latch D.
Descripción VHDL de un latch D.
Circuito esquemático generado por el Technology Map Viewer del Quartus II.
Warnings generados por el compilador del Quartus II.
Informe de los peores tiempos dado por el Timing Analyzer del Quartus II.

Lección 5.V25.4. Modificación de la descripción del sumador/ comparador.

En este video te muestro cómo modifiqué la descripción a fin de que no se encendiera el LED que indica que la suma es mayor que 9, cuando estoy en modo comparación. Recuerdo que los procesos implícitos son concurrentes. Explico que es importante elegir un adecuado lote de prueba tanto para verificar el correcto funcionamiento del hardware como del software cuando se escriben los programas llamados “testbench”.
Puedes ver el código en mi post Lección 5. VHDL descripción estructural.  http://susycursos.com/blog/page/3/ 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. http://susycursos.com/contactame/

Modificación hecha en el código.

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

Lección 3.V18. Sumador-restador.

Descripción VHDL de un sumador-restador genérico de números enteros de N bits. Uso el package numeric_std porque voy a usar operaciones matemáticas, uso datos tipos signed, definidos en ese package. Para que sea genérico defino en generic la constante N que representa la cantidad de bits de los operandos. Uso operaciones lógicas y analizo la precedencia de operandos y la necesidad de usar paréntesis. Genero el indicador de desborde (overflow). Te muestro el circuito esquemático generado por la herramienta Netlist Viewer, opción RTL Viewer. Finalmente muestro la simulación. Puedes ver el código en mi post Lección 3. VHDL por comportamiento. http://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.  http://susycursos.com/contactame/

Lección 3.V13. Comparador genérico.

En este video te muestro la descripción de un comparador genérico de números enteros de N bits. En la entidad uso generic para darle un valor por omisión a la cantidad N de bits. Incluyo el package numeric_std porque necesito usar datos de tipo signed para realizar las comparaciones. Para finalizar realizo la simulación. Puedes ver el código en mi post Lección 3. VHDL por comportamiento. http://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.  http://susycursos.com/contactame/

Lección 2.V12. BCD binario a Aiken.

En este video te describo un conversor de código BCD binario natural a código BCD Aiken, usando operaciones aritméticas que no están permitidas para el tipo de datos std_logic y std_logic_vector, motivo por el cual tengo que usar el package numeric_std del IEEE. Este package incluye nuevos tipos de datos, entre ellos unsigned. Haciendo conversión de datos soluciono el problema. Primero cometo adrede un error para que veas cómo te avisa el compilador que no puede hacer operaciones aritméticas con el tipo de datos std_logic_vector. Una vez corregido, lo vuelvo a compilar y finalmente simulo para comprobar el correcto comportamiento. También te muestro dónde se encuentran los package en la instalación de Altera, en particular los dos que hemos usado:

std_logic_1164    y     numeric_std

Los abro para mostrarte parte del contenido, por ejemplo los tipos de datos que usamos en esta descripción. Puedes ver el código en mi post Lección 2. VHDL por comportamiento. http://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.  http://susycursos.com/contactame/

Lección 2.V11. Descripción y simulación de un codificador de prioridad de 4 vías.

En este video realizo la descripción VHDL de un codificador de prioridad de 4 vías con señal de grupo. Explico las características de la sentencia when-else que uso. Posteriormente realizo la simulación usando el Quartus II, 9.1. Puedes ver el código en mi post Lección 2. VHDL por comportamiento. http://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.  http://susycursos.com/contactame/