iv vhdl basics

Upload: gabriel-rivera-morales

Post on 10-Jan-2016

19 views

Category:

Documents


0 download

DESCRIPTION

una buena presentación sobre vhdl

TRANSCRIPT

Slide 1

Desarrollo de Sistemas Digitales:Principios Bsicos de VHDL Mtro. Jess No Campos FavelaIntroduccinEl lenguaje de Descripcin de Hardware VHSIC (VHDL) es un lenguaje estndar utilizado para describir hardware desde un nivel de descripcin abstracto hasta uno concreto.

VHDL es el resultado de trabajos realizados por el departamento de defensa de los EUA durante los ltimos aos de la dcada de los 70s y principios de los 80s.

La raz de VHDL est en el lenguaje ADA.

El uso de VHDL se increment de manera exponencial durante los 80s, grandes consorcios especializados en el diseo de circuitos lgicos digitales lo adoptaron casi de inmediato.

En esta parte del curso veremos una breve introduccin al uso de VHDL en la descripcin y diseo de circuitos lgicos simples.

El diseo de circuitos lgicos ms complejos se ver ms adelante.

Revisiones de VHDLEn 1986, VHDL fue presentado y propuesto como un estndar a la IEEE, y no fue sino hasta diciembre de 1987 que la IEEE lo acept y lo public como el estndar IEEE 1076 1987.

Posterior a la publicacin del estndar IEEE VHDL ha tenido diferentes revisiones y actualizaciones:1164 (Actualizacin) sobre 1076 el cual define tipos lgicos std_logic y std_logic_vector

1993 (Revisin) Sintaxis ms consistente, agrega el operador xor, entre otras cosas.

2000 (Revisin) Introduccin de tipos protegidos

2002 (Revisin) Reglas sobre puertos buffer menos restrictivas.

2008 (Revisin) Entre otras cosas, introduce el uso de seales externas (external signals)

Terminologa de VHDLEntidad (entity)Es el bloque de construccin bsico en un diseo, esto es, el que.

Todos los diseos se expresan con entidades.

Puede estar relacionada con otras entidades formando jerarquas de entidades, donde la entidad superior o raz se denomina como entidad tope (top-entity).

Las entidades tope tendrn entonces entidades subordinadas (sub-entity).

Arquitectura (architecture)Describe el comportamiento de la entidad, esto es, el como.

Todas las entidades que pueden simularse poseen arquitectura.

Una entidad puede tener mltiples arquitecturas.

Una arquitectura puede ser conductual (behavioural), estructural (estructural) o de flujo de datos (dataflow).

En una entidad, una arquitectura puede ser conductual mientras que las otras arquitecturas pueden ser estructurales o de flujo de datos.

Terminologa de VHDL (Cont.)Configuracin (configuration)Relaciona un componente a una entidad y una arquitectura en particular de esa entidad, esto es, el que y como.

Es como listar las partes que se utilizarn en un diseo.

Especifica que comportamiento utilizar para cada entidad en el diseo.

Paquete (package)Una coleccin de tipos de datos y subprogramas que se usan en un diseo.

Es como una caja con herramientas que se utilizarn en un diseo.

Manejador (driver)La fuente de una seal.

Si una seal es manejada por dos fuentes, entonces cuando ambas fuentes estn activas, la seal tendr dos manejadores.

Grupo (bus)Un grupo de seales que en VHDL puede ser que sus manejadores estn desactivados.

Terminologa de VHDL (Cont.)Atributo (attribute)Datos que estn definidos en objetos VHDL (como signal, event, etc.).

Genrico (generic)Un trmino VHDL para un parmetro que provee informacin a una entidad.

Por ejemplo, si una entidad es el modelo de una compuerta con retardos en su flanco de subida y bajada en la salida entonces se le puede pasar los valores para estos retardos al instanciarla.

Proceso (process)Es la unidad bsica de ejecucin en VHDL.

Todas las operaciones en una simulacin de una descripcin VHDL se realiza en uno o mltiples procesos.

Descripcin de Hardware con VHDLentityEspecifica el nombre de una entidad, los puertos de la entidad e informacin relacionada con la entidad.

Sintaxis:entity identificador_entidad is generic (lista de genricos); port (lista de puertos);end [entity] identificador_entidad;

Donde:identificador_entidad: es el nombre que se le asignar a la entidad. Ejemplos: AND_GATE, HALF_ADDER, Multiplexer, etc.

lista de genricos: una lista separada por punto y coma1 de identificador: tipo := valor; que se pueden utilizar en la arquitectura de una entidad o componente. Ejemplo:generic (DELAY : time := 1 ns);

lista de puertos: una lista separada por punto y coma1 de identificador: modo tipo; los cuales describen la interfaz de entrada o salida de la entidad. Ejemplo: port (d : in std_logic; q : out std_logic);1 El ltimo elemento de la lista no se delimita con punto y coma.entityEjemplo: Una compuerta AND de dos entradas.

Si algunos puertos son del mismo tipo y modo entonces se pueden declarar en una misma lnea. Ejemplo:

Si es necesario declarar un parmetro genrico, entonces:

Observe que generic est antes de port, entity AND_GATE is port (a : in std_logic; b : in std_logic; c : out std_logic );end AND_GATE; entity AND_GATE is port (a, b : in std_logic;c : out std_logic);end AND_GATE; entity AND_GATE is generic (delay_time: time := 2ns); port (a, b : in std_logic;c : out std_logic);end AND_GATE; Modos y Tipos en VHDLModosModoDescripcin inPuertos en este modo solo se pueden leer y su manejador (fuente) es externo a la entidad. Su principal uso es para pasar seales de control y datos en una sola direccin hacia la arquitectura de la entidad. outPuertos en este modo son de escritura y su fuente es interna a la entidad, bsicamente son actualizados desde su(s) arquitectura(s). Su uso es para propagar valores hacia afuera de la entidad.inoutPuertos en este modo se pueden tanto leer como escribir hacia y desde la entidad. Estos son puertos tri-estado, esto es, tienen asociado un comportamiento en el que pueden leerse o escribirse o ninguno de los dos dependiendo de una entrada de control. Pueden tener mltiples fuentes.buffer*Puertos en este modo pueden leerse y escribirse. A diferencia de inout estos puertos no son tri-estado y solamente se pueden actualizar por una fuente.linkage*Puertos en este modo se pueden leer y escribir. * No se consideran en este curso.Modos y Tipos en VHDLTipos pueden ser definidos por el usuario o ya predefinidos en VHDL.TipoDescripcin bitSolo puede representar 1 o 0. bit_vectorUn vector (arreglo) de valores del tipo bit. Ejemplo bit_vector (0 to 7)std_logic, std_ulogic, std_logic_vector, std_ulogic_vectorPueden representar uno de los siguientes 9 valores los cuales representan la fortaleza (amplitud) de la seal:U Uninitialized Z High Impedance - Dont careX Forcing Unknown W Weak unknown 0 Forcing 0 L Weak 01 Forcing 1 H Weak 1booleanSolo puede representar true o false.integerPuede representar un rango de valores enteros. realPuede representar un rango de valores reales.characterPuede representar cualquier carcter imprimible.timeSolo puede representar tiempo.architectureDefine el cuerpo de una entidad, esto es, contiene la definicin del comportamiento de una entidad.

Sintaxis:arquitecture id_arquitectura of id_entidad is -- declaraciones de la arquitectura -- declaracin de componentes -- declaracin de seales -- declaracin de constantes -- declaracin de funciones -- declaracin de procedimientos -- declaracin de tipos begin -- Sentencias que ejecutar la arquitectura -- declaracin de proceso (process) -- instanciamiento de componentes -- asignacin de seales con expresiones lgicas end [arquitecture] id_arquitectura;

architectureEjemplo: El comportamiento de la entidad AND_GATE

architecture arch_and of AND_GATE isbegin c