Académique Documents
Professionnel Documents
Culture Documents
Integración de actividades
Su simbología es la siguiente:
Entrada: A Salida: b
0 1
1 0
Su simbología es la siguiente:
Su simbología es la siguiente:
Su simbología es la siguiente:
Su simbología es la siguiente:
Su simbología es la siguiente:
Su simbología es la siguiente:
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, se explicarán dos ejemplos de los postulados:
· Niveles lógicos
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 funcionamiento, aplicaciones
Los Flip-Flops son los dispositivos con memoria mas comúnmente utilizados. Sus
características principales son:
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:
Flip-Flop D (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:
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
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.
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-logicos-
y-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-eprom-
eeprom.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 Desarrollo de compuertas básicas en 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;
entity comparador_1 is
Port ( A,B: in STD_LOGIC_VECTOR (3 DOWNTO 0);
C: out STD_LOGIC);
end comparador_1;
begin
PROCESS (A,B) BEGIN
IF (A=B) THEN C <= '1';
ELSE C <= '0';
END IF;
END PROCESS;
end Behavioral;
UCF // Asignación
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
DIAGRAMA
Código
library IEEE; architecture Sumador of SC is
use IEEE.STD_LOGIC_1164.ALL; Signal C: STD_LOGIC_VECTOR (2 downto 0);
begin
entity SC is
Port (A,B : in STD_LOGIC_VECTOR (3 downto 0); S(0) <= A(0) XOR B(0);
S : out STD_LOGIC_VECTOR (3 downto 0); C(0) <= A(0) AND B(0);
Cout : out STD_LOGIC);
end SC; S(1) <= A(1) XOR B(1) XOR C(0);
C(1) <= (A(1) AND B(1)) OR (C(0) AND (A(1) XOR NET "B[3]" LOC = R17;
B(1))); NET "S[0]" LOC = J14;
NET "S[1]" LOC = J15;
S(2) <= A(2) XOR B(2) XOR C(1); NET "S[2]" LOC = K15;
C(2) <= (A(2) AND B(2)) OR (C(1) AND (A(2) XOR NET "S[3]" LOC = K14;
B(2))); NET "Cout" LOC = E17;
S(3) <= A(3) XOR B(3) XOR C(2); # PlanAhead Generated physichal constraints
Cout <= (A(3) AND B(3)) OR (C(2) AND (A(3) XOR
B(3)));
end Sumador;
UCF // Asignación
DIAGRAMA
AN <= "1110";
CASE Q IS
END CASE;
END PROCESS;
end Behavioral;
UCF // Asignación
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; ELSIF (S = "00010" AND SEL = '0') THEN
use IEEE.STD_LOGIC_1164.ALL; D <= "0100100";--2
entity SUMA_DECO is AN <= "1110";
Port ( A,B : in STD_LOGIC_VECTOR (3 DOWNTO 0);
SEL : in STD_LOGIC; ELSIF (S = "00011" AND SEL = '0') THEN
D : out STD_LOGIC_VECTOR (6 DOWNTO 0); D <= "0110000";--3
AN : out STD_LOGIC_VECTOR (3 DOWNTO 0)); AN <= "1110";
end SUMA_DECO;
ELSIF (S = "00100" AND SEL = '0') THEN
architecture Behavioral of SUMA_DECO is D <= "0011001";--4
SIGNAL S : STD_LOGIC_VECTOR (4 DOWNTO 0); AN <= "1110";
SIGNAL C : STD_LOGIC_VECTOR (2 DOWNTO 0);
begin ELSIF (S = "00101" AND SEL = '0') THEN
S(0) <= A(0) XOR B(0); D <= "0010010";--5
C(0) <= A(0) AND B(0); AN <= "1110";
S(1) <= A(1) XOR B(1) XOR C(0);
C(1) <= (A(1) AND B(1)) OR (C(0) AND (A(1) XOR ELSIF (S = "00110" AND SEL = '0') THEN
B(1))); D <= "0000010";--6
S(2) <= A(2) XOR B(2) XOR C(1); AN <= "1110";
C(2) <= (A(2) AND B(2)) OR (C(1) AND (A(2) XOR
B(2))); ELSIF (S = "00111" AND SEL = '0') THEN
S(3) <= A(3) XOR B(3) XOR C(2); D <= "1111000";--7
S(4) <= (A(3) AND B(3)) OR (C(2) AND (A(3) XOR AN <= "1110";
B(3)));
ELSIF (S = "01000" AND SEL = '0') THEN
DECO : PROCESS (S, SEL) BEGIN D <= "0000000";--8
AN <= "1110";
IF (S = "00000" AND SEL = '0') THEN
D <= "1000000"; --0 ELSIF (S = "01001" AND SEL = '0') THEN
AN <= "1110"; D <= "0010000";--9
AN <= "1110";
ELSIF (S = "00001" AND SEL = '0') THEN
D <= "1111001"; ELSIF (S = "01010" AND SEL = '0') THEN
AN <= "1110";--1 D <= "1000000";--10
AN <= "1110";
ELSIF (S = "11011" AND SEL = '0') THEN
ELSIF (S = "01011" AND SEL = '0') THEN D <= "1111000";--27
D <= "1111001";--11 AN <= "1110";
AN <= "1110";
ELSIF (S = "11100" AND SEL = '0') THEN
ELSIF (S = "01100" AND SEL = '0') THEN D <= "0000000";--28
D <= "0100100";--12 AN <= "1110";
AN <= "1110";
ELSIF (S = "11101" AND SEL = '0') THEN
ELSIF (S = "01101" AND SEL = '0') THEN D <= "0010000";--29
D <= "0110000";--13 AN <= "1110";
AN <= "1110";
ELSIF (S = "11110" AND SEL = '0') THEN
ELSIF (S = "01110" AND SEL = '0') THEN D <= "1000000";--30
D <= "0011001";--14 AN <= "1110";
AN <= "1110";
--sección de decenas--
ELSIF (S = "01111" AND SEL = '0') THEN
D <= "0010010";--15 ELSIF (S = "00000" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000"; --0
AN <= "1101";
ELSIF (S = "10000" AND SEL = '0') THEN
D <= "0000010";--16 ELSIF (S = "00001" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000";--1
AN <= "1101";
ELSIF (S = "10001" AND SEL = '0') THEN
D <= "1111000";--17 ELSIF (S = "00010" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000";--2
AN <= "1101";
ELSIF (S = "10010" AND SEL = '0') THEN
D <= "0000000";--18 ELSIF (S = "00011" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000";--3
AN <= "1101";
ELSIF (S = "10011" AND SEL = '0') THEN
D <= "0010000";--19 ELSIF (S = "00100" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000";--4
AN <= "1101";
ELSIF (S = "10100" AND SEL = '0') THEN
D <= "1000000";--20 ELSIF (S = "00101" AND SEL = '1') THEN
AN <= "1110"; D <= "1000000";--5
AN <= "1101";
ELSIF (S = "10101" AND SEL = '0') THEN ELSIF (S = "00110" AND SEL = '1') THEN
D <= "1111001";--21 D <= "1000000";--6
AN <= "1110"; AN <= "1101";
ELSIF (S = "10110" AND SEL = '0') THEN ELSIF (S = "00111" AND SEL = '1') THEN
D <= "0100100";--22 D <= "1000000";--7
AN <= "1110"; AN <= "1101";
ELSIF (S = "10111" AND SEL = '0') THEN ELSIF (S = "01000" AND SEL = '1') THEN
D <= "0110000";--23 D <= "1000000";--8
AN <= "1110"; AN <= "1101";
ELSIF (S = "11000" AND SEL = '0') THEN ELSIF (S = "01001" AND SEL = '1') THEN
D <= "0011001";--24 D <= "1000000";--9
AN <= "1110"; AN <= "1101";
ELSIF (S = "11001" AND SEL = '0') THEN ELSIF (S = "01010" AND SEL = '1') THEN
D <= "0010010";--25 D <= "1111001";--10
AN <= "1110"; AN <= "1101";
ELSIF (S = "11010" AND SEL = '0') THEN ELSIF (S = "01011" AND SEL = '1') THEN
D <= "0000010";--26 D <= "1111001";--11
AN <= "1110"; AN <= "1101";
ELSIF (S = "01100" AND SEL = '1') THEN D <= "1111001";--17
D <= "1111001";--12 AN <= "1101";
AN <= "1101";
ELSIF (S = "10010" AND SEL = '1') THEN
ELSIF (S = "01101" AND SEL = '1') THEN D <= "1111001";--18
D <= "1111001";--13 AN <= "1101";
AN <= "1101";
ELSIF (S = "10011" AND SEL = '1') THEN
ELSIF (S = "01110" AND SEL = '1') THEN D <= "1111001";--19
D <= "1111001";--14 AN <= "1101";
AN <= "1101";
ELSIF (S = "10100" AND SEL = '1') THEN
ELSIF (S = "01111" AND SEL = '1') THEN D <= "0100100";--20
D <= "1111001";--15 AN <= "1101";
AN <= "1101";
ELSIF (S = "10101" AND SEL = '1') THEN
ELSIF (S = "10000" AND SEL = '1') THEN D <= "0100100";--21
D <= "1111001";--16 AN <= "1101";
AN <= "1101";
ELSIF (S = "10001" AND SEL = '1') THEN
ELSIF (S = "10110" AND SEL = '1') THEN AN <= "1101";
D <= "0100100";--22
AN <= "1101"; END IF;
DIAGRAMA
Código
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity contador_binario is
Port ( CLK_IN : in STD_LOGIC;
Q : INout STD_LOGIC_VECTOR(3 DOWNTO 0));
end contador_binario;
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; architecture Behavioral of contador_binario_deco is
use IEEE.STD_LOGIC_UNSIGNED.ALL; SIGNAL CLK_OUT : STD_LOGIC;
SIGNAL BITT : STD_LOGIC;
entity contador_binario_deco is SIGNAL TEMP : STD_LOGIC_VECTOR(25 DOWNTO
Port (CLK_IN : in STD_LOGIC; 0);
RST : in STD_LOGIC; SIGNAL UNIDADES : STD_LOGIC_VECTOR(3
D : out STD_LOGIC_VECTOR(6 DOWNTO 0); DOWNTO 0);
AN : out STD_LOGIC_VECTOR (3 DOWNTO 0)); SIGNAL DECENAS : STD_LOGIC_VECTOR(3
DOWNTO 0);
end contador_binario_deco; SIGNAL SEL : STD_LOGIC;
SIGNAL SALIDA : STD_LOGIC_VECTOR(3 DOWNTO WHEN OTHERS => AN <= "0000";
0); END CASE;
END PROCESS MUX_2;
begin
DECO: PROCESS (SALIDA) BEGIN
SEL <= TEMP(8); CASE SALIDA IS
END CASE;
CONTADOR_1: PROCESS
(CLK_OUT,BITT,UNIDADES,RST) BEGIN END PROCESS DECO;
IF RISING_EDGE (CLK_OUT) THEN
UNIDADES <= UNIDADES + 1; end Behavioral;
END IF;
IF UNIDADES = "1010" THEN UCF // Asignación
UNIDADES <= "0000";
END IF; NET "CLK_IN" LOC = B8;
IF UNIDADES = "1010" THEN NET "D[0]" LOC = L18;
BITT <= '1'; NET "D[1]" LOC = F18;
ELSE NET "D[2]" LOC = D17;
BITT <= '0'; NET "D[3]" LOC = D16;
END IF; NET "D[4]" LOC = G14;
IF RST = '1' THEN NET "D[5]" LOC = J17;
UNIDADES <= "0000"; NET "D[6]" LOC = H14;
END IF; NET "AN[3]" LOC = F17;
END PROCESS CONTADOR_1; NET "AN[2]" LOC = H17;
NET "AN[1]" LOC = C18;
CONTADOR_2: PROCESS (RST,DECENAS,BITT) NET "AN[0]" LOC = F15;
BEGIN NET "RST" LOC = H13;
IF RISING_EDGE (BITT) THEN
DECENAS <= DECENAS + 1;
END IF; #PLANAHEAD CONSTRAINTS PHYSICAL
IF DECENAS = "1010" THEN GENERATED
DECENAS <= "0000";
END IF;
IF RST = '1' THEN
DECENAS <= "0000";
END IF;
END PROCESS CONTADOR_2;