Lección 20.V134. Descripción: receptor de la UART-RS232, baud rate. Circuito sintetizado. Ejecución.

En este video describo un receptor para la UART RS-232, el generador de baud rate y muestro un package propio. Explico el circuito sintetizado, programo la plaqueta DE1 de Altera y muestro el correcto funcionamiento enviando letras desde el teclado de la computadora hacia la plaqueta y mostrando en binario (en leds) el carácter ASCII de las letras.

Si te parece útil la explicación te agradezco mucho si además de de darle un clic a “me gusta” y suscribirte puedes contribuir al sostenimiento de mi sitio:

https://www.patreon.com/susanacanel

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

Puedes ver y descargar mis códigos fuente de: https://github.com/susanacanel/proyectos-vhdl.

Lección 20.V132. Transmitiendo un mensaje, RS232, desde el circuito sintetizado a la PC. Descripción.

En este video te muestro una descripción de un transmisor de la UART RS232, transmitiendo un mensaje. Genero un baud-rate genérico. Uso instanciado y un package propio. Analizo el circuito esquemático RTL Viewer generado por Tool del Netlist Viewers del Quartus II. Uso el código ASCII de 8 bits. Pruebo el comportamiento en la plaqueta DE1 de Altera, enviando el mensaje a la computadora. Uso un cable con conversor RS-232 a USB (HL-340) y un driver que tuve que instalar. Muestro en la terminal (PuTTY) cómo van aparece el mensaje. Uso el código ASCII de 8 bits.

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

Puedes ver y descargar mis códigos fuente de: https://github.com/susanacanel/proyectos-vhdl.

Lección 20. V131. Trasmisor de la UART RS-232. Prueba transmitiendo de la plaqueta a la computadora.

Describo el trasmisor de la UART RS-232. Genero el baud-rate. Uso instanciado y un package propio. Analizo el circuito esquemático RTL Viewer generado por Tool del Netlist Viewers del Quartus II. Programo la plaqueta DE1 de Altera, la conecto via RS-232 con la computadora. Uso un cable con conversor RS-232 a USB y un driver que tuve que instalar . Muestro en la terminal (PuTTY) cómo van apareciendo las letras que voy transmitiendo y que genero con interruptores de la plaqueta. Uso el código ASCII de 8 bits.

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

Puedes ver y descargar mis códigos fuente de: https://github.com/susanacanel/proyectos-vhdl.

Lección 17.V119. Testbench. Uso de procedimientos. Declaración en package. Diferencias con las funciones.

En este video te muestro cómo escribir un procedimiento (procedure) para usarlo en un testbench y cómo incluirlo en un “package”. Analizo las diferencias entre las funciones (function) y los procedimientos que constituyen los subprogramas de VHDL. Analizo y ejecuto la descripción, los dos “packages” que uso (uno contiene la función que vimos en el video anterior) y el testbench. Te muestro el contenido del archivo work-obj93.cf, que va generando el analizador de GHDL.

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

Puedes ver y descargar mis códigos fuente de: https://github.com/susanacanel/proyectos-vhdl.

Lección 17.V118. Declarando una función en un package y compilando todo con GHDL y con ModelSim.

En este video te muestro cómo definir una función en un package de manera que pueda ser compartida por varios proyectos. Te explico cuáles son las partes del package. Luego compilo y ejecuto usando GHDL y repito esos pasos pero para ModelSim.

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

Puedes ver y descargar mis códigos fuente de: https://github.com/susanacanel/proyectos-vhdl.

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