
DISEÑO E IMPLEMENTACION DEL PROCESADOR RISC
Objeto de Datos
Un objeto de datos en VHDL es un elemento que toma valor de algún tipo de dato determinado. Según sea este tipo de dato, el objeto poseerá un conjunto de propiedades que se le podrán aplicar, como las operaciones en las que el objeto pueda ser usado. En VHDL los objetos de datos son generalmente de tres clases: constantes, variables, señales.
Constante.
-
Constantes
Una constante es un elemento que puede tomar un único valor de un tipo dado. A las constantes se les debe asignar un valor en el momento de la declaración. Una vez que se les ha asignado algún valor, este no puede ser cambiado dentro de la descripción del diseño. Las constantes pueden ser declaradas dentro de las entidades, arquitecturas, procesos, o paquetes.
CONSTANT e : real := 2.71828;
CONSTANT retraso : time := 10 ns;
-
Variables
Los objetos de datos de la clase variable son similares a las constantes, con la diferencia que su valor puede ser modificado cuando sea necesario. Las variables en VHDL son similares a las de cualquier tipo de variable de un lenguaje de programación de alto nivel. A las variables también se les puede asignar un valor inicial al momento de ser declaradas. Se utilizan únicamente en los procesos y subprogramas (funciones y procedimientos). Las variables generalmente se utilizan como índices, principalmente en instrucciones de bucle, o para tomar valores que permitan modelar componentes.
VARIABLE contador : natural := 0;
VARIABLE aux : bit_vector(31 DOWNTO 0);
-
Señales
Un objeto de la clase señal es similar a un objeto de la clase variable, con una importante diferencia: las señales si pueden o pasar valores logicos, mientras que una variable no las puede hacer. Las señales por lo tanto representan elementos de memoria o conexiones y si pueden ser sintetizadas.Los puertos de una entidad son inaplicada-mente declarados como señales en el momento de la declaración, ya que estos representan conexiones. También pueden ser declaradas en la arquitectura antes Del BEGIN, lo cual nos permite realizar conexiones entre diferentes estructuras de programación.
SIGNAL sel : bit := '0';
SIGNAL datos : bit_vector(7 DOWNTO 0);