ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Objetos, tipos de datos y operadores


Enviado por   •  9 de Septiembre de 2012  •  Tutorial  •  3.103 Palabras (13 Páginas)  •  819 Visitas

Página 1 de 13

OBJETOS, TIPOS DE DATOS Y OPERADORES

OBJETOS DEL VHDL

Un objeto es un elemento del lenguaje que tiene un valor de un tipo de datos concreto. Este tipo de datos determina el conjunto de valores posibles que el objeto puede contener así como la clase de operaciones que se podrán aplicar. En general, no será posible realizar operaciones entre dos objetos de distinto tipo si no se aplica explícitamente una función de conversión de tipo a los operados. Aunque esta faceta del VHDL implica más atención por parte del diseñador a la hora de escribir un modelo, permite detectar errores durante el análisis del código sin necesidad de simulación.Un objeto VHDL es un elemento que tiene asignado un valor de un tipo determinado. Hay cuatro clases distintas de objetos: las constantes, las variables, las señales y los ficheros. Todos los objetos deben declararse antes de poder ser utilizados. La declaración consiste básicamente en asignar un identificador y un tipo al objeto.

TIPOS DE DATOS

El tipo de dato es un concepto fundamental en VHDL, ya que cada objeto debe ser de un tipo concreto que determinará el conjunto de valores que puede asumir y las operaciones que se podrán realizar con este objeto. VHDL proporciona sentencias específicas de nuevos tipos de datos además de un conjunto de tipos predefinidos de uso común.El tipo de datos es un elemento básico en VHDL, ya que delimita que valores puede tener un objeto y que operaciones podemos realizar con él. Aparte de los tipos ya creados, podemos crear nuevos tipos y subconjuntos de tipos.La declaración de un tipo de datos es la sentencia VHDL utilizada para introducir un nuevo tipo. Esta declaración está formada por un identificador que nos permitirá usar el nuevo tipo al llamarlo y la descripción del conjunto de valores que forman el tipo de datos. Para ello usamos la palabra reservada type. La declaración puede tener varios formatos como por ejemplo:

type longitud_maxima is range 2 to 50

type estados is (estado_a, estado_b, estado_c);

Una vez declarado el nuevo tipo podremos usarlo para declarar objetos de este tipo, como por ejemplo:

variable est: estados;

port (entrada: in estados;

salida: out longitud_maxima);

Cada tipo es diferente e incompatible con los demás, aunque estén declarados de la misma forma, por lo cual no podemos asignar a una señal de un tipo otra de otro tipo distinto, a menos que definamos una función de transformación.

Los tipos pueden ser clasificados según las características de lo que van a determinar:

Tipos enumerados: En éste se define el conjunto de posibles valores del tipo especificado, presentando una lista que contiene a todos los valores. El primer identificador es el nombre del tipo y sirve para referenciarlo, y entre paréntesis y separados por comas se adjuntan todos los valores legales del tipo.

type vocales (‘a’, ‘e’, ‘i’, ‘o’, ‘u’);

type direcciones is (izquierda, derecha, arriba, abajo, centro);

Si no está especificado ningún valor inicial, el objeto se inicializa con el valor más a la izquierda de los especificados en la declaración del tipo. Es decir, un objeto del tipo “vocales” toma el valor ‘a’ por defecto.

Tipos enteros / reales: Esta modalidad de tipo sirve para definir un objeto con valores reales y enteros. En VHDL vienen definidos el tipo integer, que puede ir desde -2147483647 hasta 2147483647, y el tipo real, que puede ir desde -1.0e38 hasta 1.0e38. Para definir un tipo de esta naturaleza hay que especificar el rango de valores que puede llegar a tener asignado un objeto, como en los ejemplos siguientes

type edad is range 0 to 150;

type dias is range 31 downto 0;

Si no está especificado ningún valor inicial, el objeto se inicializa con el valor más a la izquierda de los especificados en la declaración del tipo. Deberemos tener cuidado si hemos usado la palabra to o la palabra downto para definir el tipo, ya que se asignará un valor por defecto u otro. En el ejemplo se da por defecto a un objeto del tipo “edad” el valor 0, y a otro del tipo “dias”, el valor 31.

Tipos fisicos: Sirven para representar magnitudes del mundo real como el tiempo, peso, capacidad,... por lo que llevan, aparte de un literal numérico, la magnitud física a medir. Podemos asignar unidades auxiliares a la predefinida.

type time is range 0 to 1e20;

units

fs;

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

ms = 1000 us;

sec = 1000 ms;

min = 60 sec;

hr = 60 min;

end units;

Si no está especificado ningún valor inicial, el objeto se inicializa con el valor más a la izquierda de los especificados en la declaración del tipo. Deberemos tener cuidado si hemos usado la palabra to o la palabra downto para definir el tipo, ya que se asignará un valor por defecto u otro. En el ejemplo se da por defecto a un objeto del tipo “edad” el valor 0, y a otro del tipo “dias”, el valor 31.

OPERADORES

La metodología de programación de un componente, basada en la descripción por comportamiento (behavioral), puede emplear en su diseño la mayoría de operadores que se encuentran habitualmente útiles en los SDL's ( software design lenguajes)

En el cuadro adjunto se puede ver una relación de los operadores predefinidos más empleados en VHDL, así mismo se aprecia que su clasificación atiende al tipo de dato que vaya a manejar:

OPERADORES LÓGICOS NOT, AND, OR,

NAND, NOR, XOR Tipo de operador: boolean

Tipo de resultado: boolean

OPERADORES RELACIONALES = / < <= > >= Tipo de operador: cualquier tipo

Tipo de resultado: boolean

OPERADORES ARITMÉTICOS + - * / **

MOD, REM, ABS Tipo de operador: integer, real, signal

tipo de resultado: integer, real,signal

OPERADOR CONCADENACIÓN & Tipo de operador: array

tipo de resultado: array

Los operadores lógicos, pueden ser empleados con los tipos predefinidos, BIT y BOOLEAN, dándonos como resultado un valor booleano del mismo tipo que los operadores.

Para graficar un poco la importancia de emplear correctamente los distintos tipos de operadores, a continuación lo ilustramos con la ayuda del diseño de un sumador de cuatro bits mas el carry de la etapa anterior. Pulsa aquí para ir a la práctica del Cuádruple Sumador Total.

architecture archisumador of sumador is

begin

process (a,b,cin)

variable aux:std_logic_vector(4 downto 0);

begin

aux:=('0' & a) + ('0' & b);

if cin='1' then aux:=aux+1;

...

Descargar como (para miembros actualizados) txt (19 Kb)
Leer 12 páginas más »
Disponible sólo en Clubensayos.com