You are on page 1of 23

Operadores y Expresiones

Las expresiones en VHDL son prcticamente iguales a


otros lenguajes de programacin.
Se expondrn brevemente los existentes y para que
sirven.

Operador de concatenacin &


Concatenar en programacin significa unir dos o ms
cadenas, es decir en lenguaje coloquial significa unir
dos o ms palabras(cadenas de letras).
La dimensin de la matriz resultante es la suma de las
dimensiones de las matrices.

Ejemplo:
Punto <= x&y

Va a construir la matriz punto y va a tener dentro de


la matriz a x en las primeras posiciones, y a y en
las ultimas.

OPERADORES
ARITMETICOS

** (EXPONENCIAL). Sirve para elevar un numero a una


potencia por ejemplo: 4**2 = 42 el operador de la
izquierda puede ser entero o real pero el de la
derecha solo puede ser entero.

ABS () (VALOR ABSOLUTO). Funcion que devuelve el


valor absoluto a su argumento que puede ser de
cualquier tipo numerico.
*(MULTIPLICACION). Sirve para multiplicar 2 numeros
de cualquier tipo numerico.

/ (DIVISION). Funciona con cualquier tipo de dato


numrico.
MOD (MODULO): calcula el modulo de dos nmeros y
cumple con la operacin a=b*N + (a MOD b) donde N es
entero. Los operandos solo pueden se enteros y el
resultado toma el signo de b. ejemplo: (6 MOD 2) = 3

REM (RESTO). Calcula el resto de la divisin entera y


cumple con a= (a/b)*b +(a REM b) siendo divisin
entera. Los operandos solo pueden ser enteros y el
resultado toma el signo de a. ejemplo : (5 REM 2) = 1
+ (SUMA Y SIGNO POSITIVO). Sirve para indicar suma, si
va entre dos operandos ejemplo : 5+4 o signo si va al
principio de la expresin (+5). Opera sobre cualquier
valor numrico.

- (RESTA Y SIGNO NEGATIVO). Cuando se encuentra


entre 2 operandos realiza la operacin de sustraccin
(5-2) y si va delante de una expresin le cambia el
signo (-8), los operandos pueden ser numricos de
cualquier tipo.

Operadores de desplazamiento
Desplazamiento lgico a derecha y a izquierda.
Desplazamiento aritmtico a derecha y a izquierda.
Rotacin a derecha y a izquierda.

Desplazamiento lgico a derecha y a


izquierda.
SLL (Shift Left Logic) y SRL (Shift Right Logic),
desplazamiento lgico a la izquierda y desplazamiento
lgico a la derecha, respectivamente.
Desplaza un vector un numero de bits a la derecha o
izquierda, rellenando los espacios con ceros.

Desplazamiento lgico a izquierda.


Tenemos un vector Num de 6 bits:
0

Para desplazar 2 espacios


a la izquierda el vector Num
0
se escribe de la siguiente manera:
Num sll 2
El vector resultante queda:
0

Desplazamiento lgico a derecha.


Tenemos un vector Num de 6 bits:
1

Para desplazar 4 espacios a la derecha el vector Num se


escribe de la siguiente manera:
Num srl 4
El vector resultante queda:
0

Desplazamiento aritmtico a derecha


y a izquierda.
SLA (Shift Left Arithmetic) y SRA (Shift Right
Arithmetic), desplazamiento aritmtico a la izquierda
y derecha respectivamente.
Similar al desplazamiento lgico, pero con la
diferencia de que los espacios no los rellena con
ceros, si no con el ultimo valor en desplazarse.

Desplazamiento aritmtico a
izquierda.
Tenemos un vector Num de 6 bits:
0

Para desplazar 2 espacios a la izquierda el vector Num


se escribe de la siguiente manera:
Num sla 2
El vector resultante queda:
0

Desplazamiento aritmtico a
derecha.
Tenemos un vector Num
de 6 bits:
0

Para desplazar 3 espacios a la derecha el vector Num se


escribe de la siguiente manera:
Num sra 3
El vector resultante queda:
0

Rotacin a derecha y a izquierda.


ROL (ROtate Left) y ROR (ROtate Right), rotacin a la
izquierda y a la derecha respectivamente. En este
caso los huecos son ocupados por los bits que van
quedando fuera.

Rotacin a izquierda.
Tenemos un vector Num de 6 bits:
1

Para rotar 2 espacios a la izquierda el vector Num se


escribe de la siguiente manera:
Num rol 2
El vector resultante queda:
0

Rotacin a derecha.
Tenemos un vector Num de 6 bits:
0

Para rotar 3 espacios a la derecha el vector Num se


escribe de la siguiente manera:
Num ror 3
El vector resultante queda:
0

Operadores relacionales
Devuelven siempre un valor de tipo booleano (true o
false). Los tipos con los que pueden operar dependen
de la operacin.

=, /= (igualdad, desigualdad) el primero devuelve


true si los operadores son iguales y false en caso
contrario. El segundo indica desigualdad, as que
funciona justo al revs. Los operadores pueden ser de
cualquier tipo con la condicin de que ambos sean del
mismo tipo.

< , <=, >, >= (menor mayor) tienen el significado


habitual. La diferencia con los anteriores es que los
tipos de datos que pueden manejar son siempre de
tipo escalar o matrices de una sola dimensin de tipos
discretos.

Operadores lgicos.

Son la NOT, NAND, OR, NOR, XOR, en VHDL93 se aadi XNOR.

Funcionamiento habitual.

Actan en datos tipo bit, bit-vector y boolean.

Si acta en vector la operacin se realiza bit a bit.

Precedencia de operadores y
sobrecarga
La precedencia de los operadores se presenta en la
siguiente tabla

Los operadores lgicos solo operaban sobre


unos tipos de datos determinados. Existe
en VHDL la posibilidad de sobrecargar
operadores y funciones de manera que es
posible extender la aplicacin de estos
operadores para que trabajen con otros
tipos aparte de los predefinidos. As se
podran redefinir los operadores lgicos
para pudieran trabajar sobre enteros.

You might also like