• No se han encontrado resultados

FFT de 8 Puntos IEEE754 Sintetizado en FPGA

N/A
N/A
Protected

Academic year: 2022

Share "FFT de 8 Puntos IEEE754 Sintetizado en FPGA"

Copied!
7
0
0

Texto completo

(1)

Abstract— Este artículo presenta la síntesis, a partir de descripciones en VHDL, de dos arquitecturas para calcular la Trasformada Rápida de Fourier (FFT) de 8 puntos. Los puntos son datos de tipo complejo representados en formato IEEE 754.

Los diseños han sido sintetizados con herramientas EDA sobre dispositivos Apex20k y Cyclone II. Lo cual ha permitido el desarrollo de dos módulos IP de FFT, uno optimizado en área y otro optimizado en velocidad.

Index Terms— Discrete Fourier transforms, Digital signal processors, Digital circuits, Field programmable gate arrays, Floating point arithmetic.

I. INTRODUCCION

CTUALMENTE el diseño de sistemas electrónicos digitales puede ser abordado con la metodología de

“Design Reuse”, la cual se basa en la estrategia de diseño a partir de bloques de propiedad intelectual (IP). Esta metodología permite que el diseñador trabajar en el nivel de sistemas usando IPs, abstrayéndose de la complejidad de muchas funciones [1]. Sí los IPs no son disponibles (por terceros) o son costosos, el diseñador debe realizarlos.

Para diseñar sistemas de procesamiento digital de señales (DSP) existen varias alternativas, la selección de estas depende de las características que se busquen para el sistema.

Existen soluciones a problemas DSP, que van desde una aplicación en software orientada bien sea para un procesador general, o para un procesador DSPs, hasta soluciones de sistemas digitales hardware orientados para FPGAs o ASICs.

En el caso de soluciones hardware, las implementaciones de algoritmos DSP se realizan de forma dedicada. En el caso particular de FPGAs modernas que poseen arquitecturas orientadas para el diseño de sistemas DSP (contienen funciones embebidas de multiplicadores y memoria) [2], estos dispositivos permiten un alto throughput en el procesamiento de datos y/o implementación optimizada de algoritmos.

Un campo moderno en el que los sistemas digitales y más propiamente el diseño digital orientado a FPGAs aporta soluciones reales y óptimas, es la implementación de sistemas DSP en hardware, ejemplos de estas aplicaciones son:

Sistemas inalámbricos, redes de computación,

Los autores pertenecen al Grupo de BioNanoelectrónica de la Escuela de Ingeniería Eléctrica y Electrónica (EIEE) de la Universidad del Valle.

(Correspondencia A.A. 25360, Cali, Colombia; e-mail:

julifranaco@hotmail.com, mario@univalle.edu.co, jvelasco@univalle.edu.co)

telecomunicaciones, video, productos de consumo [3] y aplicaciones de tiempo real de muy alto flujo de datos [4].

II. DIEZMADO EN EL TIEMPO PARA FFTBASE 2 La FFT realiza el cálculo eficiente de la DFT. Este algoritmo calcula X(k) a partir de la secuencia x(n) [5], la expresión:

=

=

1

0

) ( )

(

N

n

nk

W

N

n x k

X

(1)

W = e

N j2π/N (2) Y las propiedades del factor de giro

W

N son:

ad Periodicid W

W

Simetria W

W

k N N k N

k N N

k N

>

−−

=

>

−−

=

+ + /2

(3)

A. Método del Doblamiento Sucesivo

Este método se basa en la estrategia divide y vencerás. La factorización de la transformada FFT, permite reducción del tiempo de cálculo. Una forma para calcular la DFT de N puntos, es dividirla en DFTs de menor tamaño, a partir de las cuales se calcula la DFT total.

Al representar N por la factorización N = r1 r2 r3 … rv, donde los rj son primos, el método del doblamiento sucesivo es bastante eficiente, el valor de r se denomina base del algoritmo. Si r

r1 = r2 = r3 = . . . = rv, tal que N = rv, se tiene un caso particular donde las DFTs pequeñas son de tamaño r, lo cual permite un patrón regular para el cálculo.

B. Algoritmo de diezmado en el tiempo Base 2

Al particionar la transformada de N puntos en dos transformadas de N/2 puntos y estas a su vez en transformadas de N/4 puntos y así sucesivamente, hasta obtener transformadas de dos puntos, el algoritmo resultante para el cálculo de la FFT se llama diezmado en el tiempo Base 2.

Al realizar el diezmado para N=2v un total de v=log2N veces, se reducen las multiplicaciones realizadas por el método normal de la DFT de N2, a (N/2)*log2N y las sumas de N*(N-1) a N*log2N. La tabla I indica la eficiencia del algoritmo.

FFT de 8 Puntos

IEEE754 Sintetizado en FPGA

Julián F. Acosta Orozco, Mario Vera-Lizcano, Jaime Velasco Medina

A

(2)

TABLAI

EFICIENCIA DEL DIEZMADO EN TIEMPO BASE 2

Multiplicaciones N

N2 (N/2) log2N

Eficiencia

4 16 256 1024

16 256 65.536 1’048.576

4 32 1.024 5.120

4 8 64 204.8

C. Estructura de la FFT base 2 de 8 puntos

La figura 1 muestra el algoritmo utilizado en este trabajo para el cálculo de la FFT base 2 de ocho puntos.

Fig. 1. Estructura de la FFT base 2 de 8 puntos

D. Formato IEEE 754 de precisión Simple

El IEEE 754 es un estándar desarrollado para representar en binario y punto flotante los números reales. En este trabajo se utiliza dos vectores con el formato de 32 bits para representar un punto correspondiente a un número complejo.

III. PROCESADOR FFTESTRUCTURA SERIE

La estructura serie para el procesador FFT se compone dos unidades principales (figura 2), la unidad de datos en la cual se almacenan y procesan los datos, y la unidad de control donde se generan las señales necesarias para multiplexar buses, generar direccionamiento de las memorias y controlar las diferentes etapas de cálculo de la transformada.

El procesador realiza tres grandes procesos que son:

recepción de datos, cálculo de la FFT y salida de datos.

A. Unidad de Datos

La figura 3 muestra la estructura de la unidad de datos para la FFT serial, se observa como el algoritmo planteado en la figura 1 se resuelve de forma secuencial a partir de una única mariposa. Los puertos de entrada de la unidad de datos son DATO_ENT_RE y DATO_ENT_IM, (parte real e imaginaria). A través de estos puertos se ingresan de forma secuencial los ocho datos a procesar. Los puertos de salida son DATO_SAL_RE y DATO_SAL_IM los cuales también operan de forma secuencial.

Fig. 2 Alto nivel de la estructura serie

La unidad de control genera las señales de direccionamiento para la memoria RAM, la ROM y el control para los datos de entrada y la multiplexación entre el puerto de carga y de los datos procesados.

Mediante el bloque MARIPOSA_BASE_2, la unidad operativa procesa los datos de entrada que previamente han sido almacenados en las memorias RAM (ver figura 3). Todas las tareas se realizan de forma síncrona controladas por la señal CLK

Fig. 3. Unidad de datos del procesador FFT

La unidad de datos está compuesta por los siguientes elementos:

1) Multiplexor Dos Vías 32 bits: Permite alternar entre datos de entrada al FFT y datos procesados por la mariposa.

2) Memoria RAM: Es de tipo dual, en las figuras 1 y 4 se observa que es necesario leer dos datos, procesarlos y devolver el resultado a las mismas posiciones. Por lo cual la RAM se diseño con registros de 32 bits, permitiendo leer y escribir sobre ella dos datos simultáneamente.

3) Memoria ROM: Los factores de giro son constantes, por lo tanto se almacenan en bloques de ROM. Se cumple que el número de factores de giro es la mitad los puntos a procesar, por lo tanto se necesitan cuatro posiciones de memoria en cada bloque de ROM, cada posición de 32 bits.

B. Mariposa Base Dos

La figura 1 indica la forma como el algoritmo FFT base 2 diezmado en el tiempo se puede construir a partir de

(3)

operaciones básicas llamadas mariposas. Esta operación toman dos datos a y b, el dato b se multiplica por una constante W, su resultado se suma o resta con el dato a, tal como lo muestra la figura 4. Para realizar la mariposa es necesario diseñar previamente sumadores-restadores y multiplicadores de punto flotante.

Fig. 4. Mariposa base 2

Los bloques básicos que se diseñaron para construir la mariposa base 2 son: multiplicador complejo de punto flotante, sumador restador de punto flotante y unidad para cambio de signo.

C. Multiplicador Complejo

Este circuito opera dos números complejos X = x1 + j x2, Y = y1 + j y2, cuyo producto es:

Z = (x1 * y1 – x2 * y2) + j (x1 * y2 + x2 * y1) (4) Se observa en la ecuación 4 que el cálculo de Z requiere de cuatro multiplicadores y dos sumadores-restadores, todas las unidades aritméticas son de punto flotante.

D. Sumador-Restador de Punto Flotante

Para la construcción de este circuito se realiza (ver figura 5):

- Comparación de signos - Alineación de los exponentes - Suma o resta

- Normalización para el formato IEEE 754

Fig. 5 Estructura del sumador restador de punto flotante

E. Multiplicador de Punto Flotante

Algunas características hacen de esta operación menos compleja que la suma. Primero los exponentes no necesitan ser alineados, segundo la operación de normalización solo

requiere desplazar máximo una posición y finalmente los signos no influyen en el orden en que se deban operar los datos. El diseño de esta unidad se observa en la figura 6.

Fig. 6 Estructura del multiplicador en punto flotante

La primera etapa desempaqueta los operandos: se separan los campos de signo, exponente y mantisa, los bits ocultos son reinsertados y se realiza un chequeo de excepciones. En esta etapa es útil analizar si algún operando es cero con objeto de devolver inmediatamente un resultado igual a cero. La segunda etapa calcula el signo del resultado, suma los exponentes y multiplica las mantisas. Realizado lo anterior, el resultado es normalizado, redondeado y vuelto a normalizar, en caso de overflow durante el redondeo. La última etapa combina los diferentes campos, filtra el bit oculto y chequea las excepciones del IEEE754 [6].

F. Unidad de Control

Los componentes de la unidad de control son:

1) Máquina de Estados: Se encarga de recibir señales de control de finalización de las etapas de procesamiento del generador de direcciones y a partir de estas genera señales de habilitación de estas etapas, además es la encargada de sincronizar entrada de datos, inicio de la transformada, paso de etapa a etapa, finalización de la trasformada y salida de datos. La entrada FIN_ENT_DATOS indica la finalización del proceso de entrada de datos, FIN_ET_1, FIN_ET_2 y FIN_ET_3 indican la finalización de cada una de las etapas.

La señal de salida SEL_ETAPA selecciona en un multiplexor las direcciones adecuadas para cada etapa; HAB_ET_1, HAB_ET_2 y HAB_ET_3 indican el inicio de una nueva etapa. El diagrama de estados se presenta en la figura 7.

2) Generador de Direcciones de la ROM: Decide cuales coeficientes almacenados en la ROM se operan.

(4)

Fig. 7 Diagrama de estados de la Unidad de Control

3) Generador de Direcciones de la RAM: Consta de cinco componentes: un contador módulo ocho para generar las direcciones para almacenamiento de los datos I/O; tres generadores de direcciones duales, uno por etapa; un bloque para ordenar los datos, debido a que no se almacenan en el orden de entrada al procesador; dos multiplexores de diez vías que reciben las direcciones de almacenamiento de los datos a procesar, las direcciones de almacenamiento de los datos de salida y el respectivo direccionamiento de cada etapa; a la salida del multiplexor se generan dos direcciones al tiempo.

El generador de direcciones se comunica con la máquina de estados, por medio del cual la máquina le indica al generador en que etapa debe estar y así generar las direcciones adecuadas de dicha etapa. De esta forma la unidad de control direcciona la RAM en la unidad de datos por medio de los puertos de salida DIR_A y DIR_B. La máquina de estados también proporciona señales de habilitación por las cuales da inicio a cada una de las etapas. A su vez el generador de direcciones le indica la finalización de cada etapa a la máquina de estados por medio de los puertos de salida y de esta manera la máquina de estados decidirá cuando pasar al siguiente estado.

IV. PROCESADOR FFTESTRUCTURA PARALELA

En este apartado se presenta el diseño de estructura paralela de un procesador FFT optimizado en velocidad. El algoritmo utilizado es el mismo de la estructura serie (figura 1). La implementación de esta estructura de forma paralela se presenta en la figura 8.

Esta estructura se desarrolla para alcanzar un alto desempeño en velocidad, caso contrario a lo que ocurre con la estructura serie, en la cual se propone reducción de área. En esta estructura se ingresa uno a uno los puntos a procesar. Este procesador se describió en VHDL con modelado estructural tomando como base dos componentes: la unidad de datos y la unidad de control. La unidad de datos esta compuesta por los

bancos de registros de almacenamiento, el arreglo de mariposas y el multiplexor de salida. En la unidad de control se generan tanto las señales para controlar el almacenamiento de los datos de entrada y de seleccionar los datos de salida, así como la frecuencia del pipeline del arreglo de las mariposas.

Fig.8Unidad de datos de la estructura paralela

Los componentes utilizados en la estructura paralela son una evolución de los utilizados en la serie, a los cuales se les ha aplicado un pipeline para mejorar su velocidad. Fue necesario realizar la síntesis de esta arquitectura paralela sobre un dispositivo que incluya multiplicadores, memoria y bloques de registros embebidos, debido a que este diseño requiere gran cantidad de estos elementos.

A. Unidad de Datos

La unidad de datos de la estructura paralela utiliza una memoria RAM basada en un banco de registros. Se diferencia en la forma de procesar datos, debido a que estos se procesan de forma paralela por el arreglo de mariposas, contrario a la estructura serie, en donde solo existe una mariposa.

B. Mariposa base Dos

En las dos estructuras desarrolladas se considera esta unidad como el elemento central del procesador FFT. La mariposa de la estructura serie ha sido modificada añadiéndole registros intermedios para lograr una estructura pipeline.

También se han rediseñado algunos bloques que presentaban retardos considerables en la estructura serie.

C. Sumador de punto flotante

La estructura modificada se muestra en la figura 9. Se han incluido registros en los bloques que presentan mas retardo, con el objeto de mejorar el desempeño.

(5)

Fig. 9 Estructura del sumador de punto flotante

D. Unidad de Control

La unidad de control del procesador FFT de estructura paralela es mucho más sencilla, debido a que durante el procesamiento de los datos solo se necesita un reloj de control. La unidad de control coordina la entrada y salida de los datos del procesador por medio de una máquina de estados y genera el reloj del pipeline con un divisor de frecuencia.

V. SIMULACIÓN

Para verificar el funcionamiento de los procesadores FFT las estructuras son simuladas con la herramienta Quartus, para lo cual se toma como elemento patrón, los resultados del cálculo de la FFT con MATLAB para el vector de prueba [-1 1 2 –0.5 –3 –1 2 0], los cuales son:

Columns 1 through 4

-0.5000 3.7678 - 1.0607i -8.0000 - 0.5000i 0.2322 - 1.0607i Columns 5 through 8

0.5000 0.2322 + 1.0607i -8.0000 + 0.5000i 3.7678 + 1.0607i A. Estructura Serie

La figura 10 presenta los resultados de simulación de la estructura serie de la FFT para el vector de prueba propuesto.

Se observa que los resultados corresponden al patrón, también es importante anotar que la frecuencia de reloj es de 5 MHz, la cual es próxima a la máxima frecuencia de operación de la FFT diseñada.

Fig. 10. Simulación del procesador FFT estructura serie

B. Estructura Paralela

La figura 11 presenta los resultados de simulación de la estructura paralela de la FFT para el vector de prueba.

Fig. 11. Simulación del procesador FFT de estructura paralela

Se observa que los datos corresponden a los entregados por MATLAB, también es importante anotar que la frecuencia de reloj es de 50 MHz, la cual es próxima a la máxima frecuencia de operación de la FFT diseñada.

VI. ANÁLISIS DE RESULTADOS

La FFT serie se sintetizó sobre un dispositivo EP20K200EQC-1X de la familia APEX 20KE, logrando un frecuencia máxima de 5.62 MHz. La FFT paralela se sintetizó sobre un dispositivo EP2C70F896C7 de la familia CYCLON II con una frecuencia máxima de 48.08 MHz.

A. Resultados de Compilación

Los resultados de la compilación en QUARTUS II se presentan en la figura 12, el diseño ocupa la totalidad de los elementos lógicos del dispositivo (aprox. 200K compuertas) y presenta una muy baja utilización de RAM.

(6)

Fig. 12. Reporte de compilación del procesador FFT serie

Los resultados de compilación del procesador de estructura Paralela se muestran en la figura 13, se observan que el diseño ocupa el 74% de los elementos lógicos (aprox. 1.5M compuertas), 56 multiplicadores embebidos de 9 bits y presenta una muy baja utilización de RAM.

Fig. 13. Reporte de compilación del procesador FFT paralela

B. Comparación estructura Serie vs. Paralela

En la tabla II se compara el desempeño del procesador FFT de estructura serie contra la estructura paralela.

TABLAII

DESEMPEÑO ESTRUCTURA SERIE VS PARALELA

Característica Serie Paralelo

Número de puntos (complejos) 8 8 Área (Millones de Compuertas) 0.2 1.5

Multiplicadores de 9 bits - 56

Bits de memoria 256 18121

Tiempo de cálculo de 8 puntos (us) 2.13 0.166

CLK (MHz) 5.62 48.08

La tabla II muestra como el procesador de estructura serie ocupa menos área que el paralelo. Esto se debe a que los datos en la estructura serie se calculan de una forma secuencial por la utilización de únicamente una mariposa.

También se observa como el CLK es casi diez veces mayor en el procesador de Estructura Paralela. Esto se explica debido a que el procesador tipo paralelo presenta una estrategia pipeline, esto hace que la frecuencia de operación dependa del retardo crítico de una etapa pipeline del sistema y no de todo

el sistema como ocurre con el procesador serie.

C. Comparación estructura Serie vs. Literatura

Debido a la poca literatura encontrada sobre procesadores FFT de ocho puntos, para realizar una comparación con la literatura disponible, se ha elaborado una proyección del desempeño del procesador de estructura serie sobre diferentes longitudes.

Para incrementar la longitud de la transformada del procesador serie se considera que es necesario: incrementar el tamaño de la memoria y modificar el control. También se considera que los anteriores bloques no son críticos en el sistema y por ende el desempeño del procesador serie en un ciclo de reloj no cambia.

Como en un ciclo de reloj se realiza el cálculo una mariposa, el número de ciclos para en cálculo de una transformada de cualquier longitud esta dado por:

N N

ciclos *log2 2

= 1

(4)

Donde N es la longitud de la transformada, de esta forma el tiempo de cálculo de una transformada de cualquier longitud está dado por:

max

* 1 ciclos F Ttrans =

(5)

En la Tabla III se compara la estructura serie (FFT_UV) proyectada a partir de la anterior ecuación, con algunos módulos académicos y comerciales. Los valores de la tabla corresponden al tiempo necesario para realizar una transformada y se presentan en microsegundos

TABLAIII

COMPARACIÓN DE LA PROYECCIÓN DE LA ESTRUCTURA SERIE Nombre \ longitud 8 64 128 256 512 1024

FFT_UV 2.1 34.2 79.7 182.2 410.0 911.0 DILLON [7] 0.1 1.3 3.0 6.82 15.4 34.1

LINKOPING [8] -- -- 58.0 -- -- --

WESTMINSTER [9] -- -- -- 102.4 -- --

FLORIDA [10] -- 1.9 -- -- -- --

STANFORD [11] -- -- -- -- 330.0 --

ALTERA [12] -- -- -- 1.1 2.0 4.0

El análisis del desempeño no es simple, debido a que se debe considerar:

- Con relación a las FPGAs utilizadas para la síntesis, es importante tener en cuenta que las arquitecturas comerciales desarrolladas por ALTERA Corp. y Dillon Engenieering, utilizan FPGAs STRATIX II y VIRTEX II, los cuales poseen bloques de DSPs embebidos, lo cual mejora su desempeño.

- En relación al formato de representación es importante anotar que Dillon Engenieering utiliza punto flotante con 6 bits para el exponente y 16 bits para la mantisa. Algunas arquitecturas académicas, como las desarrolladas en la Universidad de Florida y la Universidad de Westminster

(7)

utilizan representación en punto fijo. Mientras el FFT_UV utiliza el formato IEEE-32 bits que es el más complejo de las arquitecturas comparadas.

La proyección no se realiza sobre la FFT de estructura paralela, debido a que esta estructura satura rápidamente cualquier FPGA, no permitiendo su realización física.

VII. CONCLUSIONES

El cálculo de la FFT requiere de una gran cantidad de multiplicaciones de operandos complejos, lo cual incrementa la complejidad del hardware diseñado, generando la ruta crítica del sistema.

El formato IEEE 754 utilizado en la arquitectura serie desarrollada (FFT_UV) es mas complejo que los formatos de las arquitecturas analizadas, esta es la razón por la cual el desempeño de la arquitectura serie presentada en este artículo (FFT_UV) es pobre en la comparación con las otras analizadas.

Se comprueba que la FFT paralela desarrollada mejora el desempeño en comparación con la serie, y que la inclusión en su arquitectura de bloques embebidos (memorias y multiplicadores), le facilita al diseñador la optimización de los diseños realizados.

AGRADECIMIENTO

Algunas de las herramientas utilizadas en este trabajo han sido suministradas por Altera Corporation a través del Programa Universitario.

REFERENCIAS

[1] M. F. Jacome and H. P. Peixoto, “A Survey of Digital Design Reuse”, IEEE Design & Test of Computers, 2001

[2] http://www.altera.com/technology/dsp/devices/dsp-devices_index.html [3] G. G. Pechanek, “DSP Platform Architecture for SoC Products”, en The

computer engineering handbook, CRC, 2002, Section 39.2

[4] T. Durkin, “SETI Researchers Sift Interstellar Static for Signs of Life”, Xcell Journal, Xilinx Inc, Spring 2004, Disponible en http://setiathome.ssl.berkeley.edu/~aparsons/papers/2004-

03_Xilinx_SETI_article.pdf

[5] J. Proakis, D. Manolakis, Tratamiento digital de señales. 3a edición, Prentice Hall, Madrid, 1998, pp 465-469.

[6] A Millán y P. Ruiz de Clavijo, Diseño de una unidad de multiplicación en punto flotante, Departamento de Tecnología Electrónica, Universidad de Sevilla, 2000.

[7] Floating point FFT/IFFT IP core, Dillon Engenieering, Inc, 2003.

Disponible: www.dilloneng.com

[8] J. Melander, T. Widhe, P. Sandberg, K. Palmkvist, M. Vesterbacka and L. Wanhammar, Implementation of bit-serial FFT processor with hierarchical control structure, Linkoping University. 1995.

[9] E. Cetin, R. Morling, I. Kale, “An Integrated 256-point Complex FFT Processor for Real-time Spectrum Analysis and Measurement”, IEEE Proceeding of Instrumentation and Measurement Technology Conference, vol. 1, pp. 96-101, Ottawa, Canada, May 19-21, 1997.

[10] J. Fuster, K. Gugel, “Pipelined 64-point Fast Fourier Transform for Programmable Logic Device”. Disponible:

www.add.ece.ufl.edu/papers/fust.pdf

[11] B. Baas, “A 9.5mW 330us 1024-point FFT processor”, Stanford University

[12] FFT MegaCore Function User Guide, Altera Corporation, 101 Innovation Drive, San Jose, California 95134, USA, June 2004.

Referencias

Documento similar

En la base de datos de seguridad combinados de IMFINZI en monoterapia, se produjo insuficiencia suprarrenal inmunomediada en 14 (0,5%) pacientes, incluido Grado 3 en 3

En este ensayo de 24 semanas, las exacerbaciones del asma (definidas por el aumento temporal de la dosis administrada de corticosteroide oral durante un mínimo de 3 días) se

En un estudio clínico en niños y adolescentes de 10-24 años de edad con diabetes mellitus tipo 2, 39 pacientes fueron aleatorizados a dapagliflozina 10 mg y 33 a placebo,

• Descripción de los riesgos importantes de enfermedad pulmonar intersticial/neumonitis asociados al uso de trastuzumab deruxtecán. • Descripción de los principales signos

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de