2.12k likes | 2.43k Views
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.
E N D
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) • 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)
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 PARALENGUAJE 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;
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.
CONCURRENTES ocurren en paralelo SECUENCIALES se ejecutan una después de la otra. SENTENCIAS
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; Etiqueta Lista de sensitividad Sentencias secuenciales
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 • Cuando estas 2 señales son concurrentes, definen 2 drivers sobre la señal Z. architecture CONCURRENT of MULTIPLE is signal Z,A,B,C,D: std_logic; begin Z <= A & B; Z <= C & D; end CONCURRENT; A B Z ? C D
Ejecución de procesos Secuencial: 1 driver, última asignación • 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. 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 Z D
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).
Ejemplo sobre las señales: 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 utilizando una variable: 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;
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
La Sentencia IF Sintaxis if- then – else. if CONDITION then --- Sentencias secuenciales end if; 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 if CONDITION then -- sentencias secuenciales elsif CONDITION then -- sentencias secuenciales elsif CONDITION then -- sentencias secuenciales else -- sentencias secuenciales end if; • 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