Vous êtes sur la page 1sur 23

Carrera de mecatrónica

Integración de actividades

Dispositivos digitales programables


Arévalo Villa Sergio Orlando
Silva Peña Edgar Miguel
1.-Investigacion sobre: Introducción a los dispositivos digitales

· Compuertas lógicas, simbología, tabla de verdad de cada compuerta,


su expresión algebraica.

De acuerdo con lo que se ha investigado, se conocen 7 tipos de compuertas


lógicas, las cuales son:

No. 1- Compuerta NOT (inversión o 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- Compuerta 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
1 0 1
1 1 1

Y su expresión algebraica es la siguiente: 𝑋 = 𝐴 + 𝐵


No. 3- Compuerta AND (multiplicadora).

Su simbología es la siguiente:

Su tabla de verdad es:

Entrada: A Entrada: B Salida: X


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

Y su expresión algebraica es la siguiente: 𝑋 = 𝐴 ∗ 𝐵

No. 4- Compuerta NAND (multiplicadora negada).

Su simbología es la siguiente:

Su tabla de verdad es:

Entrada: A Entrada: B Salida: X


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

Y su expresión algebraica es la siguiente: 𝑋 = (𝐴 ∗ 𝐵)´


No. 5- Compuerta NOR (sumadora negada).

Su simbología es la siguiente:

Su tabla de verdad es:

Entrada: A Entrada: B Salida: X


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

Y su expresión algebraica es la siguiente: 𝑋 = (𝐴 + 𝐵)´

No. 6- Compuerta X-OR (sumadora exclusiva).

Su simbología es la siguiente:

Su tabla de verdad es:

Entrada: a Entrada: b Salida: s


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

Y su expresión algebraica es la siguiente: 𝑠 = (𝑎 ∗ 𝑏´) + (𝑎´ ∗ 𝑏)


No. 7- Compuerta X-NOR (sumadora exclusiva negada).

Su simbología es la siguiente:

Su tabla de verdad es:

Entrada: a Entrada: b Salida: s


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

Y su expresión algebraica es la siguiente: 𝑠 = ((𝑎 ∗ 𝑏´) + (𝑎´ ∗ 𝑏))´

· Arreglo de diferentes compuertas y su expresión 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 Boole teoremas y postulados al menos explicar
dos ejemplos aplicando estos teoremas y postulados.

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:

1- 𝐴 + 𝐴 = 𝐴 en este caso si le damos el valor de 1 a la letra A, quedaría de


esta manera - 1 + 1 = 1
2- 𝐴 + 𝐴 = 𝐴 si a este teorema sustituimos la letra A con el número 0,
quedaría de la siguiente manera 0 + 0 = 0

· Diferentes tecnologías sobre las compuertas TTL, ECL, 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ó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:

Asumen solamente uno de dos posibles estados de 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-Reset)

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 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 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)

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:

· Memorias y tipos de memorias.


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, se muestra la descripción de cada tipo de memoria.


1. Memoria RAM:
Random Access Memory, o memoria de acceso aleatorio sus velocidades 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 tipos de Microprocesadores


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, se mostrará los microprocesadores más 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 velocidades de 2,8 GHz.
· Microcontroladores y tipos de microcontroladores
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 microcontrolador
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.

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 sistema
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 orientada al lenguaje C. •
Potentes herramientas de emulación.
· Diferencia entre un microcontrolador y un microprocesador.

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-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;

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; architecture Behavioral of comparador_2 is


use IEEE.STD_LOGIC_1164.ALL;
begin
entity comparador_2 is PROCESS (A,B) BEGIN
Port ( A,B : in STD_LOGIC_VECTOR (3 DOWNTO IF (A=B) THEN
0); X<='1';
X : out STD_LOGIC; Y<='0';
Y : out STD_LOGIC; Z<='0';
Z : out STD_LOGIC); ELSIF (A>B) THEN
end comparador_2; X<='0';
Y<='1';
Z<='0'; NET "A[2]" LOC =N17;
ELSE NET "A[1]" LOC =L13;
X<='0'; NET "A[0]" LOC =L14;
Y<='0'; NET "B[3]" LOC =K17;
Z<='1'; NET "B[2]" LOC =K18;
END IF; NET "B[1]" LOC =H18;
END PROCESS; NET "B[0]" LOC =G18;
end Behavioral; NET "X" LOC =K15;
NET "Y" LOC =J15;
UCF // Asignación NET "Z" LOC =J14;
#PLANAHEAD GENERATED PHYSICAL
NET "A[3]" LOC =R17; CONSTRAINTS

Diseño y desarrollo de un sumador 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; 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

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; NET "d[3]" LOC = D16;
use IEEE.STD_LOGIC_1164.ALL; NET "d[4]" LOC = G14;
NET "d[5]" LOC = J17;
entity decodificador is NET "d[6]" LOC = H14;
Port ( Q : in STD_LOGIC_VECTOR ( 3 downto 0); NET "an[3]" LOC =F17 ;
D : out STD_LOGIC_VECTOR ( 6 downto 0); NET "an[2]" LOC = H17;
AN: out STD_LOGIC_VECTOR ( 3 downto 0)); NET "an[1]" LOC = C18;
NET "an[0]" LOC = F15;
end decodificador; # 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 de un sumador con decodificador.

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;

ELSIF (S = "10111" AND SEL = '1') THEN END PROCESS DECO;


D <= "0100100";--23 end Behavioral;
AN <= "1101";
UCF // Asignación
ELSIF (S = "11000" AND SEL = '1') THEN
D <= "0100100";--24
AN <= "1101"; NET "A[3]" LOC = R17;
NET "A[2]" LOC = N17;
ELSIF (S = "11001" AND SEL = '1') THEN NET "A[1]" LOC = L13;
D <= "0100100";--25 NET "A[0]" LOC = L14;
AN <= "1101"; NET "B[3]" LOC = K17;
NET "B[2]" LOC = K18;
ELSIF (S = "11010" AND SEL = '1') THEN NET "B[1]" LOC = H18;
D <= "0100100";--26 NET "B[0]" LOC = G18;
AN <= "1101"; NET "SEL" LOC = H13;
NET "D[0]" LOC = L18;
ELSIF (S = "11011" AND SEL = '1') THEN NET "D[1]" LOC = F18;
D <= "0100100";--27 NET "D[2]" LOC = D17;
AN <= "1101"; NET "D[3]" LOC = D16;
NET "D[4]" LOC = G14;
ELSIF (S = "11100" AND SEL = '1') THEN NET "D[5]" LOC = J17;
D <= "0100100";--28 NET "D[6]" LOC = H14;
AN <= "1101"; NET "AN[0]"LOC = F17;
NET "AN[1]"LOC = H17;
ELSIF (S = "11101" AND SEL = '1') THEN NET "AN[2]"LOC = C18;
D <= "0100100";--29 NET "AN[3]"LOC = F15;
AN <= "1101";
#PLANAHEAD GENERATED PHYSICAL
ELSIF (S = "11110" AND SEL = '1') THEN CONSTRAINTS
D <= "0110000";--30
Diseño y desarrollo de contador de cuatro bits con salida a 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;
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;

architecture Behavioral of contador_binario is


SIGNAL CLK_OUT: STD_LOGIC;
SIGNAL TEMP : STD_LOGIC_VECTOR( 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 contador de 0 99 con salida a display y señales de
control RST, UP/DN, HOLD y cambio de frecuencia.

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

DIV: PROCESS (CLK_IN) BEGIN WHEN "0000"=> D <= "1000000";--0


IF RISING_EDGE (CLK_IN) THEN WHEN "0001"=> D <= "1111001";--1
TEMP <= TEMP + 1; WHEN "0010"=> D <= "0100100";--2
IF TEMP = "10111110101111000010000000" THEN WHEN "0011"=> D <= "0110000";--3
CLK_OUT <= '1'; WHEN "0100"=> D <= "0011001";--4
ELSE WHEN "0101"=> D <= "0010010";--5
CLK_OUT <= '0'; WHEN "0110"=> D <= "0000010";--6
WHEN "0111"=> D <= "1111000";--7
END IF; WHEN "1000"=> D <= "0000000";--8
END IF; WHEN "1001"=> D <= "0010000";--9
END PROCESS DIV; WHEN OTHERS => D <= "1111111";--Off

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;

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";

Vous aimerez peut-être aussi