Vhdl introduccion



Descargar 95,53 Kb.
Página3/6
Fecha de conversión22.07.2017
Tamaño95,53 Kb.
1   2   3   4   5   6

Compuerta inversora NMOS Estática

  • 0
  • 0
  • 0
  • 1
  • 1
  • c
  • c
  • Output
  • input
  • VDD

OBJETOS MANIPULABLES

  • Los objetos que se pueden manipular en VHDL son:
    • 1 SEÑALES: Los “ports” declarados dentro
    • de una entidad son señales.
      • 2 CONSTANTES: permiten definir valores permanentes
      • 3 VARIABLES: utilizados solamente dentro de los procesos(instrucciones secuénciales).
      • 4 ARCHIVOS (FICHEROS)
  • La formula de declaraciòn de constantes,
  • variables y señales es:
  • Tipo_de_Objeto Nombre_de_Objeto Tipo_de_Dato:=Valor Inicial
  • Por ejemplo:
  • SIGNAL nodno1: BIT:='1';
  • VARIABLE var1:BIT;
  • CONST pi: REAL:=3.14159;

Señales

  • Son objetos que permiten simular la interconexión de componentes dentro de la arquitectura de diseño.
  • Permiten representar entradas o salidas de entidades.

Señales

  • X0 y x1 no tienen asignada una terminal en la entidad de diseño (funcionan como un medio de interconexión).

Sintaxis general de una señal

  • signal id {,...} : tipo [:= expresion ];
  • port ( { id {, ...} : direccion tipo [:= expresion];}]
  • Signal Reloj : std _logic :='0';
  • signal Comparacion: bit;
  • signal Resultado : integer range 0 to 7;
  • port ( a,b : in integer range 0 to 7;
  • c : out integer range 0 to 7;
  • d : inout std_logic );

Señales

  • Forma de declarar una señal:
  • signal identificator: tipo: [rango];
  • Ejemplo:
  • signal vcc: bit: ´1´;
  • signal suma: bit_vector: (3 downto 0);

Señales

  • las señales pueden declararse en una entidad, en una arquitectura o en un paquete.
  • si se quiere inicializar una señal hay que indicar un valor en [:=expression]
  • por ejemplo: signal s: bit:='1';
  • de otra manera, el valor es inicializado al valor mas bajo del tipo de variable definido.

Señales

  • Escalar: signal name(s):=type [range_contraint][:=expression];
  • Vectorial: signal name(s): array_type[index_constraint] [:=expression];
  • Entidad: port (name(s): direction type [range_constraint][:=expression]);

Señales

  • Ejemplos:
  • signal count: integer range 1 to 50; (el valor inicial será 1)
  • signal GROUND: BIT:='0';
  • signal YS_BUS std_logic_vector (7 downto 0);
  • port (B,A: in integer range 0 to 9);
  • signal bogus: bit_vector; (Errónea, no hay dimensión)

Driver de señal

  • Un conductor (driver) para una señal se define por el proceso que asigna valores a la señal.
  • Los valores que viajan por los caminos de datos en un tiempo dado están contenidos en dicho conductor, el cual consta de una colección de parejas (tuplas) valor/tiempo llamadas transacciones.

Asignación múltiple o concurrente

  • Los “conductores” son creados por sentencias de asignación de señales.
  • Una asignación concurrente de señal dentro de una arquitectura produce un “conductor” para cada asignación de señal. Asignaciones múltiples producirán “conductores” múltiples de señal.

Creación de un driver

  • ARCHITECTURE t1 OF d1 IS
  • BEGIN
  • a <= b AFTER 10 ns ;
  • a <= c AFTER 10 ns ;
  • END t1;

Función de resolución

  • La señal ´”a” está siendo manejada por dos fuentes, b y c.
  • Cada asignación concurrente creará un conductor para la señal a, esto no es admitido a menos que se defina una función de resolución (resolved signals).
  • La forma en que esto se resuelve queda a cargo del diseñador.

Atributos función de las señales

  • S´EVENT Retorna verdadero si ocurrió un evento en S durante el corriente delta, de lo contrario devuelve falso.
  • S´ACTIVE Retorna verdadero si ocurrió una transición en S durante el corriente delta, else falso.
  • S´LAST_EVENT Retorna el tiempo transcurrido desde la transición previa de la señal S.
  • S´LAST_VALUE Retorna el valor previo de S antes del último evento.
  • S´LAST_ACTIVE Retorna el tiempo transcurrido desde la transacción previa de la señal.

Señales de tipo definido

  • Habiendo definido el tipo, podemos definir señales de este tipo. Aquí hemos declarado la señal STATE de tipo MY_STATE. Debemos observar las reglas estrictas cuando usemos estas señales: no podemos asignar nada a la señal STATE que no sea del tipo MY_STATE
  • type MY_SATE is
  • (RESET, IDLE, RW_CYCLE, INT_CYCLE);
  • Signal STATE: MY_STATE;
  • Signal TWO_BIT: bit_vector (0 to 1);
  • STATE<=RESET;
  • STATE<=“00”;
  • STATE<=TWO_BIT;

CONSTANTES

  • Una constante es un objeto que se inicializa
  • a un determinado valor y no puede ser cambiado una vez inicializado.
  • Sintaxis general de una constante constant id {,...} : tipo [:= expresion];

Ejemplos

  • Constant Pi: real : =3.1415;
  • constant BitsPalabra : integer :=8;
  • constant NumPalabras : integer :=64;
  • constant NumBits : integer :=BitsPalabras * NumPalabras;
  • constant RetardoAND2 , RetardoOR2 : time := 2 ns

VARIABLES

  • Una variable es un objeto que se inicializa a un
  • determinado valor y a diferencia de una constante
  • su valor puede ser alterado en cualquier instante.
  • Sintaxis general de una variable variable id {,....} : tipo [expresion];

Ejemplos

  • Variable Indice1, Indice2, Indice3 : integer := 0;
  • variable Comparacion : boolean;
  • variable Resultado : real;
1   2   3   4   5   6


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal