Professional Documents
Culture Documents
Alumno
Agreda Rivas, Karen Amanda
Aguilar Quintanilla, Cristian Antonio
Carn
AR13008
AQ13003
G.T
02
01
G.L
04
01
Firma
Ciudad Universitaria, A las diez horas treinta minutos del 24 de Marzo de 2015
Objetivos
Objetivo General:
Conocer, analizar, implementar y presentar los conocimientos bsicos adquiridos en la
materia de Sistemas Digitales I, en simuladores que generen circuitos lgicos basados en
el lenguaje de programacin VHDL.
Objetivos Especficos:
Desarrollar programas que simulen el comportamiento de las compuestas lgicas.
Modelar soluciones a problemas mediante el uso de compuertas lgicas y
presentar los resultados de las tablas de verdad en los simuladores.
Investigar distintas formas de realizar cdigos en el lenguaje VHDL.
Introduccin
En el presente trabajo se muestran los pasos de desarrollo que se han seguido para
realizar la Asignacin N 1 de la materia de Sistemas Digitales I.
En un principio se muestra una breve presentacin de lo que es la programacin en el
lenguaje VHDL.
Luego se muestra los pasos para descargar e instalar los programas que se van a utilizar
tambin se da una breve explicacin sobre el cdigo VHDL.
En la siguiente parte encontraremos los problemas propuestos a desarrollar, se detalla la
forma a resolver un circuito lgico a travs del cdigo VHDL y el resultado se ver en las
grficas.
En la ltima parte se encuentra lo que son las observaciones, las conclusiones a que
llegamos en base a los objetivos planteados al comienzo de este reporte y por ltimo la
bibliografa, que muestra los sitios en donde se encontr la informacin.
Marco Terico
Qu es el cdigo VHDL?
VHDL es el acrnimo que representa la combinacin de VHSIC y HDL, donde VHSIC es el
acrnimo de Very High Speed Integrated Circuit y HDL es a su vez el acrnimo
de Hardware Description Language. Es un lenguaje definido por el IEEE (Institute of
Electrical and Electronics Engineers) (ANSI/IEEE 1076-1993) usado por ingenieros para
describir circuitos digitales. Otros mtodos para disear circuitos son la captura de
esquemas (con herramientas CAD) y los diagramas de bloques, pero stos no son prcticos
en diseos complejos. Otros lenguajes para el mismo propsito son Verilog yABEL. Aunque
puede ser usado de forma general para describir cualquier circuito se usa principalmente
para
programar
PLD
(Programable
Logic
Device Dispositivo
Lgico
Programable), FPGA (Field Programmable Gate Array), ASIC y similares.
Formas de describir un circuito:
Dentro del VHDL hay varias formas con las que podemos disear el mismo circuito y es
tarea del diseador elegir la ms apropiada.
En VHDL tambin existen formas metdicas para el diseo de mquinas de estados, filtros
digitales, bancos de pruebas etc.
Secuencia de diseo
El flujo de diseo de un sistema podra ser:
Operadores en VHDL
En VHDL existen diferentes operadores entre los que tenemos:
Operadores Definidos en VHDL para los tipos: Lgicos AND, OR, XOR, NOT, NAND, NOR,
XNOR Bit y Booleanos De relacin =, /=, <, >, >=, <= Integer, Bit y Bit_Vector
Concatenacin & Bit, Bit_Vector y para las cadenas Aritmticos +, -, *, /, Mod, Rem, Abs,
** Integer* Mod: Modulo de la divisin. Rem: Resto de la divisin Abs: valor absoluto.
El WARP solo soporta multiplicar y dividir por 2. Ejemplo: Escriba la definicin de
arquitectura para la entidad del ejemplo anterior.
ARCHITECTURE and_2ent OF ejemplo1 IS
BEGIN
F <= a AND b;
END and_2ent;
Otra forma de escribir el mismo ejemplo anterior es:
ARCHITECTURE and_2ent OF ejemplo1 IS
BEGIN
F <= 1 WHEN a=1 AND b=1 ELSE
0;
END and_2ent;
Otra forma de escribir el mismo ejemplo anterior es:
ARCHITECTURE and_2ent OF ejemplo1 IS
BEGIN
F <= 1 WHEN a=1 AND b=1 ELSE
0 WHEN a=0 AND b=0 ELSE
0 WHEN a=0 AND b=1 ELSE
0 WHEN a=1 AND b=0 ELSE
-;
END and_2ent;
Ejemplo; Realice el programa en VHDL de un circuito con dos entradas y una salida f. La
entidad es la misma anterior, pero supongamos que la funcin que realiza el circuito es tal
que la salida ser 0 solo si las entradas son iguales (operacin XOR).
ENTITY ejemp2_3 IS --Solo se cambia el nombre de la entidad
PORT ( a, b: IN bit;
F: OUT bit);
END ejem2_3;
ARCHITECTURE dos_ent OF ejem2_3 IS
BEGIN
f <= 1 WHEN a /= b ELSE
0 ;
END dos_ent;
2. Compuerta NAND.
--Cdigo para simular una compuerta NAND
ENTITY Compuerta_NAND IS
PORT(
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_NAND;
ARCHITECTURE arch_NAND OF Compuerta_NAND IS
BEGIN
X <= A NAND B;
END arch_NAND;
--Fin del cdigo
3. Compuerta OR.
--Cdigo para simular una compuerta OR
ENTITY Compuerta_OR IS
PORT(
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_OR;
ARCHITECTURE arch_OR OF Compuerta_OR IS
BEGIN
X <= A OR B;
END arch_OR;
--Fin del cdigo
4. Compuerta NOR.
--Cdigo para simular una compuerta NOR
ENTITY Compuerta_NOR IS
PORT(
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_NOR;
ARCHITECTURE arch_NOR OF Compuerta_NOR IS
BEGIN
X <= (A) NOR (B);
END arch_NOR;
--Fin del cdigo
5. Compuerta EXOR.
--Cdigo para simular una compuerta EXOR
ENTITY Compuerta_EXOR IS
PORT(
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_EXOR;
ARCHITECTURE arch_EXOR OF Compuerta_EXOR IS
BEGIN
X <= (A) XOR (B);
END arch_EXOR;
--Fin del cdigo
6. Compuerta EXNOR.
--Cdigo para simular una compuerta EXNOR
ENTITY Compuerta_EXNOR IS
PORT(
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_EXNOR;
ARCHITECTURE arch_EXNOR OF Compuerta_EXNOR IS
BEGIN
X <= A XNOR B;
END arch_EXNOR;
--Fin del cdigo
7. Compuerta NOT.
--Cdigo para simular una compuerta NOT o mejor conocida como inversor
ENTITY Compuerta_NOT IS
PORT(
A : IN BIT;
X : OUT BIT);
END Compuerta_NOT;
ARCHITECTURE arch_NOT OF Compuerta_NOT IS
BEGIN
X <= NOT A;
END arch_NOT;
--Fin del cdigo
Realizar el cdigo VHDL para el problema que se plantea: Un circuito lgico tiene
cuatro entradas A, B, C y D-. Determine las ecuaciones lgicas del circuito, si la
salida ser alta solo cuando un nmero impar de entradas sean altas. Trace un
diagrama de circuito con las compuertas que desee.
Calculo de la ecuacin de salida por MIN trminos.
Tabla de verdad
Cuenta A B C D
0
0 0 0 0
1
0 0 0 1
2
0 0 1 0
3
0 0 1 1
4
0 1 0 0
5
0 1 0 1
6
0 1 1 0
7
0 1 1 1
8
1 0 0 0
9
1 0 0 1
10
1 0 1 0
11
1 0 1 1
12
1 1 0 0
13
1 1 0 1
14
1 1 1 0
15
1 1 1 1
X
0
1
1
0
1
0
0
1
1
0
0
1
0
1
1
0
Para mejorar el circuito usaremos la Ley de De Morgan para tener un diseo mejor
aclarando que en el cdigo VHDL se usara la representacin anterior.
Circuito:
Cdigo en VHDL.
--****************************************************
ENTITY unos_impares IS
PORT(
a,b,c,d :IN BIT;
x:OUT BIT);
END
unos_impares;
--****************************************************
ARCHITECTURE arch_impares OF unos_impares IS
BEGIN
x<= ( (not a) and (not b) and (not c) and d) or ( (not a) and (not b) and c and
(not d)) or ((not a) and b and (not c) and (not d)) or ((not a) and b and c and d) or (a and
(not b) and (not c) and (not d)) or ( a and (not b) and c and d) or (a and b and (not c) and d)
or (a and b and c and (not d));
END arch_impares;
Grficos obtenidos para el circuito.
Una alarma contra robos es diseada de nodo que percibe cuatro lneas de seal
de entrada. La lnea A es del interruptor secreto de control, la lnea B es del sensor
de presin bajo una caja fuerte en un gabinete cerrado, la lnea C es de un reloj
alimentado por bateras y la lnea D est conectada a un interruptor en la puerta
cerrada del gabinete. Escriba en cdigo VHDL la expresin que active la alarma
cuando la caja se mueve y el interruptor de control este cerrado, o cuando el
gabinete se abre despus de las horas hbiles, o el gabinete est abierto con el
interruptor de control abierto. Trace un diagrama del circuito.
Abstraccin de la lgica del problema.
Las siguientes son las condiciones que producen un voltaje de 1 lgico en cada
lnea.
A: El interruptor de control est cerrado.
B: La caja est en su posicin normal en el gabinete.
C: El reloj marca entre las 100 y las 1400 horas.
D: La puerta del gabinete est cerrada.
Calculo de la ecuacin de salida por MIN trminos.
TABLA DE VERDAD
A B C D x
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 0
4 0 1 0 0 1
5 0 1 0 1 0
6 0 1 1 0 1
7 0 1 1 1 0
8 1 0 0 0 1
9 1 0 0 1 1
10 1 0 1 0 1
11 1 0 1 1 1
12 1 1 0 0 1
13 1 1 0 1 0
14 1 1 1 0 0
15 1 1 1 1 0
Cdigo en VHDL.
ENTITY alarma_robos IS
PORT(
a,b,c,d :IN BIT;
x:OUT BIT);
END alarma_robos;
--************************************************
ARCHITECTURE arch_alarma OF alarma_robos
IS
BEGIN
x <= ((not a) and (not d)) or (a and (not b)) or (a and b and (not c)
and d );
END arch_alarma;
Grficos obtenidos para el circuito.
X
0
0
1
1
Y
0
1
0
1
Descripcin
Hacia adelante
Hacia la derecha
Hacia la izquierda
Hacia atrs
Cuenta A B
1
0 0
2
0 0
3
0 1
4
0 1
5
1 0
6
1 0
7
1 1
8
1 1
C
0
1
0
1
0
1
0
1
X
0
1
0
1
0
0
0
1
Y
0
0
1
0
1
0
1
1
Accin
Adelante
Izquierda
Derecha
Izquierda
Derecha
Adelante
Derecha
Atrs
Cdigo en VHDL.
--Cdigo del funcionamiento lgico para un automvil a
--prueba de choques mediante dos sensores de obstculos.
-- A y C son los sensores laterales y B es el sensor central.
-- X e Y son las llantas izquierdas y derechas respectivamente.
ENTITY Carro_Choques IS
PORT(
A , B , C :IN BIT;
X , Y : OUT BIT);
END Carro_Choques;
ARCHITECTURE arch_Choques OF Carro_Choques IS
BEGIN
X <= ((NOT A) AND C) OR (B AND C);
Y <= (A AND B) OR (A AND (NOT C)) OR (B AND (NOT C));
END arch_Choques;
--Fin del cdigo.
--**************
--Generador de seal del carro anti choques.
ENTITY tb_Carro_Choques IS
END tb_Carro_Choques;
ARCHITECTURE arch_Choques OF tb_Carro_Choques IS
COMPONENT Carro_Choques IS
PORT(
A , B , C : IN BIT;
X , Y : OUT BIT);
END COMPONENT Carro_Choques;
SIGNAL sensorA:bit:='0';
SIGNAL sensorB:bit:='0';
SIGNAL sensorC:bit:='0';
SIGNAL llantasX:bit;
SIGNAL llantasY:bit;
BEGIN
ckt3 : Carro_Choques
PORT MAP
(
A => sensorA,
B => sensorB,
C => sensorC,
X => llantasX,
Y => llantasY
);
PROCESS
BEGIN
WAIT FOR 20 ns;
sensorC <= '1';
WAIT FOR 20 ns;
sensorC <= '0';
sensorB <= '1';
WAIT FOR 20 ns;
sensorC <= '1';
WAIT FOR 20 ns;
sensorC <= '0';
sensorB <= '0';
sensorA <= '1';
WAIT FOR 20 ns;
sensorC <= '1';
WAIT FOR 20 ns;
sensorC <= '0';
sensorB <= '1';
WAIT FOR 20 ns;
sensorC <= '1';
END PROCESS;
END ARCHITECTURE arch_Choques;
--Fin del testbench
Observacin y recomendacin.
La lgica del circuito tiene una falla ya que cuando los sensores laterales estn en
1 lgico el carro debera de retroceder debido a la posicin de dichos sensores ya
que estos podran verse daados por no tener mucho espacio a la hora de seguir
avanzando. Debido a que el enunciado no plantea esa situacin optamos por dejar
el problema tal como lo plantean y recomendamos que el enunciado sea
replanteado para un futuro.
Preguntas de investigacin
1. Cul es el uso y la sintaxis de las instrucciones IF THEN?
Verifica el cumplimiento de una condicin para ejecutar un bloque de sentencias.
Sintaxis:
IF<condicin1>THEN
[sentencias 1]
ELSE
[sentencias N]
ENDIF;
+ (suma o signo positivo): Sirve para indicar una suma entre dos
nmeros. Tambin puede actuar como smbolo si se sita delante de
una expresin.
- (resta o signo negativo): Sirve para indicar la resta entre dos nmeros.
Si va delante de una expresin modifica el signo de la expresin.
* (multiplicacin): Multiplica dos nmeros de cualquier tipo.
/ (divisin): Divide dos nmeros de cualquier tipo.
Conclusiones
El lenguaje de programacin VHDL facilita los diseos de circuitos lgicas tanto
bsicos como complejo llegando a ser muy eficiente el trabajar con l.
Con el uso de VHDL se puede encontrar un error lgico de una forma fcil y
sencilla ya sea en un circuito simple o complejo.
La forma de realizar sintaxis de arreglos e instrucciones en VHDL es muy similar
a la que manejan otros sistemas de programacin por lo cual es de fcil manejo
para los que tienen conocimientos de otros lenguajes computarizados.
Bibliografa
Gonzlez, Juan. Introduccin al Lenguaje de Descripcin Hardware VHDL.
Machado Snchez, Felipe y Borromeo Lpez, Susana. Diseo de circuitos digitales
con VHDL.
Brown, Stephen. Fundamentos de Lgica Digital con Diseo en VHDL.