Vhdl introduccion



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

VHDL

INTRODUCCION

  • Se estudiará como VHDL es usado en proyectos de diseño.
  • Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el lenguaje.
  • Se aprenderán sus elementos básicos, sus ventajas y sus desventajas.
  • Se discutirán los principales conceptos del lenguaje y los principales constructos.

DEFINICION

  • VHDL es un doble acrónimo:
  • Very High Speed Integrated Circuit.
  • Hardware Description Languaje.
  • Fue desarrollado a principios de los 80´s para el departamento. de los EEUU, como una implementación, realizada por computadora para describir sistemas electrónicos.

En 1987 es Estandarizado por la IEEE (Std 1076)

  • En 1987 es Estandarizado por la IEEE (Std 1076)
  • 1993: Una nueva versión fue definida.
  • Para los constructos comúnmente usados hay pocas diferencias entre las dos versiones.

VHDL permite

  • VHDL como lenguaje de alto nivel permite:
  • El modelado de ensambles electrónicos complejos.
  • La simulación de los modelos de componentes.
  • La síntesis lógica.
  • La portabilidad entre herramientas de síntesis y entre arquitecturas.

VHDL permite

  • Definir los “ports” de entrada y salida del conjunto lógico descripto (entity).
  • Definir una arquitectura usando el juego de instrucciones soportado por las herramientas de síntesis (escritura RTL).
  • Unir los diferentes módulos descritos separadamente (VHDL estructural)

EL PROCESO DE DISEÑO ELECTRONICO

LIMITACIONES

  • VHDL es principalmente un lenguaje para diseño digital. Actualmente tiene capacidades muy limitadas en el área analógica, pero existen trabajos para crear una versión analógica del lenguaje.
  • El estándar 1076 define un estándar y su sintaxis, sin describir ningun “estilo” para usarlo en un diseño. Hay otros estándares que usan, o que requieren definir un “estilo” antes de usar el lenguaje en ciertas áreas.

VENTAJAS

  • Notación formal: permite su uso en cualquier circuito electrónico.
  • Disponibilidad pública: no esta sometido a una patente o fábrica.
  • Independencia Tecnológica: soporta varias tecnologías de diseño y distintas funcionalidades.
  • Capacidad descriptiva: Permite el diseño en varios niveles de abstracción
  • Reutilización de Código: Sin importar la tecnología (CMOS, Bipolar, etc.) o la implementación (FPGA, PLD, etc.)

SOPORTE PARA LENGUAJE DE SINTESIS

  • Solo es posible sintetizar lógicamente desde un subgrupo del lenguaje de VHDL. Cada compañia tiene su herramienta que tienen su propio subgrupo ligeramente distinto de los demás.

SINTAXIS

      • Los archivos VHDL llevan la extensión “----.VHD
      • Minúsculas y mayúsculas no son diferenciadas en VHDL. Un objeto puede ser indiferentemente llamado:
      • MODULE, Module, moDulE o module
        • Lo mismo ocurre con las palabras clave.
        • Los comentarios pueden ser colocados en cualquier lugar dentro del código.
        • Ellos no afectan en nada los resultados de síntesis ni de simulación.
        • EJEMPLO:
        • - - este es un comentario
        • archtecture ARCHI of EJEMPLO is -- este también
        • begin
        • Los archivos VHDL llevan la extensión “----.VHD”

SINTAXIS

  • Separadores: los separadores utilizados son:
  • “ ; ” (Punto y coma, entre dos declaraciones o al fin de una instrucción).
  • “ , “ (coma, entre dos nombres de señal dentro de una misma declaración).
  • “ : “ (dos puntos, dentro de una declaración entre el nombre de un objeto y su tipo).
  • “ “ (espacio).
  • El número de espacios entre dos palabras es indiferente, siempre que el mínimo sea respetado.
  • Retorno carro: Una misma instrucción o declaración puede ser escrita en varias líneas consecutivas.
  • Los comentarios pueden ser insertados al final de las líneas sin afectar la integridad del código.
  • A_IN, B_IN : in bit; - -puede también escribirse :
  • -- A_IN,
  • --B_IN : in bit;

CONCEPTOS

SINTESIS

  • Proceso de transformar instrucciones lógicas de software en circuitos hardware que desarrollen estas instrucciones.

ABSTRACCION

  • Cada abstracción define los detalles del diseño especificados en una descripción particular de el.
  • Los diferentes estilos de escribir código VHDL tienen que ver con la abstracción.

NIVELES DE ABSTRACCION

  • LAYOUT: Especifica información acerca de la verdadera implementación del diseño en silicio.
  • LOGICO: se interconectan compuertas lógicas y registros.
  • RTL: (transferencia de registros):se define cada registro en el diseño, y la lógica entre ellos.
  • COMPORTAMIENTO: describe la función del diseño, sin especificar la arquitectura de los registros.

SENTENCIAS

  • CONCURRENTES
  • ocurren en paralelo
  • SECUENCIALES
  • se ejecutan una después de la otra.

FUNCION

  • Es una rutina que hace una tarea particular.
  • Cuando el programa pasa el control a una función.
  • Ésta realiza la tarea y devuelve el control a la instrucción siguiente a la que llamo.
  • Ejecutan esta tarea utilizando valores específicos, denominados argumentos, en un orden determinado.
  • Los argumentos pueden ser números, texto, valores lógicos como VERDADERO o FALSO, matrices, valores de error (con #N/A ) o referencias de celda.
  • El argumento que se designe deberá generar un valor válido para el mismo. Los argumentos pueden ser también constantes, fórmulas u otras funciones.

PRODECIMIENTO

  • Su interés radica en las acciones que se realizan durante su invocación.
  • Siempre se invocan de forma aislada.
  • Ejemplo:
  • println(...)
  • Éste siempre se invoca en forma aislada.
  • Las acciones que realiza la invocación de println consisten en desplegar en pantalla el argumento que recibe. Es ilegal escribir asignaciones como:
  • x= println( ... ); porque println no retorna ningún valor.

DIFERENCIA ENTRE PROCEDIMIENTO Y FUNCION

  • La diferencia entre un procedimiento y una función es que la función regresa al termino de la ejecución un valor específico

PROCESO

  • El proceso es una parte del código VHDL dentro del cual las sentencias se ejecutan en secuencia. Un proceso existe dentro de una arquitectura, y múltiples procesos interactúan unos con otros de manera concurrente.
  • Hay procesos:
    • combinatorios
    • sÍncronos

PROCESO

  • Un proceso es una parte de código en la cual las instrucciones se ejecutan en secuencia.
  • Una arquitectura puede contener varios proceso . Todos los proceso se ejecutan en paralelo.
  • El orden de escritura de las instrucciones afecta los resultados de simulación y síntesis.

Sintaxis del Proceso

  • Mux: process (A,B,SEL)
  • begin
  • if SEL = '1' then
  • Z <= A;
  • else
  • Z <= B;
  • end if;
  • end process MUX;
  • Sentencias secuenciales
  • Etiqueta
  • Lista de sensitividad

Eventos en la lista de sensibilidad

  • Un proceso no se ejecuta continuamente, el proceso empieza a ejecutarse cuando una de las señales en su lista de sensibilidad cambia de valor o, en el lenguaje VHDL tiene un evento.
  • Mux: process (A,B,SEL)
  • begin
  • if SEL = '1' then
  • Z <= A;
  • else
  • Z <= B;
  • end if;
  • end process MUX;

Múltiples procesos concurrentes

  • Mientras que cada proceso ejecuta sus sentencias en secuencia, múltiples procesos interactúan con los demás de manera concurrente al producirse un evento en las señales de la lista de sensibilidad.
  • Proceso
  • Proceso
  • Proceso

Múltiples procesos en una arquitectura

  • architecture A of E is
  • begin
  • -- Sentencias Concurrentes
  • P1: process
  • begin
  • -- Sentencias Secuenciales
  • end process P1;
  • -- Sentencias Concurrentes
  • P2: process
  • begin
  • -- Sentencias Secuenciales
  • end process P2;
  • -- Sentencias Concurrentes
  • end A;
  • Proceso 1
  • Proceso 2

Ejecución de procesos

  • Concurrente: 2 drivers
  • architecture CONCURRENT of MULTIPLE is
  • signal Z,A,B,C,D: std_logic;
  • begin
  • Z <= A & B;
  • Z <= C & D;
  • end CONCURRENT;
  • ?
  • A
  • B
  • C
  • D
  • Z

Ejecución de procesos

  • Cuando estas 2 señales son secuenciales, el valor con el cual la señal es actualizada es el último valor que se le asigna durante el proceso de ejecución.
  • Secuencial: 1 driver, última asignación
  • architecture SEQUENTIAL of MULTIPLE is
  • signal Z,A,B,C,D: std_ulogic;
  • begin
  • process (A,B,C,D)
  • begin
  • Z <= A & B;
  • Z <= C & D;
  • end process;
  • end SEQUENTIAL ;
  • C
  • D
  • Z

Señal actualizada cuando el proceso se suspende

  • Las señales asignadas dentro de un proceso son actualizadas hasta cuando el proceso termina y queda suspendido.
  • architecture SEQUENTIAL of MULTIPLE is
  • signal Z,A,B,C,D: std_ulogic;
  • begin
  • process (A,B,C,D)
  • begin
  • Z <= A & B;
  • Z <= C & D;
  • end process;
  • end SEQUENTIAL ;

Noción de process

  • Un process es una parte de código en la cual las instrucciones se ejecutan en secuencia.
  • Una arquitectura puede contener varios process .
  • Todos los process se ejecutan en paralelo.
  • El orden de escritura de las instrucciones afecta los resultados de simulación y síntesis.

Implementación de Procesos

  • Lógica combinatoria.
  • Lógica sincrónica.
  • Lógica sincrónica con inicialización asincrónica.
  • Procesos dormidos, se les llama así a los procesos mientras
  • las señales que los activan no cambian su estado.

Estructura de Proceso

  • [ etiqueta: ] process ( lista de sensibilidad )
  • -- declaraciones
  • -- variables eventuales
  • Begin
  • -- parte operatoria
  • -- instrucciones secuenciales
  • -- (if, case, loop)
  • End process;
  • Lista de sensibilidad, cambia la asignación de señales asignadas en el proceso.

Metodología de Procesos.

  • Lista de sensibilidad consistente.
  • Dominación de comportamiento e implementación de la lógica.
  • Diseños sintetizados, sin asincronismos.

Proceso Combinatorio

  • [ etiqueta: ] process ( lista de sensibilidad )
  • -- declaraciones
  • Begin
  • -- instrucciones secuenciales
  • -- (if, case, loop)
  • End process [ etiqueta];
  • Lista de sensibilidad con señales que activan el proceso.
  • Parte declaratoria que puede contener variables.
  • Variable con ámbito de proceso.

Ejemplo Combinatorio.

  • Mux: process (A, B,SEL )
  • Begin
  • if SEL=‘0’
  • then SALIDA<=A;
  • else SALIDA<=B;
  • end if;
  • End process;

Estructura Proceso Síncrono

  • [ etiqueta: ] process
  • -- declaraciones
  • Begin
  • wait until (CK’ event and CK=‘1’);
  • End process [etiqueta];
  • El flanco de subida provoca el cambio en el estado.
  • wait until evalúa la condición.

Ejemplo síncrono.

  • Process
  • Begin
  • wait until ( CK’ event and CK=‘1’ );
  • COUNT <= COUNT + 1;
  • End process;
  • COUNT es construida por flip flops
  • No debe haber señales combinatorias.

Proceso Síncrono

  • [ etiqueta: ] process ( CK )
  • -- declaraciones
  • Begin
  • if (CK’ event and CK=‘1’)
  • then --instrucciones secuenciales.
  • end if;
  • End process [etiqueta];

Proceso Síncrono con Inicialización Asíncrona

  • [ etiqueta: ] process ( CK , RST)
  • -- declaraciones
  • Begin
  • if RST=‘1’
  • then --acción asíncrona
  • elseif (CK’ event and CK=‘1’)
  • then --instrucciones secuenciales.
  • end if;
  • End process [etiqueta];
  • Cambio de prioridad por condición asíncrona

Ejemplo Síncrono

  • Process ( CK )
  • Begin
  • if ( CK’ event and CK=‘1’ )
  • then COUNT <= COUNT + 1;
  • end if;
  • End process;
  • COUNT es construida por flip flops
  • Todas las señales deben ser combinatorias.

SENSITIVIDAD

  • La sensitividad es el conjunto de entradas de un bloque que cada vez que tengan un cambio en su estado activan el sistema y producen una salida.
  • Lista de Sensitividad
  • MUX: process (A , B, SEL)
  • begin
  • if SEL = '1' then
  • Z <= A;
  • else
  • Z <= B;
  • end if;
  • end process MUX;
  • SEL
  • A
  • B
  • Z
  • Lista de Sensitividad
  • MUX: process (A , B)
  • begin
  • if SEL = '1' then
  • Z <= A;
  • else
  • Z <= B;
  • end if;
  • end process MUX;
  • Falta SEL
  • SEL
  • A
  • B
  • Z
  • Variables y Señales:
  • Las Señales:
  • Objetos que pueden ser declarados en el interior de una entidad (ports) o de una arquitectura (señales internas).
  • La asignación de un valor a una señal se hace con un retardo (infinitesimal).
  • Variables
  • Son objetos que pueden ser declarados dentro de un process (u otras entidades secuenciales).
  • Entity SIG is
  • port ( A, B, C, CK : in std_logic; S, T: out std_logic );
  • End SIG;
  • Architecture ARCHI of SIG is signal TMP : std_logic;
  • begin
  • process
  • begin
  • wait until CK’event and CK = ‘1’ ;
  • TMP <= A or B; -- Esta línea será ignorada
  • S <= TMP;
  • TMP <= A and C; -- anula la asignación precedente
  • T <= TMP; -- sobre la señal TMP
  • end process;
  • End ARCHI;
  • Ejemplo sobre las señales:
  • Entity VAR is
  • port ( A, B, C, CK : in std_logic; S, T: out std_logic );
  • End VAR;
  • Architecture ARCHI of VAR is
  • begin
  • process
  • variable TMP : std_logic;
  • begin
  • wait until CK’event and CK = ‘1’ ;
  • TMP := A or B;
  • S <= TMP;
  • TMP := A and C;
  • T <= TMP;
  • end process;
  • End ARCHI;
  • Ejemplo utilizando una variable:
  • Instrucciones secuénciales: frecuentemente utilizadas.
  • -IF…THEN… ; [ELSIF… THEN…];[ELSE…]; END IF;
  • Similar a la asignación de señales por selección.
  • -CASE … END CASE;
  • Similar a la asignación de señales por selección.
  • -FOR … LOOP END LOOP;
  • Similar a la instrucción FOR … GENERATE
  • if CONDITION then
  • --- Sentencias secuenciales
  • else
  • --- Sentencias secuenciales
  • end if;
  • Estructura if – elsif.
  • if CONDITION then
  • --- Sentencias secuenciales
  • elsif CONDITION then
  • --- Sentencias secuenciales
  • elsif CONDITION then
  • --- Sentencias secuenciales
  • .
  • .
  • .
  • else
  • --- Sentencias secuenciales
  • end if;
  • IF-ELSIF
  • El orden de las sentencias en la estructura if-elsif es muy importante. Más de una condición puede ser verdadera, y es la primera condición verdadera la que provoca que se ejecuten el grupo de sentencias que le siguen
  • if CONDITION then
  • -- sentencias secuenciales
  • elsif CONDITION then
  • -- sentencias secuenciales
  • elsif CONDITION then
  • -- sentencias secuenciales
  • else
  • -- sentencias secuenciales
  • end if;
  • Ejemplo de IF-ELSIF
  • process (A,B,C,X)
  • begin
  • If (X=“0000”) then
  • Z<=A;
  • elsif (X<=“0101”) then
  • Z<=B;
  • else
  • Z<=C;
  • end if;
  • end process;
  • Si X tiene el valor “0000”, la condición X=0000 es probada primero, entonces a Z se le asigna el valor de A.
  • IF… THEN… ;[ELSIF… THEN…];[ELSE…]; END IF;
  • Sintaxis:
    • Todo IF debe terminarse por END IF.
    • IF esta en general seguido por ELSE
    • Varios IF pueden estar enlazados.
    • La contracción ELSIF permite simplificar la escritura
  • process (A,B,C,D,SEL)
  • begin
  • If SEL = “00” then MUX <=A;
  • else if SEL = “01” then MUX <= B;
  • else if SEL = “10” then MUX <=C;
  • else MUX <=D;
  • end if;
  • end if;
  • end if;
  • end process;
  • process (A,B,C,D,SEL)
  • begin
  • If SEL = “00” then MUX <=A;
  • elsIf SEL = “01” then MUX <=B;
  • elsif SEL = “10” then MUX <=C;
  • else MUX<=D;
  • end if;
  • end process;
  • Ejemplo 2 de IF-ELSIF
  • Utilización de Clock_Enable
  • architecture ARCHI of SECUENCE is
  • begin
  • process
  • begin
  • wait until CK’event and CK = ‘1’ ;
  • If ENABLE = ‘1’ then COUNT<=COUNT+1;
  • end if;
  • end process;
  • end ARCHI;
  • architecture ARCHI of SECUENCE is
  • begin
  • process(CK)
  • begin
  • if CK’event and CK = ‘1’ then
  • If ENABLE = ‘1’ then COUNT<=COUNT+1;
  • end if;
  • end process;
  • end ARCHI;
  • Utilización de Clock_Enable
  • Riesgos de inserción de lógica combinatoria en la línea del reloj

GESTION DE LA JERARQUIA

Modelo de un proceso

  • El modelo de simulación en VHDL consiste de múltiples procesos que se encuentran ejecutándose secuencialmente.
  • Proceso
  • ____
  • ___
  • ____
  • __
  • ___
  • ____
  • Proceso
  • ____
  • ___
  • ____
  • __
  • ___
  • ____
  • Proceso
  • ____
  • ___
  • ____
  • __
  • ___
  • ____

Concurrentes vs. Secuencial

  • Este modelo puede tener cualquier numero de procesos.
  • El proceso es visto como una sola sentencia concurrente.
  • Se puede tener n número de sentencias concurrentes y por lo tanto cualquier número de procesos.
  • architecture A of E is
  • begin
  • -- concurrent statements
  • P1: process
  • begin
  • -- sequential statements
  • end process P1;
  • -- concurrent statements
  • P2: process
  • begin
  • -- sequential statements
  • end process P2;
  • -- concurrent statments
  • end A;

Asignación de señales en un proceso

Procesos concurrentes: múltiples drivers.

  • Architecture CONCURRENT of MULTIPLE is
  • signal A, B, C ,D : std_ulogic;
  • signal Z : std_logic;
  • Begin
  • Z <= A and B;
  • Z <= C and D;
  • End CONCURRENT;
  • Tenemos dos asignaciones a la señal Z, realizadas fuera de un proceso. Las sentencias fuera de un proceso son concurrentes y por lo tanto Z tiene dos drivers
  • ?
  • ?
  • A
  • B
  • C
  • D
  • Z

Dentro de un proceso: un solo driver.

  • Dentro de este ejemplo similar, las dos asignaciones a Z se encuentran dentro de un proceso. (Un proceso puede definir únicamente un driver en una señal)
  • architecture SEQUENTIAL of MULTIPLE is
  • signal Z, A, B, C, D : std_ulogic;
  • begin
  • process(A, B, C, D)
  • begin
  • Z <= A and B;
  • Z <= C and D;
  • end process;
  • end SEQUENTIAL;
  • C
  • D
  • Z

Última asignación

  • El lenguaje define que en un proceso, la última asignación hecha a una señal tiene efecto, pero únicamente cuando el proceso se suspende (final del proceso)
  • architecture SEQUENTIAL of MULTIPLE is
  • signal Z, A, B, D : std_ulogic;
  • begin}
  • process (A, B, C, D)
  • begin
  • Z <= A and B;
  • Z <= C and D;
  • end process;
  • end SEQUENTIAL;
  • cuando se suspende
  • Tiene efecto

Diferente significado

  • Estas mismas dos sentencias tienen significado muy distinto, dependiendo si se ejecutan dentro o fuera de un proceso.
  • process (A, B, C, D)
  • begin
  • Z <= A and B;
  • Z <= C and D;
  • end process;
  • Architecture X of MULTIPLE is
  • begin
  • Z <= A and B;
  • Z <= C and D;
  • end X;
  • =

¿Llamadas a múltiples procesos?

  • Un proceso puede ser potencialmente ejecutado varias veces antes de que todas las señales sean actualizadas.

Ejemplo

  • SEÑALES ASIGNADAS DESPUES DE UNA LECTURA.
  • Tenemos un proceso con asignación a la señal M, y el valor de M es también leído en el proceso
  • B cambia de 0 a 1.
  • EJEMPLO: process (A, B, M)
  • begin
  • Y <= A;
  • M <= B;
  • Z <= M;
  • end process EJEMPLO;
  • A: 0
  • B:1
  • M:0
  • Z:0
  • Evento en B
  • Proceso llamado

Actualización de valores

  • Ejemplo: process(A,B,M)
  • begin
  • Y <= A;
  • M <=B;
  • Z <=M;
  • end process Ejemplo;
  • La asignación no es inmediata!
  • En este punto Z sigue teniendo valor 0!

Actualización de valores

  • A
  • B
  • M
  • Z
  • El proceso termina la primera ejecución
  • Z no ha sido actualizada!
  • T1process
  • T1process: Tiempo que tarda en ejecutarse el bloque “process”

A

  • Debido a que M ha cambiado de 0 a 1 (por la asignación M<=B), el proceso vuelve a ejecutarse
  • A
  • B
  • M
  • Z
  • T1process
  • Ejemplo: process(A,B,M)
  • Begin
  • Y <= A;
  • M <=B;
  • Z <=M;
  • end process Ejemplo;
  • Segunda ejecución del proceso
  • Al ejecutarse esta línea Z no es afectada!

Actualización de valores

  • A
  • B
  • M
  • Z
  • T1
  • process
  • Termina la segunda ejecución del proceso
  • T2
  • process

ENTRADA Y SALIDA

Definición de entrada/salida

  • Se necesitan dos pasos para definir las entradas/salidas.
    • A) El tipo buffer (entrada, salida, tres estados ,etc.)
    • B) La asignación de pins (pin particular del circuito)

Definición del tipo en el código

  • Inferir o instanciar la entrada y salida.
  • La herramienta de síntesis Xilinx es capaz de inferir automáticamente los tipos de entrada/salida.

Jerarquía separada para entrada/salida

  • Existen herramientas que no infieren en la entrada/salida básica.
  • Para poder instanciarlos consultar el manual de uso del fabricante.
  • Instanciación de los
  • componentes
  • de la lógica del núcleo
  • Buffer E/S
  • Nivel Superior

Definición del tipo en la herramienta de síntesis

  • Se puede realizar de forma separada la definición de entrada/salida.
  • Se selecciona los tipos de buffer y se asignan a los puertos de la lógica del núcleo.

Asignación de los pins de entrada/salida

  • Asignación de pins en las Herramientas de Foundation.
  • User Control File (.UCF)
  • Con las herramientas de Xilinx, la asignación de los pins es a través del archivo (.UCF).

Tres estados y entrada/salida bidireccional

  • Dentro de la familia Xilinx es capaz de soportar entrada/salida bidireccional, de tres estados o con registros, etc.

Salida de 3 estados

  • Las herramientas de síntesis tienen la habilidad de inferir automáticamente celdas de entrada/salida tanto salidas de 3 estados como bidireccionales.
  • Código VHDL
  • Síntesis
  • OUT
  • IN
  • EN
  • OUT
  • EN
  • ‘Z’
  • ‘Z’

Estilo de código para inferir 3 estados.

  • El uso de la asignación de Z es la que permite a la herramienta de síntesis inferir en el buffer de tres estados.
  • if (EN = ‘0’) then
  • OUT_PAD <= BUS_OUT;
  • else
  • OUT_PAD <= ‘Z’;
  • end if;
  • Síntesis
  • BUS _OUT
  • OUT_PAD
  • EN

Código para inferir entradas y salidas bidireccionales

  • CORE_IN <= BIDI;
  • process (CORE_OUT, BIDI)
  • if (EN=‘0’) then
  • BIDI <= CORE_OUT;
  • else
  • BIDI <= ‘Z’;
  • end if;
  • end process;
  • Síntesis
  • BIDI
  • EN
  • CORE_OUT
  • CORE_IN
  • Sentencia concurrente
  • Uso de la asignación al valor Z

Entrada/Salida con registro

  • La implementación es automática utilizando un registro en la celda de entrada/salida apropiada si esta disponible.
  • Debe soportar el uso implícito de enable y reset síncronos en la celda.
  • CLK
  • D
  • Q
  • Terminal de Salida

Inserción de registros durante MAP

  • Además las herramientas de implementación de Xilinx tiene un interruptor que les permite poner registros en las celdas de entrada/salida donde sea apropiado.

Pull-up

  • Xilinx en su mayoría de dispositivos permite el uso de pull-up/down, en las terminales de entrada/salida.

Requerimentos de ruteo especiales

  • En ocasiones, se requiere que las señales de reset y del reloj, tengan mejor velocidad y desempeño.
  • Sucede cuando alguna señal se distribuye en una red de elementos (alto fanout).
  • Si la herramienta de síntesis no infiere esta red, se debe especificar con STARTUP, una red llamada GSR (Global set/reset)

Redes para reloj

  • Al sintetizar Xilinx, instancia buffers globales automaticamente en redes de reloj.
  • Si esto no sucede, entonces debe instanciarse una celda de buffer global para manejar la red del reloj
  • Los Buffers Genéricos son:
  • XC3000 BUFG
  • XC5200 BUFG
  • XC4000E BUFGP,BUFGS

BUFG

  • Puede ser aplicado sobre un IBUF (buffer de entrada), o sobre redes internas que manejan señales de CLK.
  • El efecto que tiene es conectar una señal, por la ruta mas corta, a la red sobre la que se aplica el BUFG
  • Ejemplos:
  • BUFG = CLK: mapea hacia una línea global de reloj (GCK)
  • BUFG = OE: mapea hacia una línea global de control 3-estado.
  • BUFG = SR: mapea a una linea global de control set/reset

Sintaxis BUFG

  • attribute BUFG: string;
  • attribute BUFG of signal_name: signal is “{CLK|OE|SR|DATA_GATE}”;

Señales internas de 3 estados

  • El uso de buffers internos ayuda en ocasiones a simplificar el diseño
  • Estos buffers pueden ser implementados de tres maneras:
  • - tres estados
  • - and cableada
  • - or-and cableada
  • Para el uso de un mux 5-1, el uso de estos elementos simplifica el diseño

Mux 5-1 con Buffers internos

  • Xilinx infiere cuando instanciar automáticamente buffer, (BUFT)

Decodificadores amplios(Wide Edge Decoder)

  • En ocasiones es de mucha utilidad contar con un decodificador de direcciones, por ello Xilinx tiene circuiteria dedicada sobre el contorno del dispositivo, por lo que las señales de entrada pueden ser decodificadas. Estos decoficadores son implementados con celdas and y pull-up.
  • Existe el tipo WAND, que permite instanciar este tipo de decodificadores.

TIEMPO

  • VHDL nos permite modelar el tiempo, que es una parte importante al describir sistemas electrónicos.

ESTRUCTURA

  • Composición de elementos.

ENTIDAD

  • La entidad en VHDL describe la interfase de un bloque jerárquico, sin describir su comportamiento.
  • La entidad es equivalente a un “símbolo” en un diseño basado en una estructura esquemática.
  • Es la porción de código que permite definir en particular Entradas y Salidas

ENTIDAD: Informaciones Complementarias

  • Equivalente a símbolos en los esquemas.
  • Los “ports” de entrada/salida deben imperativamente estar declarados dentro de la entidad y definir su modo:
  • in, out, inout, buffer.
  • Modo por defecto:in
  • - Los “ports” pueden igualmente ser declarados en forma de “señales” simples (ej. Bit) o en forma de bus (ej: bit_Vector).

EJEMPLO DE ENTIDAD

  • Ejemplo:
  • entity Ejemplo is
  • port(
  • A,B:in bit_vector(7 downto 0);
  • SEL:in bit;
  • Mux_OR:out bit );
  • end Ejemplo;
  • Equivalencia Esquemática
  • Sel
  • Símbolo Ejemplo
  • B[7:0]
  • A[7:0]
  • MUX_OR

ENTIDAD: Sintaxis de declaración

  • entity EJEMPLO is
  • port(Lista puertos de entrada/Salida comprimiendo:
  • Nombre_de_señal:modo y tipo.);
  • end [EJEMPLO];
  • --Los corchetes “[]” indican que es opcional usar de
  • --nuevo el nombre de la entidad después de la palabra
  • -- clave end.
  • El nombre dado a la entidad puede ser cualquiera. (excepto las palabras reservadas).
  • Dar de preferencia el mismo nombre a la entidad y al fichero VHDL (En este caso EJEMPLO.vhd)
  • La lista de puertos está comprendida entre dos paréntesis y seguida de un punto y coma.
  • Nombre de la entidad opcional después de la palabra “end”.

ARQUITECTURA

  • Porción de descripción del comportamiento del dispositivo a sintetizar.
  • La arquitectura describe el comportamiento de la entidad.
    • Esta asociada a una entidad
    • (dentro del mismo fichero)
    • Posee una parte declaratoria y una parte operatoria.

Entidad y Arquitectura

  • Una entidad puede tener mas de una arquitectura.
  • Una aplicacion es útil, esto es cuando un diseño es descrito a varios niveles de abstracción: pueden existir descripciones a nivel de comportamiento, RTL y de compuertas, del mismo diseño, o varias formas de describir el mismo circuito.

PAQUETE

  • Un paquete tiene una colección de definiciones que pueden ser referenciados por varios diseños al mismo tiempo.

ARREGLOS

  • Son elementos del mismo tipo.
  • VHDL define dos tipo de arreglo estándar: bit_vector y string.
  • Un arreglo en VHDL tiene las siguientes tres características
  • 1.-El tipo de elementos en el arreglo (tienen que ser del mismo tipo)
  • 2.-La longitud de el arreglo
  • 3.-Los índices del arreglo
  • bit_vector representa un tipo especial de arreglo en el cual el numero de bits o la longitud del arreglo no es restringida y es puesta en la declaración del objeto
  • 1 2 3 4
  • Signal
  • C_BUS
  • 3 2 1 0
  • Signal
  • Z_BUS
  • Declaraciones legales
  • signal Z_BUS: bit_vector (3 downto 0)
  • signal C_BUS: bit_vector (1 to 4)
  • Declaraciones ilegales
  • signal Z_BUS: bit_vector (0 downto 3)
  • signal C_BUS: bit_vector (3 to 0)

bit string literal.

  • Es una notación para especificar el valor de un bit_vector.
  • signal SIG_A: bit_vector (7 downto 0)
  • SIG_A <= B”1110_0011” --(22710)
  • SIG_A
  • 1 1 1 0 0 0 1 1
  • 7 6 5 4 3 2 1 0
  • B”11111010”
  • B”1111_1010”
  • B”11111010”
  • X”FA”
  • O”372”
  • B”011111010”
  • Designación Base
  • B Binaria
  • O Octal
  • X Hexadecimal

Asignación por posición.

  • Dos objetos de tipo arreglo pueden ser asignados uno al otro, mientras sean del mismo tamaño y del mismo tipo:
  • Notar que la asignación es por posición y no por número de índice. El concepto de bit más significativo no esta definido en VHDL.
  • signal Z_BUS: bit_vector(3 downto 0);
  • signal C_BUS: bit_vector(1 to 4);
  • Z_BUS(3) <= C_BUS(1);
  • Z_BUS(2) <= C_BUS(2);
  • Z_BUS(1) <= C_BUS(3);
  • Z_BUS(0) <= C_BUS(4);
  • Z_BUS <= C_BUS;
  • 3 2 1 0
  • Signal
  • Z_BUS
  • 1 2 3 4
  • Signal
  • C_BUS
  1   2   3   4   5   6


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

    Página principal