DISPOSITIVOS ELECTRONICOS II

Avance del proyecto
“Letrero Matricial”

INTEGRANTES:
Leo Garagati, Johnny
Lizana Rivera, Víctor
GRUPO: C15-04-A
PROFESOR:
Camacho Jiménez, Francisco
Denis León, Izquierdo
SEMANA 15
Fecha de realización: 15 de Mayo
Fecha de Entrega: 03 de junio

2014 – I
2

Contenido
Contenido ...................................................................................................................................... 02
Introducción .................................................................................................................................. 03
Descripción del proyecto ............................................................................................................... 04
Marco teórico ................................................................................................................................ 05
Materiales ...................................................................................................................................... 06
Procedimiento ................................................................................................................................ 07
Observaciones ............................................................................................................................... 15
Conclusiones ................................................................................................................................. 15
Referencias bibliográficas ............................................................................................................. 16





















3

Introducción
Todos los días vemos innumerables letreros en autobuses, tiendas ,edificios.
Estos acaparan nuestra atención el presente trabajo tiene como motivo la creación
de un letrero matricial 8x32 donde podremos visualizar palabras completas que
serán enviadas por medio de un celular .





















4

Descripción del proyecto

El proyecto realizado trata de poder simular e implementar un cartel, a base de
leds , donde su particularidad es que podemos ver las letras desplazarse e
ingresarlas desde un periférico.
Características técnicas
El proyecto se basara en arquitectura harward (VHDL) y se mostrara en una
matrix de leds con la ayuda de registros de desplazamiento.


















5

Marco teórico
VHDL
VHDL significa VHSIC Hardware Description Language,. Se trata de un lenguaje
de descripción de hardware, esto significa que mediante él se puede describir la
forma de comportarse de un circuito electrónico. El comportamiento puede ser
llevado a algún dispositivo que dispondrá de sus propios componentes con los que
lograr ese comportamiento deseado. La forma de comportarse es independiente
del hardware donde se implementará.

El VHDL es un estándar llamado IEEE 1076-1993. Sus ventajas son:
 Una disponibilidad pública
 Independencia de dispositivos y fabricantes
 Reutilización
 Diseño jerárquico

Matrices de Led
Una matriz de diodos LED, no es más que un montón de diodos LED dentro de un
mismo encapsulado en el que distribuimos los ánodos en 8 columnas de 8 diodos
unidos entre sí y los cátodos en 8 filas de 8 diodos (o viceversa) formando, como
su nombre indica, una matriz de “pixeles”, siendo cada pixel la intersección de una
fila con una columna.
Cuando nos hablan de una matriz 8×8 o 7×5, se refieren a la cantidad de filas x
columnas que posee, por lo que una matriz de 8×8 es una matriz de 64 diodos
LED, veamos el diagrama de conexión de una matriz de un solo color 8×8 con
cátodos en filas y ánodos en columnas.

Registro de desplazamiento
Un registro de desplazamiento es un circuito digital secuencial (es decir, que los
valores de sus salidas dependen de sus entradas y de los valores anteriores)
consistente en una serie de biestables, generalmente de tipo D, conectados en
cascada (Fig. 1), que basculan de forma sincrónica con la misma señal de reloj.
Según las conexiones entre los biestables, se tiene un desplazamiento a la
izquierda o a la derecha de la información almacenada. Es de señalar que un
desplazamiento a la izquierda de un conjunto de bits, multiplica por 2, mientras
6

que uno a la derecha, divide entre 2. Existen registros de desplazamiento
bidireccionales, que pueden funcionar en ambos sentidos. Los registros
universales, además de bidireccionales permiten la carga en paralelo.



Fig. 1: Registro de desplazamiento de 4 bits.









Materiales
 CI 74124
 Spartan Xilins 3ª
 Galleta de pcb
 Matrix de led 8*8
7

 Arduino Uno
 Módulo bluetooh
 Transirtor bj374
 Resitencias 330 y 1k ohmios.


Procedimiento
Diagrama de flujo


Matrices de letras

Para la A en dos tipos de tamaño

Envio de datos por
celular android
Codificacion de
datos por Arduino
Envio de datos al
FPGA
Codificacion de
letras
Multiplexacion
de data
Registro de
desplazamiento
Matrices de led
8

0 0 0 0 0
0 0 0 0 0
0 1 1 0 0
1 0 0 1 0
1 0 0 1 0
1 1 1 1 0
1 0 0 1 0
1 0 0 1 0

Principios de funcionamiento







Se genera un archivo en Exel donde se crearan las letras para ser enviadas .

0 1 1 1 0
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
1 1 1 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 1 0 0 0 0 0
1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 1 0 0 0 0 0 0
9



Codigo VHDL
Código de codificador
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;




entity code is
Port ( data : in STD_LOGIC_VECTOR (3 downto 0);
letra : out STD_LOGIC_VECTOR (7 downto 0));
end code;

architecture Behavioral of code is
begin
process (data)

begin

CASE data is
when "0000"=>letra <= ( "00000000",
"01111100",
10

"00010010",
"00010010",
"00010010",
"01111100",
"00000000",
"00000000");

--Letra A


When "0001" =>letra <= ( "00000000",
"01111100",
"01000100",
"01000100",
"01000100",
"00000000",
"00000000",
"00000000");


--letra B
When "0010" =>letra <= ( "00000000",
"01111110",
"01010010",
"01010010",
11

"01010010",
"01101100",
"00000000",
"00000000" );


when others => letra <= ( "00000000",
"01111110",
"01010010",
"01010010",
"01010010",
"01101100",
"00000000",
"00000000" );
--letra C
end case;
end process;

end Behavioral;






12

end Behavioral;


Código de la matriz led

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Letrero is
Port ( A : out STD_LOGIC_VECTOR (16 downto 0);
clk : in STD_LOGIC);
end Letrero;


architecture Behavioral of Letrero is

signal counter : STD_LOGIC_VECTOR(8 downto 0) := (others => '0'); --contador para controlar el
estado
signal row : STD_LOGIC_VECTOR(7 downto 0) := "11111110"; --señal para los led de las
filas
signal col : STD_LOGIC_VECTOR(7 downto 0) := "00000001"; --señal para los led de las
columnas
type display_t is array(7 downto 0) of STD_LOGIC_VECTOR(7 downto 0);
signal display : display_t := ("00000000" , --
"01100110" , -- almacenado en un array
13

"01100110" ,
"00000000" ,
"00000000" ,
"11000011" ,
"00111100" ,
"00000000");

signal col_mask : STD_LOGIC_VECTOR(7 downto 0) := "00000000"; --valor de la mask solo para
actipar los pixeles deseados
signal row_count : unsigned(2 downto 0) := "001"; --puntero para el array
signal row_offset : unsigned(2 downto 0) := "000"; --para controlar el desplazamiento
signal scroll_delay : STD_LOGIC_VECTOR(22 downto 0) := (others => '0'); --contador horizontal



begin
--definicion del process
count: process(clk)
begin
-- triggers action on rising edge of clock signal
if rising_edge(clk) then
--incremento del contador
counter <= counter+1;
--clock periodo 31.25ns, counter is 9 bits, should scan whole matrix in < 1ms
--Para cuando el contrador vuelva a Cero
if counter = 0 then
14


col <= col(6 downto 0) & col(7);

if col = "10000000" then

row <= row(6 downto 0) & row(7); --concadenacion de los array

row_count <= row_count + 1;

col_mask <= display(conv_integer(row_count) - conv_integer(row_offset));
end if;
end if;
--combina la señal y actualiza las salidas
A(7 downto 0) <= row;
--combina las señales con la mask solo para mostrar lo deseado
A(15 downto 8) <= (col AND col_mask);
end if;
end process;

vscroll: process(clk)
begin

if rising_edge(clk) then
--contador de 23 bits aumentara cada 0.26 segundos
scroll_delay <= scroll_delay+1;
--produce un movimiento, traslacion de los pixels en una direcion
15

if scroll_delay = 0 then

row_offset <= row_offset+1;
end if;
end if;
end process;

end Behavioral;



















16




17















Observaciones
 No se logró implementar el envió de datos del Arduino hacia el fpga.
 No se pudo completar el envió de datos por bluetooh.
Conclusiones

 Se logro entender el concepto de barrido de secuencial y como afecta ala
visualización de pixeles.
 Se logró crear un código para mostrar una matriz de datos.
 Se logró entender los usos de máscaras en los códigos.
 Se logró el desplazamiento de los pixeles en una matrix de led.
 El programa ise project podemos trabajar diferentes estructuras y luego
juntarlas



18



Referencias Bibliográficas

 Barrido secuencial:http://www.slideshare.net/Killer_JJ/barrido-secuencial-
de-displays
 VHDL códigos :http://burnt-traces.com/?p=218
 Xilins fórum:http://www.xilinx.com/support/answers/14301.htm
 Gettins Strarded whith Fpga ,Amazing.
 Spartan 3ª Parts
 Circuitos de Barrido y Escaneo: Teclado Matricial de propósito General y
Matriz de LEDs”, Centro de Innovación y Desarrollo
Tecnológico en Cómputo.