You are on page 1of 33

Universidad de El Salvador

Facultad de Ingeniera y Arquitectura


Escuela de Ingeniera Elctrica
Departamento de Instrumentacin y Control

Tarea N 1: Introduccin a los Lenguajes HDL


Asignatura:
Sistemas Digitales I
Profesor:
Ing. Salvador Germn
Instructores:
Sasi Ramrez
Francisco Cruz Jurez

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.

Funcional: Describimos la forma en que se comporta el circuito. Esta es la forma que


ms se parece a los lenguajes de software ya que la descripcin es secuencial. Estas
sentencias secuenciales se encuentran dentro de los llamados procesos en VHDL. Los
procesos son ejecutados en paralelo entre s, y en paralelo con asignaciones
concurrentes de seales y con las instancias a otros componentes.

Flujo de datos: describe asignaciones concurrentes (en paralelo) de seales.

Estructural: se describe el circuito con instancias de componentes. Estas instancias


forman un diseo de jerarqua superior, al conectar los puertos de estas instancias con
las seales internas del circuito, o con puertos del circuito de jerarqua superior.

Mixta: combinacin de todas o algunas de las anteriores.

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:

Divisin del diseo principal en mdulos separados. La modularidad es uno de los


conceptos principales de todo diseo. Normalmente se diferencia entre dos
metodologas de diseo: top-down y bottom-up. La metodologa top-down consiste

en que un diseo complejo se divide en diseos ms sencillos que se puedan disear


(o describir) ms fcilmente. La metodologa bottom-up consiste en construir un
diseo complejo a partir de mdulos, ya diseados, ms simples. En la prctica, un
diseo usa generalmente ambas metodologas.
Entrada de diseos, pueden usarse diversos mtodos tal como se vio anteriormente.
Simulacin funcional, es decir, comprobaremos que lo escrito en el punto anterior
realmente funciona como queremos, si no lo hace tendremos que modificarlo. En este
tipo de simulacin se comprueba que el cdigo VHDL o Verilog (u otro tipo de lenguaje
HDL) ejecuta correctamente lo que se pretende.
Sntesis. En este paso se adapta el diseo anterior (que sabemos que funciona) a un
hardware en concreto, ya sea una FPGA o un ASIC. Hay sentencias del lenguaje que no
son sintetizables, como por ejemplo divisiones o exponenciaciones con nmeros no
constantes. El hecho de que no todas las expresiones en VHDL sean sintetizables es
que el VHDL es un lenguaje genrico para modelado de sistemas (no slo para diseo
de circuitos digitales), por lo que hay expresiones que no pueden ser transformadas a
circuitos digitales. Durante la sntesis se tiene en cuenta la estructura interna del
dispositivo, y se definen restricciones, como la asignacin de pines. El sintetizador
optimiza las expresiones lgicas con objeto de que ocupen menor rea, o bien son
eliminadas las expresiones lgicas que no son usadas por el circuito.
Simulacin post-sntesis. En este tipo de simulacin se comprueba que el sintetizador
ha realizado correctamente la sntesis del circuito, al transformar el cdigo HDL en
bloques lgicos conectados entre s. Este paso es necesario ya que, a veces, los
sintetizadores producen resultados de sntesis incorrectos, o bien realiza
simplificaciones del circuito al optimizarlo.
Ubicacin y enrutamiento. El proceso de ubicacin consiste en situar los bloques
digitales obtenidos en la sntesis de forma ptima, de forma que aquellos bloques que
se encuentran muy interconectados entre s se siten prximamente. El proceso de
enrutamiento consiste en interconectar adecuadamente los bloques entre s,
intentando minimizar retardos de propagacin para maximizar la frecuencia mxima
de funcionamiento del dispositivo.
Anotacin final. Una vez ha sido completado el proceso de ubicacin y enrutamiento,
se extraen los retardos de los bloques y sus interconexiones, con objeto de poder
realizar una simulacin temporal (tambin llamada simulacin post-layout). Estos
retardos son anotados en un fichero SDF (Standard Delay Format) que asocia a cada
bloque o interconexin un retardo mnimo/tpico/mximo.
Simulacin temporal. A pesar de la simulacin anterior puede que el diseo no
funcione cuando se programa, una de las causas puede ser por los retardos internos
del chip. Con esta simulacin se puede comprobar, y si hay errores se tiene que volver
a uno de los anteriores pasos.
Programacin en el dispositivo. Se implementa el diseo en el dispositivo final y se
comprueba el resultado.

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;

Obtencin del software de simulacin VHDL y pasos de instalacin


Para desarrollar esta asignacin utilizamos dos software el primero de instalacin en
Windows este es Altera Max Plus II v10.2 y para Ubuntu se la paquetera de compilacin
GHDL y el simulador GTKWave.
Instalacin de Altera Max Plus II v10.2
1.
2.
3.
4.
5.
6.

Descomprimimos el archivo con la opcin


Entramos a la carpeta del archivo ya descomprimido
En la carpeta instaladores, entramos a la carpeta full
Abrimos el archivo setup
Los pasos que indiquen las ventanas del instalador (tpico de Windows).
Finalmente el programa puede encontrarse en el men inicio

Instalacin de GHDL y GTWave


1. Todo lo siguiente se hace en el Terminal de Ubuntu, primero accediendo como
superusario.
2. En primer lugar se agrega al repositorio de Ubuntu la herramienta GDHL ya que
este no cuenta con ella en sus repositorios:
add-apt-repository ppa:pgavin/ghdl
3. Luego actualizamos el repositorio:
apt-get update
4. Ahora ejecutamos el instalador del GHDL:
apt-get install ghdl
5. Luego instalamos el simulador del GTKWave:
apt-get install gtwave
6. Ahora ya estamos listos para ejecutar cualquier programa en lenguaje VHDL.

Desarrollo de los circuitos


Cdigos para las compuertas integrales lgicas y su simulacin.
Nota: Los testbench se anexan en el CD por la cantidad de lneas de texto que usan, as
mismo las capturas de imagen de todas las secuencias de los circuitos.
1. Compuerta AND.
--Cdigo para simular una compuerta AND
ENTITY Compuerta_AND IS
PORT (
A, B : IN BIT;
X:
OUT BIT);
END Compuerta_AND;
ARCHITECTURE arch_AND OF Compuerta_AND IS
BEGIN
X <= A AND B;
END arch_AND;
--Fin del cdigo

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.

Un automvil a prueba de choques. Se trata de un automvil con tres sensores,


uno al frente y dos a los costados. Al arrancar, se dirige hacia adelante y si
encuentra un obstculo, gira a uno de los costados, esquivndolo. La posicin de
los sensores se muestra en la siguiente figura. Para girar a los lados, se hace que
las llantas giren en distintas direcciones, por ejemplo para girar a la izquierda, las
llantas X rotaran hacia atrs mientras las llantas Y hacia adelante. Para hacer
que el par de llantas X giren hacia adelante se deber poner en una variable de
control llamada X el bit 0, para que giren hacia atrs X=1, igual para el par de
llantas Y, con su respectiva variable de control Y, la lgica de control de las
llantas es la siguiente.

X
0
0
1
1

Y
0
1
0
1

Descripcin
Hacia adelante
Hacia la derecha
Hacia la izquierda
Hacia atrs

Si los tres sensores A, B y C estn en 1, es decir, detecta obstculo en las tres


direcciones, empezar a retroceder. De lo contrario girar en la direccin que est
libre de obstculos. Si existe la posibilidad de girar hacia la derecha o hacia la
izquierda se girar a la derecha.

Abstraccin de la lgica del problema.


1. Si todos los sensores estn en cero, es decir que no hay obstculos puede ir
para adelante.
2. Si el sensor A esta en 1, hay un obstculo y el vehculo debe de ir hacia la
derecha. Por la ubicacin de los sensores solo puede seguir esa ruta.
3. Si el sensor B esta en 1, hay un obstculo y el vehculo debe de ir hacia la
derecha o izquierda (cualquiera de las dos). Por la ubicacin de los sensores
solo puede seguir esa ruta.

4. Si el sensor C esta en 1, hay un obstculo y el vehculo debe de ir hacia la


izquierda. Por la ubicacin de los sensores solo puede seguir esa ruta.
5. Si el sensor A y B estn en 1, hay un obstculo en esas dos direcciones y el
vehculo debe de ir hacia la derecha.
Tabla de verdad que representa la lgica de control y las ecuaciones de salida.

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

Calculando las ecuaciones de salidas por MIN Trminos.

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

Grficos obtenidos para el circuito.


Se presentan unos grficos representativos el resto se anexa en el CD.

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;

2. Cul es el uso y la sintaxis de las instrucciones CASE WHEN?

La utilizacin de esta instruccin es para ejecutar un bloque de sentencias con la


evaluacin de una expresin como condicionante. Se utiliza WHEN para establecer
una condicin dependiendo del resultado y as ejecutar el bloque de cdigo. Al incluir
la ltima condicionante, esta se debe de llamar como WHEN OTHERS.
Sintaxis:
CASE<expresin>IS
WHEN<valor1> => [sentencias1]
WHEN<valor2> => [sentencias2]
WHEN<rango de valores> => [sentenciasN]
WHENOTHERS => [sentenciasM]
ENDCASE;

3. Cul es el uso de las instrucciones anteriores para implementar el cdigo VHDL


directamente desde las tablas de verdad?
Para encontrarle una forma ms clara a las sentencias anteriores se diseara el
funcionamiento de la compuerta AND con IF THEN y de la NOT con CASE
WHEN
--Para la compuerta AND
ENTITY Compuerta_AND IS
PORT (
A , B : IN
BIT;
X
:OUT BIT);
END Compuerta_AND;
--***************
ARCHITECTURE arch_AND OF Compuerta_AND IS
BEGIN
IF A=1 and B =1 THEN
X <= 1;
ELSE
X <= 0;
ENDIF
END arch_AND;
--***************
--Para la compuerta NOT
ENTITY comp_not IS
PORT(
a
: IN
BIT;
x
:OUT BIT);
END comp_not;
--***************
ARCHITECTURE
arch_not OF comp_not IS
BEGIN
CASE (a) IS
WHEN (0) => x <= 1;
WHENOTHERS => x <= 0;
END arch_not;
--***************

4. Qu tipos de datos de entrada y salida (I / O) soporta VHDL?


INTEGER: Tipo entero. Usado como valor ndice en lazos, constantes o valores
genricos. Los nmeros en el rango van de ((2^31)-1) hasta ((2^31)-1).
REAL: Tipo predefinido para representar nmeros en punto flotante.
PHYSICAL: Usados para representar valores fsicos (longitud, masa, tiempo y
corriente). Para definirlos se les debe agregar las unidades.
ENUMERATED: Se pueden utilizar para dar valores o nombres a un objeto.
BOOLEAN: Usado para representar valores de condicin para control.
BIT: Representan niveles de voltaje.
CHARACTER: Representa caracteres en binario de 8 bits (ASCII).
5. Cmo se crean arreglos en VHDL?
Los arreglos son colecciones de objetos del mismo tipo. Estos pueden ser de 1 o
ms dimensione.
La sintaxis para especificar un nuevo tipo de arreglo es:
TYPE nombre_tipo IS ARRAY (especificacin) OF data_type;
Para emplear el nuevo tipo de arreglo, podemos declarar seales, constantes o
variables, de este nuevo tipo, mediante:
SIGNAL nombre_senial: nombre_tipo [:=valor inicial];
Ejemplo de arreglo 1D:
TYPE arreglo IS ARRAY (3 DOWNTO 0) OF std_logic;
SIGNAL A1: arreglo: = 1101;

6. Cmo declarar un componente en VHDL? Mostrar un ejemplo.


En VHDL es posible declarar componentes dentro de un diseo mediante la
palabra COMPONENT. Un componente se corresponde con una entidad que ha sido
declarada en otro mdulo del diseo, o incluso en alguna biblioteca, la declaracin de
este elemento se realizar en la parte declarativa de la arquitectura del mdulo que se
est desarrollando. La sintaxis para declarar un componente es muy parecida a la de
una entidad.
COMPONENT nombre [IS]
[GENERIC(lista_parametros);]
[PORT(lista_de_puertos);]
END COMPONENT nombre;
La referencia de componentes consiste en copiar en la arquitectura aquel componente
que se quiera utilizar, tantas veces como sea necesario para construir el diseo. Para
ello, la sintaxis que presenta la instanciacin de un componente es la siguiente.
ref_id:
[COMPONENT] id_componente | ENTITY id_entidad [(id_arquitectura)] |
CONFIGURATION id_configuracin
[GENERIC MAP (parametros)]
[PORT MAP (puertos)];
7. Cules son los operadores en VHDL?
Los operadores que proporciona el lenguaje son:
Lgicos: AND, OR, NAND, NOR, XOR, XNOR y NOT.
Aritmticos:

+ (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.

** (exponencial): Eleva un nmero a una potencia. El nmero de la


izquierda puede ser entero y real, pero el de la derecha slo puede ser
entero.
ABS() (valor absoluto): Devuelve el valor absoluto de su argumento.
MOD (mdulo): Calcula el mdulo de dos nmeros.
REM (residuo): Calcula el residuo de la divisin.

Relacionales: Siempre devuelven un valor booleano (true o false).

==, /= (igualdad): El primero devuelve verdadero si los operando son


iguales y falso en caso contrario. El segundo indica desigualdad,
funcionando al revs que el anterior.
>, >=, <, <= (menor mayor): Poseen el significado habitual (mayor que,
mayor o igual que, menor que, menor o igual que, respectivamente). La
diferencia con los anteriores reside en su uso, en este caso los tipos de
datos que pueden manejar son siempre de tipo escalar o matrices.

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.

You might also like