Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% encontró este documento útil (1 voto)
374 vistas15 páginas

Practica 1 VHDL

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 15

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERÍA


Y TECNOLOGÍAS AVANZADAS

CIRCUITOS LÓGICOS

DRA. I. CHETZYL BALLARDO RODRÍGUEZ


PROFESORA

ALVA RAMÍREZ ALAN


CERVANTES RODRÍGUEZ DIEGO
MARTINEZ DURAN CARLOS DANIEL
ALUMNOS

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)

Debemos recordar que la electrónica digital es relativamente nueva, hace un par de


décadas se hacia uso de relevadores y tubos de vacío para realizar estas
operaciones. En la actualidad, una compuerta lógica es un conjunto de transistores
dentro de un circuito integrado, un microprocesador no es mas que un chip
compuesto de millones de compuertas lógicas. (Cátedra de percepción y sistemas
inteligentes).

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.

Tabla 2 Compuertas lógicas básicas, tablas de verdad y simbología


Lenguaje de Descripción de Hardware
Son lenguajes formales para la describir el comportamiento de un circuito
electrónico (digital), similar a un lenguaje de programación, pero con diferencias
notables.
a) La mayoría de las expresiones de ejecutan concurrentemente.
b) Cada expresión o instrucción corresponde a la operación de un bloque del
circuito.
A partir de la descripción de un circuito es posible simular su comportamiento
mediante herramientas informáticas para comprobar su correcto funcionamiento
antes de construir el circuito real esta operación equivaldría a la compilación de un
programa, permitiendo simplificar el diseño digital; el único inconveniente es que el
diseñador debe conocer lo que las herramientas pueden y no pueden hacer. (Chico,
2015)

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

VHDL (Very High Speed Integrated Circuits) y Verilog

No es un lenguaje de programación, como lo menciona (Sánchez) por ello conocer


su sintaxis no implica necesariamente saber diseñar con él. VHDL es un lenguaje
de descripción de hardware, que permite describir circuitos síncronos y asíncronos.
Para realizar esto debemos:
• Pensar en puertas y biestables, no en variables ni funciones.
• Evitar bucles combinacionales y relojes condicionados.
• Saber qué parte del circuito es combinacional y cuál secuencial.

En particular VHDL permite tanto una descripción de la estructura del circuito


(descripción a partir de subcircuitos más sencillos), como la especificación de la
funcionalidad de un circuito utilizando formas familiares a los lenguajes de
programación. La misión más importante de un lenguaje de descripción HW es que
sea capaz de simular perfectamente el comportamiento lógico de un circuito sin que
el programador necesite imponer restricciones (Ilustración 2).

En la Ilustración 2, una ejecución del código utilizando las reglas básicas de


cualquier lenguaje de programación al uso daría dos resultados diferentes sobre la
misma descripción del circuito. Esto es debido a que en HW todos los circuitos
trabajan a la vez para obtener el resultado (todo se ejecuta en paralelo) mientras
que en software el orden de las instrucciones delimita la actualización de las
variables (ejecución secuencial de las instrucciones). Un lenguaje de descripción
HW, VHDL o cualquier otro de los existentes en el mercado, nos debe dar el mismo
resultado en simulación para los dos programas de la Ilustración 2.

Ilustración 2 Simulación errónea de un circuito

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.

Código en VHDL y UCF


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

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;

architecture punto1vhdl of punto1_vhdl is


begin
z(6)<= not a;
z(5)<= a and b and c;
z(4)<= (a nand b) nand c;
z(3)<= a or b or c;
z(2)<= (a nor b) nor c;
z(1)<= a xor b xor c;
z(0)<= a xnor b xnor c;
s <= a;
end punto1vhdl;

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

Código Verilog y UCF Ilustración 4 Salida Lógica (PIN15)

module P1_P1_verilog(

input wire [2:0] e, // entradas


output wire [6:0]z, //salidas
output wire s // salida lógica
);

assign z[0] = (e[2] & e[1]) & e[0];


assign z[1] = ~((e[2] & e[1]) & e[0]);
assign z[2] = e[2] | e[1] | e[0];
assign z[3] = ~(e[2] | e[1] | e[0]);
assign z[4] = e[2] ^ e[1] ^ e[0];
assign z[5] = ~(e[2] ^ e[1] ^ e[0]); Ilustración 5 Uno lógico de la tarjeta
assign z[6] = ~e[0]; Nexys 2 (PIN L15)
assign s = e[0];

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

Ilustración 7 Entradas y salidas

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.

Para el ejercicio 3 del punto 1, la tabla 4, muestra los valores obtenidos de la


programación de la tarjeta, en nuestro caso, un uno lógico fue el encendido de un
LED de la tarjeta.

A B C AND OR NAND NOR XOR XNOR NOT A


0 0 0 0 0 1 1 0 1 1
0 0 1 0 1 1 0 1 0 1
0 1 0 0 1 1 0 1 0 1
0 1 1 0 1 1 0 0 1 1
1 0 0 0 1 1 0 1 0 0
1 0 1 0 1 1 0 0 1 0
1 1 0 0 1 1 0 0 1 0
1 1 1 1 1 0 0 1 0 0
Tabla 4 Tabla de verdad de las compuertas básicas de 3 entradas

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

Para este punto haremos uso de una


compuerta OR de 7 entradas y un circuito con
un buzzer y un SCR que permita mantener el
buzzer activado como se muestra en la
Ilustración 9 y la conexión de este, en la
Ilustración 10.

Código VHDL y UCF

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;

architecture a_alarm of alarma_vhdl is


begin
A <= (V(0) OR V(1) OR V(2) OR V(3) OR P(0) OR P(1) OR P(2));
end a_alarm;

UCF - - - - - - - - - - - - - - - - - - - -

## Slide Switches Ventanas y puertas


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 a SCR
NET "A" LOC = "L15";
Código Verilog y UCF

module P1_P2_verilog(

input wire [2:0] P, //Puertas


input wire [3:0] V, //Ventanas
output wire A //Alarma
);

assign A = P[0] | P[1] | P[2] | V[0] | V[1] | V[2] | V[3];


endmodule

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

PIN L15 salida al


SCR del buzzer

Ilustración 10 Alarma con Buzzer


Punto 3
Implementar un circuito con HDL que
permita controlar el encendido y
apagado de una carga (foco, motor,
apertura-cierre de puertas, etc.) desde
dos puntos, similar a los apagadores de
escaleras (Ilustración 11). El cableado de
los controles debe de estar por lo menos
separado a un metro. Reportar el código
utilizado y fotos de su funcionamiento
editadas con texto.

Para este punto haremos uso de una


XOR de dos entradas (Ilustración 12)
programada bajo Verilog, ya que solo da Ilustración 11 Encendido y apagado de una lampara desde dos
una salida en alto (uno lógico) cuando puntos distintos
ambas entradas son distinta, la tarjeta
permite al usuario escoger entre 3.3V o 5V; como salida lógica, por lo que para
poder activar la bobina de un relevador, usaremos la opción de 5V, este caso
usamos un módulo de relevador, el cual formara parte de nuestra etapa de potencia
y de esta forma accionar la bombilla de 127 VCA de forma segura, como se observa
en la Ilustración 13.

Código en Verilog y UCF

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

assign c = ~(a ^ b);


Ilustración 12 Entradas A y B,
assign d = ~(a ^ b);
para el punto 3
endmodule

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)

Salida a bobina del Alimentación a 5V


relevador

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.

Ilustración 15 Elementos para la implementación de un timbre

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.

Código en Verilog y UCF


module P1_P4_verilog(

input wire A, //LDR--entrada


input wire B, //INFRARROJO--entrada
output wire C, //Alarma-salida
output wire D, //LED--Estado de "C
);

assign C = A & ~(B);


assign D = C;

endmodule

UCF - - - - - - - - - - - - - - -

##Sensores
NET "A" LOC = "K12";
NET "B" LOC = "L17";

## Salida
NET "C" LOC = "L15";
NET "D" LOC = "J14";
Infrarrojo

Datos del infrarrojo (L17)


Salida a Buzzer (L15)

Alimentación a 5V

Datos del LDR (K12)

LDR

Ilustración 16 Accionamiento de una alarma, con dos sensores distintos

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.

Las puertas lógicas se encuentran encapsuladas en un circuito integrado. Esto se denomina


tecnología TTL. También es posible utilizar otras tecnologías para la construcción de
circuitos digitales, como son los dispositivos lógicos programables o las FPGA’s y que en el
caso de esta práctica utilizaremos una tarjeta Nexys 2.

Esta práctica permitió observar el funcionamiento e implementación de las compuertas


lógicas básicas, para el diseño y conexión de circuitos, que permitieran el control de
distintos dispositivos; además de esto logramos identificar y comprender a un nivel básico,
la sintaxis del Lenguaje Descriptivo de Hardware, como lo es el VHDL y Verilog.

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.

En cuanto a la implementación de los circuitos solicitados en cada uno de los puntos,


podemos decir que no representaron algún problema mayor, ya que muchos de estos ya
los habíamos manipulado con anterioridad en otras unidades de aprendizaje, es importante
resaltar la interconexión entre las distintas áreas de la ingeniería.

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

También podría gustarte