Practica 1 VHDL
Practica 1 VHDL
Practica 1 VHDL
CIRCUITOS LÓGICOS
2MV6
PRACTICA 01
COMPUERTAS BASICAS Y SU
IMPLEMENTACIÓN EN APLICACIONES
25 DE FEBRERO DE 2020
Introducción
Dentro de la electrónica digital, existe un gran número de problemas a resolver que
se repiten normalmente. Por ejemplo, es muy común que al diseñar un circuito
electrónico necesitemos tener el valor opuesto al de un punto determinado, o que
cuando un cierto número de pulsadores estén activados, una salida permanezca
apagada. Todas estas situaciones pueden ser expresadas mediante ceros y unos,
y tratadas mediante circuitos digitales. Los elementos básicos de cualquier circuito
digital son las compuertas lógicas. (Palazzesi, 2012)
Compuertas Lógicas
La electrónica digital utiliza sistemas y
circuitos en los que sólo existen dos
estados posibles. Estos estados se
representan mediante dos niveles de
tensión diferentes: ALTO (HIGH) y
BAJO (LOW). En la práctica los
voltajes típicos correspondientes a los
circuitos integrados son según
(Cátedra de percepción y sistemas
inteligentes) de 0 – 0.5V para el cero Ilustración 1 Valores típicos para los valores de entrada de un
lógico y de 3.3 – 5V para el uno lógico, circuito integrado
como se muestra en la y la
interpretación de los valores lógicos “0” Lógico “1” Lógico
en los sistemas digitales en la Tabla 1 Falso Verdadero
Desactivado Activado
En el álgebra de Boole existen Nivel Bajo (L) Nivel Alto (H)
operadores binarios que obedecen a No Si
cada uno de los teoremas y Interruptor Abierto Interruptor Cerrado
postulados del álgebra de Boole. Los Tabla 1 Interpretación de los niveles lógicos
operadores lógicos principales son:
AND (y), OR (o) y NOT (no), de ahí se
derivan otros operadores que complementan las reglas de algebra de Boole. Puesto
que las funciones booleanas se expresan en términos de operaciones AND (y), OR
(o) y NOT (no), es más fácil implementar una función booleana con estos tipos de
compuertas. (Cátedra de percepción y sistemas inteligentes).
Considerando como entradas a ‘A’ y ‘B’, y como salida a X en la Tabla 2 se
presentan las principales compuertas con la tabla de verdad, el símbolo
representativo del operador lógico y la simbología normalizada de la compuerta.
VHDL Verilog
• Sintaxis más compleja similar a • Sintaxis más simple, similar a C
ADA • Más fácil de aprender
• Sintaxis más estricta: reduce la • Múltiples versiones
posibilidad de errores o 1995
• Mejor soporte para diseños o 2001
grandes y complejos o 2005
o System Verilog
Tabla 3 VHDL y Verilog
Desarrollo
Esta practica tiene el objetivo de que el alumno entienda e implemente circuitos de
aplicación de las compuertas lógicas, con nociones básicas de VHDL y Verilog,
mediante el uso de la tarjeta de desarrollo Nexys y conocimientos previos de
electrónica.
Punto 1
Escribir el código en VHDL y Verilog para declarar las compuertas de 3 entradas
Ilustración 7: AND, OR, NAND, NOR, XOR, XNOR y NOT.
1. Escribir el código en el entorno ISE de Xilinx
2. Asignar por lo menos una salida a los conectores externos y medir los niveles
lógicos con un multímetro VL [V]= 0 V VH [V]= 3.29 V .
3. Completar la tabla con los niveles lógicos obtenidos. Reportar con fotos
editadas con texto, flechas y recuadros.
entity punto1_vhdl is
Port (
a : in STD_LOGIC; --ENTRADA
b : in STD_LOGIC; --ENTRADA
c : in STD_LOGIC; --ENTRADA
z : out STD_LOGIC_VECTOR (6 downto 0); --SALIDA
s : out STD_LOGIC --SALIDA LÓGICA
);
end punto1_vhdl;
UCF - - - - - - - - - - -
## LEDs
NET "z(6)" LOC = "J14" ; Ilustración 3 Conector Pmod JA
NET "z(5)" LOC = "J15" ;
NET "z(4)" LOC = "K15" ;
NET "z(3)" LOC = "K14" ;
NET "z(2)" LOC = "E17" ;
NET "z(1)" LOC = "P15" ;
NET "z(0)" LOC = "F4"; PIN L15 DEL
CONECTOR JA
## Salida Lógica
NET "s" LOC = "L15";
## Slide switches
NET "a" LOC = "G18" ;
NET "b" LOC = "H18" ;
NET "c" LOC = "K18";
module P1_P1_verilog(
endmodule
UCF - - - - - - - - - - - - - -
## LEDs
NET "z[0]" LOC = "J14" ;
NET "z[1]" LOC = "J15" ;
NET "z[2]" LOC = "K15" ;
NET "z[3]" LOC = "K14" ; Ilustración 6 Cero Lógico (PIN L15)
NET "z[4]" LOC = "E17" ;
NET "z[5]" LOC = "P15" ;
NET "Z[6]" LOC = "F4";
## Salida Lógica
NET "s" LOC = "L15";
## Slide switches
NET "e[0]" LOC = "G18" ;
NET "e[1]" LOC = "H18" ;
NET "e[2]" LOC = "K18";
En ambos casos la salida “s” fue designada en el PIN L15, como se muestra en la
Ilustración 4, cuyo valor para el uno lógico fue de 3.29V y para el cero lógico de 0V,
como se observa en la Ilustración 5 y en la Ilustración 6 ,respectivamente.
Punto 2
Este ejercicio consiste en implementar un sistema de alarma para una casa, en
VHDL y Verilog; el cual consiste en tres puertas (P1, P2, P3) y cuatro ventanas (V1,
V2, V3, V4), en caso de que alguna de estas se active, comenzara a sonar una
alarma y sin importar que la puerta o ventana se cierre, la alarma no debe dejar de
sonar, como se muestra en la Ilustración 8.
Ilustración 8 Diagrama del sistema de Alarma
library ieee;
use ieee.std_logic_1164.ALL; Ilustración 9 Circuito para el Buzzer,
implementando un SCR
entity alarma_vhdl is
port (
V : in std_logic_vector (3 downto 0); --Ventanas
P : in std_logic_vector (2 downto 0); --Puertas
A: out std_logic --Salida a SCR
);
end alarma_vhdl;
UCF - - - - - - - - - - - - - - - - - - - -
## SALIDA a SCR
NET "A" LOC = "L15";
Código Verilog y UCF
module P1_P2_verilog(
UCF - - - - - - - - - - - - -
## Slide Switches
NET "V[0]" LOC = "G18";
NET "V[1]" LOC = "H18";
NET "V[2]" LOC = "K18";
NET "V[3]" LOC = "K17";
NET "P[0]" LOC = "L14";
NET "P[1]" LOC = "L13";
NET "P[2]" LOC = "N17";
## SALIDA
NET "A" LOC = "L15";
module P1_P3(
A B
input wire a, //swith de la tarjeta
input wire b, //Swith de la tarjeta
output wire c, //Salida a BJT
output wire d //LED indicador de la tarjeta
);
UCF - - - - - - - - - - - - - - - -
##Slide Switches
NET "a" LOC = "G18";
NET "b" LOC = "H18";
## Salida
NET "c" LOC = "L15"; ## MODULO
NET "d" LOC = "J14"; ## LED
Lampara de 127 VCA
Módulo de relevador
(Etapa de potencia)
Ilustración 13 Encendido de una lampara de 127 VCA desde dos puntos distintos
Ilustración 14 Funcionamiento del encendido de una lampara desde dos puntos distintos
Punto 4
Implementar un circuito con HDL, que por medio del paso de una mano sobre un sensor de
luz (Ilustración 15), que impida la incidencia de la luz sobre el sensor, y la presencia de una
persona (con otro sensor), suene el timbre de una casa. Reportar el código utilizado
y fotos de su funcionamiento con texto.
En esta caso, usamos una compuerta AND, ya que la indicación fue que cuando ambos
sensores estén activados suene la alarma, como se puede observar en la asignación de C, la
variable B, que corresponde a el sensor infrarrojo, esta negada, ya que siempre esta
enviando un uno lógico, por lo que cuando se somete a luz, este se apaga enviando un cero,
que en nuestro caso significa que hay alguien como se observa en la Ilustración 16.
endmodule
UCF - - - - - - - - - - - - - - -
##Sensores
NET "A" LOC = "K12";
NET "B" LOC = "L17";
## Salida
NET "C" LOC = "L15";
NET "D" LOC = "J14";
Infrarrojo
Alimentación a 5V
LDR
Punto 5
Diseñar un circuito que permita el acceso a un banco de doble puerta, que solo permita
abrir una puerta a la vez, nunca las dos al mismo tiempo. Reportar los códigos y circuitos a
bloques.
Para este punto implementamos una compuerta XOR y A B
XNOR, como se muestra en la Ilustración 17 y la .
S1
Código en VHDL
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity p5 is S2
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
s1 : out STD_LOGIC;
s2 : out STD_LOGIC);
end p5;
architecture Behavioral of p5 is Ilustración 17 Diagrama Lógico, punto 5
begin
s1 <= a xor b;
s2 <= a xnor b;
end Behavioral;
A B S1 A B S1
0 0 0 0 0 1
0 1 1 0 1 0
1 0 1 1 0 0
1 1 0 1 1 1
Tabla 5 Tabla de verdad de la compuerta XOR Tabla 6 Tabla de verdad de la compuerta XNOR
Conclusiones
Todo circuito digital está constituido en su interior por circuitos combinacionales y/o
circuitos secuenciales. Estos últimos son capaces de almacenar información. En esta
práctica hemos trabajado con circuitos combinaciones, en los que sus salidas dependen
directamente de las entradas, y no son capaces de almacenar información ni recordar cuáles
fueron las entradas anteriores.
Para la construcción de los circuitos combinacionales, se emplean las puertas lógicas, que
permiten realizar electrónicamente las operaciones del Algebra de Boole. Las puertas
lógicas básicas con AND, OR y NOT, pero también existen otras puertas lógicas que se usan
mucho: NAND, NOR y XOR. Cualquier circuito combinacional se puede construir a partir de
las puertas básicas, combinándolas adecuadamente. Sin embargo, también es posible
implementar circuitos utilizando sólo puertas NAND, o sólo puertas NOR.
Estos Lenguajes Descriptivos, nos permiten diseñar circuitos lógicos, de una manera más
rápida y eficiente, sin la necesidad de usar los clásicos circuitos lógicos integrados, para
casos muy complejos, el uso de dichos dispositivos generarían problemas por el consumo
de energía, espacio e interconexión entre ellos; el uso de una tarjeta de desarrollo como lo
es la Nexys 2 que tiene integrada una FPGA, la cual contiene millones de transistores, y que
mediante la programación en el entorno de ISE Xilinx, nos permite interconectar estos
transistores, con el fin de crear compuertas lógicas, de cualquier tipo (AND, OR, NOT, NAND,
NOR, XOR Y XNOR), con un sin número de entradas definidas (2,3,4,5,6,....), y de esta forma
poder diseñar los sistemas lógicos necesarios para su implementación.
La implementación de estos diseños digitales, los podemos hacer a través de la asignación
de entradas y salidas a la tarjeta, dichas entradas tienen que cumplir con los parámetros
digitales de la Nexys 2, además debemos tener mucho cuidado del tipo de cargas que
conectamos a las salidas de esta; hay que tener claro que el voltaje máximo de salida de la
tarjeta es de 5VDC y corriente típica de 100mA y máxima de 3A , por lo que se requiere de
etapas de potencia o de amplificación, si es que se requiere conectar o controlar una carga
que demande mucho mayor voltaje o corriente.
Referencias
Cátedra de percepción y sistemas inteligentes. (s.f.). Universidad del Valle. Obtenido de
Escuela de Ingeniería Eléctrica y Eléctronica:
https://campusvirtual.univalle.edu.co/moodle/pluginfile.php/626094/mod_resour
ce/content/1/Practica_compuertas.pdf
Chico, J. (Octubre de 2015). Universidad de Sevilla. Obtenido de Escuela Técnica Superior
de Ingeniería:
https://www.dte.us.es/docencia/master/micr/dapa/temas/tema_02/tema2_ldh.p
df
Digilent. (19 de Febrero de 2007). Digilent Nexys Board Reference Manual. Pullman, EUA.
Palazzesi, A. (5 de Marzo de 2012). Desarrollo de sistemas de automatización y control.
Obtenido de
http://biblioteca.upnfm.edu.hn/images/directorios%20tematicos/xxtindustrial/libr
os%20de%20electricidad/electronica%201y%202/Compuertas_Logicas.PDF.pdf
Sánchez, M. (s.f.). Universidad Complutense de Madrid. Obtenido de INTRODUCCIÓN A LA
RPOGRAMACIÓN EN VHDL: https://eprints.ucm.es/26200/1/intro_VHDL.pdf