vhdl-capítulo 1

34
 1 Capítulo 1. Descripción de un circuito en VHDL VHDL es la abreviación de VHSIC  (Very High Speed Integrated Circuit ) y HDL (  Hardware Description Language ), siendo una herramienta EDA (  Electronic Design  Automation) utilizada en el diseño de sistemas electrónicos. Al igual que el lenguaje de  programación ADA su desarrollo fue patrocinado por la milicia estadounidense para estandarizar la especificación de sistemas digitales. Se diseñó con una sintaxis similar a la de ADA. Actualmente en un estándar de descripción de circuitos respaldado por la IEEE. VHDL permite la descripción (documentación), simulación e implementación de circuitos digitales. Dicha implementación se puede realizar en: CPLD ( Complex Programable Logic  Device), o en un FPGA (  field programable gate array ). Cualquier diseño de VHDL está compuesto por dos partes esenciales: 1.- La entidad, bloque donde se definen entradas y salidas del circuito 2.- La arquitectura, donde se describe el diseño del mismo circuito. 1.1 Características de la descripción de un circuito El primer propósito de VHDL fue crear un estándar para la descripción de circuitos. El diseño esquemático de un circuito con múltiples componentes requiere de mucho espacio en papel; son difíciles de analizar, no tienen un principio y un fin. Si se requiere equipo computacional para elaborar el diseño esquemático son necesarios monitores amplios para alcanzar a visualizar una parte representativa del circuito. Además se precisan impresoras especiales (  plotters) porque los diseños no caben en una hoja simple, de otro modo habría que seccionarlos haciéndolos menos comprensibles. VHDL es una a lternativa para describir circuitos utilizando sólo texto, sin gráficas, que ciertamente requiere muchos menos recursos para escribirse, desplegarse y almacenarse. Por otra parte, este lenguaje permite describir los componentes digitales de diferentes formas, de acuerdo al circuito o al gusto del diseñador, situación que no es posible al dibujar esquemáticos; al hacerlo no hay estilos de descripción. A lo más es posible comprimir en una caja el contenido de varios circuitos e interconectarlo con el resto de los componentes. Para mostrar cómo se describe un circuito, tomemos el siguiente ejemplo.

Upload: andres-serangelli

Post on 16-Jul-2015

71 views

Category:

Documents


0 download

TRANSCRIPT

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 1/33

1

Capítulo 1. Descripción de un circuito en VHDL

VHDL es la abreviación de VHSIC  (Very High Speed Integrated Circuit ) y HDL (  Hardware Description Language), siendo una herramienta EDA (  Electronic Design

 Automation) utilizada en el diseño de sistemas electrónicos. Al igual que el lenguaje deprogramación ADA su desarrollo fue patrocinado por la milicia estadounidense paraestandarizar la especificación de sistemas digitales. Se diseñó con una sintaxis similar a lade ADA. Actualmente en un estándar de descripción de circuitos respaldado por la IEEE.

VHDL permite la descripción (documentación), simulación e implementación de circuitosdigitales. Dicha implementación se puede realizar en: CPLD (Complex Programable Logic

 Device), o en un FPGA ( field programable gate array).

Cualquier diseño de VHDL está compuesto por dos partes esenciales:

1.- La entidad, bloque donde se definen entradas y salidas del circuito

2.- La arquitectura, donde se describe el diseño del mismo circuito.

1.1 Características de la descripción de un circuito

El primer propósito de VHDL fue crear un estándar para la descripción de circuitos. Eldiseño esquemático de un circuito con múltiples componentes requiere de mucho espacioen papel; son difíciles de analizar, no tienen un principio y un fin. Si se requiere equipocomputacional para elaborar el diseño esquemático son necesarios monitores amplios paraalcanzar a visualizar una parte representativa del circuito. Además se precisan impresorasespeciales ( plotters) porque los diseños no caben en una hoja simple, de otro modo habríaque seccionarlos haciéndolos menos comprensibles.

VHDL es una alternativa para describir circuitos utilizando sólo texto, sin gráficas, queciertamente requiere muchos menos recursos para escribirse, desplegarse y almacenarse.Por otra parte, este lenguaje permite describir los componentes digitales de diferentesformas, de acuerdo al circuito o al gusto del diseñador, situación que no es posible aldibujar esquemáticos; al hacerlo no hay estilos de descripción. A lo más es posiblecomprimir en una caja el contenido de varios circuitos e interconectarlo con el resto de loscomponentes.

Para mostrar cómo se describe un circuito, tomemos el siguiente ejemplo.

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 2/33

2

1.2 Descripción de un circuito en VHDL

Se tienen tres interruptores: a, b y c. Construir una señal de salida d que tome el valor de 1 cuando dos de los tres interruptores se haya colocado en “on”, es decir, en 1. La expresión

mínima para d es: d = ab+ac+bc, que en un circuito esquemático es:

Figura 1.1 Circuito prueba

La descripción en VHDL es:

A un circuito se le asocia un nombre, en este caso el nombre asociado es comb1. Ladescripción consta dos partes: la entidad y la arquitectura.

entity comb1 is

Port ( a : in std_logic;

b : in std_logic;

c : in std_logic;

d : out std_logic);

end comb1;

architecture ecuacion of comb1 is

begin

d<=(a and b) or (a and c) or (b and c);

end ecuacion;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 3/33

3

Figura 1.2. Descripción de un circuito.

La entidad define el puerto del circuito, las señales que provienen de fuera del circuito y lasque se generarán de salida, es decir, la interface con el exterior del circuito. Como habránotado, el tipo con el que se han definido las señales es std_logic (standard logic). El tipostd_logic es muy común; indica que una señal puede tomar valores lógicos, como 1 ó 0. Sedará más detalle al respecto más adelante.

Por otra parte, la arquitectura describe el circuito en sí. Para este circuito, su definición conuna expresión booleana es lo más directo. La palabra ecuacion (sin acento, porque VHDL 

no acepta acentos) en architecture ecuacion of comb1 is.

Es parte de la documentación del circuito, esa palabra sólo tiene significado para eldiseñador y para quien observe el código, pero no para el compilador.

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 4/33

4

Figura 1.3 Arquitectura del circuito.

Para iniciar el estudio de VHDL se analizarán solamente circuitos combinacionales, así quela arquitectura se describe utilizando álgebra booleana.

Figura 1.4 Descripción de la arquitectura.

1. 2. 1 Otras alternativas de descripción para este circuito 

Existen más alternativas para la descripción de este circuito que la mostrada anteriormente,en la que se utiliza sólo una expresión booleana. Éstas se ilustran a continuación.

Figura 1.5 Descripción con expresión booleana.

Es posible etiquetar las salidas intermedias de algunas o todas las compuertas y fraccionarel circuito. Note que las salidas intermedias son entradas de otra sección del circuito. Estasseñales intermedias no son parte del puerto porque no tienen contacto con el exterior. La

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 5/33

5

definición de estas señales se efectúa en la sección architecture. Se inicia con la palabra

signal:

Cabe aclarar que tanto a, b, c, d como S1, S2 y S3 son señales, pero las primeras sonseñales que están conectadas al puerto del circuito y las segundas son señales internas delmismo.

El orden en que se describen las señales intermedias S1, S2 y S3, así como la salida d notiene importancia. Cualquier orden es correcto, finalmente en los circuitos esquemáticos nohay un inicio o un fin. El diseñador puede definir el orden en que desea describir sucircuito.

Esta sería otra posibilidad:

entity comb1 is

Port (a : in std_logic;

b : in std_logic;c : in std_logic;

d : out std_logic);

end comb1;

architecture ecuaciones of comb1 is

signal S1, S2, S3 : std_logic;

begin

d<=S1 or S2 or S3;

S1<= a and b;

S2<= b and c;

S3<= a and c;

end ecuaciones;

entity comb1 is

Port (a : in std_logic;

b : in std_logic;

c : in std_logic;d : out std_logic);

end comb1;

architecture ecuaciones of comb1 is

signal S1, S2, S3 : std_logic;

beginS1<= a and b;S2<= b and c;

d<=S1 or S2 or S3;

S3<= a and c;end ecuaciones;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 6/33

6

Hay más información sobre los operadores booleanos y la construcción de expresionesbooleanas que será tratada en el siguiente capítulo.

1. 2. 2 Simulación de un circuito 

Al tener un circuito descrito en VHDL, cualquiera que esté capacitado en la programaciónde un compilador puede visualizar la factibilidad de programar un simulador que muestre elcomportamiento de las salidas de un circuito a través del tiempo a partir de construirestructuras de datos consistentes de tablas que evalúe las salidas cada vez que ocurrencambios en las entradas.

Antes de que existieran simuladores disponibles a estudiantes universitarios, la autoradesarrolló un simulador como parte de un curso de posgrado. Pero pronto surgieronopciones alternas y actualmente) hay una variedad  d de sistemas de desarrollo que nospermiten simular circuitos.

Para comprender la simulación, el primer paso es analizar la respuesta de un circuito. Paraello, analicemos el retraso de una compuerta:

Una compuerta tiene un retraso que consiste en el tiempo que requiere para que su salidasea estable y válida. Este tiempo está en el orden de XXX. Como el tiempo es muypequeño, denominémosle como un delta de tiempo.

Figura 1.6 Descripción del circuito con un delta de tiempo.

Si en tiempo=0 las entradas al circuito tienen un valor estable, las salidas S1, S2 y S3 tendrán salidas estables y válidas al mismo tiempo, esto será en tiempo=delta, y la salida dtendrá un valor estable en tiempo=2 delta.

Las salidas S1, S2 y S3 son estables al mismo tiempo, pero de manera alguna es posibleque el código. A continuación, se evalúa al mismo tiempo, así que para el simulador es unavariable a manipular:

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 7/33

7

Para lograr el artificio de la ejecución concurrente para la simulación, es necesario crearuna estructura de datos que indique en qué tiempo está estable cada salida, y cuando unasalida es entrada de otra parte del circuito se hace el cálculo del retraso. La salida de cadacompuerta o de cada sección del circuito se calcula con el tiempo en que es válida suentrada más el tiempo de retraso de esa sección del circuito.

Por otra parte, cada vez que cambia el valor de una señal de la cual depende una señal desalida, se calcula de nuevo el valor de la salida; esto ocurre hasta que el valor de todas lassalidas queda  estable.

Por ejemplo, para la descripción:

Si en tiempo=0 se asocian valores a a, b, c, 0, 1, 1 en forma correspondiente.

Figura 1.7 Asociación de valores al cambiar una señal de salida.

Si el circuito se hubiera descrito fragmentado habría una diferencia en el tiempo de retrasocalculado en la simulación, dado que el simulador relaciona un retraso delta al circuitocompleto asignado a una salida, no lo hace compuerta por compuerta.

architecture ecuacion of comb1 is

begin

d<=(a and b) or (a and c) or (b and c);

end ecuacion; 

S1<= a and b;

S2<= b and c;

S3<= a and c; 

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 8/33

8

Por ejemplo, para la siguiente descripción:

O para la siguiente:

La simulación generaría los siguientes resultados:

Figura 1.8 Asociación de valores al cambiar de nueva cuenta la señal de salida.

Para practicar este tema resuelva S, a continuación se plantea un ejercicio. Utilice comomodelo el código del ejemplo que se presentó. Por el momento sólo se explicará cómoelaborar una expresión booleana.

En VHDL existen operadores para todas las compuertas lógicas, las compuertas simplesque constituyen las operaciones básicas del álgebra booleana: NOT, AND, OR y lascompuertas compuestas, es decir, que incluyen varias operaciones básicas: XOR, XNOR,

S1<= a and b;

S2<= b and c;

d<=S1 or S2 or S3;

S3<= a and c; 

d<=S1 or S2 or S3;

S1<= a and b;

S2<= b and c;

S3<= a and c; 

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 9/33

9

NAND, NOR. Cabe aclarar que aunque se utilicen compuertas compuestas, la expresión seconvertirá a una que esté construida con compuertas básicas.

Hay que recalcar en este momento que las mayúsculas y minúsculas son indistintas; la a yla A se interpretan igual. Así que se podrá escribir: AND, aND, And, and, AnD, And,anD, And y esto aplica a los nombres de señales, a los operadores y a las palabrasreservadas.

Los nombres de los operadores también son palabras reservadas del lenguaje.

En VHDL la precedencia de operadores no existe, de manera que no hay prioridades. Alconstruir una expresión considere como si fuera a ser “evaluada” de izquierda a derecha.

Además, también tome en cuenta que es posible definir funciones en las que se usencompuertas de más de dos entradas.

De acuerdo a que no hay precedencias, es decir, que todos los operadores tienen la misma

prioridad, la función (que también llamaremos ecuación):F(a,b,c,d) = a+b+c+d equivale al circuito

De acuerdo a que no hay precedencias, es decir, a que todos los operadores tienen la mismaprioridad, la función, que también llamaremos ecuación: F(a,b,c,d) = a+b+c+d, equivale alsiguiente circuito:)

Figura 1.9 Circuito de la función: F(a,b,c,d) = a+b+c+d .

F(a,b,c,d)= a and b or (b and d) or (c and d). Aquí note que el primer and no requiereparéntesis por ser el primero de izquierda a derecha.

Figura 1.10 Circuito de la función: F(a,b,c,d)= a and b or (b and d) or (c and d).

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 10/33

10

F(a,b,c,d) = (a and b) or (b and d) or (c and d). Esta expresión equivale al mismo circuitoque el anterior.

Figura 1.11 Circuito de la función: F(a,b,c,d) = (a and b) or (b and d) or (c and d).

F(a,b,c,d) = a and b or b and c or c and d . Note lo que se define sin paréntesis:

Figura 1.12 Circuito de la función: F(a,b,c,d) = a and b or b and c or c and d.

La expresión equivalente con paréntesis es la siguiente: F(a,b,c,d) = (((((a and b) or b)

and c) or c) and d).

F(a,b,c,d) = not a and not b or c, note que el not es unitario, es decir, es una compuertacon sólo una entrada:

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 11/33

11

Figura 1.13 Circuito de la función: F(a,b,c,d) = not a and not b or c.

F(a,b,c,d) = a xor b xor c, observe que el xor es una compuerta de sólo dos entradas:

Figura 1.14 Circuito de la función: F(a,b,c,d)= a xor b xor c.

F(a,b,c)= (a nand b nand not c) nand not d:

Figura 1.15 Circuito de la función: F(a,b,c)= (a nand b nand not c) nand not d.

Luego de estos ejemplos, resuelva los siguientes ejercicios.

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 12/33

12

Ejercicio 1.1

a) Describa en VHDL el siguiente circuito:

Llame d a la salida.

b) Construya la tabla de tiempo de ejecución de la respuesta que eligió. Suponga que ocurreen tiempo=0 a=0, b=1 y c=1.

c) Dibuje el circuito equivalente a la siguiente ecuación: z = a and b and not c or d:

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 13/33

13

1.2.3 Definición de Retrasos

Como un delta de tiempo tiende a cero, cuando la simulación se observa en forma gráficalos deltas de tiempo no se alcanzan a apreciar. Se observa como si el retraso fuera cero, esdecir, como si la respuesta de un circuito fuera instantánea.

Existe la posibilidad de definir un retraso específico para un circuito. Esto sólo es posiblecon fines de simulación. Si se tiene un propósito didáctico de entender el retraso de uncircuito, se definen retrasos de la siguiente manera: agregar “after X unidad de tiempo” a

una ecuación. Las unidades de tiempo válidas son: picosegundos (ps), nanosegundos (ns),microsegundos (us), milisegundos (ms), segundos (s).

Ejemplo: supongamos que el retraso de una compuerta and es de 30 ns y el de una

compuerta or es de 50 ns.

Figura 1.16

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 14/33

14

La definición de este circuito en VHDL es:

La simulación de este circuito se muestra con la siguiente tabla:

t = 0 t = 0 + 30ps t = 0 +80 ps

a = 0 a = 0 a = 0

b= 1 b= 1 b= 1

c = 1 c = 1 c = 1

S1=U S1=0 S1=0

S2=U S2=1 S2=1

S3=U S3=0 S3=0

d = U d = U d = 1

architecture ecuaciones of comb_retraso issignal S1, S2, S3: std_logic;begind<=S1 or S2 or S3 after 50 ps;S1<= a and b after 30 ps;S2<= b and c after 30 ps;S3<= a and c after 30 ps;end ecuaciones;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 15/33

15

Figura 1.17

Existe otro tipo alterno al std_logic, es el tipo bit. Con éste la definición del circuito es:

La diferencia entre el tipo bit y el tipo std_logic es que el tipo bit inicia todas las señales encero, en vez de iniciar indeterminadas.

entity comb1 isPort (a : in bit;

b : in bit;c : in bit;d : out bit);

end comb1;

architecture ecuaciones of comb_retraso is

signal S1, S2, S3: bit;

begin

d<=S1 or S2 or S3 after 50 ps;

S1<= a and b after 30 ps;

S2<= b and c after 30 ps;

S3<= a and c after 30 ps;

end ecuaciones;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 16/33

16

Con este tipo, la simulación reporta los siguientes valores: 

t = 0 t = 0 + 30ps t = 0 +80 ps

a = 0 a = 0 a = 0

b= 1 b= 1 b= 1c = 1 c = 1 c = 1

S1=0 S1=0 S1=0

S2=0 S2=1 S2=1

S3=0 S3=0 S3=0

d = 0 d = 0 d = 1

Figura 1.18

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 17/33

17

Ejercicio 1.2 (algunos problemas tienen respuesta y otros no,

luego la pongo)*

1. Suponga que el tiempo de respuesta (retraso) de un not es de 5ps, de un and 30ps yde un or 20ps. Si en tiempo=0 están listas las señales a, b y c.

a) ¿En qué momento como máximo es válida la salida del siguiente circuito?

b) ¿Y como mínimo? (tome en cuenta que en una compuerta or al haber un 1 en cualquierade sus entradas, luego de transcurrir tiempo de retraso la salida es estable)

No se entiende así dejarlo como lo redacté en amarillo

2.

a) Defina en VHDL el siguiente circuito secuencial (en VHDL es válido el operador

nand).

b) Analice el funcionamiento de este circuito e indique a qué circuito conocido

corresponde.

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 18/33

18

Respuesta: es un latch S-R

c) Muestre cuál sería el resultado de la simulación de este circuito.

3. Diseñe en VHDL un dispositivo que genere dos señales oscilatorias, equivalentes a

señales de reloj. Las señales se llamarán CLK1 y CLK2. CLK2 debe tener el doble de

frecuencia que CLK1. El período de CLK1 debe ser de 20ns y el de CLK2 de 10ns.

Respuesta:

c/k1<= not c/k1 after 10ns;

c/k2<= not c/k2 after 5ns;

4.

a) Describa en VHDL el siguiente circuito:

Los retrasos de las compuertas son:

Retraso not: Ins

Retraso or: 2ns

Retraso and: 3ns

 A 0

B 1

C 1

Q

S2

S3

S1

D 1 S0

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 19/33

19

Respuesta:

s2<= A and B and C alter 3ns;

s3<= s0 or s1 after 2ns;

s0<= not D alter 1 ns;

s1<=not Q alter 1 ns;

Q<= s2 or s3 after 2 ns;

  4. a) Construya la tabla de tiempo de retraso del circuito mostrado en el inciso a).

 b)Suponga que en tiempo=0 A=0, B=, C=1y D=1 

Respuesta:

T(ns) A B C D S0 S1 S2 S3 Q

0 0 1 1 1 0 0 0 0 0

1 0 1 1 1 0 1 0 0 0

3 0 1 1 1 0 1 0 1 0

5 0 1 1 1 0 1 0 1 1

6 0 1 1 1 0 0 0 1 1

8 0 1 1 1 0 0 0 0 1

10 0 1 1 1 0 0 0 0 0

11 0 1 1 1 0 1 0 0 0

13 0 1 1 1 0 1 0 1 0

15 0 1 1 1 0 1 0 1 1

16 0 1 1 1 0 0 0 1 1

18 0 1 1 1 0 0 0 0 1

20 0 1 1 1 0 0 0 0 0

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 20/33

20

1.3 Más información sobre la definición de un circuito1.3.1 Entidad

La entidad es la sección en la que se define el nombre del circuito y el puerto del circuito deéste). El puerto está constituido por las señales con las que el circuito se comunica con elexterior. En la figura 1.19 se describe un circuito con entradas a, b, c y salida d. Lasentradas y salidas conforman el puerto, y las compuertas interconectadas son laarquitectura:

Figura 1.19 Descripción del circuito.

La manera de declarar la entidad de este circuito en VHDL es:

Para la descripción en VHDL de una entidad es necesario que se defina un nombre para elcircuito y también, al momento de definir las entradas y salidas, se le asocie a cada una: unnombre, modo y tipo.

En el ejemplo anterior), una señal tiene de nombre „a‟, modo “in” y tipo “std_logic”. 

1.3.2 Nombres

Entity circuito_prueba is

Port ( a, b, c: in std_logic;

d: out std_logic);

end circuito_prueba;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 21/33

21

Si el circuito fuera construido en un protoboard, las señales representarían a los cables quevan conectados a las entradas de los componentes o que provienen de sus salidas. Parahacer referencia a las señales en la arquitectura del circuito, es necesario etiquetarlas con unnombre; se recomienda que el nombre de la señal sea fácil de identificar, es decir, si existe

una señal que se encargue de reiniciar algún proceso, entonces el nombre más indicado parala señal seria reset.

Para crear un nombre correcto, lado es necesario conocer las reglas de construcción:

VHDL no distingue entre mayúsculas. Es decir, la señal „A‟ y „a‟ son la misma.

(Eliminar comillas)

Sólo permite letras, números y guión bajo. Cabe mencionar que el nombre de una

señal ;debe comenzar con una letra y no puede contener doble guión seguido.

No es posible utilizar palabras reservadas.

No se deben repetir nombres para señales distintas.

Las mismas reglas de construcción aplican al nombre general del circuito que se indicadespués de entity. 

Ejercicio 1.3

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 22/33

22

1. En el siguiente fragmento de código se encuentran algunos errores respecto a losnombres de las señales. Identifíquelos y explique dónde reside el error:

Respuesta:

VHDL  interpreta que se esta definiendo dos veces la variable „a‟ pues no distingue entre

mayúsculas. Las señales “1Abc” y “_ce3” comienzan con un carácter diferente de una letra

y la señal “y__xr” contiene doble guión seguido. Todas los demás nombres de señales estáncorrectamente escritos.

1.4 Modos

entity Nombres is

port( a, A, ab12c, 1Abc, t_4: in std_logic;

y__xr, 1bt, _ce3, y_t_b: out std_logic);

end Nombres;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 23/33

23

El modo define la dirección o sentido de conexión de una señal. Existen cuatro modos: in (entrada), out (salida), inout (entrada/salida), y buffer.

Modo in

Representa a las señales de entrada al circuito.

Modo out

Se refiere a las señales de salida del circuito.

Modo inout

Indica que una señal puede ser tanto de modo in como de modo out, es decir bidireccional.

Modo buffer

Modo bidireccional. Bastante similar al modo inout, con la diferencia de que la señal se

comporta como una de salida.

1.5 Tipos de datos

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 24/33

24

Los tipos de datos son usados para asignar un “formato lógico” a los valores eléctricos que transitan

por una señal. Generalmente el diseñador usa el tipo de dato que más se ajuste al circuito que desea

construir. Algunos de los tipos de datos que son:

Std_logic, que puede tomar los siguientes valores:

o  0 ó 1 lógico, es decir, un bit.

o  Z que indica alta impedancia, es decir, desconexión.

o  U que indica undetermined , indeterminado, esto ocurre cuando a una señal no se leha asociado un valor, solo aplica a la simulación del circuito, así queindistintamente podría ser 0 ó 1 

o  X que indica un corto, sucede cuando una señal recibe valores de distintas fuentes,por ejemplo: A<=B; A<=C.

Bit. Sólo toma valores de 0 y 1. A diferencia de std_logic, toma 0 como valor en la

simulación cuando una señal no tiene valor.

Integer. Permite que en la descripción de un circuito se utilicen valores con

representaciones decimales enteras asociados a estas señales, por ejemplo, (/:)

A<=5, en vez de A<=“101”. El compilador que se utilice se encarga de convertir a binariolos datos escritos en decimal.

Std_logic_vector. Bus de bits tipo std_logic. La definición de una señal múltiple, es decir,un bus de datos, permite que se utilice sólo un nombre para hacer referencia a un conjunto

de señales digitales (o bits). Cada señal individual puede tomar los valores de un dato

std_logic. La sintaxis que se utiliza y su uso se estudiarán en el siguiente capítulo.

Bit_vector. Es un “bus” de bits de tipo bit, en el siguiente capítulo se estudiará su uso y

definición.

1.6 Arquitectura

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 25/33

25

Como ya se menciono, la arquitectura es la sección en la que se describe el circuito.Existen tres diferentes niveles de descripción de una arquitectura en VHDL 

1.  Nivel estructural.

2.  Nivel ecuaciones.

3.  Nivel comportamiento o funcional.)

Nivel estructural.

Consiste en describir un circuito a partir de las conexiones de entrada y salida de suscompuertas o bien de las conexiones de sus componentes básicos. Es la descripción másparecida a la conexión que se realizaría si se cableara el circuito.

Nivel ecuaciones.

Consiste en describir un circuito a partir de las expresiones booleanas que lo conforman.

Nivel comportamiento o funcional.

Un circuito puede ser descrito a partir de su funcionamiento , Para esto en VHDL existenalgunas estructuras básicas que lo permiten. Además, facilitan el uso de condiciones que

describen la respuesta del circuito a sus entradas.

En el segundo capítulo se verá a detalle cada uno de estos niveles de descripción.

A continuación se muestra la codificación en VHDL del circuito de la Figura 1.1 Circuitoprueba para analizarla a detalle:

Ésta y cualquier otra descripción cumple con el siguiente patrón sintáctico:

architecture Behavioral of circuito_prueba is

begin

d<= (a and b) or c;

end Behavioral;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 26/33

26

Sintaxis en VHDL de la definición de un componente

La palabra concurrente tiene dos propósitos:

1)  Todos los circuitos o segmentos de circuito que se describan en la arquitectura estánfuncionando al mismo tiempo, es decir, son concurrentes.

2)  Más adelante estudiaremos otras forma de describir circuitos y por eso es necesariodiferenciar el tipo de instrucciones, a la otra forma le llamaremos secuencial.

Las palabras que se encuentran en negritas (bold) son palabras reservadas del lenguaje.No son intercambiables por otras palabras y son requeridas en la posición que se indica. Noes posible emplear palabras reservadas como nombre ni del componente ni de las señalesdel circuito.

Observe que al final de cada instrucción concurrente y en general de cada sección de ladescripción se incluye un punto y coma. Este signo de puntuación no puede omitirse.

Las reglas para la construcción válida de los nombres de las señales se ofrecen en el

siguiente capítulo.Volviendo al ejemplo dado:

architecture Behavioral of circuito_prueba isbegind<= (a and b) or c;end Behavioral;

entity nombre-componente is

Port ( señal: tipo;

señal: tipo; ...señal: tipo;);

end nombre-componente ;

architecture tipo-de-descripción of nombre-componente is 

begin 

instrucción_concurrente;

instrucción_concurrente;

...

instrucción_concurrente;

end tipo-de-descripción ;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 27/33

27

El término Behavioral es el nivel de la arquitectura, es una palabra cualquiera que elige eldiseñador y tiene propósito de documentación del circuito. Por otra parte circuito_prueba 

es el nombre de la entidad que se está describiendo. Después seguiría el espacio en

(eliminar) donde se pueden declarar señales internas de la arquitectura, es decir, que noestaban declaradas en la entidad. Posteriormente se encuentra begin que es donde se marcael inicio de la descripción del circuito mediante el uso de las señales de la entidad y señalesinternas (si es que las hay) y denotamos el fin escribiendo end y el mismo nivel dearquitectura mencionado al inicio de la arquitectura.

Otro ejemplo del uso de las señales internas sin afectar el resultado final del circuito esmostrado en la siguiente arquitectura:

A la señal f , y a ninguna señal interna, se le asocia un modo, todas son inout, precisamente

por ser internas y por no tener salida al exterior, así que así como son salida, también debenser una entrada a otra parte del circuito.

1.7 Descripción de circuitos combinacionales con mayor número

de elementos

Ya comprendidos los conceptos de la entidad y arquitectura con los ejemplos sencillos quese presentaron y que resolvió, usted está listo para empezar a codificar en VHDL diseños

más extensos.

Ejemplo 1

Empecemos codificando el siguiente circuito combinacional a nivel ecuaciones:

architecture Behavioral of circuito_prueba is

signal f: std_logic;

begin

f<= (a and b) or c;

d<=f;

end Behavioral;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 28/33

28

Figura 1.20 Circuito combinacional

La codificación en VHDL de este circuito a nivel ecuaciones se puede realizar mediante eluso de señales internas o en sólo una ecuación. Para algunos resulta más cómodo y libre deerrores codificarlo con señales internas.

La manera de codificarlo con el uso de señales es de la siguiente manera:

Nota: La manera en que se codificaría sin uso de señales se encuentra en el código como uncomentario. Los comentarios se agregan después de dos guiones seguidos de la siguiente

manera:

Ejemplo 2. Juego de TV

En un programa de concursos de TV hay un juego en el que participan tres personas. Cadaparticipante cuenta con un interruptor. Los interruptores cerrados (posición on) generan un1 lógico. Los interruptores abiertos (posición off ) generan un 0 lógico. Por otra parte hay

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Ejemplo isport(a,b,c,d,e: in std_logic;

f : out std_logic);end Ejemplo;

architecture Behavioral of tercerafigura issignal g,h,i,j,k: std_logic;begin

--f<= e xor ( ( (a and b) or (c nor d) ) and ( (a and b) nand (c nor d) ) );g<= a and b;h<= c nor d;i<= g or h; j<= g nand h;k<= i and j;f<= e xor k;end Behavioral;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 29/33

29

cuatro indicadores (LEDs) en un tablero: A, B, C y D. Un indicador enciende si recibe un1 lógico.

El indicador A debe encender sólo cuando todos los jugadores posicionan en on sus

interruptores. 

El indicador B debe encender si y sólo si A está apagado.

El indicador C debe encender si y sólo si dos o más jugadores posicionan en on sus

interruptores.

El indicador D debe encender si y sólo si uno o ninguno de los jugadores posicionan

en on sus interruptores.

Dadas las especificaciones anteriores, codifique en VHDL los siguientes circuitos ysimúlelos:

1. Circuito para encender el indicador A.

2. Circuito para encender el indicador B.

3. Circuito para encender el indicador C.

4. Circuito para encender el indicador D.

Para la solución de este problema y cualquier circuito que sea deseé codificar es altamente

recomendable realizar algún esquemático antes de comenzar a programarlo con el fin detener más clara la idea de la elaboración de éste.

Después de realizar las funciones booleanas necesarias para que este circuito funcione seprocede al esquemático mostrado en la figura 1.21

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 30/33

30

Figura 1.21 Esquemático del juego de TV.

A continuación se muestra el juego de TV codificado basado en el esquemático del mismo:

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 31/33

31

Ejemplo 3. Alarmas residenciales

Se está implementando el sistema de alarmas de un muy pequeño departamento. A usted sele ha contratado para diseñar y construir los circuitos que hagan funcionar el sistema.

El sistema cuenta con sensores, interruptores y diferentes tipos de alarmas.

Se instalaron cinco tipos de sensores:

Magnéticos, para las ventanas.Infrarrojos, para detectar movimiento.De humo.De CO2 (detecta que pase cierto nivel).De humedad (detecta que pase cierto nivel).

El número de sensores que se instalaron es:

-  2 magnéticos-  un infrarrojo-  uno de humo-  uno de CO2 -  uno de humedad

Los sensores deben activar 5 tipos de alarmas:

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity TV isPort ( p1,p2,p3 : in STD_LOGIC;

a,b,c,d : out STD_LOGIC);end TV;

architecture Behavioral of TV issignal snp1, snp2, snp3: std_logic;

beginsnp1<= not p1;snp2<= not p2;snp3<= not p3;a<= p1 and p2 and p3;

b<= not(p1 and p2 and p3);c<= (p1 and p2) or (p1 and p3) or (p2 and p3);d<= (snp1 and snp2) or (snp2 and snp3) or (snp1 and snp3);

end Behavioral;

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 32/33

32

-  contra robo-  contra incendios-  para avisar sobre la humedad-  para avisar sobre el CO2 

-  para avisar que hay alguna alarma encendida

Se colocaron dos interruptores, que en “on (1)” sirven para: 

-  activar la alarma de robos-  indicar que hay gente en casa (que probablemente encienda estufa,

cerillos, etc.)-  Para implementar su diseño:-  Utilice dip switches para representar a los sensores y a los interruptores.-  Utilice LEDs para representar a las alarmas.

El siguiente código está diseñado de la siguiente manera:

La alarma de robos se encenderá cuando el interruptor de alarma de robo se

encuentre encendido y el interruptor que indica presencia de residentes se encuentre

apagado.

Teniendo en cuenta ya los interruptores, la alarma se encenderá cuando el sensor

infrarrojo este encendido o alguno de los sensores magnéticos se enciendan.

La alarma de incendio se encenderá cuando el sensor de humo detecte un alto nivel

de humo.

La alarma de humedad dependerá únicamente del sensor de humedad.

La alarma de CO2 se encenderá solo sí la alarma de CO2 lo indica.

La alarma de alarma encendida se prenderá si alguna de las alarmas esta encendida.

Por lo tanto el esquemático se representaría tal como en la figura 1.22

5/13/2018 VHDL-Cap tulo 1 - slidepdf.com

http://slidepdf.com/reader/full/vhdl-capitulo-1 33/33

33

Figura 1.22 Esquemático de alarmas residenciales

Codificando el esquemático de las alarmas residenciales quedaría:

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Alarmas isPort ( iar : in STD_LOGIC; --interruptor alarma de robo

iig : in STD_LOGIC; --interruptor indica hay gentesm1 : in STD_LOGIC; --sensor magnetico 1

sm2 : in STD_LOGIC; --sensor magnetico 2sifr : in STD_LOGIC; --sensor infrarojoshumo : in STD_LOGIC; --sensor humosco : in STD_LOGIC; --sensor co2shume : in STD_LOGIC; --sensor humedad darob : inout STD_LOGIC; --alarma de roboainc : inout STD_LOGIC; --alarma incendioahume : inout STD_LOGIC; --alarma humedad daco : inout STD_LOGIC; -- alarma co2aenc : inout STD_LOGIC); -- alarma encendida

end Alarmas;

architecture Behavioral of Alarmas is

beginarob<= ((not iig and sifr) or sm1 or sm2) and iar;ainc<= shumo;ahume<= shume;aco <= sco;aenc <= arob or ainc or ahume or aco;end Behavioral;