Вы находитесь на странице: 1из 6

Operadores VHDL

Hasta ahora solo hemos mencionado implícitamente los operadores disponibles en VHDL. Esta
sección presenta una lista completa de operadores, así como algunos ejemplos de su uso. Una
lista completa de operadores se muestra en la Tabla 6.1. Esto es seguido por breves
descripciones de algunos de los operadores menos obvios. Aunque es posible que no tenga una
necesidad inmediata de utilizar algunos de estos operadores, debe saber que existen. Y aunque
hay algunas cosas especiales que debe saber sobre algunos de estos operadores, no se presenta
demasiada información en esta sección.

Los operadores en VHDL se agrupan en siete tipos diferentes: lógico, relacional, cambio, suma,
unario, multiplicación y otros. El orden de esta lista de operadores es algo importante porque
presenta los operadores en el orden de precedencia. Dijimos algo porque su código VHDL nunca
debería depender de la precedencia del operador para describir el comportamiento del circuito.

Tabla 6.1: operadores de VHDL.


Tabla 6.2: operadores relacionales VHDL con breves explicaciones.

La dependencia de oscuras reglas de precedencia tiende a hacer que el código VHDL sea críptico
y difícil de entender. Un uso liberal de paréntesis es un mejor enfoque para la codificación VHDL.

La primera columna de la Tabla 6.1 enumera los operadores en orden de precedencia con los
operadores lógicos que tienen la precedencia más alta. Aunque hay un orden de precedencia en
los tipos de operadores, no hay un orden de precedencia dentro de cada tipo de operador. En
otras palabras, los operadores que aparecen en las filas se presentan sin un orden particular.
Esto significa que los operadores se aplican a los operandos dados en el orden en que aparecen
en el código VHDL asociado.

6.1 Operadores Lógicos

Los operadores lógicos generalmente se explican por sí mismos. También se han usado a lo largo
de este libro. Lo único digno de mencionar aquí es que el operador no se ha incluido en el grupo
de operadores lógicos a pesar de que técnicamente no es una operación lógica.

6.2 Operadores relacionales

Los operadores relacionales generalmente también se explican por sí mismos. Muchos de ellos
han sido usados en este libro. Una lista completa de operadores relacionales se proporciona en
la Tabla 6.2.

6.3 Operador de cambio

Disponible desde ieee.numeric std o ieee.numeric bit, hay tres tipos de operadores de turno:
shift lógico, shift aritmético y rotaciones.
Tabla 6.3: operadores de cambio VHDL con ejemplos.

Aunque estos operadores básicamente cambian bits de izquierda a derecha o de derecha a


izquierda, hay algunas diferencias básicas que se enumeran a continuación. Los operadores de
desplazamiento se enumeran en la Tabla 6.3.

 Ambos cambios lógicos introducen ceros en un extremo del operando que se ve afectado
por la operación de cambio. En otras palabras, los ceros se alimentan en un extremo del
operando mientras que los bits se pierden esencialmente del otro extremo. La diferencia
entre los cambios lógicos y aritméticos es que en el desplazamiento aritmético, el bit de
signo nunca cambia y el bit que se alimenta en un extremo puede diferir. Por lo tanto, para
las izquierdas de cambio aritmético, el último bit derecho se encuentra en el extremo
derecho del operando. Para los derechos de desplazamiento aritmético, el bit de signo (el
bit más a la izquierda) se propaga a la derecha (el valor del bit más a la izquierda se introduce
en el extremo izquierdo del operando).
 Los operadores de rotación agarran un poco de un extremo de la palabra y lo colocan en el
otro extremo. Esta operación se realiza independientemente del valor de los bits
individuales en el operando.

6.4 Otros operadores

Los otros grupos de operadores generalmente se usan con tipos numéricos. Dado que esta
sección no presenta operaciones numéricas en detalle, los operadores se enumeran
brevemente a continuación en la Tabla 6.4. Se presta especial atención a los operadores mod,
rem y &. Estos operadores también están limitados a operar en tipos específicos que tampoco
están listados aquí.
6.5 Operador de concatenación

El operador de concatenación & es a menudo un operador útil cuando se trata de circuitos


digitales. Hay muchas ocasiones en las que necesitará una unión entre dos valores separados. El
operador de concatenación se ha visto en algunas soluciones de ejemplo anteriores. Algunos
ejemplos más de los operadores de concatenación se presentan en el Listado 6.1.

6.6 Operadores de Módulos y Remanentes

Tanto el resto del operador rem como el módulo mod del operador se aplican a tipos enteros y
ambos devuelven un tipo entero. A menudo hay confusión sobre las diferencias entre los dos
operadores y la diferencia en su operación en números negativos y positivos. Las definiciones
que VHDL usa para estos operadores se muestran en la Tabla 6.5, mientras que algunos ejemplos
de estos operadores se proporcionan en la Tabla 6.6.

Tabla 6.4: Todos los demás operadores de VHDL no enumerados hasta el momento.
Tabla 6.5: Definiciones de los operadores rem y mod.

Una regla general seguida por muchos programadores es evitar el uso del operador de mod
cuando se trata de números negativos. Como puede ver en los ejemplos a continuación, las
respuestas a veces son contra-intuitivas.

6.7 Revisión de casi todo hasta ahora

VHDL es un lenguaje utilizado para diseñar, probar e implementar circuitos digitales. Las
unidades de diseño básicas en VHDL son la entidad y la arquitectura que ejemplifican el enfoque
jerárquico general de VHDL.La entidad representa el diagrama de caja negra del circuito o la
interfaz del circuito con el mundo exterior, mientras que la arquitectura abarca todos los demás
detalles de cómo se comporta el circuito.

La arquitectura VHDL está hecha de declaraciones que describen el comportamiento del circuito
digital. Debido a que este es un lenguaje de descripción de hardware, se considera que las
declaraciones en VHDL se ejecutan al mismo tiempo. La idea de concurrencia es uno de los temas
principales de VHDL, como cabría esperar ya que un circuito digital se puede modelar como un
conjunto de compuertas lógicas que funcionan simultáneamente.

Los principales tipos de declaraciones simultáneas en VHDL son la señal simultánea

Tabla 6.6: Ejemplo de operadores rem y mod.


instrucción de asignación, la instrucción de asignación de señal condicional, la declaración de
asignación de señal seleccionada y la declaración de proceso. El enunciado de proceso es una
declaración concurrente que está constituida exclusivamente por enunciados secuenciales. Los
principales tipos de enunciados secuenciales son la declaración de asignación de señal, la
instrucción if y la declaración de caso. La instrucción if es una versión secuencial de la declaración
de asignación de señal condicional mientras que la declaración de caso es una versión secuencial
de la instrucción de asignación de señal seleccionada. La sintaxis de estas declaraciones y
ejemplos se dan en la siguiente tabla.

Los estilos de codificación en VHDL se incluyen en la categoría de modelos de flujo de datos,


conductuales y estructurales. El uso exclusivo de las declaraciones de proceso indica un modelo
de comportamiento. El uso de asignación de señal concurrente, condicional y selectiva indica el
uso de un modelo de flujo de datos. El código VHDL que describe circuitos digitales más
complejos generalmente contendrá ambas características de todos estos tipos de modelos.

Como no debes memorizar la sintaxis de VHDL, se recomienda tener siempre una hoja de trucos
junto a ti cuando realices el modelado de VHDL. Desarrollar una verdadera comprensión de
VHDL es lo que te convertirá en un buen diseñador de hardware. La capacidad de memorizar la
sintaxis de VHDL no prueba casi nada.

Вам также может понравиться