VHDL - Departamento de Ingeniería Electrónica

Anuncio
UNIVERSIDAD DE SEVILLA
Dpto. de Ingeniería Electrónica
AREA DE TECNOLOGIA ELECTRONICA
VHDL (1ª parte)
Introducción al lenguaje VHDL
Introducción a los lenguajes HDL y conceptos
básicos de VHDL
Marzo de 2005
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL en la metodología de diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Síntesis de circuitos
1
Bibliografía
Douglas L. Perry. VHDL. McGraw-Hill, 2ª
Edición. 1994.
Apuntes de cátedra
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducció
Introducción
1.2 Los HDL en la metodología de diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Síntesis de circuitos
2
Introducción
-
Cada día aumenta la
complejidad de los
circuitos digitales.
-
El cuello de botella
está en el diseñ
diseño.
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL en la metodologí
metodología de diseñ
diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Síntesis de circuitos
3
Flujo de diseño: Metodología clásica
Flujo de diseño con HDL
4
Flujo de diseño. Ventajas e inconvenientes de HDL
Ventajas
☺ Capacidad de modificación y reutilización
☺ Diseño independiente del dispositivo, tecnología y
software de diseño
☺ Simulación de código muy rápida
☺ Reduce el tiempo de desarrollo y el coste
☺ Diferentes circuitos dependiendo de las restricciones.
Inconvenientes
Se pierde control de la implementación a nivel de
puertas.
Implementaciones lógicas automáticas no óptimas
La calidad de la síntesis depende del software
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL’s en la metodología de diseño
1.3 Niveles de abstracció
abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Síntesis de circuitos
5
Niveles de
abstracción
Estilo descriptivo
(HDL)
Tipo de datos
Nivel funcional
(grandes bloques)
Algorítmico o
descriptivo
Abstracto
Nivel de
transferencia de
registros (RTL)
Flujo de datos
Compuestos
Nivel de puerta
lógica
En forma de
esquema
Bit
Nivel de circuito
Interconexión de
transistores. No es
posible en HDL
Tensión e
intensidad
NIVEL DE DETALLE
Niveles de abstracción en HDLs
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL’s en la metodología de diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseñ
diseño
1.5 VHDL vs. Verilog
1.5 Síntesis de circuitos
6
HDL: Programa o diseño
La sintaxis es muy
similar.
En VHDL no se
programa, se
describe.
Hay que pensar
siempre que la
descripción se
corresponde con
circuitos
funcionando en
paralelo
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL’s en la metodología de diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Síntesis de circuitos
7
VHDL vs. Verilog (RTL)
VHDL
Verilog
• Basado en ADA
• Normalizado por la
IEEE 1076
• Pensado para
descripción precisa
• Incorpora muy
buenas librerías,
contempladas en el
estándar.
• Basado en C
• Propiedad de
CADENCE
• Pensado para
diseño “rápido”
• Muy integrado con el
software de
CADENCE
VHDL vs. Verilog
EXAMPLE: FLIP-FLOP DESIGN
module
flip-flop
(clk,
ff_input, Q)
input clk, reset;
input ff_input;
ff_input
reg Q;
always @ (posedge clk)
clk
Q= ff_input;
always @ (reset)
if (reset=1)
assign Q=0;
else
deassign Q;
end;
endmodule
reset,
Q
FF
reset
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FF IS
PORT (
reset: IN STD_LOGIC;
clk: IN STD_LOGIC;
ff_input: IN STD_LOGIC;
Q: OUT STD_LOGIC
);
END FF;
ARCHITECTURE behavioral OF FF IS
BEGIN
flipflop: PROCESS (reset, clk)
BEGIN
IF reset='1' THEN
Q <= ‘0';
ELSIF clk'event AND clk='1' THEN
Q <= ff_input;
END IF;
END PROCESS;
END behavioral;
8
Tema 1:
Introducción a los lenguajes HDL
1.1 Introducción
1.2 Los HDL’s en la metodología de diseño
1.3 Niveles de abstracción en HDL
1.4 HDL: Programa o diseño
1.5 VHDL vs. Verilog
1.6 Sí
Síntesis de circuitos
Síntesis de circuitos
9
Tema 2:
Estructura de un diseño en VHDL
1.1 Introducció
Introducción y ejemplo simple
1.2 La sección ENTITY
1.3 La sección ARCHITECTURE
1.4 La sección CONFIGURATION
1.5 La sección LIBRARY
Introducción
Lenguaje VHDL:
Lenguaje de descripción de hardware.
En VHDL se describe no se programa.
Permite documentar diseños.
Síntesis Lógica con VHDL:
Diseños reutilizables => Herramienta CAD.
Circuitos diferentes dependiendo de restricciones.
10
Introducción
El VHDL es complejo pero:
El subconjunto necesario para síntesis es muy pequeño.
Solo utilizaremos:
• Asignaciones:
estado_siguiente <= REPOSO ;
• Comparaciones y operadores lógicos
= (igual), /= (no igual), > (mayor que), <= (menor o igual que), etc
And, xor, or, nand, nor, xnor, not, etc
• Sentencia if
If (estado_actual=REPOSO) then …. End if;
• Sentencia case
Introducción
-- -- es comentario
--Zona de declaración de librerías
Declaración de librerías y
LIBRARY nombre_librería;
paquetes
USE librería.paquete_funciones.all;
--Cabecera de la entidad
Definición de la entidad
ENTITY nombre_entity IS
–GENERIC(..........);
–PORT(................);
END nombre_entity;
--Cuerpo de la entidad
ARCHITECTURE nombre_architecture OF nombre_entity IS
Descripción de la
–--Declaración de componentes y señales
arquitectura
–BEGIN
–--Descripción de la funcionalidad
–END nombre_architecture;
--Enlace con las arquitecturas de otras entidades
CONFIGURATION nombre_configuracion OF nombre_entidad IS
Selección
de
la
–FOR nombre_arquitectura
configuración
--Cuerpo de la configuración
END nombre_configuracion;
11
Ejemplo básico
-- Multiplexor de dos entradas
entity mux21 is
port ( e1, e2: IN std_logic;
sel: IN std_logic;
o1: OUT std_logic);
end mux21;
arquitecture A of mux21 is
begin
process(e1,e2, sel)
begin
if (sel=‘0’) then
o1 <= E1;
else
o1<= e2;
endif;
end process;
end A;
Tema 2:
Estructura de un diseño en VHDL
1.1 Introducción y ejemplo simple
1.2 La secció
sección ENTITY
1.3 La sección LIBRARY
1.4 La sección ARCHITECTURE
1.5 La sección CONFIGURATION
12
La sección ENTITY
ENTITY contador IS
GENERIC (
N: integer := 10 );
PORT (
clk: IN STD_LOGIC;
reset: IN STD_LOGIC;
enable: IN STD_LOGIC;
cuenta: OUT STD_LOGIC_VECTOR(N-1 downto 0)
);
La sección ENTITY. Declaración de puertos
Un puerto debe tener:
– Nombre
– Dirección
» IN
» OUT
» INOUT
» BUFFER
– Tipo de dato
13
La sección ENTITY. Declaración de puertos
Ejercicio
IN
IN
IN
IN
A
A
W
B
C
X
OUT
INOUT
D
Z
Zint
BUFFER
OUT
Z <= Zint;
14
Descargar