Carrera de mecatrónica Integración de actividades
Dispositivos digitales programables Arévalo Villa Sergio Orlando Silva Peña Edgar Miguel
1.-I 1.-Investigacion nvestigacion sobre: Introducc ión a los disposi tivos digit ales ales · Compu ertas lógic lóg icas, as, sim bología, bol ogía, tabla de verdad de cada com puert a, su expresión algebraica. De acuerdo con lo que se ha investigado, se conocen 7 tipos de compuertas lógicas, las cuales son: No. 11- Comp Compuerta uerta NOT NOT (inversi ón o negación negación). ). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: A
Salida: b
0
1
1
0
Y su expresión algebraica es la siguiente:
= ´
No. 2- Compuert a OR (sumadora). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: A
Entrada: B
Salida: X
0
0
0
0 1
1 0
1 1
1
1
1
Y su expresión algebraica es la siguiente:
= +
No. 33- Comp Compuerta uerta AND (mult ipl ic icadora). adora). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: A
Entrada: B
Salida: X
0
0
0
0 1
1 0
0 0
1
1
1
Y su expresión algebraica es la siguiente:
= ∗
No. 44- Compuert a NAND NAND (mul (mul tip lic adora negada). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: A
Entrada: B
Salida: X
0
0
1
0 1
1 0
1 1
1
1
0
Y su expresión algebraica es la siguiente:
= ∗ ´
No. 5- Compuert a NOR NOR (sumado ra negada). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: A
Entrada: B
Salida: X
0
0
1
0 1
1 0
0 0
1
1
0
Y su expresión algebraica es la siguiente:
= + ´
No. 6- Compu Compuerta erta X-OR X-OR (sumador a exclus iva). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: a
Entrada: b
Salida: s
0
0
0
0 1
1 0
1 1
1
1
0
Y su expresión algebraica es la siguiente:
∗ ´ = ´ + ´ ´ ∗
No. 7- Comp Compuerta uerta X-NOR X-NOR (sumadora (sumado ra exclu siv siva a negada). Su simbología es la siguiente:
Su tabla de verdad es: Entrada: a
Entrada: b
Salida: s
0
0
1
0 1
1 0
0 0
1
1
1
Y su expresión algebraica es la siguiente:
·
= ( ∗ ´ ´ + + ´ ∗ )´
Arreglo de diferentes diferentes compuertas y su expresión algebraica algebraica
Si unimos la compuerta AND y la compuerta NOT, se obtiene la compuerta NAND y su expresión algebraica es: = ∗ ´
Si unimos la compuerta OR y la compuerta NOT, se obtiene la compuerta NOR y su expresión algebraica es: = + ´
Si unimos la compuerta X-OR y la compuerta NOT, se obtiene la compuerta NOR y su expresión algebraica es: = ( ∗ ´ + ´ ∗ )´
· Algebra de Bool e teoremas y postul pos tul ados al menos expli car dos ejemplos aplicando estos t eoremas eoremas y postul ados. No. 1- + = No. 2- ∗ = No. 3- + 0 = No. 4- ∗ 1 = 0 No. 5- ∗ 0 = 0 No. 6- + 1 = 1 No. 7- + ´ = ∗ ´ + ´´ = ´ No. 8- + ´ No. 9- + ∗ = No. 10- + = No. 11- + ´ = + No. 13- ´ + ´ = ´´ No. 14- + ´ = No. 15- + ´ ´ + = ´ No. 16- + ´ = 1 No. 17- ∗ ´ = 0 A continuación, continuación, se explicarán explicarán dos ejemplos ejemplos de de los postulados: postulados: 12-
· ▪ ▪ ▪ ▪
+ = en este caso si le damos el valor de 1 a la letra A, quedaría de esta manera - 1 + 1 = 1 + = si a este teorema sustituimos la letra A con el número 0, quedaría de la siguiente manera 0 + 0 = 0 Diferentes tecnol ogías sobre sob re las com puertas TTL, TTL, ECL, ECL, RTL RTL
TTL: transistor transistor logic (lógicas de transistores) MOS: metal oxide semiconductor (semiconductor de óxido de metal) ECL: emitter coupled logic (lógica de acoplamiento de emisor) CMOS: complementary metal oxide semiconductor (semiconductor de óxido de metal complementario).
·
Niveles lógic os
Niveles lógicos: Son los nombres dados a los voltajes usados para representar un 1 o un 0. En la práctica alto puede ser cualquier voltaje entre un mínimo y máximo especificado, de la misma manera bajo puede ser cualquier voltaje ente un mínimo y un máximo especificado.
·
Tipos de Flip Flops y su funci onamiento, aplicaciones
Los Flip-Flops son los dispositivos con memoria mas comúnmente utilizados. Sus características principales son: Asumen solamente solamente uno uno de dos posibles estados de salida. salida. Tienen un par de salidas que son complemento una de la otra. Tienen una o más entradas que pueden causar que el estado del Flip-Flop cambie. Flip -Flop S-R (Set-Re (Set-Reset) set) La siguiente figura muestra una forma posible de implementar un Flip-Flop S-R. Utiliza dos compuertas NOR. S y R son las entradas, mientras que Q y Q’ son las salidas (Q es generalmente la salida que se busca manipular.)
Como existen varias formas de implementar un Flip-Flop Flip-Flo p S-R (y en general cualquier tipo de Flip-Flop) se utilizan diagramas de bloque que representen al Flip-Flop. El siguiente diagrama de bloque representa un FF S-R. Nótese que ahora, por convención, Q se encuentra en la parte superior y Q’ en la inferior.
Flip-Flop T El Flip-flop T cambia de estado en cada pulso de T. El pulso es un ciclo completo de cero a 1. Las siguientes dos figuras muestran el diagrama de bloque y una implementación del FF T mediante un FF S-R y compuertas adicionales.
Flip-Flop J-K El flip-flop J-K es una mezcla entre el flip-flop S-R y el flip-flop T. Esto ocurre de la siguiente manera: En J=1, K=1 actúa como Flip-flop Flip-flop T De otra forma, actúa como flip-flop S-R El siguiente diagrama de bloque es el perteneciente el FF J-K
Una implementación tentativa de un FF J-K a partir de un FF S-R sin reloj es la siguiente:
Flip-Flop D (Delay) (Delay) El flip-flop D es uno de los FF más sencillos. Su función es dejar pasar lo que entra por D, a la salida Q, después de un pulso del reloj. Es, junto con el FF J-K, uno de los flip-flops mas comunes con reloj. Su tabla de estado se muestra a continuación:
·
Memor Memor ias y tip os de memori as.
Las memorias como su nombre lo indica te sirven para almacenar datos de utilidad en alguna aplicación particular. Se dividen en dos categorías las volátiles y las no-volátiles. Las volátiles son las RAM, DRAM, Non volatil Ram. Las no-volátiles. Estas memorias como su nombre lo indica no pierden los datos almacenados aún sin estar alimentadas. Las comprenden la ROM, EPROM, PROM, EPROM, EEPROM y FLASH hasta el momento. A continuación, continuación, se muestra la descripción descripción de cada cada tipo de memoria.
1. Memoria RAM: Random Access Memory, Memory , o memoria de acceso aleatorio sus velocidades vel ocidades de lectura y escritura son muy similares, son utilizadas en proceso de alta velocidad donde los datos pueden perderse al momento de cortar la energía 2. Memoria ROM: Read Only Memory, Memoria de solo lectura. Esta memoria viene ya grabada de fábrica y no puedes modificar su programación 3. Memoria PROM: rogramable ROM, memoria programable. Conocida igual como OTP( one time programable) o memoria de una sola programación. Una vez grabada ya no se puede modificar. 4. Memoria EPROM: Erasable PROM, memoria borrable.Solo pueden programarse si se les borra antes exponiéndolas durante cierto tiempo a la luz ultravioleta. Esto introduce voltaje a las celdas para que después puedan ser grabadas. 5. Memoria EEPROM: lectrical EPROM, memoria borrable electrónicamente. Esta memoria puede ser borrada por medios electrónicos a través de una terminal conocida como Vpp. Los voltajes de borrado son de aprox 13v. 6. Memoria FLASH: Es igual que una EEPROM su diferencia radica en la velocidad de grabado de los datos, además que el voltaje usado para borrar es de 5v o 3.3v dependiendo de la memoria. Es la más usada actualmente y existe un sin número de variantes
·
Microprocesadores y tipo s de Microproc esadores esadores
Conocido también como procesador, se trata de un circuito integrado central complejo. Se le conoce también como el cerebro del computador. Los microprocesadores son los encargados de ejecutar los programas, el sistema operativo y aplicaciones del usuario. Ejecuta instrucciones programadas en lenguaje de bajo nivel, realiza operaciones aritméticas y lógicas sencillas como sumas, restas, división, multiplicaciones, lógica binaria y memoria. A continuación, continuación, se mostrará los los microprocesador microprocesadores es más actuales: actuales: Intel Core i3, i5 e i7 Son procesadores de cuatro núcleos con arquitectura Intel x86-64 que cuentan con velocidades que van desde 1.06Ghz hasta los 2.66Ghz para portátiles y desde los
2.93Ghz hasta los 3.46Ghz. Hoy en día existen los i9, que contienen 6 núcleos con velocidades desde 3.2Ghz hasta 3.7Ghz. AMD Phenom II y Athlon II Se trata de un microprocesador con soporte DDR3 con cuatro y tres núcleos. El AMD Athlon II X4 630 alcanza alcanza velocidades velocidades de 2,8 GHz.
·
Microcontr oladores y tipos de micro contr oladores
Los microcontroladores son procesadores con memoria incorporada, y se encuentran en dispositivos que van desde los cepillos de dientes eléctricos a los controladores de frenos antibloqueo en los automóviles. Esta amplia gama de aplicaciones ha dado lugar a diferentes tipos de microcontroladores, con una gran variedad de memoria integrada y circuitos periféricos. Cada tipo de microcontrol ador se adapta a una aplicación o tipo de circuito en particular . Nombre
Características
PIC de gama básica (16C5XX):
• Datos de 8 bits. • Instrucciones de 12 bits. • 33 instrucciones. • Sin interrupciones • Pila de dos niveles • Alimentación desde 2,5 v. v.
PIC de gama media (16C(F)XXX):
• Datos de 8 bits. • Instrucciones de 14 bits. • 35 instrucciones. • Interrupciones • Pila de 8 niveles (anidamiento de subrutinas) • Gran variedad de periféricos: Timers, ADC, USART, LCD, Comparadores, etc.
PIC miniatura (12C(F)XXX):
• Datos de 8 bits. • Instrucciones de 14/12 bits. • 35/33 instrucciones. • 8 pines y hasta 6 líneas de E/S. • Consumo menor de 2 mA a 5v y 4 Mhz.
PIC de gama alta (17CXXX):
• Datos de 8 bits. • Instrucciones de 16 bits. • 58 instrucciones. • Potente sist ema de gestión de interrupciones vectorizadas. • Arquitectura abierta (bus de datos y direcciones disponibles: como en un µP) • Gran variedad de periféricos: como en gama media, más un multiplicador HW de gran velocidad.
PIC de gama mejorada (18C(F)XXX):
• Datos de 8 bits. • Instrucciones de 16 bits. • 77 instrucciones (multiplicación de 8x8 en un ciclo). • Alta velocidad (hasta 40 Mhz) y alto rendimiento (10 MIPS) • Arquitectura Arquitectura orientada orientada al lenguaje lenguaje C. • Potentes herramientas de emulación.
·
Diferencia Diferencia entre un micro contr olador y un micro procesador.
Los microprocesadores tienen una arquitectura destinada al procesamiento de la informacion. Las características de los microprocesadores son: la CPU, las memorias RAM, ROM y periféricos se encuentra separados; así mismo los programas que se realizan para un microprocesador siempre tienen un fin En el caso de los microcontroladores tienen una arquitectura destinada a procesos de control. Las características de los microcontroladores es que en un solo chip pueden contar con la CPU memoria RAM, ROM, periféricos, times, conversores AD y DA. Los programas que se realizan para un microcontrolador nunca tienen fin, es decir solo termina el programa cuando se corta la energía. Fuentes: https://hetpro-store.com/TUTORIALES/compuertas-logicas/ https://unicrom.com/niveles-logicos-alto-bajo-0-1-low-high/ https://electronicados.wordpress.com/2012/11/22/digitos-binarios-niveles-logicosy-formas-de-onda-digitales/ http://homepage.cem.itesm.mx/pchavez/material/arqui/Modulos/ModuloVICircuitos Secuenciales/MaterialCircuitosSecuenciales/FlipFlops/FlipFlops.htm http://www.profesormolina.com.ar/electronica/componentes/int/tipo_mem.htm https://www.forosdeelectronica.com/threads/memorias-rom-ram-prom-epromeeprom.17105/ https://www.tiposdecosas.com/microprocesadores.html https://techlandia.com/tipos-microcontroladores-info_207081/ http://edii.uclm.es/~miniesta/mc_pic_1.pdf
Diseño y Desarrol Desarrol lo d e compu ertas ertas b ásicas en VHDL VHDL DIAGRAMA
Comparador 1 Esta práctica consta de declarar 2 entradas (A y B) y una salida (C), el proceso realiza una comparación, cuando A y B sean iguales, cada una siendo cuatro switch, entonces C será igual a 1, el cual se representa con un led en la tarjeta.
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; entity comparador_1 is Port ( A,B: in STD_LOGIC_VECTOR (3 DOWNTO DOWNTO 0); C: out STD_LOGIC); end comparador_1; architecture Behavioral of comparador_1 is begin PROCESS (A,B) BEGIN IF (A=B) THEN C <= '1'; ELSE C <= '0'; END IF; END PROCESS; end Behavioral;
UCF // // Asignación NET "A[3]" LOC = G18; NET "A[2]" LOC = H18; NET "A[1]" LOC = K18; NET "A[0]" LOC = K17; NET "B[3]" LOC = L14; NET "B[2]" LOC = L13; NET "B[1]" LOC = N17; NET "B[0]" LOC = R17; NET "C" LOC = J14; #PLANAHEAD GENERATED PHYSICAL +9CONSTRAINTS
Comparador 2 En esta modificación de la primera actividad, el objetivo es realizar comparaciones, pero ahora con 3 salidas, es decir, ahora no sólo podremos saber si son iguales o distintos, sino que en la tarjeta podremos visualizar cuál entrada es mayor.
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; entity comparador_2 is Port ( A,B : in STD_LOGIC_VECTOR (3 DOWNTO DOWNTO 0); X : out STD_LOGIC; Y : out STD_LOGIC; Z : out STD_LOGIC); end comparador_2;
architecture Behavioral of comparador_2 is begin PROCESS (A,B) BEGIN IF (A=B) THEN X<='1'; Y<='0'; Z<='0'; ELSIF (A>B) THEN X<='0'; Y<='1';
Z<='0'; ELSE X<='0'; Y<='0'; Z<='1'; END IF; END PROCESS; end Behavioral; UCF // // Asignación NET "A[3]" LOC =R17;
NET "A[2]" LOC =N17; NET "A[1]" LOC =L13; NET "A[0]" LOC =L14; NET "B[3]" LOC =K17; NET "B[2]" LOC =K18; NET "B[1]" LOC =H18; NET "B[0]" LOC =G18; NET "X" LOC =K15; NET "Y" LOC =J15; NET "Z" LOC =J14; #PLANAHEAD GENERATED PHYSICAL CONSTRAINTS
Diseño y desarrol desarrol lo de un su mador de 4 bits. DIAGRAMA
La práctica de un sumador de 4 bits se compone de 2 entradas y 2 salidas, las entradas compuestas por switches, los cuales obtienen valores binarios, al sumarlos, el resultado se mostrará de igual manera, en binario, con los leds de la tarjeta.
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; entity SC is Port (A,B : in STD_LOGIC_VECTOR STD_LOGIC_VECTOR (3 downto 0); S : out STD_LOGIC_VECTOR (3 downto 0); Cout : out STD_LOGIC); end SC;
architecture Sumador of SC is Signal C: STD_LOGIC_VECTOR (2 downto 0); begin S(0) <= A(0) XOR B(0); C(0) <= A(0) AND B(0); S(1) <= A(1) XOR B(1) XOR C(0);
C(1) <= (A(1) AND B(1)) OR (C(0) AND (A(1) XOR B(1))); S(2) <= A(2) XOR B(2) XOR C(1); C(2) <= (A(2) AND B(2)) OR (C(1) AND (A(2) XOR B(2))); S(3) <= A(3) XOR B(3) XOR C(2); Cout <= (A(3) AND B(3)) OR (C(2) AND (A(3) XOR B(3)));
NET "B[3]" LOC = R17; NET "S[0]" LOC = J14; NET "S[1]" LOC = J15; NET "S[2]" LOC = K15; NET "S[3]" LOC = K14; NET "Cout" LOC = E17; # PlanAhead Generated physichal constraints
end Sumador;
UCF // // Asignación NET "A[2]" LOC = K18; NET "A[3]" LOC = K17; NET "A[1]" LOC = H18; NET "A[0]" LOC = G18; NET "B[0]" LOC = L14; NET "B[1]" LOC = L13; NET "B[2]" LOC = N17;
Diseño y desarrollo de un decodificador (Mediante la estructura “case when”).
DIAGRAMA
Práctica que consta de proyectar números del 0 al 9 en un display de 7 segmentos, esto controlado desde los switches (en esta ocasión, solamente están hábiles 4 de los 8 disponibles).
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; entity decodificador is Port ( Q : in STD_LOGIC_VECTOR ( 3 downto downto 0); D : out STD_LOGIC_VECTOR STD_LOGIC_VECTOR ( 6 downto 0); AN: out STD_LOGIC_VECTOR ( 3 downto 0)); 0)); end decodificador;
NET "d[3]" LOC = D16; NET "d[4]" LOC = G14; NET "d[5]" LOC = J17; NET "d[6]" LOC = H14; NET "an[3]" LOC =F17 ; NET "an[2]" LOC = H17; NET "an[1]" LOC = C18; NET "an[0]" LOC = F15; # PlanAhead Generated Physical Constraints
architecture Behavioral of decodificador is begin process (Q) begin AN <= "1110"; CASE Q IS WHEN "0000"=> D <= "1000000"; --0 WHEN "0001"=> D <= "1111001";--1 WHEN "0010"=> D <= "0100100";--2 WHEN "0011"=> D <= "0110000";--3 WHEN "0100"=> D <= "0011001";--4 WHEN "0101"=> D <= "0010010";--5 WHEN "0110"=> D <= "0000010";--6 WHEN "0111"=> D <= "1111000";--7 WHEN "1000"=> D <= "0000000";--8 WHEN "1001"=> D <= "0010000";--9 WHEN OTHERS => D <= "1111111"; END CASE; END PROCESS; end Behavioral; UCF // // Asignación
NET "q[0]" LOC = G18; NET "q[1]" LOC = H18; NET "q[2]" LOC = K18; NET "q[3]" LOC = K17; NET "d[0]" LOC = L18; NET "d[1]" LOC = F18; NET "d[2]" LOC = D17;
Diseño y desarrollo desarrollo de un sumador con decodi ficador. DIAGRAMA
En esta práctica realizamos un sumador con los 8 switches, y se representaron los resultados en los displays de 7 segmentos, estos mostrando un dígito a la vez, agregamos un botón físico como entrada para poder intercambiar los displays y elegir si mostrar las decenas o las unidades.
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; entity SUMA_DECO is Port ( A,B : in STD_LOGIC_VECTOR STD_LOGIC_VECTOR (3 DOWNTO 0); SEL : in STD_LOGIC; D : out STD_LOGIC_VECTOR (6 DOWNTO 0); AN : out STD_LOGIC_VECTOR STD_LOGIC_VECTOR (3 (3 DOWNTO 0)); end SUMA_DECO; architecture Behavioral of SUMA_DECO is SIGNAL S : STD_LOGIC_VECTOR (4 DOWNTO 0); SIGNAL C : STD_LOGIC_VECTOR (2 DOWNTO 0); begin S(0) <= A(0) XOR B(0); C(0) <= A(0) AND B(0); S(1) <= A(1) XOR B(1) XOR C(0); C(1) <= (A(1) AND B(1)) OR (C(0) AND (A(1) XOR B(1))); S(2) <= A(2) XOR B(2) XOR C(1); C(2) <= (A(2) AND B(2)) OR (C(1) AND (A(2) XOR B(2))); S(3) <= A(3) XOR B(3) XOR C(2); S(4) <= (A(3) AND B(3)) OR (C(2) AND (A(3) XOR B(3))); DECO : PROCESS (S, SEL) BEGIN IF (S = "00000" AND SEL = '0') THEN D <= "1000000"; --0 AN <= "1110"; ELSIF (S = "00001" AND SEL = '0') THEN D <= "1111001"; AN <= "1110";--1
ELSIF (S = "00010" AND SEL = '0') THEN D <= "0100100";--2 AN <= "1110"; ELSIF (S = "00011" AND SEL = '0') THEN D <= "0110000";--3 AN <= "1110"; ELSIF (S = "00100" AND SEL = '0') THEN D <= "0011001";--4 AN <= "1110"; ELSIF (S = "00101" AND SEL = '0') THEN D <= "0010010";--5 AN <= "1110"; ELSIF (S = "00110" AND SEL = '0') THEN D <= "0000010";--6 AN <= "1110"; ELSIF (S = "00111" AND SEL = '0') THEN D <= "1111000";--7 AN <= "1110"; ELSIF (S = "01000" AND SEL = '0') THEN D <= "0000000";--8 AN <= "1110"; ELSIF (S = "01001" AND SEL = '0') THEN D <= "0010000";--9 AN <= "1110"; ELSIF (S = "01010" AND SEL = '0') THEN D <= "1000000";--10 AN <= "1110";
ELSIF (S = "01011" AND SEL = '0') THEN D <= "1111001";--11 AN <= "1110"; ELSIF (S = "01100" AND SEL = '0') THEN D <= "0100100";--12 AN <= "1110"; ELSIF (S = "01101" AND SEL = '0') THEN D <= "0110000";--13 AN <= "1110"; ELSIF (S = "01110" AND SEL = '0') THEN D <= "0011001";--14 AN <= "1110";
ELSIF (S = "11011" AND SEL = '0') THEN D <= "1111000";--27 AN <= "1110"; ELSIF (S = "11100" AND SEL = '0') THEN D <= "0000000";--28 AN <= "1110"; ELSIF (S = "11101" AND SEL = '0') THEN D <= "0010000";--29 AN <= "1110"; ELSIF (S = "11110" AND SEL = '0') THEN D <= "1000000";--30 AN <= "1110"; --sección de decenas--
ELSIF (S = "01111" AND SEL = '0') THEN D <= "0010010";--15 AN <= "1110"; ELSIF (S = "10000" AND SEL = '0') THEN D <= "0000010";--16 AN <= "1110"; ELSIF (S = "10001" AND SEL = '0') THEN D <= "1111000";--17 AN <= "1110"; ELSIF (S = "10010" AND SEL = '0') THEN D <= "0000000";--18 AN <= "1110"; ELSIF (S = "10011" AND SEL = '0') THEN D <= "0010000";--19 AN <= "1110"; ELSIF (S = "10100" AND SEL = '0') THEN D <= "1000000";--20 AN <= "1110";
ELSIF (S = "00000" AND SEL = '1') THEN D <= "1000000"; --0 AN <= "1101"; ELSIF (S = "00001" AND SEL = '1') THEN D <= "1000000";--1 AN <= "1101"; ELSIF (S = "00010" AND SEL = '1') THEN D <= "1000000";--2 AN <= "1101"; ELSIF (S = "00011" AND SEL = '1') THEN D <= "1000000";--3 AN <= "1101"; ELSIF (S = "00100" AND SEL = '1') THEN D <= "1000000";--4 AN <= "1101";
ELSIF (S = "10101" AND SEL = '0') THEN D <= "1111001";--21 AN <= "1110";
ELSIF (S = "00101" AND SEL = '1') THEN D <= "1000000";--5 AN <= "1101"; ELSIF (S = "00110" AND SEL = '1') THEN D <= "1000000";--6 AN <= "1101";
ELSIF (S = "10110" AND SEL = '0') THEN D <= "0100100";--22 AN <= "1110";
ELSIF (S = "00111" AND SEL = '1') THEN D <= "1000000";--7 AN <= "1101";
ELSIF (S = "10111" AND SEL = '0') THEN D <= "0110000";--23 AN <= "1110";
ELSIF (S = "01000" AND SEL = '1') THEN D <= "1000000";--8 AN <= "1101";
ELSIF (S = "11000" AND SEL = '0') THEN D <= "0011001";--24 AN <= "1110";
ELSIF (S = "01001" AND SEL = '1') THEN D <= "1000000";--9 AN <= "1101";
ELSIF (S = "11001" AND SEL = '0') THEN D <= "0010010";--25 AN <= "1110";
ELSIF (S = "01010" AND SEL = '1') THEN D <= "1111001";--10 AN <= "1101";
ELSIF (S = "11010" AND SEL = '0') THEN D <= "0000010";--26 AN <= "1110";
ELSIF (S = "01011" AND SEL = '1') THEN D <= "1111001";--11 AN <= "1101";
ELSIF (S = "01100" AND SEL = '1') THEN D <= "1111001";--12 AN <= "1101"; ELSIF (S = "01101" AND SEL = '1') THEN D <= "1111001";--13 AN <= "1101"; ELSIF (S = "01110" AND SEL = '1') THEN D <= "1111001";--14 AN <= "1101"; ELSIF (S = "01111" AND SEL = '1') THEN D <= "1111001";--15 AN <= "1101"; ELSIF (S = "10000" AND SEL = '1') THEN D <= "1111001";--16 AN <= "1101"; ELSIF (S = "10001" AND SEL = '1') THEN ELSIF (S = "10110" AND SEL = '1') THEN D <= "0100100";--22 AN <= "1101"; ELSIF (S = "10111" AND SEL = '1') THEN D <= "0100100";--23 AN <= "1101";
D <= "1111001";--17 AN <= "1101"; ELSIF (S = "10010" AND SEL = '1') THEN D <= "1111001";--18 AN <= "1101"; ELSIF (S = "10011" AND SEL = '1') THEN D <= "1111001";--19 AN <= "1101"; ELSIF (S = "10100" AND SEL = '1') THEN D <= "0100100";--20 AN <= "1101"; ELSIF (S = "10101" AND SEL = '1') THEN D <= "0100100";--21 AN <= "1101";
AN <= "1101"; END IF; END PROCESS DECO; end Behavioral; UCF // Asignación
ELSIF (S = "11000" AND SEL = '1') THEN D <= "0100100";--24 AN <= "1101"; ELSIF (S = "11001" AND SEL = '1') THEN D <= "0100100";--25 AN <= "1101"; ELSIF (S = "11010" AND SEL = '1') THEN D <= "0100100";--26 AN <= "1101"; ELSIF (S = "11011" AND SEL = '1') THEN D <= "0100100";--27 AN <= "1101"; ELSIF (S = "11100" AND SEL = '1') THEN D <= "0100100";--28 AN <= "1101"; ELSIF (S = "11101" AND SEL = '1') THEN D <= "0100100";--29 AN <= "1101"; ELSIF (S = "11110" AND SEL = '1') THEN D <= "0110000";--30
NET "A[3]" LOC = R17; NET "A[2]" LOC = N17; NET "A[1]" LOC = L13; NET "A[0]" LOC = L14; NET "B[3]" LOC = K17; NET "B[2]" LOC = K18; NET "B[1]" LOC = H18; NET "B[0]" LOC = G18; NET "SEL" LOC = H13; NET "D[0]" LOC = L18; NET "D[1]" LOC = F18; NET "D[2]" LOC = D17; NET "D[3]" LOC = D16; NET "D[4]" LOC = G14; NET "D[5]" LOC = J17; NET "D[6]" LOC = H14; NET "AN[0]"LOC = F17; NET "AN[1]"LOC = H17; NET "AN[2]"LOC = C18; NET "AN[3]"LOC = F15; #PLANAHEAD GENERATED PHYSICAL CONSTRAINTS
Diseño y desarrol desarrol lo de contador de cuatro bits c on salida a led´s led´s DIAGRAMA
Para el desarrollo de esta práctica, utilizamos el contador que tiene integrado la tarjeta, posteriormente con una estructura ‘if’ indicaremos que cada segundo incremente en 1 nuestra salida, de esta manera, podremos ver en los leds un contador binario sin que el usuario realice algún cambio en la tarjeta.
Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED IEEE.STD_LOGIC_UNSIGNED.ALL; .ALL; entity contador_binario is Port ( CLK_IN CLK_IN : in STD_LOGIC; Q : INout INout STD_LOGIC_VECTOR( STD_LOGIC_VECTOR(3 3 DOWNTO DOWNTO 0)); end contador_binario; architecture Behavioral of contador_binario is SIGNAL CLK_OUT: STD_LOGIC; SIGNAL TEMP TEMP : STD_LOGIC_VECTOR( STD_LOGIC_VECTOR( 26 26 DOWNTO 0); begin DIV: PROCESS (CLK_IN) BEGIN IF RISING_EDGE (CLK_IN) THEN TEMP <= TEMP + 1; IF TEMP = "10111110101111000010000000" THEN CLK_OUT <= '1'; ELSE CLK_OUT <= '0'; END IF; END IF; END PROCESS DIV;
CONTADOR: PROCESS (CLK_OUT) BEGIN IF RISING_EDGE (CLK_OUT) THEN Q <= Q + 1; END IF; END PROCESS CONTADOR; end Behavioral; UCF // // Asignación NET "CLK_IN" LOC = B8; NET "Q[0]"LOC = J14 ; NET "Q[1]"LOC = J15 ; NET "Q[2]"LOC = K15; NET "Q[3]"LOC = K14; # planahead generated physical constraints
Diseño y desarrollo de co ntador de 0 99 con s alida a display y señales de contro con tro l RST, UP/DN UP/DN,, HOLD HOLD y c ambio de frecu encia. DIAGRAMA
Práctica que combina códigos antes realizados, aquí deberemos ver en los displays de 7 segmentos un contador, el cual cada segundo se deberá incrementar en 1, hasta llegar a 99 y se deberá reiniciar en 0 por tiempo indefinido, además, contará con botones físicos para reiniciar cuando se requiera y para restar en lugar de sumar. Código library IEEE; use IEEE.STD_LOGIC_1164.ALL; IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED IEEE.STD_LOGIC_UNSIGNED.ALL; .ALL; entity contador_binario_deco is Port (CLK_IN (CLK_IN : in STD_LOGIC; RST : in STD_LOGIC; D : out STD_LOGIC_VECTOR(6 DOWNTO 0); AN : out STD_LOGIC_VECTOR STD_LOGIC_VECTOR (3 (3 DOWNTO 0)); end contador_binario_deco;
architecture Behavioral of contador_binario_deco is SIGNAL CLK_OUT : STD_LOGIC; STD_LOGIC; SIGNAL BITT : STD_LOGIC; SIGNAL TEMP : STD_LOGIC_VECTOR(2 STD_LOGIC_VECTOR(25 5 DOWNTO 0); SIGNAL UNIDADES : STD_LOGIC_VECTOR STD_LOGIC_VECTOR(3 (3 DOWNTO 0); SIGNAL DECENAS : STD_LOGIC_VECTOR( STD_LOGIC_VECTOR(3 3 DOWNTO 0); SIGNAL SEL : STD_LOGIC;
SIGNAL SALIDA : STD_LOGIC_VECTOR(3 STD_LOGIC_VECTOR(3 DOWNTO 0);
WHEN OTHERS => AN <= "0000"; END CASE; END PROCESS MUX_2;
begin SEL <= TEMP(8); DIV: PROCESS (CLK_IN) BEGIN IF RISING_EDGE (CLK_IN) THEN TEMP <= TEMP + 1; IF TEMP = "10111110101111000010000000" THEN CLK_OUT <= '1'; ELSE CLK_OUT <= '0'; END IF; END IF; END PROCESS DIV;
DECO: PROCESS (SALIDA) BEGIN CASE SALIDA IS WHEN "0000"=> D <= "1000000";--0 WHEN "0001"=> D <= "1111001";--1 WHEN "0010"=> D <= "0100100";--2 WHEN "0011"=> D <= "0110000";--3 WHEN "0100"=> D <= "0011001";--4 WHEN "0101"=> D <= "0010010";--5 WHEN "0110"=> D <= "0000010";--6 WHEN "0111"=> D <= "1111000";--7 WHEN "1000"=> D <= "0000000";--8 WHEN "1001"=> D <= "0010000";--9 WHEN OTHERS => D <= " 1111111";--Off END CASE;
CONTADOR_1: PROCESS (CLK_OUT,BITT,UNIDADES,RST) (CLK_OUT,BITT,UNIDADES,RST) BEGIN IF RISING_EDGE (CLK_OUT) THEN UNIDADES <= UNIDADES + 1; END IF; IF UNIDADES = "1010" THEN UNIDADES <= "0000"; END IF; IF UNIDADES = "1010" THEN BITT <= '1'; ELSE BITT <= '0'; END IF; IF RST = '1' THEN UNIDADES <= "0000"; END IF; END PROCESS CONTADOR_1; CONTADOR_2: PROCESS (RST,DECENAS,BITT) (RST,DECENAS,BITT) BEGIN IF RISING_EDGE (BITT) THEN DECENAS <= DECENAS + 1; END IF; IF DECENAS = "1010" THEN DECENAS <= "0000"; END IF; IF RST = '1' THEN DECENAS <= "0000"; END IF; END PROCESS CONTADOR_2;
MUX_1: PROCESS (UNIDADES,DECENAS,SEL) BEGIN CASE SEL IS WHEN '0' => SALIDA <= UNIDADES; WHEN '1' => SALIDA <= DECENAS; WHEN OTHERS => SALIDA <= "0000"; END CASE; END PROCESS MUX_1; MUX_2: PROCESS (SEL) BEGIN CASE SEL IS WHEN '0' => AN <= "1110"; WHEN '1' => AN <= "1101";
END PROCESS DECO; end Behavioral; UCF // Asignación NET "CLK_IN" LOC = B8; NET "D[0]" LOC = L18; NET "D[1]" LOC = F18; NET "D[2]" LOC = D17; NET "D[3]" LOC = D16; NET "D[4]" LOC = G14; NET "D[5]" LOC = J17; NET "D[6]" LOC = H14; NET "AN[3]" LOC = F17; NET "AN[2]" LOC = H17; NET "AN[1]" LOC = C18; NET "AN[0]" LOC = F15; NET "RST" LOC = H13;
#PLANAHEAD CONSTRAINTS PHYSICAL GENERATED