GESTION DE LA JERARQUIA

Slides:



Advertisements
Presentaciones similares
ESTRUCTURAS DE PROGRAMACIÓN
Advertisements

Lenguajes de Descripción de Hardware
Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Métodos de diseño en VHDL.
SENTENCIAS SECUENCIALES
Pipelines o canales de ejecución
ARQUITECTURA DE COMPUTADORES - INTRODUCCION
Autor: Sergio García López Director: Francesc Josep Sánchez i Robert
ADA: lenguaje de programación concurrente
Síntesis Lógica con HDL
Circuitos Digitales II
Introducción al VHDL VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables.
Estructura General de Un Programa Programación Estructurada
A Theory of Action for MultiAgent Planning Michael Georgeff.
Sistemas Sincrónicos vs. Asincrónicos
Estructuras de Control
Vhdl para síntesis Alfredo Rosado Muñoz Universidad de Valencia Ingeniería Electrónica Diseño de Circuitos y Sistemas Electrónicos.
Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid Bloque 1: Introduccion Unidad 1: Consideraciones acerca de la eficiencia.
Circuitos Digitales II TestBench, Generics, Generate y Más sobre Procesos Semana No.4 Semestre Prof. Gustavo Patiño Prof. Eugenio.
1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO 
Estructuras de Repetición
Laboratorio de Microprocesadores - ITBA -Daniel Jacoby 1 REV LABORATORIO DE MICROPROCESADORES Daniel A Jacoby Marzo 2008 Instituto.
VHDL.
Interfaces de entrada / salida
Interfases de Entrada / Salida
ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS
Capítulo.2 - Fundamentos del Lenguaje VHDL
CONCEPTOS FUNDAMENTALES FORMAS DE ALMACENAR INFORMACION UNIDAD BASE DE INFORMACION: BIT BYTE = 8 BITS UN KILOBYTE = 1024 BYTES UN MEGABYTE = 1024 KILOBYTES.
DSL Domain Specific Language (Lenguaje Especifico del Dominio)
Sistemas Concurrentes: programación concurrente
VHDL Breve introducción.
Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de.
Diseño lógico combinacional mediante VHDL
Sistemas Concurrentes: Conceptos fundamentales
Introducción Electrónica Digital
Diseño Lógico Combinacional con VHDL
VHDL El nombre proviene de VHSIC Hardware Description Language, donde VHSIC significa Very High Speed Integrated Circuits. Es un lenguaje formal de especificación.
Introducción a VHDL Agenda Un poco de historia Definiciones generales Entidades Arquitecturas Configuraciones.
Integración de entidades en VHDL
Librerías y packages (paquetes)
Capítulo.3 - Diseño Lógico Combinacional con VHDL
Modelo de 3 capas.
¿Qué es la Televigilancia? La televigilancia consiste en instalar cámaras de vídeo que pueden ser vistas a distancia a través de Internet lo que permite.
FPGA - Flujo de Diseño UBA - Sistemas Embebidos - FPGA – SoftCores – 2010 – Franco Ferrucci, Sebastián García.
LA ARQUITECTURA O LA FUNCIONALIDAD DEL SISTEMA DefiniciónDefiniciónDefinición Declaración y reglas sintácticas.Declaración y reglas sintácticas.Declaración.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 08.
Bases de datos distribuidas
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
Estructuras de Control
BANCOS DE PRUEBAS CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.
Diseño Lógico 2 Metodología de Diseño
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Máquinas de estado con VHDL
VHDL. Indice Sistemas Digitales - FIUBA VHDL Lenguajes descriptores de hardware VHDL - Introducción - Entidad de diseño (declaración de entidad y cuerpo.
NCO (Numerically Controlled Oscillator). NCO: Oscilador controlado numéricamente Aplicaciones Conversores digitales up/down PLLs digitales Sistemas de.
1 LENGUAJE DE DESCRIPCION DE HARDWARE ELECTRONICA DIGITAL NAYIBE CHIO CHO NAYIBE CHIO CHO.
Indirect Object Pronouns (IOP). What’s an IOP... An Indirect object is a noun or pronoun that answers the question to whom or for whom an action is done.
BANCOS DE PRUEBA CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.
Asignación de señales en VHDL. VHDL: Asignación de señales La asignación a una señal establece una o más transacciones sobre la misma Cada señal tiene.
U.M.S.A. ETN-601 Sistemas Digitales Decodificador 3 a 8 Aux. David Marza Herrera.
CONSIDERACIONES DE RUIDO EN SISTEMAS PCM ING. JAVIER GARCIA.
Hardware Description Language
Programación en VHDL.
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.
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.
ispLSI1032E- Estructura Disseny Electrònic Assistit per Ordinador
(Numerically Controlled Oscillator)
“SISTEMA DIGITAL PARA LA GESTIÓN DE BIBLIOGRAFÍA ACADÉMICA UES LA PAZ”
END.
Transcripción de la presentación:

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.

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 -- sequential statements end process P1; P2: process end process P2; -- concurrent statments end A;

Asignación de señales en un proceso

Procesos concurrentes: múltiples drivers. 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 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; A B ? ? Z C D

Dentro de un proceso: un solo driver. architecture SEQUENTIAL of MULTIPLE is signal Z, A, B, C, D : std_ulogic; begin process(A, B, C, D) Z <= A and B; Z <= C and D; end process; end SEQUENTIAL; 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) C D Z

Última asignación 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; 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) Tiene efecto cuando se suspende

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.

SEÑALES ASIGNADAS DESPUES DE UNA LECTURA. Ejemplo Proceso llamado 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. Evento en B EJEMPLO: process (A, B, M) begin Y <= A; M <= B; Z <= M; end process EJEMPLO; A: 0 B:1 M:0 Z:0

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

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

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

Actualización de valores B M Z T1 process T2 process Termina la segunda ejecución del proceso

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. Nivel Superior Instanciación de los componentes de la lógica del núcleo Buffer E/S

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 Código VHDL Las herramientas de síntesis tienen la habilidad de inferir automáticamente celdas de entrada/salida tanto salidas de 3 estados como bidireccionales. Síntesis EN EN OUT ‘Z’ IN OUT ‘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 EN BUS _OUT OUT_PAD

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; Sentencia concurrente Síntesis Uso de la asignación al valor Z EN BIDI CORE_OUT CORE_IN

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. D Q Terminal de Salida CLK

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)

XC3000 BUFG XC5200 BUFG XC4000E BUFGP,BUFGS 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).

A,B:in bit_vector(7 downto 0); SEL:in bit; Mux_OR:out bit ); 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; Sel Símbolo Ejemplo B[7:0] A[7:0] MUX_OR Equivalencia Esquemática

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 1 2 3 4 Signal C_BUS 3 2 1 0 Z_BUS 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 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)

Es una notación para especificar el valor de un bit_vector. bit string literal. 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” X”FA” O”372” B”011111010” Designación Base B Binaria O Octal X Hexadecimal Es una notación para especificar el valor de un bit_vector.

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); 3 2 1 0 Signal Z_BUS 1 2 3 4 C_BUS Z_BUS <= C_BUS; Z_BUS(3) <= C_BUS(1); Z_BUS(2) <= C_BUS(2); Z_BUS(1) <= C_BUS(3); Z_BUS(0) <= C_BUS(4);

Parte de un arreglo. (Slices) Una parte de un arreglo unidimensional, en general, y un bit_vector en particular puede ser referenciado, inclusive por un solo elemento. La dirección de esta parte (es decir, to o downto) debe corresponder con la dirección del arreglo declarado. signal Z_BUS: bit_vector(3 downto 0); signal C_BUS: bit_vector(1 to 4); Los slices de vectores de bit son útiles debido a que a menudo pueden ser vistos como colecciones de campos, donde cada campo lleva una pieza de información. Por ejemplo un vector de bit que represente la instrucción de una computadora puede contener un campo representando el tipo de instrucción. legal Z_BUS (3 downto 0) <=“00” C_BUS:(2 to 4) <= Z_BUS (3 downto 1); ilegal Z_BUS (0 to 1) <=“111”

Concatenación y agregados. Ahora se discuten dos conceptos conocidos como concatenación y agregado. Estos son dos métodos que sirven para asociar señales entre ellos y asignarlas a un arreglo de objetos.

Concatenación VHDL tiene la habilidad de asociar bits individuales y vectores para formar una estructura de arreglo. Esto es conocido como concatenación y utiliza el operador “ampersand” (&). Los ejemplos muestran que bits individuales y vectores de bits pueden ser concatenados para formar nuevos vectores signal Z_BUS: bit_vector(3 downto 0); signal A,B,C,D: bit; signal BYTE: bit_vector(7 downto 0); signal A_BUS: bit_vector(3 downto 0); signal B_BUS: bit_vector(3 downto 0); Z_BUS<= A & B & C & D BYTE<=A_BUS & B_BUS

Agregados. signal Z_BUS: bit_vector(3 downto 0); signal A,B,C,D: bit; Otro método de asignación a elementos de un arreglo es conocido como agregado. Un agregado esta contenido entre paréntesis y las asignaciones a cada elemento son separadas por comas. Z_BUS<=(A, B, C, D); Z_BUS(3)<=A; Z_BUS(2)<=B; Z_BUS(1)<=C; Z_BUS(0)<=D;

Especificando los elementos por nombre. Es posible asignar a los elementos de un arreglo por nombre o por posición. Este ejemplo demuestra que también un rango del arreglo puede ser asignado, siempre y cuando el mismo valor sea asignado a cada elemento del rango. signal X: bit_vector(3 downto 0); signal A,B,C,D: bit; signal BYTE:bit_vector(7 downto 0) X<= (3=>’1’, 1 downto 0 =>’1’, 2=>B) nombre rango

Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de un arreglo que no han sido especificados. Finalmente, no todas las herramientas de síntesis soportan el uso de agregados, por lo que puede ser necesario usar concatenación para realizar manipulaciones sobre arreglos. signal Z_BUS: bit_vector (3 downto 0); signal A,B,C,D: bit; signal BYTE:bit_vector(7 downto 0); X<= (3=>’1’, 1 =>’0’, others=>B)