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

Technology Map Viewer.

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 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.

RTL Viewer.

Lección 10.V57. Flip-flop JK con entrada de clear y de preset.

En este video te explico cómo describir un flip-flop JK, con entradas asincrónicas de “clear” y “preset”, a partir de su ecuación característica. La entrada “clear” tienen prioridad sobre la entrada “preset”. Con la sentencia if…elsif, doy prioridad a clear sobre preset y sobre el flanco ascendente del reloj. Uso la función “rising_edge” para detectar el flanco creciente de la señal de reloj. En la arquitectura defino una señal auxiliar para poder escribir la ecuación característica del flip flop. Compilo y analizo los “warnings”. Luego recurro a la herramienta “Tool” y selecciono “RTL Viewer” del Quartus 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 http://susycursos.com/contactame/ .

Lección 10.V55. Descripción de un flip-flop JK.

En este video te explico cómo describir un flip-flop JK a partir de su ecuación característica. Uso la función rising_edge para detectar el flanco creciente de la señal de reloj. En la arquitectura defino una señal auxiliar para poder escribir la ecuación característica del flip flop. Compilo y analizo un warning. Luego recurro a la herramienta Tool del Quartus y selecciono RTL 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 http://susycursos.com/contactame/ .

Tabla de verdad y ecuación característica del flip flop JK.

Lección 10.V53. Descripción de un flip-flop D, clear asincrónico, habilitación del reloj.

En este video te explico la descripción VHDL de un flip-flop D, con clear asincrónico y habilitación del reloj. Te muestro la tabla de verdad a fin de realizar la arquitectura y ver porqué la habilitación se denomina “habilitación del reloj”. Uso un “process” con dos señales en la lista de sensibilidad. Para generar prioridades entre las señales de entrada y analizar condiciones uso la sentencia condicionada “if…then” con la opción “elsif” y con un “if…then” anidado. Uso la función “rising_edge” para detectar el flanco creciente. Especifico incompletamente el “if” para inferir memoria. Analizo un “warning”. Con la herramienta “Tool” del Quartus II y la opción “Technology Map Viewer (post Mapping)” te muestro el esquemático generado y te lo 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/ .

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 8.V44. Testbench para 4 dígitos de un display de 7 segmentos.

En este video te muestro el testbench para un display de 4 dígitos de 7 segmentos.
Para finalizar uso el testbench para simular y te muestro el resultado.
A través de “contactame” http://susycursos.com/contactame/ puedes pedirme que te envíe los archivos de texto con las descripciones y testbenchs para que los puedas probar y el tutorial del Quartus II, que hice.

Primera parte del código del testbench para el display de 4 dígitos de 7 segmentos.
Última parte del código del testbench para el display de 4 dígitos de 7 segmentos.
Forma de ondas del display de 4 dígitos de 7 segmentos.

Lección 8.V43. Testbench de un circuito descripto estructuralmente.

En este video te muestro un testbench para el circuito definido en forma estructural. Uso tablas para generar los estímulos de las entradas (type … array). Uso dos subíndices para acceder a un dato de la tabla y a un determinado bit del dato. Con un simple for…loop verifico los 16 casos. Uso los atributos ‘range e ‘image. Incluyo el package numeric_std para poder usar la función: to_integer.
Para finalizar uso el testbench para simular y te muestro el resultado.
A través de “contactame” http://susycursos.com/contactame/ puedes pedirme que te envíe los archivos de texto con las descripciones y testbenchs para que los puedas probar y el tutorial del Quartus II, que hice.

Primera parte del código del testbench para el circuito estructural.
Última parte del código del testbench para el circuito estructural.

Lección 8.V42. Testbench para una compuerta NAND genérica. For…loop.

En este video te muestro el testbench para una compuerta NAND genérica. Lo resuelvo mediante un for…loop para todos los casos excepto uno. Con el índice del for genero los estímulos para la entrada. Uso el package numeric_std para la función to_integer, y unsigned. Uso el atributo ‘image. Para finalizar uso el testbench para simular y te muestro el resultado.
A través de “contactame” http://susycursos.com/contactame/ puedes pedirme que te envíe los archivos de texto con las descripciones y testbenchs para que los puedas probar y el tutorial del Quartus II, que hice.

Descripción
Primera parte del código del testbench de la compuerta NAND genérica.
Última parte del código del testbench de la compuerta NAND genérica.