informe lab 3
TRANSCRIPT
Universidad de los llanos – Ingeniería electrónica. Circuitos digitales I
LABORATORIO Nº 3MANEJO DE UNA MATRIZ 4X4
Daniel Andrés Doza [email protected]
Cod: 161002709
Yuly Rincó[email protected]
Cod: 161002632
Julián Ramos [email protected]
Cod: 161002725
RESUMEN: La práctica se trata acerca del manejo de una matriz bicolor (rojo y verde), en la cual vamos a presentar una variedad de figuras que por medio de el programa Xilinx ise 13.3 y nuestra FPGA Basys 2, vamos a programar y presentar.
PALABRAS CLAVE: Fila, columna, ánodo, cátodo.
ABSTRACT: The practice is about managing a matrix bicolor (red and green), in which we present a variety of figures through the program Xilinx ISE 13.1 and our FPGA Basys 2 we will schedule and present in our matrix.
KEY WORDS: Row, column, anode, cathode.
1. INTRODUCCIÓN
En esta práctica vamos por medio de nuestro programa compilador de VHDL (XILINX ISE 13.3) a crear un programa el cual nos permita manejar las filas y columnas de nuestra matriz, vamos a trabajar con una matriz de 8 X 8, pero solo vamos a usar 4 filas y 4 columnas, queriendo decir 4 X 4, para crear diversas figuras .
2. OBJETIVOS
Identificar los ánodos y cátodos de la matriz, crear las figuras dependientes de la configuración de cada fila y columna, crear el programa que nos permita ver esas figuras en la matriz.
3. MATRIALES.
- Protoboard.
- Matriz de leds.
- Programa compilador de VHDL; XILINX ise 31.3.
- Computador personal
4. PROCEDIMIENTO.
Vamos a buscar el datasheet de nuestra matriz de leds para identificar los pines y así identificar las filas y las columnas y consecuentemente identificar los ánodos y cátodos.
Fig. 1.
Al identificar los pines, ánodos y cátodos de nuestra matriz procedemos a escribir la configuración de nuestras imágenes
Podemos deducir que nuestra matriz es de cátodo común, porque todos los cátodos están fijos a una misma fila la cual se activa con un pulso bajo “un cero”,
y los ánodos de cada columna nos muestra que hay un grupo para el color verde y
Página 1 de 4
otra para los rojos.
Fig. 2.
Vamos a describir el funcionamiento para cada color primero sería para el verde el cual sería activar todos los cátodos con un cero y los ánodos con un uno
Si queremos encender todos los leds de verde, sería enviar un uno a los pines (16, 13, 6,3) y un uno a los pines (17, 14, 2, 5)
Si queremos encender todos los leds de rojo, sería enviar un cero a los pines (16, 13, 6,3) y un uno a los pines (18, 15, 1, 4), entonces las filas son manejadas por los cátodos y las columnas por los ánodos.
Teniendo esta configuración se pueden hacer figuras variando el uso de los ánodos y los cátodos.
Vamos a programar…
Abrimos nuestro programa XILINX ISE 13.3, creamos nuestro modulo matriz modulo_1, en el cual creamos un vector para las entradas de 6 bits que son los interruptores de nuestra FPGA y 12 de salida que activan los leds de nuestra matriz, el programa va a ser por medio de tablas o tabulado en el cual el compara el dato de entrada y envía un dato dependiente de la entrada
A continuación una breve explicación de cómo el dato de salida:
Acá aplicamos las sugerencias anteriores acerca del encendido de la matriz de color verde y rojo
Color verdeCátodo Ánodo verde Ánodo rojo1111 0000 1111Color rojoCátodo Ánodo verde Ánodo rojo1111 1111 0000
Al quererse manejar las filas y las columnas basta con desactivar cada “subgrupo” con si bit contrario, si se activa con 1, entonces se desactiva con 0 y viceversa
Apagar primera fila verdeCátodo Ánodo verde Ánodo rojo0111 0000 1111Apagar primera columna verdeCátodo Ánodo verde Ánodo rojo1111 1000 1111
Apagar primera fila rojoCátodo Ánodo verde Ánodo rojo0111 1111 0000Apagar primera columna rojoCátodo Ánodo verde Ánodo rojo1111 1111 1000
Después de hacer esa comparación con todas las figuras deseadas el programa se hace por medio de la comparación sería el siguiente:
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
entity matriz_1 is Port ( a : in STD_LOGIC_VECTOR (4 downto 0);
salidas: out STD_LOGIC_VECTOR (11 downto 0));
end matriz_1;
architecture Behavioral of matriz_1 isbegin
process(a) begin
case a is
when "00000" =>salidas<="111100001111";
when "00001" =>salidas<="111111110000";
when "00010" =>salidas<="110000111100";
when "00011" =>salidas<="001111000011";--cuadro rojo y verde
when "00100" =>salidas<="001100111100";--cuadro verde y rojo
when "00101" =>salidas<="011010111110";--cuadro central rojo y verde5
when "00110" =>salidas<="011011011011";--cuadro central rojo y verde
when "00111" =>salidas<="111100000000";--cuadro naranja
when "01000" =>salidas<="111111000011";--1ra y segunda columna rojos, el resto verdes
when "01001" =>salidas<="111100111100";--1ra y segunda columna verdes, el resto rojos
when "01010" =>salidas<="011111110000";--apaga 1ra fila rojo
when "01100" =>salidas<="011011111010";--cuadro en el centro rojo
when "01101" =>salidas<="011010011111";--cuadro en el centro verde
when "01110" =>salidas<="100111110101";--puntos extremos
when "01111" =>salidas<="100101101111";--puntos extremo
Página 2 de 4
when "10000" =>salidas<="011111110000";--apaga 1ra fila rojo
when "10001" =>salidas<="101111110000";--apaga 2da fila
when "10010" =>salidas<="110111110000";--apaga 3da fila
when "10011" =>salidas<="111011110000";--apaga 4da fila
when "10100" =>salidas<="111111111000";--apaga 1ra columna
when "10101" =>salidas<="111111110100";--apaga 2ra columna
when "10110" =>salidas<="111111110001";--apaga 4ra columna
when "10111" =>salidas<="111111110010";--apaga 3ra columna
when "11000" =>salidas<="011100001111";--apaga 1ra fila verde
when "11001" =>salidas<="101100001111";--apaga 2da fila
when "11010" =>salidas<="110100001111";--apaga 3da fila
when "11011" =>salidas<="111000001111";--apaga 4da fila
when "11100" =>salidas<="111110001111";--apaga 1ra columna
when "11101" =>salidas<="111101001111";--apaga 2ra columna
when "11110" =>salidas<="111100101111";--apaga 3ra columna
when "11111" =>salidas<="111100011111";--apaga 4ra columna
when others =>salidas<="ZZZZZZZZZZZZ";
end case;
end process;
end Behavioral;
Este programa es el que nos muestra la configuración que usamos para mostrar las diversas figuras que podemos presentar
Ahora a crear el circuito…
Nosotros pusimos de forma directa los pines de la FPGA a los de la matriz de leds, pero se puede añadir un circuito el cual se monta con transistores en corte el cual tiene una corriente de colector mínima (prácticamente igual a cero) y un voltaje colector emisor
xx máximo (casi igual al voltaje de alimentación), para reducir la corriente y evitar el daño de los elementos frágiles, los omitimos puesto que no hay amenaza alguna
Fig.3.
La imagen anterior nos muestra de manera esquemática como es la conexión de nuestra tarjeta de desarrollo a nuestra matriz de leds.
Y aquí está la simulación
4. Conclusiones
Al no tener el manejo de frecuencia, solamente podemos variar la fila o la columna independientemente, mientras que si lo aplicamos podemos tener un muchísimo más manejo de nuestra matriz.
Para crear un tercer color debe haber una diferencia de potencial eléctrico notable para que las dos frecuencias de nuestros dos colores (verde y rojo) se puedan mezclar.
5. REFERENCIAS
[1] Archivo de referencia: http://www.arduteka.com/2012/02/tutorial-arduino-0008-matriz-led-8x8-bicolor-74ch595/
[2] Fig.1:http://www.element14.com/community/groups/arduino/blog/tags/bicolor
[3] Fig. 2: http://www.fullcustom.es/guias/instalacion-
Página 3 de 4
diodos-led
6. Anexos.
- Fotos del circuito.
Página 4 de 4