La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Síntesis Lógica con HDL

Presentaciones similares


Presentación del tema: "Síntesis Lógica con HDL"— Transcripción de la presentación:

1 Síntesis Lógica con HDL
Especificación y Metodología en VHDL

2 ¿Qué es la Síntesis Lógica?
Obtención automática de una descripción arquitectural a partir de una funcional Utiliza un subset del lenguaje HDL (VHDL) => No es sintetizable cualquier descripción El estilo de descripción influye notablemente. Las descripciones deben realizarse pensando en que se van a convertir en puertas reales HDLs más comunes: VHDL y VERILOG Es capaz de optimizar respecto del número de puertas y respecto de la temporización: Relación área/tiempo => Trade-off Síntesis = Traslación a puertas + Optimización

3 Estilos de Descripción (1/2)
En VHDL exiten únicamente 3 estilos definidos: dataflow: Implica una estructura y un comportamiento behavioral: No existe información estructural structural: Se describen las interconexiones de los componentes (comportamiento implícito) Se pueden combinar los estilos anteriores en una misma descripción Estas descripciones hacen referencia a la forma de especificar el objeto de VHDL architecture

4 Estilo de Descripción (2/2)
Hoy en día, el estilo que mejor se adapta a las herramientas de Síntesis Lógica combina los 3 anteriores junto con las experiencia de los diseñadores y las recomendaciones de aquellas: Realizar una partición jerárquica adecuada al diseño Los bloques a sintetizar no deben ser excesivamente grandes Aritmética entera Descripciones explícitas y a nivel de transferencia entre registros (RTL)

5 Ejemplos (1/2) architecture dataflow of ejemplo1 is begin
C<=not(A xor B); end dataflow; Ejemplo: Data_flow architecture behavioral of ejemplo1 is begin process (A,B) begin if (A = B) then C <= ‘1’; else C <= ‘0’; end if; end process; end behavioral; Ejemplo: Behavioral

6 Ejemplos (2/2) A C I XR2 INV B architecture structural of ejemplo1 is
signal I: bit; component XR2, INV,...; begin U0: XR2 port map (I,A,B); U1: INV port map (C,I); end structural; Se declaran señales internas y los componentes que se utilizan Los componentes han de estar definidos en una libreria structural U0 A U1 C I XR2 INV B

7 Variables vs Señales (1/3)
Similitudes: Ambas son objetos de VHDL cuyo valor puede ser cambiado Ambas son sintetizadas como lógica combinacional y/o conexiones En ambos casos existen reglas de ámbito y persistencia como en los lenguajes de programación Diferencias: Las variables se usan exclusivamente dentro de los procesos (process) y subprogramas (procedure y function) Las variables son siempre asignadas a un valor en simulación, por lo que su procesamiento es más rápido Siempre que sea posible, desde el punto de vista de la síntesis lógica, se han de usar variables

8 Variables vs Señales (2/3)
Recomendaciones: Usar señales en operaciones de poca complejidad computacional Usar variables para tipos y expresiones complejas Asignar señales a variables, de forma temporal, siempre que sea posible Usar señales para comunicar procesos No usar NUNCA tipos reales (No son sintetizables) Reservar el tipo INTEGER para operaciones que así lo impongan Intentar usar STD_LOGIC, STD_ULOGIC, BIT Las operaciones tienen una precedencia por defecto, salvo que se usen paréntesis El uso de paréntesis también impacta en el resultado final de la síntesis

9 Variables vs Señales (3/3)
signal A,B,C,X,Y: mi_vector; begin process(A,B,C) C <= A; IGNORADA X <= C + 2; C <= B; PROCESADA Y <= C + 2; end process; signal A,B,X,Y:mi_vector; begin process(A,B) variable C: mi_vector; C:= A; INMEDIATO X <= C + 2; C:= B; INMEDIATO Y <= C + 2; end process; X 2 X 2 + + A B B Y Y + + 2 2

10 Ejemplo SUMADOR a b c d z z = a + b + c + d z = (a + b) + (c + d)

11 Procesos y Sentencias Concurrentes
Sentencia concurrente: Signal S,A:std_logic; S <= A and B; Equivale a una forma abreviada del process Cada sentencia da lugar a un process Siempre señales Se evalua siempre que cambia A y/o B Process: Signal S,A:std_logic; Process (A) begin S <= A and B; end process; Variables o señales Se activa solo si en A se produce un evento Puede haber varios process en paralelo

12 Síntesis de Sentencias Concurrentes (1/3)
Se ejecutan de forma asíncrona, sin un orden prefijado Siempre dentro de una architecture y entre señales Se usan en descripciones de tipo structural, dataflow y/o RTL Ejemplo: A <= B + C; D <= E + F; Este ejemplo produciría el mismo Hw dentro y fuera de un process. Sólo si las señales B, C, E y F estan en la lista de sensibilidad daría los mismos resultados en simulación B A + C E + D F

13 Síntesis de Sentencias Concurrentes (2/3)
El resultado de la síntesis es siempre combinacional Existen 2 formas de asignación de valores en sentencias concurrentes: Condicional: Similar a las sentencias if de los process Selección: Similar a las sentencias case de los process Ejemplo: Z<= A when (X>3) else B when (Y=5) else C; X > 3 Y =5 C Multiplexores con orden de prioridad Z B 1 A 1

14 Síntesis de Sentencias Concurrentes (3/3)
Se deben evitar la realimentación de una señal en la misma sentencia, pues se sintetizan bucles asíncronos A <= B + A; El compilador advierte de esta situación! La existencia de una asignación múltiple a una señal necesita de una función de resolución que indique como se ha de resolver C <= A; C <= B; B A + A A C B

15 Síntesis de Sentencias Secuenciales (VHDL, VERILOG)
Las más utilizadas IF Y CASE. Son más explícitas IF codifica prioridades CASE codifica tablas de verdad y máquinas de estados (FSM) FOR y WHILE son menos utilizadas. Son mas implícitas Operaciones directamente sintetizables: Sumas, restas, incrementos y decrementos Operaciones booleanas

16 IF en Lógica Combinacional
VHDL: process (a,b,sel) begin if(sel = ‘1’) then c <= a; else c <= b; end if; end process; a 1 mux c b sel

17 IF sin ELSE en Expresión Combinacional
VHDL: process(a,sel) begin if(sel = ‘1’) then b <= a; end if; end process; b a D Q E QN sel

18 IF en Lógica Secuencial
VHDL: process begin wait until clk´’event and clk´=‘1’; if(sel = ‘1’) c <= a; else c <= b; end if; end process; a b sel c mux 1 clk D Q CK

19 IF sin ELSE en Lógica Secuencial
VHDL: process begin wait until clk’event and clk=‘1’; if(sel=‘1’) then c <= a; end if; end process; a sel c mux 1 clk D Q CK

20 Condiciones Asíncronas
VHDL: process(clk,reset) begin if(reset=‘0’) then c <= ‘0’; elsif (clk’event and clk =‘1’) if(sel=’1’) then c <= a; end if; end process; mux D Q c a 1 sel CK clr clk reset

21 CASE en Combinacionales
VHDL: process(bcd) begin case(bcd) is when 0=>led=“ ”; when 1=>led=“ ”; when 2=>led=“ ”; when 3=>led=“ ”; when 4=>led=“ ”; when 5=>led=“ ”; when 6=>led=“ ”; when 7=>led=“ ”; when 8=>led=“ ”; when 9=>led=“ ”; when others=>led =“ ”; end case; end process;

22 CASE en Secuenciales. FSM
VHDL: process(clk,reset) begin if(reset=‘0’) then status<=0; elsif (clk’event and clk=‘1’) then case(status) is when 0=>if(c=‘1’) then status<=1; end if; when 1=>status<=2; when 2=>if(c=‘1’) then else status<=0; end case; end process; c=0 c=1 1 c=0 c=X 2 c=1

23 Atributos y Restricciones
Se aplican desde la propia librería de componentes y desde las preferencias del usuario fan-out, hold y setup marcados por la librería Área, frecuencia máxima de trabajo, capacidades marcados por el usuario Influyen en el trade-off del sintetizador Los sintetizadores suelen incorporar una herramienta de análisis de tiempos

24 Flujo Síntesis Lógica SÍNTESIS LIBRERÍA DE COMPONENTES DESCRIPCIÓN
FUNCIONAL RESTRICCIONES SÍNTESIS ESTRUCTURAL INFORME DE CARACTERIZACIÓN

25 Restricciones en el lenguaje HDL
CONCLUSIONES A la hora de especificar para síntesis no hay que perder de vista que el resultado será hardware Restricciones en el lenguaje HDL Restricciones físicas: retardos y área


Descargar ppt "Síntesis Lógica con HDL"

Presentaciones similares


Anuncios Google