1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO 

Slides:



Advertisements
Presentaciones similares
Lenguajes de Descripción de Hardware
Advertisements

Equipo #3 Unidad III: ALU Efraín Corral Eduardo Castillo Elías Alarcón
Introducción al lenguaje C
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Métodos de diseño en VHDL.
Centro de Innovación y Desarrollo
GESTIÓN DE LOS COSTOS DEL PROYECTO
TRANSFORMACIONES GEOMÉTRICAS
Prof. Ramón Garduño Juárez Modelado Molecular Diseño de Fármacos
M.I. Ricardo Garibay Jiménez
Introducción a los Procesadores Digitales de Señal (DSP)
Tema II Unidad de memoria. 2 Unidad de memoria 2.1 Definiciones y conceptos básicos Localización Capacidad Unidad de transferencia
El procesador: la ruta de datos y el control (II Parte)
Unidad aritmético-lógica
Ingeniero Anyelo Quintero
Tema 3. Optimización de Código
Programación.
Circuitos Combinacionales Comunes
Representación de números enteros Tema 3. ¿Qué sabrás al final del capítulo? n Representar un número entero (con signo) de distintas formas – Signo magnitud.
Unidades aritmético lógicas
Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División.
José Alejandro Piñeiro Riobó
Microcomputadores Prof : Tatiana Marín R.. Sistema basado en microprocesador de 8 bits.
ESTRUCTURAS DE CONTROL
VHDL.
Fundamentos de Programación
Programación de Computadores
Programación en Matlab
Tema 2: Los tipos de datos
Análisis de Algoritmos
TEMA 5. MÓDULOS ARITMÉTICOS AVANZADOS
SISTEMAS DE NUMERACIÓN

VHDL Breve introducción.
Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Diseño lógico combinacional mediante VHDL
Tema 3: Simulación estacionaria..
Fórmulas y Funciones Básicas
Juego de Preguntas y Respuestas
Unidad 4: Unidad de Ejecución
Introducción Electrónica Digital
Unidad aritmético-lógica
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería Maestría en Ingeniería Eléctrica.
Microprocesador para el cálculo de la transformada rápida de Fourier ( CEMISID-FFT) - Andrade P. Liliana L. - Díaz M. Omar A. - Erazo P. Amilcar J. - Fuguet.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Guayaquil, junio 24 del 2014 PARCIAL 2.
LA UNIDAD ARITMÉTICA Y LÓGICA
Simulacion de sistemas dinamicos
Universidad Tecnológica del Centro Programa de la Asignatura ARQUITECTURA DEL COMPUTADOR Universidad Tecnológica del Centro Programa de la Asignatura ARQUITECTURA.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Computación I (CI-2125) Clase 2 Prof. Mireya Morales.
MBA. LIDA LOOR MACIAS 2 CONSTANTES VARIABLES CONTADOR ACUMULADOR DIFERENCIADOR MULTIPLICADOR OPERADORES FUNCIONES LOGICOS ARITMETICOS RELACIONALES.
Presente un cuestionario con los aspectos mas importantes sobre los
ALMACENAMIENTO DE DATOS. Son componentes que leen o escriben datos en medios o soportes de almacenamiento, y juntos conforman lamemoria o almacenamiento.
Fundamentos de Programación
Organización del Computador I Verano Aritmética (2 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Lic. Carla Aguirre Montalvo
Diseño jerárquico con VHDL
Compuertas lógicas INTRODUCCION
CONJUNTO DE INSTRUCCIONES Maquinas Digitales
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
MBA. LIDA LOOR MACIAS 2 CONSTANTES VARIABLES CONTADOR ACUMULADOR DIFERENCIADOR MULTIPLICADOR OPERADORES FUNCIONES LOGICOS ARITMETICOS RELACIONALES.
UNIDAD 2. DISEÑO LÓGICO DE PROCESADORES: UNIDAD ARITMÉTICO-LÓGICA Ing. Elizabeth Guerrero V.
Subsistemas aritméticos y lógicos
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
Arquitecturas de Computadoras Aritmética Computacional
Electiva de Redes II – 2012-I Departamento de Ingeniería de Sistemas 1 Seguridad en Redes, Enfoque hacia Criptografía Miguel Jimeno, Ph.D. Departamento.
NCO (Numerically Controlled Oscillator). NCO: Oscilador controlado numéricamente Aplicaciones Conversores digitales up/down PLLs digitales Sistemas de.
Operaciones algebraicas
Transcripción de la presentación:

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO  José Alejandro Piñeiro Riobó

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

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

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

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

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones 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.  Soluciones:  Uso de sumadores rápidos (CLA) y/o aritmética redundante (carry-save, signed-digit).  Empleo de recurrencias con un radix alto r  2 b (se extraen b bits del resultado en cada iteración).

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: x N  1 =módulo y z N  1 =argumento.  Fundamento: descomposición del ángulo de rotación  en una suma de ángulos elementales:  Los coeficientes  i toman valores enteros en el intervalo {  (r  1),..., 0,..., (r  1)}, siendo el radix r  2 b.

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: x N  1 =módulo y z N  1 =argumento.  Fundamento: descomposición del ángulo de rotación  en una suma de ángulos elementales:  Los coeficientes  i toman valores enteros en el intervalo {  (r  1),..., 0,..., (r  1)}, siendo el radix r  2 b.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN Y X                     

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: x N  1 =módulo y z N  1 =argumento.  Fundamento: descomposición del ángulo de rotación  en una suma de ángulos elementales:  Los coeficientes  i toman valores enteros en el intervalo {  (r  1),..., 0,..., (r  1)}, siendo el radix r  2 b.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Expresión de las recurrencias: d[i  1]  d[i]   i r  2i  [i]  [i  1]  r(  [i]   i d[i]) z[i  1]  z[i]  tan  1 (  i r  i )  con d[1]  x in,  [1]  r y in, z[1]  0.  Los coeficientes  i se seleccionan mediante el redondeo de  [i ] truncado a t bits fraccionales:  i  round (  [i] t ) ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Expresión de las recurrencias: d[i  1]  d[i]   i r  2i  [i]  [i  1]  r(  [i]   i d[i]) z[i  1]  z[i]  tan  1 (  i r  i )  con d[1]  x in,  [1]  r y in, z[1]  0.  Los coeficientes  i se seleccionan mediante el redondeo de  [i ] truncado a t bits fraccionales:  i  round (  [i] t ) ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Expresión de las recurrencias: d[i  1]  d[i]   i r  2i  [i]  [i  1]  r(  [i]   i d[i]) z[i  1]  z[i]  tan  1 (  i r  i )  con d[1]  x in,  [1]  r y in, z[1]  0.  Los coeficientes  i se seleccionan mediante el redondeo de  [i ] truncado a t bits fraccionales:  i  round (  [i] t ) ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN

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 M 1 y M 2 ) para asegurar convergencia.  Uno antes y otro después de la primera microrrotación.  Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R  2 B  2  b/2   1,para t  2  Extensión del rango de convergencia.  Comparación de los F bits más significativos de x in e y in.  Si y in  x in +2  F, intercambio, z[1]   /2 y se decrementa.

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 M 1 y M 2 ) para asegurar convergencia.  Uno antes y otro después de la primera microrrotación.  Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R  2 B  2  b/2   1,para t  2  Extensión del rango de convergencia.  Comparación de los F bits más significativos de x in e y in.  Si y in  x in +2  F, intercambio, z[1]   /2 y se decrementa.

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 M 1 y M 2 ) para asegurar convergencia.  Uno antes y otro después de la primera microrrotación.  Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R  2 B  2  b/2   1,para t  2  Extensión del rango de convergencia.  Comparación de los F bits más significativos de x in e y in.  Si y in  x in +2  F, intercambio, z[1]   /2 y se decrementa.

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 M 1 y M 2 ) para asegurar convergencia.  Uno antes y otro después de la primera microrrotación.  Para simplificar el primer escalado, se utiliza un radix R inferior en la primera microrrotación, siendo: R  2 B  2  b/2   1,para t  2  Extensión del rango de convergencia.  Comparación de los F bits más significativos de x in e y in.  Si y in  x in +2  F, intercambio, z[1]   /2 y se decrementa.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN  Existencia de un factor de escala K i en las variables d y  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  i 2 r  2i ).  Compensación evaluando la función exponencial: x r  x C ·exp(ln(K  1 ))  x C ·K 

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN  Existencia de un factor de escala K i en las variables d y  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  i 2 r  2i ).  Compensación evaluando la función exponencial: x r  x C ·exp(ln(K  1 ))  x C ·K 

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN  Existencia de un factor de escala K i en las variables d y  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  i 2 r  2i ).  Compensación evaluando la función exponencial: x r  x C ·exp(ln(K  1 ))  x C ·K 

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN  Existencia de un factor de escala K i en las variables d y  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  i 2 r  2i ).  Compensación evaluando la función exponencial: x r  x C ·exp(ln(K  1 ))  x C ·K 

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones ALGORITMO CORDIC CON RADIX ALTO EN MODO VECTORIZACIÓN  Existencia de un factor de escala K i en las variables d y  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  i 2 r  2i ).  Compensación evaluando la función exponencial: x r  x C ·exp(ln(K  1 ))  x C ·K 

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 (y in /x in ).  Arquitectura para el cálculo de módulo y argumento: (x in 2  y in 2 ) ½ y tan  1 (y in /x in ).

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 (y in /x in ).  Arquitectura para el cálculo de módulo y argumento: (x in 2  y in 2 ) ½ y tan  1 (y in /x in ).

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 (y in /x in ).  Arquitectura para el cálculo de módulo y argumento: (x in 2  y in 2 ) ½ y tan  1 (y in /x in ).

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 (y in /x in ).  Arquitectura para el cálculo de módulo y argumento: (x in 2  y in 2 ) ½ y tan  1 (y in /x in ).

 Arquitectura completa  Arquitectura argumento (modificada)  vía g. z[i  1]  z[i]  tan  1 (  i r  i ) d[i  1]  d[i]   i r  2i  [i]  [i  1]  r(  [i]   i d[i]) g[i  1]  g[i]  (1/2)ln(1  i 2 r  2i ) g[j  1]  r (g[j]  r j ln(1  e j r  j )) d[j  1]  d[j]  e j d[j]r  j

 Vías d y .- Realización de los escalados y las microrrotaciones.  Bloques de M 1 y M 2.- Obtención de los factores de escalado.  Bloques de  i y e j.- Selección de los coeficientes mediante redondeo.  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

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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 IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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 IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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 IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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 IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  m CMOS doble metal de ES2. IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  m CMOS doble metal de ES2. IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  m CMOS doble metal de ES2. IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  m CMOS doble metal de ES2. IMPLEMENTACIÓN

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  m CMOS doble metal de ES2. IMPLEMENTACIÓN

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.

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) res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48) a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0) ’0’); end if; PP2(57 downto 44) res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46) res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48) 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) res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48) a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0) ’0’); end if; PP2(57 downto 44) res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46) res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48) 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) res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48) a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0) ’0’); end if; PP2(57 downto 44) res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46) res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48) 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) res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48) a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0) ’0’); end if; PP2(57 downto 44) res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46) res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48) 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) res(0)(41)); PP1(41 downto 0)<= res(0); else PP1(57 downto 48) a(40)); PP1(47 downto 7)<= a; PP1(6 downto 0) ’0’); end if; PP2(57 downto 44) res(1)(41)); PP2(43 downto 2)<= res(1); PP3(57 downto 46) res(2)(41)); PP3(45 downto 4)<= res(2); PP4(57 downto 48) 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;

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones Tabla 1. Estimación de área y retardo de los principales componentes. RESULTADOS

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones Tabla 2. Aportación de cada vía al área total. RESULTADOS

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS  Camino crítico arquitectura argumento:  RA1  Recodificación  mux2  Inverter  MAC_   mux10  reg_  : aprox. 29 ns (  11.5 t fa ; 1 t fa = 2.56 ns).  Camino crítico arquitectura módulo y argumento:  RA1  Mod  Tabla A i  mux15  mux19  CSA_g  mux17  reg_g: aprox. 32 ns (  12.5 t fa ).  Segundo escalado dividido en dos ciclos: caminos de 28 y 21 ns, respectivamente.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS  Camino crítico arquitectura argumento:  RA1  Recodificación  mux2  Inverter  MAC_   mux10  reg_  : aprox. 29 ns (  11.5 t fa ; 1 t fa = 2.56 ns).  Camino crítico arquitectura módulo y argumento:  RA1  Mod  Tabla A i  mux15  mux19  CSA_g  mux17  reg_g: aprox. 32 ns (  12.5 t fa ).  Segundo escalado dividido en dos ciclos: caminos de 28 y 21 ns, respectivamente.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS  Camino crítico arquitectura argumento:  RA1  Recodificación  mux2  Inverter  MAC_   mux10  reg_  : aprox. 29 ns (  11.5 t fa ; 1 t fa = 2.56 ns).  Camino crítico arquitectura módulo y argumento:  RA1  Mod  Tabla A i  mux15  mux19  CSA_g  mux17  reg_g: aprox. 32 ns (  12.5 t fa ).  Segundo escalado dividido en dos ciclos: caminos de 28 y 21 ns, respectivamente.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS  Camino crítico arquitectura argumento:  RA1  Recodificación  mux2  Inverter  MAC_   mux10  reg_  : aprox. 29 ns (  11.5 t fa ; 1 t fa = 2.56 ns).  Camino crítico arquitectura módulo y argumento:  RA1  Mod  Tabla A i  mux15  mux19  CSA_g  mux17  reg_g: aprox. 32 ns (  12.5 t fa ).  Segundo escalado dividido en dos ciclos: caminos de 28 y 21 ns, respectivamente.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS  Camino crítico arquitectura argumento:  RA1  Recodificación  mux2  Inverter  MAC_   mux10  reg_  : aprox. 29 ns (  11.5 t fa ; 1 t fa = 2.56 ns).  Camino crítico arquitectura módulo y argumento:  RA1  Mod  Tabla A i  mux15  mux19  CSA_g  mux17  reg_g: aprox. 32 ns (  12.5 t fa ).  Segundo escalado dividido en dos ciclos: caminos de 28 y 21 ns, respectivamente.

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones RESULTADOS Tabla 3(a). Comparativa con otras arquitecturas CORDIC.  Cálculo del argumento

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones Tabla 3(b). Comparativa con otras arquitecturas CORDIC.  Cálculo de módulo y argumento RESULTADOS

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  i y e j, y realización de dos escalados de la recurrencia para garantizar convergencia. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  i y e j, y realización de dos escalados de la recurrencia para garantizar convergencia. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  i y e j, y realización de dos escalados de la recurrencia para garantizar convergencia. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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  i y e j, y realización de dos escalados de la recurrencia para garantizar convergencia. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Flujo de diseño basado en VHDL, con ayuda de herramientas CAD, y tecnología de diseño de 0.7  m.  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Flujo de diseño basado en VHDL, con ayuda de herramientas CAD, y tecnología de diseño de 0.7  m.  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  Flujo de diseño basado en VHDL, con ayuda de herramientas CAD, y tecnología de diseño de 0.7  m.  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  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. CONCLUSIONES

1. Algoritmo 2. Arquitectura 3. Implementación 4. Conclusiones  IMPLEMENTACIÓN VLSI DEL ALGORITMO CORDIC EN MODO VECTORIZACIÓN UTILIZANDO RADIX ALTO  José Alejandro Piñeiro Riobó