Escolar Documentos
Profissional Documentos
Cultura Documentos
LENGUAJE VHDL
SPLDs (Dispositivos lgicos programables simples) Estructuras lgicas basadas en planos AND-OR CPLDs (Dispositivos lgicos programables complejos) Combinan varios SPLDs interconectados mediante una matriz de conmutacin fija o programable FPGAs (Field Programmable Gate Arrays) Incluyen bloques lgicos combinacionales, elementos de memoria y una red de interconexin programable
INTRODUCCIN GENERAL
Densidades de 74.880 de clulas lgicas Frecuencia mxima de reloj de 326 MHz Tres tensiones de alimentacin:1.2V para el core, 1.2V a 3.3 V para E/S, y 2.5 V para las funciones especiales Hasta 784 E/S con una tasa de transferencia de 622Mb/s, soporte de diferentes especificaciones estndares de E/S (LVDS, DCI, DDR) Recursos lgicos: Presencia de multiplexores con un nmero elevado de entradas Abundancia de registros y generadores de funciones en los Slices/CLBs Multiplicador de 18x18bits Lgica JTAG compatible con los estndares IEEE 1149.1/1532 Jerarqua de memoria 8 lneas de reloj
VHDL
VHSIC Hardware Design Language
(VHSIC es acrnimo de Very High Speed Integrated Circuits)
HISTORIA
El VHDL nace por iniciativa del Departamento de Defensa de EE.UU. (comienzo de los 80) En julio de 1983 tres compaas (Texas Instruments, IBM e Internetics) reciben el encargo de desarrollarlo La primera versin se publica en agosto de 1985 En 1986 se convierte en un estndar del IEEE (IEEE 1076-1987) Posteriormente, con el estndar IEEE 1164 se le aaden nuevas caractersticas El estndar 1076 debe ser revisado cada cinco aos. Actualmente rige el 1076-1993
Principales ventajas
Estndar pblico Independiente de la tecnologa Soporta diferentes metodologas de diseo Independiente del sistema de diseo Compatible
DEFINICIN:
VHDL es un lenguaje de descripcin de circuitos electrnicos
digitales que utiliza distintos niveles de abstraccin. 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 diseo. Los circuitos descritos en VHDL pueden ser simulados utilizando herramientas de simulacin para reproducir el funcionamiento del circuito. Adems utilizando herramientas de sntesis se puede implementar dicho circuito en un dispositivo lgico programable o en un circuito integrado.
MODELAJE DE HARDWARE
Al describir cualquier dispositivo en VHDL, el diseador debe definir tres elementos principales:
La arquitectura (ARCHITECTURE). Es la
descripcin interna del circuito. Describe el comportamiento lgico del bloque
ENTIDAD
Las entidades definen el Nombre de los puertos, el modo (entradas o salidas) y el tipo (integer, bit,) de un circuito. La declaracin de las entidades es anloga al smbolo esquemtico 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.
ARQUITECTURA
Indica el tipo de procesamiento que se realiza con las seales 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: - Algortmico (funcional o comportamental ). - Flujo de datos. - Estructural.
MODELOS DE LA ARQUITECTURA
MODELO
ENTIDAD
ARQUITECTURA
ESTRUCTURAL
COMPORTAMENTAL
FLUJO DE DATOS
Ejemplo:
Describir en VHDL, un circuito que multiplexe dos lneas(a y b) de un bit, a una sola lnea de salida de un bit.
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) Un bloque PROCESS, se considera como BEGIN una subrutina cuyas instrucciones se ejecutan secuencialmente cada vez que IF (selec = 0) THEN algunas de las seales de la lista sensible salida <= a; cambia. Esta lista sensible es una lista de ELSE seales que se suele poner junto a la palabra PROCESS, como en el ejemplo es (a, b, salida <= b; selec). END IF; END PROCESS; END comportamental;
Flujo de datos:
Mux 2x1: tabla caracterstica:
SELEC 0 1
SALIDA a b
Expresin de la salida: Salida = a(selec) + b(selec)
ENTITY mux2x1 IS PORT (a,b: in bit; selec: in bit; salida: out bit); END mux2x1; ARCHITECTURE mux OF mux2x1 IS BEGIN Salida <= ((a and (not selec)) or (b and selec)); END mux;
Estructural:
Mux 2x1.
ENTITY Mux2x1 IS PORT (a,b: IN bit; selec: IN bit; salida: OUT bit); END Mux2x1; --**************************** ARCHITECTURE estructural OF Mux2x1 IS SIGNAL 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;
OPERADORES PREDEFINIDOS
Seales:
Las seales se declaran igual a las constantes y variables con la diferencia de que las seales pueden adems ser de varios tipos: normal, register y bus, por defecto son de tipo normal, a las seales tambin se les puede asignar un valor inicial. Ejemplo: Signal select: bit:= 0; Signal datos: bit_vector (7 downto 0) bus :=(00000000);
EJEMPLOS
DECODIFICADOR DE 2X4
ENTITY decod24 IS PORT (f0,f1:IN BIT; s0,s1,s2,s3:OUT BIT); END decod24; ARCHITECTURE comportamiento OF decod24 IS BEGIN PROCESS (f0,f1) BEGIN IF f0='0' and f1='0' THEN s0<='1' ; s1<='0' ; s2<='0' ; s3<='0' ; ELSIF f0='1' and f1='0' THEN s0<='0' ; s1<='1' ; s2<='0' ; s3<='0' ; ELSIF f0='0' and f1='1' THEN s0<='0' ; s1<='0' ; s2<='1' ; s3<='0' ; ELSIF f0='1' and f1='1' THEN s0<='0' ; s1<='0' ; s2<='0' ; s3<='1' ; END IF; END PROCESS; END comportamiento;
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 IS BEGIN 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' THEN salida(0)<='1' ; salida(1)<='0' ; ELSIF f0='0' and f1='0' and f2='1' and f3='0' THEN salida(0)<='0' ; salida(1)<='1' ; ELSIF f0='0' and f1='0' and f2='0' and f3='1' THEN salida(0)<='1' ; salida(1)<='0' ; ELSIF f0='0' and f1='0' and f2='0' and f3='1' THEN salida(0)<='1' ; salida(1)<='1' ; END IF; END PROCESS; END comportamental;
ENTITY BIESTABLE_D IS PORT(D,CLK:IN BIT;Q:OUT BIT); END BIESTABLE_D; ARCHITECTURE COMPORTAMIENTO OF BIESTABLE_D IS BEGIN 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;
ARCHITECTURE comportamiento OF biestable_D IS BEGIN 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;
library IEEE; use IEEE.std_logic_1164.all; entity FSM is port(reset, E, clk: in bit; O: out bit); end FSM; architecture ARCH of FSM is type 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
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;
XILINX ISE
La herramienta XILINX ISE (Integrated Software Environment) es una herramienta de diseo profesional, que mediante la realizacin de circuitos esquemticos, o la utilizacin de lenguaje de programacin como el VHDL, nos permite la simulacin y la generacin de cdigos ejecutables para programar dispositivos lgicos.
PARA CREAR UN NUEVO PROYECTO 1. FILE NEW PROJECT. 2. PROJECT NAME COLOCAR EL NOMBRE DEL PROYECTO 3. PROJECT LOCATION ELEGIR LA CARPETA PARA GUARDAR EL PROYECTO 4. TOP-LEVEL SOURCE TYPE SELECCIONAR EL MTODO DE TRABAJO, SCHEMATIC O HDL (SI UTILIZA LENGUAJE DE PROGRAMACIN VHDL) 5. NEXT
1. NEW SOURCE: SELECCIONAR LA FUENTE DEL PROYECTO 2. EN LA NUEVA VENTANA QUE SE DESPLIEGA SELECCIONAR: SHEMATIC (ESQUEMTICOS) VHDL MODULE SEGN EL MTODO SELECCIONADO ANTERIORMENTE. 3. FILE NAME: ESCRIBA EL NOMBRE DEL ARCHIVO 4. NEXT
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 SALIDAS 4. SELECIONE LA OPCIN UNA DE LAS OPCIONES, IN, OUT, INOUT SEGN EL DISEO DEL PROYECTO. 5. SI UTILZA VECTORES DE ENTRADA O SALIDA HABILITE LA OPCIN 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
OPCIN PARA CREAR UN NUEVO PROYECTO Y UN NUEVO ARCHIVO FUENTE, EN NUESTRO CASO OPRIMA NEXT, NEXT.
EMPIECE A DESARROLLAR EL PROGRAMA (ARQUITECTURA) UTILIZANDO EL LENGUAJE VHDL Y DESPUS PROCEDA A GENERAR EL ARCHIVO DE PROGRAMACIN (GENERATE PROGRAMMING FILE) (EJEMPLO DEMOSTRATIVO)
PROGRAMA TOTALMENTE
COMPILADO
TERMINADO Y