Sie sind auf Seite 1von 8

DISEÑO DIGITAL UNMSM

UNIVERSIDAD NACIONAL MAYOR DE SAN


MARCOS
(Universidad del Perú, DECANA DE AMÉRICA)
FACULTAD DE INGENIERIA ELECTRÓNICA Y ELÉCTRICA
E.A.P DE INGENIERÍA ELECTRÓNICA

Tema: Diseño de una secuencia de


palabras en FPGA

Alumno: Jhonatan Alexander Juño Garcia

Código: 12190016

Profesor: Ing. Alfredo Granados Ly


DISEÑO DIGITAL 17-5-2016

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS


(Universidad del Perú, DECANA DE AMÉRICA)
FACULTAD DE INGENIERIA ELECTRÓNICA Y ELÉCTRICA
E.A.P DE INGENIERÍA ELECTRÓNICA

INFORME FINA # 2
SECUENCIA DE PALABRAS

I. OBJETIVO
 Utilizar los estilos de flujo de datos y algorítmico para describir el
comportamiento de un circuito.
II. MATERIALES Y EQUIPOS
 Placa modulo con FPGA Altera Cyclone I
 PC con la herramienta de síntesis MAX Plus II y el entorno de desarrollo
Quartus II de Altera

III. PROCEDIMIENTO DE DISEÑO


1. Análisis del problema

El problema plateado es diseñar un circuito que muestre las palabras “0000”,


“HOLA”, “Stop” y una secuencia de encendido de los segmentos, el mismo que
deberá ser probado en la placa del FPGA. Para este diseño se considerar una
entrada de datos, representados por un vector de 2 bits que corresponde a los dos
switch los cuales serán los que habiliten la visualización de las palabras uno a la
vez

Las palabras se visualizarán en un display de 7 segmentos multiplexado, el cual


mediante multiplexores recibirá la palabra y la habilitación del display
correspondiente a cierta frecuencia lo que permitirá visualizar las palabras y la
secuencia.

Básicamente el circuito contara con dos divisores de frecuencias con sus


respectivos contadores, las palabras serán ingresadas cada uno a un mux, y luego
estos pasaran a un mux de selección el cual permitirá la selección de las palabras
mediante los switch de entrada, también debemos considerar que para el caso de
la secuencia ultima, se tendrá especial cuidado con la forma de habilitación de los
display, lo que permitirá una correcta visualización de la secuencia misma.

2. Diagrama de bloques del circuito

Una vez hecho el análisis se propone el siguiente diagrama de bloques del circuito
a implementar:

1
DISEÑO DIGITAL 17-5-2016

2
DISEÑO DIGITAL 17-5-2016

3. Implementación del Circuito en VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity ckto_frases is
port ( clk, sw1, sw2:in std_logic;
display: out std_logic_vector(7 downto 0);
ena: out std_logic_vector(3 downto 0));
end ckto_frases;

architecture circuito of ckto_frases is


signal i: std_logic_vector(17 downto 0);
signal j: std_logic_vector(23 downto 0);
signal clk_2: std_logic;
signal clk_10Hz: std_logic;
signal conta1: std_logic_vector(1 downto 0);
signal cuenta2: std_logic_vector(3 downto 0);
signal d1, d2: std_logic;
signal sel: std_logic_vector(1 downto 0);
signal sel_aux:std_logic_vector(0 downto 0);
signal valor0, valor1, valor2, valor3 : std_logic_vector(7 downto 0);
signal ena_aux, ena_aux2 : std_logic_vector(3 downto 0);

begin
--Divisor y contador 0-3
process(clk)
begin
if clk='1' and clk'event then
i<=i+1;
if i=23999 then
i<=(others=>'0');
conta1<=conta1+1;
end if;
end if;
end process;

--Divisor frecuencia 10HZ


process(clk)
begin
if clk='1' and clk'event then
j<=j+1;

3
DISEÑO DIGITAL 17-5-2016

if j=2399999 then
j<=(others=>'0');
clk_10Hz<= not clk_10Hz;
end if;
end if;
end process;
--Contador de 0-11
process(clk_10Hz)
begin
if clk_10Hz='1' and clk_10Hz'event then
cuenta2<=cuenta2+1;
if cuenta2=11 then
cuenta2<="0000";
end if;
end if;
end process;

--Selector SW de entrada con flip flop tipo D


process(clk)
begin
if clk='1' and clk'event then
d1<=sw1;
d2<=sw2;
end if;
end process;
sel<=d1&d2;

--Mux 0000
with conta1 select valor0 <="00000011" when "00", -- 0
"00000011" when "01", -- 0
"00000011" when "10", -- 0
"00000011" when others; -- 0
--Mux HOLA
with conta1 select valor1 <="00010001" when "00", -- A
"11100011" when "01", -- L
"00000011" when "10", -- O
"10010001" when others; -- H

--Mux StoP
with conta1 select valor2 <="00110001" when "00", -- p
"11000101" when "01", -- o
"11100001" when "10", -- t
"01001001" when others; -- S

--Mux secuencia izquierda


with cuenta2 select valor3<="11011111" when "0000",-- |

4
DISEÑO DIGITAL 17-5-2016

"10111111" when "0001",-- |


"01111111" when "0010",-- -
"01111111" when "0011",-- -
"01111111" when "0100",-- -
"01111111" when "0101",-- -
"11111011" when "0110",-- |
"11110111" when "0111",-- |
"11101111" when "1000",-- -
"11101111" when "1001",-- -
"11101111" when "1010",-- -
"11101111" when others;-- -
--Deco secuencia
with cuenta2 select ena_aux<= "1110" when "0000",
"1110"when "0001",
"1110" when "0010",
"1101" when "0011",
"1011" when "0100",
"0111" when "0101",
"0111" when "0110",
"0111" when "0111",
"0111" when "1000",
"1011" when "1001",
"1101" when "1010",
"1110" when others;

-- Decodificador de enable
with conta1 select ena_aux2<="1110" when "00",
"1101" when "01",
"1011" when "10",
"0111" when others;

--Mux principal
with sel select display <= valor0 when "00",
valor1 when "01",
valor2 when "10",
valor3 when others;

--Deco auxiliar
with sel select sel_aux <="1" when "11",
"0" when others;

--Mux final 2-1


ena<=ena_aux when sel_aux=1 else ena_aux2;

end circuito;

5
DISEÑO DIGITAL 17-5-2016

4. Prueba del circuito en módulo FPGA Altera Cyclone I


.

6
DISEÑO DIGITAL 17-5-2016

Das könnte Ihnen auch gefallen