Está en la página 1de 4

Integrantes:

Hans León
Nicolyn Rivera

Clase 2
2.1 Sintáctica de VHDL
2.1.1. Elementos sintácticos del VHDL

 Comentarios
Se inician por un doble guion medio (--)

 Símbolos especiales
Son operadores lógicos (<,>, =), de asignación (<=,>=) y símbolos matemáticos (+, -, /, *, **)

 Números
Se representan en base 10, se pueden expresar en otra base anteponiendo el símbolo de numeral,
y por el frente la base y terminándolo en numeral, por ejemplo: 2#1100# (binario), 8#CF3A#
(hexadecimal).

 Caracteres
Se representan entre comillas simples, por ejemplo ‘1’, ‘a’ toma el valor ASCII que representan
esos números.

 Cadenas
Se representan con comillas dobles, pueden ser de texto o de números binarios.

 Cadenas de Bits
No necesariamente se debe convertir a binario ya que puede estar sujeta a la siguiente notación:
B”1110001”, también puede estar representada de la forma octal representada por la letra O, o
hexadecimal con la letra X.

2.1.2. Identificadores de las entidades


Son cadenas de caracteres para identificar una variable, señal, proceso o también una entidad.
REGLAS

 No importa si está escrito en mayúsculas o minúsculas


Salida=SALIDA
 Los nombres pueden contener números, pero no puede empezar el nombre de la entidad
con un número.
78N

N78
 Los nombres pueden tener un guion bajo, pero no puede empezar con guion bajo y no se
pueden tener dos guiones seguidos a la vez en el mismo nombre de la entidad.
Multiplicador_bits
_multiplicador
Multiplicador__bits
 Los nombres no pueden tener caracteres especiales.
Multiplicador & suma

 No se puede usar como identificador una palabra reservada por VHDL.


2.1.3. Palabras Reservadas
Son aquellas palabras que tienen un único significado en todo el lenguaje VHDL, realizan alguna
operación o sirven para iniciar alguna sección del código de VHDL.
TABLA I. Tabla de variables reservadas por VHDL

2.1.4. Operadores y expresiones

 Lógicos
Actúan sobre tipos de datos bit, bit_vector,, std_logic, std_logic_vector y boleanas. El tipo de
datos se da de acuerdo a las versiones. En el caso de utilizar este tipo de operadores en un vector
la operación se realizará bit a bit. Son:
NOT, AND, OR, NAND, NOR, XOR, XNOR, cada una tiene una precedencia siendo el número
más bajo el de mayor precedencia.
Se recomienda usar std_logic, std_logic_vector

 Aritméticos
Los operadores aritméticos como el exponencial, valor absoluto, multiplicación, división,
modulo, sumas, restas, etc., tienen una presencia específica y un símbolo de representación, en el
caso del signo de sumas y restas tienen 2 significados, o bien representa un número positivo o la
operación de sumar, al igual que la resta representa un número negativo o la operación de restar,
esto depende de cómo se exprese en el código.

 Relacionales
Por ultimo tenemos los relacionales que al igual que las operaciones lógicas, tienen un valor de
TRUE o FALSE, esto es lo que arrojan además tienen una precedencia de valor 4, entonces
podemos decir que la de mayor precedencia es la compuerta NOT, luego vienen las relacionales
y luego todo el resto de operaciones lógicas normales y corrientes.

 Desplazamientos
Se pueden hacer sobre los STD_LOGIC_VECTOR que son los arrays de bits, dependiendo de la
operación en las diapositivas se puede observar un ejemplo del funcionamiento de cada una de
las operaciones además de su símbolo representativo.
Por ejemplo, el SCL es un recorrido lógico hacia la izquierda, si tenemos la variable X que es un
vector de bits y le aplicamos el SCL de esta forma X SCL 4 le estamos diciendo que se recorran
4 espacios hacia la izquierda tomando todo el valor de los 4 bits más significativos de la variable
y se reemplazan por ceros.
En el caso del Shift Left Arithmetic el cual hace un movimiento hacia la izquierda aritmético,
pero ahora se replica el ultimo bit de los bits más significativos, el SRA hace lo mismo solo que
replica el bit más significativo del lado izquierdo.
Por ultimo tenemos el Rotate Left que toma los 4 primeros bits y los pasa a la última posición, el
ROR hace lo mismo, pero toma los 4 últimos bits y los mueve a las primera posiciones.

 Concatenación
Si se desea concatenar 2 vectores o un vector con un bit, esto se lo realiza con la operación &, por
ejemplo, tenemos 2 vectores A y B de diferentes longitudes, si escribimos C<=A&B, con esto
asignamos a C un valor de mismo tipo de A y B y de magnitud tal que pueda guardar A y B. Si C
tiene una longitud diferente a la suma de A y B debemos colocar una especificación de en qué
posiciones debe guardarse A y B.
Tipos de Datos en VHDL
Se clasifican en 2 grandes grupos, los predefinidos ya por el lenguaje y los que el usuario pueda
definir, como advertencia el usuario debe saber cómo definir el tipo de datos, que tipo de datos
están permitidos, como especificarlos y cómo usarlos, ciertos tipos de datos permiten la operación
entre ellos y otros no, por ejemplo, sobre datos de tipo STD_LOGIC se puede hacer operaciones
lógicas, pero no de tipo aritméticas, pero se puede hacer un casting a este dato de tipo
STD_LOGIC se convierta en algo parecido a un dato de tipo entero y con eso hacer una operación
aritmética sobre él y luego regresar al tipo de dato original.
Como decíamos al inicio VHDL tiene 2 categorías de tipos de datos, en los predefinidos que son
parte del lenguaje y se encuentran en las bibliotecas, todas estas bibliotecas se derivan de la IEEE,
ya que la IEEE es la que documenta y da soporte a VHDL, la biblioteca revisada es la 1164, la
cual nos permite hacer operaciones lógicas, relaciones y concatenación, las operaciones
aritméticas están dadas por otra librería, la numeric estándar, también debemos saber que existe
una librería antigua llamada estándar logic aritmetic la cual no se debe usar ya que son muy
antiguas, por ultimo tenemos el tipo de datos creados por el usuario los cuales son para casos
especiales, se basan en los predefinidos para crear algún tipo de dato especial por ejemplo, una
matriz de 2 o 3 dimensiones de tipos de datos std logic vector o de algún otro tipo.
Los tipos de datos que incluye en VHDL son:
o Tipos enumerados predefinidos
o Tipos enumerados definidos por el usuario
o Tipos de vector de bits
o Tipos de enteros
o Tipos de arreglos multidimensionales
o Tipos de registros

2.1.5. Arquitecturas

 Funcional
 Estructural
 Flujo de datos

También podría gustarte