Integer en VHDL

Una cuestión sobre la que surgen muchas dudas al aprender VHDL es el uso de valores enteros (integer) frente a los vectores de bits clásicos o std_logic_vector.

Esto es debido a que un diseño digital trabaja internamente únicamente con bits, por lo que cualquier otro tipo de datos que utilicemos sera una abstracción que luego será traducida a vectores de bits. Es por tanto imprescindible comprender el significado de cada tipo de datos y saber cómo se realiza la conversión desde los mismos a bits y viceversa.

El tipo de datos básico en VHDL es el std_logic y el std_logic_vector que representan uno o varios bits. El significado que tendrán estos bits dependerá de nuestro diseño y de las librerías que utilicemos. Por ejemplo si utilizamos la librería ieee.numeric_std luego podremos declarar si los valores utilizamos son números con signo o sin signo de la siguiente forma:


Para declarar un tipo integer tenemos que definir el rango en el que está definido. Si no lo hacemos estaremos utilizando mas bits de los necesarios, que luego se traducirán en recursos malgastados dentro de la FPGA. La forma de declararlo es utilizar la palabra clave integer y el rango que vayamos a utilizar.


A la hora de definir los rangos hay que tener en cuenta que los datos se representarán internamente en complemento a dos.

Una vez definidos los datos ya podemos trabajar con ellos, sumarlos, incrementarlos, o lo que queramos. Eso si, para poder operar con ellos, deben estar definidos sobre el mismo rango, ya que si no nos dará un error el compilador y debemos usar una librería que nos permita manejarlo.


Bibliografía: vhdl_es. (2019a, 1 de julio). Integer VHDL - VHDL.es. VHDL.es. https://vhdl.es/integer/



Comentarios

Entradas populares de este blog

ARREGLO LOGICO GENERICO (GAL)

Función "rising_edge" para VHDL

Señal del reloj en VHDL