SlideShare uma empresa Scribd logo
1 de 77
Instructores:  M.C. Heraclio Heredia Ureta  Dr. Modesto G. Medina Melendrez Instituto Tecnológico de Culiacán Departamento de Ingeniería Eléctrica-Electrónica Agosto de 2011 Curso: Programación en VHDL
1. Instalación de software MAXPLUS II. 2 . Estado actual de la lógica programable.  3. VHDL: su organización y arquitectura.  4. Diseño lógico combinacional mediante VHDL.  5. Diseño lógico secuencial con VHDL.  6. Integración de entidades en VHDL.  7.  Programación de PLDs CONTENIDO:
[object Object]
Pasos para instalar el software MAX+PLUS II  Student Edition Version 10.2 de Altera siga los siguientes pasos: 1. Presione la tecla bandera de Windows    junto con la tecla R. 2. Aparecerá la ventana de ejecutar, ahí escribes cmd y luego presionas aceptar. 3. Posteriormente, aparecerá la ventana de comandos de ms-dos, ahí presionas dir/p y enter. 4. Luego copias el número de serie del volumen del disco duro que aparecerá en la parte superior derecha de la ventana de comandos de ms-dos,  estos son 8 caracteres hexadecimales como por ejemplo BE1B-8965. 5. Este número de serie del volumen del disco duro lo necesitas para que te envíen la licencia del software MAX+PLUS II de Altera que lo tienes que solicitar de la página:  http://www.altera.com/support/licensing/lic-university.html 6. Seleccione la Versión 10.2 del Software MAX+PLUS II Edición Estudiantil y presione continuar.
Pasos para instalar el software MAX+PLUS II  Student Edition Version 10.2 de Altera siga los siguientes pasos (continuación): 7. Luego aparecerá una ventana donde se solicite el número de serie del volumen del disco duro, ingrésalo y presiona continuar.  8. Luego tienes que llenar algunos datos personales como son: Nombre, Apellido, Dirección, Ciudad, Estado, País, Código postal, Teléfono, y Correo Electrónico. Una vez llenado los datos presiona continuar. 9. Luego llena un formulario con las respuestas que tú consideres correctas y presiona finalizar. 10. A tu correo te llegará un archivo con el nombre license.dat, Lo descargas y lo guardas en el disco duro. 11. Luego instalas el software MAX+PLUS II de Altera ejecutando el archivo start.htm del libro Sistemas Digitales Principios y Aplicaciones versión 10 de Ronald J. Tocci, que les pase en una memoria.
12. Una vez abierta la página web, Presiona el botón Max+Plus II y luego instala la opción MAXplus_student102. 13. Se empezará a instalar el Max+Plus II 10.2. Una vez que lo instales el software, ejecútalo para que le des la ruta donde se encuentra el serial de la licencia. 14. Se recomienda que este archivo license.dat que te envían por correo lo guardes en el mismo directorio donde se encuentra el Max+Plus II. 15. Para darle la ruta de la licencia sigue estos pasos: a. Abre el Max+Plus II. b. Seleccione options de la barra de menus y luego license setup... c. Luego le das la ruta donde guardaste el archivo license.dat con la tecla    browse..., y luego la tecla ok. 16. Con este último paso finalizaste la instalación del Max+Plus II. Pasos para instalar el software MAX+PLUS II  Student Edition Version 10.2 de Altera siga los siguientes pasos (continuación):
2. Estado actual de la lógica programable.
2.1. Dispositivos lógicos programables (PLD).  La  integración  de  sistemas  se  ha  ido  superando  con  las nuevas tecnologías de fabricación.   Se han podido obtener componentes de mayor complejidad. El diseño ASIC (Circuitos Integrados de Aplicación Específica) domina la tendencia en aplicaciones a nivel microelectrónica, pero solo es conveniente con altos volúmenes de producción.  El desarrollo de sistemas complejos requiere bastante tiempo de desarrollo.  Una forma más rápida y directa es utilizar lógica programable. La lógica programable independiza el proceso de diseño del proceso de fabricación.
   Existe una gran variedad de dispositivos lógicos programables (PLDs).  PROM  Programmable Read-Only Memory.  PLA  Programmable Logic Array.  PAL  Programmable Array Logic.  GAL  Generic Logic Array.  CPLD  Complex PLD.  FPGA  Field Programmable Gate Array.  Los FPGAs y los CPLDs presentan las mismas ventajas que los ASIC pero con un menor costo. El diseño se basa en bibliotecas y mecanismos de mapeo de funciones.  La  implementación  requiere  una  fase  de  programación, generalmente rápida.
2.2. Dispositivos lógicos programables de alto nivel de integración.  Se  crearon  para  integrar  con  mayor  rapidez  una  mayor cantidad de dispositivos en un circuito (SOC-System on Chip). Permiten cambios en el diseño digital.  Un CPLD consiste de un arreglo de múltiples PLDs agrupados como bloques en un chip.  La  unidad  PI  (interconexión  programable)  se  encarga  de interconectar  los  bloques  lógicos  y  los  bloques  de entrada/salida.
El FPGA se basa en arreglos de compuertas.  Esta formado por arreglos de  bloques lógicos configurables  (CLBs),  que  se  comunican  entre  sí  y con  las  terminales  de entrada/salida.  Los  CLB  están  ordenados  en  arreglos  de  matrices programables. La comunicación se lleva a cabo por alambrados llamados canales de comunicación.
   Un  CLB  es  funcionalmente  completo,  ya  que  puede Implementar  cualquier  función  booleana  representada  en forma de suma de productos.  El diseño lógico dentro de un CLB se implementa con bloques generadores de funciones o LUTs (Look Up Table). La diferencia entre FPGAs y CPLDs radica en el número de flip-flops contenidos.  Características  CPLD  FPGA  Arquitectura  -Similar a un PLD.  -Similar a los arreglos de  compuertas.  -Más combinacional  -Más registros + RAM.  Densidad  -Baja a media  -Media alta.  Aplicaciones  -Contadores rápidos.  -Aplicaciones de  -Máquinas de estado.  Arquitecturas de computadora  -Lógica Combinacional.  -DSP.  -Diseños con registros.
2.3. Campos de aplicación de la lógica programable.     Los PLD sencillos se utilizan como remplazo de circuitos LSI y MSI.     Los  CPLD  y  FPGA  se  aplican  en  áreas  como:  telecomunicaciones,  computación,  redes,  medicina,  procesamiento  digital  de  señales,  multiprocesamiento  de datos,  microondas,  telefonía  celular,  filtros  digitales programables, entre otros.  Los CPLD se utilizan especialmente a nivel industrial. Los FPGA son recomendables en aplicaciones secuenciales complejas.
2.4. La lógica programable y los lenguajes de descripción en hardware (HDL).     En los 60s se desarrollaron:     IDL de IBM, TI-HDL de Texas Instruments, ZEUS de General Electric, entre otros, orientados al área industrial; éstos no estaban disponibles;     AHPL, DDL, CDL, ISPS, entre otros, orientados al área académica; éstos carecían de soporte y mantenimiento adecuado.     En los 80s surgieron VHDL, Verilog, ABEL 5.0, AHDL, entre otros.  En los 50s aparecieron los HDL como una opción para el desarrollo de sistemas complejos.
   El  departamento  de  defensa  de  Estados  Unidos  creó  el lenguaje VHDL, como parte del programa  “Very High Speed Integrated Circuits” (VHSIC).     En  1985  surgió  la  versión  7.2  definida  entre  el  gobierno, industrias y universidades.  En 1987 la IEEE publicó el estándar IEEEstd 1076-1987. En  1988,  VHDL  fue  reconocido  como  un  estándar  ANSI (American National Standards Institute).  En 1993 se adoptó el estándar adicional VHDL IEEE1164. Hoy en día VHDL se considera como el lenguaje estándar para la  descripción,  modelado  y  síntesis  de  circuitos  digitales  y sistemas complejos.  2.5. Historia del Desarrollo de la programación en VHDL
2.5. Historia del Desarrollo de la programación en VHDL Desarrollo de Lenguajes para Descripción de Hardware 1970’s  IDL/IBM, HDL/TI, ZEUS/GE  Desarrollo en Área Industrial AHPL, DDL, CDL, ISPS  Desarrollo en Área Académica 1980’s AHDL, ABEL, CUPL VHDL y Verilog Departamento de la Defensa de los E.U.A. Programa: Very High Speed Integrated Circuits (VHSIC) 1983    VHDL Desarrollo: IBM, Texas Instruments e Intermetrics 1987    VHDL’87 Estándar IEEE -1076 1993    VHDL’93 Estándar IEEE  - 1164
2.6. Ventajas de utilizar VHDL Adición de la extensión analógica (IEEE1076.1) que permite la especificación, simulación y síntesis de sistemas digitales, analógicos y mixtos Facilitar la Verificación/Prueba y puesta a punto del sistema a diseñar. Capacidad descriptiva del comportamiento del sistema en distintos niveles de abstracción: Algorítmico ,  RTL  ( Register  Transfer Logic)  o concurrente ,  estructural  (Lógico) , Netlist. Reutilización de Código Independencia de la Tecnología y Proceso de Fabricación (CMOS, Bipolar, BiCMOS) Independencia de la Metodología de Diseño (PLD’s, ASIC’s, FPGA’s) Independencia del Sistema de Desarrollo Disponibilidad al Público Notación Estandarizada Ventajas del VHDL
2.7.  Compañías de soporte en hardware y software.
3. VHDL: su organización y arquitectura
3.1. Unidades básicas de diseño.   La  estructura  general  de  un  programa  está  formada  por módulos o unidades. Existen cinco tipos:     Declaración de entidad ( entity declaration  );     Arquitectura ( architecture   );     Configuración ( configuration  );     Declaración del paquete ( package declaration  );     Cuerpo del paquete ( package body  ).  La  entidad,  el  paquete  y  la  configuración  son  unidades  de diseño primarias.  La  arquitectura  y  el  cuerpo  del  paquete  son  unidades  de diseño secundarias.  La entidad y arquitectura son indispensables en la estructura  de un programa.
3.2. Entidad.  Una entidad ( entity  ) es el bloque elemental de diseño en VHDL.  Las entidades son los elementos electrónicos que forman un  sistema digital.  Descripción a  Símbolo funcional  Diagrama a bloques  Nivel de compuertas  de la entidad  representativo de la entidad.
Puertos de entrada-salida  Un puerto es cada señal de entrada y/o salida en una entidad. La declaración de los puertos debe tener un nombre, un modo y un tipo.  El modo permite definir la dirección que tomará la información y el tipo define qué clase de información se transmitirá por el puerto.
Descripción de un Puerto Paquete (pkg.) en el cual es definido el tipo. Ver: “Uso de Librerías y Paquetes” Entidad –  ¿Cómo se describe a un Puerto? Identificador Nombre ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],out  = Salida in  = Entrada Modo Más tipos  Se irán introduciendo conforme avance el curso Arreglos de std_logic std_logic_vector  (pkg. std_logic_1164 ) Valores ‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’ std_logic  (pkg. std_logic_1164 ) Números enteros integer  (pkg. standard ) Conjunto de bits que representa a un grupo de señales de ent. o sal. bit_vector  (pkg. standard ) Define valores de cierto o falso de acuerdo con una expresión boolean  (pkg. standard ) Valores de ‘0’ o ‘1’ Lógico bit  (pkg. standard ) Conjuntos de Valores que se les ha asignado un nombre (p.ej.  bit, boolean, bit_vector , etc), de  tal forma que un objeto (p.ej.  una  Señal ) de un determinado Tipo (p.ej.  el tipo bit_vector ) pueda tomar cualquier valor dentro del conjunto de valores que define al Tipo especificado. Tipo de Dato
3.3. Declaración de entidades.  Consiste en la descripción de las entradas y las salidas de un  circuito de diseño identificado como entity.  Ejemplo 1:  (-- ) indica que el texto a la derecha es un comentario.  ( ; ) se utiliza al finalizar una declaración.  ( : ) se utiliza al asignar nombres a las entradas y salidas.
Identificadores son nombres o etiquetas utilizados para referir variables, constantes, señales, procesos, etc.   Pueden contener números, letras del alfabeto y guiones bajos que separen caracteres y no tienen restricción por longitud.  Especificación para la escritura de identificadores
(--) Indica Comentario (;) Finaliza declaración o subdeclaración Identificador de la entidad (entity) Inicia declaración de la entidad (end) Finaliza declaración de la entidad Nombres de los puertos Modo de Operación  Tipo de Dato Ejemplo-1: Sumador Entidad - Ejemplo: Sumador Completo Línea N°. Sumador-completo de dos datos con longitudes de 1-bit (Declaración de Entidad) 1 2 3 4 5 ,[object Object],[object Object],[object Object],[object Object],[object Object],Entidad Sumador Cin A B Cout SUMA Puertos de Salida Puertos de Entrada
Ejemplo-2 Entidad - Ejemplo: Detector A Línea N°. Detector – Uso de dos datos con longitudes de 4-bit (Declaración de Entidad) 1 --Declaracion de la entidad 2 entity  circuito  is 3 ,[object Object],4 ,[object Object],5 end  circuito;
Entidad Sumador Cin Cout Para ordenar en forma ascendente utilizar  to  en lugar de  downto  (p.ej. 0 to 3) Ejemplo-3 3.4. Diseño de entidades utilizando vectores.  vector_A = [A3, A2, A1, A0] vector_B = [B3, B2, B1, B0] vector_SUMA = [S3, S2, S1, S0] Sumador-completo de dos datos con longitudes de 4-bit  (Declaración de Entidad – Uso de Vectores) entity  sumador  is ,[object Object],[object Object],[object Object],[object Object],end  sumador;
Ejemplo-4 Entidad - Ejemplo: Detector A (Uso de Vectores) Línea N°. Detector – Uso de dos datos con longitudes de 4-bit (Declaración de Entidad – Uso de Vectores) 1 --Declaracion de la entidad 2 entity  circuito  is 3 ,[object Object],4 ,[object Object],5 end  circuito;
Se encuentran definidas dos librerías llamadas ieee y work. En la librería ieee se encuentra el paquete std_logic_1164.  En la librería work se encuentran numeric_std, std_arithm y gatespkg.  La librería work es donde se almacenan los programas que se van generando.  Un paquete es una unidad de diseño que contiene sistemas preestablecidos con comportamientos optimizados.  3.5. Declaración de entidades mediante librerías y paquetes.
Las librerías se llaman como:  library ieee; La librería  work  no requiere declaración.  El paquete std_logic_1164 en la librería ieee contiene todos los  tipos  de  datos  que  suelen  emplearse  en  VHDL (std_logic_vector, std_logic, entre otros).  Para  obtener  la  información  de  un  paquete  se  tiene  que  accesar como:  use nombre_libreria.nombre_paquete.all;  Por ejemplo:  use ieee.std_logic_1164.all;
Entidad - Uso de Librerías y Paquetes Paquetes predefinidos comúnmente utilizados Standard standard ,[object Object],[object Object],IEEE std_logic_1164 ,[object Object],[object Object],numeric_bit ,[object Object],[object Object],numeric_std Define tipos de vectores signados y no-signados basados en el tipo std_logic. Paquete equivalente al Paquete std_logic_arith Synopsys std_logic_arith ,[object Object],[object Object],std_logic_unsigned ,[object Object],std_logic_signed ,[object Object],std_logic_misc ,[object Object]
Ejemplo-5 Entidad - Ejemplo: Multiplicador Circuito Multiplicador Multiplicador de dos datos con longitudes de 2-bit  (Declaración de Entidad – Uso de Biblioteca y Paquete) library  ieee; use  ieee.std_logic_1164. all ; entity  multiplica  is ,[object Object],[object Object],end  multiplica; X0 X1 Y0 Y1 Z0 Z1 Z2 Z3
3.6. Arquitecturas.  Una arquitectura se define como la estructura que describe el  funcionamiento de una entidad.  Los estilos de programación que pueden utilizarse en VHDL son:     Estilo funcional     Estilo por flujo de datos    Estilo estructural
Arquitectura - ¿Qué es? arquitectura ( architecture) Unidad de Diseño Secundaria que describe el comportamiento interno de una entidad. ¿Cómo?  - A través de la programación de varios procedimientos que permitan que la entidad ( entity ) cumpla con las condiciones de operación o comportamiento deseadas. Nivel Algoritmo Nivel Lógico Nivel Compuerta Niveles de  Descripción  utilizados Nivel Transistor (Topología / Layout) Nivel de Transferencia entre Registros ( RTL ) Estilo de descripción o Modelización Funcional Flujo de Datos Estructural
Funcional - En este caso, se describen las relaciones entre las entradas y salidas, sin importar la estructura o implementación física del sistema o circuito. si a = b entonces c = 1 si  a    b entonces c = 0 Ejemplo-6 Uso de  if-then-else  (construcción secuencial) Estilo de Modelización - Funcional Línea Nº Arquitectura - Comparador de Igualdad de dos Datos de Long. = 2Bits 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Comparador a b c
Ejemplo-7 Estilo de Modelización - Funcional Línea Nº Arquitectura - Compuerta OR de dos entradas 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],a b f1 0 0 0 0 1 1 1 0 1 1 1 1
Flujo de Datos - En este caso, se describe la forma en la que los datos se pueden transferir entre los diferentes módulos operativos que constituyen la entidad (sistema o circuito) ,[object Object],Ejemplo-8 Comparador (Ejemplo-6) Estilo de Modelización – Flujo de Datos Línea Nº Arquitectura - Comparador de Igualdad de dos Datos de Long. = 2Bits 1 2 3 4 5 6 7 8 9 10 11 12 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],Ejemplo-9 Comparador (Ejemplo-6) Estilo de Modelización – Flujo de Datos Comparador a b c Línea Nº Arquitectura - Comparador de Igualdad de dos Datos de Long. = 2Bits 1 2 3 4 5 6 7 8 9 10 11 12 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Estructural - En este caso, el comportamiento de un sistema o circuito es descrito mediante modelos lógicos establecidos de los componentes que conforman al sistema o circuito, como son: Compuertas, Sumadores, Contadores, etc. Modelos lógicos pueden ser: Almacenados en Paquetes contenidos en las bibliotecas de la Herramienta de Desarrollo Estilo de Modelización – Estructural Diseñados por el Usuario Predefinidos por el Fabricante
Ejemplo-10 Comparador (Ejemplo-6) Estilo de Modelización – Estructural Línea Nº Arquitectura - Comparador de Igualdad de dos Datos de Long. = 2Bits 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
3.7. Datos, operadores y palabras reservadas en VHDL  Lista de palabras reservadas en VHDL
La precedencia de operadores se encuentran ordenados de mayor (arriba) a menor (abajo), los operadores que se encuentran en la misma fila tienen la misma precedencia y serán evaluados siguiendo el orden de izquierda a derecha. = /= < <= > <= + - &  +  (signo) -  (signo) *  / MOD REM Precedencia de operadores ** ABS NOT AND OR  NAND NOR XOR XNOR Mayor Menor
Variables Las variables pueden ser modificadas cuando sea necesario, pueden ser declaradas solamente dentro de los procesos y subprogramas. VARIABLE  identidicador : tipo [:= valor]; Ejemplo VARIABLE  aux1, aux2: bit; SIGNAL  identidicador : tipo [:= valor]; Ejemplo SIGNAL  A, B : bit := ‘0’; SIGNAL  dato: bit_vector (7  downto  0); Señales Las señales si pueden almacenar o pasar valores lógicos, por lo tanto, representan elementos de memoria o conexiones y si pueden ser sintetizadas. Son declaradas en las arquitecturas antes del BEGIN. Constantes Una constante es un elemento que puede tomar un único valor de un tipo dato, las constantes pueden ser declaradas dentro de entidades, arquitecturas, procesos y paquetes. CONSTANT  identidicador : tipo := valor; Ejemplo CONSTANT  byte: integer := 8; Un objeto de datos en VHDL es un elemento que toma un valor de algún tipo de dato determinado, según sea el tipo de dato, el objeto poseerá un conjunto de propiedades.  En VHDL los objetos de datos son generalmente una de las tres clases siguientes: Objetos de Datos
4. Diseño lógico combinacional mediante VHDL.  42
4.1. Programación de estructuras básicas mediante declaraciones concurrentes  Una declaración concurrente se encuentra fuera de un proceso.  Suelen usarse en las descripciones de flujo de datos y estructural.  En una declaración concurrente no importa el orden en que se  escriban las señales.  Existen tres tipos de declaraciones concurrentes:     Declaración condicional asignada a una señal ( when-else  ).     Declaración concurrente asignada a señales ( gates  ).     Selección de una señal ( with-select-when   ).  43
Declaración condicional asignadas a una señal (when -else). Escriba la descripción VHDL de un sistema que se encuentra definido por la tabla de verdad siguiente:  44  Ejemplo: --EJEMPLO COMBINACIONAL BÁSICO LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY prueba IS PORT ( a,b,c  : IN STD_LOGIC; F : OUT STD_LOGIC ); END prueba; ARCHITECTURE  ejemplo of prueba IS  BEGIN  F<= '1' WHEN (  a='0' AND b='0' AND c='0' )ELSE   '1' WHEN (  a='0' AND b='1' AND c='1' )ELSE   '1' WHEN ( a='1' AND b='1' AND c='0' )ELSE   '1' WHEN ( a='1' AND b='1' AND c='1' )ELSE   '0'; END ejemplo;
Ejemplo sencillo donde se utilizan las declaraciones  when-else: --EJEMPLO when-else LIBRARY  IEEE; USE  IEEE.STD_LOGIC_1164.ALL; ENTITY  Ejemplo_when_else  IS  PORT( a, b : IN STD_LOGIC; F : OUT STD_LOGIC ); END  Ejemplo_when_else; ARCHITECTURE  ejemplo  of  Ejemplo_when_else  IS  BEGIN  F<= '1' WHEN ( a='1' AND b='1' ) ELSE   '0'; END ejemplo;
Ejercicio.  Una función F depende de cuatro variables D, C, B, A, que representan un número binario, donde A es la variable menos significativa. La función F adopta el valor de cero si el número formado por las cuatro variables es inferior a 10 y superior o igual a 5. En caso contrario la función F es uno.  Realice el programa correspondiente en VHDL utilizando estructuras del tipo when- else.  45
--EJEMPLO COMBINACIONAL BÁSICO LIBRARY IEEE; USE  IEEE.STD_LOGIC_1164.ALL; ENTITY  tabla_4_entradas  IS PORT ( entradas : IN  STD_LOGIC_VECTOR(3 downto 0); F : OUT STD_LOGIC ); END tabla_4_entradas; ARCHITECTURE tabla  of  tabla_4_entradas IS  BEGIN  F<=  '0' WHEN ( entradas=&quot;0101&quot; )ELSE '0' WHEN ( entradas=&quot;0110&quot; )ELSE '0' WHEN ( entradas=&quot;0111&quot; )ELSE '0' WHEN ( entradas=&quot;1000&quot; )ELSE '0' WHEN ( entradas=&quot;1001&quot; )ELSE '1'; END tabla; Solución al problema anterior utilizando estructuras del tipo when- else.
Declaraciones concurrentes asignadas a señales (gates)  Ejemplo:  46
Selección de una señal (with-select-when)  Ejemplo:  48  ENTITY fig_4_51 IS  PORT ( a, b : IN BIT;  --DECLARA LOS BITS DE  --ENTRADA INDIVIDUALES c  : OUT BIT);  --DECLARA LA SALIDA END fig_4_51; ARCHITECTURE verdad  OF  fig_4_51 IS  SIGNAL bits_ent : BIT_VECTOR(1 DOWNTO 0); BEGIN    bits_ent <= a & b;  --CONCATENA  LOS BITS DE  --ENTRADA EN UN VECTOR    WITH  bits_ent  SELECT   c <= '1'  WHEN  &quot;00“,--TABLA DE VERDAD '0'  WHEN  &quot;01&quot;, '1' WHEN &quot;10&quot;, '0' WHEN &quot;11&quot;; END verdad;
ENTITY tabla IS  PORT(  a: IN BIT_VECTOR(2 DOMNTO 0);  c: OUT BIT_VECTOR(1 DOMNTO 0)  ); END tabla; ARCHITECTURE tabla1 OF tabla IS BEGIN WITH a SELECT c<=   &quot;00&quot; WHEN &quot;000&quot;, &quot;10&quot; WHEN &quot;001&quot;, &quot;00&quot; WHEN &quot;010&quot;, &quot;01&quot; WHEN &quot;011&quot;, &quot;11&quot; WHEN &quot;100&quot;, &quot;00&quot; WHEN &quot;101&quot;, &quot;01&quot; WHEN &quot;110&quot;, &quot;00&quot; WHEN &quot;111&quot;; END tabla1; Otro ejemplo de la selección de una señal (with-select-when):
Otro ejemplo de la selección de una señal (with-select-when):  --TABLA DE VERDAD EN VHDL SISTEMAS DIGITALES 10A ED DEL TOCCI  PAG 183 ENTITY fig_4_51 IS  PORT ( a, b, c : IN BIT;  --DECLARA LOS BITS DE ENTRADA INDIVIDUALES y  : OUT BIT); --DECLARA LA SALIDA END fig_4_51; ARCHITECTURE verdad  OF  fig_4_51 IS  SIGNAL bits_ent : BIT_VECTOR(2 DOWNTO 0); BEGIN    bits_ent <= a & b & c; --CONCATENA  LOS BITS DE ENTRADA EN UN    --VECTOR    WITH  bits_ent  SELECT   y <='0'  WHEN  &quot;000&quot;, --TABLA DE VERDAD '0'  WHEN  &quot;001&quot;, '0'  WHEN &quot;010&quot;, '1'  WHEN &quot;011&quot;, '0'  WHEN &quot;100&quot;, '1'  WHEN &quot;101&quot;, '1'  WHEN &quot;110&quot;, '1'  WHEN &quot;111&quot;; END verdad;
Ejercicio  Diseñe un circuito comparador para comparar las magnitudes de dos números de 2 bits (A0 A1 y B0 B1). El circuito tendrá tres señales de salida GT, LT y EQ. GT será 1 para indicar que el valor de A es mayor que el valor de B. LT será 1 para indicar que el valor de A es menor que el valor de B. EQ será 1 si el valor de A y el valor de B son iguales. Utilice instrucciones del tipo  with-select-when  49
--COMPARADOR DE 2 BITS CON WITH-SELECT-WHEN LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY comparador_2bit IS  PORT ( a, b: IN  BIT_VECTOR(1 DOWNTO 0);  --DEFINE LAS ENTRADAS DEL BLOQUE gt, lt, eq : OUT BIT);   --DEFINE LA SALIDA DEL BLOQUE END comparador_2bit; ARCHITECTURE ckt OF comparador_2bit IS  SIGNAL input : BIT_VECTOR(3 DOWNTO 0); --NOMBRA UNA SEÑAL INTERMEDIA SIGNAL output : BIT_VECTOR(2 DOWNTO 0); --NOMBRA UNA SEÑAL INTERMEDIA BEGIN input <= a & b; WITH input SELECT   output <=  &quot;001“  WHEN  &quot;0000&quot;, &quot;010“  WHEN  &quot;0001&quot;, &quot;010“  WHEN   &quot;0010&quot;, &quot;010&quot; WHEN  &quot;0011&quot;, &quot;100&quot; WHEN  &quot;0100&quot;, &quot;001&quot; WHEN  &quot;0101&quot;, &quot;010&quot; WHEN  &quot;0110&quot;, &quot;010&quot; WHEN  &quot;0111&quot;, &quot;100&quot; WHEN  &quot;1000&quot;, &quot;100&quot; WHEN  &quot;1001&quot;, &quot;001&quot; WHEN  &quot;1010&quot;, &quot;001&quot; WHEN  &quot;1011&quot;, &quot;100&quot; WHEN  &quot;1100&quot;, &quot;100&quot; WHEN  &quot;1101&quot;, &quot;100&quot; WHEN  &quot;1110&quot;, &quot;001&quot; WHEN  &quot;1111&quot;; gt<=output(2); lt<=output(1); eq<=output(0); END ckt; Solución al problema anterior utilizando estructuras del tipo  with-select-when .
4.2. Programación de estructuras básicas mediante declaraciones secuenciales  Una declaración secuencial debe ejecutarse en el orden en que  aparece y forma parte de un proceso ( process  ).  Se utilizan las declaraciones  if-then-else   con la estructura  elsif  ,  if   la condición 1 se cumple  then  realiza la operación  1;  elsif  la condición 2 se cumple  then  realiza la operación  2;  else  realiza la operación  3;  end if;  o declaraciones  case-when  case   A  is  when “  valor1deA ” =>  salida  <=“  valor1salida ”; when “  valor2deA ” =>  salida  <= “ valor2salida ”; when others =>   salida  <= “v alor3salida ” ; end case;  50
Buffer tri-estado Ejemplo:  51
Comparador  Ejemplo:  Diseñe mediante declaraciones secuenciales un comparador de dos números A y B, cada  número  formado  por  dos  bits  (A1  A0)  y  (B1  B0),  la  salida  del  comparador también es de dos bits y está representada por la variable Z (Z1 Z0) de tal forma que si:  52
Ejemplo :  Diseñe un circuito decodificador de BCD a  7 segmentos utilizando declaraciones secuenciales  con  case-when  .  La entrada A esta formada por  4 bits  (A3, A2, A1, A0) y la salida “d” por siete bits (a, b, c, d, e, f, g) activos en bajo.  54
5. Diseño lógico secuencial con VHDL.  56
5.1. Diseño Lóg i co Secuencial  Un  sistema  secuencial  se  forma  con  un  arreglo  lógico combinacional y  elementos de memoria.  La salida no solo depende de los valores de entrada presentes, sino  también de la historia del sistema.  Hay dos tipos de sistemas secuenciales:     Síncronos: se sincronizan al pulso de reloj del sistema     Asíncronos: dependen del orden y momento en el cual se aplican sus señales de entrada.  En el diseño secuencial con VHDL las declaraciones  if-then- else  son las  más utilizadas.  57
5.2. Flip-Flops  Los Flip-Flops son los elementos de memoria utilizados en los sistemas  secuenciales síncronos.  Un Flip-Flop mantiene o almacena un bit de manera indefinida hasta que un pulso o una señal cambie de estado. Algunos de los Flip-Flops más comunes son: SR, JK, D y T.  58
El atributo  ‘event( evento) se utiliza para describir un hecho u ocurrencia  de una señal en particular.  Los  atributos  sirven  para  definir  características  que  pueden asociarse  con cualquier tipo de datos, objeto o entidades.  La condición  if  ( clk’event  )   es cierta solo cuando ocurre un cambio de valor en  clk .  La declaración  if-then   que depende de  ‘event   no maneja la condición else  , debido a que el compilador mantiene el valor de  Q  hasta que no exista un cambio de valor en la señal  clk .  59
Ejemplo:  Describa en VHDL el Flip-Flop D.  60  --EJEMPLO DE FLIP_FLOP D LIBRARY  IEEE; USE  IEEE.STD_LOGIC_1164.ALL; ENTITY  FLIP_FLOP_D  IS  PORT (  d,clk : IN  STD_LOGIC; q : OUT  STD_LOGIC); END  FLIP_FLOP_D; ARCHITECTURE  ejemplo  of  FLIP_FLOP_D  IS BEGIN  PROCESS (clk) BEGIN IF (clk'EVENT  AND  clk='1')  then   q<=d; end  if; END PROCESS; END  ejemplo;
Ejercicio:  Escriba y simule el código VHDL de un Flip-Flop  SR (el  programa  se realiza utilizando instrucciones condicionales y  el tipo de dato no importa, ‘ - ’).  61  --EJEMPLO DE UN FLIP FLOP SR CON EVENTOS  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FLIP_FLOP_SR IS PORT ( s, r, clk : IN STD_LOGIC; q, qn  : INOUT STD_LOGIC);--SE TIENE QUE DECLARAR LA SEÑAL  --Q COMO INOUT DEBIDO A QUE SE UTILIZA COMO ENTRADA Y SALIDA END FLIP_FLOP_SR; ARCHITECTURE ejemplo of FLIP_FLOP_SR IS  BEGIN  PROCESS (clk, s, r) BEGIN IF (clk'EVENT AND clk='1') then IF (s='0'AND r='1')THEN    q<='0';  qn<='1'; ELSIF (s='1'AND r='0')THEN   q<='1‘; qn<='0'; ELSIF (s='0'AND r='0')THEN   q<=q; qn<=qn; ELSE   q<='-';  qn<='-'; END IF; END IF; END PROCESS; END ejemplo;
5.3 . Registros  El diseño de registros es muy parecido al diseño de Flip-Flops.  Se utilizan vectores de bits en lugar de un solo bit.  Ejemplo:  Escriba un programa de un  registro de 4 bits.  Las variables sensitivas  del proceso son CLK y CLR.  62
5.4 . Contadores  La forma usual para describir contadores en VHDL es mediante operaciones  de incremento, decremento o ambas.  Cuando se requiere retroalimentación de una señal ( Q <= Q +1), ya sea  dentro o fuera de la entidad, se utiliza el modo  inout  .  Ejemplo :  Elabore  un  programa  que describa  el  funcionamiento de  un  contador  de  4  bits. Realice  en  el  diseño  una señal  de  control  (Up/Down) que determine el sentido del conteo: ascendente o descendente 63
Ejercicio:  Describa  en  VHDL  un  contador  síncrono  con  reset  asíncrono  y carga en paralelo (load). Y simule su funcionamiento.  64  --EJEMPLO DE UN CONTADOR CON EVENTOS  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --USE WORK.STD_ARITH.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY contador IS PORT ( p: IN STD_LOGIC_VECTOR(3 DOWNTO 0); clk, load, enp, reset: IN STD_LOGIC; q: INOUT STD_LOGIC_VECTOR(3 DOWNTO 0) );--SE TIENE QUE  --DECLARAR LA SEÑAL Q COMO INOUT DEBIDO A QUE SE UTILIZA  --COMO ENTRADA Y SALIDA END contador; ARCHITECTURE ejemplo of contador IS  BEGIN  PROCESS (clk, reset, load, enp) BEGIN   IF(reset='1') THEN   q<=&quot;0000&quot;;   ELSIF (clk'EVENT AND clk='1') then   IF (load='0' and enp='0')THEN    q<=p;   ELSIF (load='0' and enp='1')THEN    q<=p;   ELSIF(load='1' and enp='0')THEN    q<=q; ELSIF(load='1' and enp='1')THEN    q<=q+1; END IF;   END IF; END PROCESS; END ejemplo;
4.5. Diseño de sistemas secuenciales síncronos  Los sistemas secuenciales se pueden implementar utilizando dos modelos:     La estructura de Mealy, donde las señales de salida dependen tanto del estado en que se encuentra el sistema, como de la entrada que se aplica en determinado momento.     La estructura de Moore, donde la señal de salida sólo depende del estado en que se encuentra.  Un sistema secuencia se desarrolla a través de una serie de pasos generalizados:     enunciado del problema,     diagrama de estados,     tabla de estados,     asignación de estados,     ecuaciones de entrada a los elementos de memoria y     diagrama electrónico del circuito.  65
El diseño de una máquina secuencial con VHDL se realiza a partir  del  diagrama  de  estados,  ya  que  solo  se  requieren conocer las  transiciones entre los estados y las condiciones que controlan el proceso.  La transición de un estado a otro se especifica como:  En VHDL se utiliza estructuras  case-when   para especificar cada estado.  Las transiciones se especifican con estructuras  if-then-else  .  66
En VHDL los estados se definen dentro de un tipo de dato enumerado mediante la  declaración  type  .  type estados is (d0, d1, d2, d3);  signal edo_presente, edo_futuro : estados;  Dentro del proceso se describe la transición del edo_presente al edo_futuro.  La declaración del proceso queda como:  67  proceso1: process (edo_presente, ent) begin case edo_presente is  when d0 => sal<= ‘valsal’; if ent=‘valent’ then  edo_futuro <= d*; else  edo_futuro <= d*; end if;
Ejemplo:  Describa en VHDL  el siguiente diagrama de estados.  68
Ejercicio:  Describa en VHDL el siguiente diagrama de estados.  69
--EJEMPLO DE UN CONTADOR CON EVENTOS  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY MAQUINA_DE_ESTADOS IS PORT ( clk, x : IN STD_LOGIC; z : OUT STD_LOGIC ); END MAQUINA_DE_ESTADOS; ARCHITECTURE ejemplo of MAQUINA_DE_ESTADOS IS  TYPE estados is (d0, d1 ,d2, d3, d4); SIGNAL edo_presente, edo_futuro: ESTADOS;  BEGIN  PROCESO1: PROCESS (edo_presente, x) BEGIN CASE edo_presente is WHEN d0 =>  z<='0';  IF x= '1' THEN    edo_futuro<=d1; else   edo_futuro<=d4; END IF; WHEN d1 =>  z<='0'; IF x= '1' THEN  edo_futuro<=d2; else edo_futuro<=d4; END IF; WHEN d2 =>  IF x= '1' THEN  edo_futuro<=d3; z<='1'; else edo_futuro<=d4; z<='0'; END IF; WHEN d3 =>  z<='0'; IF x= '1' THEN  edo_futuro<=d3; else edo_futuro<=d3; END IF; WHEN d4 =>  z<='0'; IF x= '1' THEN  edo_futuro<=d1; else edo_futuro<=d4; END IF; END CASE; END PROCESS PROCESO1; PROCESO2: PROCESS (CLK) BEGIN IF(CLK'EVENT AND CLK='1')THEN  edo_presente<= edo_futuro; end if; END PROCESS PROCESO2; END ejemplo; Solución al problema anterior utilizando estructuras  case-when .
-- CONTADOR MOD 10 ENTITY MOD_10 IS PORT( clock :IN BIT;  CONTEO_MAX, q0, q1, q2, q3: OUT BIT); END MOD_10; ARCHITECTURE a OF MOD_10 IS BEGIN PROCESS (clock) VARIABLE count: BIT_VECTOR(3 DOWNTO 0); -- define a numeric VARIABLE VARIABLE x1: BIT; BEGIN IF (clock = '1' AND clock'event) THEN -- rising edge?   CASE count IS  WHEN &quot;0000&quot;=> count:=&quot;0001&quot;; x1:='0'; WHEN &quot;0001&quot;=> count:=&quot;0010&quot;; x1:='0'; WHEN &quot;0010&quot;=> count:=&quot;0011&quot;; x1:='0'; WHEN &quot;0011&quot;=> count:=&quot;0100&quot;; x1:='0'; WHEN &quot;0100&quot;=> count:=&quot;0101&quot;; x1:='0'; WHEN &quot;0101&quot;=> count:=&quot;0110&quot;; x1:='0'; WHEN &quot;0110&quot;=> count:=&quot;0111&quot;; x1:='0'; WHEN &quot;0111&quot;=> count:=&quot;1000&quot;; x1:='0'; WHEN &quot;1000&quot;=> count:=&quot;1001&quot;; x1:='0'; WHEN OTHERS=>  count:=&quot;0000&quot;; x1:='1';   END CASE; END IF; CONTEO_MAX<=x1; q0 <= count(0);-- transfer register contents to outputs q1 <= count(1); q2 <= count(2); q3 <= count(3); END PROCESS; END a; Contador Mod10 utilizando estructuras  case-when .
Ejercicio:  Contador Mod 5 utilizando variables de tipo integer .  ENTITY MAQUINA_MEALLY IS PORT( clock, x :IN BIT; q  :OUT INTEGER RANGE 0 TO 4 ); END MAQUINA_MEALLY; ARCHITECTURE a OF MAQUINA_MEALLY IS BEGIN PROCESS (clock, x) VARIABLE count: INTEGER RANGE 0 TO 4; -- define a numeric VARIABLE BEGIN IF (clock = '1' AND clock'event) THEN -- rising edge?   IF (x='1')THEN   IF count > 0 THEN -- less than max? count := count - 1; -- increment value   ELSE -- must be at max or bigger count := 4; -- reset to zero   END IF;   ELSE   IF count < 4 THEN -- less than max? count := count + 1; -- increment value   ELSE -- must be at max or bigger count := 0;   END IF;   END IF; END IF; q <= count; -- transfer register contents to outputs END PROCESS; END a;

Mais conteúdo relacionado

Mais procurados

Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fet
Velmuz Buzz
 
Recortadores Serie Y Paralelo
Recortadores Serie Y ParaleloRecortadores Serie Y Paralelo
Recortadores Serie Y Paralelo
UisraelCircuitos
 

Mais procurados (20)

2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
2.3. Configuraciones en Paralelo y Serie-Paralelo de Diodos
 
sistemas electrónicos (DIODO IDEAL, REAL Y APLICACIONES)
sistemas electrónicos (DIODO IDEAL, REAL Y APLICACIONES) sistemas electrónicos (DIODO IDEAL, REAL Y APLICACIONES)
sistemas electrónicos (DIODO IDEAL, REAL Y APLICACIONES)
 
Configuración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFETConfiguración de polarización fija y la auto polarización en el JFET
Configuración de polarización fija y la auto polarización en el JFET
 
Circuitos recortadores
Circuitos recortadoresCircuitos recortadores
Circuitos recortadores
 
Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4Amplificador Operacional Lab Nº4
Amplificador Operacional Lab Nº4
 
Transistor UJT
Transistor UJTTransistor UJT
Transistor UJT
 
3.5. Configuración en Colector Común
3.5. Configuración en Colector Común3.5. Configuración en Colector Común
3.5. Configuración en Colector Común
 
Electronica polarizacion del fet
Electronica  polarizacion del fetElectronica  polarizacion del fet
Electronica polarizacion del fet
 
Campos Electromagneticos - Tema 2
Campos Electromagneticos - Tema 2Campos Electromagneticos - Tema 2
Campos Electromagneticos - Tema 2
 
Multisim, como medir paso a paso
Multisim, como medir paso a pasoMultisim, como medir paso a paso
Multisim, como medir paso a paso
 
Sesion 7 S Dbos
Sesion 7 S DbosSesion 7 S Dbos
Sesion 7 S Dbos
 
Amplificadores operacionales
Amplificadores operacionalesAmplificadores operacionales
Amplificadores operacionales
 
Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)Apuntes y ejercicios Señales y sistemas (Borrador)
Apuntes y ejercicios Señales y sistemas (Borrador)
 
Practica0,1,2,3,4
Practica0,1,2,3,4Practica0,1,2,3,4
Practica0,1,2,3,4
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
El transistor bjt
El transistor bjtEl transistor bjt
El transistor bjt
 
1.6. Niveles de Resistencia Estatica y Dinamica en un Diodo
1.6. Niveles de Resistencia Estatica y Dinamica en un Diodo1.6. Niveles de Resistencia Estatica y Dinamica en un Diodo
1.6. Niveles de Resistencia Estatica y Dinamica en un Diodo
 
Recortadores Serie Y Paralelo
Recortadores Serie Y ParaleloRecortadores Serie Y Paralelo
Recortadores Serie Y Paralelo
 
Amplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferenciaAmplificadores operacionales con funciones de transferencia
Amplificadores operacionales con funciones de transferencia
 
El transistor ujt
El transistor ujtEl transistor ujt
El transistor ujt
 

Semelhante a Curso de vhdl

Herramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidosHerramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidos
Luisf Muñoz
 
Proyecto Grado Ingenieria
Proyecto Grado IngenieriaProyecto Grado Ingenieria
Proyecto Grado Ingenieria
Luis Vasquez
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
Adan Aguirre
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
SANTIAGO PABLO ALBERTO
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
EloyChoque1
 

Semelhante a Curso de vhdl (20)

Herramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidosHerramientas de diseño para sistemas embebidos
Herramientas de diseño para sistemas embebidos
 
Unidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JPUnidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JP
 
M3
M3M3
M3
 
M3
M3M3
M3
 
Manual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusManual de Uso Detallado de Proteus
Manual de Uso Detallado de Proteus
 
Practica con el ISE de Xilinx
Practica con el ISE de XilinxPractica con el ISE de Xilinx
Practica con el ISE de Xilinx
 
APLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200EAPLICACIONES DE LA TARJETA XILINX 2S200E
APLICACIONES DE LA TARJETA XILINX 2S200E
 
Traf final ntcis
Traf final ntcisTraf final ntcis
Traf final ntcis
 
Proyecto Grado Ingenieria
Proyecto Grado IngenieriaProyecto Grado Ingenieria
Proyecto Grado Ingenieria
 
Computación básica. Tecnologías de Información
Computación básica. Tecnologías de InformaciónComputación básica. Tecnologías de Información
Computación básica. Tecnologías de Información
 
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y CardmoduleMTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
 
intro_VHDL.pdf
intro_VHDL.pdfintro_VHDL.pdf
intro_VHDL.pdf
 
Intro vhdl
Intro vhdlIntro vhdl
Intro vhdl
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
 
Vhd(sistemas digitales ii trabajo)
Vhd(sistemas digitales ii trabajo)Vhd(sistemas digitales ii trabajo)
Vhd(sistemas digitales ii trabajo)
 
Unidad3
Unidad3Unidad3
Unidad3
 
Tarea migue[1]
Tarea migue[1]Tarea migue[1]
Tarea migue[1]
 
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
 
M_PLDS.pdf
M_PLDS.pdfM_PLDS.pdf
M_PLDS.pdf
 

Mais de Adan Aguirre

Comunicación entre PLC y LabView 2012
Comunicación entre PLC y LabView 2012Comunicación entre PLC y LabView 2012
Comunicación entre PLC y LabView 2012
Adan Aguirre
 
Principios de lubricación y lubricantes Cat
Principios de lubricación y lubricantes CatPrincipios de lubricación y lubricantes Cat
Principios de lubricación y lubricantes Cat
Adan Aguirre
 
Modelo de redes y redes petri
Modelo de redes y redes petriModelo de redes y redes petri
Modelo de redes y redes petri
Adan Aguirre
 
Aplicaciones de la transformada de Laplace
Aplicaciones de la transformada de LaplaceAplicaciones de la transformada de Laplace
Aplicaciones de la transformada de Laplace
Adan Aguirre
 
Realimentacion del estado
Realimentacion del estadoRealimentacion del estado
Realimentacion del estado
Adan Aguirre
 
Estabilidad de sistemas dinamicos
Estabilidad de sistemas dinamicosEstabilidad de sistemas dinamicos
Estabilidad de sistemas dinamicos
Adan Aguirre
 
Aire comprimido ingenieria
Aire comprimido ingenieriaAire comprimido ingenieria
Aire comprimido ingenieria
Adan Aguirre
 
Soldadura electronica 2
Soldadura electronica 2Soldadura electronica 2
Soldadura electronica 2
Adan Aguirre
 
Soldadura electronica 1
Soldadura electronica 1Soldadura electronica 1
Soldadura electronica 1
Adan Aguirre
 
Numero de Reynolds
Numero de ReynoldsNumero de Reynolds
Numero de Reynolds
Adan Aguirre
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
Adan Aguirre
 
Valores y vectores característicos
Valores y vectores característicosValores y vectores característicos
Valores y vectores característicos
Adan Aguirre
 
Examen De Matrices
Examen De MatricesExamen De Matrices
Examen De Matrices
Adan Aguirre
 

Mais de Adan Aguirre (20)

Sensores de fuerza
Sensores de fuerzaSensores de fuerza
Sensores de fuerza
 
Sensores de fuerza
Sensores de fuerzaSensores de fuerza
Sensores de fuerza
 
Comunicación entre PLC y LabView 2012
Comunicación entre PLC y LabView 2012Comunicación entre PLC y LabView 2012
Comunicación entre PLC y LabView 2012
 
Principios de lubricación y lubricantes Cat
Principios de lubricación y lubricantes CatPrincipios de lubricación y lubricantes Cat
Principios de lubricación y lubricantes Cat
 
Control digital
Control digitalControl digital
Control digital
 
Transformada z
Transformada zTransformada z
Transformada z
 
Modelo de redes y redes petri
Modelo de redes y redes petriModelo de redes y redes petri
Modelo de redes y redes petri
 
Aplicaciones de la transformada de Laplace
Aplicaciones de la transformada de LaplaceAplicaciones de la transformada de Laplace
Aplicaciones de la transformada de Laplace
 
Realimentacion del estado
Realimentacion del estadoRealimentacion del estado
Realimentacion del estado
 
Lugar geometrico de las raices
Lugar geometrico de las raicesLugar geometrico de las raices
Lugar geometrico de las raices
 
Estabilidad de sistemas dinamicos
Estabilidad de sistemas dinamicosEstabilidad de sistemas dinamicos
Estabilidad de sistemas dinamicos
 
Aire comprimido ingenieria
Aire comprimido ingenieriaAire comprimido ingenieria
Aire comprimido ingenieria
 
Soldadura electronica 2
Soldadura electronica 2Soldadura electronica 2
Soldadura electronica 2
 
Soldadura electronica 1
Soldadura electronica 1Soldadura electronica 1
Soldadura electronica 1
 
Numero de Reynolds
Numero de ReynoldsNumero de Reynolds
Numero de Reynolds
 
Horno Bessemer
Horno BessemerHorno Bessemer
Horno Bessemer
 
Carbonitrurado
CarbonitruradoCarbonitrurado
Carbonitrurado
 
Transformaciones lineales
Transformaciones linealesTransformaciones lineales
Transformaciones lineales
 
Valores y vectores característicos
Valores y vectores característicosValores y vectores característicos
Valores y vectores característicos
 
Examen De Matrices
Examen De MatricesExamen De Matrices
Examen De Matrices
 

Último

Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
JonathanCovena1
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
El Fortí
 

Último (20)

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
actividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° gradoactividades comprensión lectora para 3° grado
actividades comprensión lectora para 3° grado
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Ley 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circularLey 21.545 - Circular Nº 586.pdf circular
Ley 21.545 - Circular Nº 586.pdf circular
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
plan de capacitacion docente AIP 2024 clllll.pdf
plan de capacitacion docente  AIP 2024          clllll.pdfplan de capacitacion docente  AIP 2024          clllll.pdf
plan de capacitacion docente AIP 2024 clllll.pdf
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 

Curso de vhdl

  • 1. Instructores: M.C. Heraclio Heredia Ureta Dr. Modesto G. Medina Melendrez Instituto Tecnológico de Culiacán Departamento de Ingeniería Eléctrica-Electrónica Agosto de 2011 Curso: Programación en VHDL
  • 2. 1. Instalación de software MAXPLUS II. 2 . Estado actual de la lógica programable. 3. VHDL: su organización y arquitectura. 4. Diseño lógico combinacional mediante VHDL. 5. Diseño lógico secuencial con VHDL. 6. Integración de entidades en VHDL. 7. Programación de PLDs CONTENIDO:
  • 3.
  • 4. Pasos para instalar el software MAX+PLUS II Student Edition Version 10.2 de Altera siga los siguientes pasos: 1. Presione la tecla bandera de Windows  junto con la tecla R. 2. Aparecerá la ventana de ejecutar, ahí escribes cmd y luego presionas aceptar. 3. Posteriormente, aparecerá la ventana de comandos de ms-dos, ahí presionas dir/p y enter. 4. Luego copias el número de serie del volumen del disco duro que aparecerá en la parte superior derecha de la ventana de comandos de ms-dos, estos son 8 caracteres hexadecimales como por ejemplo BE1B-8965. 5. Este número de serie del volumen del disco duro lo necesitas para que te envíen la licencia del software MAX+PLUS II de Altera que lo tienes que solicitar de la página: http://www.altera.com/support/licensing/lic-university.html 6. Seleccione la Versión 10.2 del Software MAX+PLUS II Edición Estudiantil y presione continuar.
  • 5. Pasos para instalar el software MAX+PLUS II Student Edition Version 10.2 de Altera siga los siguientes pasos (continuación): 7. Luego aparecerá una ventana donde se solicite el número de serie del volumen del disco duro, ingrésalo y presiona continuar. 8. Luego tienes que llenar algunos datos personales como son: Nombre, Apellido, Dirección, Ciudad, Estado, País, Código postal, Teléfono, y Correo Electrónico. Una vez llenado los datos presiona continuar. 9. Luego llena un formulario con las respuestas que tú consideres correctas y presiona finalizar. 10. A tu correo te llegará un archivo con el nombre license.dat, Lo descargas y lo guardas en el disco duro. 11. Luego instalas el software MAX+PLUS II de Altera ejecutando el archivo start.htm del libro Sistemas Digitales Principios y Aplicaciones versión 10 de Ronald J. Tocci, que les pase en una memoria.
  • 6. 12. Una vez abierta la página web, Presiona el botón Max+Plus II y luego instala la opción MAXplus_student102. 13. Se empezará a instalar el Max+Plus II 10.2. Una vez que lo instales el software, ejecútalo para que le des la ruta donde se encuentra el serial de la licencia. 14. Se recomienda que este archivo license.dat que te envían por correo lo guardes en el mismo directorio donde se encuentra el Max+Plus II. 15. Para darle la ruta de la licencia sigue estos pasos: a. Abre el Max+Plus II. b. Seleccione options de la barra de menus y luego license setup... c. Luego le das la ruta donde guardaste el archivo license.dat con la tecla browse..., y luego la tecla ok. 16. Con este último paso finalizaste la instalación del Max+Plus II. Pasos para instalar el software MAX+PLUS II Student Edition Version 10.2 de Altera siga los siguientes pasos (continuación):
  • 7. 2. Estado actual de la lógica programable.
  • 8. 2.1. Dispositivos lógicos programables (PLD). La integración de sistemas se ha ido superando con las nuevas tecnologías de fabricación. Se han podido obtener componentes de mayor complejidad. El diseño ASIC (Circuitos Integrados de Aplicación Específica) domina la tendencia en aplicaciones a nivel microelectrónica, pero solo es conveniente con altos volúmenes de producción. El desarrollo de sistemas complejos requiere bastante tiempo de desarrollo. Una forma más rápida y directa es utilizar lógica programable. La lógica programable independiza el proceso de diseño del proceso de fabricación.
  • 9. Existe una gran variedad de dispositivos lógicos programables (PLDs). PROM Programmable Read-Only Memory. PLA Programmable Logic Array. PAL Programmable Array Logic. GAL Generic Logic Array. CPLD Complex PLD. FPGA Field Programmable Gate Array. Los FPGAs y los CPLDs presentan las mismas ventajas que los ASIC pero con un menor costo. El diseño se basa en bibliotecas y mecanismos de mapeo de funciones. La implementación requiere una fase de programación, generalmente rápida.
  • 10. 2.2. Dispositivos lógicos programables de alto nivel de integración. Se crearon para integrar con mayor rapidez una mayor cantidad de dispositivos en un circuito (SOC-System on Chip). Permiten cambios en el diseño digital. Un CPLD consiste de un arreglo de múltiples PLDs agrupados como bloques en un chip. La unidad PI (interconexión programable) se encarga de interconectar los bloques lógicos y los bloques de entrada/salida.
  • 11. El FPGA se basa en arreglos de compuertas. Esta formado por arreglos de bloques lógicos configurables (CLBs), que se comunican entre sí y con las terminales de entrada/salida. Los CLB están ordenados en arreglos de matrices programables. La comunicación se lleva a cabo por alambrados llamados canales de comunicación.
  • 12. Un CLB es funcionalmente completo, ya que puede Implementar cualquier función booleana representada en forma de suma de productos. El diseño lógico dentro de un CLB se implementa con bloques generadores de funciones o LUTs (Look Up Table). La diferencia entre FPGAs y CPLDs radica en el número de flip-flops contenidos. Características CPLD FPGA Arquitectura -Similar a un PLD. -Similar a los arreglos de compuertas. -Más combinacional -Más registros + RAM. Densidad -Baja a media -Media alta. Aplicaciones -Contadores rápidos. -Aplicaciones de -Máquinas de estado. Arquitecturas de computadora -Lógica Combinacional. -DSP. -Diseños con registros.
  • 13. 2.3. Campos de aplicación de la lógica programable.  Los PLD sencillos se utilizan como remplazo de circuitos LSI y MSI.  Los CPLD y FPGA se aplican en áreas como: telecomunicaciones, computación, redes, medicina, procesamiento digital de señales, multiprocesamiento de datos, microondas, telefonía celular, filtros digitales programables, entre otros. Los CPLD se utilizan especialmente a nivel industrial. Los FPGA son recomendables en aplicaciones secuenciales complejas.
  • 14. 2.4. La lógica programable y los lenguajes de descripción en hardware (HDL).  En los 60s se desarrollaron:  IDL de IBM, TI-HDL de Texas Instruments, ZEUS de General Electric, entre otros, orientados al área industrial; éstos no estaban disponibles;  AHPL, DDL, CDL, ISPS, entre otros, orientados al área académica; éstos carecían de soporte y mantenimiento adecuado.  En los 80s surgieron VHDL, Verilog, ABEL 5.0, AHDL, entre otros. En los 50s aparecieron los HDL como una opción para el desarrollo de sistemas complejos.
  • 15. El departamento de defensa de Estados Unidos creó el lenguaje VHDL, como parte del programa “Very High Speed Integrated Circuits” (VHSIC).  En 1985 surgió la versión 7.2 definida entre el gobierno, industrias y universidades. En 1987 la IEEE publicó el estándar IEEEstd 1076-1987. En 1988, VHDL fue reconocido como un estándar ANSI (American National Standards Institute). En 1993 se adoptó el estándar adicional VHDL IEEE1164. Hoy en día VHDL se considera como el lenguaje estándar para la descripción, modelado y síntesis de circuitos digitales y sistemas complejos. 2.5. Historia del Desarrollo de la programación en VHDL
  • 16. 2.5. Historia del Desarrollo de la programación en VHDL Desarrollo de Lenguajes para Descripción de Hardware 1970’s IDL/IBM, HDL/TI, ZEUS/GE Desarrollo en Área Industrial AHPL, DDL, CDL, ISPS Desarrollo en Área Académica 1980’s AHDL, ABEL, CUPL VHDL y Verilog Departamento de la Defensa de los E.U.A. Programa: Very High Speed Integrated Circuits (VHSIC) 1983  VHDL Desarrollo: IBM, Texas Instruments e Intermetrics 1987  VHDL’87 Estándar IEEE -1076 1993  VHDL’93 Estándar IEEE - 1164
  • 17. 2.6. Ventajas de utilizar VHDL Adición de la extensión analógica (IEEE1076.1) que permite la especificación, simulación y síntesis de sistemas digitales, analógicos y mixtos Facilitar la Verificación/Prueba y puesta a punto del sistema a diseñar. Capacidad descriptiva del comportamiento del sistema en distintos niveles de abstracción: Algorítmico , RTL ( Register Transfer Logic) o concurrente , estructural (Lógico) , Netlist. Reutilización de Código Independencia de la Tecnología y Proceso de Fabricación (CMOS, Bipolar, BiCMOS) Independencia de la Metodología de Diseño (PLD’s, ASIC’s, FPGA’s) Independencia del Sistema de Desarrollo Disponibilidad al Público Notación Estandarizada Ventajas del VHDL
  • 18. 2.7. Compañías de soporte en hardware y software.
  • 19. 3. VHDL: su organización y arquitectura
  • 20. 3.1. Unidades básicas de diseño.  La estructura general de un programa está formada por módulos o unidades. Existen cinco tipos:  Declaración de entidad ( entity declaration );  Arquitectura ( architecture );  Configuración ( configuration );  Declaración del paquete ( package declaration );  Cuerpo del paquete ( package body ). La entidad, el paquete y la configuración son unidades de diseño primarias. La arquitectura y el cuerpo del paquete son unidades de diseño secundarias. La entidad y arquitectura son indispensables en la estructura de un programa.
  • 21. 3.2. Entidad. Una entidad ( entity ) es el bloque elemental de diseño en VHDL. Las entidades son los elementos electrónicos que forman un sistema digital. Descripción a Símbolo funcional Diagrama a bloques Nivel de compuertas de la entidad representativo de la entidad.
  • 22. Puertos de entrada-salida Un puerto es cada señal de entrada y/o salida en una entidad. La declaración de los puertos debe tener un nombre, un modo y un tipo. El modo permite definir la dirección que tomará la información y el tipo define qué clase de información se transmitirá por el puerto.
  • 23.
  • 24. 3.3. Declaración de entidades. Consiste en la descripción de las entradas y las salidas de un circuito de diseño identificado como entity. Ejemplo 1: (-- ) indica que el texto a la derecha es un comentario. ( ; ) se utiliza al finalizar una declaración. ( : ) se utiliza al asignar nombres a las entradas y salidas.
  • 25. Identificadores son nombres o etiquetas utilizados para referir variables, constantes, señales, procesos, etc.  Pueden contener números, letras del alfabeto y guiones bajos que separen caracteres y no tienen restricción por longitud. Especificación para la escritura de identificadores
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. Se encuentran definidas dos librerías llamadas ieee y work. En la librería ieee se encuentra el paquete std_logic_1164. En la librería work se encuentran numeric_std, std_arithm y gatespkg. La librería work es donde se almacenan los programas que se van generando. Un paquete es una unidad de diseño que contiene sistemas preestablecidos con comportamientos optimizados. 3.5. Declaración de entidades mediante librerías y paquetes.
  • 31. Las librerías se llaman como: library ieee; La librería work no requiere declaración. El paquete std_logic_1164 en la librería ieee contiene todos los tipos de datos que suelen emplearse en VHDL (std_logic_vector, std_logic, entre otros). Para obtener la información de un paquete se tiene que accesar como: use nombre_libreria.nombre_paquete.all; Por ejemplo: use ieee.std_logic_1164.all;
  • 32.
  • 33.
  • 34. 3.6. Arquitecturas. Una arquitectura se define como la estructura que describe el funcionamiento de una entidad. Los estilos de programación que pueden utilizarse en VHDL son:  Estilo funcional  Estilo por flujo de datos  Estilo estructural
  • 35. Arquitectura - ¿Qué es? arquitectura ( architecture) Unidad de Diseño Secundaria que describe el comportamiento interno de una entidad. ¿Cómo? - A través de la programación de varios procedimientos que permitan que la entidad ( entity ) cumpla con las condiciones de operación o comportamiento deseadas. Nivel Algoritmo Nivel Lógico Nivel Compuerta Niveles de Descripción utilizados Nivel Transistor (Topología / Layout) Nivel de Transferencia entre Registros ( RTL ) Estilo de descripción o Modelización Funcional Flujo de Datos Estructural
  • 36.
  • 37.
  • 38.
  • 39.
  • 40. Estructural - En este caso, el comportamiento de un sistema o circuito es descrito mediante modelos lógicos establecidos de los componentes que conforman al sistema o circuito, como son: Compuertas, Sumadores, Contadores, etc. Modelos lógicos pueden ser: Almacenados en Paquetes contenidos en las bibliotecas de la Herramienta de Desarrollo Estilo de Modelización – Estructural Diseñados por el Usuario Predefinidos por el Fabricante
  • 41.
  • 42. 3.7. Datos, operadores y palabras reservadas en VHDL Lista de palabras reservadas en VHDL
  • 43. La precedencia de operadores se encuentran ordenados de mayor (arriba) a menor (abajo), los operadores que se encuentran en la misma fila tienen la misma precedencia y serán evaluados siguiendo el orden de izquierda a derecha. = /= < <= > <= + - & + (signo) - (signo) * / MOD REM Precedencia de operadores ** ABS NOT AND OR NAND NOR XOR XNOR Mayor Menor
  • 44. Variables Las variables pueden ser modificadas cuando sea necesario, pueden ser declaradas solamente dentro de los procesos y subprogramas. VARIABLE identidicador : tipo [:= valor]; Ejemplo VARIABLE aux1, aux2: bit; SIGNAL identidicador : tipo [:= valor]; Ejemplo SIGNAL A, B : bit := ‘0’; SIGNAL dato: bit_vector (7 downto 0); Señales Las señales si pueden almacenar o pasar valores lógicos, por lo tanto, representan elementos de memoria o conexiones y si pueden ser sintetizadas. Son declaradas en las arquitecturas antes del BEGIN. Constantes Una constante es un elemento que puede tomar un único valor de un tipo dato, las constantes pueden ser declaradas dentro de entidades, arquitecturas, procesos y paquetes. CONSTANT identidicador : tipo := valor; Ejemplo CONSTANT byte: integer := 8; Un objeto de datos en VHDL es un elemento que toma un valor de algún tipo de dato determinado, según sea el tipo de dato, el objeto poseerá un conjunto de propiedades. En VHDL los objetos de datos son generalmente una de las tres clases siguientes: Objetos de Datos
  • 45. 4. Diseño lógico combinacional mediante VHDL. 42
  • 46. 4.1. Programación de estructuras básicas mediante declaraciones concurrentes Una declaración concurrente se encuentra fuera de un proceso. Suelen usarse en las descripciones de flujo de datos y estructural. En una declaración concurrente no importa el orden en que se escriban las señales. Existen tres tipos de declaraciones concurrentes:  Declaración condicional asignada a una señal ( when-else ).  Declaración concurrente asignada a señales ( gates ).  Selección de una señal ( with-select-when ). 43
  • 47. Declaración condicional asignadas a una señal (when -else). Escriba la descripción VHDL de un sistema que se encuentra definido por la tabla de verdad siguiente: 44 Ejemplo: --EJEMPLO COMBINACIONAL BÁSICO LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY prueba IS PORT ( a,b,c : IN STD_LOGIC; F : OUT STD_LOGIC ); END prueba; ARCHITECTURE ejemplo of prueba IS BEGIN F<= '1' WHEN ( a='0' AND b='0' AND c='0' )ELSE '1' WHEN ( a='0' AND b='1' AND c='1' )ELSE '1' WHEN ( a='1' AND b='1' AND c='0' )ELSE '1' WHEN ( a='1' AND b='1' AND c='1' )ELSE '0'; END ejemplo;
  • 48. Ejemplo sencillo donde se utilizan las declaraciones when-else: --EJEMPLO when-else LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Ejemplo_when_else IS PORT( a, b : IN STD_LOGIC; F : OUT STD_LOGIC ); END Ejemplo_when_else; ARCHITECTURE ejemplo of Ejemplo_when_else IS BEGIN F<= '1' WHEN ( a='1' AND b='1' ) ELSE '0'; END ejemplo;
  • 49. Ejercicio. Una función F depende de cuatro variables D, C, B, A, que representan un número binario, donde A es la variable menos significativa. La función F adopta el valor de cero si el número formado por las cuatro variables es inferior a 10 y superior o igual a 5. En caso contrario la función F es uno. Realice el programa correspondiente en VHDL utilizando estructuras del tipo when- else. 45
  • 50. --EJEMPLO COMBINACIONAL BÁSICO LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY tabla_4_entradas IS PORT ( entradas : IN STD_LOGIC_VECTOR(3 downto 0); F : OUT STD_LOGIC ); END tabla_4_entradas; ARCHITECTURE tabla of tabla_4_entradas IS BEGIN F<= '0' WHEN ( entradas=&quot;0101&quot; )ELSE '0' WHEN ( entradas=&quot;0110&quot; )ELSE '0' WHEN ( entradas=&quot;0111&quot; )ELSE '0' WHEN ( entradas=&quot;1000&quot; )ELSE '0' WHEN ( entradas=&quot;1001&quot; )ELSE '1'; END tabla; Solución al problema anterior utilizando estructuras del tipo when- else.
  • 51. Declaraciones concurrentes asignadas a señales (gates) Ejemplo: 46
  • 52. Selección de una señal (with-select-when) Ejemplo: 48 ENTITY fig_4_51 IS PORT ( a, b : IN BIT; --DECLARA LOS BITS DE --ENTRADA INDIVIDUALES c : OUT BIT); --DECLARA LA SALIDA END fig_4_51; ARCHITECTURE verdad OF fig_4_51 IS SIGNAL bits_ent : BIT_VECTOR(1 DOWNTO 0); BEGIN bits_ent <= a & b; --CONCATENA LOS BITS DE --ENTRADA EN UN VECTOR WITH bits_ent SELECT c <= '1' WHEN &quot;00“,--TABLA DE VERDAD '0' WHEN &quot;01&quot;, '1' WHEN &quot;10&quot;, '0' WHEN &quot;11&quot;; END verdad;
  • 53. ENTITY tabla IS PORT( a: IN BIT_VECTOR(2 DOMNTO 0); c: OUT BIT_VECTOR(1 DOMNTO 0) ); END tabla; ARCHITECTURE tabla1 OF tabla IS BEGIN WITH a SELECT c<= &quot;00&quot; WHEN &quot;000&quot;, &quot;10&quot; WHEN &quot;001&quot;, &quot;00&quot; WHEN &quot;010&quot;, &quot;01&quot; WHEN &quot;011&quot;, &quot;11&quot; WHEN &quot;100&quot;, &quot;00&quot; WHEN &quot;101&quot;, &quot;01&quot; WHEN &quot;110&quot;, &quot;00&quot; WHEN &quot;111&quot;; END tabla1; Otro ejemplo de la selección de una señal (with-select-when):
  • 54. Otro ejemplo de la selección de una señal (with-select-when): --TABLA DE VERDAD EN VHDL SISTEMAS DIGITALES 10A ED DEL TOCCI PAG 183 ENTITY fig_4_51 IS PORT ( a, b, c : IN BIT; --DECLARA LOS BITS DE ENTRADA INDIVIDUALES y : OUT BIT); --DECLARA LA SALIDA END fig_4_51; ARCHITECTURE verdad OF fig_4_51 IS SIGNAL bits_ent : BIT_VECTOR(2 DOWNTO 0); BEGIN bits_ent <= a & b & c; --CONCATENA LOS BITS DE ENTRADA EN UN --VECTOR WITH bits_ent SELECT y <='0' WHEN &quot;000&quot;, --TABLA DE VERDAD '0' WHEN &quot;001&quot;, '0' WHEN &quot;010&quot;, '1' WHEN &quot;011&quot;, '0' WHEN &quot;100&quot;, '1' WHEN &quot;101&quot;, '1' WHEN &quot;110&quot;, '1' WHEN &quot;111&quot;; END verdad;
  • 55. Ejercicio Diseñe un circuito comparador para comparar las magnitudes de dos números de 2 bits (A0 A1 y B0 B1). El circuito tendrá tres señales de salida GT, LT y EQ. GT será 1 para indicar que el valor de A es mayor que el valor de B. LT será 1 para indicar que el valor de A es menor que el valor de B. EQ será 1 si el valor de A y el valor de B son iguales. Utilice instrucciones del tipo with-select-when 49
  • 56. --COMPARADOR DE 2 BITS CON WITH-SELECT-WHEN LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY comparador_2bit IS PORT ( a, b: IN BIT_VECTOR(1 DOWNTO 0); --DEFINE LAS ENTRADAS DEL BLOQUE gt, lt, eq : OUT BIT); --DEFINE LA SALIDA DEL BLOQUE END comparador_2bit; ARCHITECTURE ckt OF comparador_2bit IS SIGNAL input : BIT_VECTOR(3 DOWNTO 0); --NOMBRA UNA SEÑAL INTERMEDIA SIGNAL output : BIT_VECTOR(2 DOWNTO 0); --NOMBRA UNA SEÑAL INTERMEDIA BEGIN input <= a & b; WITH input SELECT output <= &quot;001“ WHEN &quot;0000&quot;, &quot;010“ WHEN &quot;0001&quot;, &quot;010“ WHEN &quot;0010&quot;, &quot;010&quot; WHEN &quot;0011&quot;, &quot;100&quot; WHEN &quot;0100&quot;, &quot;001&quot; WHEN &quot;0101&quot;, &quot;010&quot; WHEN &quot;0110&quot;, &quot;010&quot; WHEN &quot;0111&quot;, &quot;100&quot; WHEN &quot;1000&quot;, &quot;100&quot; WHEN &quot;1001&quot;, &quot;001&quot; WHEN &quot;1010&quot;, &quot;001&quot; WHEN &quot;1011&quot;, &quot;100&quot; WHEN &quot;1100&quot;, &quot;100&quot; WHEN &quot;1101&quot;, &quot;100&quot; WHEN &quot;1110&quot;, &quot;001&quot; WHEN &quot;1111&quot;; gt<=output(2); lt<=output(1); eq<=output(0); END ckt; Solución al problema anterior utilizando estructuras del tipo with-select-when .
  • 57. 4.2. Programación de estructuras básicas mediante declaraciones secuenciales Una declaración secuencial debe ejecutarse en el orden en que aparece y forma parte de un proceso ( process ). Se utilizan las declaraciones if-then-else con la estructura elsif , if la condición 1 se cumple then realiza la operación 1; elsif la condición 2 se cumple then realiza la operación 2; else realiza la operación 3; end if; o declaraciones case-when case A is when “ valor1deA ” => salida <=“ valor1salida ”; when “ valor2deA ” => salida <= “ valor2salida ”; when others => salida <= “v alor3salida ” ; end case; 50
  • 59. Comparador Ejemplo: Diseñe mediante declaraciones secuenciales un comparador de dos números A y B, cada número formado por dos bits (A1 A0) y (B1 B0), la salida del comparador también es de dos bits y está representada por la variable Z (Z1 Z0) de tal forma que si: 52
  • 60. Ejemplo : Diseñe un circuito decodificador de BCD a 7 segmentos utilizando declaraciones secuenciales con case-when . La entrada A esta formada por 4 bits (A3, A2, A1, A0) y la salida “d” por siete bits (a, b, c, d, e, f, g) activos en bajo. 54
  • 61. 5. Diseño lógico secuencial con VHDL. 56
  • 62. 5.1. Diseño Lóg i co Secuencial Un sistema secuencial se forma con un arreglo lógico combinacional y elementos de memoria. La salida no solo depende de los valores de entrada presentes, sino también de la historia del sistema. Hay dos tipos de sistemas secuenciales:  Síncronos: se sincronizan al pulso de reloj del sistema  Asíncronos: dependen del orden y momento en el cual se aplican sus señales de entrada. En el diseño secuencial con VHDL las declaraciones if-then- else son las más utilizadas. 57
  • 63. 5.2. Flip-Flops Los Flip-Flops son los elementos de memoria utilizados en los sistemas secuenciales síncronos. Un Flip-Flop mantiene o almacena un bit de manera indefinida hasta que un pulso o una señal cambie de estado. Algunos de los Flip-Flops más comunes son: SR, JK, D y T. 58
  • 64. El atributo ‘event( evento) se utiliza para describir un hecho u ocurrencia de una señal en particular. Los atributos sirven para definir características que pueden asociarse con cualquier tipo de datos, objeto o entidades. La condición if ( clk’event ) es cierta solo cuando ocurre un cambio de valor en clk . La declaración if-then que depende de ‘event no maneja la condición else , debido a que el compilador mantiene el valor de Q hasta que no exista un cambio de valor en la señal clk . 59
  • 65. Ejemplo: Describa en VHDL el Flip-Flop D. 60 --EJEMPLO DE FLIP_FLOP D LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FLIP_FLOP_D IS PORT ( d,clk : IN STD_LOGIC; q : OUT STD_LOGIC); END FLIP_FLOP_D; ARCHITECTURE ejemplo of FLIP_FLOP_D IS BEGIN PROCESS (clk) BEGIN IF (clk'EVENT AND clk='1') then q<=d; end if; END PROCESS; END ejemplo;
  • 66. Ejercicio: Escriba y simule el código VHDL de un Flip-Flop SR (el programa se realiza utilizando instrucciones condicionales y el tipo de dato no importa, ‘ - ’). 61 --EJEMPLO DE UN FLIP FLOP SR CON EVENTOS LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FLIP_FLOP_SR IS PORT ( s, r, clk : IN STD_LOGIC; q, qn : INOUT STD_LOGIC);--SE TIENE QUE DECLARAR LA SEÑAL --Q COMO INOUT DEBIDO A QUE SE UTILIZA COMO ENTRADA Y SALIDA END FLIP_FLOP_SR; ARCHITECTURE ejemplo of FLIP_FLOP_SR IS BEGIN PROCESS (clk, s, r) BEGIN IF (clk'EVENT AND clk='1') then IF (s='0'AND r='1')THEN q<='0'; qn<='1'; ELSIF (s='1'AND r='0')THEN q<='1‘; qn<='0'; ELSIF (s='0'AND r='0')THEN q<=q; qn<=qn; ELSE q<='-'; qn<='-'; END IF; END IF; END PROCESS; END ejemplo;
  • 67. 5.3 . Registros El diseño de registros es muy parecido al diseño de Flip-Flops. Se utilizan vectores de bits en lugar de un solo bit. Ejemplo: Escriba un programa de un registro de 4 bits. Las variables sensitivas del proceso son CLK y CLR. 62
  • 68. 5.4 . Contadores La forma usual para describir contadores en VHDL es mediante operaciones de incremento, decremento o ambas. Cuando se requiere retroalimentación de una señal ( Q <= Q +1), ya sea dentro o fuera de la entidad, se utiliza el modo inout . Ejemplo : Elabore un programa que describa el funcionamiento de un contador de 4 bits. Realice en el diseño una señal de control (Up/Down) que determine el sentido del conteo: ascendente o descendente 63
  • 69. Ejercicio: Describa en VHDL un contador síncrono con reset asíncrono y carga en paralelo (load). Y simule su funcionamiento. 64 --EJEMPLO DE UN CONTADOR CON EVENTOS LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --USE WORK.STD_ARITH.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY contador IS PORT ( p: IN STD_LOGIC_VECTOR(3 DOWNTO 0); clk, load, enp, reset: IN STD_LOGIC; q: INOUT STD_LOGIC_VECTOR(3 DOWNTO 0) );--SE TIENE QUE --DECLARAR LA SEÑAL Q COMO INOUT DEBIDO A QUE SE UTILIZA --COMO ENTRADA Y SALIDA END contador; ARCHITECTURE ejemplo of contador IS BEGIN PROCESS (clk, reset, load, enp) BEGIN IF(reset='1') THEN q<=&quot;0000&quot;; ELSIF (clk'EVENT AND clk='1') then IF (load='0' and enp='0')THEN q<=p; ELSIF (load='0' and enp='1')THEN q<=p; ELSIF(load='1' and enp='0')THEN q<=q; ELSIF(load='1' and enp='1')THEN q<=q+1; END IF; END IF; END PROCESS; END ejemplo;
  • 70. 4.5. Diseño de sistemas secuenciales síncronos Los sistemas secuenciales se pueden implementar utilizando dos modelos:  La estructura de Mealy, donde las señales de salida dependen tanto del estado en que se encuentra el sistema, como de la entrada que se aplica en determinado momento.  La estructura de Moore, donde la señal de salida sólo depende del estado en que se encuentra. Un sistema secuencia se desarrolla a través de una serie de pasos generalizados:  enunciado del problema,  diagrama de estados,  tabla de estados,  asignación de estados,  ecuaciones de entrada a los elementos de memoria y  diagrama electrónico del circuito. 65
  • 71. El diseño de una máquina secuencial con VHDL se realiza a partir del diagrama de estados, ya que solo se requieren conocer las transiciones entre los estados y las condiciones que controlan el proceso. La transición de un estado a otro se especifica como: En VHDL se utiliza estructuras case-when para especificar cada estado. Las transiciones se especifican con estructuras if-then-else . 66
  • 72. En VHDL los estados se definen dentro de un tipo de dato enumerado mediante la declaración type . type estados is (d0, d1, d2, d3); signal edo_presente, edo_futuro : estados; Dentro del proceso se describe la transición del edo_presente al edo_futuro. La declaración del proceso queda como: 67 proceso1: process (edo_presente, ent) begin case edo_presente is when d0 => sal<= ‘valsal’; if ent=‘valent’ then edo_futuro <= d*; else edo_futuro <= d*; end if;
  • 73. Ejemplo: Describa en VHDL el siguiente diagrama de estados. 68
  • 74. Ejercicio: Describa en VHDL el siguiente diagrama de estados. 69
  • 75. --EJEMPLO DE UN CONTADOR CON EVENTOS LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_unsigned.ALL; ENTITY MAQUINA_DE_ESTADOS IS PORT ( clk, x : IN STD_LOGIC; z : OUT STD_LOGIC ); END MAQUINA_DE_ESTADOS; ARCHITECTURE ejemplo of MAQUINA_DE_ESTADOS IS TYPE estados is (d0, d1 ,d2, d3, d4); SIGNAL edo_presente, edo_futuro: ESTADOS; BEGIN PROCESO1: PROCESS (edo_presente, x) BEGIN CASE edo_presente is WHEN d0 => z<='0'; IF x= '1' THEN edo_futuro<=d1; else edo_futuro<=d4; END IF; WHEN d1 => z<='0'; IF x= '1' THEN edo_futuro<=d2; else edo_futuro<=d4; END IF; WHEN d2 => IF x= '1' THEN edo_futuro<=d3; z<='1'; else edo_futuro<=d4; z<='0'; END IF; WHEN d3 => z<='0'; IF x= '1' THEN edo_futuro<=d3; else edo_futuro<=d3; END IF; WHEN d4 => z<='0'; IF x= '1' THEN edo_futuro<=d1; else edo_futuro<=d4; END IF; END CASE; END PROCESS PROCESO1; PROCESO2: PROCESS (CLK) BEGIN IF(CLK'EVENT AND CLK='1')THEN edo_presente<= edo_futuro; end if; END PROCESS PROCESO2; END ejemplo; Solución al problema anterior utilizando estructuras case-when .
  • 76. -- CONTADOR MOD 10 ENTITY MOD_10 IS PORT( clock :IN BIT; CONTEO_MAX, q0, q1, q2, q3: OUT BIT); END MOD_10; ARCHITECTURE a OF MOD_10 IS BEGIN PROCESS (clock) VARIABLE count: BIT_VECTOR(3 DOWNTO 0); -- define a numeric VARIABLE VARIABLE x1: BIT; BEGIN IF (clock = '1' AND clock'event) THEN -- rising edge? CASE count IS WHEN &quot;0000&quot;=> count:=&quot;0001&quot;; x1:='0'; WHEN &quot;0001&quot;=> count:=&quot;0010&quot;; x1:='0'; WHEN &quot;0010&quot;=> count:=&quot;0011&quot;; x1:='0'; WHEN &quot;0011&quot;=> count:=&quot;0100&quot;; x1:='0'; WHEN &quot;0100&quot;=> count:=&quot;0101&quot;; x1:='0'; WHEN &quot;0101&quot;=> count:=&quot;0110&quot;; x1:='0'; WHEN &quot;0110&quot;=> count:=&quot;0111&quot;; x1:='0'; WHEN &quot;0111&quot;=> count:=&quot;1000&quot;; x1:='0'; WHEN &quot;1000&quot;=> count:=&quot;1001&quot;; x1:='0'; WHEN OTHERS=> count:=&quot;0000&quot;; x1:='1'; END CASE; END IF; CONTEO_MAX<=x1; q0 <= count(0);-- transfer register contents to outputs q1 <= count(1); q2 <= count(2); q3 <= count(3); END PROCESS; END a; Contador Mod10 utilizando estructuras case-when .
  • 77. Ejercicio: Contador Mod 5 utilizando variables de tipo integer . ENTITY MAQUINA_MEALLY IS PORT( clock, x :IN BIT; q :OUT INTEGER RANGE 0 TO 4 ); END MAQUINA_MEALLY; ARCHITECTURE a OF MAQUINA_MEALLY IS BEGIN PROCESS (clock, x) VARIABLE count: INTEGER RANGE 0 TO 4; -- define a numeric VARIABLE BEGIN IF (clock = '1' AND clock'event) THEN -- rising edge? IF (x='1')THEN IF count > 0 THEN -- less than max? count := count - 1; -- increment value ELSE -- must be at max or bigger count := 4; -- reset to zero END IF; ELSE IF count < 4 THEN -- less than max? count := count + 1; -- increment value ELSE -- must be at max or bigger count := 0; END IF; END IF; END IF; q <= count; -- transfer register contents to outputs END PROCESS; END a;