+ All Categories
Home > Documents > Dispositivos Lógicos Programables y Lenguaje VHDL

Dispositivos Lógicos Programables y Lenguaje VHDL

Date post: 14-Jun-2015
Category:
Upload: api-27527336
View: 1,320 times
Download: 1 times
Share this document with a friend
Popular Tags:
70
Dispositivos lógicos Programables y Lenguaje VHDL Preparado por: Jairo M. Vergara Ávila (Diapositivas tomadas de varias fuentes de Internet)
Transcript
Page 1: Dispositivos Lógicos Programables y Lenguaje VHDL

Dispositivos lógicos Programables

y Lenguaje VHDL

Preparado por: Jairo M. Vergara Ávila

(Diapositivas tomadas de varias fuentes de Internet)

Page 2: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 3: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 4: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 5: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 6: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 7: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 8: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 9: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 10: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 11: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 12: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 13: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 14: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 15: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 16: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 17: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 18: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 19: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 20: Dispositivos Lógicos Programables y Lenguaje VHDL

VHDL

VHSIC Hardware Design Language

(VHSIC es acrónimo de ‘Very High Speed Integrated Circuits’)

Page 21: Dispositivos Lógicos Programables y Lenguaje VHDL

Historia• El VHDL nace por iniciativa del Departamento de Defensa de

EE.UU. (comienzo de los 80)• En julio de 1983 tres compañías (Texas Instruments, IBM e

Internetics) reciben el encargo de desarrollarlo• La primera versión se publica en agosto de 1985• En 1986 se convierte en un estándar del IEEE (IEEE 1076-

1987)• Posteriormente, con el estándar IEEE 1164 se le añaden

nuevas características• El estándar 1076 debe ser revisado cada cinco años.

Actualmente rige el 1076-1993

Page 22: Dispositivos Lógicos Programables y Lenguaje VHDL

Principales ventajas

• Estándar público• Independiente de la tecnología• Soporta diferentes metodologías de diseño• Independiente del sistema de diseño• Compatible

Page 23: Dispositivos Lógicos Programables y Lenguaje VHDL

DEFINICIÓN:

VHDL es un lenguaje de descripción de circuitos electrónicos digitales que utiliza distintos niveles de abstracción.

El significado de las siglas VHDL es VHSIC (Very High Speed Integrated Circuits) Hardware Description Language.

Esto significa que VHDL permite acelerar el proceso de diseño.

Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulación para reproducir el funcionamiento del circuito. Además utilizando herramientas de síntesis se puede implementar dicho circuito en un dispositivo lógico programable o en un circuito integrado.

Page 24: Dispositivos Lógicos Programables y Lenguaje VHDL

MODELAJE DE HARDWARE

Al describir cualquier dispositivo en VHDL, el diseñador debe definir tres elementos principales:

Librerías (LIBRARY). La librería estándar es siempre visible. Si se requieren utilizar otras librerías se deben importar.

La entidad (ENTITY). Especifica la interfaz del circuito. Describe la forma de interconectar un bloque con los demás (entradas, salidas)

La arquitectura (ARCHITECTURE). Es la descripción interna del circuito. Describe el comportamiento lógico del bloque

Page 25: Dispositivos Lógicos Programables y Lenguaje VHDL

Entidad

Las entidades definen el Nombre de los puertos, el modo (entradas o salidas) y el tipo (integer, bit,…) de un circuito.

La declaración de las entidades es análoga al símbolo esquemático de lo que queremos implementar, el cual describe las conexiones del proyecto, es decir, si hay una entrada o puerto de 8 bits o dos salidas o puertos de 4 bits, etc.

Page 26: Dispositivos Lógicos Programables y Lenguaje VHDL

Arquitectura Indica el tipo de procesamiento que se realiza con las señales

de entradas, (declarados en la entidad). En ella reside todo el funcionamiento del circuito.

Si la entidad es vista como una “caja negra”, para lo cual lo único importante son las entradas y salidas, entonces, la arquitectura es el conjunto de detalles interiores de la caja negra

La arquitectura presenta diferentes modelos, los cuales son:• - Algorítmico (funcional o comportamental ).• - Flujo de datos.• - Estructural.

Page 27: Dispositivos Lógicos Programables y Lenguaje VHDL

COMPOSICIÓN DE UN MODELO

Page 28: Dispositivos Lógicos Programables y Lenguaje VHDL

Ejemplo:Describir en VHDL, un circuito que multiplexe dos líneas(a y b) de un bit, a una sola línea de salida de un bit.

Page 29: Dispositivos Lógicos Programables y Lenguaje VHDL

Modelo comportamental:Mux 2x1:

SOLUCION: ENTITY mux2 IS PORT ( a, b: IN BIT; selec: IN BIT; salida: OUT BIT); END mux2; ARCHITECTURE comportamental OF mux2 IS BEGIN PROCESS (a, b, selec) BEGIN IF (selec = ‘0’) THEN salida <= ‘a’; ELSE salida <= ‘b’; END IF; END PROCESS; END comportamental;

Un bloque PROCESS, se considera como una subrutina cuyas instrucciones se ejecutan secuencialmente cada vez que algunas de las señales de la lista sensible cambia. Esta lista sensible es una lista de señales que se suele poner junto a la palabra PROCESS, como en el ejemplo es (a, b, selec).

Page 30: Dispositivos Lógicos Programables y Lenguaje VHDL

ENTITY mux2x1 ISPORT (a,b: in bit; selec: in bit; salida: out bit);END mux2x1;ARCHITECTURE mux OF mux2x1 ISBEGINSalida <= ((a and (not selec)) or (b and selec));END mux;

Flujo de datos:Mux 2x1:tabla característica:

SELEC SALIDA0 a1 b

Expresión de la salida:Salida = a(selec) + b(selec) Luego el programa en VHDL es:

Page 31: Dispositivos Lógicos Programables y Lenguaje VHDL

ENTITY Mux2x1 ISPORT (a,b: IN bit; selec: IN bit; salida: OUT bit);END Mux2x1;--****************************ARCHITECTURE estructural OF Mux2x1 ISSIGNAL nosel, ax, bx : bit; COMPONENT and2 PORT (e1,e2: IN bit; y: OUT bit); END COMPONENT; COMPONENT or2 PORT(e1,e2: IN bit; y: OUT bit); END COMPONENT;

COMPONENT inv PORT(e: IN bit; y: OUT bit); END COMPONENT;

BEGIN u0: inv PORT MAP (e=>selec, y=>nosel); u1: and2 PORT MAP (e1=>a, e2=>nosel, y=>ax); u2: and2 PORT MAP (e1=>b, e2=>sel, y=>bx); u3: or2 PORT (e1=>ax, e2=>bx,y=>salida);END estructural;

Estructural:Mux 2x1.

Page 32: Dispositivos Lógicos Programables y Lenguaje VHDL

LOGICA SECUENCIALDescribir de forma comportamental, el funcionamiento de un Flip-flop tipo D, el cual posee una entrada de reset y es activo en alto.

entity ff is port(d,clk,clr: in bit; Q: out bit); end ff; architecture funcional of ff is begin process(clk,clr) begin if clr = '1' then

Q <='0'; elsif (clk'event and clk ='1') then

Q <= d; end if; end process; end architecture funcional;

Page 33: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 34: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 35: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 36: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 37: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 38: Dispositivos Lógicos Programables y Lenguaje VHDL

Operadores predefinidos

Page 39: Dispositivos Lógicos Programables y Lenguaje VHDL

• La manera más general de describir el comportamiento de una arquitectura es mediante sentencias tipo proceso

• Un proceso puede contener órdenes secuenciales, pero todos los procesos se ejecutan concurrentemente

• Las acciones descritas en el cuerpo del proceso se ejecutan en orden, de la primera a la última

• Cuando se ejecuta la última acción se dice que el proceso queda suspendido

• Cuando ocurre un cambio en una señal de la lista de sensibilidades el proceso se inicia de nuevo, volviendo a ejecutar las acciones de la primera a la última

PROCESO

Page 40: Dispositivos Lógicos Programables y Lenguaje VHDL

PROCESO• Cada proceso se ejecuta una vez al comienzo de la simulación

para determinar el valor inicial de sus salidas• Algunas sentencias sólo pueden aparecer en un proceso

porque implican ejecución secuencial: estructural de ejecución secuencial

• Otras estructuras de ejecución secuencial:• – Sentencia de espera: wait• – Sentencia condicional: if...then...else• – Sentencia de selección: case• – Sentencia de bucles: for y while

Page 41: Dispositivos Lógicos Programables y Lenguaje VHDL

count: process (x)variable cnt : integer := -1;begincnt:=cnt+1;end process;

Ejemplo de proceso• – Nombre del proceso• – Lista de sensibilidades• – Declaración de variable• – Inicialización de la variable• – La variable cnt se incrementa cada vez que se ejecuta el proceso• – Esto ocurre al comienzo de la simulación y cada vez que cambia la

señal x

Page 42: Dispositivos Lógicos Programables y Lenguaje VHDL

Declaración de constantes, variables y señales

• Constantes: Es un elemento que se inicializa con un determinado valor y no puede ser cambiado una vez inicializado.

Ejemplo: Constant e: real:= 2.71828;

Constant retraso: time:=10 ms;

********************************************************************************************

• Variables: Es lo mismo que una constante con la diferencia de que se valor puede ser alterado en cualquier momento, a las variables también se les puede asignar un valor inicial.

Ejemplo: Variable contador : natural := 00;

Variable aux: bit_vector (31 downto 00);

**********************************************************************************************

• Señales: Las señales se declaran igual a las constantes y variables con la diferencia de que las señales pueden además ser de varios tipos: normal, register y bus, por defecto son de tipo normal, a las señales también se les puede asignar un valor inicial.

Ejemplo: Signal select: bit:= ‘0’;

Signal datos: bit_vector (7 downto 0) bus :=(“00000000”);

Page 43: Dispositivos Lógicos Programables y Lenguaje VHDL

Diferencias entre señales y variables• Un bloque PROCESS es equivalente a una única instrucción concurrente

formada por numerosas instrucciones en series• En un bloque PROCESS las SEÑALES conservan su valor y no cambian hasta

que el bloque termine de ejecutarse, momento en el cual, ya tiene el valor que se les halla asignado durante la ejecución del proceso debido a que se encontrará en el siguiente paso de simulación. (es como si la señal tuviera un valor actual y otro valor en el estado siguiente

• Las variables son algo diferentes. Puesto que las variables toman su valor en el momento de la asignación, como ocurre en otros lenguajes de programación.

• Estas diferencias se ven el siguiente ejemplo:

Page 44: Dispositivos Lógicos Programables y Lenguaje VHDL

-- Uso incorrecto de las señales

ARCHITECTURE ejemp1 OF cosa IS

SIGNAL a,b,c,x,y: integer;

BEGIN

p1: PROCESS(a,b,c)

BEGIN

c<=a; -- Se ignora

x<=c+2;

c<=b; -- Se mantiene

y<=c+2;

END PROCESS p1;

END ejemp1;

-- Uso correcto de las variables

ARCHITECTURE ejemp1 OF cosa ISSIGNAL a,b,x,y: integer;BEGINp1: PROCESS(a,b)VARIABLE c: integer;BEGINc:=a; -- Inmediatox<=c+2;c:=b; -- Inmediatoy<=c+2;END PROCESS p1;END ejemp1

Diferencias entre señales y variables

Page 45: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 46: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 47: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 48: Dispositivos Lógicos Programables y Lenguaje VHDL
Page 49: Dispositivos Lógicos Programables y Lenguaje VHDL

EJEMPLOS

Page 50: Dispositivos Lógicos Programables y Lenguaje VHDL

DECODIFICADOR 3X8 CON HABILITACIONlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Deco3x8 is Port ( Entradas : in STD_LOGIC_VECTOR (2 downto 0); Habilitacion : in STD_LOGIC; Salidas : out STD_LOGIC_VECTOR (7 downto 0); end Deco3x8;architecture Decodificador of Deco3x8 isBeginHabilitar_deco: process(Entradas,Habilitacion) begin If (Habilitacion = '1') then case Entradas is

when "000" => Salidas <= "00000001"; when "001" => Salidas <= "00000010"; when "010" => Salidas <= "00000100"; when "011" => Salidas <= "00001000"; when "100" => Salidas <= "00010000"; when "101" => Salidas <= "00100000"; when "110" => Salidas <= "01000000"; when others => Salidas <= "10000000";

end case; else Salidas <= "00000000"; end if; end process Habilitar_deco;end Decodificador;

Page 51: Dispositivos Lógicos Programables y Lenguaje VHDL

DECODIFICADOR DE 2X4

ENTITY decod24 IS PORT (f0,f1:IN BIT; s0,s1,s2,s3:OUT BIT);END decod24;

ARCHITECTURE comportamiento OF decod24 ISBEGIN PROCESS (f0,f1) BEGIN

IF f0='0' and f1='0' THENs0<='1' ;s1<='0' ;s2<='0' ;s3<='0' ;

ELSIF f0='1' and f1='0' THENs0<='0' ;s1<='1' ;s2<='0' ;s3<='0' ;

ELSIF f0='0' and f1='1' THENs0<='0' ;s1<='0' ;s2<='1' ;s3<='0' ;

ELSIF f0='1' and f1='1' THENs0<='0' ;s1<='0' ;s2<='0' ;s3<='1' ;END IF;

END PROCESS;END comportamiento;

Page 52: Dispositivos Lógicos Programables y Lenguaje VHDL

CODIFICADOR DE 4X2

ENTITY decod42 IS PORT (f0,f1,f2,f3:IN BIT; salida:OUT BIT_VECTOR(1 DOWNTO 0));END decod42;

ARCHITECTURE comportamental OF decod42 ISBEGIN PROCESS (f0,f1,f2,f3) BEGIN IF f0='1' and f1='0' and f2='0' and f3='0' THEN

salida(0)<='0' ;salida(1)<='0' ;

ELSIF f0='0' and f1='1' and f2='0' and f3='0' THENsalida(0)<='1' ;salida(1)<='0' ;

ELSIF f0='0' and f1='0' and f2='1' and f3='0' THENsalida(0)<='0' ;salida(1)<='1' ;

ELSIF f0='0' and f1='0' and f2='0' and f3='1' THENsalida(0)<='1' ;salida(1)<='0' ;

ELSIF f0='0' and f1='0' and f2='0' and f3='1' THENsalida(0)<='1' ;salida(1)<='1' ;

END IF; END PROCESS;END comportamental;

Page 53: Dispositivos Lógicos Programables y Lenguaje VHDL

FLIP FLOP TIPO D

ENTITY biestable_D IS PORT(D,clk:IN BIT; Q,Q_menos: OUT BIT);END biestable_D;

ARCHITECTURE comportamiento OF biestable_D ISBEGIN PROCESS(CLK) BEGIN IF CLK'EVENT AND clk='1' THEN CASE D IS WHEN '1' => Q<='1'; Q_menos<='0'; WHEN '0' => Q<='0'; Q_menos<='1'; END CASE; END IF; END PROCESS;END comportamiento;

ENTITY BIESTABLE_D ISPORT(D,CLK:IN BIT;Q:OUT BIT);

END BIESTABLE_D;

ARCHITECTURE COMPORTAMIENTO OF BIESTABLE_D ISBEGIN PROCESS(CLK) BEGIN IF CLK'EVENT AND CLK='1' THEN

CASE D IS WHEN '1'=> Q<='1'; WHEN '0' => Q<='0';END CASE;

END IF; END PROCESS;END COMPORTAMIENTO;

Page 54: Dispositivos Lógicos Programables y Lenguaje VHDL

Contador ascendente de 4 bitslibrary ieee;use ieee.std_logic_1164.all;use work.std_arith.all;  entity contador is port(clk: in std_logic; conta: buffer std_logic_vector(3 downto 0));end contador;  architecture archicontador of contador isbegin process (clk) begin  if (clk'event and clk= '1') then    conta <= conta + 1;  end if; end process;end archicontador;

Page 55: Dispositivos Lógicos Programables y Lenguaje VHDL

Contador ascendente con carga y reset

entity contador is port(clk, load, reset:in std_logic; data: in std_logic_vector(3 downto0); conta:buffer std_logic_vector(3 downto 0));end contador;

architecture archicontador of contador is Begin process (clk,reset) begin  if reset = '1' then   conta <= "0000";  elsif (clk'event and clk= '1') then   if load = '1' then     conta <= data;   else     conta <= conta + 1;   end if;  end if; end process; end archicontador;

Page 56: Dispositivos Lógicos Programables y Lenguaje VHDL

Diseño de una Máquina de Estados

Se trata de diseñar una maquina de estados que active una salida S cuando se detecta la secuencia …001... en una línea de datos E sincronizada con un reloj. Este detector de secuencia se puede realizar con una máquina de Moore de cuatro estados.

— S1: Esperar el l.er Cero de la secuencia.— S2: Esperar el 2.° Cero de la secuencia.— S3: Esperar el uno de la secuencia y activar la salida S cuando llega.

Page 57: Dispositivos Lógicos Programables y Lenguaje VHDL

library IEEE;use IEEE.std_logic_1164.all;

entity FSM isport(reset, E, clk: in bit; O: out bit);end FSM;

architecture ARCH of FSM istype ESTADOS is (S1, S2, S3,S4);signal ESTADO, SIG_ESTADO: ESTADOS;Begin

SINCRONO: process(clk,reset) begin if reset ='1' then ESTADO <= S1; elsif clk'event and clk='1' then ESTADO < = SIG_ESTADO; end if;end process SINCRONO;

CONTROL: process(ESTADO,E) begin case ESTADO is when S1 => O <= '0'; if (E='0') then

Page 58: Dispositivos Lógicos Programables y Lenguaje VHDL

SIG_ESTADO <= S2; else SIG_ESTADO <= S1; end if; when S2 => O <= '0'; if (E='0') then SIG_ESTADO <= S3; else SIG_ESTADO <= S1; end if; when S3 => O <= '0'; if (E='0') then SIG_ESTADO <= S3; else SIG_ESTADO <= S4; end if; when S4 => O <= '1'; if (E='0') then SIG_ESTADO <= S2; else SIG_ESTADO <= S1; end if; end case; end process control;end ARCH;

Page 59: Dispositivos Lógicos Programables y Lenguaje VHDL

Tutorial Xilinx-ISE Manejo básico

Page 60: Dispositivos Lógicos Programables y Lenguaje VHDL

XILINX ISE

La herramienta XILINX ISE (Integrated Software Environment) es una herramienta de diseño profesional, que mediante la realización de circuitos esquemáticos, o la utilización de lenguaje de programación como el VHDL, nos permite la simulación y la generación de códigos ejecutables para programar dispositivos lógicos.

Page 61: Dispositivos Lógicos Programables y Lenguaje VHDL

Creación de un nuevo proyecto

• Un proyecto es un conjunto de ficheros, tales como esquemáticos, líneas de códigos de programa (utilizando un lenguaje de programación), lista de conexionados, librerías de componentes, vectores de test para simulación, etc., seleccionados para un proyecto específico.

Page 62: Dispositivos Lógicos Programables y Lenguaje VHDL

Para crear un nuevo proyecto1. File New Project.2. Project Name Colocar el nombre del proyecto3. Project Location Elegir la carpeta para guardar el proyecto4. Top-Level Source Type Seleccionar el método de trabajo, Schematic o HDL

(Si utiliza lenguaje de programación VHDL)5. Next

Page 63: Dispositivos Lógicos Programables y Lenguaje VHDL

1. Family: Seleccionar según dispositivo a programar, CDLP(XC9500XL CPLDs ) o FPGA (Spartan3E)2. Device: CPLD ( XC9572XL) o FPGA(XC3500E)3. Package: CPLD (PC44) o FPGA (FG320)4. Preferred Language: VHDL5. Next

Page 64: Dispositivos Lógicos Programables y Lenguaje VHDL

1. New Source: Seleccionar la fuente del proyecto2. En la nueva ventana que se despliega seleccionar: Shematic (Esquemáticos) o VHDL Module según el método seleccionado anteriormente. 3. File Name: Escriba el nombre del archivo4. Next

Page 65: Dispositivos Lógicos Programables y Lenguaje VHDL

1. Entity Name: Digite el nombre de la Entidad.2. Architecture Name: Digite un nombre para la arquitectura (ojalá nombres coherentes con el

proyecto)3. Port Name: Asigne el nombre de los puertos de entradas y salidas4. Selecione la opción una de las opciones, in, out, inout según el diseño del proyecto. 5. Si utilza vectores de entrada o salida habilite la opción de Bus y digite cual es el bit mas significativo y el menos significativo (Por ejemplo si el vector es de 8 bits, entonces MSB = 7 y LSB = 0) 6.Next

Page 66: Dispositivos Lógicos Programables y Lenguaje VHDL

1. Resumen del proyecto para su revisión, si existe algún error oprima Back para regresar y corregir2. Presione el botón Finish

Page 67: Dispositivos Lógicos Programables y Lenguaje VHDL

Opción para crear un nuevo proyecto y un nuevo archivo fuente, en nuestro caso oprima Next, Next.

Page 68: Dispositivos Lógicos Programables y Lenguaje VHDL

Ventana donde se muestra las especificaciones del proyecto.Oprima Finish.

Page 69: Dispositivos Lógicos Programables y Lenguaje VHDL

Empiece a desarrollar el programa (arquitectura) utilizando el lenguaje VHDL y después proceda a generar el archivo de programación (Generate Programming File)

(Ejemplo demostrativo)

Page 70: Dispositivos Lógicos Programables y Lenguaje VHDL

Programa totalmente terminado y compilado


Recommended