![Page 1: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/2.jpg)
![Page 3: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/3.jpg)
![Page 4: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/4.jpg)
![Page 5: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/5.jpg)
![Page 6: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/6.jpg)
![Page 7: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/7.jpg)
![Page 8: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/8.jpg)
![Page 9: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/9.jpg)
![Page 10: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/10.jpg)
![Page 11: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/11.jpg)
![Page 12: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/12.jpg)
![Page 13: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/13.jpg)
![Page 14: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/14.jpg)
![Page 15: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/15.jpg)
![Page 16: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/16.jpg)
![Page 17: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/17.jpg)
![Page 18: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/18.jpg)
![Page 19: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/19.jpg)
![Page 20: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/20.jpg)
VHDL
VHSIC Hardware Design Language
(VHSIC es acrónimo de ‘Very High Speed Integrated Circuits’)
![Page 21: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/27.jpg)
COMPOSICIÓN DE UN MODELO
![Page 28: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/33.jpg)
![Page 34: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/34.jpg)
![Page 35: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/35.jpg)
![Page 36: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/36.jpg)
![Page 37: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/37.jpg)
![Page 38: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/38.jpg)
Operadores predefinidos
![Page 39: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/39.jpg)
• 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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/44.jpg)
-- 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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/45.jpg)
![Page 46: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/46.jpg)
![Page 47: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/47.jpg)
![Page 48: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/48.jpg)
![Page 49: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/49.jpg)
EJEMPLOS
![Page 50: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/50.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/51.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/52.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/53.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/54.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/55.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/56.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/57.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/58.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/59.jpg)
Tutorial Xilinx-ISE Manejo básico
![Page 60: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/60.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/61.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/62.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/63.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/64.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/65.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/66.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/67.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/68.jpg)
Ventana donde se muestra las especificaciones del proyecto.Oprima Finish.
![Page 69: Dispositivos Lógicos Programables y Lenguaje VHDL](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/69.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022052204/5571f37d49795947648e1ced/html5/thumbnails/70.jpg)
Programa totalmente terminado y compilado