Clase 5 - VHDL de Sintesis

16
INTRODUCCIÓN A LOS HDLs Fernando Iván Arévalo Ramírez Ingeniería Electrónica Departamento de Automática y Electrónica

description

vhdl

Transcript of Clase 5 - VHDL de Sintesis

Page 1: Clase 5 - VHDL de Sintesis

INTRODUCCIÓN A LOS HDLs

Fernando Iván Arévalo Ramírez

Ingeniería Electrónica

Departamento de Automática y Electrónica

Page 2: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

La síntesis de un circuito a partir de VHDL consiste en

reducir el nivel de abstracción de la descripción de un circuito

hasta convertirlo en una definición puramente estructural.

Al final del proceso de síntesis se debe obtener un circuito

que funcionalmente se comporta igual que la descripción que

de él se ha hecho.

En un principio, cualquier descripción en VHDL es

sintetizable, no importa el nivel de abstracción que la

descripción pueda tener.

AREVALO 2015 Sistemas Programables

Page 3: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

La complejidad del circuito resultante, y también incluso la posibilidad o no de realizar el circuito, va a depender sobre todo del nivel de abstracción inicial que la descripción tenga.

Las herramientas de síntesis se aproximan al circuito final partiendo de la descripción original, reduciendo el nivel de abstracción hasta llegar a un nivel de descripción estructural.

DESCRIPCIÓN COMPORTAMENTAL

DESCRIPCIÓN RTL

DESCRIPCIÓN ESTRUCTURAL

Ecuaciones Lógicas

Mapeo Tecnológico

AREVALO 2015 Sistemas Programables

Page 4: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Las características que se han presentado hasta el momento involucran todas las posibilidades que posee el VHDL como lenguaje pero para llevar un diseño descrito en VHDL a una implementación hardware sintetizable, se debe de tener en cuenta una serie de criterios y utilizar solo una parte de las características del lenguaje.

Asignación de señales: nuevo_estado <= S0;

Asignación de variables: variable := S0;

Comparaciones:

Igualdad, desigualdad: =, /=

Mayor que, menor que: >, <

Mayor o igual que, menor o igual que: >=, <=

Operadores lógicos: AND, OR, NAND, NOR, XOR, XNOR, NOT

AREVALO 2015 Sistemas Programables

Page 5: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Sentencia if: IF X = ’0’ THEN

nuevo_estado <= S0;

ELSE

nuevo_estado <= S2;

END IF;

Sentencias case, when else: CASE current_state IS

WHEN RESET => count_end <= ’0’;

...

WHEN RAMPA1 => count_clk_en <= NOT end_counter;

...

WHEN OTHERS => count_end <= ’-’;

up_down <= ’-’;

END CASE;

AREVALO 2015 Sistemas Programables

Page 6: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Sentencia for: FOR i IN 15 DOWNTO 0 LOOP

IF data_in(i) = ’0’ THEN

pb_temp := ’0’;

ELSE

pb_temp := ’1’;

END IF;

END LOOP;

Bloque process: clock: PROCESS

BEGIN

WAIT FOR 50 ns;

clk <= NOT clk;

END PROCESS;

Clock:

PROCESS(clk)

BEGIN

clk <= NOT clk;

END PROCESS;

AREVALO 2015 Sistemas Programables

Page 7: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

DIFERENCIA ENTRE SEÑAL Y VARIABLE:

ENTITY ej_en IS

PORT(a,b : IN STD_LOGIC_VECTOR (3 DOWNTO 0);

y: OUT STD_LOGIC_VECTOR (4 DOWNTO 0) );

END ej_en;

ARCHITECTURE ej_arch OF ej_en IS

SIGNAL x: integer;

BEGIN

p1: PROCESS(a,b)

VARIABLE c: integer;

BEGIN

c:=a; -- Inmediato

x<=c+2;

c:=b; -- Inmediato

y<=c+2;

END PROCESS p1;

END ej_arch;

AREVALO 2015 Sistemas Programables

Page 8: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Cosas importantes para recordar:

Todo lo que se especifique dentro de un PROCESS es secuencial.

Diferencias señal-variable.

Señales de reloj: • clk='1' AND clk'EVENT --Para flanco de subida

• clk='0' AND clk'EVENT --Para flanco de bajada

Asignaciones únicas.

Evitar IFs anidados.

Utilizar CASE mejor que varios IFs.

Utilizar el estilo indicado para las máquinas de estado.

Minimizar el número de señales en la lista de sensibilidad.

Utilizar los tipos de VHDL que se encuentran definidos en el sintetizador: std_logic, std_logic_vector, std_ulogic,

std_ulogic_vector

AREVALO 2015 Sistemas Programables

Page 9: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas:

El primer paso es ver si un circuito describe lógica combinacional o secuencial.

Un circuito describe lógica combinacional si ante una entrada dada, la salida es siempre la misma.

Un circuito describe lógica secuencial cuando la salida depende de la entrada actual y de las entradas anteriores, (la salida depende de la entrada y del estado del sistema).

AREVALO 2015 Sistemas Programables

Page 10: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas:

Descripción de lógica combinacional: La idea básica es que si en la estructura del lenguaje no introducimos “elementos de memoria” entonces estaremos delante de una descripción combinacional.

La señal que esta siendo asignada no interviene en la asignación: – a<=b WHEN h='1' ELSE c; -- combinacional

– a<=b WHEN h='1' ELSE a; -- secuencial

– a<=b WHEN a='1' ELSE c; -- secuencial

AREVALO 2015 Sistemas Programables

Page 11: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas:

Descripción de lógica combinacional: La idea básica es que si en la estructura del lenguaje no introducimos “elementos de memoria” entonces estaremos delante de una descripción combinacional.

Si la ejecución es concurrente se define lógica combinacional cuando:

-- Secuencial -- Combinacional

d<=b AND a; d<=b AND c;

a<=d OR e; a<=d OR e;

AREVALO 2015 Sistemas Programables

Page 12: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas: Si la descripción es comportamental (PROCESS) se sintetiza

lógica combinacional cuando:

La lista sensible de un proceso incluye todas las señales implicadas en las asignaciones

-- Combinacional -- Secuencial PROCESS(b,c,e,d) PROCESS(b,c,e,d)

BEGIN BEGIN

IF b='1' THEN IF b='1' THEN

d<=c; d<=c; ELSE END IF;

d<=0; a<=d OR e;

END IF; END PROCESS;

a<=d OR e;

END PROCESS;

AREVALO 2015 Sistemas Programables

Page 13: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas: Descripción de lógica secuencial: Un circuito es secuencial si su salida

puede depender del estado del sistema.

Descripción de latches: Hay varias posibilidades.

Cuando en un proceso no se consideran todas las posibles asignaciones se pone un LATCH en esa señal:

-- Biestable tipo D: PROCESS(d,en)

BEGIN

IF (en='1') THEN q<=d;

END IF;

END PROCESS;

AREVALO 2015 Sistemas Programables

Page 14: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas:

Descripción de lógica secuencial: Un circuito es secuencial si su salida puede depender del estado del sistema.

Descripción de latches: Hay varias posibilidades.

Cuando no se especifican todas las señales en la lista sensible:

PROCESS(b)

BEGIN

a<=d OR b; -- d esta "latcheado" por b

END PROCESS;

AREVALO 2015 Sistemas Programables

Page 15: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS

Construcciones básicas:

Descripción de lógica secuencial: Un circuito es secuencial si su salida puede depender del estado del sistema.

Descripción de registros: Los registros son como los latches pero la entrada pasa a la salida cuando se produce un flanco de la señal de reloj:

PROCESS(clk,reset) PROCESS(clk)

BEGIN BEGIN

IF reset='1' THEN IF clk='1' THEN

q<='0'; q<=d;

ELSIF clk'EVENT AND clk='1' THEN END IF;

q<=d; END PROCESS;

END IF;

END PROCESS;

Solo cuando en

las lista sensible

se definen

varias señales

AREVALO 2015 Sistemas Programables

Page 16: Clase 5 - VHDL de Sintesis

HDL ESTÁNDAR: VHDL

VHDL PARA SÍNTESIS Errores más comunes:

• La asignación a una misma variable en procesos diferentes.

• La asignación a una misma señal en instrucciones concurrentes diferentes o en PROCESS diferentes.

• Pensar que las señales se comportan como variables dentro de los procesos.

• Confusión en la diferencia del lugar de declaración de variables y señales.

• Al interfazar botones o pulsos de entrada con duración impredecible, a veces se olvida que el botón se mantiene pulsado durante algún tiempo que normalmente es mucho mayor que la frecuencia del reloj y por supuesto muchísimo mayor que los tiempos de respuesta de los circuitos(Tiempos de Propagación).

AREVALO 2015 Sistemas Programables