1 / 25

Síntesis Lógica con HDL

Síntesis Lógica con HDL. Especificación y Metodología en VHDL. ¿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

yates
Télécharger la présentation

Síntesis Lógica con HDL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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 Ejemplos (1/2)

  6. 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 Ejemplos (2/2) 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. signal A,B,C,X,Y: mi_vector; begin process(A,B,C) begin 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; begin C:= A; INMEDIATO X <= C + 2; C:= B; INMEDIATO Y <= C + 2; end process; Variables vs Señales (3/3) X 2 X 2 + + A B B Y Y + + 2 2

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

  11. 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 Procesos y Sentencias Concurrentes

  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 ifde 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 0 Multiplexores con orden de prioridad 0 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; 1 a mux c b 0 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. process begin wait until clk´’event and clk´=‘1’; if(sel = ‘1’) c <= a; else c <= b; end if; end process; 1 a mux D Q c b 0 CK sel clk IF en Lógica Secuencial VHDL:

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

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

  21. process(bcd) begin case(bcd) is when 0=>led=“1111110”; when 1=>led=“1100000”; when 2=>led=“1011011”; when 3=>led=“1110011”; when 4=>led=“1100101”; when 5=>led=“0110111”; when 6=>led=“0111111”; when 7=>led=“1100010”; when 8=>led=“1111111”; when 9=>led=“1110111”; when others=>led =“-------”; end case; end process; CASE en Combinacionales VHDL:

  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 status<=1; else status<=0; end if; end case; end if; end process; c=0 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. LIBRERÍA DE COMPONENTES DESCRIPCIÓN FUNCIONAL RESTRICCIONES SÍNTESIS INFORME DE CARACTERIZACIÓN DESCRIPCIÓN ESTRUCTURAL Flujo Síntesis Lógica

  25. 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

More Related