Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MECÁNICA INDUSTRIAL
Asignatura de:
Dispositivos digitales
ÍNDICE
Marco teórico
Fpga
Desde los inicios de los circuitos integrados digitales, siempre se había planteado la
posibilidad de crear dispositivos con hardware reconfigurable, es decir, circuitos que no
sólo se limitaran a ejecutar instrucciones pre-configuradas, como ocurre en un
microprocesador, si no, que fuera el mismo hardware en sí, el que se configurará para
un propósito específico. Sin embargo, no fue hasta la década de los 70’s cuando
salieron al mercado los primeros dispositivos lógicos programables (PLD). Esta idea fue
evolucionando a lo largo de la década de los 80’s, pasando por diversas
transformaciones y mejoras hasta llegar al dispositivo que hizo posible la
popularización de esta corriente de desarrollo en base a la descripción de hardware:
el FPGA.
Quartus II
Es una herramienta de software producida por Altera para el análisis y la síntesis de
diseños realizados en HDL.
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
Con el programa de diseño Quartus ® II los diseñadores pueden usar los dispositivos
HardCopy Stratix de manera que puede prever y verificar su rendimiento, el cual resulta
en promedio un 50 por ciento más rápido que su FPGA equivalente. Además, en el flujo
de diseño del HardCopy Stratix, Quartus II incluye una serie de utilidades que reducen
el tiempo de diseño. Como contraste adicional el bajo precio del Quartus II en
comparación con otras herramientas de diseño de ASIC.
Decodificador 7447
Los decodificadores (fig.1) son circuitos integrados que convierten una entrada de
código binario a código BCD correspondiente para encender los segmentos de un
display para que se forme el valor en decimal que responde al número binario. Los
más usados son el 7447 y el 7448, los cuales son tecnología TTL, es decir, que su
voltaje de alimentación es de 5 voltios.
Los display de 7 segmentos (fig.1) pueden ser de ánodo o cátodo común, y para cada
uno corresponde el decodificador a usar, para el display de ánodo común usamos un
7447 y para uno de cátodo común el 7448.
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
Material
1. Cable jumper (fig.2).
Problemas a resolver
1. Programar un sumador de 3 bits (6 entradas y 4 salidas), para sumar hasta el
número 14, añadiendo dos decodificadores, el primero debe indicar unidades (0
a 9) y el segundo indicará decenas (0 y 1). Lo primero es realizar una tabla de
verdad (tabla 1).
A B C D E F S3 S2 S1 S0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 1
0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 1 0 0 1 1
0 0 0 1 0 0 0 1 0 0
0 0 0 1 0 1 0 1 0 1
0 0 0 1 1 0 0 1 1 0
0 0 0 1 1 1 0 1 1 1
0 0 1 0 0 0 0 0 0 1
0 0 1 0 0 1 0 0 1 0
0 0 1 0 1 0 0 0 1 1
0 0 1 0 1 1 0 1 0 0
0 0 1 1 0 0 0 1 0 1
0 0 1 1 0 1 0 1 1 0
0 0 1 1 1 0 0 1 1 1
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
0 0 1 1 1 1 1 0 0 0
0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 1 0 0 1 1
0 1 0 0 1 0 0 1 0 0
0 1 0 0 1 1 0 1 0 1
0 1 0 1 0 0 0 1 1 0
0 1 0 1 0 1 0 1 1 1
0 1 0 1 1 0 1 0 0 0
0 1 0 1 1 1 1 0 0 1
0 1 1 0 0 0 0 0 1 1
0 1 1 0 0 1 0 1 0 0
0 1 1 0 1 0 0 1 0 1
0 1 1 0 1 1 0 1 1 0
0 1 1 1 0 0 0 1 1 1
0 1 1 1 0 1 1 0 0 0
0 1 1 1 1 0 1 0 0 1
0 1 1 1 1 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0
1 0 0 0 0 1 0 1 0 1
1 0 0 0 1 0 0 1 1 0
1 0 0 0 1 1 0 1 1 1
1 0 0 1 0 0 1 0 0 0
1 0 0 1 0 1 1 0 0 1
1 0 0 1 1 0 0 0 0 0
1 0 0 1 1 1 0 0 0 1
1 0 1 0 0 0 0 1 0 1
1 0 1 0 0 1 0 1 1 0
1 0 1 0 1 0 0 1 1 1
1 0 1 0 1 1 1 0 0 0
1 0 1 1 0 0 1 0 0 1
1 0 1 1 0 1 0 0 0 0
1 0 1 1 1 0 0 0 0 1
1 0 1 1 1 1 0 0 1 0
1 1 0 0 0 0 0 1 1 0
1 1 0 0 0 1 0 1 1 1
1 1 0 0 1 0 1 0 0 0
1 1 0 0 1 1 1 0 0 1
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
1 1 0 1 0 0 0 0 0 0
1 1 0 1 0 1 0 0 0 1
1 1 0 1 1 0 0 0 1 0
1 1 0 1 1 1 0 0 1 1
1 1 1 0 0 0 0 1 1 1
1 1 1 0 0 1 1 0 0 0
1 1 1 0 1 0 1 0 0 1
1 1 1 0 1 1 0 0 0 0
1 1 1 1 0 0 0 0 0 1
1 1 1 1 0 1 0 0 1 0
1 1 1 1 1 0 0 0 1 1
1 1 1 1 1 1 0 1 0 0
(Tabla 1)
El paso siguiente es realizar los Mapas de karnaugh y reducir sus expreciones (tablas
2-6)
DEF
ABC 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1
0 0 0 0 1 1 0 0
0 0 1 0 1 0 0 0
0 1 0 1 0 0 0 0
0 0 1 1 0 0 0 0
(Tabla 2 expresión )
DEF
ABC 0 0 0 0 1 1 1 1
0 0 1 0 1 1 0 1
0 1 1 1 1 0 0 0
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
0 0 1 1 1 1 0 0
1 1 1 1 0 0 0 0
1 1 0 1 0 0 0 0
1 0 0 0 0 0 1 0
1 1 0 0 0 0 0 0
(Tabla 3 expresión )
DEF
ABC 0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
1 0 1 0 1 0 0 0
1 1 0 0 1 1 0 0
0 0 1 1 0 0 0 0
0 1 0 1 0 0 1 0
1 0 0 0 0 1 0 1
1 1 0 0 0 0 1 1
(Tabla 4 expresión )
DEF
ABC 0 1 1 0 0 1 1 0
1 0 0 1 1 0 0 1
1 0 0 1 1 0 0 1
0 1 1 0 0 1 1 0
0 1 1 0 0 1 1 0
1 0 0 1 1 0 0 1
1 0 0 1 1 0 0 1
0 1 1 0 0 1 1 0
(Tabla 5 expresión )
̅ ̅
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
DEF
ABC 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1
0 0 0 0 1 1 1 1
0 0 1 0 1 1 1 1
0 0 0 0 1 1 1 1
(Tabla 6)
Esta expresión es usada para los decimales cuando la suma supera el número 10.
ENTITY suma3bi IS
PORT
);
END suma3bi;
-- Architecture Body
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
BEGIN
process(e)
begin
case e is
end case;
end process;
4 1 0 0 0 1 1 3 0 1 0
4 1 0 0 1 0 0 4 1 0 0
4 1 0 0 1 0 1 5 0 0 1
4 1 0 0 1 1 0 6 0 0 1
4 1 0 0 1 1 1 7 0 0 1
5 1 0 1 0 0 0 0 0 1 0
5 1 0 1 0 0 1 1 0 1 0
5 1 0 1 0 1 0 2 0 1 0
5 1 0 1 0 1 1 3 0 1 0
5 1 0 1 1 0 0 4 0 1 0
5 1 0 1 1 0 1 5 1 0 0
5 1 0 1 1 1 0 6 0 0 1
5 1 0 1 1 1 1 7 0 0 1
6 1 1 0 0 0 0 0 0 1 0
6 1 1 0 0 0 1 1 0 1 0
6 1 1 0 0 1 0 2 0 1 0
6 1 1 0 0 1 1 3 0 1 0
6 1 1 0 1 0 0 4 0 1 0
6 1 1 0 1 0 1 5 0 1 0
6 1 1 0 1 1 0 6 1 0 0
6 1 1 0 1 1 1 7 0 0 1
7 1 1 1 0 0 0 0 0 1 0
7 1 1 1 0 0 1 1 0 1 0
7 1 1 1 0 1 0 2 0 1 0
7 1 1 1 0 1 1 3 0 1 0
7 1 1 1 1 0 0 4 0 1 0
7 1 1 1 1 0 1 5 0 1 0
7 1 1 1 1 1 0 6 0 1 0
7 1 1 1 1 1 1 7 1 0 0
(Tabla 7)
̅̅̅̅ ̅ +̅ ̅̅̅̅ ̅ + ̅
El código es:
Library ieee;
use
ieee.std_logic_1164.ALL;
entity Comparador3bits is
Port(
ABCDEF: in std_logic_vector (5 downto 0);
Leds: out std_logic_vector (2 downto 0);
Dif: out std_logic_vector (6 downto 0));
End Comparador3bits;
Begin
Leds <=
("010") WHEN ("000000"), --0
("001") WHEN ("000001"), --1
("001") WHEN ("000010"), --2
("001") WHEN ("000011"), --3
("001") WHEN ("000100"), --4
("001") WHEN ("000101"), --5
("001") WHEN ("000110"), --6
("001") WHEN ("000111"), --7
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
Dif<=
("1111110") WHEN ("000000"), --0
("0110000") WHEN ("000001"), --1
("1101101") WHEN ("000010"), --2
("1111001") WHEN ("000011"), --3
("0110011") WHEN ("000100"), --4
("1011011") WHEN ("000101"), --5
("1011111") WHEN ("000110"), --6
("1110000") WHEN ("000111"), --7
("0110000") WHEN ("001000"), --1
("1111110") WHEN ("001001"), --0
("0110000") WHEN ("001010"), --1
("1101101") WHEN ("001011"), --2
("1111001") WHEN ("001100"), --3
("0110011") WHEN ("001101"), --4
("1011011") WHEN ("001110"), --5
("1011111") WHEN ("001111"), --6
("1101101") WHEN ("010000"), --2
("0110000") WHEN ("010001"), --1
("1111110") WHEN ("010010"), --0
("0110000") WHEN ("010011"), --1
("1101101") WHEN ("010100"), --2
("1111001") WHEN ("010101"), --3
("0110011") WHEN ("010110"), --4
("1011011") WHEN ("010111"), --5
("1111001") WHEN ("011000"), --3
("1101101") WHEN ("011001"), --2
("0110000") WHEN ("011010"), --1
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
END compara;
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
A B C D A B C D E F G
0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 0 1 1 0 0 0 0
0 0 1 1 1 1 0 1 1 0 1
0 0 1 0 1 1 1 1 0 0 1
0 1 1 0 0 1 1 0 0 1 1
0 1 1 1 1 0 1 1 0 1 1
0 1 0 1 1 0 1 1 1 1 1
0 1 0 0 1 1 1 0 0 0 0
1 1 0 0 1 1 1 1 1 1 1
1 1 0 1 1 1 1 0 0 1 1
1 1 1 1 1 1 1 1 1 1 0
1 1 1 0 0 1 1 0 0 0 0
1 0 1 0 1 1 0 1 1 0 1
1 0 1 1 1 1 1 1 0 0 1
1 0 0 1 0 1 1 0 0 1 1
1 0 0 0 1 0 1 1 0 1 1
(Tabla 8)
(Tabla 9)
B D+ C+A +A
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
(Tabla 10)
+ BC+A +BC
(Tabla 11)
(Tabla 12)
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
A + BD+ +CD
(Tabla 13)
+AD+ +B
(Tabla 14)
D+C +B +AB
(Tabla 15)
C+BD
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
El código es el siguiente:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
entity graydecima is
port
(
e: in std_logic_vector(3 downto 0);
s: out std_logic_vector(8 downto 0)
);
end graydecima;
BEGIN
process(e)
begin
--La primer fila de salidas es para los decimales 1 y 0
case e is
when "0000" => s <= "000000111";
when "0001" => s <= "100111111";
when "0011" => s <= "001001011";
when "0010" => s <= "000011011";
when "0110" => s <= "100110011";
when "0111" => s <= "010010011";
DIVISIÓN ACADÉMICA DE
MECÁNICA INDUSTRIAL
end case;
end process;
end deci;
CONCLUSION
El lenguaje de descripción de hardware VHDL para describir algunas de las
arquitecturas para simular las descripciones con parámetros de interés establecidos se
llevó a cabo con el lenguaje VHDL y el uso de herramientas modernas como la tarjeta
FPGA que facilitan de sobremanera el diseño de sistemas digitales y de programación
de señales al no tener que realizar explícitamente el circuito lógico o el circuito eléctrico
solo haciendo el programa con las especificaciones requeridas.