Puedes ver el código en mi post Lección 4. VHDL descripción algorítmica. http://susycursos.com/2018/09/03/leccion-4-arquitectura-algoritmica/ . 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/
Etiqueta: dispositivos de propósitos generales
Lección 3.V21. Árbol de paridad genérico.
Descripción VHDL de un árbol de paridad genérico, de N bits. Defino un proceso explícito, process y una variable. Uso una sentencia secuencial for…loop. Comento la diferencia entre señales y variables y entre procesos implícitos y explícitos. Uso una etiqueta, label. Te muestro el RTL Viewer y el resultado de 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.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.V17. Multiplicador de enteros.
Descripción VHDL de un multiplicador genérico de números enteros de N bits. Uso el package numeric_std para poder realizar la operación multiplicación usando un multiplicador embebido del cual dispone la FPGA Cyclone II. Realizo un cambio de tipo de datos para poder realizar la multiplicación. Uso datos tipo signed ya que los datos del enunciado son números enteros. Muestro en el RTL Viewer cómo la operación multiplicación se la representa a través de un multiplicador embebido. Finalmente vemos en la simulación 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.V16. Sumador binario genérico.
Descripción y simulación de un sumador binario genérico de magnitudes de N bits. Uso el package numeric_std para cambiar el tipo de datos a unsigned para así de poder realizar la suma. Recuerdo que no existe el casting de un std_logic a unsigned, hay que transformarlo en un std_logic_vector de un solo elemento. Cambio el largo de un vector concatenándole un ‘0’ adelante. 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.V15. Multiplexor genérico.
Descripción VHDL de un multiplexor genérico con entrada de habilitación activa en alto. Uso el package numeric_std para cambiar el tipo de datos de std_logic_vector a enteros (unsigned, to_integer). Uso Generic y constante de tipo positive (> 0). Luego de compilarlo sin errores, simulo el comportamiento. 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.V14. Gray a binario, genérico.
Descripción VHDL de un conversor genérico de código Gray a binario natural de N bits. Uso generic. Uso la operación lógica xor entre vectores. Te muestro interesantes operaciones entre subíndices, que permiten resolver problemas en forma eficiente y compacta. Cometo adrede un error para destacar que las señales de salida no se pueden “leer” con esta norma. Compilo, veo cómo el software te informa de este error, lo corrijo, vuelvo a compilar y simulo. También te muestro cómo podés hacer consultas sobre la lista de operaciones lógicas y sintaxis en general acudiendo al insert template, el “papiro” del editor. 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/