760 likes | 989 Views
José Alejandro Piñeiro Riobó. } IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO ~. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones. ALGORITMO CORDIC.
E N D
José Alejandro Piñeiro Riobó }IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO~ 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC • Algoritmo iterativo para la rotación de un vector en un sistema de coordenadas lineales, circulares o hiperbólicas. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Permite realizar transformaciones de coordenadas y el cálculo de una gran variedad de funciones trigonométricas e hiperbólicas, entre otras. • Utilizado en procesado digital de señales y gráficos 3D, álgebra matricial, radar y robótica, entre otras aplicaciones.
ALGORITMO CORDIC • Algoritmo iterativo para la rotación de un vector en un sistema de coordenadas lineales, circulares o hiperbólicas. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Permite realizar transformaciones de coordenadas y el cálculo de una gran variedad de funciones trigonométricas e hiperbólicas, entre otras. • Utilizado en procesado digital de señales y gráficos 3D, álgebra matricial, radar y robótica, entre otras aplicaciones.
ALGORITMO CORDIC • Algoritmo iterativo para la rotación de un vector en un sistema de coordenadas lineales, circulares o hiperbólicas. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Permite realizar transformaciones de coordenadas y el cálculo de una gran variedad de funciones trigonométricas e hiperbólicas, entre otras. • Utilizado en procesado digital de señales y gráficos 3D, álgebra matricial, radar y robótica, entre otras aplicaciones.
ALGORITMO CORDIC • Algoritmo iterativo para la rotación de un vector en un sistema de coordenadas lineales, circulares o hiperbólicas. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Permite realizar transformaciones de coordenadas y el cálculo de una gran variedad de funciones trigonométricas e hiperbólicas, entre otras. • Utilizado en procesado digital de señales y gráficos 3D, álgebra matricial, radar y robótica, entre otras aplicaciones.
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC • Formulación convencional: recurrencia radix 2(se extrae 1 bit del resultado en cada iteración). • Iteraciones lentas. • Elevada latencia para un tamaño de palabra elevado. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Soluciones: • Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit). • Empleo de recurrencias con un radix alto r = 2b (se extraen b bits del resultado en cada iteración).
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Modo vectorización.- Rotación del vector inicial hasta que se sitúa sobre el eje de coordenadas X. Resultados: xN+1=módulo y zN+1=argumento. • Fundamento: descomposición del ángulo de rotación q en una suma de ángulos elementales: • Los coeficientes si toman valores enteros en el intervalo {-(r -1), ... , 0, ... , (r -1)}, siendo el radix r = 2b. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Modo vectorización.- Rotación del vector inicial hasta que se sitúa sobre el eje de coordenadas X. Resultados: xN+1=módulo y zN+1=argumento. • Fundamento: descomposición del ángulo de rotación q en una suma de ángulos elementales: • Los coeficientes si toman valores enteros en el intervalo {-(r -1), ... , 0, ... , (r -1)}, siendo el radix r = 2b. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
a1 a3 a2 ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones Y q =a1+a2+a3+... X
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Modo vectorización.- Rotación del vector inicial hasta que se sitúa sobre el eje de coordenadas X. Resultados: xN+1=módulo y zN+1=argumento. • Fundamento: descomposición del ángulo de rotación q en una suma de ángulos elementales: • Los coeficientes si toman valores enteros en el intervalo {-(r -1), ... , 0, ... , (r -1)}, siendo el radix r = 2b. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Expresión de las recurrencias: d[i+1] = d[i] +sir -2iw[i] w[i+1] = r(w[i] -sid[i]) z[i+1] = z[i] + tan-1(sir -i) • con d[1] =xin, w[1] = r yin, z[1] = 0. • Los coeficientes si se seleccionan mediante el redondeo de w[i] truncado a t bits fraccionales: si=round (w[i]t ) 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Expresión de las recurrencias: d[i+1] = d[i] +sir -2iw[i] w[i+1] = r(w[i] -sid[i]) z[i+1] = z[i] + tan-1(sir -i) • con d[1] =xin, w[1] = r yin, z[1] = 0. • Los coeficientes si se seleccionan mediante el redondeo de w[i] truncado a t bits fraccionales: si=round (w[i]t ) 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Expresión de las recurrencias: d[i+1] = d[i] +sir -2iw[i] w[i+1] = r(w[i] -sid[i]) z[i+1] = z[i] + tan-1(sir -i) • con d[1] =xin, w[1] = r yin, z[1] = 0. • Los coeficientes si se seleccionan mediante el redondeo de w[i] truncado a t bits fraccionales: si=round (w[i]t ) 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Necesidad de dos escalados de la recurrencia (empleo de los factores M1 y M2) para asegurar convergencia. • Uno antes y otro después de la primera microrrotación. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R = 2B> 2ëb/2û+1, para t >2 • Extensión del rango de convergencia. • Comparación de los F bits más significativos de xin e yin. • Si yin >xin+2-F, intercambio, z[1] =p/2 y se decrementa.
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Necesidad de dos escalados de la recurrencia (empleo de los factores M1 y M2) para asegurar convergencia. • Uno antes y otro después de la primera microrrotación. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R = 2B> 2ëb/2û+1, para t >2 • Extensión del rango de convergencia. • Comparación de los F bits más significativos de xin e yin. • Si yin >xin+2-F, intercambio, z[1] =p/2 y se decrementa.
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Necesidad de dos escalados de la recurrencia (empleo de los factores M1 y M2) para asegurar convergencia. • Uno antes y otro después de la primera microrrotación. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R = 2B> 2ëb/2û+1, para t >2 • Extensión del rango de convergencia. • Comparación de los F bits más significativos de xin e yin. • Si yin >xin+2-F, intercambio, z[1] =p/2 y se decrementa.
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Necesidad de dos escalados de la recurrencia (empleo de los factores M1 y M2) para asegurar convergencia. • Uno antes y otro después de la primera microrrotación. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones • Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R = 2B> 2ëb/2û+1, para t >2 • Extensión del rango de convergencia. • Comparación de los F bits más significativos de xin e yin. • Si yin >xin+2-F, intercambio, z[1] =p/2 y se decrementa.
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Existencia de un factor de escala Ki en las variables d y w en cada microrrotación. • El factor de escala global viene dado por: • K depende del ángulo. • Cómputo de ln(K -1): g[i+1] = g[i] - (1/2)ln(1+si2r -2i). • Compensación evaluando la función exponencial: xr = xC·exp(ln(K -1)) = xC·K -1 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Existencia de un factor de escala Ki en las variables d y w en cada microrrotación. • El factor de escala global viene dado por: • K depende del ángulo. • Cómputo de ln(K -1): g[i+1] = g[i] - (1/2)ln(1+si2r -2i). • Compensación evaluando la función exponencial: xr = xC·exp(ln(K -1)) = xC·K -1 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Existencia de un factor de escala Ki en las variables d y w en cada microrrotación. • El factor de escala global viene dado por: • K depende del ángulo. • Cómputo de ln(K -1): g[i+1] = g[i] - (1/2)ln(1+si2r -2i). • Compensación evaluando la función exponencial: xr = xC·exp(ln(K -1)) = xC·K -1 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Existencia de un factor de escala Ki en las variables d y w en cada microrrotación. • El factor de escala global viene dado por: • K depende del ángulo. • Cómputo de ln(K -1): g[i+1] = g[i] - (1/2)ln(1+si2r -2i). • Compensación evaluando la función exponencial: xr = xC·exp(ln(K -1)) = xC·K -1 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN • Existencia de un factor de escala Ki en las variables d y w en cada microrrotación. • El factor de escala global viene dado por: • K depende del ángulo. • Cómputo de ln(K -1): g[i+1] = g[i] - (1/2)ln(1+si2r -2i). • Compensación evaluando la función exponencial: xr = xC·exp(ln(K -1)) = xC·K -1 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ARQUITECTURA • Arquitectura palabra-serie. • Formato de punto fijo. • Arquitectura para el cálculo del argumento del vector de entrada: función tan-1(yin/xin). • Arquitectura para el cálculo de módulo y argumento: (xin2+yin2)½ y tan-1(yin/xin). 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ARQUITECTURA • Arquitectura palabra-serie. • Formato de punto fijo. • Arquitectura para el cálculo del argumento del vector de entrada: función tan-1(yin/xin). • Arquitectura para el cálculo de módulo y argumento: (xin2+yin2)½ y tan-1(yin/xin). 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ARQUITECTURA • Arquitectura palabra-serie. • Formato de punto fijo. • Arquitectura para el cálculo del argumento del vector de entrada: función tan-1(yin/xin). • Arquitectura para el cálculo de módulo y argumento: (xin2+yin2)½ y tan-1(yin/xin). 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ARQUITECTURA • Arquitectura palabra-serie. • Formato de punto fijo. • Arquitectura para el cálculo del argumento del vector de entrada: función tan-1(yin/xin). • Arquitectura para el cálculo de módulo y argumento: (xin2+yin2)½ y tan-1(yin/xin). 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
d[i+1] = d[i] +sir -2iw[i] w[i+1] = r(w[i] -sid[i]) z[i+1] = z[i] + tan-1(sir -i) d[j+1] = d[j] + ejd[j]r -j g[j+1] = r (g[j] - rj ln(1+ejr -j)) • Arquitectura completa = Arquitectura argumento (modificada)+ vía g. g[i+1] = g[i] - (1/2)ln(1+si2r -2i)
Bloques de M1 y M2.- Obtención de los factores de escalado. • Bloques de si y ej.- Selección de los coeficientes mediante redondeo. • Vías d y w.- Realización de los escalados y las microrrotaciones. • Vía z.- Determinación del ángulo elemental en cada microrrotación y cómputo del ángulo total. • Vía g.- Cómputo de ln(K -1) y, junto con la vía d, realización de las iteraciones de compensación. • Unidad de control (FSM). g
IMPLEMENTACIÓN • Parámetros de diseño. • Precisión: n= 32 bits. • Radix r = 512, valor t= 3 bits . • Radix R = 32, valor F= 5 bits. • Tamaño de palabra interno: q= 38 bits fraccionales. • Es necesario realizar N= 4 microrrotaciones para alcanzar la precisión de n= 32 bits. n ³B+ (N -1)·b 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Parámetros de diseño. • Precisión: n= 32 bits. • Radix r = 512, valor t= 3 bits . • Radix R = 32, valor F= 5 bits. • Tamaño de palabra interno: q= 38 bits fraccionales. • Es necesario realizar N= 4 microrrotaciones para alcanzar la precisión de n= 32 bits. n ³B+ (N -1)·b 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Parámetros de diseño. • Precisión: n= 32 bits. • Radix r = 512, valor t= 3 bits . • Radix R = 32, valor F= 5 bits. • Tamaño de palabra interno: q= 38 bits fraccionales. • Es necesario realizar N= 4 microrrotaciones para alcanzar la precisión de n= 32 bits. n ³B+ (N -1)·b 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Parámetros de diseño. • Precisión: n= 32 bits. • Radix r = 512, valor t= 3 bits . • Radix R = 32, valor F= 5 bits. • Tamaño de palabra interno: q= 38 bits fraccionales. • Es necesario realizar N= 4 microrrotaciones para alcanzar la precisión de n= 32 bits. n ³B+ (N -1)·b 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Flujo de diseño basado en VHDL. • Herramientas CAD utilizadas en el diseño lógico: • HDLdesk, de Cadence (simulación funcional de los componentes). • Design Analyzer, de Synopsys (síntesis lógica y simulación pre-layout). • Librería de celdas estándar 0.7 mm CMOS doble metal de ES2. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Flujo de diseño basado en VHDL. • Herramientas CAD utilizadas en el diseño lógico: • HDLdesk, de Cadence (simulación funcional de los componentes). • Design Analyzer, de Synopsys (síntesis lógica y simulación pre-layout). • Librería de celdas estándar 0.7 mm CMOS doble metal de ES2. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Flujo de diseño basado en VHDL. • Herramientas CAD utilizadas en el diseño lógico: • HDLdesk, de Cadence (simulación funcional de los componentes). • Design Analyzer, de Synopsys (síntesis lógica y simulación pre-layout). • Librería de celdas estándar 0.7 mm CMOS doble metal de ES2. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Flujo de diseño basado en VHDL. • Herramientas CAD utilizadas en el diseño lógico: • HDLdesk, de Cadence (simulación funcional de los componentes). • Design Analyzer, de Synopsys (síntesis lógica y simulación pre-layout). • Librería de celdas estándar 0.7 mm CMOS doble metal de ES2. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Flujo de diseño basado en VHDL. • Herramientas CAD utilizadas en el diseño lógico: • HDLdesk, de Cadence (simulación funcional de los componentes). • Design Analyzer, de Synopsys (síntesis lógica y simulación pre-layout). • Librería de celdas estándar 0.7 mm CMOS doble metal de ES2. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Multiplicadores-Acumuladores (MAC): • Evaluación de la operación: h=a +b ·c. • Representación de los operandos: • Complemento a dos: sumando ( a ) y multiplicando ( c ). • SD-radix 4: multiplicador ( b); reduce a la mitad el número de productos parciales a acumular. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Multiplicadores-Acumuladores (MAC): • Evaluación de la operación: h=a +b ·c. • Representación de los operandos: • Complemento a dos: sumando ( a ) y multiplicando ( c ). • SD-radix 4: multiplicador ( b); reduce a la mitad el número de productos parciales a acumular. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Multiplicadores-Acumuladores (MAC): • Evaluación de la operación: h=a +b ·c. • Representación de los operandos: • Complemento a dos: sumando ( a ) y multiplicando ( c ). • SD-radix 4: multiplicador ( b); reduce a la mitad el número de productos parciales a acumular. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
IMPLEMENTACIÓN • Multiplicadores-Acumuladores (MAC): • Evaluación de la operación: h=a +b ·c. • Representación de los operandos: • Complemento a dos: sumando ( a ) y multiplicando ( c ). • SD-radix 4: multiplicador ( b); reduce a la mitad el número de productos parciales a acumular. 1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones
ARCHITECTURE behave OF mac_d IS -- Declaración del componente CSA_TREE -- Declaración de señales y constantes for U1 : csa_tree Use Entity work.csa_tree(crypt); BEGIN partial1:process(b) begin for i in 0 to 7 loop b0(i)<=b(3*i); b1(i)<=b(3*i+1); b2(i)<=b(3*i+2); end loop; end process partial1; partial2:process(b0,b1,b2,c) begin for i in 0 to 7 loop res(i)(0)<=b0(i) xor ((c(0) nand b1(i)) nand ('0' nand b2(i))); for j in 1 to 40 loop res(i)(j)<=b0(i) xor ((c(j) nand b1(i)) nand (c(j-1) nand b2(i))); end loop; res(i)(41)<=b0(i) xor ((c(40) nand b1(i)) nand (c(40) nand b2(i))); end loop; end process partial2; partial3:process(res,add_ct,a) begin if add_ct='0' then PP1(57 downto 42)<=(others=>res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48)<=(others=>a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0)<=(others=>’0’); end if; PP2(57 downto 44)<=(others=>res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46)<=(others=>res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48)<=(others=>res(3)(41)); PP4(47 downto 6)<= res(3); -- Sigue la construcción de prod. parc. hasta PP8 end process partial3; U1 : csa_tree port map (PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8,ssm,crr); END behave;
ARCHITECTURE behave OF mac_d IS -- Declaración del componente CSA_TREE -- Declaración de señales y constantes for U1 : csa_tree Use Entity work.csa_tree(crypt); BEGIN partial1:process(b) begin for i in 0 to 7 loop b0(i)<=b(3*i); b1(i)<=b(3*i+1); b2(i)<=b(3*i+2); end loop; end process partial1; partial2:process(b0,b1,b2,c) begin for i in 0 to 7 loop res(i)(0)<=b0(i) xor ((c(0) nand b1(i)) nand ('0' nand b2(i))); for j in 1 to 40 loop res(i)(j)<=b0(i) xor ((c(j) nand b1(i)) nand (c(j-1) nand b2(i))); end loop; res(i)(41)<=b0(i) xor ((c(40) nand b1(i)) nand (c(40) nand b2(i))); end loop; end process partial2; partial3:process(res,add_ct,a) begin if add_ct='0' then PP1(57 downto 42)<=(others=>res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48)<=(others=>a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0)<=(others=>’0’); end if; PP2(57 downto 44)<=(others=>res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46)<=(others=>res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48)<=(others=>res(3)(41)); PP4(47 downto 6)<= res(3); -- Sigue la construcción de prod. parc. hasta PP8 end process partial3; U1 : csa_tree port map (PP1,PP2,PP3,PP4,PP5,PP6,PP7,PP8,ssm,crr); END behave;