VHDLVHDL
VVeryery HHighigh speedspeed integratedintegrated circuitcircuitHHardware ardware DDescriptionescription LLanguageanguage
Digital II – Ingeniería Electrónica
Rosa CortiRosa Corti
Contenido
Dispositivos FPGALenguaje VHDL: Evolución y característicasUnidades de diseño básicas: Entidad y ArquitecturaSeñales en VHDLTipos de datos – Bibliotecas usualesDescripción de circuitos combinacionales
Sentencias de asignación concurrente Ejemplos
Descripción de circuitos secuencialesEl bloque ProcessRepresentación de la señal de relojSentencias algorítmicasEjemplos
3
La Ley de MOORE
“ El número de transistores en un circuito integrado se podrá duplicar cada dos años”
15/09/2009 4
Dispositivos de lógica programable.
Mayor flexibilidad
El usuario configura un dispositivo standard.
Personalización independiente de la fábrica
Entradas
Salidas
DESVENTAJA
Se desperdician recursos de pastilla
15/09/2009 5
FPGA: ¿ Cuál es la innovación introducida ??
Arquitectura extremadamente flexible de tecnología SRAM
Reprogramación simple y rápida en circuito Bloques lógicos programables
(CLB, LE)
Bloques I/O programables
Interconexión programable
15/09/2009 6
FPGA: ¿ Cómo cambiar la lógica ?
PLD convencionales
LUT´s
FPGA
15/09/2009 7
Elementos básicos de la FPGA
Celdas o bloques lógicosLUT (Look Up Table) MultiplexorRegistro
8
Configuración de una FPGA:
BITSTREAM Los bits permanecen en el dispositivo que se configura
Un bit de configuración controla un switch de conexión o un bit de lógica
Programación de un dispositivo
µP FPGA
Se cambian las conexiones y las funciones lógicas
Se cambian las instrucciones
Cambia el Software Cambia el Hardware
15/09/2009 9
15/09/2009 10
Evolución de las Arquitecturas
Virtex II y Virtex II Pro Spartan 2 y Virtex
Fuente: Publicaciones de la empresa Xilinx.
15/09/2009 11
FPGAs basadas en SRAM
1. Dispositivo de lógica programable estándar muy flexible
2. Personalizable por el usuario con ambientes EDA
programación en campo3. Arquitectura basada en SRAM
Pierden su configuración al cesar la energía4. Volátiles
Otras característicasOtras tecnologías de fabricación
12
Datos generales sobre FPGA´s
Algunas aplicaciones
Guitarras Gibson – sonido digitalVehículos de exploración de Marte (NASA)Módulo de control de Williams F1Misiles Tomahawk
XilinxAlteraAtmel
LatticeCypressActelQuicklogic
AlgunosFabricantes
Costo de los dispositivos
Desde menos de 10 dólares a varios cientos, dependiendo de las características, aún en la misma familia de dispositivos.
Diseño digital
CI de gran nivel de integración
Nuevas metodologías para manejar la complejidad creciente de los diseños
Un lenguaje permite la edición más rápida y sencilla
Una descripción con esquemas resulta más fácil de entender15/09/2009 13
Diseño digital
Lenguajes de Descripción de Hardware (HDL)
Permiten descripciones de alto nivel
La edición es rápida y sencilla
Soportados por herramientas EDA
Las herramientas EDA permitenintegrar distintos estilos de diseño
15/09/2009 14
VHDL: Antecedentes históricos
Necesidad de estandarizar los diseños
DoD +IEEE Patrocinan el desarrollo en los 80´s
VHDL-87Es estándar de IEEE en 1987
VHDL-93El estándar se amplía en 1993
VHDL-01Modificaciones menores en 2001
Existen otros HDL populares como ABEL y VERILOG15/09/2009 15
VHDL: Evolución
Se inicia como un leguaje de modelado y especificación.
DocumentaciónLigado a actividades de
Simulación
Luego se incorporan herramientas de síntesis capaces de manejar este tipo de descripciones
Ambientes integrados de diseño15/09/2009 16
VHDL: Síntesis en FPGA
FPGA Ambientes CAD
SíntesisAtraviesa todos los niveles de abstracción de la descripción desde el más alto al más bajo
VHDL
Es un lenguaje para el modelado, simulación lógica dirigida por eventos y síntesis de sistemas de Hardware
15/09/2009 17
Flujo de diseño VHDL orientado a FPGA
Análisis Código Síntesis Simulaciónfuncional
Mapeo, rutasy ubicación
Simulación post PAR
Bitstream
15/09/2009 18
Programación de un dispositivo
µP FPGA
Se cambian las conexiones y las funciones lógicas
Se cambian las instrucciones
Cambia el Software Cambia el Hardware
15/09/2009 19
VHDL VHDL
Construcciones bConstrucciones báásicassicas
VHDL: Unidades de diseño básicas
15/09/2009 21
Componentes
DispositivoVHDLEntidad Arquitectura
Descripción comportamental
Declaración de I/O
Caja negra Caja blanca
VHDL: Unidades de diseño básicas
15/09/2009 22
Diseño VHDL Entidad
Arquitectura
Archivo de texto
library IEEE;use IEEE.std_logic_1164.all;entity PuertaAnd is
port ( A, B:in std_logic;C: out std_logic );
end PuertaAnd;architecture arch_flu of PuertaAnd isbeginC <= A and B;end arch_flu;
AND
Estructura de un diseño VHDL: Entidad
library IEEE;use IEEE.std_logic_1164.all;
entity PuertaAnd isport (A, B:in std_logic;
C: out std_logic );end PuertaAnd;
Declaración de bibliotecasVisibilidad de paquetes
Declaración de puertos
INTERFAZ
Da nombre al módulo y define su conexión con el exterior
15/09/2009 23
15/09/2009 24
Bibliotecas y unidades de diseño
Modelo VHDL
Bibliotecas VHDL
Colecciones de unidades de diseño
Compuesto por unidades de diseño
Secciones mínimas de código compilables en forma independiente
Organizan el códigoPromueven el reuso
Puertos de la entidad
port (nombre_señal : modo tipo_señal) ;
Modo Define cómo se lo utiliza
in: Entrada, se lee. No se le puede asignar valor.out: Salida, se le asigna valor. No se puede leer.inout: Entrada / Salida. CUIDADO !!buffer: Salida / Puede ser usado en el sistema (leído).
Define los valores y operaciones legalesTipo
15/09/2009 25
Objetos VHDL: señales
a
b
c
d
s
nd
xnc
Modelan hilos de un circuito
SEÑALES
15/09/2009 26
VHDL: Tipos de datos
Un tipo de datos define los valores legales y los operadores aplicables para los objetos de ese tipo.
Tipos de datos predefinidos Biblioteca Standard (STD)
BITBOOLEANINTEGERREAL
Orientados a síntesis
15/09/2009 27
VHDL: Tipos de datos
Para representar situaciones reales en los circuitos, la IEEE definiódos tipos de datos multivaluados orientados a síntesis
Modela líneas Std_logic
Std_logic_vector (n-1 downto 0) Modela buses
Los valores posibles en síntesis para una objeto de estos tipos son:
‘0’ valor bajo‘1’ valor alto‘Z’ alta impedancia
Biblioteca: IEEEPaquete: std_logic_1164
15/09/2009 28
VHDL: Descripción de un circuito
library IEEE;use IEEE.std_logic_1164.all;entity circuito is
port ( a, b, c, d: in std_logic;s: out std_logic );
end;architecture arch_flu of circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;
b
c s
nd
xnc
a
d
15/09/2009 29
Estructura de un diseño VHDL: Arquitectura
Se ligan arquitectura y entidad
architecture arch_flu of Circuito issignal nc, nd, x: std_logic;beginnc <= not c;nc <= not c;x <= a and nc and nd ;s <= c or a;end arch_flu;
Descripción de la funcionalidad del módulo
15/09/2009 30
Declaración objetos utilizados
b
c s
nd
xnc
a
d
VHDL VHDL
DescripciDescripcióón de circuitos n de circuitos combinacionalescombinacionales
15/09/2009 32
Sentencias de asignación concurrente
Verificar el tipo de las señalesSi son vectores, verificar tamañoAsignaciones simples
Asignaciones condicionales
x <= a and nc and nd ;
s <= a when c = “00” else d when c = “01” else e ;
Asignaciones con selección with (c or f) selects <= a when “100” ,
d when “010” ,e when others;
15/09/2009 33
Descripción de multiplexores
library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity Multiplexor isport ( a , b : in std_logic_vector(1 downto 0);
sel : in std_logic;s : out std_logic_vector(1 downto 0));
end Multiplexor;architecture Behavioral of Multiplexor isbegin
s <= a when sel ='1' else b;end Behavioral;
15/09/2009 34
architecture Behavioral of Cod_7seg isbeginwith HEX select
LED <= "1111001" when "0001", --1"0100100" when "0010", --2"0110000" when "0011", --3"0011001" when "0100", --4"0010010" when "0101", --5"0000010" when "0110", --6"1111000" when "0111", --7"0000000" when "1000", --8"0010000" when "1001", --9"0001000" when "1010", --A"0000011" when "1011", --b"1000110" when "1100", --C"0100001" when "1101", --d"0000110" when "1110", --E"0001110" when "1111", --F"1000000" when others; --0
end;
Lógica negativa
library IEEE;use IEEE.STD_LOGIC_1164.ALL;
entity Cod_7seg isport ( HEX : in std_logic_vector( 3 downto 0);
LED:out in std_logic_vector( 6 downto 0));
Descripción de Codificadores
15/09/2009 35
Descripción de una memoria ROM
architecture behavioral of MROM istype mem is array ( 0 to 15) of std_logic_vector(7 downto 0); signal mi_Rom : mem; beginmi_Rom <= (
0 => "00000000", 1 => "00000001", 2 => "00000010", 3 => "00000011", 4 => "00000100", 5 => "11110000", 6 => "11110011", 7 => "11110111",
others => "11111111");
datos <= Mi_rom (CONV_INTEGER(dir));end behavioral;
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
entity MROM isport ( dir : in std_logic_vector(3 downto 0); datos : out std_logic_vector(7 downto 0) );
end MROM;
Esquemático RTL
Tipo de datos del usuario
15/09/2009 36
Modelado y simulación de la concurrencia
Se modela HARDWARE usando SOFTWARE
Concurrente Secuencial
Las puertas deben funcionar al mismo tiempo !!A
D
BC
S
L No se puede modelar y simular en un lenguaje convencional
15/09/2009 37
Caracterización de señales para simulación
Cada señal tiene asociado un “Driver”
Cola o tabla de transacciones que almacena la forma de onda
S
15 40 45 [ns]
Tiempo de simulación 0 El driver “proyecta” valores futuros de la señal en simulación
tiempo 0 15 40 45
valor 1 0 1 0Driver de S
15/09/2009 38
VHDL: Simulación de la concurrencia
Se utilizan sentencias “concurrentes” para describir el comportamiento del circuito
Estas sentencias son sensibles a señales
(A, B, C y S)S <= A or B;Q <= C and S;
Los cambios en las señales “fuente” (eventos), disparan la “ejecución” de las sentencias concurrentes.
En simulación hay un soporte explícito de la concurrencia.
VHDL: Simulación de la concurrencia
Cada vez que se presenta un evento
library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity SimCon isport ( a,b,c : in std_logic;
e,f : out std_logic);end ;architecture Behavioral of SimCon isbegine<= a and b;f<= b or c;end ;
Las señales se actualizan luego de que el simulador “procesa” una sentencia concurrente.
15/09/2009 40
VHDL: Operadores usados en Digital II
Existe una gran cantidad de operadores definidos para
distintos tipos de datos
Lógicos
Relacionales
AritméticosSólo un subconjunto está
orientado a síntesisConcatenación
VHDL: Operadores usados en Digital II
and, or, nor, xor, notLógicos
Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean
Los operandos deben ser del mismo tipo y tener la misma cantidadde bits
Ejemplos
signal A, B, C, D: std_logic_vector (7 downto 0);A <= “11001010”;B <=“10011010”;C <= A or B;D <= A and B;
15/09/2009 41
VHDL: Operadores usados en Digital II
Relacionales= (igual) /= (distinto)< (menor) <= (menor o igual)> (mayor) >= (mayor o igual)
Definidos para: bit, bit_vector, std_logic, std_logic_vector, boolean, integer
Los operandos deben ser del mismo tipo y pueden tener distintacantidad de bits
Las comparación de dos vectores, se realiza bit a bit alineando ambas tiras de dígitos a partir del MSB de cada una.
Cuidado !!!15/09/2009 42
15/09/2009 43
VHDL: Operadores relacionales
Comparación de vectores de distinta cantidad de bits
signal A : std_logic_vector (7 downto 0);signal B : std_logic_vector (3 downto 0);A <= “00100100”;B <= “0110”
A > B ? NO !!
VHDL: Operadores relacionales
Comparación de vectores
¿ Cómo se interpreta la tira de dígitos de std_logic_vector?
signal A : std_logic_vector (3 downto 0);A <= “1010”;
¿A es igual a 10 o a -6?
15/09/2009 44
Interpretación de std_logic_vector
La interpretación que se da a los datos std_logic_vectordepende de los paquetes que se incluyan en el diseño
STD_LOGIC_ARITH
STD_LOGIC_UNSIGNED
STD_LOGIC_SIGNED
Desarrollados por Synopsis. Se distribuyen como parte de
la biblioteca IEEE.
Los incorporan muchos los ambientes de diseño
Actualmente constituyen un estándar15/09/2009 45
15/09/2009 46
Interpretación de std_logic_vector
library IEEE; use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_SIGNED.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
STD_LOGIC_VECTOR se interpreta como entero en C2
STD_LOGIC_VECTOR se interpreta como entero sin signo
VHDL: Operadores de comparación
Ejemplo de comparación de vectores
signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal COMP: boolean;A <= “0110”;B <= “1000”;COMP <= A > B; COMP verdadero si se
incluyó el paquete SIGNED
COMP será falso si se incluyó el paquete UNSIGNED
15/09/2009 47
VHDL: Operadores usados en Digital II
+ (suma) - (resta) Aritméticos
Definidos para datos enteros (integer)
Se pueden utilizar con vectores std_logic_vector
Se debe incluir el paquete correspondiente (SIGNED o UNSIGNED)
15/09/2009 48
VHDL: Operadores usados en Digital II
Concatenación (&)
Permite definir vectores a partir de líneas u otros vectores
15/09/2009
signal A :std_logic_vector (3 downto 0);signal B :std_logic_vector (3 downto 0);signal COMP: std_logic_vector (5 downto 0);A <= “0110”;B <=“1000”;C <= A(3 downto 1) & B(2 downto 0); C será “011000”
49
VHDL: Comparador sin signo
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity compara isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);mayor: out std_logic);
end compara;
architecture Behavioral of compara isbeginmayor <= '1' when a > b else '0';end Behavioral;
15/09/2009 50
VHDL: Comparador sin signo
Circuito RTL inferido por el ambiente
Simulación del modelo
15/09/2009 51
VHDL: Comparador en C2
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;
entity comparaSig isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);mayor: out std_logic);
end comparaSig;
architecture Behavioral of comparaSig isbeginmayor <= '1' when a > b else '0';end Behavioral;
15/09/2009 52
VHDL: Comparador en C2
Simulación del modelo
15/09/2009 53
Circuito RTL inferido por el ambiente
VHDL: Sumador / Restador en C2
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_SIGNED.ALL;
entity SuRes isport ( a : in std_logic_vector(3 downto 0);
b : in std_logic_vector(3 downto 0);sub : in std_logic;
s : out std_logic_vector(4 downto 0));end;
architecture Behavioral of SuRes isbegins <= (a(3) & a) + b when sub = '0' else (a(3) & a) - b;end;
Se incluye el paquete SIGNED
Se previene OF definiendo la salida
con un bit más
Se completa formato con bit de signo
15/09/2009 54
VHDL: Sumador / Restador en C2
15/09/2009 55
VHDL: Sumador / Restador en C2
Simulación del modelo
Al trabajar con un bit más en la salida, se previene el sobreflujo
15/09/2009 56
VHDL: Sumadores/Restadores
De acuerdo con la representación de datos adoptada
Incluir el paquete que corresponde
Completar formato en forma adecuada
Si el tamaño de bus está acotado y se requiere detectar OF
Se debe agregar en la descripción del sumador
15/09/2009 57
15/09/2009 58
Circuitos combinacionales y memoria implícita
Las salidas sólo dependen de las entradas, no se permite que:
La señal que se está asignando intervenga en la asignación:
s <= a when sel = ‘1’ else b;s <= a when sel = ‘1’ else s;s <= a when s = ‘1’ else b;
COMBINACIONAL
SECUENCIAL
Existan lazos combinacionales
COMBINACIONAL SECUENCIAL
a <= b or c;e <= d and a;
a <= b or c;b <= d and a;
VHDL VHDL
DescripciDescripcióón de circuitos n de circuitos secuenciales sincrsecuenciales sincróónicosnicos
15/09/2009 60
Circuitos secuenciales sincrónicos
Las salidas dependen del estado interno del sistema y, dependiendo del modelo, de las entradas.
MOORE
Interviene la señal de reloj
15/09/2009 61
Descripción de un elemento de memoria
library IEEE;use IEEE.STD_LOGIC.1164.ALL;entity FF isport ( entrada: in std_logic;
clk:in std_logic;salida: out std_logic);
end;architecture Behavioral of FF isbeginprocess (clk)beginif clk'event and clk = '1' then salida <= entrada ; end if;end process ;end;
15/09/2009 62
Simulación de un FFD
El simulador adecúalas ondas, respetando
el sincronismo
15/09/2009 63
El bloque process
process (clk)beginif clk'event and clk = '1‘then … ; end if;end process ;
En simulación, cada vez que cambia alguna de las señales
se ejecuta el bloque
Activación del bloque PROCESSLista de sensibilidad
Descripción del flanco activo de reloj
SIMULADOR:
El bloque es una sentencia concurrente
Las sentencias internas se ejecutan secuencialmente
15/09/2009 64
El bloque process
Es una construcción de un mayor de abstracción
Su uso está ligado a un tipo de descripción “ALGORITMICA”
Permite otros elementos sintácticos
CondicionalesSelecciónBucles
Están ligados a una descripción de más alto nivel
15/09/2009 65
El bloque process
Sentencia condicional IF...THEN...ELSE
Esta estructura puede anidarse.if condición thensentencias
elsif condición thensentencias
elsesentencias
end if ;
Modela una selección jerárquica.
elsif y else son optativas. Si no se contemplan todas las posibilidades, se infiere
almacenamiento.
15/09/2009 66
El bloque process
Sentencia condicional IF...THEN...ELSE
process ( a, b, c )beginif a > b thenp <= a;elsif a > c then p <= c;elsif (a = c and c = b) thenp <= a;else p <= ‘0’;end if ;end process ;
p < = b when a > b elsec when a > c elsea when (a = c and c = b) else‘0’ ;
Con asignación “concurrente”
La lista sensible debe incluir todas las señales cuyo cambio es importante.
15/09/2009 67
El bloque process
case sel iswhen “10” = > s <= a;when “00” = > s <= b;when “01” => s <= c;when others = > s <= d;
end case ;
Sentencia de selección CASE
case expresión iswhen caso1 = >
instruccioneswhen caso2 = >
instrucciones
when others = >instrucciones
end case ;
La expresión de selección debe ser discreta.No puede haber casos duplicados.Se deben cubrir todas las opciones de selección.
15/09/2009 68
Descripción de un registro de desplazamiento
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;--Registro con reset sincrónico, carga paralela y --desplazamiento a la izquierda, prioridades en ese orden.
entity regis isport (
din: in STD_LOGIC_VECTOR (3 downto 0);clk: in STD_LOGIC;r, l, shl: in STD_LOGIC;sli: in STD_LOGIC;dout: out std_logic_vector (3 downto 0)
);end regis;
15/09/2009 69
Registro de desplazamiento: Continuación
architecture register_arch of regis isbeginprocess (clk)variable bout : std_logic_vector (3 downto 0);begin
if ( clk'event and clk = '1') thenif r = ‘1’ then bout := (others => ‘0’);elsif l = ‘1’ then bout := din;elsif shl ='1' then bout := bout (2 downto 0) & sli;end if;end if;dout <= bout;end process;end register_arch;
Flanco ascendente del reloj.
Todas las señales de control son sincrónicas
Operador de concatenación
Local al proceso
El bloque process y las variables
No tienen significado físico
Deben ser declaradas dentro del proceso y son locales a él.
Su asignación es inmediata pero secuencial, al estar en distintas sentencias en el proceso.
Deben tener un valor asignado antes de utilizarlas.
El orden de las sentencias es importante
a := b or c;d := e and a;
Variables vs. Señales
Señales Variables
Sintaxis destino<= fuente destino:= fuente
Utilidad Modelan nodos físicos del circuito
Representan almacenamiento
local
Visibilidad Global (comunicación entre procesos)
Local (dentro del proceso)
Comportamiento Se actualizan al avanzar el tiempo (suspensión proceso)
Se actualizan inmediatamente
15/09/2009 72
Registro de desplazamiento: Continuación
15/09/2009 73
Descripción de un contador binario
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;-- Contador de 8 bits con reset asincrónico carga paralela y -- habilitación de cuenta, con prioridades en ese orden.-- La salida tc indica cuenta máxima.entity contador isport (
din: in STD_LOGIC_VECTOR (7 downto 0);clk: in STD_LOGIC;r, l, en: in STD_LOGIC;tc: out STD_LOGIC;cuenta: out std_logic_vector (7 downto 0)
);end contador;
15/09/2009 74
Contador binario: Continuación
architecture contador_arch of contador issignal bout : std_logic_vector (7 downto 0);beginprocess (clk, r)beginif r = ‘1' then bout <= (others => '0');elsif ( clk'event and clk = '1') thenif l = '1' then bout <= din;elsif en = '1' then bout <= bout +1;end if;end if; end process;cuenta <= bout;tc <= '1' when bout = “11111111” else '0';end contador_arch;
El reset es asincrónico
En la misma arquitectura coexisten distintos estilos de descripción
75
Contador binario: Continuación
Esquemático inferido por el ambiente
Top Related