Title: Sin t
 1José 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 
 2ALGORITMO 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.
3ALGORITMO 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.
4ALGORITMO 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.
5ALGORITMO 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.
6ALGORITMO 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).
7ALGORITMO 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).
8ALGORITMO 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).
9ALGORITMO 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).
10ALGORITMO 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).
11ALGORITMO 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).
12ALGORITMO 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 xN1módulo y zN1argumento.
-  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 
 13ALGORITMO 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 xN1módulo y zN1argumento.
-  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 
 14ALGORITMO CORDIC CON RADIX ALTO EN MODO 
VECTORIZACIÓN
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones
Y
q  a1  a2  a3  ...
X 
 15ALGORITMO 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 xN1módulo y zN1argumento.
-  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 
 16ALGORITMO CORDIC CON RADIX ALTO EN MODO 
VECTORIZACIÓN
-  Expresión de las recurrencias 
-  di1  di  sir -2iwi 
-  wi1  r(wi - sidi) 
-  zi1  zi  tan-1(sir -i) 
- con d1  xin, w1  r yin, z1  0. 
- Los coeficientes si se seleccionan mediante el 
 redondeo de wi truncado a t bits fraccionales
- si  round (wit ) 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 17ALGORITMO CORDIC CON RADIX ALTO EN MODO 
VECTORIZACIÓN
-  Expresión de las recurrencias 
-  di1  di  sir -2iwi 
-  wi1  r(wi - sidi) 
-  zi1  zi  tan-1(sir -i) 
- con d1  xin, w1  r yin, z1  0. 
- Los coeficientes si se seleccionan mediante el 
 redondeo de wi truncado a t bits fraccionales
- si  round (wit ) 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 18ALGORITMO CORDIC CON RADIX ALTO EN MODO 
VECTORIZACIÓN
-  Expresión de las recurrencias 
-  di1  di  sir -2iwi 
-  wi1  r(wi - sidi) 
-  zi1  zi  tan-1(sir -i) 
- con d1  xin, w1  r yin, z1  0. 
- Los coeficientes si se seleccionan mediante el 
 redondeo de wi truncado a t bits fraccionales
- si  round (wit ) 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 19ALGORITMO 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 gt 2ëb/2û1, para t gt2 
- Extensión del rango de convergencia. 
- Comparación de los F bits más significativos de 
 xin e yin.
- Si yin gt xin2-F, intercambio, z1  p/2 y se 
 decrementa.
20ALGORITMO 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 gt 2ëb/2û1, para t gt2 
- Extensión del rango de convergencia. 
- Comparación de los F bits más significativos de 
 xin e yin.
- Si yin gt xin2-F, intercambio, z1  p/2 y se 
 decrementa.
21ALGORITMO 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 gt 2ëb/2û1, para t gt2 
- Extensión del rango de convergencia. 
- Comparación de los F bits más significativos de 
 xin e yin.
- Si yin gt xin2-F, intercambio, z1  p/2 y se 
 decrementa.
22ALGORITMO 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 gt 2ëb/2û1, para t gt2 
- Extensión del rango de convergencia. 
- Comparación de los F bits más significativos de 
 xin e yin.
- Si yin gt xin2-F, intercambio, z1  p/2 y se 
 decrementa.
23ALGORITMO 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) gi1  gi - 
 (1/2)ln(1si2r -2i).
-  Compensación evaluando la función exponencial 
-  xr  xCexp(ln(K -1))  xCK -1 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 24ALGORITMO 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) gi1  gi - 
 (1/2)ln(1si2r -2i).
-  Compensación evaluando la función exponencial 
-  xr  xCexp(ln(K -1))  xCK -1 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 25ALGORITMO 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) gi1  gi - 
 (1/2)ln(1si2r -2i).
-  Compensación evaluando la función exponencial 
-  xr  xCexp(ln(K -1))  xCK -1 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 26ALGORITMO 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) gi1  gi - 
 (1/2)ln(1si2r -2i).
-  Compensación evaluando la función exponencial 
-  xr  xCexp(ln(K -1))  xCK -1 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 27ALGORITMO 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) gi1  gi - 
 (1/2)ln(1si2r -2i).
-  Compensación evaluando la función exponencial 
-  xr  xCexp(ln(K -1))  xCK -1 
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 28(No Transcript) 
 29ARQUITECTURA
-  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 (xin2yin2)½ y tan-1(yin/xin).
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 30ARQUITECTURA
-  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 (xin2yin2)½ y tan-1(yin/xin).
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 31ARQUITECTURA
-  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 (xin2yin2)½ y tan-1(yin/xin).
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 32ARQUITECTURA
-  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 (xin2yin2)½ y tan-1(yin/xin).
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 33- Arquitectura completa  Arquitectura argumento 
 (modificada)  vía g.
gi1  gi - (1/2)ln(1si2r -2i) 
 34-  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.
 g 
 35IMPLEMENTACIÓ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 
 36IMPLEMENTACIÓ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 
 37IMPLEMENTACIÓ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 
 38IMPLEMENTACIÓ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 
 39IMPLEMENTACIÓ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 
 40IMPLEMENTACIÓ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 
 41IMPLEMENTACIÓ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 
 42IMPLEMENTACIÓ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 
 43IMPLEMENTACIÓ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 
 44IMPLEMENTACIÓ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 
 45IMPLEMENTACIÓ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 
 46IMPLEMENTACIÓ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 
 47IMPLEMENTACIÓ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 
 48(No Transcript) 
 49ARCHITECTURE 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 partial1process(b) 
begin for i in 0 to 7 
loop b0(i)ltb(3i) b1(i)ltb(3i1) b2(i)ltb(3
i2) end loop end process 
partial1 partial2process(b0,b1,b2,c) begin for
 i in 0 to 7 loop res(i)(0)ltb0(i) xor 
((c(0) nand b1(i)) nand ('0' nand b2(i))) 
 for j in 1 to 40 loop res(i)(j)ltb0(i) xor 
((c(j) nand b1(i)) nand (c(j-1) nand 
b2(i))) end loop 
res(i)(41)ltb0(i) xor ((c(40) nand b1(i)) nand 
(c(40) nand b2(i))) end loop end process 
partial2
 partial3process(res,add_ct,a) begin if 
add_ct'0' then PP1(57 downto 
42)lt(othersgtres(0)(41)) PP1(41 
downto 0)lt res(0) else PP1(57 downto 
48)lt(othersgta(40)) PP1(47 downto 
7)lt a PP1(6 downto 
0)lt(othersgt0) end if PP2(57 
downto 44)lt(othersgtres(1)(41)) 
PP2(43 downto 2)lt res(1) PP3(57 
downto 46)lt(othersgtres(2)(41)) 
PP3(45 downto 4)lt res(2) PP4(57 
downto 48)lt(othersgtres(3)(41)) 
PP4(47 downto 6)lt 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 
 50ARCHITECTURE 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 partial1process(b) 
begin for i in 0 to 7 
loop b0(i)ltb(3i) b1(i)ltb(3i1) b2(i)ltb(3
i2) end loop end process 
partial1 partial2process(b0,b1,b2,c) begin for
 i in 0 to 7 loop res(i)(0)ltb0(i) xor 
((c(0) nand b1(i)) nand ('0' nand b2(i))) 
 for j in 1 to 40 loop res(i)(j)ltb0(i) xor 
((c(j) nand b1(i)) nand (c(j-1) nand 
b2(i))) end loop 
res(i)(41)ltb0(i) xor ((c(40) nand b1(i)) nand 
(c(40) nand b2(i))) end loop end process 
partial2
 partial3process(res,add_ct,a) begin if 
add_ct'0' then PP1(57 downto 
42)lt(othersgtres(0)(41)) PP1(41 
downto 0)lt res(0) else PP1(57 downto 
48)lt(othersgta(40)) PP1(47 downto 
7)lt a PP1(6 downto 
0)lt(othersgt0) end if PP2(57 
downto 44)lt(othersgtres(1)(41)) 
PP2(43 downto 2)lt res(1) PP3(57 
downto 46)lt(othersgtres(2)(41)) 
PP3(45 downto 4)lt res(2) PP4(57 
downto 48)lt(othersgtres(3)(41)) 
PP4(47 downto 6)lt 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 
 51ARCHITECTURE 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 partial1process(b) 
begin for i in 0 to 7 
loop b0(i)ltb(3i) b1(i)ltb(3i1) b2(i)ltb(3
i2) end loop end process 
partial1 partial2process(b0,b1,b2,c) begin for
 i in 0 to 7 loop res(i)(0)ltb0(i) xor 
((c(0) nand b1(i)) nand ('0' nand b2(i))) 
 for j in 1 to 40 loop res(i)(j)ltb0(i) xor 
((c(j) nand b1(i)) nand (c(j-1) nand 
b2(i))) end loop 
res(i)(41)ltb0(i) xor ((c(40) nand b1(i)) nand 
(c(40) nand b2(i))) end loop end process 
partial2
 partial3process(res,add_ct,a) begin if 
add_ct'0' then PP1(57 downto 
42)lt(othersgtres(0)(41)) PP1(41 
downto 0)lt res(0) else PP1(57 downto 
48)lt(othersgta(40)) PP1(47 downto 
7)lt a PP1(6 downto 
0)lt(othersgt0) end if PP2(57 
downto 44)lt(othersgtres(1)(41)) 
PP2(43 downto 2)lt res(1) PP3(57 
downto 46)lt(othersgtres(2)(41)) 
PP3(45 downto 4)lt res(2) PP4(57 
downto 48)lt(othersgtres(3)(41)) 
PP4(47 downto 6)lt 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 
 52ARCHITECTURE 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 partial1process(b) 
begin for i in 0 to 7 
loop b0(i)ltb(3i) b1(i)ltb(3i1) b2(i)ltb(3
i2) end loop end process 
partial1 partial2process(b0,b1,b2,c) begin for
 i in 0 to 7 loop res(i)(0)ltb0(i) xor 
((c(0) nand b1(i)) nand ('0' nand b2(i))) 
 for j in 1 to 40 loop res(i)(j)ltb0(i) xor 
((c(j) nand b1(i)) nand (c(j-1) nand 
b2(i))) end loop 
res(i)(41)ltb0(i) xor ((c(40) nand b1(i)) nand 
(c(40) nand b2(i))) end loop end process 
partial2
 partial3process(res,add_ct,a) begin if 
add_ct'0' then PP1(57 downto 
42)lt(othersgtres(0)(41)) PP1(41 
downto 0)lt res(0) else PP1(57 downto 
48)lt(othersgta(40)) PP1(47 downto 
7)lt a PP1(6 downto 
0)lt(othersgt0) end if PP2(57 
downto 44)lt(othersgtres(1)(41)) 
PP2(43 downto 2)lt res(1) PP3(57 
downto 46)lt(othersgtres(2)(41)) 
PP3(45 downto 4)lt res(2) PP4(57 
downto 48)lt(othersgtres(3)(41)) 
PP4(47 downto 6)lt 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 
 53ARCHITECTURE 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 partial1process(b) 
begin for i in 0 to 7 
loop b0(i)ltb(3i) b1(i)ltb(3i1) b2(i)ltb(3
i2) end loop end process 
partial1 partial2process(b0,b1,b2,c) begin for
 i in 0 to 7 loop res(i)(0)ltb0(i) xor 
((c(0) nand b1(i)) nand ('0' nand b2(i))) 
 for j in 1 to 40 loop res(i)(j)ltb0(i) xor 
((c(j) nand b1(i)) nand (c(j-1) nand 
b2(i))) end loop 
res(i)(41)ltb0(i) xor ((c(40) nand b1(i)) nand 
(c(40) nand b2(i))) end loop end process 
partial2
 partial3process(res,add_ct,a) begin if 
add_ct'0' then PP1(57 downto 
42)lt(othersgtres(0)(41)) PP1(41 
downto 0)lt res(0) else PP1(57 downto 
48)lt(othersgta(40)) PP1(47 downto 
7)lt a PP1(6 downto 
0)lt(othersgt0) end if PP2(57 
downto 44)lt(othersgtres(1)(41)) 
PP2(43 downto 2)lt res(1) PP3(57 
downto 46)lt(othersgtres(2)(41)) 
PP3(45 downto 4)lt res(2) PP4(57 
downto 48)lt(othersgtres(3)(41)) 
PP4(47 downto 6)lt 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 
 54RESULTADOS
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones
Tabla 1. Estimación de área y retardo de los 
principales componentes. 
 55RESULTADOS
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones
Tabla 2. Aportación de cada vía al área total. 
 56RESULTADOS
-  Camino crítico arquitectura argumento 
- RA1  Recodificación  mux2  Inverter  MAC_w  
 mux10  reg_w aprox. 29 ns ( 11.5 tfa  1 tfa
 2.56 ns).
-  Camino crítico arquitectura módulo y argumento 
- RA1  Mod  Tabla Ai  mux15  mux19  CSA_g  
 mux17  reg_g aprox. 32 ns (  12.5 tfa).
- Segundo escalado dividido en dos ciclos caminos 
 de 28 y 21 ns, respectivamente.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 57RESULTADOS
-  Camino crítico arquitectura argumento 
- RA1  Recodificación  mux2  Inverter  MAC_w  
 mux10  reg_w aprox. 29 ns ( 11.5 tfa  1 tfa
 2.56 ns).
-  Camino crítico arquitectura módulo y argumento 
- RA1  Mod  Tabla Ai  mux15  mux19  CSA_g  
 mux17  reg_g aprox. 32 ns (  12.5 tfa).
- Segundo escalado dividido en dos ciclos caminos 
 de 28 y 21 ns, respectivamente.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 58RESULTADOS
-  Camino crítico arquitectura argumento 
- RA1  Recodificación  mux2  Inverter  MAC_w  
 mux10  reg_w aprox. 29 ns ( 11.5 tfa  1 tfa
 2.56 ns).
-  Camino crítico arquitectura módulo y argumento 
- RA1  Mod  Tabla Ai  mux15  mux19  CSA_g  
 mux17  reg_g aprox. 32 ns (  12.5 tfa).
- Segundo escalado dividido en dos ciclos caminos 
 de 28 y 21 ns, respectivamente.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 59RESULTADOS
-  Camino crítico arquitectura argumento 
- RA1  Recodificación  mux2  Inverter  MAC_w  
 mux10  reg_w aprox. 29 ns ( 11.5 tfa  1 tfa
 2.56 ns).
-  Camino crítico arquitectura módulo y argumento 
- RA1  Mod  Tabla Ai  mux15  mux19  CSA_g  
 mux17  reg_g aprox. 32 ns (  12.5 tfa).
- Segundo escalado dividido en dos ciclos caminos 
 de 28 y 21 ns, respectivamente.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 60RESULTADOS
-  Camino crítico arquitectura argumento 
- RA1  Recodificación  mux2  Inverter  MAC_w  
 mux10  reg_w aprox. 29 ns ( 11.5 tfa  1 tfa
 2.56 ns).
-  Camino crítico arquitectura módulo y argumento 
- RA1  Mod  Tabla Ai  mux15  mux19  CSA_g  
 mux17  reg_g aprox. 32 ns (  12.5 tfa).
- Segundo escalado dividido en dos ciclos caminos 
 de 28 y 21 ns, respectivamente.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 61RESULTADOS
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones
- Tabla 3(a). Comparativa con otras arquitecturas 
 CORDIC.
- Cálculo del argumento
62RESULTADOS
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones
- Tabla 3(b). Comparativa con otras arquitecturas 
 CORDIC.
- Cálculo de módulo y argumento
63CONCLUSIONES
-  Implementación VLSI de una arquitectura serie, 
 en punto fijo, precisión de 32 bits, de CORDIC en
 modo vectorización y coordenadas circulares.
-  Recurrencia con radix alto (r  512) en las 
 microrrotaciones, con aritmética redundante.
-  Selección mediante redondeo de los coeficientes 
 si y ej, y realización de dos escalados de la
 recurrencia para garantizar convergencia.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 64CONCLUSIONES
-  Implementación VLSI de una arquitectura serie, 
 en punto fijo, precisión de 32 bits, de CORDIC en
 modo vectorización y coordenadas circulares.
-  Recurrencia con radix alto (r  512) en las 
 microrrotaciones, con aritmética redundante.
-  Selección mediante redondeo de los coeficientes 
 si y ej, y realización de dos escalados de la
 recurrencia para garantizar convergencia.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 65CONCLUSIONES
-  Implementación VLSI de una arquitectura serie, 
 en punto fijo, precisión de 32 bits, de CORDIC en
 modo vectorización y coordenadas circulares.
-  Recurrencia con radix alto (r  512) en las 
 microrrotaciones, con aritmética redundante.
-  Selección mediante redondeo de los coeficientes 
 si y ej, y realización de dos escalados de la
 recurrencia para garantizar convergencia.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 66CONCLUSIONES
-  Implementación VLSI de una arquitectura serie, 
 en punto fijo, precisión de 32 bits, de CORDIC en
 modo vectorización y coordenadas circulares.
-  Recurrencia con radix alto (r  512) en las 
 microrrotaciones, con aritmética redundante.
-  Selección mediante redondeo de los coeficientes 
 si y ej, y realización de dos escalados de la
 recurrencia para garantizar convergencia.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 67CONCLUSIONES
-  Flujo de diseño basado en VHDL, con ayuda de 
 herramientas CAD, y tecnología de diseño de 0.7
 mm.
-  Aumento de velocidad entre un 50 y un 100 con 
 respecto a arquitecturas CORDIC tradicionales.
-  Primera implementación realizada del algoritmo 
 CORDIC con radix alto.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 68CONCLUSIONES
-  Flujo de diseño basado en VHDL, con ayuda de 
 herramientas CAD, y tecnología de diseño de 0.7
 mm.
-  Aumento de velocidad entre un 50 y un 100 con 
 respecto a arquitecturas CORDIC tradicionales.
-  Primera implementación realizada del algoritmo 
 CORDIC con radix alto.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 69CONCLUSIONES
-  Flujo de diseño basado en VHDL, con ayuda de 
 herramientas CAD, y tecnología de diseño de 0.7
 mm.
-  Aumento de velocidad entre un 50 y un 100 con 
 respecto a arquitecturas CORDIC tradicionales.
-  Primera implementación realizada del algoritmo 
 CORDIC con radix alto.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 70CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 71CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 72CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 73CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 74CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 75CONCLUSIONES
-  Líneas de investigación abiertas 
-  Implementación con un radix menor, para 
 estudiar su impacto sobre área y velocidad.
-  Implementación de la arquitectura segmentada. 
-  Extensión a modo rotación. 
-  Extensión a sistemas de coordenadas lineal e 
 hiperbólico, e introducción del algoritmo
 recurrente de división.
1. Algoritmo 2. Arquitectura 3. Implementación 4. 
Conclusiones 
 76José 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