204
UNIVERSIDAD DE GRANADA INGENIERÍA ELECTRÓNICA Departamento de Electrónica y Tecnología de Computadores DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI Trabajo Fin de Carrera Francisco Pasadas Cantos Granada 2012 Directores: Antonio García Ríos Luis Parrilla Roure Andrés Godoy Medina Carlos Sampedro Matarín

DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Embed Size (px)

DESCRIPTION

En el presente trabajo se desarrolla un coprocesador en punto flotante y simple precisión para resolver la ecuación de Poisson 1D en un transistor de doble puerta sobre un sustrato de silicio orientado a un entorno de computación grid. En primera instancia, se describe la tecnología que ha permitido la fabricación de este dispositivo, la tecnología de silicio sobre aislante (SOI). Seguidamente, se definen las herramientas matemáticas que describen el comportamiento de un dispositivo electrónico. Se aplican dichas herramientas para obtener la ecuación discreta de Poisson 1D, de manera que pueda ser resuelta numéricamente en un computador. La resolución de dicha ecuación se orienta a un entorno de computación grid mediante una plataforma reconfigurable, por lo que se desarrolla la implementación del sistema en lenguaje de descripción hardware (HDL), acompañado de un estudio de los recursos necesarios en las FPGAs más comunes en la actualidad.

Citation preview

Page 1: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

UNIVERSIDAD DE GRANADA

INGENIERÍA ELECTRÓNICA

Departamento de Electrónica y Tecnología de Computadores

DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA

ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Trabajo Fin de Carrera

Francisco Pasadas Cantos

Granada 2012

Directores:

Antonio García Ríos Luis Parrilla Roure

Andrés Godoy Medina Carlos Sampedro Matarín

Page 2: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 3: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

UNIVERSIDAD DE GRANADA

INGENIERÍA ELECTRÓNICA

DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA

ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Trabajo Fin de Carrera

Francisco Pasadas Cantos

Tribunal:

D/Dña

D/Dña

D/Dña

Calificación:

Presentado en Granada a de de 2012

Evaluado en Granada a de de 2012

El Presidente El Vocal El Secretario

Page 4: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 5: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

UNIVERSIDAD DE GRANADA

INGENIERÍA ELECTRÓNICA

AUTORIZACIÓN DE LECTURA DE TRABAJO FIN DE CARRERA

D. Antonio García Ríos, D. Andrés Godoy Medina, D. Luis Parrilla Roure y D. Carlos Sampedro Matarín, profesores del Departamento de Electrónica y Tecnología de Computadores de la Universidad de Granada, como directores del Trabajo Fin de Carrera titulado Desarrollo de un coprocesador en punto flotante para la resolución de la ecuación de Poisson 1D en estructuras SOI, y realizado por el alumno D. Francisco Pasadas Cantos

CERTIFICAN:

Que el citado Trabajo Fin de Carrera, ha sido realizado y redactado por dicho alumno y autorizan su presentación.

Granada 2012

Fdo. Antonio García Ríos Fdo. Luis Parrilla Roure

Fdo. Andrés Godoy Medina Fdo. Carlos Sampedro Matarín

Page 6: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 7: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

UNIVERSIDAD DE GRANADA

INGENIERÍA ELECTRÓNICA

AUTORIZACIÓN DE DEPÓSITO EN LA BIBLIOTECA

Yo, D. Francisco Pasadas Cantos con DNI 26046558R, autor del Trabajo Fin de Carrera titulado Desarrollo de un coprocesador en punto flotante para la resolución de la ecuación de Poisson 1D en estructuras SOI realizado en la Universidad de Granada

AUTORIZO:

Al depósito de dicho Trabajo en la Biblioteca de la Universidad de Granada, y de la visualización a través de Internet.

Granada 2012

Fdo. Francisco Pasadas Cantos

Page 8: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 9: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

UNIVERSIDAD DE GRANADA

INGENIERÍA ELECTRÓNICA

RESUMEN

En el presente trabajo se desarrolla un coprocesador en punto flotante y simple precisión para resolver la ecuación de Poisson 1D en un transistor de doble puerta sobre un sustrato de silicio orientado a un entorno de computación grid. En primera instancia, se describe la tecnología que ha permitido la fabricación de este dispositivo, la tecnología de silicio sobre aislante (SOI). Seguidamente, se definen las herramientas matemáticas que describen el comportamiento de un dispositivo electrónico. Se aplican dichas herramientas para obtener la ecuación discreta de Poisson 1D, de manera que pueda ser resuelta numéricamente en un computador. La resolución de dicha ecuación se orienta a un entorno de computación grid mediante una plataforma reconfigurable, por lo que se desarrolla la implementación del sistema en lenguaje de descripción hardware (HDL), acompañado de un estudio de los recursos necesarios en las FPGAs más comunes en la actualidad.

Palabras clave: coprocesador, ecuación de Poisson 1D, punto flotante, SOI

ABSTRACT

The aim of this project is to develop a single precision floating point coprocessor to solve the 1D Poisson equation in a dual gate transistor on a silicon substrate oriented grid computing environment. First, it is described silicon on insulator (SOI) technology that allows the fabrication of this device. Next, it is defined the mathematical tools that describes the behavior of an electronic device. These tools are applied in order to obtain the 1D Poisson discrete equation, so that a computer is able to solve it numerically. The resolution of this equation is oriented to a grid computing environment using a reconfigurable platform, so the system is implemented in hardware description language (HDL), accompanied by a study of the necessary resources specified for the most common FPGAs.

Keywords: coprocessor, 1D Poisson equation, floating point, SOI

Page 10: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 11: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

A mis padres y a mi abuela

Page 12: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 13: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

“Hallaré un camino o me lo abriré”.

Aníbal (247-183 a.C.)

Page 14: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI
Page 15: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI i

Índice general

Índice de Figuras vii

Índice de Tablas xiii

Abreviaturas y siglas xv

Prólogo xix

I FUNDAMENTOS 1

1 La Tecnología SOI 3 1.1 Motivación de la Tecnología SOI .......................................................... 5

1.2 Obtención de Obleas SOI...................................................................... 9

1.2.1 Técnicas basadas en crecimiento epitaxial .............................. 9

1.2.2 Técnicas basadas en recristalización ....................................... 11

1.2.3 Técnicas basadas en implantación iónica ................................ 12

1.2.4 Técnicas basadas en wafer bonding ......................................... 12

1.3 Ventajas de la Tecnología SOI.............................................................. 15

1.4 Clasificación de Dispositivos SOI ......................................................... 16

1.4.1 Dispositivos de una puerta ...................................................... 17

1.4.2 Dispositivos de doble puerta .................................................... 18

1.4.3 Dispositivos multipuerta ......................................................... 22

1.5 Conclusiones ......................................................................................... 24

Page 16: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice general

ii Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

2 Modelado de dispositivos semiconductores 25 2.1 Simulación de dispositivos ................................................................... 25 2.2 Simuladores .......................................................................................... 27 2.3 Historia del modelado numérico........................................................... 28 2.4 Conclusiones ......................................................................................... 29

3 Ecuación discreta de Poisson 1D 31 3.1 Discretización del espacio continuo ...................................................... 32 3.2 Diferencias finitas ................................................................................ 33 3.3 Condiciones de contorno ....................................................................... 36 3.4 Ecuación discreta de Poisson 1D .......................................................... 37

3.4.1 Error iterativo .......................................................................... 38

3.5 Conclusiones ......................................................................................... 39

4 Aritmética en punto flotante 41 4.1 Definición numérica IEEE 754 ............................................................. 42 4.2 Aritmética IEEE 754 ............................................................................ 43

4.2.1 Operación de suma/resta .......................................................... 43

4.2.2 Operación de multiplicación/división ....................................... 44

4.2.3 Redondeo .................................................................................. 45

4.2.4 Desbordamiento ....................................................................... 46

4.2.5 Excepciones .............................................................................. 47

4.3 Conclusiones ......................................................................................... 48

5 Entorno de computación grid 49 5.1 FPGAs .................................................................................................. 49

5.1.1 Historia .................................................................................... 50

5.1.2 Características ......................................................................... 52

5.1.3 Programación ........................................................................... 53

5.1.4 Aplicaciones.............................................................................. 53

5.1.5 Tecnología de la memoria de programación ............................. 54

Page 17: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice general

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI iii

5.2 Computación grid ................................................................................. 54 5.2.1 Historia .................................................................................... 55

5.2.2 Definición y características ...................................................... 55

5.2.3 Ventajas y requisitos ................................................................ 56

5.2.4 Desventajas .............................................................................. 57

5.3 Conclusiones ......................................................................................... 58 II HERRAMIENTAS SOFTWARE 59

6 Herramientas software 61 6.1 Simulación numérica ............................................................................ 61

6.1.1 MATLAB .................................................................................. 62

6.2 Implementación, simulación digital y generación de HDL .................. 64

6.2.1 Simulink ................................................................................... 64

6.2.2 Xilinx System Generator for DSP ............................................ 66

6.3 Síntesis de sistemas digitales en HDL ................................................. 69

6.3.1 Xilinx ISE Design Suite ........................................................... 69

III DESARROLLO DEL TRABAJO Y RESULTADOS 71

7 Simulación numérica 73 7.1 Simulación numérica de la ecuación discreta de Poisson 1D ............... 73 7.2 Aproximación de la función exponencial .............................................. 78

7.2.1 Serie de Taylor ......................................................................... 80

7.2.2 Aproximación lineal por tramos ............................................... 84

7.2.3 Aproximación polinómica óptima por tramos .......................... 89

7.3 Conclusiones ......................................................................................... 93

8 Implementación y simulación del sistema digital 97 8.1 Circuito configuración de memoria RAM ............................................. 98 8.2 Circuito zona de óxido .......................................................................... 107

Page 18: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice general

iv Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

8.3 Circuito zona de semiconductor............................................................ 110 8.4 Circuito de parada, inicio y fin ............................................................. 115 8.5 Coprocesador para la resolución de la ecuación de Poisson 1D ............ 116 8.6 Conclusiones ......................................................................................... 121

9 Generación, síntesis HDL y estimación de consumo de recursos 123 9.1 Arquitectura de una FPGA .................................................................. 123 9.2 Estimación de consumo de recursos ..................................................... 125

9.2.1 Spartan 3 – XC3S50 ................................................................. 125

9.2.2 Spartan 3 – XC3S1000 ............................................................. 125

9.2.3 Virtex 4 – XC4VFX12 ............................................................... 126

9.2.4 Virtex 4 – XC4VFX100 ............................................................. 126

Conclusiones 127

IV APÉNDICES 129

A Programación en MATLAB (I) 131 A.1 Simulación numérica de la ecuación discreta de Poisson 1D ............... 131 A.2 Serie de Taylor ..................................................................................... 132 A.3 Aproximación lineal por tramos ........................................................... 133 A.4 Aproximación polinómica óptima por tramos....................................... 136

A.4.1 Función mim ............................................................................ 138

B Xilinx Blockset 141 B.1 Addsub .................................................................................................. 141 B.2 Constant ............................................................................................... 143 B.3 Convert ................................................................................................. 144 B.4 Counter ................................................................................................. 145 B.5 Delay .................................................................................................... 146

Page 19: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice general

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI v

B.6 Down Sample........................................................................................ 147 B.7 Gateway In ........................................................................................... 148 B.8 Gateway Out ........................................................................................ 149

B.9 Logical .................................................................................................. 149

B.10 MCode................................................................................................... 150

B.11 Mult ...................................................................................................... 151

B.12 Mux....................................................................................................... 152

B.13 Pause Simulation ................................................................................. 153

B.14 ROM ..................................................................................................... 153

B.15 Register ................................................................................................ 155

B.16 Reinterpret ........................................................................................... 155

B.17 Single Port RAM................................................................................... 156

B.18 System Generator ................................................................................. 157

C Programación en MATLAB (II) 161 C.1 Máquina de estados finitos ControlFSM .............................................. 161 C.2 Máquina de estados finitos ControlFSM2 ............................................ 162 C.3 Máquina de estados finitos PauseFSM ................................................ 163 C.4 Máquina de estados finitos StartFSM ................................................. 164

Bibliografía 165

Page 20: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

vi Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 21: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI vii

Índice de Figuras

1.1 Gráfico de la Ley de Moore. Evolución del número de transistores por microprocesador a lo largo del tiempo ............................................ 4

1.2 Gráfico de la Ley de Koomey. Evolución de la eficiencia energética de diferentes microprocesadores a lo largo del tiempo ............................. 5

1.3 Aislamiento lateral mediante dióxido de silicio entre transistores NMOS y PMOS..................................................................................... 6

1.4 Transistores NMOS y PMOS fabricados sobre una oblea de tecnología SOI. En este caso, los canales de ambos dispositivos se encuentran aislados entre sí ................................................................ 6

1.5 Comparación de potencia consumida y tensión de alimentación frente a tiempo de acceso entre la tecnología convencional y la tecnología SOI ...................................................................................... 7

1.6 Comparación de las predicciones realizadas por la ley de Moore con el rendimiento obtenido con las tecnologías tradicionales y SOI ......... 8

1.7 Crecimiento epitaxial lateral de silicio mediante la técnica ELOG ..... 10

1.8 Crecimiento epitaxial lateral de silicio mediante la técnico LSPE ...... 11

1.9 Recristalización de silicio por medio de la técnica Laser Recrystallization ................................................................................... 11

1.10 Obtención de una oblea SOI mediante la técnica SIMOX .................... 12

1.11 Obtención de obleas SOI mediante la técnica ELTRAN ...................... 13

Page 22: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice de Figuras

viii Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

1.12 Obtención de obleas SOI (UNIBOND) mediante la técnica SMART-CUT ........................................................................................ 14

1.13 Representación esquemática de un SGSOI .......................................... 17

1.14 Representación de la sección de dispositivos SGSOI: FD (izqda.) y PD (dcha.) ............................................................................................. 17

1.15 Representación de la sección de un dispositivo VCBM ........................ 18

1.16 Representación esquemática de un DGSOI ......................................... 19

1.17 Representación de la sección de un DGSOI, dispositivo bajo estudio en este trabajo ...................................................................................... 19

1.18 Dependencia de la densidad de carga con el espesor de la lámina de Si en dispositivos de doble puerta. La inversión de volumen puede observarse claramente para espesores inferiores a 10nm .................... 20

1.19 Comparación de la dependencia de la movilidad electrónica con el espesor de la lámina de Si en dispositivos SGSOI y DGSOI. Los efectos de la inversión en volumen pueden observarse con claridad suponiendo un aumento importante de la movilidad para espesores inferiores a 10nm.................................................................................. 21

1.20 Representación esquemática de un trigate ........................................... 23

1.21 Representación esquemática de un Π-Gate (izqda.) y un Ω-Gate (dcha.) ................................................................................................... 23

1.22 Representación esquemática de un GAA (izqda.) y un G4FET (dcha.) . 24

4.1 Anatomía de un número en punto flotante simple precisión ............... 42

4.2 Representación no uniforme de números en punto flotante simple precisión en la escala real .................................................................... 43

4.3 Rango de la escala real representable por el estándar IEEE 754 simple precisión .................................................................................... 43

4.4 Diagrama de flujo de la operación suma/resta definida en el estándar IEEE 754 .............................................................................................. 44

Page 23: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice de Figuras

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI ix

4.5 Diagrama de flujo de la operación multiplicación/división definida en el estándar IEEE 754 ........................................................................... 45

5.1 Arquitectura interna de una FPGA...................................................... 51

5.2 Virtex-6, FPGA de Xilinx ..................................................................... 52

6.1 MATLAB, herramienta software utilizada en este trabajo para simulación numérica y presentación de resultados.............................. 63

6.2 Simulink, herramienta software utilizada en este trabajo para implementación y simulación de modelos ............................................ 66

6.3 System Generator for DSP, herramienta software utilizada en este trabajo para implementación de sistemas digitales y generación de código HDL ........................................................................................... 68

6.4 Xilinx ISE Design Suite 13.4, herramienta software utilizada en este trabajo para para la síntesis del sistema digital en HDL. ................... 70

7.1 Esquema de la estructura de un dispositivo DGSOI ............................ 73

7.2 Resultado de la simulación numérica de la ecuación discreta de Poisson 1D realizada con MATLAB ..................................................... 76

7.3 Serie de Taylor. Error relativo en función del grado del polinomio de Taylor ................................................................................................... 83

7.4 División del rango de interés de la función exponencial en 2 puntos equiespaciados ................................................................... 84

7.5 Formato a nivel de bit que presentarán todas las muestras de 푉′(푖) ... 86

7.6 Metodología utilizada para detectar la dirección de memoria a la que acudir dado un valor de 푉′(푖). Los valores de la función exponencial evaluados en cada punto en los que se ha dividido el rango corresponden a 푏(푖), mientras que 푐(푖) representa el valor de la pendiente entre cada par de puntos ..................................................... 86

7.7 Aproximación lineal por tramos. Error relativo en función del tamaño de la memoria ROM ................................................................ 89

Page 24: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice de Figuras

x Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

7.8 Aproximación polinómica óptima por tramos. Error relativo en función del tamaño de la memoria ROM .............................................. 92

7.9 Aproximación polinómica óptima por tramos. Error relativo en función del grado del polinomio ............................................................ 93

7.10 Resultado de la simulación numérica de la ecuación discreta de Poisson 1D tras aproximar la función exponencial mediante una aproximación polinómica por tramos, realizada con MATLAB ............ 95

8.1 Mecanismo para cambiar la dirección de memoria y poder obtener durante el cálculo de la muestra 푓(푖), la muestra siguiente 푓(푖 + 1) ... 99

8.2 Señales de control que permiten acceder a la muestra actual 푓(푖) a la muestra siguiente 푓(푖 + 1) y realizar la escritura del resultado de la muestra actual en la misma posición de memoria ............................... 100

8.3 Captación de muestras mediante biestables D habilitados por señales de control ................................................................................. 101

8.4 Puerto de salida de la memoria RAM................................................... 101

8.5 Señales de control para habilitar los biestables de forma que capten correspondientemente las muestras 푓(푖) y 푓(푖 + 1) .............................. 102

8.6 Salidas de los biestables D habilitados por señal de control. Se observa como se ha realizado la captación de las señales푓(푖) y 푓(푖 + 1) correctamente .......................................................................... 103

8.7 Señales de control ................................................................................. 103

8.8 Máquina de estados finitos implementada para la generación de las señales de control ................................................................................. 104

8.9 Circuito configuración de memoria RAM ............................................. 105

8.10 Resultado obtenido tras iterar la función 푓 durante 10 ciclos.............. 106

8.11 Máquina de estados para tipo Mealy implementada para generar señales de control ................................................................................. 107

8.12 Circuito zona de óxido .......................................................................... 108

Page 25: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice de Figuras

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xi

8.13 Señales de control generadas por la máquina de estados finitos ControlFSM2 ........................................................................................ 109

8.14 Primera iteración ejecutada del método iterativo que resuelve la ecuación de Poisson 1D. La salida es constante a un valor de 0.5 para las muestras pertenecientes a la zona de semiconductor ............ 110

8.15 Circuito zona de semiconductor ........................................................... 112

8.16 Subsistema construido en el circuito zona de semiconductor que, a partir de una dirección ROM, extrae los coeficientes del polinomio de Taylor y realiza la evaluación en el punto 푝 = ( ) ............................... 113

8.17 Primera iteración ejecutada del método iterativo que resuelve la ecuación de Poisson 1D. La salida es constante a un valor de 0.5 para las muestras pertenecientes a la zona de óxido ........................... 114

8.18 Máquina de estados finitos tipo Mealy implementada para el circuito de inicio y fin ........................................................................................ 116

8.19 Coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI .................................................................................... 118

8.20 Salida obtenida para un umbral de 10-2 ............................................... 119

8.21 Salida obtenida para un umbral de 10-4 ............................................... 119

8.22 Salida obtenida para un umbral de 10-6 ............................................... 120

Page 26: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

xii Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 27: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xiii

Índice de Tablas

4.1 Conjunto de tipos de números representables por el estándar IEEE 754 simple precisión ............................................................................. 42

4.2 Empleo de bits de guarda para el proceso de redondeo especificado en el estándar IEEE 754 ...................................................................... 46

6.1 Requisitos mínimos recomendados por el software de MATLAB en función del SO ...................................................................................... 63

6.2 Requisitos mínimos recomendados por Xilinx ISE Design Suite 13.4 en función del SO ................................................................................. 68

7.1 Declaración de constantes para la simulación numérica ..................... 74

7.2 Declaración de constantes de entrada para la simulación numérica ... 75

7.3 Estudio del comportamiento del esquema numérico en función de sus parámetros críticos ............................................................................... 77

7.4 Carga computacional y consumo de recursos adicional que implica adoptar la serie de Taylor truncada como alternativa a la función exponencial ........................................................................................... 81

7.5 Error de aproximación cometido en función del orden del polinomio de Taylor ............................................................................................... 82

7.6 Carga computacional y consumo de recursos de la técnica de aproximación lineal por tramos ............................................................ 87

7.7 Error de aproximación cometido en función de la colocación del punto binario ........................................................................................ 88

Page 28: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Índice de Tablas

xiv Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

7.8 Carga computacional y consumo de recursos de la técnica de aproximación polinómica óptima por tramos ....................................... 91

7.9 Error de aproximación cometido en función del tamaño de la memoria y del grado del polinomio ...................................................... 91

7.10 Comparación de carga computacional, consumo de recursos y error entre las tres técnicas de aproximación de la función exponencial desarrolladas en este trabajo ............................................................... 94

8.1 Evaluación del error de aproximación introducido al adoptar la técnica de aproximación de la función exponencial, aproximación polinómica óptima por tramos. Se comparan los resultados obtenidos mediante la simulación numérica en MATLAB y la simulación digital en Simulink ............................................................................... 121

9.1 Estimación de recursos para una Spartan 3 XC3S50 .......................... 125

9.2 Estimación de recursos para una Spartan 3 XC3S1000 ...................... 125

9.3 Estimación de recursos para una Virtex 4 XC4VFX12 ........................ 126

9.4 Estimación de recursos para una Virtex 4 XC4VFX100 ...................... 126

Page 29: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xv

Abreviaturas y siglas

1D Unidimensional

2D Bidimensional

ALU Arithmetic Logic Unit

API Application Programming Interface

ASIC Application-Specific Integrated Circuit

BJT Bipolar Junction Transistor

BOX Buried Oxide

BTE Boltzmann Transport Equation

CERN European Organization for Nuclear Research

CLB Configurable Logic block

CPLD Complex Programmable Logic Device

CYNTHIA Cylindrical Thin-Pillar

DGSOI Double Gate Silicon on Insulator

DSP Digital Signal Processor

DTMOS Dynamic Threshold MOS

EBR Electron Beam Recrystallization

EDA Electronic Design Automation

EDG European Data Grid

Page 30: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Abreviaturas y siglas

xvi Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

ELOG Epitaxial Lateral OverGrowth

ELTRAN Epitaxial Layer TRANsfer

EPROM Erasable Programmable Read-Only Memory

FD Fully Depleted

FPGA Field Programmable Gate Array

FPU Floating Point Unit

FPU Floating Point Unit

GAA Gate All Around

GPL General Public License

GUI Graphical User Interface

HDL Hardware Description Language

IDE Integrated Development Environment

IEEE Institute of Electrical and Electronics Engineers

IMPATT IMPact ionization Avalanche Transit Time

IOB Input/Output Block

ISE Integrated Software Environment

JFET Junction Field-Effect Transistor

LAN Local Area Network

LDMOS Lateral Double-Diffused MOS

LIGBT Lateral Insulated Gate Bipolar Transistor

LR Laser Recrystallization

LSPE Lateral Solid Phase Epitaxy

LUT Look-Up Table

MATLAB MATrix LABoratory

MEMS Micro Electro-Mechanical Systems

Page 31: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Abreviaturas y siglas

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xvii

MESFET MEtal Semiconductor Field Effect Transistor

MOSFET Metal-Oxide-Semiconductor Field-Effect Transistor

NTT Nippon Telegraph and Telephone

PAL Programmable Array Logic

PC Personal Computer

PD Partially Depleted

PDA Personal Digital Assistant

PLD Programmable Logic Device

PROM Programmable Read-Only Memory

RAM Random-Access Memory

RAW Read After Write

RBW Read Before Write

ROM Read-Only Memory

RTL Register Transfer Level

SAN Storage Area Network

SCE Short Channel Effects

SGSOI Single Gate Silicon On Insulator

SIMOX Separation by IMplanted OXygen

SO Sistema Operativo

SOI Silicon on Insulator

SOS Silicon on Sapphire

SPEAR Solid Phase Epitaxy and Regrowth

ULA Uncommitted Logic Array

UTB Ultra-Thin Body

VCBM Voltage-Controlled Bipolar MOS

Page 32: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Abreviaturas y siglas

xviii Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

VDMOS Vertical Double-Diffused MOS

VHDL VHSIC Hardware Description Language

VHSIC Very-High-Speed Integrated Circuits

VLSI Very Large Scale Integration

ZMR Zone Melting Recrystallization

Page 33: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xix

Prólogo

En los últimos 30 años, la microelectrónica ha sufrido un desarrollo espectacular gracias a la continua miniaturización de los dispositivos en aras de una mayor integración y velocidad. La ley de Moore [Moo65] y la ley de Koomey [Koo10] se han ido cumpliendo de forma más o menos exacta durante todo este período de tiempo al duplicarse las prestaciones de los circuitos electrónicos cada dieciocho meses aproximadamente. Actualmente, la ley de Moore está quedando relegada por la actual tendencia denominada “More than Moore’s Law” (MtM), que centra en la evolución de la integración del sistema en lugar de la densidad de transistores [ITR11]. De esta forma, en la tecnología actual, ciertas estructuras existentes en los dispositivos se fabrican utilizando unas pocas capas atómicas de espesor y se espera que esta tendencia se extienda a otras estructuras y dimensiones como pueden ser la longitud y el espesor de canal.

Por tanto, dentro de unos años la tecnología se encontrará muy cerca de alcanzar los límites físicos de la miniaturización. Sin embargo, este posible final de la hoja de ruta, no significa necesariamente un estancamiento en la mejora de las prestaciones. Durante todos estos años el impulsor de la industria electrónica fue la integración y el escalado. A partir de ahora, la innovación deberá estar basada principalmente en la introducción de nuevas arquitecturas, nuevas tecnologías de fabricación y en el uso de conceptos de funcionamiento no convecionales para los dispositivos que formen los sistemas de altas prestaciones futuros.

En este trabajo se propone el estudio de un dispositivo no convencional de doble puerta fabricado en silicio sobre aislante (Silicon On Insulator, SOI). Esta nueva tecnología de fabricación permite fabricar estructuras de más de una puerta sobre sustratos de silicio. Para el estudio y caracterización de los transistores de doble puerta basados en tecnología SOI (Double Gate SOI, DGSOI), se propone investigar el comportamiento de la tensión a lo largo del canal mediante la discretización de la ecuación de Poisson en una dimensión.

Page 34: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Prólogo

xx Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Desde los inicios de la electrónica, el modelado matemático de sus componentes ha sido una parte básica de su desarrollo, ya que permite experimentar su comportamiento, mejorando tanto en el diseño de nuevos circuitos como en el desarrollo de nuevos dispositivos.

Posteriormente, con la llegada de los ordenadores, la posibilidad de simular el comportamiento de un dispositivo o circuito antes de su construcción, multiplicó la facilidad para iniciar nuevos proyectos y redujo el coste en la inversión necesaria para su desarrollo, obteniéndose resultados muy cercanos al comportamiento real del dispositivo. Sin embargo, la utilización de este tipo de herramientas siempre ha tenido un alto coste computacional que, pese al imparable avance de la informática, sigue requiriendo de sistemas de alto rendimiento.

Por todo esto, el objetivo del presente trabajo fin de carrera es evaluar la viabilidad del uso de coprocesadores en punto flotante y simple precisión basados en FPGAs (Field Programmable Gate Array) para la resolución de la ecuación de Poisson 1D en estructuras SOI. Además, el objeto de dichos coprocesadores es su integración como nodos de procesamiento específico dentro de una red de computación grid.

El trabajo está estructurado de la siguiente forma:

PARTE I: FUNDAMENTOS

Capítulo 1: En este primer capítulo se presenta la tecnología SOI necesaria para la fabricación de transistores de doble puerta basados en silicio. Tras introducir las motivaciones que llevaron al desarrollo de esta tecnología, se describen los distintos procesos utilizados para obtener obleas SOI. A continuación se hace una descripción de las principales ventajas con respecto a la tecnología de silicio convencional y se realiza una taxonomía de los dispositivos que pueden ser fabricados a partir de obleas SOI.

Capítulo 2: En este capítulo se introduce el concepto de modelado de dispositivos semiconductores y su motivación. Así, se describen las herramientas que permiten modelar el comportamiento de un dispositivo dependiendo del parámetro que se pretenda evaluar. Dichas herramientas se basan en el modelado numérico de ecuaciones diferenciales parciales, por lo que al final de este capítulo se describe la historia y evolución del dispositivo de modelado numérico.

Page 35: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Prólogo

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI xxi

Capítulo 3: En este capítulo se presenta la herramienta desarrollada en este trabajo. Así, se describe el método numérico utilizado para resolver la ecuación de Poisson 1D. Para ello, se presenta el método de diferencias finitas empleado en la discretización de la ecuación continua de Poisson 1D y las condiciones de contorno evaluadas. Al final del capítulo se encuentra un breve estudio del error del método numérico.

Capítulo 4: A continuación se describe el formato numérico empleado en el trabajo, punto flotante y simple precisión. Para ello, se describe el estándar IEEE 754 para aritmética en punto flotante incluyendo definición numérica, aritmética, tipo de redondeo, tipo de desbordamiento y excepciones.

Capítulo 5: Este capítulo presenta la descripción del entorno de ejecución del trabajo. El objetivo es resolver la ecuación de Poisson 1D en una plataforma reprogramable (FPGA) que pueda formar parte de una red de computación grid. Para ello, encontramos la definición de ambos conceptos, una descripción breve de su historia, así como la justificación de implementación en el presente trabajo.

PARTE II: HERRAMIENTAS SOFTWARE

Capítulo 6: En este capítulo se describen las herramientas software utilizadas en este trabajo. La primera de ellas, consiste en la herramienta utilizada para realizar la simulación numérica de la ecuación discreta de Poisson 1D. En este caso se trata de MATLAB, un software matemático con lenguaje de programación propio que permite, entre otras funcionalidades, resolución de problemas iterativos y representaciones gráficas para visualización de datos.

Seguidamente, se describen las dos herramientas utilizadas para obtener el sistema en lenguaje de descripción hardware (HDL). Por un lado se habla de Simulink un entorno gráfico que opera sobre MATLAB y que permite el desarrollo y simulación de sistemas dinámicos y embebidos. Por otro lado se encuentra Xilinx System Generator for DSP, una herramienta que permite el diseño de sistemas digitales mediante el modelado RTL operando sobre Simulink y MATLAB y la generación automática de código HDL.

Finalmente se presenta Xilinx ISE Design Suite, herramienta software que permite la síntesis y el análisis de sistemas implementados en HDL.

Page 36: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Prólogo

xxii Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

PARTE III: DESARROLLO DEL TRABAJO Y RESULTADOS

Capítulo 9: En este capítulo se realiza la simulación de un DGSOI mediante MATLAB. El principal problema que presenta la ecuación discreta de Poisson 1D es su dependencia con la función exponencial. El estándar IEEE 754 que describe la aritmética en punto flotante no contempla operaciones no elementales, por lo que, debe utilizarse una alternativa para la aproximación de la función exponencial continua. Se describen tres técnicas para dicho cálculo junto con un estudio cuantitativo del error producido por dicha aproximación y una evaluación de la carga computacional y consumo de recursos que implican la adopción de dichas técnicas. Será un compromiso entre estos factores lo que justificará la elección de una de estas técnicas. Finalmente, se realiza la simulación de la ecuación discreta de Poisson 1D aplicando dicha técnica de aproximación de la función exponencial.

Capítulo 10: Una vez detallada la ecuación discreta y la aproximación para la función exponencial y simulado su comportamiento, se procede al diseño digital RTL mediante Simulink y System Generator del sistema que implementa la resolución a dicha ecuación. Para ello se divide el sistema global en subsistemas digitales con funcionalidades específicas. Así, se presenta la descripción de cada circuito junto con la simulación de su funcionamiento y se proponen diferentes alternativas para optimizar cada subsistema. A continuación, los subsistemas se ensamblan en un único circuito digital que obtiene la simulación de un DGSOI. Finalmente, se realiza un estudio del error de los resultados obtenidos.

Capítulo 11: Una vez construido el circuito digital que implementa la resolución de la ecuación de Poisson 1D, se procede a la generación del código en lenguaje de descripción hardware. Mediante la herramienta Xilinx ISE Design Suite se procede a la síntesis del sistema con dos sintetizadores diferentes: XST y Precision. A continuación, se definen detalladamente los recursos de los que se componen dichas plataformas configurables, para, seguidamente, presentar un estudio sobre la estimación de consumo de estos recursos en varias FPGAs actuales.

Tras las conclusiones del trabajo se incluyen tres apéndices. El primero y el tercero incluyen los programas realizados en MATLAB para la simulación numérica y para la implementación de máquinas de estado finito. En el segundo apéndice se describen los bloques utilizados en este trabajo del Xilinx Blockset que ofrece System Generator en Simulink para la construcción de los diferentes circuitos.

Page 37: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 1

Parte I

FUNDAMENTOS

Page 38: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

2 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 39: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 3

Capítulo 1

La Tecnología SOI

La tecnología de circuitos integrados tradicional está basada en el concepto, introducido por Noyce [Noy77] y Kilby [Kil76] a finales de los años 70, de que un circuito formado por varios transistores puede realizarse sobre una misma pieza de silicio (Si), aislando unos circuitos de los otros mediante: uniones PN polarizadas en inversa, la utilización de óxidos de campo o la introducción de canales de parada. A pesar de que la integración en circuitos monolíticos ha revolucionado la tecnología y el mundo que nos rodea en general, conforme la microelectrónica se ha ido desarrollando, ha quedado clara la necesidad de incorporar nuevos métodos para aislar dispositivos vecinos dentro de un mismo chip. Entre los efectos perjudiciales que podemos encontrar se encuentran la introducción de capacidades parásitas extras que disminuyen la velocidad de operación de los circuitos o la reducción de la densidad de integración. Asimismo, a altas temperaturas las corrientes de pérdida disminuyen el aislamiento entre los distintos dispositivos en un circuito integrado [Sam06].

Actualmente, la industria semiconductora mantiene unas máximas conocidas como ley de Moore y ley de Koomey. La ley de Moore, formulada por Gordon E. Moore en 1965, predice que las prestaciones de los circuitos electrónicos, en términos de número de transistores por integrado, se duplica cada dieciocho meses. La ley de Koomey, formulada por Jonathan Koomey en 2010, predice que la eficiencia energética de los circuitos integrados se duplica cada dieciocho meses. Estas mejoras se han venido haciendo a costa de construir los componentes que forman parte de los circuitos integrados cada vez más pequeños. Reducir el tamaño de los transistores permite incluir cada vez más dispositivos en la misma área de un circuito integrado y permite que éstos conmuten más rápido al reducir la capacitancia de la compuerta.

Page 40: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

4 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Sin embargo, al reducirse las dimensiones críticas de los dispositivos por debajo de un umbral situado sobre 0.1 µm, han aparecido problemas cuya solución no ha resultado trivial y ha puesto en duda la posibilidad de mantener esta tendencia a largo plazo, que por otro lado, se ha mantenido desde mediados de los años 70 del siglo XX.

Figura 1.1 Gráfico de la Ley de Moore. Evolución del número de transistores por microprocesador a lo largo del tiempo.

La solución a estos problemas ha pasado por un replanteamiento total de los conceptos clásicos que han sido utilizados hasta ahora en todos los aspectos del diseño. Por tanto, ha sido necesario optimizar todas y cada una de las áreas que intervienen en la fabricación del producto final: la obtención del sustrato sobre el que se diseña el circuito, optimización de dispositivos, creación de nuevos circuitos, invención de nuevas arquitecturas para microprocesadores y replanteamiento de encapsulados e interconexiones exteriores. Por otro lado, se ha buscado una cierta compatibilidad con los procesos y técnicas existentes de forma que se han mantenido

Page 41: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 5

las distintas líneas de producción que no han necesitado una agresiva reconversión, pudiéndose además haber aprovechado ciertos procesos actuales de forma que las costosas salas blancas construidas durante siglo XX hayan podido ser amortizadas.

Figura 1.2 Gráfico de la Ley de Koomey. Evolución de la eficiencia energética de diferentes microprocesadores a lo largo del tiempo.

1.1 Motivación de la Tecnología SOI

Cuando confeccionados un circuito integrado es posible, y en algunos casos ventajoso, realizar el aislamiento mediante dieléctricos en vez de uniones en inversa (el dieléctrico más usado es el dióxido de silicio, SiO2) creándose las denominadas trincheras que realizan un aislamiento lateral.

Page 42: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.1 Motivación de la Tecnología SOI

6 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 1.3 Aislamiento lateral mediante dióxido de silicio entre transistores NMOS y PMOS.

Sin embargo, una reciente tecnología desarrollada en las últimas décadas permite crear obleas de silicio sobre las que se deposita una lámina de aislante (SiO2 normalmente) construyéndose los dispositivos a partir de una capa de silicio monocristalino colocada sobre esta capa de dieléctrico, tal y como podemos observar en la Figura 1.4:

Figura 1.4 Transistores NMOS y PMOS fabricados sobre una oblea de tecnología SOI. En este caso, los canales de ambos dispositivos se encuentran aislados entre sí.

Aproximadamente desde 1998 las aplicaciones comerciales de los dispositivos fabricados con SOI han crecido exponencialmente. De esta manera, IBM comenzó a utilizar la tecnología SOI en el microprocesador de alta gama RS64-IV Istar PowerPC-AS en 2000. Otros ejemplos de microprocesadores construidos sobre la tecnología SOI son los AMD de 130 nm, 90 nm, 65 nm y 45 nm de un solo núcleo, dos, cuatro e incluso seis núcleos, desde 2001. Sin embargo, Intel sigue construyendo sus principales procesadores con tecnología convencial. Pese a que desde 2010, varias

Page 43: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 7

fuentes aseguraban que Intel podría cambiar a SOI, aún no la han implantado como principal tecnología [Web00].

Tres han sido las razones principales para el desarrollo y el uso de la tecnología SOI buscando siempre un mejor comportamiento de los dispositivos allí donde la tecnología convencial de Si es más debil [CC03]:

I Durante las décadas de los 70 y 80 del siglo XX y debido a la Guerra Fría, existía una gran preocupación por realizar circuitos resistentes a los efectos de las radiaciones ionizantes que pudiesen operar en un hipotético escenario de guerra nuclear. La tecnología convencional muestra una conexión eléctrica implícita entre los dispositivos sobre el mismo sustrato, mientras que la delgada capa de Si activo, que presenta la tecnología SOI sobre el óxido, minimiza el impacto de la radiación en las propiedades del dispositivo. En efecto, la mayoría de la carga generada por las radiaciones ionizantes es detenida por el óxido enterrado (Buried Oxide o BOX) de forma que la corriente extra generada es muy pequeña.

II Los circuitos basados en tecnología SOI presentan una menor capacidad de puerta. Esta mejora ha provocado que muchas compañías se decidan por el cambio a esta tecnología. En aplicaciones digitales, por ejemplo, para una misma tensión de alimentación los circuitos SOI permiten mayores velocidades de operación. Visto desde otro punto de vista, circuitos operados con menores tensiones pueden operar a la misma velocidad que sus equivalentes fabricados con tecnología tradicional de silicio, con la consiguiente disminución del consumo de potencia que ello supone.

Figura 1.5 Comparación de potencia consumida y tensión de alimentación frente a tiempo de acceso entre la tecnología convencional y la tecnología SOI.

Page 44: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.1 Motivación de la Tecnología SOI

8 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

III Finalmente, conforme se ha acercado a lo que se conoce como el final de la hoja de ruta se ha hecho necesario el cambio de tecnología. La razón principal es que el comportamiento de los dispositivos con longitudes de puerta inferiores a 25 nm no es el adecuado cuando son fabricados con tecnología CMOS convecional debido básicamente a los efectos de canal corto (Short Channel Effects o SCE), resultando éstos cada vez más difíciles de controlar.

Figura 1.6 Comparación de las predicciones realizadas por la ley de Moore con el rendimiento obtenido con las tecnologías tradicionales y SOI.

El cambio de tecnología no ha resultado tan crítico como se podía pensar en un principio. Una vez superado el reto tecnológico de crear láminas de Si cristalino sobre un sustrato dieléctrico, el diseño de los circuitos en sí es bastante parecido al de la tecnología anterior. En la práctica no son necesarias grandes modificaciones en los diseño para traducir un circuito de tecnología convencional o bulk a otro SOI. De hecho, muchas de las estructuras que se debían crear en los layouts para asegurar el correcto aislamiento de los dispositivos y evitar efectos parásitos como corrientes de fuga, fotocorrientes inducidas por radiación o el latch-up, no son necesarias debido al BOX y al aislamiento lateral dieléctrico. Así, los chips obtenidos resultan más simples en su diseño y compactos.

La tecnología SOI permite una mayor variedad de estructuras que no eran realizables en otras tecnologías. De esta manera, han aparecido gran cantidad de nuevos dispositivos basados en diferentes conceptos, siendo posible integrar en un mismo chip elementos tan diferentes como MOSFETs, MEMS o guías de onda ópticas. Además, aparecen nuevos parámetros en el diseño que permiten mayor control sobre las estructuras a realizar como pueden ser los espesores tanto de la lámina de Si como del BOX.

Page 45: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 9

1.2 Obtención de Obleas SOI

El principal problema para la creación de obleas SOI es que la lámina de silicio que se encuentra sobre el óxido debe ser monocristalina mientras que la capa aislante es amorfa. No existe ningún método de deposición que permita obtener un material monocristalino sobre un sustrato amorfo. Se han realizado numerosas aproximaciones que, a pesar de haber ayudado a un mejor conocimiento de la estructura y morfología de las láminas de silicio, no han permitido desarrollar técnicas comerciales. El objetivo es obtener una fina capa monocristalina de silicio sobre un aislante con [Gam03]:

Densidades de defectos tan pequeñas como las obtenidas con las técnicas de crecimiento en volumen.

Espesor pequeño y muy uniforme en toda la superficie de la oblea. Una interfase silicio-aislante de alta calidad. Buenas características eléctricas.

Muchas técnicas han sido desarrolladas para producir una capa de silicio monocristalino sobre un aislante [GGR+08]. Algunas están basadas en el crecimiento epitaxial de silicio sobre un sustrato cubierto de aislante (técnicas epitaxiales). Otras técnicas se basan en la cristalización de una lámina delgada de polisilicio previamente fundido y recrecimiento (técnicas recristalización). Las obleas de silicio sobre aislante pueden también producirse a partir de una oblea de silicio convencional aislando una pequeña capa del sustrato mediante la implantación iónica creando así una capa de aislante enterrado (técnicas de implantación iónica). No obstante estos procedimiento no proporcionan regiones activas de calidad comparable a las obleas de silicio puro y además los costos son elevados. Actualmente las técnicas más utilizadas son aquellas que pueden obtener obleas SOI mediante la unión de una oblea de silicio depositada sobre un aislante y un sustrato mecánico (técnicas wafer bonding). Estas técnicas proporcionan buenos resultados y mejoran la calidad a la vez que reducen los costes. A continuación se presentan las técnicas más usuales de obtención de obleas SOI [Col04][Jaj04].

1.2.1 Técnicas basadas en crecimiento epitaxial

SOS (Silicon on Sapphire): Heteroepitaxia de silicio sobre un sustrato de zafiro (Al2O3) por descomposición, generalmente del silano (SiH4). La ventaja del zafiro es que es un excelente aislante eléctrico, por lo que evita que las corrientes parásitas

Page 46: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.2 Obtención de obleas SOI

10 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

causadas por radiación se propaguen a elementos cercanos del circuito. El zafiro y el silicio presentan una distinta constante de red, por lo que nos encontramos con numerosos defectos en la lámina de silicio próxima a la interfase. Para ello se realiza una implantación posterior de iones de silicio a baja energía, para no dañar la superficie, y una recristalización por epitaxia en fase sólida de la parte amorfizada por la implantación, usando como semilla la parte superior de mejor calidad a alta temperatura. Este proceso es conocido como SPEAR (Solid Phase Epitaxy and Regrowth) [Imt06].

ELOG (Epitaxial Lateral OverGrowth): La técnica de recrecimiento epitaxial lateral [Usu97] es una homoepitaxia que consiste en crecer silicio sobre un patrón de ventanas abiertas fotolitográficamente sobre un dieléctrico (SiO2 o SiN4) crecido previamente sobre un sustrato de silicio. El crecimiento comienza sólo en el interior de las ventanas, hasta que son rebasadas y se produce el crecimiento lateral. La propagación de las dislocaciones ascendente se detiene, generándose una capa de muy baja densidad de defectos. La técnica ELOG es utilizada para fabricar dispositivos tridimensionales y de doble puerta [Nar03].

Figura 1.7 Crecimiento epitaxial lateral de silicio mediante la técnica ELOG.

LSPE (Lateral Solid Phase Epitaxy): La técnica de epitaxia lateral en fase sólida está basada en el crecimiento homoepitaxial lateral de silicio cristalino a través de la cristalización controlada de silicio amorfo (α-Si). Se precisa de una semilla para proporcionar la información necesaria sobre el cristal para el crecimiento. La delgada capa de silicio amorfo puede o bien ser depositada u obtenerse amorfizando una capa de polisilicio. Esta técnica ha sido usada para fabricar MOSFETs de doble puerta.

Page 47: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 11

Figura 1.8 Crecimiento epitaxial lateral de silicio mediante la técnico LSPE.

1.2.2 Técnicas basadas en recristalización

Un transistor MOS puede fabricarse en una capa de polisilicio de grano gordo depositado sobre un sustrato de óxido de silicio. Debido a las fronteras de los granos nos encontramos una baja movilidad superficial y una alta tensión umbral. Estos valores pueden mejorarse mediante la pasivación de los enlaces de silicio con un tratamiento con plasma de hidrógeno. Sin embargo, se requieren unas mejores propiedades finales para el circuito integrado, de tal manera que se debe eliminar las tensiones en la frontera con la capa de silicio. Este es el objetivo de las técnicas de recristalización basadas en: láser (LR, Laser Recrystallization), haz de electrones (EBR, Electron Beam Recrystallization) o fusión zonal (ZMR, Zone Melting Recrystallization). Las técnicas basadas en láser o haz de electrones son procesos relativamente lentos, mientras que la técnica fusión zonal utiliza luz incoherente o una fuente cercana a infrarrojo.

Figura 1.9 Recristalización de silicio por medio de la técnica Laser Recrystallization.

Page 48: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.2 Obtención de obleas SOI

12 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

1.2.3 Técnicas basadas en implantación iónica

SIMOX (Separation by IMplanted OXygen): Es la técnica más utiliza durante la última década. La técnica SIMOX fue desarrollada en 1978 por K. Izumi, M. Doken y H. Ariyoshi del NTT [IDA78] y consiste en implantar una alta dosis de iones de oxígeno sobre una oblea de silicio seguido de un recocido a alta temperatura (annealing) formándose de esta manera una capa de óxido enterrado (BOX). El espesor de la capa de silicio se controla por la energía de la implantación, mientras que la dosis de iones de oxígeno controla el espesor del óxido enterrado.

Figura 1.10 Obtención de una oblea SOI mediante la técnica SIMOX.

1.2.4 Técnicas basadas en wafer bonding

ELTRAN (Epitaxial Layer TRANsfer): Esta técnica fue desarrollada por Canon en 1990 como una técnica para la obtención industrial de obleas SOI. En ella se combina la formación de silicio poroso, el crecimiento epitaxial y el wafer bonding consistente en la unión hidrofílica de dos obleas para obtener una sola. Es posible crear silicio poroso haciendo pasar una corriente eléctrica por una muestra del material inmerso en ácido fluorhídrico (HF). El grado de porosidad se puede controlar mediante la corriente que se hace pasar durante la reacción. Esta técnica utiliza el hecho de que el silicio poroso es mecánicamente débil pero mantiene la estructura cristalina del sustrato en el que se formó. Mediante un recocido a elevadas temperaturas en ambiente de hidrógeno se sellan los poros en la superficie de la oblea.

Page 49: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 13

Figura 1.11 Obtención de obleas SOI mediante la técnica ELTRAN.

En primer lugar se crea una lámina de silicio poroso con dos grados diferentes de porosidad. Esto se consigue variando la corriente que se hace pasar por la muestra durante el proceso, de forma que aparece una zona mecánicamente más débil en la frontera entre las dos zonas con porosidad diferente. Sobre este silicio poroso sellado se crece epitaxialmente una lámina de silicio y a continuación un óxido térmico. En este punto la oblea se une con otra que actuará como soporte mecánico. Puesto que se produce una tensión muy fuerte en la interfase entre las dos láminas de diferente porosidad, por ejemplo, un chorro de agua puede producir un corte limpio entre estas dos interfases. El silicio poroso que permanece en la superficie de la oblea se elimina quedando la superficie del silicio sobre aislante (SOI) que nuevamente se somete a un proceso de recocido en un ambiente rico en hidrógeno. La oblea sobrante se puede reutilizar nuevamente con el consiguiente ahorro de costes. La tecnología ELTRAN se ha empleado con éxito en obleas de 300mm (12in) y se han conseguido espesores de silicio inferiores a 30nm con una calidad comparable a otras más gruesas. El proceso de obtención de una oblea SOI por el método ELTRAN puede observarse en la Figura 1.11.

SMART-CUT: Esta técnica combina los procesos de implantación iónica y wafer bonding para transferir una lámina delgada sobre otra oblea o un sustrato aislante. El proceso, desarrollado en el CEA-LETI de Grenoble [Bru95], utiliza una implantación de protones a modo de escalpelo atómico que corta a través de la red cristalina. De esta forma es posible realizar una transferencia limpia y uniforme de

Page 50: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.2 Obtención de obleas SOI

14 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

una fina capa de Si a otro sustrato. Las obleas SOI fabricadas mediante este proceso son denominadas UNIBOND. Este proceso ha demostrado ser uno de los más eficaces y, hoy en día, es el más utilizado para la obtención de obleas SOI para uso comercial.

Figura 1.12 Obtención de obleas SOI (UNIBOND) mediante la técnica SMART-CUT.

La Figura 1.12 muestra la secuencia de pasos seguida para fabricar obleas SOI siguiendo la técnica Smart-Cut. En primer lugar se parte de dos obleas de silicio convencionales. Seguidamente se oxida térmicamente una de ellas con el espesor deseado. Este óxido se convertirá posteriormente en el óxido enterrado de los dispositivos resultantes. El siguiente paso consiste en realizar una implantación iónica de hidrógeno a través del óxido, de forma que se crea una zona de cristal debilitada por el proceso. Después de la implantación, la oblea soporte y la oblea semilla se limpian cuidadosamente para eliminar cualquier partícula o contaminante y hacer las dos superficies hidrofílicas. Las dos obleas se alinean y funden para formar un único cuerpo. A continuación estas obleas se introducen en un horno que produce la separación entre obleas a lo largo del implante de hidrógeno que es la zona

Page 51: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 15

más frágil mecánicamente. La superficie de las obleas resultantes presenta una rugosidad de unos pocos nanómetros. Un proceso posterior de pulido consigue la misma rugosidad superficial que una oblea de silicio convencional. La oblea semilla puede reutilizarse de nuevo reduciendo el costo final de la oblea SOI. Esta oblea semilla es la que proporciona la lámina de silicio y por este motivo debe ser de gran calidad mientras que la segunda oblea actúa únicamente como soporte mecánico por lo que no se necesita gran calidad. El hecho de definir el espesor de lámina de silicio mediante la energía de implantación permite un control mucho más preciso del que es posible conseguir con cualquier proceso mecánico o químico. El espesor del óxido y/o de la lámina enterrada pueden ajustarse en el proceso Smart-Cut eligiendo la energía de implante y el tiempo de oxidación. Actualmente se utilizan nuevas técnicas para mejorar los resultados, por ejemplo el uso combinado de hidrógeno y helio se ha demostrado más eficaz en la separación de las obleas.

Existen otros procesos basados en la técnica del wafer bonding que permiten la obtención de láminas de silicio monocristalinas sobre sustratos de casi cualquier tipo. De esta forma es posible obtener circuitos para ciertas aplicaciones en las que las propiedades del soporte mecánico sean importantes, como puede ser el caso de circuitos integrados sobre sustratos flexibles, vidrio o plásticos, permitiendo una mejor integración de los mismos en sistemas empotrados. La repetición de estos procesos sobre un mismo sustrato permite la integración de circuitos no planares en estructuras tridimensionales con el consiguiente aumento de la integración.

1.3 Ventajas de la Tecnología SOI

Como se ha mostrado en los apartados anteriores, a pesar de que la mayoría de los procesos de fabricación para dispositivos SOI son compatibles con los estándar de la industria semiconductora, el coste final del producto es un poco más elevado que en el caso de los basados en tecnología convencional debido principalmente a que las obleas deben ser preprocesadas para conseguir el sustrato deseado para cada tipo de aplicación. A pesar de todo, las ventajas de la tecnología SOI sobre la bulk son importantes con lo que el incremento en el gasto está en cierta medida justificado, siendo en algunos casos la única opción para obtener ciertas estructuras o para integrar ciertos componentes como se comentará más adelante. Entre las principales ventajas que se pueden enumerar se encuentran las siguientes [CC03]:

Page 52: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.4 Clasificación de dispositivos SOI

16 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Tecnología completamente compatible con los procesos de fabricación tradicionales.

Reducción del número de pasos en ellos. Aumento, en algunos casos, del nivel de integración debido a una

simplificación en los layouts de los circuitos a fabricar. Resistencia a las radiaciones ionizantes. Menor tensión de alimentación para una determinada velocidad de operación. Mayor velocidad de operación para una determinada tensión de alimentación. Mayor control sobre los efectos de canal corto. Reducción de capacidades parásitas. Mayor flexibilidad en las estructuras. Integración de diferentes tipos de estructuras en un mismo chip tales como

dispositivos de alta velocidad, de potencia, MEMS y elementos ópticos. Posibilidad de fabricar no sólo dispositivos planares sino también

tridimensionales. Fabricación de circuitos integrados tridimensionales mediante la aplicación

de sucesivos procesos de transferencia de láminas o pegado de obleas.

1.4 Clasificación de Dispositivos SOI

El dispositivo más utilizado en los circuitos basados en tecnología SOI continúa siendo el MOSFET de puerta simple. Este hecho, unido a la compatibilidad en los procesos de fabricación, ha permitido la transferencia directa de la tecnología CMOS convencional para la fabricación de circuitos basados en obleas SOI. Sin embargo, el hecho de que exista un óxido enterrado bajo la lámina de silicio y el desarrollo de las nuevas técnicas para la obtención de estructuras SOI ha abierto la posibilidad de realizar dispositivos cuya fabricación resultaba imposible para la tecnología CMOS convencional. El gran esfuerzo realizado en este sentido ha dado como fruto la aparición de gran cantidad de nuevos dispositivos tanto bipolares como de efecto campo que amplían el abanico de posibilidades a la hora de elegir el dispositivo adecuado para cada aplicación. La cantidad de configuraciones y principios de operación en los que estos dispositivos están basados, hace imposible la realización de una única clasificación. Por esta razón, en este trabajo, se utilizará el número de puertas como elemento diferenciador principal de cada una de las familias de dispositivos, pudiéndose encontrar ciertos solapamientos desde el punto de vista del principio de operación.

Page 53: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 17

1.4.1 Dispositivos de una puerta

Los dispositivos de una puerta son los herederos directos de los MOSFET realizados con tecnología CMOS convencional, Figura XY.

Figura 1.13 Representación esquemática de un SGSOI.

En función de que exista o no una zona neutra debajo de la zona de canal se puede hablar de dispositivos completamente deplexionados (Fully Depleted, FD) o parcialmente deplexionados (Partially Depleted, PD).

Figura 1.14 Representación de la sección de dispositivos SGSOI: FD (izqda.) y PD (dcha.).

En el caso de un SGSOI PD el comportamiento resulta similar al de los MOSFETs convencionales con las ventajas que añade el aislamiento total que introduce la capa de óxido enterrado. Sin embargo, la aparición de una zona neutra puede traer ciertos problemas: aparición del denominado floating body que cambia la tensión umbral del dispositivo dependiendo de la historia del mismo (proceso de histéresis), los efectos causados por el transistor bipolar parásito formado por las zonas de drenador, zona neutra y fuente o el denominado kink effect para altas polarizaciones entre drenador y fuente. Una forma de reducir estos efectos consiste en realizar una conexión entre la puerta y el sustrato del transistor.

De esta forma se obtiene el denominado VCBM o DTMOS, cuyas principales características son un aprovechamiento del transistor bipolar parásito y una disminución de la tensión umbral con la tensión de puerta aplicada obteniéndose comportamientos casi ideales en el régimen subumbral y una drástica reducción de los efectos de floating body.

Page 54: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.4 Clasificación de dispositivos SOI

18 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 1.15 Representación de la sección de un dispositivo VCBM.

Conforme se disminuye el espesor de la lámina de silicio, la zona neutra se va reduciendo de forma que puede llegar a desaparecer. En ese momento el sustrato pasa a estar completamente deplexionado, ocupando el canal toda la zona de silicio situada entre el óxido de puerta y el BOX y desapareciendo pues, los efectos relacionados con el floating body. El comportamiento de estos dispositivos se acerca al del caso ideal, sin embargo existe un problema desde el punto de vista práctico. La carga en inversión depende no sólo de la polarización sino también del espesor de la lámina de silicio, de forma que las fluctuaciones aparecidas en ésta inducen variaciones en la tensión umbral. Este fenómeno resulta crítico en dispositivos ultradelgados (UTB).

En el caso de aplicaciones de potencia existen estructuras específicas que permiten la fabricación de tales dispositivos sobre sustratos SOI. Entre ellos se encuentran los denominados vertical double-diffused MOS (VDMOS), lateral double-diffused MOS (LDMOS, con aplicaciones en RF) o los lateral insulated gate bipolar transistor (LIGBT) entre otros. Del mismo modo es posible fabricar otros tipos de dispositivos distintos de los MOSFET sobre sustratos SOI, como es el caso de transistores bipolares (BJT), JFETs o diodos, e incluso se pueden integrar en el mismo chip elementos que no era posible combinar cuando eran fabricados con tecnología convencional. Así, en un mismo chip fabricado en SOI es posible incluir dispositivos de alta velocidad, dispositivos de potencia, elementos ópticos (guías de onda, sppliters...) e incluso elementos electromecánicos, los denominados MEMS.

1.4.2 Dispositivos de doble puerta

La utilización de sustratos SOI no sólo permite mejorar las prestaciones de estructuras convencionales, sino que también es posible introducir geometrías cuya fabricación no era posible con la tecnología CMOS convencional.

En algunos casos la idea ha sido tomada de la industria de los materiales III-V para ser implementada en tecnología SOI como son transistores basados en procesos de transferencia en espacio real o láseres intersubbanda [LZ06].

Page 55: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 19

En cualquier caso, estas geometrías aportan una gran variedad de elementos que permiten solventar diferentes problemas a los que se enfrenta la industria semiconductora en la actualidad. El primero de ellos viene de la necesidad de aumentar la cantidad de corriente transportada por un dispositivo sin perder el control que la puerta ejerce sobre esa carga. La miniaturización de las estructuras busca aumentar la corriente y, por tanto, la velocidad de conmutación de los dispositivos. Sin embargo, la disminución de la longitud del canal produce los denominados efectos de canal corto (SCE) que, básicamente, consisten en la pérdida del control de la carga del canal por el terminal de puerta. Los dispositivos multipuerta surgen de esa necesidad.

El primer dispositivo basado en este concepto que se propuso fue el XMOS [SH84], también conocido como DGSOI (Double Gate SOI). Podemos observarlo en la Figura 1.16:

Figura 1.16 Representación esquemática de un DGSOI.

Este doble puerta, objeto de estudio en el presente trabajo, debe su nombre a la semejanza de su geometría con la letra Ξ. Los transistores de efecto campo de doble puerta fabricados en silicio sobre aislante están actualmente considerados como una seria alternativa a los MOSFETs convencionales ya que incrementan la capacidad de integración. La estructura de un DGSOI consiste, básicamente, en un sándwich formado por una lámina de silicio entre dos capas de óxido. Podemos observar un esquema 2D del DGSOI en la Figura 1.17:

Figura 1.17 Representación de la sección de un DGSOI, dispositivo bajo estudio en este trabajo.

Page 56: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.4 Clasificación de dispositivos SOI

20 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Un metal o una capa de polisilicio forma el contacto con cada óxido. Cada uno actúa como electrodo de puerta frontal y trasera, que puede generar una región de inversión cerca de las interfaces silicio-óxido, si una apropiada tensión es aplicada. De esta manera tendríamos dos MOSFETs compartiendo el sustrato, la fuente y el drenador. A continuación se describen una serie de conceptos importantes:

Short Channel Effects (SCEs): Los DGSOIs presentan mayor inmunidad a los efectos de canal corto que los MOSFETs convencionales e incluso mayor que los SGSOI FD. La razón reside en el hecho de que las dos puertas tienen un control mayor conjunto de la carga. Esta característica permite una escalabilidad jamás imaginada en tecnología MOSFET convencional.

Autocalentamiento SOI: Los dispositivos SOI también sufren efectos de calentamiento por la capa de óxido enterrado. Esto provoca una elevación considerable de la temperatura dentro del dispositivo SOI, que modifica su característica de salida. El autocalentamiento se vuelve más pronunciado a medida que las dimensiones del dispositivo se reducen al régimen de la submicra debido a una mayor densidad de campo eléctrico y a un menor volumen de silicio disponible para disipar calor. Este efecto debe tenerse en cuenta por los ingenieros y diseñadores de tecnología de dispositivos.

Inversión de volumen: Aparece en dispositivos en los que la lámina de silicio es muy delgada [BCB+87]. Debido a la proximidad entre los óxidos de puerta existe una interacción entre los dos canales que se crean al polarizar ambas puertas. Los portadores en inversión dejan de encontrarse confinados en las cercanías de las interfases de silicio con el óxido, desplazándose el centroide de la distribución hacia el centro del canal (Figura 1.15):

Figura 1.18 Dependencia de la densidad de carga con el espesor de la lámina de Si en dispositivos de doble puerta. La inversión de volumen puede observarse claramente para

espesores inferiores a 10nm.

Page 57: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 21

De esta forma, el efecto de la rugosidad superficial es menos pronunciado debido a la mayor distancia de los portadores a las zonas degradadas que aparecen al crecer la lámina de óxido. Como consecuencia, se produce un aumento en la movilidad y, por tanto, en la corriente.

Efectos cuánticos: La reducción en las dimensiones de la estructura, especialmente, en el espesor de la lámina de silicio, provoca que ciertos fenómenos de naturaleza cuántica predominen a la hora de explicar el comportamiento de estos dispositivos. Debido a la inversión del volumen, el hecho de que los portadores se encuentren confinados, provoca una cuantización de la energía en la dirección de confinamiento de forma que un fenómeno cuántico conocido como modulación inter-subbanda entra en juego aumentando la ganancia en movilidad [GF01]. Como puede observarse en la Figura 1.19 la movilidad aumenta conforme disminuye el espesor del canal ya que los portadores se encuentran cada vez más localizados en la dirección de confinamiento. Se observa una brusca caída debida a un aumento de la dispersión por fonones. Como consecuencia directa, y debido al principio de incertidumbre, aparece una deslocalización en el espacio de momentos de forma que existen más modos disponibles para asistir los mecanismos por fonones, aumentando la probabilidad de dispersión y reduciendo la movilidad de forma significativa.

Figura 1.19 Comparación de la dependencia de la movilidad electrónica con el espesor de la lámina de Si en dispositivos SGSOI y DGSOI. Los efectos de la inversión en volumen pueden

observarse con claridad suponiendo un aumento importante de la movilidad para espesores inferiores a 10nm.

Otro fenómeno puramente cuántico se ha observado en hilos cuánticos con canal ultra corto fabricados en SOI [NTH+94]. En ellos se ha encontrado una dependencia escalonada de la conductancia con la tensión de puerta. Tras

Page 58: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.4 Clasificación de dispositivos SOI

22 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

corregir los datos obtenidos experimentalmente con los valores de resistencia serie debidos al drenador y a la fuente, se comprobó que este aumento se

produce en múltiplos de 4푞 ℎ como predice la fórmula de Landauer para fluctuaciones en la conductancia.

Desalineación de la puerta superior e inferior: La complejidad en la fabricación de DGSOIs, en particular, de la fabricación de las puertas superior e inferior y su alineación, es aún una limitación seria para el desarrollo industrial de esta tecnología planar. Aunque existen tecnologías para la fabricación de transistores de doble puerta autoalineadas (estructuras FinFET o GAA descritas más adelante) no está claro que técnica utilizar para fabricar DGSOIs. La desalineación de puertas es muy crítico, pues el rendimiento del dispositivo disminuye rápidamente debido a la superposición de capacitancias y/o pérdida de corriente.

Finalmente las características más importantes de un DGSOI se resumen en:

Ambas puertas se polarizan simultáneamente. El control de las dos puertas sobre el canal hace que los efectos de canal corto

sean mucho más pequeños. Mayor control sobre la carga. Mayor movilidad y transconductancia. Dificultad de fabricación.

1.4.3 Dispositivos multipuerta

Una vez observada la mejora obtenida al añadir una segunda puerta al transistor, el siguiente paso fue aumentar el número de puertas de forma que el control sobre la carga en el canal fuera aún mayor manteniendo la premisa de reducir los SCEs y aumentar la corriente. De este modo aparecieron los dispositivos denominados trigates en los que sobre una fina y estrecha isla de silicio cristalino se coloca una puerta sobre tres de sus lados quedando el dispositivo completamente rodeado por capas de óxido, Figura 1.20.

Page 59: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 1. La Tecnología SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 23

Figura 1.20 Representación esquemática de un trigate.

Existen también versiones más sofisticadas de estos dispositivos que se sitúan entre los de tres y cuatro puertas, entre ellos se encuentran los Π-Gate y los Ω-Gate, Figura 1.21.

Figura 1.21 Representación esquemática de un Π-Gate (izqda.) y un Ω-Gate (dcha.).

En el primero de ellos la puerta penetra en la zona de óxido enterrado proporcionando un mayor control de la carga. En el segundo, la puerta además de penetrar en el BOX se extiende lateralmente bajo la lámina de silicio sin llegar a cerrarse. Esta configuración permite, en casos en los que el dispositivo sea lo suficientemente estrecho, la aparición de una puerta virtual bajo la isla de silicio inducida por el campo creado en las extensiones inferiores de la puerta [Col04].

Finalmente, también se pueden conseguir dispositivos en los que la lámina de silicio se encuentra completamente rodeada por estructuras destinadas al control de la carga en su interior, son los denominados dispositivos de cuatro puertas. Una estructura consiste en recubrir completamente la lámina de silicio cristalino con puerta. Estas estructuras se reducen al concepto de hilos cuánticos [BCBG95] cuando el espesor y la profundidad del canal son lo suficientemente pequeñas. En la Figura 1.22 se muestra el denominado gate-all-around MOSFET (GAA) consistente en un dispositivo horizontal de sección rectangular completamente rodeado por la puerta. También es posible realizar estos dispositivos de forma vertical haciendo crecer un pilar de silicio. En el caso de que la sección sea circular el transistor es conocido como CYNTHIA (cyllindrical thin-pillar) y si es de sección rectangular se obtiene el denominado pillar surrounding-gate MOSFET. Otra opción conoida como G4FET

Page 60: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

1.5 Conclusiones

24 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

[CC03], consiste en un dispositivo con dos puertas MOS en los lados superior e inferior y dos JFET en los laterales. Operado normalmente en acumulación, las puertas laterales controlan el ancho efectivo del canal pudiéndose obtener distintos modos de operación que van desde el de un hilo cuántico rodeado por regiones de deplexión al de un dispositivo en fuerte acumulación en función de la tensión aplicada a cada una de las puertas.

Figura 1.22 Representación esquemática de un GAA (izqda.) y un G4FET (dcha.)

1.5 Conclusiones

En este capítulo se han mostrado algunos aspectos importantes de la tecnología SOI que son tratados más a fondo por distintos autores ([Col04],[CC03]). Su compatibilidad con los procesos estándar de la industria semiconductora, su flexibilidad a la hora de elegir la geometría adecuada para cada aplicación y su mejora en las prestaciones con respecto a la tecnología convencional hacen que, cada día más, se esté imponiendo el uso de sustratos SOI para aplicaciones de todo tipo. Por tanto, es muy posible que los dispositivos SOI constituyan la base de la industria semiconductora en un futuro no muy lejano, ya sea tal y como hoy se conoce o combinada con las nuevas soluciones basadas en ingeniería de sustratos tales como el uso de silicio tenso, la integración tridimensional o técnicas de mejora de la movilidad de los portadores basadas en la optimización de la orientación de los sustratos.

Page 61: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

25 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Capítulo 2

Modelado de dispositivos semiconductores

La invención de los dispositivos semiconductores es bastante reciente si se consideran las escalas clásicas de tiempo en la vida humana. El transistor bipolar fue anunciado en 1947 por John Bardeen y Walter Brattain, su objetivo inicial era ser utilizado en telefonía como conmutador pero, posteriormente, se contempló la opción de usarlo en substitución de las válvulas de vacío. Más adelante, en 1959, Dawon Kahng y Martin M. Atalla en los laboratorios Bell inventaron el transistor de efecto de campo metal-óxido-semiconductor (MOSFET) basándose en el diseño patentado de Julius Edagar Lilienfeld en 1925. Desde entonces, el campo de los dispositivos semiconductores ha crecido a una velocidad vertiginosa [Sel84].

El primer circuito integrado, el cual contenía solo seis transistores, estuvo disponible a principios de los años sesenta, concretamente en 1958. Sin embargo, desde ese momento ha tenido lugar una gran evolución, por lo que hoy en día, tan solo cincuenta años después, es posible la fabricación de circuitos integrados con más de 3000 millones de dispositivos en cada chip, de un tamaño cientos de veces menor y a una velocidad de conmutación muchísimo más rápida.

2.1 Simulación de dispositivos

La simulación se ha convertido en un campo muy importante para el estudio de dispositivos semiconductores. La complejidad cada vez mayor de las estructuras, la miniaturización de las dimensiones y la utilización de efectos más complejos para

Page 62: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

2.1 Simulación de dispositivos

26 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

mejorar las prestaciones hacen necesario un tratamiento mucho más riguroso de los modelos que rigen el comportamiento de los dispositivos. Las aproximaciones realizadas para los estudios teóricos dejan de tener validez y el problema a resolver deja de tener solución analítica haciéndose necesario el uso de métodos numéricos que permitan alcanzar una solución satisfactoria al problema [GGR+08].

A pesar de todo, existen diferentes niveles de aproximación al problema debido a que, para la resolución, se necesita una gran cantidad de recursos en cuanto a potencia de cálculo y tiempo se refiere requiriéndose un compromiso entre exactitud y precisión en la solución y tiempo de simulación. Los modelos que se pueden encontrar en las distintas herramientas van desde los de más simples de difusión y deriva a los más complejos y costosos en cuanto a requerimientos de cálculo como pueden ser los de balance de energía para la resolución de la ecuación de transporte de Boltzmann (BTE). Asimismo la complejidad de la física puesta en juego hace necesario el uso de códigos de tipo Monte Carlo que resuelven de una manera estocástica la BTE y la resolución de la ecuación de Schrödinger para tener en cuenta diferentes efectos cuánticos que cada día son más importantes para explicar el comportamiento de dispositivos con dimensiones submicra o nanométricas.

Las herramientas de simulación son ampliamente utilizadas en estudios de escalado de dispositivos y optimización de tecnologías tanto existentes como emergentes. Por tanto, la capacidad de estos programas de representar las prestaciones actuales y de predecir las de futuras tecnologías y sus limitaciones es de vital importancia ya que permite a las compañías ahorrar grandes cantidades de dinero en los procesos de desarrollo antes de la fabricación en masa de los distintos componentes y a los centros de investigación comprobar la viabilidad teórica de dispositivos basados en efectos físicos novedosos con geometrías diferentes a las configuraciones estándar.

El tipo de simulador elegido para cada caso dependerá pues del problema a tratar, de la precisión que se quiera conseguir en los cálculos y de los efectos que se quieran tener en cuenta. Al mismo tiempo existe una limitación a la hora de elegir el método en función de los medios computacionales disponibles y el tiempo que pueda dedicarse al estudio. Todos estos factores deben llevar a una solución de compromiso a decidir por el usuario.

Page 63: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 2. Modelado de dispositivos semiconductores

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 27

2.2 Simuladores

En primer lugar se debe considerar qué tipo de estructura va a ser simulada, de forma que se pueda decidir qué formulación de las ecuaciones puestas en juego es la más interesante pudiéndose elegir entre modelos uni, bi y tridimensionales. Normalmente se intenta usar la descripción que tenga en cuenta los efectos que quieren ser simulados pero sin sobredimensionar el problema para no obtener un código excesivamente costoso en tiempo de computación. Así por ejemplo, una simulación monodimensional puede ser suficiente para estudiar una unión MOS en equilibrio mientras que para el caso de un transistor MOSFET con tensión aplicada entre drenador y fuente será necesaria una simulación, al menos, bidimensional para el caso en que la longitud de canal sea pequeña.

Otra decisión crítica que debe tomarse es la elección del modelo que describirá el comportamiento del sistema. En la mayoría de los casos la distribución del potencial en el dispositivo viene descrita por la ecuación de Poisson en cualquiera de sus versiones:

∇ 푉 = −휌휀

Ecuación 2.1 Ecuación de Poisson.

donde 푉 es la tensión, 휌 es la densidad volumétrica de carga y 휀 es la permitividad eléctrica del medio.

Sin embargo, para estudiar el transporte de los portadores de carga existe mucha más flexibilidad a la hora de elegir modelo. La teoría semi-clásica de transporte está basada en la ecuación de transporte de Boltzmann (BTE):

휕푓휕푡 + 풗 · ∇ 푓 +

푒푬ℏ · ∇ 푓

= 푆(풌 ,풌)푓(풓,풌 , 푡)[1− 푓(풓,풌, 푡)]− 푆(풌,풌′)푓(풓,푘, 푡)[1− 푓(풓,풌′, 푡)]

Ecuación 2.2 Ecuación de transporte de Boltzmann.

donde 푟 representa la posición, 푘 el momento, 푓(푘 , 푡) la función de distribución (por ejemplo la de Fermi-Dirac si se está en equilibrio), 푣 la velocidad de grupo, 퐸 el campo eléctrico, 푆(푘,푘′) la probabilidad de transición entre dos estados con momento 푘 y 푘′ y 1− 푓(푘 , 푡) la probabilidad de no ocupación del estado con momento 푘′.

Page 64: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

2.3 Historia del modelado numérico

28 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

En el presente trabajo, se evalúa la simulación monodimensional de un DGSOI en equilibrio por lo que para obtener la distribución de potencial se procede al desarrollo numérico de la ecuación de Poisson 1D:

∇ 푉(푥) = −휌(푥)휀

Ecuación 2.3 Ecuación de Poisson 1D.

2.3 Historia del modelado numérico

Gummel sugirió en 1964 el modelado numérico de los dispositivos semiconductores basado en ecuaciones diferenciales parciales, las cuales describen todas las regiones diferentes de un dispositivo de una manera unificada, a través de un transistor bipolar unidimensional [Sel84]. Este enfoque fue más desarrollado y aplicado en la teoría de la unión PN por DeMari y diodos IMPATT (IMPact ionization Avalanche Transit Time) por Scharfetter y Gummel.

La resolución de ecuaciones diferenciales de Poisson 2D con aplicación a la estructura MOS fue publicada por primera vez por Loeb et al. y Schroeder y Muller en 1968. Kennedy y O’Brien investigaron en 1969 la unión del transistor de efecto de campo mediante el uso de la ecuación de Poisson 2D y una ecuación de continuidad. Mientras esto ocurría, Slotboom presentó un análisis bidimensional del transistor bipolar resuelto mediante la ecuación de Poisson y ambas ecuaciones de continuidad. Desde entonces, el modelado bidimensional se ha aplicado a casi todos los dispositivos.

Además, Reiser y Barnes desarrollaron el comportamiento transitorio del transistor MOSFET y MESFET en dos dimensiones. Posteriormente, Cook y Frey simularon estos dispositivos introduciendo ecuaciones más sofisticadas en su modelo físico y matemático, añadiendo ecuaciones de transporte de energía, tal y como hicieron Moglestue y Pone, pero en este caso, introdujeron ecuaciones de partículas para la simulación.

Finalmente, se publicaron modelos estáticos tridimensionales y se fueron simulando dispositivos inusuales, o no estándar, como los basados en GaAs. Actualmente contamos con una oferta de programas que pueden simular estructuras semiconductoras arbitrarias.

Page 65: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 2. Modelado de dispositivos semiconductores

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 29

2.4 Conclusiones

En este capítulo se ha descrito la importancia del modelado de dispositivos semiconductores. La simulación del comportamiento de un dispositivo permite proporcionar información transcendental para los diseñadores de tecnología de dispositivos, así como, comprobar la viabilidad teórica de dispositivos bajo investigación.

Sin embargo, se ha visto que es necesario elegir bien el simulador, no sobredimensionar el problema y evaluar correctamente un compromiso entre precisión en la solución y carga computacional, ya que existen diferentes niveles de aproximación para un problema determinado, pudiendo resultar la cantidad de recursos de potencia de cálculo inviables para un computador.

Situando el objetivo de este trabajo en investigar el comportamiento de la distribución de potencial en un DGSOI, se ha concluido que es preciso al desarrollo numérico de la ecuación de Poisson 1D, dada por la ecuación 2.3.

Page 66: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

30 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 67: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 31

Capítulo 3

Ecuación discreta de Poisson 1D

Un dispositivo electrónico su comportamiento es descrito por una serie de ecuaciones diferenciales, las cuales deben de resolverse para estudiar de forma detallada la estructura que lo forma. En este trabajo, tal y como se detalla en el capítulo anterior, la ecuación a desarrollar iterativamente es la ecuación de Poisson 1D.

Mediante el teorema de divergencia se relaciona el flujo de un campo vectorial, en este caso el flujo del campo eléctrico (휑, [Vm]), a través de una superficie cerrada (푆, [m2]) con la integral de su divergencia en el volumen (푣, [m3]) delimitado por dicha superficie. Así, suponiendo una región en el espacio en la que hay una distribución de carga, de densidad volumétrica 휌 [Cm-3], mediante la ley de Gauss podemos establecer una relación local entre la divergencia del campo eléctrico (퐸, [NC-1]) en un punto cualquiera y la densidad de carga:

휑 = 퐸⃗ · 푑푆⃗

= ∇⃗ · 퐸⃗ 푑푣

=휌휀 푑푣

Ecuación 3.1 Teorema de la divergencia aplicado al 23flujo de campo eléctrico.

Por cálculo diferencial, al ser el rotacional del campo electrostático nulo, dicho campo puede ser descrito mediante el gradiente del potencial eléctrico (푉, [V]):

퐸⃗ = −∇푉

Ecuación 3.2 Relación entre el campo eléctrico y el potencial eléctrico.

Page 68: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

3.1 Discretización del espacio continuo

32 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Por tanto:

∇⃗ · 퐸⃗ 푑푣

= ∇⃗ · (−∇푉) 푑푣

= − ∆V푑푣

=휌휀 푑푣

→ ∆V = −휌휀

Ecuación 3.3 Ecuación de Poisson.

Obteniendo de esta forma la ecuación de Poisson (asumiendo que 휀 es la permitividad eléctrica del medio [Fm-1] y se considera constante) que debe resolverse numéricamente para detallar el comportamiento del potencial eléctrico en el transistor DGSOI. En el caso monodimensional:

∆푉(푥) = −휌(푥)휀

Ecuación 3.4 Ecuación de Poisson 1D.

La expresión anterior está formulada en un espacio continuo, sin embargo, a la hora de ser resuelta numéricamente tanto las variables como los operadores que entran en juego deben ser transformados a una formulación discreta debido a la incapacidad de los computadores de realizar cálculos en el espacio continuo.

3.1 Discretización del espacio continuo

El problema de la discretización no resulta trivial y de él depende en buena medida que con la simulación se obtengan unos resultados aceptables o que no resulte prohibitiva en términos de tiempo de simulación [Rav94][Sam06][GGR+08]. Existen numerosas aproximaciones que pueden ser usadas para discretizar la ecuación diferencial parcial para obtener un problema numérico. Los esquemas de discretización más importantes se pueden clasificar en:

Diferencias finitas: El espacio continuo es sustituido por un mallado de puntos.

Elementos finitos: El espacio es dividido en polígonos (normalmente triángulos y rectángulos) de forma que la región a estudio queda completamente teselada por ellos.

Métodos espectrales: Se basa en algoritmos de resolución de ecuaciones a través de la transformada de Fourier.

Page 69: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 3. Ecuación discreta de Poisson 1D

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 33

Para la discretización de la ecuación continua de Poisson 1D se opta por el método de diferencias finitas debido a su relativa simplicidad. Un estudio detallado de la discretización de las ecuaciones se puede consultar en [Sel84].

3.2 Diferencias finitas

La resolución de la ecuación propuesta por el método de las diferencias finitas requiere de dos pasos previos al del cálculo de la solución en sí misma. En primer lugar, se debe realizar una discretización del dominio del problema. En segundo lugar, se debe reescribrir la ecuación que describe el problema en su forma discreta. Ambos procesos son de una gran importancia, ya que si cualquiera de ellos no se realiza de forma cuidadosa y adecuada es posible que la solución final no converja o que lo haga a un punto distinto al de la solución de la ecuación a la que quiere aproximar. Debido a que las magnitudes no cambian de igual manera en todo el espacio simulado se deben tener en cuenta las zonas en las que, a priori, se van a producir cambios importantes en el valor de alguna de las variables bajo estudio, de forma que sus derivadas no tomen valores excesivamente grandes. Por otro lado, un número excesivo de puntos lleva inevitablemente a tiempos de cálculo que pueden resultar inaceptables. Por tanto se debe tomar una solución de compromiso a la hora de elegir el número de puntos de forma que se tenga una resolución espacial precisa sin que esto conlleve un tiempo de cálculo excesivo.

Una vez definido el espacio discreto en el que se va a trabajar se deben calcular las expresiones discretizadas de las ecuaciones anteriores en los puntos interiores de la estructura. En los puntos correspondientes a las fronteras se aplican una serie de condiciones de contorno que, o bien fijan directamente el valor de la variable (condiciones tipo Dirichlet) o fijan su derivada (como las condiciones tipo Neumann).

El método de diferencias finitas está basado en el uso de series de Taylor truncadas para realizar aproximaciones numéricas a las derivadas. Así:

푢(푥 + ∆푥) = 푢(푥) + ∆푥휕푢휕푥 +

∆푥2

휕 푢휕푥 +

∆푥6휕 푢휕푥 + 푂(Δx )

Ecuación 3.5

Page 70: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

3.2 Diferencias finitas

34 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

푢(푥 − ∆푥) = 푢(푥) − ∆푥휕푢휕푥 +

∆푥2

휕 푢휕푥 −

∆푥6휕 푢휕푥 + 푂(Δx )

Ecuación 3.6

A partir de estas dos ecuaciones se puede obtener diferentes aproximaciones a la primera derivada.

De la ecuación 3.5 se tiene la aproximación de diferencia hacia delante:

휕푢휕푥 =

푢(푥 + ∆푥)− 푢(푥)∆푥 + 푂(∆푥)

Ecuación 3.7 Aproximación de diferencias hacia delante

De la ecuación 3.6 se tiene la aproximación de diferencia hacia atrás:

휕푢휕푥 =

푢(푥) − 푢(푥 − ∆푥)∆푥 + 푂(∆푥)

Ecuación 3.8 Aproximación de diferencias hacia atrás

Restando las ecuaciones 3.7 y 3.8 se tiene la aproximación en diferencias centrada:

휕푢휕푥 =

푢(푥 + ∆푥) − 푢(푥 − ∆푥)2∆푥 + 푂(∆푥 )

Ecuación 3.9 Aproximación en diferencias centrada

Análogamente, una aproximación de la derivada segunda se puede obtener a partir de la suma de las ecuaciones 3.5 y 3.6, tal que así:

휕 푢휕푥 =

푢(푥 + ∆푥) − 2푢(푥) + 푢(푥 − ∆푥)∆푥 + 푂(∆푥 )

Ecuación 3.10 Aproximación de derivada segunda

los términos 푂(∆푥) y 푂(∆푥 ) indican el error de truncamiento que se comete en la aproximación. Cuanto mayor sea el orden del resto menor será el error de truncamiento. Estas aproximaciones son las más utilizadas aunque es posible obtener expresiones en las que se tengan en cuenta más puntos.

Page 71: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 3. Ecuación discreta de Poisson 1D

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 35

En general se pueden definir tres conceptos que nos indican si el esquema de discretización es apropiado o no para el problema que se quiere resolver:

Estabilidad: El método es estable si la solución se mantiene acotada durante el proceso iterativo.

Convergencia: El método es convergente si la solución numérica tiende a la solución real conforme el ancho de discretización tiende a cero.

Consistencia: El método es consistente si el error de truncamiento tiende a cero conforme el ancho de discretización tiende a cero.

Si un método numérico es consistente, entonces la condición de estabilidad es necesaria y suficiente para alcanzar la convergencia. Por el contrario, un esquema que es estable pero no consistente puede converger a una solución de una ecuación diferente.

Numerosos errores son introducidos a la hora de discretizar una ecuación diferencial parcial y resolverla numéricamente.

Error de truncamiento: error introducido por la aproximación finita de las derivadas.

Error de discretización: error causado por el remplazo de una ecuación continua por una discretizada.

Error de redondeo: el error computacional introducido por los algoritmos digitales, causado por el número finito de dígitos utilizado en la representación numérica.

Finalmente, se discretiza la ecuación monodimensional (1D) continua de Poisson por el método de diferencias finitas obteniendo:

휕 푉휕푥 =

푉(푥 + ∆푥)− 2푉(푥) + 푉(푥 − ∆푥)∆푥 = −

휌(푥)휀

푉(푖 + 1) − 2푉(푖) + 푉(푖 − 1)∆푥 = −

휌(푖)휀

Ecuación 3.11 Ecuación discreta de Poisson 1D.

Page 72: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

3.3 Condiciones de contorno

36 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

3.3 Condiciones de contorno

Hasta ahora, se ha presentado el desarrollo discreto de la ecuación de Poisson 1D en los puntos del interior del canal. Para los puntos que forman los límites de la estructura es preciso calcular los valores de las distintas variables aplicando la condición de contorno correspondiente al tipo de frontera en cuestión.

Las condiciones de contorno tipo Dirichlet se aplican en las zonas de la frontera donde el valor de la variable es conocido. Para el caso de la estructura objeto de este estudio estas zonas corresponden con los contactos de puerta.

Los contactos de puerta se consideran de tipo metálico. El cálculo del potencial se realiza teniendo en cuenta la diferencia de funciones trabajo:

푉 − 푉 − 푉 = 0

Ecuación 3.12 Condición para el potencial.

donde 푉 representa el built-in voltage y 푉 la tensión aplicada externamente al contacto.

Para el caso de la concentración de portadores, la suposición de contacto óhmico implica considerar éste en equilibrio térmico que corresponde a velocidad de recombinación infinita:

푛푝 − 푛 = 0

푛 − 푝 − 퐶 = 0

퐶 = 푁 −푁

Ecuación 3.13 Condición para la concentración de portadores (I).

Despejando se obtienen las condiciones para electrones y huecos:

푛 =퐶 + 4푛 + 퐶

2

푝 =퐶 + 4푛 − 퐶

2

Ecuación 3.14 Condición para las concentración de portadores (II).

Page 73: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 3. Ecuación discreta de Poisson 1D

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 37

3.4 Ecuación discreta de Poisson 1D

Finalmente en este capítulo se recopila la información desarrollada anteriormente, con el fin de construir la ecuación en la que se basa el estudio del presente trabajo. Consecuentemente, el canal del transistor se discretiza en 푁 puntos equidistantes una distancia igual al ancho de discretización o diferencial de longitud, ∆푥. El primer punto 푉 y el último 푉 , son las condiciones de contorno de nuestro sistema numérico.

Expresando la densidad de carga volumétrica como la densidad neta de carga en donde se incluye tanto la carga fija como los portadores móviles, se obtiene:

휌(푖) =0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

푞(푁 − 푁 − 푛 + 푝), 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

Ecuación 3.15 Densidad de carga volumétrica.

Se aproxima la ecuación 3.15 teniendo en cuenta que el semiconductor es tipo P, tal que así:

휌(푖) =0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

푞(−푁 − 푛), 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

Ecuación 3.16 Densidad de carga volumétrica aproximada.

donde q es el valor absoluto de la carga del electrón [C], 푁 es la concentración de impurezas aceptadoras en el semiconductor [m-3] y 푛 es la concentración de electrones [m-3] en estado estacionario y equilibrio térmico en el semiconductor tras aplicar una diferencia de potencial 푉(푖), tal y como describe la siguiente expresión:

푛 = 푛 푒( )

= 푛 푒( )

Ecuación 3.17 Concentración de portadores minoritarios.

donde 푛 es la concentración intrínseca de electrones del silicio [m-3], 푘 es la constante de Boltzmann [eV/K], 푇 es la temperatura de trabajo [K] y 푉 es el denominado voltaje térmico [V].

Centrando el cálculo en la región del semiconductor se concluye:

휕 푉휕푥 = −

휌(푖)휀 = −

푞(−푁 − 푛)휀 =

푞휀

(푁 + 푛) =푞휀 푁 + 푛 푒

( )

Page 74: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

3.4 Ecuación discreta de Poisson 1D

38 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

휕 푉휕푥 =

푉(푖 + 1) − 2푉(푖) + 푉(푖 − 1)∆푥 =

푞휀 푁 + 푛 푒

( )

푉(푖) =푉(푖 + 1) + 푉(푖 − 1)− 푞∆푥

휀 푁 + 푛 푒( )

2

Ecuación 3.17 Ecuación discreta de Poisson 1D en la región de semiconductor.

Finalmente:

푉(푖) =

푉(푖 + 1) + 푉(푖 − 1)−0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

∆푥 푞휀 휀 푁 + 푛 푒

( ), 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

2

Ecuación 3.18 Ecuación discreta de Poisson 1D.

donde 휀 es la permitividad eléctrica del vacío [Fm-1] y 휀 es la permitividad relativa del silicio.

3.4.1 Error iterativo

La ecuación discreta de Poisson 1D, expresión 3.18, debe ser iterativamente evaluada para que, si el método es convergente, su solución aproximada tienda a su solución real. Por ello, se debe introducir una condición de parada que indique cuando detener el método y estudiar la solución, es decir, hay que calcular el error iterativo. Dicho error, y por consiguiente el criterio de parada, puede ser interpretado de diferentes formas.

Sea 푖 el número de una muestra que se encuentra equiespaciada con la siguiente por el ancho de discretización (푖휖1, … ,푁); y 푘 el orden de la iteración (푘 ∈ 1, 2, 3, …) las formas más simples de calcular el error son:

Error absoluto para la iteración 푘:

1푁

|푉(푖) −푉(푖) | < 휀max∀

(|푉(푖) − 푉(푖) |) < 휀

Ecuación 3.19 Error absoluto medio. Ecuación 3.20 Máximo error absoluto.

Page 75: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 3. Ecuación discreta de Poisson 1D

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 39

Error relativo medio global o individual para la iteración k, respectivamente:

1푁

|푉(푖) − 푉(푖) ||푉(푖) | < 휀max

|푉(푖) −푉(푖) ||푉(푖) | < 휀

Ecuación 3.21 Error relativo medio. Ecuación 3.22 Máximo error relativo.

Centrando en todo momento el objetivo de realizar dicha resolución numérica en una FPGA y minimizar los recursos que pueda consumir el método que más interesa elegir es el método que emplee una menor computación para su cálculo. En ese caso, el error iterativo va a ser calculado como el máximo error absoluto de todos los valores de una misma iteración y la inmediata anterior, tal y como expresa la ecuación 3.20.

3.5 Conclusiones

En el presente capítulo se ha presentado la ecuación continua que describe el comportamiento de la tensión a lo largo del canal de un DGSOI. La resolución de dicha ecuación no es, ni mucho menos, analítica, por lo que se precisa de un método numérico.

La incapacidad de los computadores de operar con una función continua obliga a discretizar la función en una serie de puntos limitados. El método de discretización aplicado ha sido el método de diferencias finitas, por su “relativa” simplicidad, basado en el truncamiento de la serie de Taylor. Una vez aplicado el método de diferencias finitas, se calculan y aplican las condiciones de contorno para obtener la solución numérica al problema particular de este trabajo, para ello se han supuesto los contactos del DGSOI metálicos.

Finalmente, se ha deducido la expresión que representa la solución numérica de la tensión a la lo largo del canal y se ha presentado el mecanismo de evaluación del método iterativo, es decir, el estudio que se llevará a cabo del error del mismo.

Page 76: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

40 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 77: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 41

Capítulo 4

Aritmética en punto flotante

Hacia 1957 comenzó a popularizarse el hardware de punto flotante en el que una unidad decimal de punto flotante estuvo disponible en el IBM 650, y pronto las series IBM 704, 709, 7090, etc., ofrecieron hardware binario de punto flotante para simple y doble precisión. Como consecuencia se comenzó a disponer de numeración en punto flotante en gran parte de computadores, pero cada implementación era diferente.

Sobre 1976 John F. Palmer en Intel comienza el desarrollo de una aritmética de punto flotante para toda la línea de productos de Intel. La aparición del 8086 era inminente, y se estaba contemplando la opción de incorporar un coprocesador de punto flotante, el 8087, para el 8086. El coprocesador era un chip adicional que aceleraba una parte del trabajo del procesador, en este caso los cálculos en punto flotante. En aquellos tiempos las aritméticas de punto flotante eran ligeramente diferentes entre los grandes computadores pero una verdadera anarquía entre los microcomputadores, en los que era necesario albergar una docena de aritméticas diversas en el firmware de la ROM o vía software. Robert G. Stewart, un ingeniero de la IEEE (Institute of Electrical and Electronics Engineers) trató de controlar esta anarquía reinante y propuso que el IEEE diseñase un estándar aceptable de punto flotante.

Las reuniones de este comité en referencia al punto flotante comenzaron a finales de 1977 con multitud de borradores que provenían de innumerables fuentes y se alargaron hasta 1985 cuando se hizo oficial el Standar IEEE-754 para punto flotante binario, basado en el diseño inicial de Intel, pero algo simplificado.

Page 78: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

4.1 Definición numérica IEEE 754

42 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

4.1 Definición numérica IEEE 754

El estándar de la IEEE para aritmética en punto flotante (IEEE 754) es el estándar más extendido para las computaciones en punto flotante [Kah97][Llo10]. Define formatos para la representación de números en punto flotante (incluyendo el cero) y valores desnormalizados, así como valores especiales como infinito y NaN (Not a Number), con un conjunto de operaciones en punto flotante que trabaja sobre estos valores. También especifica cuatro modos de redondeo y cinco excepciones.

En el estándar IEEE 754, se definen varios formatos: simple precisión (32 bits), doble precisión (64 bits), precisión simple extendida (mínimo 43 bits) y precisión doble extendida (mínimo 79 bits). El formato que se implementará en este trabajo es la representación en simple precisión. Un número en punto flotante de precisión simple se almacena en una palabra de 32 bits (4 bytes): 1 bit para el signo (s), 23 bits para la mantisa (m) y 8 bits para el exponente (e), que se distribuyen de la siguiente forma:

Figura 4.1 Anatomía de un número en punto flotante simple precisión.

donde S es el bit de signo (0 = positivo → s = +1; 1 = negativo → s = -1) y EXPONENTE es el campo para el exponente. El exponente es sesgado (biased), esto significa que un valor constante, llamado sesgo, se resta del campo del exponente para conseguir el valor real del exponente. En este caso el valor del sesgo es 127.

El conjunto de valores posibles pueden ser divididos en los siguientes:

TIPO DE NÚMERO EXPONENTE MANTISA

Cero 0 0 S = 0 ó S = 1

Números desnormalizados 0 ≠ 0 m = 0,MANTISA

Números normalizados 1 – 254 cualquier valor m = 1,MANTISA

Infinito 255 0 S = 0 → +∞ S = 1 → -∞

Not a number (NaN) 255 ≠ 0

Tabla 4.1 Conjunto de tipos de números representables por el estándar IEEE 754 simple precisión.

Page 79: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 4. Aritmética en punto flotante

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 43

Así el valor de un número representado en punto flotante en el estándar IEEE 754 simple precisión tiene el valor:

푣 = 푠 · 2 · 푚푒 = 퐸푋푃푂푁퐸푁푇퐸 − 127

Ecuación 4.1 Valor decimal de un número en formato punto flotante IEEE 754 simple precisión.

Obsérvese que el formato punto flotante IEEE 754 simple precisión permite representar los números de la escala real no uniformemente, con un total de 232 números representables, aumentando el espacio entre estos, tal que así:

Figura 4.2 Representación no uniforme de números en punto flotante simple precisión en la escala real.

A continuación se observa un esquema del rango representable de la recta real y las zonas de desbordamiento (overflow) que serán abordadas más adelante:

Figura 4.3 Rango de la escala real representable por el estándar IEEE 754 simple precisión.

4.2 Aritmética IEEE 754

4.2.1 Operación de suma/resta

El algoritmo básico para realizar la operación de suma/resta de dos números en el estándar IEEE 754 es el siguiente:

a. Alinear los puntos decimales (“desnormalizando” a uno de los operandos de forma tal que ambos exponentes sean iguales), para esto desplazar a la derecha la mantisa con el exponente más pequeño.

Page 80: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

4.2 Aritmética IEEE 754

44 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

b. Sumar/Restar las mantisas. c. Normalizar el resultado, verificando el eventual desbordamiento en el

exponente. d. Redondear el resultado al número correcto de dígitos significativos.

Figura 4.4 Diagrama de flujo de la operación suma/resta definida en el estándar IEEE 754.

4.2.2 Operación de multiplicación/división

El algoritmo básico para realizar la operación de multiplicación/división de dos números en el estándar IEEE 754 es el siguiente:

a. Sumar/Restar los exponentes, compensando el exceso (se debe restar/sumar un exceso, 127, para obtener un resultado sesgado).

b. Multiplicar/Dividir las mantisas. c. Normalizar el resultado y comprobar si se produjo desbordamiento. d. Redondear la respuesta al número correcto de dígitos significativos. e. Normalizar nuevamente en caso de ser necesario. f. Determinar el signo del resultado.

Page 81: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 4. Aritmética en punto flotante

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 45

Figura 4.5 Diagrama de flujo de la operación multiplicación/división definida en el estándar IEEE 754.

4.2.3 Redondeo

El estándar IEEE 754 exige que el resultado de las operaciones sea el mismo que se obtendría si se realizasen con precisión absoluta y después se redondease. Hay cuatro modos de redondeo:

Redondeo a cero: truncamiento. Redondeo al más cercano: al par en caso de empate. Redondeo a más infinito: por exceso. Redondeo a menos infinito: por defecto.

Estas modalidades de redondeo requieren el uso de bits adicionales de precisión para las representaciones intermedias. Denominaremos bits de guarda a los bits de precisión adicionales colocados a la derecha del bit menos significativo. Se utilizan para la normalización y son fundamentales en el redondeo. El estándar IEEE 754

Page 82: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

4.2 Aritmética IEEE 754

46 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

contempla tres bits de guarda: guard (G), round (R) y sticky (S). Téngase en cuenta en este punto, que la FPU (Floating Point Unit) debe ensancharse en tres bits.

Guard (G): Inmediatamente a la derecha de la mantisa, el bit G se emplea al normalizar el resultado preliminar de las operaciones aritméticas, esto es, antes de aplicar el redondeo.

Round (R): El bit R se emplea para redondear. Sticky (S): El bit S se emplea para redondear y se calcula como una función

lógica OR de los bits descartados (los que no forman parte del resultado ni tampoco de G ni R). Este bit permite obtener igual resultado al que se obtendría redondeando el resultado intermedio computado con precisión infinita.

La siguiente tabla resume el rol de los bits R y S en los distintos esquemas de redondeo (donde p es el valor del dígito menos significativo):

REDONDEO RESULTADO POSITIVO RESULTADO NEGATIVO

Cero

El más cercano +1 LSB si [(R AND p)

OR (R AND S)] +1 LSB si [(R AND p)

OR (R AND S)]

Más infinito +1 LSB si (R OR S)

Menos infinito +1 LSB si (R OR S)

Tabla 4.2 Empleo de bits de guarda para el proceso de redondeo especificado en el estándar IEEE 754.

Cada método de redondeo implica una mayor o menor complejidad hardware para el bloque encargado de realizar una operación aritmética. Por otro lado, cada modalidad de redondeo repercute en la precisión y exactitud del resultado de una operación aritmética.

4.2.4 Desbordamiento

Los problemas que pueden surgir al realizar una operación aritmética en punto flotante pueden ser:

Desbordamiento del exponente (overflow positivo u overflow negativo): un exponente positivo que excede el valor máximo representable.

Page 83: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 4. Aritmética en punto flotante

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 47

Desbordamiento a cero del exponente (underflow positivo o underflow negativo): un exponente negativo que exceda el valor máximo permitido. Esto quiere decir que el número es demasiado pequeño para ser representado, y puede ser representado por cero.

Desbordamiento a cero de la mantisa: debido a que en la operación de suma y resta los exponentes se deben igualar, pueden perderse dígitos por parte de la derecha de la mantisa, durante el proceso de alineación de la misma.

Desbordamiento de la mantisa: la suma de dos mantisas del mismo signo puede producir un acarreo debido al bit más significativo.

4.2.5 Excepciones

El estándar IEEE 754 define cinco tipos de excepciones que deben ser señaladas por un bit de estado cuando sean detectadas:

Operación invalida: Algunas operaciones aritméticas son inválidas y como resultado obtenemos un NaN. Ejemplos:

Cualquier operación con un NaN. Suma o resta: ∞ ± ∞ Multiplicación: ± 0 x ± ∞ División: ± 0/ ± 0 or ± ∞/ ± ∞

División por cero: La división de cualquier número por cero provoca como resultado infinito. La suma o multiplicación de dos números puede dar también como resultado infinito. Por ello, para diferenciar estos dos casos, se implementó una excepción de división por cero.

Inexacto: Esta excepción se provoca cuando el resultado de una operación aritmética no coincide con el real, es decir, cuando es necesario redondear.

Underflow: Dos eventos pueden causar la excepción denominada underflow o subdesbordamiento: antes o después de redondear cuando el resultado se encuentra entre ±2-127, o, cuando el resultado es simplemente inexacto o se produce una pérdida de precisión al desnormalizar.

Overflow: Se produce cuando el resultado de una operación aritmética excede el máximo valor que puede ser representado. No se señala cuando uno de los operandos es infinito ni cuando se produce una división por cero.

Page 84: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

4.3 Conclusiones

48 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

4.3 Conclusiones

En este capítulo se ha presentado el formato que el IEEE propuso en 1985 para la representación numérica en punto flotante y con el que se han estandarizado todos los computadores de este tipo de numeración. La descripción numérica detallada incluye: definición numérica, aritmética, tipo de redondeo, tipo de desbordamiento y excepciones.

El título completo del estándar es IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985), y también es conocido por IEC 60559:1989, Binary floating-point arithmetic for microprocessor systems (originalmente el número de referencia era IEC 559:1989).

Page 85: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 49

Capítulo 5

Entorno de computación grid

El objetivo de este proyecto es ejecutar el sistema en una FPGA (Field Programmable Gate Array) dentro de un entorno de computación grid (grid computing). Se busca que este sistema sea parte de una red permitiendo, así, utilizar de forma coordinada todo tipo de recursos, como pueden ser el propio cómputo de la ecuación de Poisson en una estructura DGSOI, sin tener la necesidad de estar sujeto a un control centralizado.

5.1 FPGAs

Una FPGA es un dispositivo semiconductor que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada in situ mediante un lenguaje de programación especializado [Web01][Ric10]. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGAs se utilizan en aplicaciones similares a los ASICs (Application-Specific Integrated Circuit), sin embargo son más lentas, tienen un mayor consumo de potencia y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGAs tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Ciertos fabricantes cuentan con FPGAs que sólo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los

Page 86: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

5.1 FPGAs

50 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

ASICs y las FPGAs reprogramables. Históricamente las FPGAs surgen como una evolución de los conceptos desarrollados en las PAL (Programmable Array Logic) y los CPLD (Complex Programmable Logic Device).

5.1.1 Historia

Las FPGAs fueron inventadas en el año 1984 por Ross Freeman y Bernard Vonderschmitt, co-fundadores de Xilinx, y surgen como una evolución de los CPLDs. Tanto los CPLDs como las FPGAs contienen un gran número de elementos lógicos programables. Si se mide la densidad de los elementos lógicos programables en puertas lógicas equivalentes (número de puertas NAND equivalentes que se podrían programar en un dispositivo) se podría decir que en un CPLD se hallarían del orden de decenas de miles de puertas lógicas equivalentes y en una FPGA del orden de cientos de miles hasta millones de ellas.

Aparte de las diferencias en densidad entre ambos tipos de dispositivos, la diferencia fundamental entre las FPGAs y los CPLDs es su arquitectura. La arquitectura de los CPLDs es más rígida y consiste en una o más sumas de productos programables cuyos resultados van a parar a un número reducido de biestables síncronos (también denominados flip-flops). La arquitectura de las FPGAs, por otro lado, se basa en un gran número de pequeños bloques utilizados para reproducir sencillas operaciones lógicas, que cuentan a su vez con biestables síncronos. La enorme libertad disponible en la interconexión de dichos bloques confiere a las FPGAs una gran flexibilidad.

Otra diferencia importante entre FPGAs y CPLDs es que en la mayoría de las FPGAs se pueden encontrar funciones de alto nivel (como sumadores y multiplicadores) embebidas en la propia matriz de interconexiones, así como bloques de memoria.

Page 87: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 5. Entorno de computación grid

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 51

Figura 5.1 Arquitectura interna de una FPGA.

Las FPGA son el resultado de la convergencia de dos tecnologías diferentes, los dispositivos lógicos programables o PLDs (Programmable Logic Devices) y los circuitos integrados de aplicación específica o ASICs. La historia de los PLDs comenzó con los primeros dispositivos PROMs (Programmable Read-Only Memory) y se les añadió versatilidad con los PALs (Programmable Array Logic) que permitieron un mayor número de entradas y la inclusión de registros. Esos dispositivos han continuado creciendo en tamaño y potencia. Mientras, los ASICs siempre han sido potentes dispositivos, pero su uso ha requerido tradicionalmente una considerable inversión tanto de tiempo como de dinero. Intentos de reducir esta carga han provenido de la modularización de los elementos de los circuitos, como los ASICs basados en celdas, y de la estandarización de las máscaras, tal como Ferranti fue pionero con la ULA (Uncommitted Logic Array). El paso final era combinar las dos estrategias con un mecanismo de interconexión que pudiese programarse utilizando fusibles, antifusibles o celdas RAM, como los innovadores dispositivos Xilinx de mediados de los 80. Los circuitos resultantes son similares en capacidad y aplicaciones a los PLDs más grandes, aunque hay diferencias puntuales que delatan antepasados diferentes. Además de en computación reconfigurable, las FPGAs se utilizan en controladores, codificadores, decodificadores y en el prototipado de circuitos VLSI (Very Large Scale Integration) y microprocesadores a medida.

El primer fabricante de estos dispositivos fue Xilinx y los dispositivos de Xilinx se mantienen como uno de los más populares en compañías y grupos de investigación. Otros vendedores en este mercado son Atmel, Altera, AMD y Motorola.

Page 88: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

5.1 FPGAs

52 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 5.2 Sistema de desarrollo para Virtex-6, FPGA de Xilinx.

5.1.2 Características

Una jerarquía de interconexiones programables permite a los bloques lógicos de una FPGA ser interconectados según la necesidad del diseñador del sistema, algo parecido a un breadboard (placa de uso genérico reutilizable o semipermanente) programable. Estos bloques lógicos e interconexiones pueden ser programados después del proceso de manufactura por el usuario/diseñador, así que la FPGA puede desempeñar cualquier función lógica necesaria.

Una tendencia reciente ha sido combinar los bloques lógicos e interconexiones de las FPGAs con microprocesadores y periféricos relacionados para formar un sistema programable en un chip (SoC, System on a Chip). Ejemplo de tales tecnologías híbridas pueden ser encontradas en los dispositivos Virtex-II PRO y Virtex-4 de Xilinx, los cuales incluyen uno o más procesadores PowerPC embebidos junto con la lógica de la FPGA. Otra alternativa es hacer uso de núcleos de procesadores implementados haciendo uso de la lógica de la FPGA. Esos núcleos incluyen los procesadores MicroBlaze y PicoBlaze de Xilinx, Nios y Nios II de Altera, y los procesadores de código abierto LatticeMicro32 y LatticeMicro8.

Muchas FPGAs modernas soportan la reconfiguración parcial del sistema, permitiendo que una parte del diseño sea reprogramada, mientras las demás partes siguen funcionando. Este es el principio de la idea de la computación reconfigurable, o sistemas reconfigurables.

Page 89: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 5. Entorno de computación grid

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 53

5.1.3 Programación

La tarea del programador es definir la función lógica que realizará cada uno de los CLBs (Configurable Logic Block), seleccionar el modo de trabajo de cada IOB (Input/Output Block) e interconectarlos.

El diseñador cuenta con la ayuda de entornos de desarrollo especializados en el diseño de sistemas a implementarse en una FPGA. Un diseño puede ser capturado ya sea como esquemático, o haciendo uso de un lenguaje de programación especial. Estos lenguajes de programación especiales son conocidos como HDL o Hardware Description Language (lenguajes de descripción de hardware). Los HDLs más utilizados son:

VHDL Verilog ABEL

En un intento de reducir la complejidad y el tiempo de desarrollo en fases de prototipaje rápido, y para validar un diseño en HDL, existen varias propuestas y niveles de abstracción del diseño.

5.1.4 Aplicaciones

Cualquier circuito de aplicación específica puede ser implementado en una FPGA, siempre y cuando ésta disponga de los recursos necesarios. Las aplicaciones donde más comúnmente se utilizan las FPGAs incluyen a los DSPs (Digital Signal Processors, procesadores digital de señales), radio definido por software, sistemas aeroespaciales y de defensa, prototipos de ASICs, sistemas de imágenes para medicina, sistemas de visión para computadoras, reconocimiento de voz, bioinformática, emulación de hardware de computadora, entre otras. Cabe notar que su uso en otras áreas es cada vez mayor, sobre todo en aquellas aplicaciones que requieren un alto grado de paralelismo.

Existe código fuente disponible (cores, bajo licencia GNU GPL) de sistemas como microprocesadores, microcontroladores, filtros, módulos de comunicaciones y memorias, entre otros.

Page 90: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

5.2 Computación grid

54 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

5.1.5 Tecnología de la memoria de programación

Las FPGAs también se pueden diferenciar por utilizar diferentes tecnologías de memoria:

Volátiles: Basadas en RAM. Su programación se pierde al quitar la alimentación. Requieren una memoria externa no volátil para configurarlas al arrancar (antes o durante el reset).

No Volátiles: Basadas en ROM. Hay de dos tipos, las reprogramables y las no reprogramables.

Reprogramables: Basadas en EPROM o flash. Éstas se pueden borrar y volver a reprogramar aunque con un límite de unos 10.000 ciclos

No Reprogramables: Basadas en fusibles. Solo se pueden programar una vez, lo que las hace poco recomendables para trabajos en laboratorios.

5.2 Computación grid

La computación grid o grid computing es una tecnología innovadora que permite utilizar de forma coordinada todo tipo de recursos, como pueden ser cómputo, almacenamiento, aplicaciones específicas, etc., que no están sujetos a un control centralizado. En este sentido es una nueva forma de computación distribuida, en la cual los recursos pueden ser heterogéneos (diferentes arquitecturas, supercomputadores, clusters...) y se encuentran conectados mediante redes de área extensa (por ejemplo Internet). Desarrollado en ámbitos científicos a principios de los años 1990, su entrada al mercado comercial siguiendo la idea de la llamada Utility computing supone una importante revolución. Utility computing no es más que el suministro de recursos computacionales, como puede ser el procesamiento y almacenamiento, como un servicio medido similar a las utilidades públicas tradicionales [San07][Web02].

El término grid se refiere a una infraestructura que permite la integración y el uso colectivo de computadores de alto rendimiento, redes y bases de datos que son propiedad y están administrados por diferentes instituciones. Puesto que la colaboración entre instituciones envuelve un intercambio de datos, o de tiempo de computación, el propósito del grid es facilitar la integración de recursos

Page 91: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 5. Entorno de computación grid

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 55

computacionales. Universidades, laboratorios de investigación o empresas se asocian para formar grid para lo cual utilizan algún tipo de software que implemente este concepto.

5.2.1 Historia

Con el paso del tiempo, el desarrollo del hardware llevó a la mejora y abaratamiento de éste, dando paso a tecnologías que antes eran impensables emplear, debido a costes o el bajo rendimiento que ofrecían, como lo eran los clusters. Los clusters surgieron como una nueva alternativa muy recomendable en el campo de la computación, tanto paralela como distribuida. Consiste en unir un conjunto de computadores personales o estaciones mediante una red (LAN, SAN, etc.). Su principal ventaja es la mejor relación de coste a rendimiento, sin embargo la gran demanda tanto de computación como de espacio y gestión de almacenamiento requeridos por un gran número de aplicaciones que gestionan grandes cantidades de datos y han de hacerlo de forma eficiente y sencilla, exige el uso de nuevas tecnologías, como es el caso de la computación grid o grid computing.

5.2.2 Definición y características

Llamamos grid al sistema de computación distribuido que permite compartir recursos no centrados geográficamente para resolver problemas de gran escala. Los recursos compartidos pueden ser computadores (PC, estaciones de trabajo, PDAs, portátiles, móviles, FPGAs, etc.), software, datos e información, instrumentos especiales (radio, telescopios, etc.) o personas/colaboradores.

La computación grid ofrece muchas ventajas frente a otras tecnologías alternativas. La potencia que ofrecen multitud de computadores conectados en red usando grid es prácticamente ilimitada, además de que ofrece una perfecta integración de sistemas y dispositivos heterogéneos, por lo que las conexiones entre diferentes máquinas no generarán ningún problema. Se trata de una solución altamente escalable, potente y flexible, ya que evitarán problemas de falta de recursos (cuellos de botella) y nunca queda obsoleta, debido a la posibilidad de modificar el número y características de sus componentes.

Estos recursos se distribuyen en la red de forma transparente pero guardando unas pautas de seguridad y políticas de gestión de carácter tanto técnico como económico. Así pues, su objetivo será el de compartir una serie de recursos en la red

Page 92: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

5.2 Computación grid

56 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

de manera uniforme, segura, transparente, eficiente y fiable, ofreciendo un único punto de acceso a un conjunto de recursos distribuidos geográficamente en diferentes dominios de administración. Esto nos puede llevar a pensar que la computación grid permite la creación de empresas virtuales.

Así, podemos esperar que un sistema de computación distribuido grid presente las siguientes características:

Capacidad de balanceo de sistemas: no habría necesidad de calcular la capacidad de los sistemas en función de los picos de trabajo, ya que la capacidad se puede reasignar desde la granja de recursos a donde se necesite.

Alta disponibilidad: si un servidor falla, se reasignan los servicios en los servidores restantes.

Reducción de costes: con esta arquitectura los servicios son gestionados por "granjas de recursos". Ya no es necesario disponer de "grandes servidores" y podremos hacer uso de componentes de bajo coste. Cada sistema puede ser configurado siguiendo el mismo patrón.

Como ejemplo, podemos citar el proyecto SETI@home que cuenta con miles de PC repartidos por Internet que ceden tiempo de sus procesadores, ciclos de proceso desocupados, para analizar señales buscando patrones inteligentes extraterrestres. Sin embargo, su uso destaca también en los centros de investigación desde finales del 1990 en proyectos que van desde Física de Partículas a Astrofísica o incluso Biología. En Europa con el apoyo de proyectos de CERN (Centro Europeo Investigación Nuclear) y el programa marco europeo se creó el software y red EDG (grid de datos europea). El uso de la computación grid en estos campos ha supuesto una mejora exponencial en los últimos años.

5.2.3 Ventajas y requisitos

Resulta interesante comentar que grid supone un avance respecto al World Wide Web. El World Wide Web proporciona un acceso transparente a información que está almacenada en millones de ordenadores repartidos por todo el mundo. Frente a ello, el grid es una infraestructura nueva que proporciona acceso transparente a potencia de cálculo y capacidad de almacenamiento distribuida por una organización o por todo el mundo.

Page 93: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 5. Entorno de computación grid

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 57

Analizando la computación grid se detectan los requisitos que se deben cumplir. Por un lado, los datos deben compartirse entre miles de usuarios con intereses distintos. Por tanto, se deben enlazar los centros principales de supercomputación, no sólo los PC. Además, se debe asegurar que los datos sean accesibles en cualquier lugar y en cualquier momento. Por otro lado, la computación grid debe armonizar las distintas políticas de gestión de muchos centros diferentes y, finalmente, debe proporcionar seguridad.

Los beneficios que se obtienen, los podemos resumir en:

Proporciona un mecanismo de colaboración transparente entre grupos dispersos, tanto científicos como comerciales.

Posibilita el funcionamiento de aplicaciones a gran escala. Facilita el acceso a recursos distribuidos desde nuestros PC. Todos estos objetivos y beneficios se engloban en la idea de "e-Ciencia".

Estos beneficios tendrán repercusión en muchos campos:

Medicina (imágenes, diagnosis y tratamiento). Bioinformática (estudios en genómica y proteómica). Nanotecnología (diseño de nuevos materiales a escala molecular). Ingeniería (diseño, simulación, análisis de fallos y acceso remoto a

instrumentos de control). Recursos naturales y medio ambiente (previsión meteorológica, observación

del planeta, modelos y predicción de sistemas complejos).

La tecnología derivada del grid abre un enorme abanico de posibilidades para el desarrollo de aplicaciones en muchos sectores. Por ejemplo: desarrollo científico y tecnológico, educación, sanidad y administración pública.

5.2.4 Desventajas

No obstante, la computación grid presenta algunos inconvenientes que deben solucionarse. Estos problemas son:

Recursos heterogéneos: la computación grid debe ser capaz de poder manejar cualquier tipo de recurso que maneje el sistema, si no resultará totalmente inútil.

Page 94: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

5.3 Conclusiones

58 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Descubrimiento, selección, reserva, asignación, gestión y monitorización de recursos son procesos que deben controlarse externamente y que influyen en el funcionamiento del grid.

Necesidad de desarrollo de aplicaciones para manejar el grid, así como desarrollo de modelos eficientes de uso.

Comunicación lenta y no uniforme. Organizativos: dominios de administración, modelo de explotación y costes,

política de seguridad, etc. Económicos: precio de los recursos, oferta/demanda, etc.

5.3 Conclusiones

En definitiva, el empleo de una FPGA para la computación de la ecuación discreta de Poisson como nodo de una red de computación grid nos sitúa ante un paradigma de computación distribuida altamente versátil, escalable y que permite combinar la potencia de muchos equipos para lograr una capacidad global prácticamente ilimitada.

De este modo, en función de las necesidades, diferentes FPGAs podrían tomar la forma del circuito que fuera necesario en cada momento, consiguiendo crear una red de computación distribuida en punto flotante simple precisión con núcleos diferentes y reconfigurables. Para que esto se pudiera llevar a cabo, se precisaría de un circuito diferente para cada ecuación, de manera que se puedan resolver diferentes ecuaciones propias de este tipo de dispositivos, así como para diferentes estructuras tipo.

Sus principales inconvenientes provienen de la dificultad para sincronizar los procesos de todos estos equipos, monitorizando recursos, asignando cargas de trabajo y estableciendo políticas de seguridad informática fiables.

Se trata de un paradigma computacional en fase de desarrollo actualmente que ya ofrece servicios a muchos campos de investigación y que en el futuro tendrá una mayor influencia si cabe en dichos campos, al gozar de una estructura evolucionada respecto a la actual, con mayor robustez, mucho más rápida en cuanto a la comunicación entre sus equipos y, obviamente, con una mayor capacidad computacional de cada máquina debido a la evolución en términos de procesamiento y de rendimiento del hardware.

Page 95: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 59

Parte II

HERRAMIENTAS SOFTWARE

Page 96: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

60 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 97: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 61

Capítulo 6

Herramientas software El comportamiento de la distribución de potencial del dispositivo DGSOI viene descrito por una ecuación diferencial cuya solución es necesaria para el estudio de la estructura considerada. El objetivo de este trabajo, además de conseguir obtener la solución, es ejecutar la computación necesaria en una FPGA que sea parte de un entorno de computación grid. Para conseguir llegar al fin, son precisas numerosas herramientas software. En el presente capítulo se presentan las herramientas específicas que han sido empleadas para realizar, entre otras, simulaciones numéricas, implementaciones esquemáticas de circuitos digitales, simulaciones de circuitos digitales, generación de código HDL y síntesis de proyectos digitales.

6.1 Simulación numérica

La simulación numérica es una herramienta eficaz en las ciencias aplicadas, para la determinación de soluciones y la predicción del comportamiento de las mismas. Una simulación numérica difiere de un modelo matemático en que el primero constituye una representación en cada instante del proceso a simular, mientras que el modelo constituye una abstracción matemática de las ecuaciones fundamentales necesarias para analizar dicho fenómeno [MTOB11]. La utilización de una simulación numérica para estudiar el ecuación de Poisson 1D ha requerido una cuidadosa planificación del modelo matemático a utilizar y de los algoritmos necesarios para resolver dicho modelo. A continuación, se presenta la herramienta software que ha permitido poder realizar la simulación numérica al comportamiento de la distribución de potencial a lo largo del canal de un DGSOI.

Page 98: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

6.1 Simulación numérica

62 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

6.1.1 MATLAB

MATLAB (MATrix LABoratory) es un software matemático que ofrece un entorno de desarrollo integrado (IDE) con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Mac OS X.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, como son, Simulink (plataforma de simulación multidominio) y GUIDE (editor de interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las “cajas de herramientas” (toolboxes); y las de Simulink con los “paquetes de bloques” (blocksets).

Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como la utilizada en la última fase de desarrollo de este proyecto, programar directamente procesadores digitales de señal o crear código VHDL. MATLAB abarca una amplia gama de aplicaciones que incluyen procesamiento de señales e imágenes, comunicaciones, diseño de sistemas de control, sistemas de prueba y medición, modelado y análisis financiero y biología computacional.

Sus principales características son:

Lenguaje de alto nivel para cálculo técnico. Entorno de desarrollo para la gestión de código, archivos y datos. Herramientas interactivas para explotación, diseño y resolución de problemas

iterativos. Funciones matemáticas para álgebra lineal, estadística, análisis de Fourier,

filtraje, optimización e integración numérica. Funciones gráficas bidimensionales y tridimensionales para visualización de

datos. Herramientas para crear interfaces gráficas de usuario personalizadas. Funciones para integrar los algoritmos basados en MATLAB con aplicaciones

y lenguajes externos, tales como C/C++, FORTRAN, Java, COM y Microsoft Excel.

Page 99: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 6. Herramientas software

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 63

Figura 6.1 MATLAB, herramienta software utilizada en este trabajo para simulación numérica y presentación de resultados.

Versión, instalación y requisitos

La versión de MATLAB utilizada corresponde a la versión 7.12.0.635 (R2001a). En la página oficial de la compañía http://www.mathworks.es/ se puede obtener más información sobre el software y su funcionalidad. Además, es posible solicitar software de prueba a través de http://www.mathworks.es/products/matlab/tryit.html

Respecto a la instalación y funcionamiento, MATLAB ofrece una amplia ayuda, puede ser consultada en http://www.mathworks.es/help/techdoc/. Por último, se presentan los requisitos mínimos recomendados que precisa MATLAB para operar en función del sistema operativo:

SISTEMA OPERATIVO

VERSIÓN SO MÍNIMA

PROCESADOR ESPACIO EN

DISCO RAM

Windows XP SP 3

Cualquier procesador Intel o AMD x86 que soporte conjunto de instrucciones SSE2

1 GB para el núcleo de MATLAB, 3-4 GB para una instalación

típica

1024 MB

Page 100: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

6.2 Implementación, simulación digital y generación de HDL

64 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Mac OS X 10.7 (Lion)

Cualquier procesador Mac basado en Intel con un Intel Core 2 o

posterior

1 GB para el núcleo de MATLAB, 3-4 GB para una instalación

típica

1024 MB

Linux

Ubuntu 10.04 Red Hat 5.x

SUSE Linux 11.x Debian 5.x

Cualquier procesador Intel o AMD x86 que soporte conjunto de instrucciones SSE2

1 GB para el núcleo de MATLAB, 3-4 GB para una instalación

típica

1024 MB

Tabla 6.1 Requisitos mínimos recomendados por el software de MATLAB en función del SO.

6.2 Implementación, simulación digital y generación de HDL

Una vez realizada la simulación numérica, se precisan herramientas que permitan un diseño de sistemas digitales y la simulación de los mismos. Tal y como se explica en el capítulo 5, la programación de una FPGA se realiza con un lenguaje de descripción hardware. En este trabajo, en lugar de diseñar y ensamblar el sistema final mediante código HDL se ha utilizado una alternativa diferente. Mediante dos herramientas software que operan sobre MATLAB, se ha realizado un diseño RTL y a partir de dicho esquemático se ha generado el código HDL. En este apartado se describen las herramientas que nos han permitido esta metodología de diseño.

6.2.1 Simulink

Simulink es un entorno para la simulación multidominio y el diseño basado en modelos para sistemas dinámicos y embebidos que opera sobre MATLAB. Presenta un entorno gráfico interactivo y un conjunto personalizable de bibliotecas de bloques que permiten simular, implementar y probar una serie de sistemas variables con el tiempo, incluido comunicaciones, controles y procesamiento de señales, vídeo e imagen.

Simulink está integrado con MATLAB y ofrece acceso inmediato a una amplia gama de herramientas que permiten desarrollar algoritmos, analizar y visualizar simulaciones, crear series de procesado de lotes, personalizar el entorno de modelaje

Page 101: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 6. Herramientas software

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 65

y definir señales, parámetros y datos de pruebas. Es un entorno de programación de más alto nivel de abstracción que el lenguaje interpretado MATLAB (lenguaje M). Simulink viene a ser una herramienta de simulación de modelos o sistemas, con cierto grado de abstracción de los fenómenos físicos involucrados en los mismos. Se hace hincapié en el análisis de sucesos, a través de la concepción de sistemas (cajas negras que realizan alguna operación).

Se emplea arduamente en Ingeniería Electrónica en temas relacionados con el procesamiento digital de señales (DSP), involucrando temas específicos de ingeniería biomédica, telecomunicaciones, control y robótica.

Sus funciones principales son:

Bibliotecas extensas y ampliables de bloques predefinidos. Editor gráfico interactivo para ensamblar y administrar diagramas de bloque

intuitivos. Capacidad de gestionar diseños completos segmentando los modelos en

jerarquías de componentes de diseño. Model Explorer para navegar, crear, configurar y buscar todas las señales,

parámetros, propiedades y código generado asociados con el modelo. Interfaces de programación de aplicaciones (API) que permiten conectar con

otros programas de simulación e incorporar código escrito manualmente. Embedded MATLAB: Bloques de funciones para implementar los algoritmos

de MATLAB en Simulink e implementaciones de sistemas empotrados. Modos de simulación (normal, acelerador y acelerador rápido) para ejecutar

simulaciones de forma interpretativa o a velocidades de código C compilado utilizando solucionadores de paso fijo o variable.

Depurador y perfilador gráfico para examinar los resultados de simulación y diagnosticar el rendimiento y el comportamiento inesperado del diseño

Acceso completo a MATLAB para analizar y visualizar resultados, personalizar el entorno de modelaje y definir señales, parámetros y datos de prueba.

Herramientas de análisis de modelos y diagnosis para garantizar la coherencia de los modelos e identificar errores de modelaje.

Page 102: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

6.2 Implementación, simulación digital y generación de HDL

66 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 6.2 Simulink, herramienta software utilizada en este trabajo para implementación y simulación de modelos.

Versión, instalación y requisitos

Simulink requiere MATLAB para su funcionamiento. La versión utilizada en este trabajo es la versión 7.7, incluida en la versión de MATLAB 7.12.0.635 (R2001a), anteriormente explicada en el apartado 6.1.1. Por ende, la instalación y requisitos los encontramos en el apartado en cuestión.

6.2.2 Xilinx System Generator for DSP

System Generator for DSP es una herramienta de alto nivel de abstracción para el diseño de sistemas de gran rendimiento para FPGAs. Permite desarrollar sistemas digitales para las FPGAs más avanzadas del mercado. De esta manera, ofrece modelado RTL (register transfer level) de sistemas en Simulink y MATLAB y generación automática de lenguaje de descripción hardware (VHDL o Verilog), bitstream o análisis temporal y de potencia, entre otros. RTL se refiere al diseño abstracto con modelos de circuitos síncronos digitales en términos de señales digitales propagándose (datos) entre registros hardware y operaciones lógicas.

System Generator for DSP también es parte de Xilinx ISE Design Suite, de hecho la herramienta es desarrollada por Xilinx, la mayor empresa en investigación y

Page 103: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 6. Herramientas software

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 67

desarrollo de FPGAs. System Generator permite que desarrolladores con poca experiencia en el diseño de sistemas para FPGAs puedan crear rápidamente una implementación de calidad para algoritmos DSP en una fracción de tiempo de desarrollo reducida, debido al diseño RTL y verificar dichos diseños desde Simulink.

Sus principales características pueden resumirse en:

Modelado DSP: Generación y depuración de sistemas DSP de alto rendimiento con la librería de bloques de Xilinx en Simulink, que contiene funciones para el procesamiento de señales (por ejemplo, filtros FIR o FFT), corrección de errores (por ejemplo, decodificador de Viterbi, codificador/decodificador Reed-Solomon), aritmética, almacenaje en memorias (por ejemplo, FIFO, RAM, ROM), y lógica digital.

Implementación en bit, punto fijo y punto flotante: System Generator puede trabajar a nivel de bit, en punto fijo y/o en punto flotante con precisión simple, doble o personalizada.

Generación automática de código VHDL o Verilog desde Simulink: System Generator permite que una vez finalizado el modelo, compilar el diseño en una netlist HDL preparada para su procesamiento mediante una herramienta de síntesis e implementada con herramientas de diseño físico de Xilinx. Además, genera archivos de proyecto y archivos de restricciones para Xilinx ISE Design Suite y un testbench VHDL para la verificación funcional.

Co-simulación hardware: Partes del diseño Simulink modelado con System Generator for DSP pueden compilarse en un flujo de bits descargado en una placa de desarrollo y asociarlo con un bloque en Simulink. Cuando se simula un diseño de sistema en Simulink, los resultados de la parte compilada se calculan en el hardware FPGA real, lo que a menudo supone una simulación bastante más rápida a la hora de verificar el correcto funcionamiento del hardware. Además, admite la comunicación Ethernet y JTAG entre plataformas de hardware y Simulink.

Xilinx Power Analyzer (XPA) Integration: XPA permite a los diseñadores analizar requerimientos de potencia y experimentar modificaciones del diseño para cumplir los objetivos de consumo de potencia.

Co-diseño hardware/software de sistemas embedidos: Generación y depuración de co-procesadores DSP para MicroBlaze, nucleo procesador software.

Page 104: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

6.2 Implementación, simulación digital y generación de HDL

68 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 6.3 System Generator for DSP, herramienta software utilizada en este trabajo para implementación de sistemas digitales y generación de código HDL.

Versión, instalación y requisitos

La versión de Xilinx System Generator for DSP utilizada en el presente trabajo corresponde a la versión 13.4. Dicha herramienta pertenece al fabricante Xilinx, además, para la síntesis y el análisis del diseño en HDL generado por System Generator se precisa de la herramienta que se presenta en el apartado siguiente, Xilinx ISE Design Suite. Es por ello, por lo que se detalla a continuación la instalación y requisitos de Xilinx ISE Design Suite 13.4 que incluye, entre otras herramientas, System Generator, que además es compatible con la versión de MATLAB 7.12.0.635 (R2001a) y Simulink 7.7 explicados en los apartados 6.1.1 y 6.2.1, respectivamente.

En la página oficial de la compañía http://www.xilinx.com/ se puede obtener más información sobre el software y su funcionalidad. Además, es posible adquirir la versión Xilinx ISE Design Suite 13.4 e, incluso, solicitar software de prueba a través de http://www.xilinx.com/support/download/index.htm.

Respecto a la instalación y funcionamiento, Xilinx ofrece una amplia ayuda que puede ser consultada en www.xilinx.com/support/. Por último, los requisitos mínimos recomendados que precisa Xilinx ISE Design Suite 13.4 para operar en función del sistema operativo son los siguientes:

SISTEMA OPERATIVO

VERSIÓN SO MÍNIMA

ESPACIO EN DISCO RAM

Windows XP Professional 15 GB para una

instalación típica 2048 MB

Mac

Linux Red Hat 4.x

SUSE Linux 11.x 15 GB para una

instalación típica 2048 MB

Tabla 6.2 Requisitos mínimos recomendados por Xilinx ISE Design Suite 13.4 en función del SO

Page 105: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 6. Herramientas software

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 69

6.3 Síntesis de sistemas digitales en HDL

Actualmente cualquier proceso de ingeniería dispone de un soporte software que asiste al ingeniero de aplicaciones o sistemas en el desarrollo de sistemas complejos. Los sistemas electrónicos reconfigurables del tipo FPGA son un buen ejemplo de la complejidad que se puede alcanzar, ésta no sería abarcable sin la ayuda de un entorno con herramientas que asistan en el proceso de diseño, simulación, síntesis del resultado y configuración del hardware. En este apartado, se presenta la herramienta utilizada para realizar el último paso para la obtención del resultado final: la síntesis del sistema digital descrito en HDL.

6.3.1 Xilinx ISE Design Suite

Xilinx ISE es una herramienta software producida por Xilinx para la síntesis y el análisis de diseños en HDL, permitiendo así al desarrollador sintetizar (“compilar”) sus diseños, realizar análisis temporales, estudiar diagramas RTL, simular la respuesta de un diseño frente a diferentes entradas y configurar la FPGA con el programador.

Este software constituye un verdadero entorno EDA (Electronic Design Automation). EDA se refiere a la categoría de herramientas software dedicadas al diseño de sistemas electrónicos que trabajan juntas en un flujo de diseño que los diseñadores utilizan para desarrollar y analizar dichos sistemas al completo.

A través de la interfaz gráfica de usuario ofrecida Xilinx ISE los diseños de usuario se pueden introducir mediante diferentes formatos. Los más utilizados son: los esquemáticos, los grafos de estados y las descripciones hardware en VHDL. Una vez compilados los diseños se puede simular su comportamiento a nivel funcional o a nivel temporal. A nivel funcional no tiene en cuenta los retardos provocados por el hardware y a nivel temporal simula el diseño teniendo en cuenta cómo se va a configurar el hardware.

Las características clave a destacar en Xilinx ISE Design Tools pueden son:

Diseño y síntesis compatible con Verilog y VHDL. Combina múltiples ficheros en un único netlist, agrupando los símbolos lógicos del netlist (puertas) en componentes físicos (slices e IOBs).

Page 106: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

6.3 Síntesis de sistemas digitales en HDL

70 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Place-And-Route (PAR). Distribuye los componentes en el chip, los conecta y genera informes con análisis temporales.

Verificación completa y depuración. Creación de ficheros bit para configurar la FPGA.

Figura 6.4 Xilinx ISE Design Suite 13.4, herramienta software utilizada en este trabajo para para la síntesis del sistema digital en HDL.

Versión, instalación y requisitos

La versión utilizada de Xilinx ISE Design Suite en este trabajo es la versión 13.4. La información relativa a la instalación del software y los requisitos mínimos recomendados para su correcto funcionamiento pueden encontrarse en el apartado 6.2.2.

Page 107: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 71

Parte III

DESARROLLO DEL TRABAJO Y RESULTADOS

Page 108: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

72 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 109: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 73

Capítulo 7

Simulación numérica En este capítulo se procede a la simulación numérica de la ecuación discreta de Poisson 1D obtenida en el capítulo 3 mediante la discretización de la ecuación continua por el método de las diferencias finitas. La herramienta software utilizada es MATLAB, presentada en el capítulo 6. Tras investigar cómo afectan las variables críticas del método numérico se presentan varias alternativas a un problema de aproximación que surge de la necesidad de ejecución del sistema en una plataforma reconfigurable mediante la representación numérica basada en el formato IEEE 754. Se pone fin al capítulo realizando una simulación numérica de la ecuación discreta de Poisson 1D una vez adoptada la solución al problema anteriormente citado.

7.1 Simulación numérica de la ecuación discreta de Poisson 1D

Sea la siguiente estructura el esquema de un transistor DGSOI, objeto de estudio del presente trabajo:

Figura 7.1 Esquema de la estructura de un dispositivo DGSOI.

Page 110: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.1 Simulación numérica de la ecuación discreta de Poisson 1D

74 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

En el capítulo 3 se desarrolló la ecuación de Poisson 1D por el método de diferencias finitas, el resultado obtenido en la ecuación 3.18 se recuerda a continuación:

푉(푖) =

푉(푖 + 1) + 푉(푖 − 1)−0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

∆푥 푞휀 휀 푁 + 푛 푒

( ), 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

2

Ecuación 7.1 Ecuación discreta de Poisson 1D.

En este apartado se realiza la simulación numérica para estudiar la solución que proporciona la expresión 7.1 bajo diferentes condiciones iniciales y finales. Con la ayuda de la herramienta MATLAB, se construye el sistema iterativo. El código implementado en MATLAB puede consultarse en el apéndice A, apartado A.1.

En primer lugar, se encuentra la declaración de las constantes:

Descripción Nombre Valor

Concentración intrínseca del silicio 300 K [cm-3] ni 1.5 · 1010

Permitividad eléctrica del vacío [F/cm] E0 8.854 · 10-14

Permitividad eléctrica relativa del silicio Esi 11.8

Constante de Boltzmann [eV/K] K 8.62 · 10-5

Valor absoluto de la carga del electrón [C] q 1.6 · 10-19

Temperatura [K] T 300

Tensión térmica [V] Vt K·T

Tabla 7.1 Declaración de constantes para la simulación numérica.

A continuación, se declaran una serie de constantes de entrada, es decir, variables de valor constante que son definidas al iniciar el método numérico y que pueden variar su valor para experimentar diferentes condiciones iniciales. Estas variables son (nótese que el valor que aparece para cada variable puede ser modificado para obtener una solución diferente):

Page 111: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 75

Descripción Nombre Valor

Concentración de impurezas en el semiconductor [cm-3] Na 1018

Tensiones de puerta [V] Vg1, Vg2 1

Longitud del canal del transistor DGSOI [cm] x 10-6

Número de puntos en los que discretizamos el canal points 100

Número de puntos correspondientes a óxido Ox_points 20

Ancho de discretización [cm/punto] Ax x/points

Límite de iteraciones limit 1000000

Umbral de error umbral 10-6

Tabla 7.2 Declaración de constantes de entrada para la simulación numérica

Seguidamente, las variables del método numérico son inicializadas. Estas son: el contador de iteraciones, la solución numérica anterior para realizar el cálculo del error y la solución numérica. Reescribimos la ecuación discreta de Poisson 1D tal y como ha sido implementada en MATLAB (igual nomenclatura):

푉(푖) =푉(푖 + 1) + 푉(푖 − 1) − 푟ℎ푠퐼 − 푟ℎ푠(푖)

2

푟ℎ푠퐼 =0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

∆푥 푞푁휀 휀 , 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

푟ℎ푠(푖) =

0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

∆푥 푞푛 푒( )

휀 휀 , 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

Ecuación 7.2 Ecuación discreta de Poisson 1D (nomenclatura utilizada en MATLAB).

Considerando, en este caso, como condiciones iniciales y finales las recogidas en las tablas 7.1 y 7.2 se procede a la simulación numérica. Se recoge como salida las representaciones tanto del comportamiento de la tensión a lo largo del canal (푉), como

de la concentración de electrones a lo largo del canal (푛 = 푛 푒 ).

Page 112: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.1 Simulación numérica de la ecuación discreta de Poisson 1D

76 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 7.2 Resultado de la simulación numérica de la ecuación discreta de Poisson 1D realizada con MATLAB

La salida obtenida tras iterar el método numérico, tal y como puede observarse en la Figura 7.2, es la solución al problema numérico. No puede asegurarse, porque no es objetivo de este trabajo realizar tal comprobación, que el método iterativo resulte estable y consistente, y por tanto, convergente. Asumiendo que esto es cierto, puede decirse que el error de truncamiento introducido por el método de diferencias finitas, así como, el error de redondeo por el hecho de utilizar la representación en punto flotante IEEE 754 simple precisión no evitan la convergencia del método iterativo.

Por otro lado, y tal y como puede observarse en la Figura 1.18 del capítulo 1, destaca como al polarizar las dos puertas los electrones se confinan en las cercanías de las interfases de silicio con el óxido.

Los valores de tensión (en V) para cada uno de los puntos en los que se ha discretizado el canal del dispositivo DGSOI son los siguientes:

1 0,9816405 0,9632810 0,9449216 0,9265622 0,9082029 0,8898436 0,8714844 0,8531252 0,8347661 0,8164071 0,7980481 0,7796893 0,7613305 0,7429717 0,7246131 0,7062545 0,6878960 0,6695375 0,6511792 0,6328208 0,6144626 0,6009117 0,5902137 0,5814073 0,5739509 0,5675102 0,5618649 0,5568619 0,5523911 0,5483705 0,5447376 0,5414436 0,5384500 0,5357256 0,5332451 0,5309879 0,5289365 0,5270765 0,5253958 0,5238841 0,5225329 0,5213348 0,5202836 0,5193742 0,5186022 0,5179641 0,5174570 0,5170787 0,5168275 0,5167025 0,5167030 0,5168290 0,5170811 0,5174603 0,5179684

Page 113: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 77

0,5186073 0,5193800 0,5202901 0,5213419 0,5225405 0,5238921 0,5254040 0,5270848 0,5289447 0,5309961 0,5332533 0,5357335 0,5384575 0,5414508 0,5447444 0,5483769 0,5523969 0,5568671 0,5618694 0,5675140 0,5739540 0,5814100 0,5902160 0,6009137 0,6144643 0,6328226 0,6511810 0,6695395 0,6878980 0,7062565 0,7246152 0,7429738 0,7613326 0,7796913 0,7980502 0,8164091 0,8347680 0,8531270 0,8714860 0,8898450 0,9082041 0,9265632 0,9449223 0,9632815 0,9816408 1

A continuación, se ejecuta la simulación del sistema iterativo para diferentes anchos de discretización, condiciones de contorno y umbral de error. El objetivo es estudiar el comportamiento del método iterativo en función de estas variables. Los resultados obtenidos son los siguientes:

Ancho de discretización

(Ax) [cm/punto]

Umbral de error

Condiciones de contorno (Vg) [V]

Número de iteraciones

Error absoluto [V]

1e-8

1e-5 0.5 2988 9.9838e-6 0.75 1166 9.9540e-6

1 575 9.8944e-6

1e-6 0.5 4513 9.8348e-7 0.75 1511 9.5367e-7

1 841 9.5367e-7

1e-7 0.5 6021 8.9407e-8 0.75 1934 5.9605e-8

1 1147 5.9605e-8

5e-8

1e-5 0.5 6000 9.9838e-6 0.75 10450 9.9838e-6

1 5189 9.9540e-6

1e-6 0.5 57896 9.8348e-7 0.75 25228 9.5367e-7

1 11418 9.5367e-7

1e-7 0.5 96757 8.9407e-8 0.75 35398 5.9605e-8

1 19687 5.9605e-8

Page 114: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

78 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

1e-9

1e-5 0.5 6090 9.9838e-6 0.75 9100 9.9838e-6

1 11197 9.9540e-6

1e-6 0.5 111135 9.8348e-7 0.75 76615 9.8348e-7

1 26042 9.5367e-7

1e-7 0.5 308481 8.9407e-8 0.75 126965 5.9605e-8

1 65515 5.9605e-8

Tabla 7.3 Estudio del comportamiento del esquema numérico en función de sus parámetros críticos

En primer lugar, destacar que conforme el ancho de discretización se hace más pequeño, dicho de otra manera, conforme el canal es dividido en más puntos, el coste computacional incrementa para umbral de error o condiciones de contorno constantes. Por otro lado, respecto al umbral de error, conforme es disminuido el número de iteraciones aumenta, por lo que el coste computacional es mayor, para unas condiciones de contorno y ancho de discretización constante. Sin embargo, el método numérico presenta un comportamiento dependiente de las condiciones de contorno con el umbral de error. Como puede observarse en la tabla 7.3, para un umbral de error de 10-5, conforme el valor de las condiciones de contorno es aumentado el coste de computación también aumenta y, por el contrario, para valores menores del umbral de error, el comportamiento es inversamente proporcional.

Realizado este primer estudio sobre el comportamiento del método iterativo, el objetivo del trabajo es estudiar la viabilidad de encontrar una solución. Por ello, se persigue una solución con precisión aceptable y bajo coste de computación. De aquí en adelante se utilizará un ancho de discretización de 10-8, unas condiciones de contorno de 1V y un umbral de error de 10-6, cumpliendo dicha condición de parada para 841 iteraciones y cuya salida es la observada en la Figura 7.2.

7.2 Aproximación de la función exponencial

En el apartado anterior se ha observado que el método numérico converge a la solución real del problema al discretizar la ecuación de Poisson 1D por el método de diferencias finitas. Sin embargo, se detecta un importante problema al ejecutar la

Page 115: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 79

ecuación en una plataforma de cálculo digital y es la computación de la función exponencial:

푉(푖) =

푉(푖 + 1) + 푉(푖 − 1) −0, 푒푛푙푎푟푒푔푖ó푛푑푒ó푥푖푑표

∆푥 푞휀 휀 푁 + 푛 푒

( ), 푒푛푙푎푟푒푔푖ó푛푑푒푠푒푚푖푐표푛푑푢푐푡표푟

2

Ecuación 7.3 La función exponencial es una operación no elemental, que no puede ser computada por una unidad en punto flotante.

En una FPGA se puede encontrar como núcleo para realizar las operaciones aritméticas una FPU (Floating Point Unit), que no es más que una ALU (Arithmetic Logic Unit) capaz de trabajar con número en formato punto flotante y, en nuestro caso, simple precisión. Dicho núcleo cuenta con las operaciones básicas suma/resta y multiplicación/división. Es por ello, por lo que se debe idear una aproximación de la función exponencial continua. Para ello se estudian varias alternativas para aproximar el valor de dicha función teniendo en cuenta que el rango donde puede tomar valores está limitado:

푒( )휖 1, 푒

,

Ecuación 7.4 Rango de interés de la función exponencial continua.

Cabe destacar que en este trabajo se suponen ambas puertas polarizadas con la misma tensión y positivas, tal que así:

푒( )휖 1, 푒

Ecuación 7.5 Rango de interés de la función exponencial continua, teniendo en cuenta que ambas puertas metálicas se encuentran polarizadas con la misma tensión.

Para cada una de las alternativas que se presentan a continuación, se detallan ventajas y desventajas de la aproximación realizada en términos de error cometido por dicha aproximación y carga computacional y consumo de recursos adicional. Además, se prestará especial atención al error introducido al aplicar este proceso, ya que el error puede deteriorar las características de estabilidad y consistencia del esquema numérico, no garantizando, de esta manera, la convergencia a la solución real.

Page 116: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

80 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

7.2.1 Serie de Taylor

La primera alternativa que se presenta para aproximar la función exponencial es utilizar la serie de Taylor, ya que ésta es infinitamente derivable en el intervalo de interés:

푔(푖) = 푒( )→ 푉(푖) ∈ 0,푉

푓(푥) = 푒 → 푥 ∈ 0,푉푉

Ecuación 7.6 La función exponencial es infinitamente derivable en el rango de interés.

Así, sea la función 푓(푥), infinitamente derivable y definida en un intervalo 푥 ∈ (푎 − 푟, 푎 + 푟), se define la serie de Taylor de dicha función como la siguiente suma:

푓(푥) =푓( )(푎)푛! (푥 − 푎)

Ecuación 7.7 Serie de Taylor de la función푓(푥).

donde 푛! es el factorial de 푛 y 푓( )(푎) indica la n-ésima derivada de 푓 en el punto 푎.

Para el caso de la función exponencial en el rango de interés:

푓(푥) =푓( )(푎)푛! (푥 − 푎) 푝푎푟푎푎 =

푉2푉

푒 = 푒(푥 − 푎)

푛!

Ecuación 7.8 Serie de Taylor de la función exponencial en el rango de interés.

El siguiente paso es realizar un truncamiento de la serie de Taylor, tal y como se realizó al aplicar el teorema de las diferencias finitas, teniendo en cuenta que, el gasto computacional es directamente proporcional al grado del polinomio de Taylor construido truncando la serie. Nótese que, suponiendo un polinomio de tercer grado, en tal caso:

Page 117: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 81

푒 = 푒(푥 − 푎)

푛! → 푏 = (푥 − 푎) → 푒 = 푒푏푛! = 푒 1 + 푏 +

푏2 +

푏6

푒 = 푒 1 + 푏 1 + 푏12 +

푏6

Ecuación 7.9 Polinomio de Taylor de tercer orden de la función exponencial.

Puede generalizarse, por tanto, la carga computacional por muestra para un polinomio de grado n.

EVALUACIÓN DE CARGA COMPUTACIONAL Y CONSUMO DE RECURSOS Serie de Taylor

Evaluación por muestra de entrada de 푽(풊)푽품

Número de ciclos n+1

Carga computacional (por ciclo)

Operaciones suma 1

Operaciones producto 1

Carga computacional y consumo de recursos

(adicional)

Funciones lógicas 0

Accesos a memoria 0

Tamaño de memoria (palabras)

-

Tabla 7.4 Carga computacional y consumo de recursos adicional que implica adoptar la serie de Taylor truncada como alternativa a la función exponencial.

En el apéndice A, apartado A.2 se encuentra el código del programa realizado en MATLAB para la simulación de esta técnica de aproximación de la función exponencial.

El grado del polinomio influye directamente en el número de iteraciones necesarias para cumplir un umbral de error especificado. A continuación, se realiza un estudio cuantitativo del error absoluto y relativo de esta técnica comparando la solución obtenida en el proceso iterativo aproximando la función exponencial y la solución obtenida en el proceso iterativo con la función exponencial en su forma continua.

Page 118: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

82 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Sea el error absoluto y error relativo tal que así:

휀 =1푛 푉 (푖)− 푉 ó (푖)

Ecuación 7.9 Error absoluto.

휀 =1푛

푉 (푖)− 푉 ó (푖)푉 (푖)

Ecuación 7.10 Error relativo.

donde 푉 es la solución obtenida por el método iterativo utilizando la función exponencial continua y 푉 ó es la solución obtenida por el método iterativo utilizando una técnica de aproximación de la función exponencial.

De esta manera, para evaluar la eficiencia de la presente técnica, el método iterativo es simulado para diferentes valores del grado del polinomio de Taylor y se estudia el compromiso entre carga computacional y consumo de recursos y precisión. La siguiente tabla muestra los resultados obtenidos en las simulaciones:

EVALUACIÓN DE ERROR Serie de Taylor

Orden del polinomio Iteraciones Error absoluto Error relativo

1 2236 8.799674e-2 1.487737e-1 2 1042 2.852437e-2 4.670283e-2 3 876 1.196746e-2 1.929008e-2 4 849 5.429900e-3 8.672036e-3 5 842 2.501106e-3 3.968732e-3 6 842 1.132046e-3 1.787529e-3 7 839 4.918768e-4 7.733625e-4 8 841 2.033675e-4 3.187789e-4 9 842 7.941910e-5 1.242969e-4 10 844 2.973980e-5 4.669533e-5

Tabla 7.5 Error de aproximación cometido en función del orden del polinomio de Taylor.

Page 119: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 83

Utilizando las mismas condiciones de contorno, umbral de error y ancho de discretización y la función exponencial continua se experimentó en el apartado 7.1 que era preciso iterar el método 841 veces para cumplir la exigencia impuesta por el umbral de error. Se puede concluir, según los resultados que aparecen en la tabla 7.5, que el grado del polinomio utilizado para aproximar la función exponencial influye directamente en el número de iteraciones necesarias para alcanzar el umbral de error impuesto. De esta manera, a partir de un polinomio de grado 5, y superiores, se precisa prácticamente del mismo número de iteraciones que el método necesitó utilizando la función exponencial continua.

Sin embargo, aunque se precisen las mismas iteraciones, sí que puede observarse que el error se reduce progresivamente conforme el grado del polinomio aumenta, es decir, la solución aproximada difiere menos a la solución obtenida con la función continua. Así, el error absoluto y relativo junto con la carga computacional y consumo de recursos son las variables principales a la hora de evaluar la eficiencia de cada una de las técnicas de aproximación que son desarrolladas en este trabajo.

Figura 7.3 Serie de Taylor. Error relativo en función del grado del polinomio de Taylor.

1,00E-05

1,00E-04

1,00E-03

1,00E-02

1,00E-01

1,00E+001 2 3 4 5 6 7 8 9 10

Erro

r rel

ativ

o

Grado del polinomio

EVALUACIÓN DEL ERRORSerie de Taylor

Page 120: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

84 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

7.2.2 Aproximación lineal por tramos

El fundamento principal de la esta técnica de aproximación de la función exponencial reside en una división del rango de la función exponencial ( ( ) ∈ 0, ) en un número

limitado de puntos equiespaciados y almacenar el valor de la función exponencial evaluada en dichos puntos. Dicho de otra forma, discretizar la función en un número limitado de puntos equiespaciados. Si el punto en el que se pretende evaluar la función exponencial no coincide exactamente con un punto en el que el rango es dividido, el resultado final se aproxima a partir de la pendiente (aproximación lineal) de cada par de puntos. El valor de la pendiente será también almacenado.

Los valores de la función exponencial evaluada en cada punto en los que el rango es dividido, además de la pendiente entre dicho punto y el inmediato, deben ser almacenados en una memoria ROM. Para una buena optimización de los recursos consumidos en una FPGA, el número de puntos en los que dividir el rango completo se exige que sea 2 , donde 푏푑푖푟 es el número de bits utilizados para el direccionamiento de la memoria ROM. Así, ésta tendría 푚푠푖푧푒 = 2 posiciones, siendo la dirección inicial 0 y la dirección final 푑푚푎푥 = 푚푠푖푧푒 − 1. Dicho esto, se divide el rango de la función exponencial en 푚푠푖푧푒 puntos equiespaciados, tal que así:

Figura 7.4 División del rango de interés de la función exponencial en ퟐ풃풅풊풓puntos equiespaciados

Los valores de ( ) que no coinciden exactamente con los puntos en los que el rango

de la exponencial ha sido dividido caerán entre dos de ellos, llámense por ejemplo 퐴푦퐵. Se utilizará el punto más cercano al origen (퐴) para obtener de la ROM su valor y la pendiente entre 퐴푦퐵. Así, la diferencia entre el punto inicial ( ( )) y el utilizado

Page 121: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 85

para la ROM (퐴) se multiplicará por la pendiente entre 퐴푦퐵 y se sumará al valor de la exponencial en 퐴 para obtener la aproximación de la función exponencial. Así, dado un valor de ( ), que cae entre dos puntos 퐴푦퐵, el valor de la función exponencial será

aproximado tal que así:

퐴 =푉푉

푛푑푚푎푥 퐵 =

푉푉

푛 + 1푑푚푎푥 ∀푛 ∈ 0,1, … , (푑푚푎푥 − 1)

푒( )

= 푒 + (푉(푖) −퐴) · (퐵 − 퐴)

Ecuación 7.11 Metodología para la aproximación de la función exponencial mediante la técnica de aproximación lineal por tramos.

Téngase en cuenta que los valores de 푒 y (퐵 − 퐴) se encuentran en una ROM tal y como se ha comentado anteriormente.

Se ha obviado, hasta este punto, el principal problema de esta alternativa de aproximación de la función exponencial para un entorno digital. El problema reside en que dada una muestra de 푉(푖) cómo calcular el valor del punto al que acudir a la memoria ROM. La solución implementada en este trabajo se basa en acotar todas las muestras del rango de 푉(푖) en un rango en el que el formato punto flotante IEEE 754 simple precisión se comporte uniformemente, o dicho de otra forma, que la representación numérica presente el mismo exponente. Básicamente se trata de realizar un cambio de formato en la representación de punto flotante a punto fijo.

Tal y como fue comentado en el capítulo 4, IEEE 754 permite una representación de los números en la escala real no uniforme (Figura 4.2). Dicho esto, conocido el rango de las muestras de entrada (푉(푖) ∈ 0,푉 ), basta con elegir un rango uniforme, en este caso se ha elegido 푉′(푖) ∈ [0.5, 1], porque presenta el mejor comportamiento frente a carga computacional y precisión. Un rango uniforme inferior implicaría perder bits para realizar la aproximación con la pendiente, como posteriormente puede deducirse; y un rango uniforme superior implicaría un posterior tratamiento del resultado, es decir, aumentar la carga computacional. Así, dada una muestra 푉(푖), 푉′(푖) se calcula de la siguiente manera:

푉 (푖) =12푉(푖)푉 +

12

Ecuación 7.12 Cálculo realizado a las muestras de entrada para acotarlas al rango [0.5, 1]

Page 122: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

86 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

En tal caso, todas las muestras de 푉′(푖) tendrán el siguiente formato:

Figura 7.5 Formato a nivel de bit que presentarán todas las muestras de 푽′(풊)

Aplicando el formato IEEE 754 para números en punto flotante y simple precisión estudiado en el apartado 4.1 del capítulo 4, el valor de 푉′(푖) será:

푉′(푖) = 푠 · 2 · 푚 → 푉′(푖) =12

(1,푀퐴푁푇퐼푆퐴) ∈12 , 1

푒 = 퐸푋푃푂푁퐸푁푇퐸 − 127 = −1

Ecuación 7.13 Valor decimal de las muestras 푉′(푖) calculado según el estándar IEEE 754.

Dado un valor de 푉′(푖), todos presentaran el mismo bit de signo y los mismos bits de exponente. Por tanto, los 9 primeros bits pueden ser obviados, disponiendo de un número de 23 bits para obtener la dirección de memoria a la que acudir y el resto de bits para realizar la aproximación con la pendiente. La localización del punto de la nueva representación en punto fijo se fijará dependiendo del número de bits utilizados para direccionar la memoria ROM (푏푑푖푟), tal que la parte entera representará la dirección de memoria y el resto (23− 푏푑푖푟) bits, formarán la parte decimal y se utilizarán para aproximar el resultado. Un esquema de lo explicado puede observarse a continuación:

Figura 7.6 Metodología utilizada para detectar la dirección de memoria a la que acudir dado un valor de 푽′(풊). Los valores de la función exponencial evaluados en cada punto en los que se ha dividido el rango corresponden a 풃(풊), mientras que 풄(풊) representa el valor de la pendiente entre cada par de puntos.

Page 123: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 87

Nótese que la desventaja de este método propuesto para el cálculo de la dirección ROM a la que acudir es la pérdida de precisión en el proceso de aproximación, ya que

el valor ( ) − 퐴 que se multiplicará por la pendiente se representa con (23 − 푏푑푖푟)

bits. Además, destaca el compromiso que se acaba de generar: utilizar un mayor número de bits para la parte entera, es decir, para el direccionamiento de la memoria, implica una memoria de mayor tamaño, más valores alojados de la exponencial evaluada y menos bits para realizar la aproximación; mientras que, utilizar un menor número de bits para la parte entera implica un menor número de tramos y, por tanto, menor número de valores de la exponencial alojados, un menor tamaño de memoria necesario y más precisión para realizar la aproximación. Al final de este apartado se realiza un estudio cuantitativo sobre esta técnica, determinando las consecuencias derivadas en la localización del punto binario que separa las partes entera y decimal comparando los resultados obtenidos con los hallados con la función exponencial continua. Comentar que para separar dichas partes (dirección de memoria y aproximación) se utilizará la función AND lógica cuando se realice el diseño digital.

A continuación, el gasto computacional por muestra de 푉(푖) para una división del

rango en 푘 puntos equiespaciados con el objetivo del cálculo de 푒( )

puede generalizarse como: un acceso a memoria que proporciona el valor de la exponencial y la pendiente, dos operaciones suma, dos operaciones de producto y dos operaciones lógicas AND.

EVALUACIÓN DE CARGA COMPUTACIONAL Y CONSUMO DE RECURSOS Aproximación lineal por tramos

Evaluación por muestra de entrada de 푽(풊)푽품

Número de ciclos 1

Carga computacional (por ciclo)

Operaciones suma 2

Operaciones producto 2

Carga computacional y consumo de recursos

(adicional)

Funciones lógicas (AND) 2

Accesos a memoria 1

Tamaño de memoria (palabras)

2k+1

Tabla 7.6 Carga computacional y consumo de recursos de la técnica de aproximación lineal por tramos.

Page 124: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

88 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

En el apéndice A, apartado A.3 puede consultarse el código del programa realizado en MATLAB para la simulación de dicha técnica de aproximación de la función exponencial.

En este caso la variable potencial de este método es el número de bits utilizados para direccionar la memoria ROM, es decir, el número de puntos equidistantes en los que el rango de ( ) es dividido.

Los resultados obtenidos de las simulaciones son los que se encuentran en la siguiente tabla:

EVALUACIÓN DE ERROR Aproximación lineal por tramos

Número de bits: direccionamiento/aproximación

Iteraciones Error

absoluto Error

relativo

4 / 19 1002 1.185820e-2 2.064393e-2

5 / 18 910 8.231611e-3 1.435589e-2

6 / 17 872 4.444581e-3 7.761523e-3

7 / 16 857 2.422049e-3 4.220351e-3

8 / 15 849 1.228726e-3 2.144411e-3

9 / 14 843 6.267317e-4 1.092854e-3

10 /13 845 3.153144e-4 5.501634e-4

11 / 12 843 1.584426e-4 2.763968e-4

12 / 11 841 7.901356e-5 1.377982e-4

Tabla 7.7 Error de aproximación cometido en función de la colocación del punto binario.

En la tabla 7.7 se observa que aumentar el número de bits para la parte entera se traduce en un menor número de iteraciones para el método numérico y un menor error (Figura 7.7), ocasionado principalmente por disponer de un mayor número de valores de la función exponencial evaluada. Aunque aumentar el número de bits para la parte entera ocasione una posterior aproximación con la pendiente entre cada par de puntos con una menor precisión, se denota que el compromiso principal de esta técnica reside entre la precisión y el tamaño de memoria ROM.

Page 125: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 89

Nótese que a partir de utilizar 9 bits para el direccionamiento de memoria, es decir, dividir el rango en 2 = 512 puntos equidistantes, el número de iteraciones es prácticamente el mismo que utilizar la función exponencial continua. De ahí que, a partir de este valor, conforme los bits para la parte entera aumentan el error continúa disminuyendo y el número de iteraciones permanece prácticamente invariable.

Figura 7.7 Aproximación lineal por tramos. Error relativo en función del tamaño de la memoria ROM.

7.2.3 Aproximación polinómica óptima por tramos

La técnica de aproximación de la función exponencial que se presenta a continuación se basa en una combinación de las dos técnicas explicadas anteriormente: serie de Taylor y aproximación lineal por tramos. La técnica se basa en dividir el rango de las muestras ( ( ) ∈ 0, ) en un número fijo de puntos equiespaciados, tal y como

representa la Figura 7.4. Cada par de puntos encierran en su interior un tramo de la función exponencial, del cual se calcula la aproximación polinómica óptima, es decir, se obtiene el polinomio, de un grado determinado, que mejor aproxima dicho tramo garantizando la continuidad de la función. Los coeficientes del polinomio en cuestión son guardados en una memoria ROM, de manera que, dada una muestra de entrada ( ( )), y de igual manera que en el apartado anterior (mediante un cambio de formato

1,00E-04

1,00E-03

1,00E-02

1,00E-01

1,00E+004 5 6 7 8 9 10 11 12

Erro

r rel

ativ

o

Número de bits de direccionamiento ROM

EVALUACIÓN DEL ERRORAproximación lineal por tramos

Page 126: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

90 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

a punto fijo), se obtiene la posición de memoria a la que acudir, se extraen los

coeficientes y se calcula la aproximación de la función exponencial (푒( )

) evaluando dicho polinomio con el punto ( ).

Para el cálculo de los coeficientes del polinomio de cada tramo se utiliza la función mim en MATLAB, basada en la función polyfit que proporciona un vector con los coeficientes del polinomio óptimo, tratando de minimizar el error en cada uno de los tramos y garantizando la continuidad de la función formada por dichos polinomios. La implementación de la función mim se encuentra en el apéndice A, apartado A.4.1.

Nótese, en este caso, que la técnica presenta dos variables potenciales que influyen directamente en la eficiencia de la aproximación de la función exponencial: el grado del polinomio y el número de tramos en los que se divide el rango. Aumentar el grado del polinomio, por un lado, mejora la aproximación en cada tramo, pero implica una mayor carga computacional durante la posterior evaluación y exige un mayor tamaño de memoria ROM. Por otro lado, aumentar el número de tramos en los que se divide el rango se traduce en una mejor aproximación, sin embargo, el tamaño de la memoria aumenta exponencialmente.

Para determinar la dirección a la que acudir a memoria para cada muestra de entrada se propone utilizar la técnica basada en el cambio de formato de punto flotante a punto fijo explicada en el apartado 7.2.2.

A continuación se realiza el estudio general de la carga computacional. Así, el gasto computacional por muestra de 푉(푖) para una división del rango en 푘 puntos

equiespaciados y un grado del polinomio 푛, con el objetivo del cálculo de 푒( )

, puede aproximarse como: un acceso a memoria que proporciona los 푛 + 1 coeficientes del polinomio, 푛 + 2 operaciones suma, 푛 + 1 operaciones producto y una operación lógica AND (tabla 7.8).

En el apéndice A, apartado A.4 se encuentra el código del programa realizado en MATLAB para la simulación de dicha técnica de aproximación de la función exponencial disponible para consulta.

El método numérico es iterado para diferentes tamaños de memoria (número de bits utilizados para el direccionamiento de la ROM) y diferente grado del polinomio estudiando en cada caso número de iteraciones y el error absoluto y relativo. Los resultados se recogen en la tabla 7.9.

Page 127: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 91

EVALUACIÓN DE CARGA COMPUTACIONAL Y CONSUMO DE RECURSOS Aproximación polinómica óptima por tramos

Evaluación por muestra de entrada de 푽(풊)푽품

Número de ciclos n+1

Carga computacional (por ciclo)

Operaciones suma 1

Operaciones producto 1

Carga computacional y consumo de recursos

(adicional)

Funciones lógicas (AND) 1

Operaciones suma 1

Accesos a memoria 1

Tamaño de memoria (palabras)

(n+1)·2k

Tabla 7.8 Carga computacional y consumo de recursos de la técnica de aproximación polinómica óptima por tramos.

EVALUACIÓN DE ERROR Aproximación polinómica óptima por tramos

Bits de direccionamiento

Grado del polinomio

Iteraciones Error

absoluto Error

relativo

4 1 1008 2.506076e-3 4.608837e-3 2 839 8.421377e-4 1.343949e-3 3 816 4.250851e-4 7.069203e-4

5 1 931 2.801185e-4 5.093390e-4 2 845 2.631060e-4 4.681396e-4 3 848 7.771336e-5 1.381421e-4

6 1 828 2.289163e-4 3.770703e-4 2 842 2.120289e-5 3.948343e-5 3 840 6.387631e-6 1.129793e-5

7 1 845 4.714961e-5 7.620643e-5 2 844 6.788502e-6 1.184155e-5 3 843 2.413988e-6 3.835172e-6

Tabla 7.9 Error de aproximación cometido en función del tamaño de la memoria y del grado del polinomio.

Page 128: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.2 Aproximación de la función exponencial

92 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Utilizando las mismas condiciones de contorno, umbral de error y ancho de discretización y la función exponencial continua se obtuvo como resultado en el apartado 7.1 que era preciso iterar el método 841 veces para cumplir la exigencia impuesta por el umbral de error. En la tabla 7.9 y en la Figura 7.8 se puede experimentar que un aumento en el número de bits de direccionamiento equivale a un descenso en el número de iteraciones que precisa el método numérico. Llegado al umbral heredado por la solución con la exponencial continua, aunque el tamaño de la memoria se aumente, el número de iteraciones permanece en torno a 841. Sin embargo, sí que se consigue una mayor precisión, o lo que es lo mismo, menor error de aproximación, teniendo en cuenta que lleva implícito una mayor necesidad de recursos en términos de tamaño de memoria.

Figura 7.8 Aproximación polinómica óptima por tramos. Error relativo en función del tamaño de la memoria ROM.

Por otro lado, el grado del polinomio presenta un comportamiento similar al experimentado por el número de bits de direccionamiento, véase Figura 7.9. Reduce el número de iteraciones y el error conforme el grado del polinomio aumenta, sin embargo, aumentarlo implica mayor tamaño de la memoria y mayor gasto computacional a la hora de evaluarlo. Es por ello, por lo que para la elección eficiente de los parámetros relevantes de esta técnica hay que realizar un compromiso entre carga computacional y recursos necesarios y precisión.

1,00E-06

1,00E-05

1,00E-04

1,00E-03

1,00E-02

1,00E-01

1,00E+004 5 6 7

Erro

r rel

ativ

o

Número de bits de direccionamiento ROM

EVALUACIÓN DEL ERRORAproximación lineal por tramos

Grado 1Grado 2Grado 3

Page 129: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 93

Figura 7.9 Aproximación polinómica óptima por tramos. Error relativo en función del grado del polinomio.

7.3 Conclusiones

En los apartados anteriores se han presentado tres técnicas para aproximar el valor de la función exponencial. Se ha desarrollado una investigación sobre la carga computacional y consumo de recursos de cada técnica junto con un estudio acerca del error absoluto y relativo respecto al resultado obtenido sin aproximar dicha función. En este apartado se determinará la técnica que mejor conviene para el objeto del presente trabajo, de manera que, presente un buen compromiso entre carga computacional, recursos consumidos y precisión. Dicha técnica será programada posteriormente en System Generator for DSP para ser computada en una FPGA.

Así, en primer lugar, como primera premisa se exige que la técnica de aproximación presente una precisión aceptable. A continuación, se fija como baremo un error relativo menor de 10-4 y se comparan los requerimientos mínimos de cada una de las técnicas.

Por un lado, la técnica basada en la serie de Taylor precisaría utilizar un polinomio de grado 10, por lo que sería necesario 10 sumadores y 10 multiplicadores (véanse tablas 7.4 y 7.5). Esta técnica no presenta requerimientos acerca de memoria,

1,00E-06

1,00E-05

1,00E-04

1,00E-03

1,00E-02

1,00E-01

1,00E+001 2 3

Erro

r rel

ativ

o

Grado del polinomio

EVALUACIÓN DEL ERRORAproximación lineal por tramos

4 bits5 bits6 bits7 bits

Page 130: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.3 Conclusiones

94 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

pero teniendo en cuenta que los multiplicadores en punto flotante son uno de los bloques que mayor recursos consume en términos de área y mayor retardo introduce, es preciso minimizar su uso.

Por otro lado, la técnica basada en la aproximación lineal por tramos precisaría más de 12 bits de direccionamiento. Suponiendo el caso de 12 bits (véanse tablas 7.6 y

7.7), se precisaría de una memoria de 2 푝푎푙푎푏푟푎푠 · 4 푏푦푡푒푠 푝푎푙푎푏푟푎 = 32푘퐵푦푡푒푠.

Nótese que cuanto mayor es el tamaño de la memoria ROM, mayor es el consumo de recursos y mayor es el retardo. Además, hay que añadir que serían necesarios dos sumadores, dos multiplicadores y dos funciones lógicas AND adicionales.

EVALUACIÓN DE CARGA, CONSUMO DE RECURSOS Y ERROR Comparativa de técnicas

Serie de Taylor

(grado 10)

Aproximación lineal por tramos

(12 bits)

Aproximación polinómica por tramos

(6 bits, grado 2)

Sumadores 10 2 4

Multiplicadores 10 2 3

Funciones lógicas (AND)

0 2 1

Accesos a memoria

0 1 1

Tamaño de memoria

0 8k palabras 192 palabras

Error relativo 4.669533e-5 1.377982e-4 3.948343e-5

Tabla 7.10 Comparación de carga computacional, consumo de recursos y error entre las tres técnicas de aproximación de la función exponencial desarrolladas en este trabajo.

Page 131: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 7. Simulación numérica

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 95

Por último, en el caso de utilizar la técnica de aproximación polinómica óptima por tramos sería necesario utilizar 6 bits para el direccionamiento de la memoria ROM y un polinomio de grado 2 (tabla 7.8). Los requerimientos que exige dicha técnica pueden observarse en la tabla 7.9, destaca, una memoria de tamaño

3 · 2 푝푎푙푎푏푟푎푠 · 4 푏푦푡푒푠 푝푎푙푎푏푟푎 = 768퐵푦푡푒푠. Además de cuatro sumadores, tres

multiplicadores y una función lógica AND.

Véase la tabla 7.10 donde se recoge una comparación entre las tres técnicas, para el caso propuesto. Analizando esta comparación se puede concluir que la técnica más eficiente es la aproximación polinómica óptima por tramos, ya que ofrece el mejor compromiso entre consumo de recursos y precisión. Por un lado, no exige tantos multiplicadores y sumadores como la técnica serie de Taylor y, por otro lado, la exigencia de tamaño de memoria es también mucho más reducida que la técnica de aproximación lineal por tramos. Por ello, esta técnica será la elegida para ser implementada en lenguaje hardware y ser computada en una FPGA. Además como parámetros más significativos se implementará esta técnica para 6 bits de direccionamiento ROM y un polinomio de grado 2.

Por ultimo se presenta la salida simulada en MATLAB (Figura 7.10) tras iterar el método numérico aplicando la técnica de aproximación de la función exponencial denominada aproximación polinómica óptima por tramos, para un direccionamiento ROM de 6 bits y un polinomio de grado 2.

Figura 7.10 Resultado de la simulación numérica de la ecuación discreta de Poisson 1D tras aproximar la función exponencial mediante una aproximación polinómica por tramos, realizada con MATLAB.

Page 132: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

7.3 Conclusiones

96 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Finalmente, se ofrecen los valores de la tensión (en V) en los puntos en los que ha sido discretizado el canal del dispositivo DGSOI (de izquierda a derecha y de arriba abajo):

1 0,9816405 0,9632810 0,9449215 0,9265621 0,9082028 0,8898435 0,8714842 0,8531250 0,8347659 0,8164068 0,7980479 0,7796890 0,7613301 0,7429714 0,7246127 0,7062541 0,6878955 0,6695371 0,6511786 0,6328202 0,6144620 0,6009179 0,5902314 0,5814297 0,5739806 0,5675451 0,5619070 0,5569043 0,5524337 0,5484148 0,5447842 0,5414902 0,5384964 0,5357724 0,5332933 0,5310379 0,5289857 0,5271236 0,5254403 0,5239260 0,5225722 0,5213718 0,5203189 0,5194079 0,5186346 0,5179955 0,5174876 0,5171088 0,5168573 0,5167320 0,5167325 0,5168588 0,5171112 0,5174909 0,5179995 0,5186392 0,5194131 0,5203248 0,5213784 0,5225792 0,5239333 0,5254479 0,5271314 0,5289937 0,5310458 0,5333011 0,5357801 0,5385037 0,5414972 0,5447908 0,5484209 0,5524393 0,5569093 0,5619115 0,5675489 0,5739840 0,5814325 0,5902336 0,6009198 0,6144637 0,6328220 0,6511804 0,6695389 0,6878974 0,7062560 0,7246147 0,7429734 0,7613322 0,7796910 0,7980499 0,8164088 0,8347678 0,8531268 0,8714858 0,8898448 0,9082040 0,9265631 0,9449223 0,9632815 0,9816408 1

Page 133: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 97

Capítulo 8

Implementación y simulación del sistema digital

El presente capítulo tiene como objetivo implementar el coprocesador que resuelve la ecuación de Poisson 1D en un esquemático de Simulink, con el fin de generar el código en lenguaje descripción hardware de dicho esquemático. Para ello, se recoge toda la información generada en los capítulos anteriores y con ayuda del paquete de bloques (blockset) de System Generator for DSP de Xilinx y MATLAB, se procede al desarrollo del sistema en Simulink y la simulación funcional del mismo. Los bloques utilizados del Xilinx Blockset en el desarrollo de este capítulo son descritos en el apéndice B.

Para el diseño del coprocesador que implemente la resolución de la ecuación de Poisson 1D en un dispositivo DGSOI se propone modular el problema en cuatro subsistemas con funcionalidad independiente:

Circuito configuración de memoria RAM: subsistema que se encarga del control de la memoria RAM. Implica el desarrollo de un mecanismo para realizar coherentemente las operaciones de lectura y escritura.

Circuito zona de óxido: subsistema que implementa la computación que se precisa realizar para las muestras que pertenezcan a la zona de óxido.

Circuito zona de semiconductor: subsistema encargado de realizar el cálculo necesario para las muestras que corresponden a la zona de semiconductor. Incluye la implementación del algoritmo de aproximación de la función exponencial continua descrito en el apartado 6.2.

Page 134: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.1 Circuito configuración de memoria RAM

98 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Circuito de parada, inicio y fin: subsistema de control general que implementa la condición de parada para el método numérico, de manera que, si se cumple el umbral de error exigido, detenga la ejecución. También ofrece un mecanismo para iniciar la marcha y notificar la finalización de la ejecución orientado al papel que desempeña un nodo en una red de computación grid.

A continuación se describen paso a paso la construcción de cada uno de estos circuitos, su funcionalidad y se incluye la simulación digital de los mismos.

8.1 Circuito configuración de memoria RAM

En la ecuación discreta de Poisson 1D (ecuación 3.18) desarrollada en el capítulo 3, cada muestra depende de la anterior y de la posterior. Es por ello, por lo que en primera instancia, se desarrolla un circuito de ejemplo que sincroniza una operación simple en las que se encuentran involucradas una muestra dada, la inmediata anterior y la inmediata posterior. Finalmente, el resultado es almacenado antes de pasar a la computación de la siguiente muestra. Este ejemplo refleja la configuración utilizada para obtener las muestras de la memoria RAM, así como, para almacenarlas; este mecanismo será el utilizado en el sistema final.

Como ejemplo se procede a realizar diez iteraciones de la siguiente función 푓(푖) siendo 푓(0) la condición inicial:

푓(푖) = 푓(푖) · 푓(푖 + 1) + 푓(푖 − 1)

푓(0) = 0

Ecuación 8.1 Función ejemplo para la configuración de la memoria RAM.

donde 푖 es la dirección de memoria y 푓(푖) es el valor del dato almacenado en dicha dirección.

Cabe destacar en este punto que, como posteriormente se estudiará, el sistema global desarrollado consume 25 ciclos de reloj por muestra, es decir, se precisa éste número de períodos de reloj desde que se decide realizar el cálculo de una muestra determinada hasta que el resultado de esa muestra se sobreescribe en su posición correspondiente en la memoria RAM. De esta manera, aunque la computación de este ejemplo no precise de tal cantidad de ciclos de reloj para obtener su cometido, se

Page 135: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 99

simulará que así lo es mediante un retardo para que el circuito de configuración de la memoria RAM sea el mismo que el implementado en el sistema final. Esto quiere decir, que el contador que recorre las posiciones de memoria RAM tendrá una frecuencia de muestreo de 25 ciclos de reloj, de tal forma que se permita acceder al valor de la muestra en una posición determinada, realizar el cómputo necesario para dicha muestra y escribir el resultado en la misma posición dada.

Centrando el objetivo en la resolución de la ecuación 8.1, se observa que el cómputo de una muestra determinada 푓(푖), precisa, además de su propio valor; del valor de la muestra anterior 푓(푖 − 1) y del valor de la muestra posterior 푓(푖 + 1). La muestra anterior es conseguida mediante el bloqueo con un biestable tipo D y retardo del resultado de la muestra anterior calculada, por lo que es evidente que dicho valor no es necesario extraer de la RAM. Sin embargo, nótese que el único modo de obtener el valor de la muestra actual y futura es a través de la memoria RAM mediante sendas operaciones de lectura.

El objetivo es obtener en primer lugar, por un lado, el valor de una muestra determinada 푓(푖) y posteriormente por otro, la muestra siguiente 푓(푖 + 1). Para el cambio de dirección de memoria 푖 → 푖 + 1 se implementa un circuito gobernado por un multiplexor, tal que así:

Figura 8.1 Mecanismo para cambiar la dirección de memoria y poder obtener durante el cálculo de la muestra 풇(풊), la muestra siguiente 풇(풊+ ퟏ).

Page 136: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.1 Circuito configuración de memoria RAM

100 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Nótese que en la Figura 8.1 existen cuatro puertos de entrada sin conectar: el puerto de selección de puerto de entrada del multiplexor (select input), el puerto de datos de la RAM (data), el puerto de habilitar escritura en la RAM (write enable) y el puerto de habilitar la RAM (RAM enable). De esta manera, el proceso consiste en diseñar las señales de control (select input, write enable y RAM enable) para que realicen de forma sincronizada, un acceso a la muestra inicial, un acceso a la muestra siguiente y la escritura del resultado de la muestra inicial. Considerando que se precisan 25 ciclos de reloj para llevar a cabo el cómputo de una muestra, se propone el siguiente diseño para las señales de control:

Figura 8.2 Señales de control que permiten acceder a la muestra actual 풇(풊) a la muestra siguiente 풇(풊+ ퟏ) y realizar la escritura del resultado de la muestra actual en la misma posición de memoria.

El proceso propuesto para la operación de la memoria RAM es:

a. Ciclo 0 → 1: Operación de lectura de la muestra 푓(푖). b. Ciclo 1 → 2: Operación de lectura de la muestra 푓(푖 + 1). c. Ciclos 2 → 22: La memoria queda deshabilitada durante los ciclos en los que

se realiza el cómputo de la muestra 푓(푖). d. Ciclo 22 → 23: Operación de escritura del resultado de la muestra 푓(푖).

Page 137: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 101

e. Ciclo 23 → 24: Ciclo que precisa la memoria RAM para llevar a cabo la operación de escritura con éxito.

f. Ciclo 24 → 25: Ciclo de guarda.

Nótese que la señal que controla el multiplexor (select input) y la que habilita/deshabilita la escritura en la RAM (write enable) es la misma señal pero con diferente retardo.

En el puerto de salida de la memoria RAM obtenemos durante un ciclo de reloj la muestra 푓(푖) y en el período posterior la muestra 푓(푖 + 1). Por medio de biestables (flip flops) tipo D habilitados por señales de control (enable) se realiza la captación de la muestra deseada:

Figura 8.3 Captación de muestras mediante biestables D habilitados por señales de control.

Suponiendo que la memoria RAM está cargada inicialmente con los siguientes datos: 푓(푖) = 푖,∀푖, la salida experimentada en el puerto de salida de la memoria RAM para un total de 25 ciclos de reloj es:

Figura 8.4 Puerto de salida de la memoria RAM.

Teniendo en cuenta que la RAM presenta un retardo para el proceso de lectura y otro para el de escritura, resumimos el proceso llevado a cabo:

Page 138: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.1 Circuito configuración de memoria RAM

102 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

a. 1 → 2: Resultado de la operación de lectura de la muestra 푓(푖) = 푓(1) = 1. b. 2 → 3: Resultado de la operación de lectura de la muestra 푓(푖 + 1) = 푓(2) = 2. c. 3 → 22: Cómputo para la muestra 푓(1). La RAM aparece deshabilitada. d. 22 → 23: Se ordena la operación de escritura del resultado de la muestra 푓(1). e. 23 → 24: El valor que observamos durante este ciclo depende del modo de

escritura configurado. El método de escritura configurado en este caso es read before write, de ahí que el valor que se observa corresponde al valor de 푓(1) previo a la computación realizada.

g. 24 → 25: Ciclo de guarda.

La Figura 8.4 muestra la señal en el puerto de salida de RAM, a continuación se centra el objetivo en generar las señales de control que habilitan los biestables para que cada uno de ellos capte adecuadamente la señal deseada, tal que así

Figura 8.5 Señales de control para habilitar los biestables de forma que capten correspondientemente las muestras 풇(풊) y 풇(풊 + ퟏ).

Como puede observarse en la Figura 8.6, se han conseguido capturar coherentemente las dos muestras 푓(푖) y 푓(푖 + 1). El uso de biestables tipo D y señales de control (enable) es la metodología implementada para sincronizar los distintos bloques y construir el sistema global.

Nótese que las señales de control descritas en la Figura 8.5, vuelven a ser la misma versión pero con retardo diferente que la señal de control del multiplexor (select input) o la señal para habilitar/deshabilitar la escritura en la RAM (write enable) (Figura 8.2). El siguiente paso es construir una única señal de control a la que se aplicarán diferentes retardos según la necesidad de sincronismo de cada bloque. Para ello, se procede a crear una máquina de estados que genere cada 25 períodos de

Page 139: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 103

reloj las diferentes señales de control (obviando las señales que sean la misma versión que otra pero desfasada), estas señales pueden observarse en la Figura 8.7.

Figura 8.6 Salidas de los biestables D habilitados por señal de control. Se observa como se ha realizado la captación de las señales풇(풊) y 풇(풊+ ퟏ) correctamente.

Figura 8.7 Señales de control.

Para generar las señales observadas en la Figura 8.7, se ha implementado una máquina de estados finitos tipo Moore (ControlFSM), es decir, una máquina de estados donde la salida únicamente depende del estado en el que se encuentra, Figura 8.8. Se ha utilizado un bloque MCode junto con un contador limitado al número total de ciclos por muestra, es decir, la salida del contador se mantiene acotada entre 0 y 24. El código M de dicha máquina de estados finitos puede consultarse en el apéndice C, apartado C.1. Las salidas corresponden

Page 140: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.1 Circuito configuración de memoria RAM

104 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

respectivamente a la señal que habilita/deshabilita la memoria RAM (RAM enable) y a la señal de control general (general control).

Figura 8.8 Máquina de estados finitos Moore implementada para la generación de las señales de control.

Finalmente el subsistema creado en Simulink con la ayuda de System Generator para realizar el estudio de la configuración de la memoria RAM puede observarse en la Figura 8.9. La solución obtenida para la ecuación 8.1, al iterar 10 veces la ecuación es la siguiente:

푓(푖) = 푓(푖) · 푓(푖 + 1) + 푓(푖 − 1)

푉푎푙표푟푒푠푖푛푖푐푖푎푙푒푠푒푛푅퐴푀 → 푓(푖) = 푖∀푖

푓(1) = 푓(1) · 푓(2) + 푓(0) → 푓(1) = 1 · 2 + 0 = 2

푓(2) = 푓(2) · 푓(3) + 푓(1) → 푓(1) = 2 · 3 + 2 = 6

y así sucesivamente.

Page 141: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 105

Figura 8.9 Circuito configuración de mem

oria RAM

.

Page 142: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.1 Circuito configuración de memoria RAM

106 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

El resultado obtenido con el sistema diseñado tras simular durante 10 ciclos completos de operación (250 períodos de reloj) es el siguiente:

푓(푖) = {2, 8, 20, 40, 70, 112, 168, 240, 330, 440}

Figura 8.10 Resultado obtenido tras iterar la función 풇 durante 10 ciclos.

En conclusión, se ha desarrollado un pequeño ejemplo para mostrar la configuración llevada a cabo con la memoria RAM. A destacar el uso de señales de control sincronizadas para habilitar la memoria RAM cuando se pretenda realizar una operación de lectura o escritura, así como el uso de biestables D junto con el uso simultáneo de señales de control para captar una muestra en un período determinado.

Téngase en cuenta que las partes del circuito que no presentan datos útiles podrían ser desconectadas o deshabilitadas. Esto se refiere a que, por ejemplo, se podría incluir una señal para habilitar/deshabilitar el bloque multiplicador para reducir el consumo innecesario (véase Figura 8.9). Para ello se ha implementado un mecanismo de bloqueo de los datos de entrada, de manera que al no cambiar los estímulos de entrada no se generan transiciones en los nodos internos y por tanto se reduce el consumo. Se han introducido bloques de retardo tras los biestables D, con el objetivo de sincronizar las entradas a los elementos y, por tanto, bloquear los datos de entrada.

Page 143: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 107

8.2 Circuito zona de óxido

En este apartado se construye el circuito que realiza el cálculo en la zona del óxido. Por tanto, de acuerdo a las expresiones obtenidas en el capítulo 3, la expresión a resolver numéricamente es la siguiente:

푍표푛푎푑푒ó푥푖푑표 → 푉(푖) =푉(푖 + 1) + 푉(푖 − 1)

2

Ecuación 8.2 Expresión para el cómputo de una muestra perteneciente a la zona de óxido.

Se presentan dos principales problemas y son: el diseño de un mecanismo que determine según el índice de una muestra dada la zona a la que corresponde el cómputo, óxido o semiconductor; y el desarrollo de un mecanismo que al realizar el cálculo de la muestra de índice 푖 = 1, utilice la condición inicial de contorno 푉(푖 − 1) =푉 = 1; y, de forma similar, si se precisa realizar el cálculo de la muestra de índice 푖 = 100, utilice la condición final de contorno 푉(푖 + 1) = 푉 = 1. El diagrama de bloques en Simulink del subsistema propuesto puede observarse en la Figura 8.12.

Se ha implementado una máquina de estados finitos (ControlFSM2) que gobierna tres multiplexores (output, A y B) encargados de conmutar estas señales. En dicha máquina de estados, el contador principal (main counter) es conectado en el puerto de entrada y según el valor de dicho contador se emiten las señales de control correspondientes que controlan sendos multiplexores (Figura 8.13). En este caso, se ha optado por la implementación de una máquina de estados tipo Mealy, es decir, en este caso la salida no sólo depende del estado en el que se encuentra la máquina de estados, sino que también depende de la entrada (Figura 8.11) (Apéndice C.2).

Figura 8.11 Máquina de estados para tipo Mealy implementada para generar señales de control.

Page 144: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.2 Circuito zona de óxido

108 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 8.12 Circuito zona de óxido.

Page 145: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 109

Figura 8.13 Señales de control generadas por la máquina de estados finitos ControlFSM2.

Además, otros aspectos importantes a destacar en el diseño son:

1. Se implementa una memoria RAM de 102 posiciones, debido a que, el canal se discretiza en 100 puntos. Se precisa, por tanto, de 7 bits para el direccionamiento de la misma. Así, la primera y la última posición de memoria corresponden a las condiciones de contorno inicial y final, en este caso: 푉 = 푉 = 푉 = 1푉. El resto de puntos se inicializan en RAM con un

valor: 푉 2 = 0.5푉. 2. El contador principal (main counter) corresponderá a un contador limitado

con un rango de 0 a 99 con un período de muestreo de 25 ciclos de reloj, implementado con un número en punto fijo sin signo de 7 bits de ancho, para poder acceder todas las palabras de la memoria RAM.

3. Se utilizará la misma máquina de estados confeccionada en el apartado anterior para la generación de las señales de control (ControlFSM, apéndice C.1), por ello se precisará de un contador adicional (control counter) limitado con un rango de 0 a 24 con un período de muestreo de 1 ciclo de reloj.

Page 146: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.3 Circuito zona de semiconductor

110 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

4. Se utilizarán diversos bloques Delay para implementar retardo en las señales de control para sincronizar correspondientemente los diferentes bloques del sistema.

Finalmente, el subsistema es simulado un número ciclos suficiente para permitir el cómputo de los 100 puntos en los que el canal es discretizado. El resultado puede observarse en la Figura 8.14.

Figura 8.14 Primera iteración ejecutada del método iterativo que resuelve la ecuación de Poisson 1D. La salida es constante a un valor de 0.5 para las muestras pertenecientes a la zona de semiconductor.

8.3 Circuito zona de semiconductor

A continuación, se realiza la implementación del cálculo numérico de la ecuación correspondiente a las muestras que se encuentran en la zona de semiconductor. Recordamos la ecuación deducida en el capítulo 3:

푍표푛푎푑푒푠푒푚푖푐표푛푑푢푐푡표푟 → 푉(푖) =푉(푖 + 1) + 푉(푖 − 1)− ∆푥 푞

휀 휀 푁 + 푛 푒( )

2

Ecuación 8.3 Expresión para el cómputo de una muestra perteneciente a la zona de semiconductor.

donde el valor de la exponencial es aproximado por el método de aproximación polinómica óptima por tramos, con una memoria ROM de 26 palabras, es decir 6 bits para su direccionamiento y un polinomio de grado 2. Los coeficientes de los

Page 147: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 111

polinomios son calculados con la función mim (apéndice A.4.1) para cada tramo y son almacenados en bloques ROM que implementan memorias de solo lectura. El diseño realizado en Simulink puede observarse en la Figura 8.15.

El circuito puede dividirse en cuatro etapas principales: una primera etapa que se encarga de realizar una serie de cálculos previos; una segunda etapa cuya función es a partir de un valor de entrada en el rango [0.5, 1] devolver como salida la dirección de memoria ROM en el rango [0, 63]; una tercera etapa que se encarga de realizar la evaluación del polinomio en el punto correspondiente; y la cuarta, y última etapa, que se encarga de realizar una serie cálculos posteriores con los que se concluye el cálculo para una muestra dada.

Durante la primera etapa se realiza una serie de cálculos previos. Tal y como se explica en el apartado 7.2.2, durante el proceso de aproximación de la función exponencial cada muestra corresponde a un tramo. Y cada tramo corresponde a una dirección de memoria ROM de la que extraer los coeficientes del polinomio óptimo de dicho tramo. De esta manera, el cálculo de la dirección de memoria a la que acudir se implementa mediante un cambio a formato punto fijo. Se precisa, en primer lugar, realizar el siguiente cálculo: 푉 (푖) = ( ) + . Posteriormente, el polinomio debe ser

evaluado en el punto, 푝 = ( ).

Para ello en esta primera etapa se obtiene el producto 퐴 = 푉(푖) y, de esta

manera, calcular:

푉 (푖) = 퐴 +12 푝 = 퐴

2푉푉

Ecuación 8.4 Cálculos previos llevados a cabo al comienzo del circuito que realiza el cálculo de las muestras que pertenecen a la zona semiconductora.

siendo , y tres constantes. Como puede evidenciarse, se precisa para este

calculo previo de dos multiplicadores y un sumador.

Page 148: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.3 Circuito zona de semiconductor

112 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 8.15 Circuito zona de sem

iconductor.

Page 149: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 113

En segundo lugar, tras realizar los cálculos previos y, por tanto, obtenido el valor 푉 (푖) = ( ) + , se obtiene el valor de la dirección ROM a la que acudir mediante un

cambio de formato a punto fijo y mediante una operación lógica AND. Este proceso se ha implementado con dos bloques Reinterpret, un bloque Convert y un bloque Logical (apéndice B).

La tercera etapa consiste en el siguiente subsistema que se desglosa:

Figura 8.16 Subsistema construido en el circuito zona de semiconductor que, a partir de una dirección ROM, extrae los coeficientes del polinomio de Taylor y realiza la evaluación en el punto 풑 = 푽(풊)

푽푻.

Sean 푐 , 푐 y 푐 los coeficientes del polinomio óptimo del tramo dado por la dirección ROM. La aproximación de la función exponencial en el punto 푝 = ( ) se

obtiene:

푒( )

= 푐 + 푝 · 푐 + (푐 · 푝)

Ecuación 8.5 Aproximación de la función exponencial a partir de los coeficientes del polinomio de Taylor.

Page 150: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.3 Circuito zona de semiconductor

114 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

El subsistema presenta dos puertos de entrada y un puerto de salida. Como entrada: la dirección de memoria ROM de la que extraer los coeficientes del polinomio, y el punto en el que debe evaluarse. En el puerto de salida se ofrece la aproximación obtenida para la función exponencial multiplicado por una constante para obtener el valor:

푟ℎ푠 =∆푥 푞푛휀 휀 푒

( )

Ecuación 8.6 Valor obtenido de la tercera etapa del circuito zona de semiconductor.

Finalmente, en la cuarta y última etapa encontramos la operación:

푉(푖) =푉(푖 + 1) + 푉(푖 − 1) − ∆푥 푞푁

휀 휀 − 푟ℎ푠

2

Ecuación 8.7 Operación realizada en la cuarta etapa. Corresponde al cálculo de potencial de la muestra perteneciente a la zona semiconductora.

donde el valor ∆ se implementa mediante una constante.

En la Figura 8.17 se puede observar la salida experimentada tras simular el circuito que se acaba de describir:

Figura 8.17 Primera iteración ejecutada del método iterativo que resuelve la ecuación de Poisson 1D. La salida es constante a un valor de 0.5 para las muestras pertenecientes a la zona de óxido.

Page 151: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 115

8.4 Circuito de parada, inicio y fin

En los apartados anteriores se han implementado los circuitos para el tratamiento de la memoria RAM, el cómputo de una muestra perteneciente a la zona de óxido y el cómputo de una muestra perteneciente a la zona de semiconductor. Resta implementar un mecanismo para detener el método numérico al cumplirse un umbral de error determinado (véase apartado 3.4.1). En tal caso, el resultado alojado en la memoria RAM será la solución numérica de la tensión a lo largo del canal de un DGSOI que satisface dicho umbral. El objetivo de este trabajo es aplicar el sistema final desarrollado a un entorno de computación grid, por lo que, además se incluye un mecanismo de inicio y fin de la ejecución del sistema, de manera que, un bit inicia la ejecución y un bit es el encargado de notificar la detención del mismo al llegar a una solución.

En primer lugar, el umbral de parada se basa en el máximo error absoluto de los valores de las muestras de una misma iteración. Para ello se implementa un mecanismo mediante un bloque MCode. Se trata de un subsistema con tres puertos de entrada correspondientes a: un contador que permite localizar el índice de la muestra que se pretende evaluar, el valor constante del umbral de parada, y el valor del error absoluto de una muestra. De esta forma, la salida será cero hasta que se cumpla que todas las muestras de una misma iteración presenten un error absoluto menor o igual al umbral de error establecido. En tal caso la señal de salida corresponderá a un uno. El código en lenguaje M puede observarse en el apéndice C.3.

Si se recuerda, durante el proceso de descripción del circuito de configuración para la memoria RAM (apartado 8.1), se incluyó un ciclo de guarda tras la escritura del resultado del cálculo de una muestra determinada. Este ciclo de guarda permite al circuito de parada detener la ejecución justo en el ciclo en el que se termina la escritura y, por tanto, aún no se ha procedido al cálculo de una muestra posterior.

Finalmente, para implementar un sistema para iniciar y detener la ejecución se desarrolla una máquina de estados finitos tipo Mealy con dos entradas y una salida. Las entradas corresponden con el bit de inicio (start) y el bit de parada (stop). El bit de parada se conectará a la salida del bloque descrito anteriormente para el mecanismo de parada. Así, cuando la solución satisfaga un umbral de error determinado, la salida de dicho bloque hará que se detenga la ejecución.

Page 152: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.5 Coprocesador para la resolución de la ecuación de Poisson 1D

116 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

La salida de la máquina de estados (enable) corresponde a un bit que habilita/deshabilita los contadores para iniciar/detener el funcionamiento global del sistema. La máquina finita de estados construida puede analizarse en la Figura 8.18 y su implementación en lenguaje M en el apéndice C.4:

Figura 8.18 Máquina de estados finitos tipo Moore implementada para el circuito de inicio y fin.

8.5 Coprocesador para la resolución de la ecuación de Poisson 1D

A continuación, se construye el sistema completo a partir de los diversos subsistemas descritos en los apartados anteriores. De esta manera, se incluye en el mismo diseño el circuito de configuración de memoria RAM, junto con los circuitos que realizan el cómputo correspondiente al área de óxido y al área de semiconductor, el mecanismo para iniciar y detener la ejecución con un bit, así como el circuito que implementa la condición de parada. El diseño en Simulink completo puede estudiarse en la Figura 8.19.

Cabe destacar algunas consideraciones sobre el sistema final:

Se ha añadido una nueva variable de salida, la concentración de portadores minoritarios:

푛 =0푧표푛푎푑푒ó푥푖푑표

푛 푒( )푧표푛푎푑푒푠푒푚푖푐표푛푑푢푐푡표푟

Para ello, tras aproximar el valor de la exponencial 푒( )

, se multiplica dicho valor por la constante 푛 . Además se precisa de un nuevo multiplexor de salida gobernado de forma similar al multiplexor de salida para la tensión.

Page 153: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 117

Se ha implementado la técnica de bloqueo de entradas en todas las zonas del circuito, para reducir el consumo de potencia.

Los puertos de entrada y salida disponibles son: Puertos de entrada

Start: Bit para iniciar y mantener la ejecución. Memory Address: puerto de dirección de la memoria RAM. Si el

circuito no se encuentra en ejecución, permite acceder directamente y de forma simultánea al puerto de dirección de las memorias RAM que almacenan los valores de tensión y de concentración de portadores.

Puertos de salida Stop: Bit que permanece con el valor uno mientras el sistema se

encuentra en ejecución y genera el valor cero cuando la ejecución se detiene bien porque se ha alcanzado una solución, bien porque se ha detenido la ejecución manualmente (el bit start se ha puesto a cero). Téngase en cuenta que dicho bit es el bit para habilitar/deshabilitar los contadores del circuito. Por ello un valor nulo, indica que el circuito está detenido y viceversa.

RAM – V ouput / RAM – n output: puerto de salida de la memoria RAM. Permite acceder correspondientemente y de forma directa al puerto de salida de las memorias RAM que almacenan los valores de tensión y de concentración de portadores.

V / n: puerto de entrada de datos de la memoria RAM. Permite acceder correspondientemente y de forma directa al puerto de entrada de datos de las memorias RAM que almacenan los valores de tensión y de concentración de portadores. De esta forma, dichos puertos ofrecerán todas las muestras de salida a lo largo del proceso numérico.

Page 154: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.5 Coprocesador para la resolución de la ecuación de Poisson 1D

118 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 8.19 Coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SO

I.

Page 155: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 119

Para mostrar la ejecución del sistema se realizan varias simulaciones para distintos umbrales de error y así estudiar la evolución del método numérico.

Figura 8.20 Salida obtenida para un umbral de 10-2.

37500푐푖푐푙표푠25푐푖푐푙표푠/푚푢푒푠푡푟푎 ·

1100푚푢푒푠푡푟푎푠 = 15푖푡푒푟푎푐푖표푛푒푠푝푎푟푎푐푢푚푝푙푖푟푢푛푢푚푏푟푎푙푑푒10

Figura 8.21 Salida obtenida para un umbral de 10-4.

69000푐푖푐푙표푠25푐푖푐푙표푠/푚푢푒푠푡푟푎 ·

1100푚푢푒푠푡푟푎푠 = 276푖푡푒푟푎푐푖표푛푒푠푝푎푟푎푐푢푚푝푙푖푟푢푛푢푚푏푟푎푙푑푒10

Page 156: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.5 Coprocesador para la resolución de la ecuación de Poisson 1D

120 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Figura 8.22 Salida obtenida para un umbral de 10-6.

2095000푐푖푐푙표푠25푐푖푐푙표푠/푚푢푒푠푡푟푎 ·

1100푚푢푒푠푡푟푎푠 = 838푖푡푒푟푎푐푖표푛푒푠푝푎푟푎푐푢푚푝푙푖푟푢푛푢푚푏푟푎푙푑푒10

Los valores de la tensión (en V) en los puntos en los que hemos discretizado el canal del DGSOI (de izquierda a derecha y de arriba abajo) obtenidos mediante la simulación digital del circuito son:

1 0,9816404 0,9632808 0,9449213 0,9265618 0,9082024 0,8898430 0,8714837 0,8531244 0,8347652 0,8164061 0,7980471 0,7796881 0,7613292 0,7429703 0,7246116 0,7062529 0,6878943 0,6695358 0,6511774 0,6328191 0,6144607 0,6009164 0,5902297 0,5814279 0,5739785 0,5675426 0,5619040 0,5569008 0,5524297 0,5484102 0,5447791 0,5414845 0,5384901 0,5357656 0,5332860 0,5310299 0,5289772 0,5271145 0,5254307 0,5239160 0,5225619 0,5213612 0,5203078 0,5193965 0,5186231 0,5179839 0,5174758 0,5170969 0,5168453 0,5167201 0,5167205 0,5168468 0,5170993 0,5174792 0,5179881 0,5186281 0,5194024 0,5203143 0,5213683 0,5225694 0,5239240 0,5254391 0,5271231 0,5289857 0,5310385 0,5332944 0,5357739 0,5384980 0,5414920 0,5447862 0,5484167 0,5524356 0,5569061 0,5619087 0,5675466 0,5739820 0,5814309 0,5902323 0,6009184 0,6144625 0,6328209 0,6511794 0,6695379 0,6878965 0,7062551 0,7246138 0,7429726 0,7613314 0,7796903 0,7980492 0,8164082 0,8347672 0,8531262 0,8714853 0,8898444 0,9082036 0,9265628 0,9449221 0,9632814 0,9816407 1

Page 157: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 8. Implementación y simulación del sistema digital

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 121

8.6 Conclusiones

En el capítulo 7 se realizó un estudio sobre el error entre la solución obtenida utilizando la función exponencial continua y la solución obtenida con la función exponencial aproximada mediante la aproximación polinómica óptima utilizando un polinomio de grado 2 y 6 bits para el direccionamiento, es decir dividiendo el rango de la función exponencial en 26 puntos. A continuación, calculamos el error entre la solución obtenida con la función exponencial continua (Figura 7.10) y la solución obtenida en el circuito implementado en Simulink (Figura 8.22):

EVALUACIÓN DE ERROR Aproximación polinómica óptima por tramos

6 bits de direccionamiento – Polinomio de grado 2

Iteraciones Error absoluto Error relativo

Programa MATLAB (apéndice A.4)

842 2.120289e-5 3.948343e-5

Esquemático Simulink (Figura 8.19)

838 1.740105e-5 3.212245e-5

Tabla 8.1 Evaluación del error de aproximación introducido al adoptar la técnica de aproximación de la función exponencial, aproximación polinómica óptima por tramos. Se comparan los resultados obtenidos

mediante la simulación numérica en MATLAB y la simulación digital en Simulink.

El resultado obtenido tras simular el circuito en Simulink es similar a la simulación previa realizada en MATLAB, por lo que el error introducido por la aproximación de la función exponencial queda por debajo de 10-4 tal y como se comentó en el capítulo 7.

Destacan una serie de conclusiones del coprocesador construido en Simulink para la implementación de la resolución de la ecuación de Poisson 1D para un DGSOI:

1 Condiciones inicial y final: el sistema digital generado no presenta un acceso directo a las condiciones inicial y final para poder modificar su valor. Si se desea construir un coprocesador basado en diferentes condiciones inicial y final deben modificarse los bloques que implementan estas constantes en el circuito (initial condition – Vg1 y final condition – Vg2), así como las constantes que

Page 158: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

8.6 Conclusiones

122 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

implementan los valores siendo y (constant 3 y constant 4,

respectivamente), los valores cargados inicialmente en la RAM tal y como se explica en el apartado 8.2, y los coeficientes del polinomio óptimo alojados en las memorias ROM.

2 Umbral de error: para modificar el valor del umbral de error que gobierna el método numérico hay que variar el valor de la constante denominada threshold. Tampoco se ofrece una entrada de alto nivel para modificar este parámetro.

3 Discretización del canal: el canal se ha dividido en 102 puntos equiespaciados y la posibilidad de modificar este parámetro reside en modificar los límites de los contadores y las condiciones impuestas en las máquinas de estados finitos coherentemente. De igual manera, se podría cambiar la distribución de puntos pertenecientes a la zona de óxido o semiconductor.

4 Bloqueo de entradas: se proporciona un circuito de control sincronizado para implementar el bloqueo de entradas a lo largo de todas las etapas del circuito para reducir el consumo de potencia, ya que al no cambiar los estímulos de entrada, no se generan transiciones en los nodos internos y se reduce el consumo.

Page 159: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 123

Capítulo 9

Generación, síntesis HDL y estimación de consumo de recursos

Una vez creado el coprocesador en Simulink, se han realizado una serie de simulaciones para comprobar que el resultado es el esperado. El siguiente paso es realizar la generación del código en lenguaje de descripción hardware (HDL) con la ayuda de System Generator for DSP. Una vez obtenido el código HDL realizamos el proceso de síntesis mediante Xilinx ISE Design Suite con dos sintetizadores diferentes: XST y Precision. El objetivo es desarrollar un estudio sobre la estimación de recursos necesarios para diferentes FPGAs bajo testeo y para cada sintetizador.

9.1 Arquitectura de una FPGA

Las FPGA están conformadas por un conjunto de bloques lógicos configurables (CLBs, Configurable Logic Blocks) rodeados por un perímetro de bloques programabñes de entrada/salida (IOBs, programmable Inputo/Output Blocks). Estos elementos funcionales están interconectados por una jerarquía de canales de conexión, la que incluye una red de baja capacitancia para la distribución de señales de reloj de alta frecuencia. Adicionalmente una FPGA puede contar con bloques de memoria RAM, cuyos anchos de buses son configurables y con bloques de multiplicadores dedicados. Los elementos funcionales programables principales son los siguientes:

Page 160: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

9.1 Arquitectura de una FPGA

124 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Global buffer: por lo general las señales de E/S de la FPGA se suelen acondicionar mediante buffers. Dichos buffers se instancian en la descripción hardware del diseño a partir de unas primitivas definidas en las librerías proporcionadas por Xilinx. En este sistema digital se utiliza IBUFG que es un buffer destinado a la señal de reloj de entrada.

IOBs: controlan el flujo de datos entre los pines de entrada/salida y la lógica interna del dispositivo. Soportan flujo bidireccional más operación tri-estado y un conjunto de estándares de voltaje e impedancia controlados de manera digital.

CLBs: los bloques de lógica configurable son los recursos principales a partir de los cuales se implementa lógica secuencial o combinacional. Cada CLB contiene dos o cuatro (depende de la plataforma) slices.

Slices: existen dos tipos de slices: SLICEL y SLICEM. Ambos contienen dos o cuatro generadores de funciones o tablas de verdad (LUTs), 4 elementos de almacenamiento (latches o flip-flops), multiplexores dedicados y lógica de acarreo. Estos elementos son utilizados por los slices para implementar funciones lógicas, aritmética y memoria ROM. Los SLICESM, además, tienen dos funciones añadidas: almacenamiento de datos en memoria RAM distribuida y registros de desplazamiento.

LUTs: tablas de verdad o generadores de funciones basados en tecnología RAM. Dffs or latches: elementos de almacenamiento que pueden ser configurados como flip-flops tipo D, disparados por flanco, o latches, disparados por nivel.

Block RAM: proveen almacenamiento de datos en bloques. Block Multiplier: bloques de multiplicación que aceptan dos números

binarios en un formato determinado. Slices DSP48E: las aplicaciones de procesamiento de señal digital usan

muchos multiplicadores binarios y acumuladores que suelen ser lentos, consumir mucha potencia y mucho área cuando se implementan usando los recursos lógicos de la FPGA. Por ello, las FPGAs actuales cuentan con elementos de procesamiento de señal digtal que vienen a ser slices DSP dedicados, totalmente configurables y de bajo consumo que liberan recursos lógicos de las operaciones DSP y aumentar el rendimiento en la ejecución de las mismas. En este trabajo no se utilizarán.

Page 161: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Capítulo 9. Generación, síntesis HDL y estimación de consumo de recursos

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 125

9.2 Estimación de consumo de recursos

Se procede a la generación del código HDL a partir del esquemático que se muestra en la Figura 8.19. Con la ayuda de Xilinx ISE Design Suite se realiza la síntesis tanto con XST, como con Precision para estudiar la estimación de recursos que precisa el coprocesador desarrollado en este trabajo para las FPGAs más actuales del mercado.

9.2.1 Spartan 3 – XC3S50

ESTIMACIÓN DE RECURSOS CONSUMIDOS: Spartan 3 – xc3s50-5pq208

XST Precision

Used Available Utilization Used Available Utilization

BUFG 1 8 12.50 % 1 8 12.50 % IOBs 138 124 111.29 % 139 124 112.10 % Slices 339 768 44,14 % 204 768 26.56 % LUTs 517 1536 33.66 % 366 1536 23.83 % Dffs or latches 574 1536 37.37 % 408 1908 21.38 % Block RAMs - - - 0 4 0 % DSP48Es - - - 0 4 0 %

Tabla 9.1 Estimación de recursos para una Spartan 3 XC3S50.

9.2.2 Spartan 3 – XC3S1000

ESTIMACIÓN DE RECURSOS CONSUMIDOS: Spartan 3 – xc3s1000-4fg676

XST Precision

Used Available Utilization Used Available Utilization

BUFG 1 8 12.50 % 1 8 12.50 % IOBs 138 391 35.29 % 139 391 35.55 % Slices 339 7680 4.41 % 204 7680 2.66 % LUTs 517 15360 3.36 % 366 15360 2.38 % Dffs or latches 574 15360 3.74 % 408 16533 2.47 % Block RAMs - - - 0 24 0 % DSP48Es - - - 0 24 0 %

Tabla 9.2 Estimación de recursos para una Spartan 3 XC3S1000.

Page 162: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

9.2 Estimación de consumo de recursos

126 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

9.2.3 Virtex 4 – XC4VFX12

ESTIMACIÓN DE RECURSOS CONSUMIDOS: Virtex 4 – xc4vfx12-11sf363

XST Precision

Used Available Utilization Used Available Utilization

BUFG 1 32 3.13 % 1 32 3.13 % IOBs 138 240 57.5 % 139 240 57.92 % Slices 338 5472 6.18 % 204 5472 3.73 % LUTs 517 10944 4.72 % 350 10944 3.20 % Dffs or latches 574 10944 5.24 % 408 10944 3.73 % Block RAMs - - - 0 376 0 % DSP48Es - - - 0 160 0 %

Tabla 9.3 Estimación de recursos para una Virtex 4 XC4VFX12.

9.2.4 Virtex 4 – XC4VFX100

ESTIMACIÓN DE RECURSOS CONSUMIDOS: Virtex 4 – xc4vfx100-11ff1152

XST Precision

Used Available Utilization Used Available Utilization

BUFG 1 32 3.13 % 1 32 3.13 % IOBs 138 576 23.96 % 139 576 24.13 % Slices 338 42176 0.80 % 204 42176 0.48 % LUTs 517 84352 0.61 % 350 84352 0.41 % Dffs or latches 574 84352 0.68 % 408 84352 0.48 % Block RAMs - - - 0 376 0 % DSP48Es - - - 0 160 0 %

Tabla 9.4 Estimación de recursos para una Virtex 4 XC4VFX100.

Como se desprende de las tablas 7.1 a 7.4, tanto para a partir de la serie Spartan 3, como para a partir de la serie Virtex 4, el coprocesador podría ejecutarse en estas plataformas configurables. Aunque con la salvedad de que, tal y como puede verse en la tabla 7.1, se observa una insuficiencia de IOBs para la plataforma XC3S50, la versión menos potente de esta serie.

Page 163: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 127

Conclusiones

En este capítulo se presentan las diferentes aportaciones y conclusiones obtenidas de este trabajo así como las posibles futuras líneas de investigación que servirán como continuación del mismo.

Principales aportaciones

1. Se ha desarrollado un coprocesador para la resolución de la ecuación de Poisson 1D para un dispositivo de doble puerta en tecnología SOI. Entre las principales características que se encuentra la posibilidad de integrar dicho coprocesador en una red de computación grid.

2. Se han utilizado herramientas de alto nivel de abstracción para el diseño de sistemas de gran rendimiento para FPGAs. Han sido utilizadas las herramientas software más actuales del mercado, utilizando una metodología novedosa en el diseño de sistemas digitales mediante la generación automática de lenguaje de descripción hardware aportando numerosas ventajas al trabajo realizado. Entre otras, destaca la facilidad que ofrece el modelado RTL en términos de diseño abstracto con modelos de circuitos, la implementación de sistemas de calidad en una fracción de tiempo de desarrollo reducida y la posibilidad de verificar dichos diseños mediante simulaciones. También permite que nuevas especificaciones no propuestas en la descripción inicial del proyecto, como la posibilidad de modificar las condiciones inicial o final, o el número de puntos en los que se discretiza el canal del transistor puedan ser fácilmente acometidas.

3. Para la función exponencial continua se han propuesto tres alternativas para su aproximación, aportando para cada una de ellas un estudio sobre la carga computacional y consumo de recursos adicional que supone adoptarlas, así como un estudio sobre el error de aproximación de cada una. La técnica

Page 164: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Conclusiones

128 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

finalmente implementada ha sido la técnica de aproximación mediante un polinomio de Taylor y una división del rango de la función exponencial en puntos equidistantes, al presentar mejor compromiso entre cómputo y error.

4. La implementación del coprocesador como sistema digital mediante el diseño RTL que permite Simulink y System Generator se ha llevado a cabo de forma modular. Así, el sistema global se ha dividido en cuatro circuitos independientes, permitiendo realizar modificaciones en el diseño de forma simple, orientado para futuras investigaciones.

5. Para mejorar el consumo de recursos se ha realizado el diseño del sistema digital intentando minimizar el número de multiplicadores en punto flotante, los bloques más exigentes del coprocesador. Además se ha implementado la técnica de bloqueo de datos mediante flip-flops tipo D y señal de habilitación para mejorar el consumo de potencia.

6. Para comprobar la viabilidad del coprocesador desarrollado, se ha realizado una estimación de recursos en términos de recursos hardware que precisa el coprocesador y los recursos disponibles para las series Spartan 3 y Virtex 4. Se ha verificado que a partir de estas series la ejecución del coprocesador para el cálculo de la ecuación de Poisson 1D en punto flotante simple precisión es viable.

Líneas futuras

La realización de este trabajo no ha supuesto un proyecto cerrado, tras los resultados obtenidos se abre un abanico de posibles continuaciones de las líneas principales propuestas, tanto en la mejora del diseño del coprocesador como en el estudio de diferentes estructuras.

1. Comprobación de los resultados obtenidos en las simulaciones. Ejecución del coprocesador en una FPGA.

2. Desarrollo y estudio de un coprocesador para la resolución de la ecuación de Poisson 2D en estructuras SOI.

3. Desarrollo y estudio del coprocesador realizado en este trabajo aplicado a diferentes estructuras de dispositivos.

4. Estudio y aplicación de técnicas de optimización del código tales como la paralelización de código y procesamiento distribuido.

Page 165: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 129

Parte IV

APÉNDICES

Page 166: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

130 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 167: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 131

Apéndice A

Programación en MATLAB (I)

A.1 Simulación numérica de la ecuación discreta de Poisson 1D

clear all; close all; %% CONSTANTES ni = single(1.5*10^10); % cm^-3 E0 = single(8.854*10^(-14)); % F/cm Esi = single(11.8); K = single(8.62*10^(-5)); % eV/K q = single(1.6*10^(-19)); % C T = single(300); % K Vt = K*T; % V IVt = 1/Vt; % V^(-1) %% CONSTANTES DE ENTRADA Na = single(10^18); % cm^-3 Vg1 = single(1); % V Vg2 = Vg1; % V Vg = Vg1; % V x = single(10^-6); % cm points = single(100); % puntos Ox_points = single(20); % puntos Ax = x/points; % cm/punto limit = single(1000000); umbral = single(10^(-6)); %% INICIALIZACIÓN DE VARIABLES count = single(0); V = [Vg1 0.5*ones(1,points) Vg2]; V_old = [Vg1 1:points Vg2]; rhs = [1:points];

Page 168: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

132 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

%% BUCLE PRINCIPAL DEL PROGRAMA while (max(abs(V_old-V))>umbral) && (count<limit) V_old = V; for i=2:(points+1) % ÓXIDO if i<=(Ox_points+1) || i>(points-Ox_points+1) rhsI = single(0); rhs(i-1) = single(0); % SEMICONDUCTOR else rhsI = ((Ax^2)*q*Na)/(E0*Esi); rhs(i-1) = ((Ax^2*q*ni)/(E0*Esi))*exp(V(i)/Vt); end V(i) = (V(i+1)+V(i-1)-rhsI-rhs(i-1))*0.5; end count=count+1; end count subplot(1,2,1); stairs(0:101,V); title('Tensión (V) [V]');xlabel('Punto');ylabel('Tensión (V)'); subplot(1,2,2); stairs(0:99,((E0*Esi)/(Ax^2*q))*rhs); title('Concentración de electrones (n=ni·e^V^/^V^T) [cm^-^3]');xlabel('Punto');ylabel('Concentración (cm^-^3)');

A.2 Serie de Taylor

clear all; close all; %% CONSTANTES ni = single(1.5*10^10); % cm^-3 E0 = single(8.854*10^(-14)); % F/cm Esi = single(11.8); K = single(8.62*10^(-5)); % eV/K q = single(1.6*10^(-19)); % C T = single(300); % K Vt = K*T; % V IVt = 1/Vt; % V^(-1) %% CONSTANTES DE ENTRADA Na = single(10^18); % cm^-3 Vg1 = single(1); % V Vg2 = Vg1; % V Vg = Vg1; % V x = single(10^-6); % cm points = single(100); % puntos Ox_points = single(20); % puntos

Page 169: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 133

Ax = x/points; % cm/punto limit = single(1000000); umbral = single(10^(-6)); grado = 5; % Grado del polinomio de Taylor a=(Vg/(2*Vt)); % Punto central del rango de V(i) %% INICIALIZACIÓN DE VARIABLES count = single(0); V = [Vg1 0.5*ones(1,points) Vg2]; V_old = [Vg1 1:points Vg2]; rhs = [1:points]; %% BUCLE PRINCIPAL DEL PROGRAMA while (max(abs(V_old-V))>umbral) && (count<limit) V_old = V; for i=2:(points+1) % ÓXIDO if i<=(Ox_points+1) || i>(points-Ox_points+1) rhsI = single(0); rhs(i-1) = 0; % SEMICONDUCTOR else rhsI = ((Ax^2)*q*Na)/(E0*Esi); rhs(i-1) = ((Ax^2*q*ni)/(E0*Esi))*exp(a)*sum((((V(i)/Vt)-a).^(0:grado))./(factorial(0:grado))); end V(i) = (V(i+1)+V(i-1)-rhsI-rhs(i-1))*0.5; end count=count+1; end count subplot(1,2,1); stairs(0:101,V); title('Tensión (V) [V]');xlabel('Punto');ylabel('Tensión (V)'); subplot(1,2,2); stairs (0:99,((E0*Esi)/(Ax^2*q))*rhs); title('Concentración de electrones (n=ni·e^V^/^V^T) [cm^-^3]');xlabel('Punto');ylabel('Concentración (cm^-^3)');

A.3 Aproximación lineal por tramos

clear all; close all; %% CONSTANTES ni = single(1.5*10^10); % cm^-3 E0 = single(8.854*10^(-14)); % F/cm Esi = single(11.8);

Page 170: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

134 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

K = single(8.62*10^(-5)); % eV/K q = single(1.6*10^(-19)); % C T = single(300); % K Vt = K*T; % V IVt = 1/Vt; % V^(-1) %% CONSTANTES DE ENTRADA Na = single(10^18); % cm^-3 Vg1 = single(1); % V Vg2 = Vg1; % V Vg = Vg1; % V x = single(10^-6); % cm points = single(100); % puntos Ox_points = single(20); % puntos Ax = x/points; % cm/punto limit = single(1000000); umbral = single(10^(-6)); %% MEMORIA % Memoria de 2^(bdir) posiciones, por tanto, cuenta con bdir bits de % direccionamiento. % Contamos con 23-(bdir) bits para realizar la aproximación lineal con la % pendiente. bdir = single(6); % bits de direccionamiento baprox = single(23)-bdir; % bits de aproximación msize = 2^bdir; % tamaño de la memoria dmax = msize-1; % dirección máxima % La memoria se crea de manera dinámica en función de Vt y Vg a = [0:(Vg/(Vt*dmax)):Vg/Vt]; b = ((Ax^2*q*ni)/(E0*Esi))*exp(a); % Vector con los valores de la exponencial for i = 1:(msize-1) c(i)=(b(i+1)-b(i)); % Vector con los valores de la pendiente end %% INICIALIZACIÓN DE VARIABLES count = single(0); V = [Vg1 0.5*ones(1,points) Vg2]; V_old = [Vg1 1:points Vg2]; rhs = [1:points]; %% BUCLE PRINCIPAL DEL PROGRAMA switch bdir % 4 bits de direccionamiento y 19 para la aproximación: case 4 j = 7864320; % (0x11110000000000000000000) k = 524287; % (0x00001111111111111111111) % 5 bits de direccionamiento y 18 para la aproximación: case 5 j = 8126464; % (0x11111000000000000000000) k = 262143; % (0x00000111111111111111111)

Page 171: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 135

% 6 bits de direccionamiento y 17 para la aproximación: case 6 j = 8257536; % (0x11111100000000000000000) k = 131071; % (0x00000011111111111111111)

% 7 bits de direccionamiento y 16 para la aproximación: case 7 j = 8323072; % (0x11111110000000000000000) k = 65535; % (0x00000001111111111111111) % 8 bits de direccionamiento y 15 para la aproximación: case 8 j = 8355840; % (0x11111111000000000000000) k = 32767; % (0x00000000111111111111111)

% 9 bits de direccionamiento y 14 para la aproximación: case 9 j = 8372224; % (0x11111111100000000000000) k = 16383; % (0x00000000011111111111111)

% 10 bits de direccionamiento y 13 para la aproximación: case 10 j = 8380416; % (0x11111111110000000000000) k = 8191; % (0x00000000001111111111111)

% 11 bits de direccionamiento y 12 para la aproximación: case 11 j = 8384512; % (0x11111111111000000000000) k = 4095; % (0x00000000000111111111111)

otherwise disp('Error: bdir debe estar comprendida entre 4 y 11'); return; end while (max(abs(V_old-V))>umbral) && (count<limit) V_old = V; for i=2:(points+1) % ÓXIDO if i<=(Ox_points+1) || i>(points-Ox_points+1) rhsI = single(0); rhs(i-1) = 0; % SEMICONDUCTOR else rhsI = ((Ax^2)*q*Na)/(E0*Esi); punto = (0.5*(V(i)/Vg))+0.5; aux = bitand(uint32(j),uint32(punto*2^24)); direccion = (single(aux)*2^(-baprox)); aux2 = bitand(uint32(k),uint32(punto*2^24)); aproximacion = (single(aux2)*2^(-baprox)); if (direccion == msize) rhs(i-1) = b(direccion); else rhs(i-1) = b(direccion)+aproximacion*c(direccion); end end V(i) = (V(i+1)+V(i-1)-rhsI-rhs(i-1))*0.5; end count=count+1; end

Page 172: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

136 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

count subplot(1,2,1); stairs(0:101,V); title('Tensión (V) [V]');xlabel('Punto');ylabel('Tensión (V)'); subplot(1,2,2); stairs (0:99,((E0*Esi)/(Ax^2*q))*rhs); title('Concentración de electrones (n=ni·e^V^/^V^T) [cm^-^3]');xlabel('Punto');ylabel('Concentración (cm^-^3)');

A.4 Aproximación polinómica óptima por tramos

clear all; close all; %% CONSTANTES ni = single(1.5*10^10); % cm^-3 E0 = single(8.854*10^(-14)); % F/cm Esi = single(11.8); K = single(8.62*10^(-5)); % eV/K q = single(1.6*10^(-19)); % C T = single(300); % K Vt = K*T; % V IVt = 1/Vt; % V^(-1) %% CONSTANTES DE ENTRADA Na = single(10^18); % cm^-3 Vg1 = single(1); % V Vg2 = Vg1; % V Vg = Vg1; % V x = single(10^-6); % cm points = single(100); % puntos Ox_points = single(20); % puntos Ax = x/points; % cm/punto limit = single(1000000); umbral = single(10^(-6)); orden = single(2); % Orden del polinomio %% MEMORIA % Memoria de 2^(bdir) posiciones, por tanto, cuenta con (bdir) bits de % direccionamiento. bdir = single(6); % bits de direccionamiento msize = 2^bdir; % tamaño de la memoria dmax = msize-1; % dirección máxima % La memoria se crea de manera dinámica en función de Vt y Vg a = [0:(Vg/(Vt*dmax)):Vg/Vt]; b = [];

Page 173: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 137

for k=1:dmax b=[b; single(mim(@exp,[a(k),a(k+1)],orden))]; % Coeficientes del polinomio óptimo de cada tramo end b=[b; b(dmax,:)]; %% INICIALIZACIÓN count = single(0); V = [Vg1 0.5*ones(1,points) Vg2]; V_old = [Vg1 1:points Vg2]; rhs = [1:points]; %% BUCLE PRINCIPAL DEL PROGRAMA switch bdir % 4 bits de direccionamiento: case 4 j = 7864320; % (0x11110000000000000000000) % 5 bits de direccionamiento: case 5 j = 8126464; % (0x11111000000000000000000) % 6 bits de direccionamiento: case 6 j = 8257536; % (0x11111100000000000000000) % 7 bits de direccionamiento: case 7 j = 8323072; % (0x11111110000000000000000) % 8 bits de direccionamiento: case 8 j = 8355840; % (0x11111111000000000000000) % 9 bits de direccionamiento: case 9 j = 8372224; % (0x11111111100000000000000) otherwise disp('Error: bdir debe estar comprendida entre 4 y 9'); return; end while (max(abs(V_old-V))>umbral) && (count<limit) V_old = V; for i=2:(points+1) % ÓXIDO if i<=(Ox_points+1) || i>(points-Ox_points+1) rhsI = single(0); rhs(i-1) = single(0); % SEMICONDUCTOR else rhsI = ((Ax^2)*q*Na)/(E0*Esi);

Page 174: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

138 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

punto = (0.5*(V(i)/Vg))+0.5; aux = bitand(uint32(j),uint32(punto*2^24)); direccion = (single(aux)*2^(-23+bdir)); entrada = (V(i)/Vt); aproximacion = b(direccion, 1); for k=2:1:orden+1 aproximacion = aproximacion*entrada+b(direccion,k); end rhs(i-1) = ((Ax^2*q*ni)/(E0*Esi))*aproximacion; end V(i) = (V(i+1)+V(i-1)-rhsI-rhs(i-1))*0.5; end count=count+1; end count subplot(1,2,1); stairs(0:101,V); title('Tensión (V) [V]');xlabel('Punto');ylabel('Tensión (V)'); subplot(1,2,2); stairs (0:99,((E0*Esi)/(Ax^2*q))*rhs); title('Concentración de electrones (n=ni·e^V^/^V^T) [cm^-^3]');xlabel('Punto');ylabel('Concentración (cm^-^3)');

7.2.4 Función mim

function [p,err] = mim(fun,interv,deg) % MIM find optimal (minimax) polynomial approximation. % % [P,ERR] = MIM(FUN,INTERV,DEG) % Finds the best polynomial fit of FUN (use e.g. @log) % in the interval INTERV (e.g. [0.5 1]), polynomial degree DEG. % % for error function calculation % st1 = (interv(2)-interv(1))/(deg*1000); xi = [interv(1):st1:interv(2)]; % % create intermediate points % st2 = (interv(2)-interv(1))/(deg-1); x = [interv(1)+st2/2:st2:interv(2)]; % % you can try to modify step, nofiter & dfact % step = deg/20; nofiter = deg*15; dfact = .8+deg/100; for i = 1:nofiter % % fitting points: ends of interval fixed % xx = [interv(1) x interv(2)]; % % perform fit (lagrange) %

Page 175: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice A. Programación en MATLAB (I)

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 139

p = polyfit(xx,feval(fun,xx),deg); % error function ee = abs(feval(fun,xi)-polyval(p,xi)); % plot error function (not necessary if you % want to speed up) %clf %plot(xi,ee,'linewidth',2); %ylabel('Poly Error'), xlabel('Interval'), title('Interval endpoints fixed:') %pause(.2); for j = 1:length(x) % interval around fitting point [m,start] = min(abs(xi-xx(j))); [m,stop] = min(abs(xi-xx(j+2))); % find local error maximum [err,idx] = max(ee(start:stop)); % move to its direction x(j) = x(j)+step*(xi(idx+start-1)-x(j)); end; step = step*dfact; end; % % perform final error analysis % xx = [interv(1) x interv(2)]; p = polyfit(xx,feval(fun,xx),deg); ee = abs(feval(fun,xi)-polyval(p,xi)); % % error of final approximation % err = max(ee);

Page 176: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

140 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 177: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 141

Apéndice B

Xilinx Blockset

En este apéndice se recogen los bloques utilizados durante el desarrollo del sistema digital en Simulink. Estos bloques forman parte del Xilinx Blockset que proporciona System Generator for DSP. Para cada bloque se proporciona una descripción detallada de su implementación y de sus principales parámetros de configuración.

B.1 Addsub

El bloque Xilinx AddSub implementa un sumador/restador. La operación puede ser fija (suma o resta) o cambiar dinámicamente mediante una señal de control. Los principales parámetros de este bloque son:

Operation: especifica la operación que implementa el bloque. Puede ser: suma, resta o suma/resta. Si se elige la opción suma/resta, el bloque precisa de una señal de entrada adicional de tipo booleano para indicar el tipo de operación (0 suma, 1 resta).

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide carry-in port: si se selecciona, permite el acceso a un puerto de entrada de acarreo.

Page 178: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

142 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Provide carry-out port: permite disponer de un puerto de salida para el acarreo.

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Precision: este parámetro permite especificar la precisión de salida. Puede ser precisión completa (full) o una precisión determinada (user defined):

Full: el bloque utiliza la precisión suficiente para representar el resultado sin error.

User defined: si no se precisa de precisión completa, esta opción permite especificar un número determinado de bits:

Fixed-point output type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario.

Quantization: permite elegir el método de aproximación: truncamiento (truncate) o redondeo (round).

Overflow: permite elegir el mecanismo de respuesta frente a un desbordamiento. De esta manera, se puede elegir entre: wrap, es decir, descartar los bits a la izquierda del bit más significativo; saturate, saturar a los valores máximo o mínimo que permite la representación numérica que se emplea; o flag as error, notificar el desbordamiento como un error en Simulink.

Use behavioral HDL (otherwise use core): el bloque es implementado mediante una descripción comportamental en HDL.

Implement using Fabric or DSP48: la lógica del núcleo puede ser implementada en Fabric o en un DSP48, si está disponible en la FPGA.

Page 179: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 143

B.2 Constant

El bloque Xilinx Constant genera una constante que puede ser un valor en punto fijo, punto flotante, un valor booleano o una instrucción DSP48. Para el sistema digital de este trabajo, se utiliza este bloque

únicamente para generar valores numéricos constantes o booleanos. Por ello este bloque es similar al bloque de Simulink Constant, salvo que puede ser conectado directamente a entradas de bloques Xilinx:

Constant value: especifica el valor de la constante. Si el tipo de dato constante es declarado como punto fijo o punto flotante y no puede ser expresado el valor numérico exacto, se redondea y satura según sea necesario.

Output type: especifica el tipo de dato de salida. Puede ser: booleano, punto fijo o punto flotante.

Fixed-point: si se elige que el dato de salida sea punto fijo, entonces hay que determinar:

Arithmetic type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario. Floating-point: si se elige que el dato de salida sea punto flotante, hay

que determinar: Floating-point precision: especificar la precisión del número

expresado en punto flotante. Elegir entre: precisión simple (single, 32 bits), precisión doble (double, 64 bits) y personalizada (custom, determinar el ancho del campo exponente, exponent width, y el ancho de la parte fraccional, fraction width).

Boolean.

Sample period: permite asociar un período de muestreo a la señal de salida, heredando este período los bloques posteriores con los que se comunica.

Page 180: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

144 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

B.3 Convert

El bloque Xilinx Convert convierte una muestra de entrada dada, a un número de un tipo aritmético determinado. Por ejemplo, un número se puede transformar en un valor con signo (complemento a dos) o sin signo.

Output type: especifica el tipo de dato de salida. Puede ser: booleano, punto fijo o punto flotante.

Fixed-point: si se elige que la salida sea punto fijo, determinar: Arithmetic type: especificar si el valor es con signo (signed, 2’s

comp) o sin signo (unsigned). Number of bits: especifica el número de bits en punto fijo. Binary point: especifica la posición del punto binario.

Floating-point: si se elige que la salida sea punto flotante, determinar: Floating-point precision: especificar la precisión del número

expresado en punto flotante. Elegir entre: precisión simple (single, 32 bits), precisión doble (double, 64 bits) y personalizada (custom, determinar el ancho del campo exponente, exponent width, y el ancho de la parte fraccional, fraction width).

Boolean. Boolean.

Quantization: permite elegir el método de aproximación: truncamiento (truncate) o redondeo (round).

Overflow: permite elegir el mecanismo de respuesta frente a un desbordamiento. De esta manera, se puede elegir entre: wrap, es decir, descartar los bits a la izquierda del bit más significativo; saturate, saturar a los valores máximo o mínimo que permite la representación numérica que se emplea; o flag as error, notificar el desbordamiento como un error en Simulink.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Page 181: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 145

B.4 Counter

El bloque Xilinx Counter implementa un contador de tipo limitado o free running, con cuenta ascendente, descendente o mixta. La salida del bloque Counter se expresa como un número en punto fijo, con signo o sin signo. Los contadores tipo free running son los menos costosos en

términos de hardware en una FPGA. Además se permite que el valor del contador pueda ser configurado a través de un puerto de entrada.

La salida de un contador tipo free running ascendente es calculada de la siguiente manera:

표푢푡(푛)퐼푛푖푡푖푎푙푉푎푙푢푒푖푓푛 = 0푑푖푛(푛 − 1)푖푓푙표푎푑(푛 − 1) = 1(표푢푡(푛 − 1) + 푆푡푒푝)푚표푑2 표푡ℎ푒푟푤푖푠푒

donde N denota el número de bits del contador. Si el contador free running es descendente, basta con remplazar la suma por una resta. Para el caso mixto, se determina en función del valor de un puerto de entrada adicional (1 descendente, 0 ascendente).

Un contador limitado es básicamente la combinación de un contador free running con un comparador. Cabe destacar que este tipo de contadores están limitados a 64 bits de precisión de salida. La salida para un contador limitado ascendente es la siguiente:

표푢푡(푛) =퐼푛푖푡푖푎푙푉푎푙푢푒푖푓푛 = 0표푟표푢푡(푛 − 1) = 퐶표푢푛푡퐿푖푚푖푡(표푢푡(푛 − 1) + 푆푡푒푝)푚표푑2 표푡ℎ푒푟푤푖푠푒

Counter type: especifica si el contador va a ser de tipo limitado o free running.

Count to value: determina el valor final del contador, es decir, el número en el cual el contador limitado se resetea. El valor Inf representa la mayor salida representable según la precisión especificada en términos de bits. No puede ser el mismo valor que initial value.

Count direction: permite determinar si el contador es ascendente, descendente o bien, se desea proporcionar un puerto de entrada adicional para elegir la dirección del contador.

Initial value: especifica el valor inicial del contador.

Page 182: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

146 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Step: especifica el valor de incremento o decremento.

Output type: especifica si el contador es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide synchronous reset port: permite un puerto de entrada opcional de reset (rst). Cuando la señal de reset se activa, el bloque vuelve a su estado inicial. La señal de reset tiene preferencia sobre la señal opcional para habilitar el bloque (enable).

Provide load port: permite proporcionar un puerto de entrada de carga, para el caso de que el contador opera como un contador tipo free running.

Explicit sample period: permite o bien asociar un período de muestreo a la señal de salida o bien heredarlo de algún puerto de entrada.

Use behavioral HDL (otherwise use core): el bloque es implementado mediante una descripción comportamental en HDL.

Implement using Fabric or DSP48: la lógica del núcleo puede ser implementada en Fabric o en un DSP48, si está disponible en la FPGA.

B.5 Delay

El bloque Xilinx Delay implementa un retardo fijo de L ciclos. El valor del retardo se representa en el bloque como z-L, que es la transformada Z de la función de transferencia del bloque. Cualquier muestra o dato proporcionado en el puerto de entrada del bloque, aparecerá en la

salida tras L ciclos. La velocidad y el tipo de datos de salida serán heredados de la entrada. Este bloque se usa principalmente para sincronizar los distintos retardos de las diferentes etapas de un sistema digital. El bloque Delay se diferencia del bloque

Page 183: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 147

Register en que dicho bloque permite una latencia de un ciclo y contiene un parámetro para el valor inicial. El bloque Delay permite una latencia determinada pero no un valor inicial determinado (el valor inicial es siempre cero).

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide synchronous reset port: permite un puerto de entrada opcional de reset (rst). Cuando la señal de reset se activa, el bloque vuelve a su estado inicial. La señal de reset tiene preferencia sobre la señal opcional para habilitar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Use behavioral HDL (otherwise use core): el bloque es implementado mediante una descripción comportamental en HDL.

B.6 Down Sample

El bloque Xilinx Down Sample permite reducir la frecuencia de muestreo de la señal que se conecta en su puerto de entrada. Dicha señal es muestreada a intervalos regulares, ya sea al inicio (primer valor) o al final (último valor) de un marco. El valor muestreado se

presenta en el puerto de salida y se mantiene su valor hasta que se obtenga el valor de la siguiente muestra.

Samplig rate (number of input samples per ouput sample): debe ser un entero mayor o igual a dos. Es la relación entre el período de muestreo de salida y el de entrada, y es básicamente el divisor de la frecuencia de muestreo.

Sample: el bloque Down Sample puede muestrear o bien el valor inicial (first value of frame) o el final (last value of frame). Este parámetro determinará cual de los dos valores es muestreado.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Page 184: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

148 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

B.7 Gateway In

El bloque Xilinx Gateway In implementa las entradas del sistema digital. Cada bloque define un puerto de entrada de alto nivel en el diseño HDL que genere System Generator.

Output type: especifica el tipo de dato de salida. Puede ser: booleano, punto fijo o punto flotante.

Fixed-point: si se elige que el dato de salida sea punto fijo, entonces hay que determinar:

Arithmetic type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario. Floating-point: si se elige que el dato de salida sea punto flotante, hay

que determinar: Floating-point precision: especificar la precisión del número

expresado en punto flotante. Elegir entre: precisión simple (single, 32 bits), precisión doble (double, 64 bits) y personalizada (custom, determinar el ancho del campo exponente, exponent width, y el ancho de la parte fraccional, fraction width).

Boolean.

Quantization: permite elegir el método de aproximación: truncamiento (truncate) o redondeo (round).

Overflow: permite elegir el mecanismo de respuesta frente a un desbordamiento. De esta manera, se puede elegir entre: wrap, es decir, descartar los bits a la izquierda del bit más significativo; saturate, saturar a los valores máximo o mínimo que permite la representación numérica que se emplea; o flag as error, notificar el desbordamiento como un error en Simulink.

Page 185: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 149

Sample period: permite asociar un período de muestreo a la señal de salida, heredando este período los bloques posteriores con los que se comunica.

B.8 Gateway Out

El bloque Xilinx Gateway Out implementa las entradas del sistema digital. De acuerdo con su configuración, el bloque Gateway Out puede ser o bien un puerto de salida de alto nivel en el diseño HDL que

genere System Generator o bien ser usado simplemente como punto de testeo en Simulink y, por tanto, será obviado durante el proceso de generación de código HDL.

Output type: especifica el tipo de dato de salida. Puede ser: booleano, punto fijo o punto flotante.

Propagate data type to output: si se elige, el dato de salida conserva el formato numérico. En caso contrario la salida será siempre en punto flotante doble precisión.

Translate into output port: permite determinar si el puerto de salida es de testeo, o es un puerto de alto nivel en el diseño HDL.

B.9 Logical

El bloque Xilinx Logical realiza operaciones lógicas bit a bit, para 2, 3 o 4 números en punto fijo. Los operandos pueden ser rellenados con ceros si es necesario para hacer coincidir el punto binario. En tal caso, se realiza la operación lógica y se entrega el resultado en el

puerto de salida.

Logical function: especifica una de las siguientes operaciones lógicas a nivel de bit: AND, NAND, OR, NOR, XOR o XNOR.

Number of inputs: determina el número de entradas (2 – 1024).

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Page 186: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

150 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Precision: este parámetro permite especificar la precisión de salida. Puede ser precisión completa (full) o una precisión determinada (user defined):

Full: el bloque utiliza la precisión suficiente para representar el resultado sin error.

User defined: si no se precisa de precisión completa, esta opción permite especificar un número determinado de bits:

Output type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario.

Align binary point: especifica que el bloque debe alinear los puntos binarios automáticamente. En caso de que no sea así, todas las entradas deben presentar la misma posición para el punto binario.

B.10 MCode

El bloque Xilinx MCode se utiliza para alojar una función implementada en MATLAB y ser ejecutada en Simulink. El principal parámetro del bloque es el que especifica el nombre de la función en lenguaje M. El bloque ejecuta el código para calcular las salidas durante la simulación. Este código se traduce directamente a

su equivalente en VHDL/Verilog cuando el lenguaje hardware es generado.

La interfaz del bloque en Simulink se deriva de la definición de la función en MATLAB. Así, cada parámetro de la función se traduce en un puerto de entrada, y cada valor que la función devuelva en un puerto de salida. Los nombres y el orden de los puertos corresponde al nombre y al orden de los parámetros y de los valores devueltos.

El bloque MCode soporta un subconjunto de lenguaje MATLAB que es muy útil para implementar funciones aritméticas, máquinas de estados finitos y lógica de control. System Generator for DSP proporciona una serie de ejemplos de código MATLAB para funciones digitales.

Page 187: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 151

B.11 Mult

El bloque Xilinx Mult implementa un multiplicador. Genera el producto de los datos que se alojan en sus dos puertos de entrada, ofreciendo el resultado en su puerto de salida.

Precision: este parámetro permite especificar la precisión de salida. Puede ser precisión completa (full) o una precisión determinada (user defined):

Full: el bloque utiliza la precisión suficiente para representar el resultado sin error.

User defined: si no se precisa de precisión completa, esta opción permite especificar un número determinado de bits:

Output type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario.

Quantization: permite elegir el método de aproximación: truncamiento (truncate) o redondeo (round).

Overflow: permite elegir el mecanismo de respuesta frente a un desbordamiento. De esta manera, se puede elegir entre: wrap, es decir, descartar los bits a la izquierda del bit más significativo; saturate, saturar a los valores máximo o mínimo que permite la representación numérica que se emplea; o flag as error, notificar el desbordamiento como un error en Simulink.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Use behavioral HDL (otherwise use core): el bloque es implementado mediante una descripción comportamental en HDL.

Page 188: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

152 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Core parametres: si no se utiliza una descripción comportamental en HDL, se pueden especificar los siguientes parámetros:

Optimize for: Permite elegir si se desea optimizar el diseño para velocidad (speed) o para área (área).

Use embedded multipliers: Este campo especifica que si es posible, se usen slice XtremeDSP (multiplicador embebido DSP48).

Test for optimum pipelining: Comprueba si la latencia del bloque es al menos igual a la longitud optima del pipeline. Los valores de latencia que pasan esta prueba implican que el núcleo producido estará optimizado para la velocidad.

B.12 Mux

El bloque Xilinx Mux implementa un multiplexor. El bloque presenta un puerto de entrada como selector (punto fijo sin signo) y un número configurable de buses de entrada de datos, de 2 a 32.

Number of inputs: determina el número de entradas que se desea, comprendido entre 2 y 32.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Precision: este parámetro permite especificar la precisión de salida. Puede ser precisión completa (full) o una precisión determinada (user defined):

Full: el bloque utiliza la precisión suficiente para representar el resultado sin error.

User defined: si no se precisa de precisión completa, esta opción permite especificar un número determinado de bits:

Page 189: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 153

Output type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario.

Quantization: permite elegir el método de aproximación: truncamiento (truncate) o redondeo (round).

Overflow: permite elegir el mecanismo de respuesta frente a un desbordamiento. De esta manera, se puede elegir entre: wrap, es decir, descartar los bits a la izquierda del bit más significativo; saturate, saturar a los valores máximo o mínimo que permite la representación numérica que se emplea; o flag as error, notificar el desbordamiento como un error en Simulink.

B.13 Pause Simulation

El bloque Xilinx Pause Simulation pausa la simulación cuando la entrada al bloque es distinta de cero. Este bloque acepta cualquier tipo de señal como entrada.

B.14 ROM

El bloque Xilinx ROM es una memoria de solo lectura de un único puerto. Los valores se almacenan por palabras y todas las palabras comparten el mismo tipo de aritmética, ancho y posición del punto binario. Cada palabra está asociada con una dirección. Cada

dirección puede ser cualquier número en punto fijo sin signo desde 0 hasta d-1, donde d es el número de palabras que puede alojar la ROM. El contenido inicial de la ROM se especifica en un parámetro del bloque. Éste tiene un puerto de entrada para la dirección de memoria y un puerto de salida para los datos. El puerto de dirección debe ser un entero en punto fijo sin signo. El bloque ofrece dos posibilidades para su implementación, usando bien memoria distribuida o bloques de memoria.

Depth: especifica el número de palabras almacenadas; debe ser un entero positivo.

Page 190: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

154 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Initial value vector: especifica el valor inicial alojado en la ROM. Cuando el vector es mayor que el número máximo de palabras almacenadas en la ROM, los últimos elementos se descartan. Cuando la capacidad de la ROM es mayor que la longitud del vector, a las palabras vacías se les asocia un cero. El vector de valores iniciales se satura o redondea de acuerdo con la precisión especificada para la ROM.

Memory type: determina la implementación del bloque: memoria distribuida (distributed memory) o bloques de memoria (block RAM).

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide reset port for output register: permite acceso al puerto de reset disponible en el registro de salida del bloque ROM.

Initial value for output register: especifica el valor inicial para el registro de salida. El valor inicial está saturado y redondeado de acuerdo con la precisión especificada para la ROM.

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

Output type: especifica el tipo de dato de salida. Puede ser: booleano, punto fijo o punto flotante.

Fixed-point: si se elige que el dato de salida sea punto fijo, entonces hay que determinar:

Arithmetic type: especificar si el valor es con signo (signed, 2’s comp) o sin signo (unsigned).

Number of bits: especifica el número de bits total del número en punto fijo.

Binary point: especifica la posición del punto binario. Floating-point: si se elige que el dato de salida sea punto flotante, hay

que determinar: Floating-point precision: especificar la precisión del número

expresado en punto flotante. Elegir entre: precisión simple (single, 32 bits), precisión doble (double, 64 bits) y personalizada (custom,

Page 191: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 155

determinar el ancho del campo exponente, exponent width, y el ancho de la parte fraccional, fraction width).

Boolean. Boolean.

B.15 Register

El bloque Xilinx Register modela un biestable (o flip flop) tipo D, presentando una latencia de un ciclo de reloj. El bloque ofrece un puerto de entrada para los datos y una entrada de reset opcional. El valor inicial a la salida es especificado mediante un parámetro. Los

datos que se recogen en el puerto de entrada aparecerán a la salida tras un ciclo de reloj. Este bloque se diferencia del bloque Delay porque proporciona un puerto opcional de reset y porque se puede especificar un valor inicial.

Initial value: especifica el valor inicial en el registro.

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide synchronous reset port: permite un puerto de entrada opcional de reset (rst). Cuando la señal de reset se activa, el bloque vuelve a su estado inicial. La señal de reset tiene preferencia sobre la señal opcional para habilitar el bloque (enable).

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

B.16 Reinterpret

El bloque Xilinx Reinterpret fuerza un nuevo tipo de salida sin tener en cuenta el valor numérico representado por la entrada. La representación binaria se mantiene inalterada, es por ello, por lo que

este bloque no consume recursos hardware. El número de bits a la salida será siempre el mismo número de bits de la entrada.

Page 192: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

156 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

El bloque permite que datos sin signo puedan ser interpretados como datos con signo, o, viceversa. También permite la reinterpretación de la escala de los datos, permitiendo cambiar de posición el punto binario en una palabra.

Force arithmetic type: permite forzar el tipo de aritmética de salida entre: sin signo (unsigned), con signo (signed) o punto flotante (floating-point)

Force binary point: da la opción de fijar el punto binario en una posición determinada. El valor debe ser un entero comprendido entre cero y el número de bits de la entrada.

B.17 Single Port RAM

El bloque Xilinx Single Port RAM implementa un memoria de acceso aleatorio con un puerto de salida y tres puertos de entrada para la dirección, los datos y la señal de control para habilitar la escritura. Los valores en la RAM son almacenados por palabras, y todas las

palabras tienen el mismo tipo de aritmética, ancho y posición del punto binario.

La RAM de un solo puerto puede ser implementada o bien por bloques de memoria o bien por recursos de memoria distribuida en la FPGA. Cada palabra de datos está asociada a una dirección determinada que no es más que un entero sin signo en el rango de 0 a d-1, donde d denota el número de palabras que puede almacenar la RAM. El contenido inicial de la RAM puede ser especificado en los parámetros del bloque.

La señal que habilita la escritura es un booleano, así, cuando el valor a la entrada de este puerto es un 1, el dato en el puerto de entrada es escrito en la dirección de memoria que se indica en el puerto de dirección. La salida durante una operación de escritura depende del modo de escritura elegido. Así, éste puede configurarse como: leer tras escribir (RAW, read after write), leer antes de escribir (RBW, read before write) o no realizar lectura durante la escritura (no read on write). Sin embargo, cuando la señal que habilita la escritura es un 0, o lo que es lo mismo, durante una operación de lectura en el puerto de salida aparece el valor correspondiente a la ubicación especificada por el puerto de dirección.

Depth: especifica el número de palabras almacenadas; debe ser un entero positivo.

Page 193: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 157

Initial value vector: especifica el valor inicial alojado en la RAM. Cuando el vector es mayor que el número máximo de palabras almacenadas en la RAM, los últimos elementos se descartan. Cuando la capacidad de la RAM es mayor que la longitud del vector, las palabras vacías son rellenadas con ceros. El vector de valores iniciales se satura o redondea de acuerdo con la precisión especificada para la RAM.

Write mode: especifica el comportamiento de la memoria durante el proceso de escritura. Este puede ser: leer tras escribir (RAW), leer antes de escribir (RBW) o no realizar lectura durante la escritura. RBW indica que el valor de la salida es el valor de la memoria antes de la operación de escritura. RAW, sin embargo, indica que el valor de la salida refleja el estado de la memoria tras la operación de escritura. Por último, puede configurarse que el valor de la salida se mantenga inalterado independientemente de los cambios en la dirección o el estado de la memoria.

Memory type: determina la implementación del bloque: memoria distribuida (distributed memory) o bloques de memoria (block RAM).

Optional ports: permite proporcionar puertos de entrada adicional para el control del bloque:

Provide enable port: permite un puerto de entrada opcional para activar el bloque (enable).

Provide reset port for output register: permite acceso al puerto de reset disponible en el registro de salida del bloque RAM.

Initial value for output register: especifica el valor inicial para el registro de salida. El valor inicial está saturado y redondeado de acuerdo con la precisión especificada para la RAM.

Latency: permite especificar la latencia, es decir, el número de ciclos de retardo.

B.18 System Generator

El bloque System Generator sirve como panel de control para controlar los parámetros del sistema y de la simulación. También se utiliza para generar el código o el netlist. Todos los modelos de Simulink deben de contener al menos un bloque System Generator, para especificar como

Page 194: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

158 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

debe generarse el código y como debe realizarse la simulación del mismo. Sus parámetros principales son:

Compilation: especifica el tipo de resultado de compilación que se produce cuando se invoca el generador de código (p.e., HDL netlist, bitstream, etc.).

Part: define la FPGA que se va a usar.

Synthesis tool: especifica la herramienta que se usa para sintetizar el diseño. Las posibilidades son Synplify y Synplify Pro de Synplicity y XST de Xilinx.

Hardware description language: especifica el lenguaje HDL a usar para la compilación del diseño. Las posiblidades son VHDL y Verilog.

Target directory: define donde System Generator debe escribir los resultados de compilación.

Project type: seleccionar el tipo de archivo de proyecto que se va a generar, ya sea Project Navigator o PlanAhead.

Synthesis strategy file: si se selecciona el tipo de archivo de proyecto PlanAhead, hay que elegir una estrategia de sintetización predefinida, como por ejemplo, AreaReduction o PowerOptimization.

Implementation strategy file: si se selecciona el tipo de archivo de proyecto PlanAhead, hay que elegir una estrategia de implementación predefinida, como por ejemplo, MapTiming o MapCoverArea.

Create testbench: permite crear un banco de pruebas o testbench HDL. De esta manera se puede simular el testbench en un simulador HDL y comparar dicha simulación con los resultados proporcionados por Simulink.

Create interface document: System Generator crea un documento HTM que describe cómo ha sido generado el netlist.

FPGA clock period (ns): define el período del reloj del sistema en nanosegundos.

Clock pin location: define la ubicación del pin del reloj hardware.

Multirate implementation: ofrece diferentes opciones para impulsar el diseño multifrecuencia.

Page 195: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 159

Simulink system period (sec): define el período en Simulink, en unidades de segundo. El período de Simulink debe ser el máximo común divisor de los periodos de muestreo que aparecen en el modelo. Estos periodos de muestreo se establecen de forma explícita en cada bloque o se heredan de acuerdo a las reglas de propagación de Simulink.

Block icon display: Especifica el tipo de información que se mostrará en cada bloque del modelo tras completar la compilación.

Page 196: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

160 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

Page 197: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 161

Apéndice C

Programación en MATLAB (II)

C.1 Máquina de estados finitos ControlFSM

% Máquina de estados finitos para generar las señales de control para la % configuración de la memoria RAM. % ENTRADAS % - ControlCounter: contador limitado de 0 a 24 y de frecuencia de % muestreo 1. % SALIDAS % - RamEnable: señal de control para habilitar la memoria RAM. % - GeneralControl: señal de control general. function [RamEnable, GeneralControl] = ControlFSM(ControlCounter) persistent state, state = xl_state(0, {xlUnsigned, 2, 0}); switch state case 0 if (ControlCounter == 22) state = 2; else state = 1; end GeneralControl = false; RamEnable = true; case 1 GeneralControl = true; RamEnable = true state = 2; case 2 if (ControlCounter == 21 || ControlCounter == 24) state = 0; end GeneralControl = false; RamEnable = false; otherwise state = 0; GeneralControl = false; RamEnable = false; end

Page 198: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice D. Simulaciones adicionales

162 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

C.2 Máquina de estados finitos ControlFSM2

% Máquina de estados finitos para generar señales de control. % ENTRADAS % - MainCounter: contador limitado de 0 a 99 y de frecuencia de % muestreo 25. % SALIDAS % - SelectMuxA: señal de control del multiplexor encargado de % determinar la condición inicial. % - SelectMuxAB: señal de control del multiplexor encargado de % determinar la condición final. % - SelectOutput: señal de control del multiplexor encargado de % identificar la zona a la que pertenece una muestra determinada. function [SelectMuxA,SelectMuxB,SelectOutput] = ControlFSM2(MainCounter) persistent state, state = xl_state(0, {xlUnsigned, 1, 0}); switch state case 0 if MainCounter == 99 SelectOutput = false; SelectMuxA = false; SelectMuxB = true; else if MainCounter == 0 SelectOutput = false; SelectMuxA = true; SelectMuxB = false; else if MainCounter == 20 state = 1; SelectOutput = true; SelectMuxA = false; SelectMuxB = false; else SelectOutput = false; SelectMuxA = false; SelectMuxB = false; end end end case 1 if MainCounter == 80 state = 0; SelectOutput = false; SelectMuxA = false; SelectMuxB = false; else SelectOutput = true; SelectMuxA = false; SelectMuxB = false; end otherwise state = 0; SelectOutput = false; SelectMuxA = false; SelectMuxB = false; end

Page 199: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice B. Xilinx Blockset

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 163

C.3 Máquina de estados finitos PauseFSM

% Máquina de estados para detener el método iterativo. % ENTRADAS % - counter: contador limitado de 1 a 2500 y de frecuencia de % muestreo 1. % - threshold: valor constante del umbral de error. % - error: error absoluto de una muestra determinada. % SALIDAS % - stop: 0 mientras counter no llegue a 2497 cumpliendose % la condición impuesta por el umbral. En caso contrario, 1. function stop = PauseFSM(error,threshold,counter) persistent state, state = xl_state(0, {xlUnsigned, 2, 0}); switch state case 0 if error<threshold && error>-threshold && counter == 1 state = 1; end stop = false; case 1 if error>threshold || error<-threshold state = 0; else if counter == 2497; state = 2; end end stop = false; case 2 stop = true; otherwise state = 0; stop = false; end

Page 200: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Apéndice D. Simulaciones adicionales

164 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

C.4 Máquina de estados finitos StartFSM

% Máquina de estados Mealy para iniciar/detener la ejecución % ENTRADAS % - start: bit que inicia la ejecución (stop debe estar a 0). % - stop: bit que detiene la ejecución (independientemente de start). % SALIDAS % - enable: 1 si el sistema está en ejecución, 0 si se encuentra % detenido. function enable = StartFSM(stop,start) persistent state, state = xl_state(0, {xlUnsigned, 1, 0}); switch state case 0 if (start == true && stop == false) state = 1; end enable = false; case 1 if (start == false || stop == true) state = 0; end enable = true; otherwise state = 0; enable = false;

Page 201: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 165

Bibliografía

[BGBG95] X. Baie, J.P. Colinge, V. Bayot, and E. Grivei. Quantum-wire effects in thin and narrow soi mosfets. In Proceedings of the IEEE International SOI Conference 1995, pages 66-67, Tucson, 1995.

[Bru95] M. Bruel. Silicon on insulator material technology. Elec. Lett., 31(14):1201-1202, July 1995.

[CC03] G.K. Celler and S. Cristoloveanu. Frontiers of silicon-on-insulator. J. Appl. Phys., 93(9):4955-4978, May 2003.

[Col04] J.P. Collinge. Silicon-On-Insulator Technology: Materials to VLSI. Kluwer Academic Press, Boston, 3rd edition, 2004.

[Gam03] F. Gámiz. Tecnología y dispositivos de silicio sobre aislante: presente y futuro. February 2003.

[GF01] F.J. Gámiz and M.V. Fischetti. Monte carlo simulation of double-gate silicon-on-insulator inversion layers: The role of volume inversion. J. Appl. Phys., 89(10):5478-5487, May 2001.

[GGR+08] F. Gámiz, A. Godoy, A. Roldán, C. Sampedro, J.A. Jiménez, J.B. Roldán, J.E. Carceller, F. Jiménez, P. Cartujo. Nuevas tecnologías en los dispositivos electrónicos. 2008.

[IDA78] K. Izumi, M. Doken, and H. Ariyoshi. C.M.O.S. devices fabricated on buried SiO2 layers formed by oxygen implantation into silicon. Electronics Letters, 14:593-+, August 1978.

[Imt06] G. Imthurn. The history of Silicon-on-Sapphire. 2006.

[ITR11] ITRS. International roadmap for the semiconductor industry, 2011.

Page 202: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Bibliografía

166 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI

[Jaj04] V. Jaju. Silicon-on-Insulator Technology. Spring 2004.

[Kah97] W. Kahan. IEEE Standard 754 for Binary Floating-Point Arithmetic. Lecture notes. October 1997.

[Kil76] J.S. Kilby. Invention of the integrated circuit. IEEE Trans. Elec. Dev., 23(7):648, 1976.

[Koo10] J. Koomey, S. Berard, M. Sanchez, H. Wong. Implications of Historical Trends in the Electrical Efficiency of Computing. Annals of the History of Computing, IEEE, 33(3):46-54, March 2010.

[Llo10] V. Llombart. Ampliación de estructura de computadores. 2010.

[LZ06] S. Luryi and A. Zaslavsky. Non-classic soi devices: Genuine or copyright from iii-vs? In Proceedings of EUROSOI 2006, Grenoble, 2006.

[Moo65] G. Moore. Cramming more components onto integrated circuits. Electronics, 38(8), April 1965.

[MTOB11] Z. Millán, L. de la Torre, L. Oliva, M.C. Berenguer. Simulación numérica. Ecuación de Poisson. August 2011.

[Nar03] F.B. Naranjo. Crecimiento, fabricación y caracterización de diodos electroluminiscentes basados en pozos cuánticos de InGaN. 2003

[Noy77] R.N. Noyce. Large-scale integration – What is yet to come. Science, 195:1102-1106, March 1977.

[NTH+94] Y. Nakajima, T. Takahashi, S. Horiguchi, K. Iwadate, H. Namatsu, K. Kurihara, and M. Tabe. Fabrication of a silicon quantum wire surrounded by silicon dioxide and its transport properties. App. Phys. Lett., 65(22):1102-1106, November 1994.

[Rav94] U. Ravaioli. Advanced theory of semiconductors and semiconductors devices numerical methods and simulation. Course notes, 1994.

[Ric10] S. Rico. Desarrollo de un coprocesador en punto fijo para la resolución de la ecuación de Poisson en estructuras SOI orientado a grid computing. Universidad de Granada. 2010.

Page 203: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

Bibliografía

Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI 167

[Sam06] C. Sampedro. Estudio, caracterización y simulación de transistores con modulación de la velocidad en silicio. November 2006.

[San07] H.Y. Sánchez. Clustering y grid computing. September 2007.

[Sel84] S. Selberherr. Analysis and Simulation of Semiconductor Devices. Springer-Verlag, Wien, 1984.

[SH84] T. Sekigawa and Y. Hayashi. Calculated threshold-voltage characteristics of an xmos transistor having an additional bottom gate. Solid-State Electronics, 27(8-9):827-828, 1984.

[Usu97] A.Usul, H. Sunakawa, A. Sakal, y A.A. Yamaguchi, Jpn. J. Appl. Phys. 36, L899. 1997.

[Web00] http://en.wikipedia.org/wiki/Silicon_on_insulator

[Web01] http://es.wikipedia.org/wiki/Field_Programmable_Gate_Array

[Web02] http://es.wikipedia.org/wiki/Utility_computing

Page 204: DESARROLLO DE UN COPROCESADOR EN PUNTO FLOTANTE PARA LA RESOLUCIÓN DE LA ECUACIÓN DE POISSON 1D EN ESTRUCTURAS SOI

168 Desarrollo de un coprocesador para la resolución de la ecuación de Poisson 1D en estructuras SOI