instituto tecnolÓgico y de estudios - … de energÍa para el protocolo gsm half-rate tesis...

117
Codiseño de Hardware y Software para Reducción del Consumo de Energía para el Protocolo GSM Half-Rate-Edición Única Title Codiseño de Hardware y Software para Reducción del Consumo de Energía para el Protocolo GSM Half-Rate-Edición Única Issue Date 2009-12-01 Publisher Instituto Tecnológico y de Estudios Superiores de Monterrey Item Type Tesis de maestría Downloaded 10/06/2018 04:58:27 Link to Item http://hdl.handle.net/11285/569821

Upload: nguyenquynh

Post on 26-Apr-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Codiseño de Hardware y Software paraReducción del Consumo de Energía para

el Protocolo GSM Half-Rate-Edición Única

Title Codiseño de Hardware y Software para Reducción del Consumode Energía para el Protocolo GSM Half-Rate-Edición Única

Issue Date 2009-12-01

Publisher Instituto Tecnológico y de Estudios Superiores de Monterrey

Item Type Tesis de maestría

Downloaded 10/06/2018 04:58:27

Link to Item http://hdl.handle.net/11285/569821

Page 2: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:
Page 3: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

I N S T I T U T O T E C N O L Ó G I C O Y D E E S T U D I O S

S U P E R I O R E S D E M O N T E R R E Y

C A M P U S M O N T E R R E Y PROGRAMA DE GRADUADOS DE LA DIVISION DE

TECNOLOGIAS DE INFORMACION Y ELECTRONICA

CODISEÑO DE HARDWARE Y SOFTWARE PARA REDUCCIÓN DEL

C O N S U M O DE ENERGÍA P A R A EL P R O T O C O L O G S M H A L F - R A T E

T E S I S

PRESENTADA COMO REQUISITO PARCIAL PARA OBTENER EL GRADO ACADÉMICO DE:

MAESTRO EN CIENCIAS EN INGENIERÍA ELECTRÓNICA CON ESPECIALIDAD EN SISTEMAS ELECTRÓNICOS.

MARCO ANTONIO Q U E Z A D A ROJAS

MONTERREY, N. L . D I C I E M B R E 2009

Page 4: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Instituto Tecnológico y de Estudios Superiores de Monterrey

Campus Monterrey

Programa de graduados de la División de Tecnologías de Información y Electrónica

Codiseño de hardware y software para reducción del consumo de energía para el protocolo GSM Half-Rate

TESIS

Presentada como requisito parcial para obtener el grado académico de

Maestro en Ciencias en ingeniería electrónica

con especialidad en Sistemas Electrónicos

Marco Antonio Quezada Rojas

Monterrey, N.L . Diciembre 2009

Page 5: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Instituto Tecnológico y de Estudios Superiores de Monterrey

División de Tecnologías de Información y Electrónica Programa de Graduados

Los Miembros del Comité de Tesis recomendamos que la presente tesis de Marco Antonio Quezada Rojas sea aceptada como requisito parcial para obtener el grado académico de Maestro en Ciencias en Ingeniería Electrónica con especialidad en Sistemas Electrónicos

Campus Monterrey

Comité de Tesis

Alfonso Ávila Ortega Ph.D. Asesor

José Ramón Rodríguez Cruz Ph.D. Sinodal

Luis R. Molina Hernández M.C, Sinodal

Joaquín Acevedo Mascarúa Ph.D. Director del Programa de Graduados en Tecnologías

de Información y Electrónica

Monterrey N - L . Diciembre de 2008

Page 6: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Codiseño de hardware y software para reducción del consumo de energía para el protocolo GSM Half-Rate

Por

Marco Antonio Quezada Rojas

TESIS

Presentada al Programa de Graduados de la División de Tecnologías de Información y Electrónica

como requisito parcial para obtener el grado académico de

Maestro en Ciencias en ingeniería electrónica

con especialidad en Sistemas Electrónicos

Instituto Tecnológico y de Estudios Superiores de Monterrey

Campus Monterrey

Monterrey, N .L . Diciembre 2009

Page 7: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

A Dios.

Porque siempre ha estado conmigo

A mi Familia

Por su amor y apoyo.

Page 8: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Agradecimientos

A mi Familia por su amor y apoyo durante toda mi vida.

A l Dr. Alfonso Ávila por su apoyo en el transcurso de la maestría y el desarrollo de esta tesis.

A l Dr. José Ramón Rodríguez, por sus acertadas observaciones y sus sugerencias en la redacción de este documento.

A l Dr. Luis Molina, por sus comentarios para ayudar a mejorar este trabajo.

A Solio Sarabia por su apoyo en los experimentos iniciales de esta tesis.

A mis compañeros y amigos por sus consejos y apoyo en los momentos duros durante toda la maestría.

. . . Y a todos aquellos que siempre han estado conmigo

Muchas Gracias

Marco Antonio Quezada Rojas.

Page 9: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Resumen

Dentro del ámbito de la telefonía celular la vida útil de la batería se ve disminuida

significativamente cuando esta se somete al proceso de recarga de una forma muy

frecuente. Ciertos usuarios realizan un intensivo uso del celular al efectuar demasiadas

llamadas durante la jornada o bien llamadas de un largo periodo de tiempo lo cual con lleva

a tener que recargar el teléfono diariamente e incluso con mayor frecuencia al día. En el

presente trabajo se pretende dar una solución a usuarios que utilicen equipos celulares GSM

y se encuentren en la situación anteriormente descrita. Utilizando la metodología de

Codiseño de Hardware y Software se pretende diseñar una arquitectura que disminuya el

consumo de energía enfocado al proceso de llamada y recepción.

Page 10: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Índice General

Índice de Figuras IV

Índice de tablas VI

Capítulo 1. Introducción 1

1.1 Justificación 1 1.2 Definición del problema 2 1.2 Objetivo 2 1.3 Contribución y Alcance 3 1.4 Organización de la tesis 3

Capítulo 2. Antecedentes 4 2.1 Global Systems for Mobile Communication 4

2.1.1 Full Rate (FR) Speech Coder 5 2.1.2 G S M G S M Half Rate (HR)Speech Coder 6 2.1.3 G S M Enhanced Full Rate (EFR) Speech Coder 6 2.1.4 G S M Adaptive Multi-Rate 8

2.2 Vector Sum Excited Linear Prediction (VSELP) 8 2.2.1 Estructura Básica Del Codificador / Decodificador 9 2.1.2 Estructura del Codebook de VSELP 10 2.1.3 Selección de Vectores de excitación 11

2.3 Segunda generación en la actualidad 14 2.4 C A D R E (Configurable Asynchronous DSP for Reduced Energy) . . . . 16

Capítulo 3. Simulación de G S M Half-Rate (GSM-HR) en el ambiente Seamless 18

3.1 Seamless 18 3.2 ETSI 21 3.3 Código en Lenguaje C para GSM-HR 22

3.3.1 Adecuación del Software 23 3.3.2 Simulación en Seamless 26

Capítulo 4. Propuesta de arquitectura para el modulo M A C 28 4.1 Descripción de la función L_mac 28 4.2 Descripción de la función L_mult 28

I

Page 11: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

4.2 Descripción de la función L_Add 29 4.3 Arquitectura propuesta para operación de multiplicación 30

4.3.1 Multiplicador basado en el algoritmo de booth 30 4.4 Análisis de propuesta para implementación de Suma 34

4.4.1 Sumador Acarreo lockahead 37 4.5 Propuesta para integración del modulo M A C con el microprocesador . . . 38

4.5.1 Envío de datos al modulo M A C en software 41 4.6 Arquitectura interna del modulo M A C 42

Capitulo 5. Resultados 44 5.1 Resultados obtenidos de la simulación del programa

gsm_hr utilizando el modulo M A C 44 5.2 Funcionalidad 44 5.3 Desempeño 45 5.4 Mediciones del consumo de energía del procesador 47 5.5 Mediciones del consumo de energía del modulo M A C 48

Capitulo 6. Conclusiones y trabajo a futuro 54 6.1 Conclusiones 54 6.2 Trabajo futuro 56

Bibliografía 97

II

Page 12: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Índice de Figuras

2.1 Diagrama de bloques del codificador RPE-LTP 5 2.2 Diagrama de bloques del decodificador RPE-LTP 5 2.3 Diagrama de bloques del codificador / decodificador VSELP 6 2.4 Diagrama de bloques del codificador GSM enhanced 7 2.5 Diagrama de bloques del decodificador GSM enhanced 7 2.6 Diagrama de bloques del codificador / decodificador VSELP 9 2.7 Selección de excitación de palabra de código 11 2.8 Evolución de las generaciones de teléfonos celulares 15 3.1 Arquitectura Seamless 20 3.2 Procedimiento de comprobación de código 23 3.3 Resultados obtenidos con el performance profiler de Seamless 27 3.4 Información de la función Lmac 28 4.1 Diagrama de flujo del algoritmo de booth 33 4.2 Arquitectura para implementación del algoritmo de booth 33 4.3 Comparativa de Área entre Sumadores 35 4.4 Comparativa de Delay entre Sumadores 35 4.5 Comparativa de disipación de energía promedio entre sumadores 36 4.6 Diagrama de bloques de un sumador de 4 bits con Acarreo 38

lookahead 4.7 Arquitectura mínima para Seamless 38 4.8 Diagrama de un sub-bloque que conforma la memoria del sistema 39 4.9 Diagrama de un sub-bloque que conforma el modulo MAC 40 4.10 Arquitectura final de implementación del modulo MAC con microprocesador . . . . 41 4.11 Proceso de comunicación con el modulo MAC 42 4.12 Arquitectura interna para el modulo MAC 43 5.1 Resultados obtenidos por el code profile en la simulación del

programa gsmhr utilizando el modulo MAC 45 5.2 Propiedades de la función L_mac obtenidas por el code profile en la

simulación del programa gsmhr utilizando el modulo MAC 46 5.3 Propiedades de la función main sin utilizar el modulo MAC 47 5.4 Propiedades de la función main utilizando el modulo MAC 47 5.5 Particiones de tiempo del programa gsmhr 53 5.6 Particiones de tiempo del programa gsmhr utilizando el modulo M A C . . . 54

III

Page 13: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

IV

Page 14: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Índice de tablas

1.1 Duración de la batería en celulares con protocolo GSM 1 3.1 Métricas con las que cuenta el Performance Profiler 20 3.2 Modificaciones de software 24 3.2 Resultados obtenidos en la simulación del programa gsmhr 25 4.1 Recodificación de dígitos según el algoritmo de booth 33 5.1 Resultados de consumo de energía obtenidos por code profile de Seamless . . . 48 5.2 Resultados de consumo de energía obtenidos por XPower de Xilinx 49 5.3 Tiempo de ejecución y ciclos de operación del modulo M A C 51 5.4 Accesos de memoria y tiempo de utilización del bus 52

V

Page 15: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

VI

Page 16: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Capítulo 1

1. Justificación

El mercado de Teléfonos celulares se ha incrementado considerablemente en los

últimos años, en el año 2006 se realizo un incremento del 21.6% de celulares vendidos a

nivel mundial con respecto al 2005 [1]. Este incremento de usuarios de un teléfono

celular nos lleva a una lucha por parte de las compañías por hacerse de más cuentas de

usuarios, de modo que se han realizado diversas estratégicas de mercadotecnia como

planes para efectuar llamadas a muy bajo costo e inclusive sin costo en algunos casos.

Sin embargo esto nos lleva a un problema tecnológico, pues dichos celulares

normalmente utilizan baterías de Lit-Ion las cuales tienen entre 400 a 500 ciclos de

recarga aproximadamente, suponiendo una recarga diaria de la batería obtendríamos que

el periodo de vida de esta seria de 400 a 500 días lo cual es un promedio menor a un año

y medio. Sin embargo en la Figura 1 muestra como la duración de la batería de los

teléfonos celulares disminuye dramáticamente en llamada, lo cual nos indica que

siguiendo las tendencias de las compañías telefónicas a fomentar el excesivo uso del

teléfono celular termina por consumir la batería en un tiempo mucho menor y

posteriormente ser obligado a cambiar la batería.

Tabla 1.1 - Duración de la batería en celulares con protocolo GSM

(Estos datos fueron obtenidos de las especificaciones técnicas del fabricante)

Modelo Tiempo en idle state Tiempo en llamada

V237p 14.5 Días 7.5 Horas

C115 12 Días 8 Horas

E398 10 Días 6 Horas

SLVR 15 Días 6.6 Horas

PEBL 10 Días 6 Horas

W580Í 15 Días 9 Horas

W890Í 13 Días 4.5 Horas

1

Page 17: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Los teléfonos celulares regidos por el estándar G S M ejecutan un complicado

control y funciones de procesamiento de señales para realizar el filtrado de la señal,

corrección de errores, manejo del protocolo, algoritmos de compresión y descompresión

de la señal de voz. Típicamente estos procesos son realizados en un circuito integrado

compuesto por un microprocesador encargado del control de tareas del protocolo y un

DSP el cual está encargado de realizar el procesamiento numérico del protocolo.

Buscando en la literatura se ha encontrado que el DSP es responsable del 65% del

consumo de energía total cuando se encuentra en medio de una llamada utilizando un

codee half-rate de voz [2]. Esto ha dado pie al estudio de técnicas para disminuir el

consumo de energía producido por el DSP.

1.2 Definición del problema

El DSP al utilizar un algoritmo Half-Rate de compresión/descompresión de voz en

G S M produce un consumo de energía muy alto, debido al excesivo número de

operaciones necesarias para implementarlo. Este alto consumo de energía ocasiona una

notable disminución del tiempo de vida de la batería del celular.

1.3. Objetivos

Se pretende analizar el algoritmo compresión de voz del estándar G S M Half-Rate

e implementar una arquitectura específica que permita disminuir el consumo de energía

del microprocesador y aumentar el desempeño del algoritmo disminuyendo el tiempo de

ejecución.

2

Page 18: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

1.4. Contribución y alcance.

La contribución de este trabajo será proponer una arquitectura específica que

permita disminuir el consumo de energía del microprocesador y aumentar el desempeño

del algoritmo de compresión utilizado en el estándar G S M Half-Rate disminuyendo el

tiempo de ejecución de este. La arquitectura contara con elementos de hardware y

software por lo que se ocuparan técnicas de codiseño de hardware y software para

obtener una mejor implementación.

Para la elaboración de esta tesis se usaron diversas herramientas tales como C y

V H D L para la simulación del algoritmo y descripción de la arquitectura implementada

también se ocuparon herramientas de simulación y síntesis de hardware tales como

ModelSim y Seamless de Mentor Graphics.

1.5. Organización de la tesis

Esta tesis se encuentra distribuida en 6 capítulos y estos se describen a

continuación. En el capítulo 2 se describen los antecedentes referentes a Global System

for Mobile communication (GSM), Vector Sum Excited Linear Prediction (VSELP), la

relación de la segunda generación y porque es aun importante su estudio hoy en día por

último se revisan antecedentes de un trabajo relacionado con el propósito de esta tesis.

En el capítulo 3 se describirá la simulación del programa gsmhr en el ambiente

Seamless y una breve descripción de las herramientas utilizadas en este proceso y el

procedimiento utilizado para realizar la simulación en este ambiente. En el capítulo 4 se

presenta la descripción de la arquitectura propuesta para el coprocesamiento y su

interconexión con el procesador. En el capítulo 5 se presentan los resultados obtenidos

al realizar el coprocesamiento y se realiza una comparación con los resultados obtenidos

previamente. En el capítulo 6 se presentan las conclusiones obtenidas del trabajo

realizado así como algunas propuestas para trabajos posteriores

3

Page 19: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Capitulo 2 Antecedentes

2 . 1 . Global Systems for mobile communication (GSM)

G S M por sus siglas en inglés,"Global Systems for Mobile Communications" o

Sistema Global de Comunicaciones Móviles, es un estándar abierto de tecnología

celular digital desarrollado en el año de 1989 utilizado para la transmisión móvil de voz

y datos. Este estándar es considerado como un protocolo de segunda generación. Debido

a que a diferencia de su antecesores incorpora la tecnología digital y la división de

acceso de transmisión múltiple(TDMA), haciendo de esta, la tecnología de telefonía

celular digital de segunda generación más popular, teniendo más de 2.5 billones de

usuarios en el 2008.

Dos de las grandes ventajas del G S M es que permite la transmisión de datos a

velocidades de hasta de 5.6 kbt/s facilitando el servicio de mensajes cortos (SMS por

sus siglas en Inglés). Su segunda ventaja es el roaming internacional, que permite el uso

de un celular en cualquier país del mundo donde exista la tecnología G S M .

Actualmente G S M cuenta con 4 tipos de codees de voz los cuales son conocidos

con los siguientes nombres: G S M F U L L R A T E , G S M H A L F R A T E , G S M

ENHANCED F U L L RATE, G S M ADAPTIVE MULTI -RATE.

Cada uno de estos codees utiliza una señal de voz de entrada de 13 bits uniformes

P C M muestreada a 8 KHz. La base es muestreada cuadro por cuadro, donde cada

cuadro es de 20 ms (160 muestras).

4

Page 20: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

2.1.1. GSM Full Rate (FR) Speech Coder

El codee FR fue estandarizado en 1987. Este codee pertenece a los codees de la

clase "regular pulse excitation - long term prediction" (RPE-LTP). En la parte del

codificador un cuadro de 160 muestras de voz es codificado como un block de 260 bits

alcanzando un bit rate de 13 Kbps. El decodificador convierte los bloques codificados

de 260 bits a bloques de salida de 160 muestras de voz reconstruidos. El canal de GSM

Full Rate suporta hasta 22.8 kbps. Por lo tanto el restante 9.8kbps es utilizado para

protección de errores [3]. A continuación se muestran los diagramas de bloques del

codificador y decodificador RPE-LTP, en las Figuras 1.1 y 1.2 respectivamente.

Figura 2.1 Diagrama de bloques del codificador RPE-LTP.

Figura 2.2 Diagrama de bloques del decodificador RPE-LTP.

5

Page 21: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

2.1.2. GSM Half Rate (HR) Speech Coder

El codee HR fue desarrollado a principios de 1990 para el sistema de G S M y

opera bajo el algoritmo "Vector-Sum Excited Linear Prediction" (VSELP), este

algoritmo será explicado ampliamente en el capítulo 2.2. E l codee HR es capaz de

operar a 5.6 Kbps y requiere la mitad del ancho de banda del codee FR visto

anteriormente. La velocidad de muestreo es de 8 khz con una resolución de 13 bits y un

tamaño de frame de 160 muestras (20 ms) y una longitud de subframe de 40 muestras (5

ms) [3]. A continuación se presenta en dibujo esquemático del codificador /

decodificador se muestra en la Figura 2.3.

Figura 2.3 Diagrama de bloques del codificador / decodificador VSELP.

2.1.3. GSM Enhanced Full Rate (EFR) Speech Coder

El codee EFR fue el último en ser desarrollado para el sistema de G S M y opera

bajo el algoritmo "Algebric Code Excited Linear Prediction" (ACELP). Este codee fue

diseñado para la utilización del canal del codee FR y provee una mejora sustancial en

calidad comparado con el codee FR. Este codee utiliza 12.2 kbps para codificación de

voz y 10.6 para protección de errores [3]. A continuación se presenta en dibujo

esquemático del codificador / decodificador se muestra en la Figura 2.4

6

Page 22: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 2.4 Diagrama de bloques dei codificador GSM enhanced.

Figura 2.5 Diagrama de bloques del decodificador GSM enhanced

7

Page 23: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

2.1.4. GSM Adaptive Multi-Rate

El codee "Adaptive Multi-Rate"(AMR), es un codee de voz que ha sido

estandarizado para ser usado en la tercera generación de telefonía móvil(3G), dado que

es un codee adaptivo soporta 8 tazas de bits: 12.2, 10.2, 7.95, 7.40, 6.7, 5.9, 5.15, 4.75

kbps. El codee A M R utiliza A C E L P como algoritmo de compresión e incluye "Voice

Activity Detection"(VAD) y "Discontinuous Transmission"(DTX) como un método

para ahorrar ancho de banda y enviar menos bits por segundo cuando el usuario no está

hablando. En la Figura 2.4 y la Figura 2.5 se pueden ver los diagramas del codificador y

decodificador respectivamente.

2.2. Vector Sum Excited Linear Prediction (VSELP)

El algoritmo VSELP es una técnica de codificación de análisis por síntesis que

pertenece a los algoritmos de codificación conocidos como CELP (Code Excited Linear

Prediction) y fue diseñado para cumplir los siguientes requisitos [5]:

• Obtener las más alta calidad de voz posible.

• Cumplir una complejidad razonablemente sencilla.

• Ser robusto a errores en el canal.

VSELP consigue alcanzar estas metas haciendo un eficiente uso de codebooks de

excitación estructurados los cuales reducen la complejidad computacional y aumentan la

robustez en los errores en el canal. Para alcanzar la más alta calidad de voz son

utilizados dos codebooks manteniendo una complejidad razonable. Adicionalmente un

cuantizador de ganancia es utilizado para alcanzar una alta eficiencia de codificación.

8

Page 24: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Finalmente un arreglo de filtros adaptivos de pre/post filtrado es agregado para mejorar

la reconstrucción de calidad de voz.

Figura 2.6 Diagrama de bloques del codificador / decodificador VSELP.

2.2.1. Estructura básica del codificador / decodificador

E l codificador / decodificador de VSELP a 8Kbps utiliza 2 o 3 fuentes de

excitación. La primera es para el codebook adaptivo. En el caso de un codificador de

8kbps se utilizan 2 codebooks de excitación de VSELP los cuales contienen 128

vectores cada uno de ellos, en el caso del codificador de 4.8 kbps se utiliza un solo

codebook el cual contiene un equivalente a 2048 vectores [5]. Estas 3 fuentes de

excitación son multiplicadas por sus correspondientes ganancias y sumadas para generar

la secuencia de excitación ex(n).

Posteriormente en cada subcuadro, se utiliza ex(n) para actualizar codebook

adaptivo (estado del filtro de termino largo). El filtro de síntesis es un filtro LPC de

décimo orden. Los coeficientes de LPC son codificados cada cuadro de 20ms y los

parámetros de excitación son actualizados cada subcuadro de 5ms a través de una

9

Page 25: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

interpolación para el codificador de 8kbps, para el codificador de 4.8 kbps las

actualizaciones son cada 30ms y 7.5ms respectivamente.

En el codificador a 8 Kbps el número de muestras de cada trama ( N ) es 40 y para

el codificador de 4.8 kbps es de N = 60. Finalmente, el post-filtro espectral sirve para

mejorar la calidad de la señal sintetizada

Los codebooks de excitación utilizados (1 ó 2), cada uno contiene 2 vectores de

código. Cada uno de ellos esta formado por un set de M vectores base, donde M = 7

para un codificador de 8 kbps y M = 11 para un codificador de 4.8 kbps. Definiendo

Vkm(n) como el Mesimovector base y Ukl(ri) como el Iesimo vector de código en el

Kesim0codebook entonces tenemos:

Donde K = 1 ó 2 dependiendo el codificador que se esté utilizando 0 < i < 2 — 1,

y 0<n</V - 1.

En otras palabras cada vector de código en el codebook es estructurado como una

combinación lineal de vectores base M . La combinación lineal está definida como por el

parámetro 0, donde dim esta definido como:

2.2.2. Estructura del codebook de VSELP

(1)

0im = +1 si el bit m del codebook es 1

0,™ = —1 si el bit ra del codebook es 0

10

Page 26: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

La excitación de las palabras de código para el codificador de VSELP es más

robusta a errores de bit que la excitación de palabras de código de un codebook

aleatorio. Un error de bit en la palabra de código de V S E L P cambia solamente el signo

de un vector base. E l resultado del vector de código es todavía similar al vector de

código deseado.

2.2.3. Selección de vectores de excitación

La Figura 2.7 es un diagrama de bloques que muestra el proceso de selección

usado para seleccionar los 2 ó 3 índices para el codebook, siendo necesarios los índices

L , I y H necesarios para el codificador de 8 kbps y únicamente L y I son necesarios para

el codificador de 4.8 kbps. Estos parámetros de excitación son calculados cada

subcuadro

Figura 2.7 Selección de excitación de palabra de código.

11

Page 27: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

H(z) es el filtro de síntesis de banda ancha expandido, donde H(z) = l/(A(zA)),

donde A es igual factor de peso del ruido, típicamente para un codificador de 8 kbps

A = .8 y para un codificador de 4.8 kbps, A = .9. p(n) es la señal de voz de entrada

perceptualmente ponderada (con el factor de peso del ruido A) para el subframe, esta es

restada con la salida del filtro de síntesis de banda ancha expandido con una entrada de

cero.

Los 3 vectores de excitación son seleccionados secuencialmente, donde será

seleccionado 1 por cada codebook, (3 para el codificador de 8 kbps y 2 para el

codificador de 4.8 kbps). Cada búsqueda en los codebooks intenta minimizar el error

total ponderado.

A pesar de que los vectores de código son escogidos secuencialmente, las

ganancias de los vectores de excitación son parcialmente "flotadas", es decir la

búsqueda del primer codebook se realiza asumiendo que las ganancias Yi y 7 2 s o n c e r o -

Primero es buscado el vector adaptivo, asumiendo que las ganancias Yi Y Yi s o n

cero. Posteriormente se realiza una búsqueda en el primer codebook de V S E L P

realizando una búsqueda conjunta de y1 y B asumiendo que y 2es cero. Finalmente, la

búsqueda en el segundo codebook de VSELP (si se presenta) se realiza haciendo una

búsqueda conjunta con B, yx y Y2- Estas búsquedas en conjunto pueden ser alcanzadas

por la ortogonalizacion de cada vector de código ponderado con cada vector de

excitación previamente seleccionado a la búsqueda del código. Mientas que esta tarea

puede resultar impráctica, para los codebooks de V S E L P se reduce a la ortogonalizacion

únicamente de los vectores base.

La búsqueda en el codebook adaptivo es realizada primero por un índice L , el cual

minimiza:

12

Page 28: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

(2)

(4)

13

Donde b'L(ri) es la respuesta de estado cero H(z) a bL(ri) y B es óptima para cada

codebook con índice L .

Para realizar una búsqueda en cada codebook de VSELP, la respuesta de estado

cero de cada vector de código para H(z) debe ser calculado. Dada la definición de

VSELP (1), un vector de código filtrado fki(n)puede ser expresado de la siguiente

manera:

Donde qk,m(ri) es la respuesta de estado cero de H(z) al vector base Vki(n), 0 <

n< N — 1 y 1 < k < 2. La ortogonalización de vectores de código filtrados puede ser

expresado como:

(3)

Para 0 < i < 2 M - 1, y 0 < n < N - l y l < k < 2 . Si k = 1 entonces q'1¡m(ri) es el

componente para q1¡rn(n) el cual es ortogonal ab'L(ri). Si k = 2 entonces q2,m(n) es el

componente de í?2,m(n) e l c u a l e s ortogonal a ambos bL(n) y flt.

E l procedimiento de búsqueda del codebook ahora encuentra la palabra de código

que minimiza:

Page 29: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

(5)

Donde k = 1 es para el primer codebook y k = 2 para el segundo y donde y'k es

óptimo para cada vector de código i , una vez que se han filtrado y ortogonalizado los

vectores base los procedimientos de búsqueda en el codebook actual son idénticos.

Por lo tanto el vector de código que maximice la siguiente ecuación será

seleccionado.

2.3. Segunda generación en la actualidad

Para el año 2006 se ha empezado el desarrollo de la tercera generación de

Celulares (3G), y algunos de los clientes comenzaron a migrar de la red de 2G a 3G, por

esta razón tenemos actualmente corriendo en paralelo las redes 2G y 3 G.

14

(6)

(7)

Una vez obtenidas los índices y ganancias se generan los 3 vectores se multiplican

por sus respectivas ganancias para obtener la amplitud adecuada y se suman para

ingresar al filtro de síntesis. E l resultado se utiliza para actualizar al código adaptativo y

generar los parámetros que serán enviados al codificador.

(8)

Page 30: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Los sistemas celulares de segunda generación se encuentran muy bien

establecidos, con más de 2 billones de usuarios a través del mundo, los sistemas que

incluidos en esta generación son G S M , CdmaOne y T D M A . Los principales atributos de

esta generación son la Transmisión digital., capacidades de voz, circuito de

conmutación de datos hasta alrededor de 60 kbits/s y la capacidad de conmutación de

paquetes de datos hasta 60 kbits/s

Sin embargo 2G ha continuado evolucionando, particularmente GSM, que tuvo su

lanzamiento en 1992 y para el año 2006 se han añadido una serie de características de

otros como: GPRS "General Packet Radio Service", M M S "Multi-Media Messaging",

HSCSD "High-Speed Circuit Switched Data", WAP "Wireless Access Protocol",

EDGE "Enhanced Data rates for G S M Evolution". Esta generación es conocida

comúnmente como 2.5G ya que incorpora algunas mejoras a la segunda generación

común pero sin alcanzar aun a la tercera generación.

Con la cada vez más cercana 3G sería muy común pensar en que 2G puede ser

sustituida muy pronto, sin embargo esto no puede suceder de esta manera dado que 3G

fue introducido mas tarde de los esperado. Por lo tanto el cambio total de 2G a 3G

podría tomar al menos 10 años. Además de esto 3G se ha introducido principalmente en

ciudades y corredores de mayor comunicación, sin embargo en zonas rurales 2G

continuara funcionando por un tiempo más. Un punto a tomar en consideración es que

el "roaming standard" de 2G es relativamente lucrativo y no es algo que el proveedor

desee perder. Por lo tanto algunas capacidades de 2G serán retenidas

Figura 2.8 Evolución de las generaciones de teléfonos celulares.

15

Page 31: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

2.4. Trabajos relacionados: CADRE (Configurable

Asynchronous DSP for Reduced Energy)

C A D R E es un proyecto de tesis doctoral desarrollado por la universidad de

Manchester, la tesis describe la arquitectura de un DSP asincrono para consumo mínimo

de energía y cumplir los requerimientos de la siguiente generación de teléfonos

celulares [6].

C A D R E tiene una serie de características importantes en su arquitectura, por

ejemplo la explotación del paralelismo para mantener alto un rendimiento a la salida

disminuyendo las fuentes de voltaje utilizando 4 unidades funcionales de multiplicación

acumulación. La ejecución de instrucciones es controlada por memorias de

configuración localizadas dentro de unidades funcionales reduciendo la sobrecarga de

energía de la instrucción fetch. Cuenta con un register file muy grande para soportar el

tipo de datos requeridos por las unidades funcionales y haciendo uso de patrones de

acceso de datos reduce al mínimo el consumo de energía.

Finalmente C A D R E utiliza la representación de magnitud y signo para minimizar

la actividad de potencia dinámica a través del sistema. Esta característica permite

minimizar el sistema de control utilizando el sistema típico de un DSP como un adjunto

a un microprocesador en un sistema de teléfono celular.

Los resultados muestran la efectividad de las características arquitectónicas

aplicadas en C A D R E . E l paralelismo de las 4 unidades funcionales permite que se

mantenga un alto rendimiento de operación con el mínimo de consumo de energía. Sin

embargo, esto no es suficiente, ya que el procesamiento los elementos deben estar

plenamente ocupados para proporcionar un funcionamiento eficiente. Las memorias de

configuración dentro las unidades funcionales permiten a la arquitectura paralela ser

16

Page 32: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

usada eficientemente en los complejos algoritmos del DSP, minimizando el consumo de

energía de las instrucciones fetch y decoding. Además de esto el uso de un buffer de

instrucciones permite eliminar grandes cantidades acceso de memoria de programa y

actualización del PC.

E l uso de un gran banco de registros permite que los datos suministrados a las

unidades funcionales sea a un ritmo lo suficientemente alto, y simplifica el diseño del

programa. Los resultados muestran que el diseño del banco de registros permite que el

costo de energía promedio de un acceso a datos en alrededor de 12 veces menos que si

los datos se recupera de la memoria principal. La elección del diseño asincrono para

C A D R E ofrece baja interferencia electromagnética y simplifica enormemente el manejo

de energía debido a que circuitos asincronos se apagan automáticamente cuando un

procesamiento no es requerido y puede reiniciar de forma instantánea. Por último, la

elección de la representación de magnitud y signo de los datos ofrece una actividad de

conmutación reducida. Sin embargo, el ahorro en el consumo de energía no es suficiente

para justificar la complejidad adicional de los elementos aritméticos.

Los resultados muestran que, individualmente, cada uno de los elementos de la

arquitectura tuvo un efecto considerable sobre la energía consumida. Sin embargo, el

rendimiento global de los cuadros en comparación con otros procesadores no era tan

bueno como se esperaba. E l consumo de energía de C A D R E fue dominada por los

elementos de procesamiento aritmético y para poder obtener un mayor beneficio de la

arquitectura C A D R E es necesaria una mayor optimización de estos componentes.

17

Page 33: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Capitulo 3

Simulación del Algoritmo de GSM Half-Rate (GSM-HR) en

el ambiente Seamless

En este capítulo se describe el proceso que se realizo para simular el algoritmo de

gsm Half-Rate (gsm-hr) utilizando la herramienta Seamless. Antes de comenzar a

describir el proceso de simulación es necesario aclarar los siguientes detalles: ¿Qué es

Seamless? y ¿Qué es ETSI? .

3.1. Seamless

Seamless es una herramienta para detección de errores (debugging) interactiva

entre hardware y software desarrollada por Mentor Graphics. Esta herramienta permite

acelerar el proceso de co-verificación permitiendo que cierto software pueda ser

ejecutado o simulado en hardware. Seamless incluye algunas librerías interactivas para

soportar algunos procesadores. Estas librerías se denominan PSPs (Processor support

packages). Estas proveen modelos a procesadores que aceleran la co-verificación. Los 2

principales componentes de un PSP son el modelo del conjunto de instrucciones (ISM)

y el modelo de la interfaz del bus.

E l modelo de la interfaz del bus simula el comportamiento de los pines de entrada

y salida del microprocesador para la sección de hardware de la co-verificación. E l

software ISM ejecuta por separado y mucho más rápido las instrucciones programadas.

Esto lo hace en un simulador de software. Durante la co-verificación la mayoría de las

operaciones del procesador son tareas de rutina tales como la lectura de instrucciones o

el escribir o leer datos del Stack. En Seamless normalmente el simulador lógico ejecuta

18

Page 34: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

los ciclos para el acceso del bus. Los principales componentes de la arquitectura de

Seamless para co-verificación se muestran en la Figura 3.1 y se describen a

continuación [11].

Simulador de software. Este programa ejecuta la porción de software de la

sesión de co-verificación. Esta sección se encarga de ejecutar el código de máquina que

el usuario produce cuando se compila un código para un procesador específico. La

interfaz del simulador de software controla la ejecución del ISM y ejecuta operaciones

tales como correr el programa paso a paso, inspección de memoria y funciones típicas

de un simulador de software.

Kernel de co-verificación. Este programa controla la comunicación entre la

porción de software y la lógica durante la co-verificación. Esta sección permite al

usuario configurar varios aspectos de la co-verifcación por medio de la ventana de

sesión de Seamless. Entre estos aspectos están algunas optimizaciones de acceso de

memoria.

El simulador lógico y el kernel de simulación lógica. Estos programas

implementan la porción de hardware de la sesión de co-verificación. Se pueden manejar

uno o más modelos de interfaces de bus de microprocesadores y algunos modelos de

memoria en el diseño de hardware, el cual generalmente es expresado en un lenguaje de

descripción de hardware (HDL). E l simulador lógico controla la ejecución de un diseño.

Entonces el kernel de simulación lógica ejecuta la co-verificación H D L del diseño.

19

Page 35: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura3.1 - Arquitectura Seamless

Otra de las ventajas de este programa consiste en una aplicación denominada

Performance Profiler. Esta aplicación permite registrar algunas métricas de desempeño

del diseño. Entre estas métricas se cuenta con las mostradas en la Tabla 3.1.

Tabla 3.1 - Métricas con las que cuenta el Performance Profiler

Code Profile El cual se puede analizar el porcentaje de tiempo total que el

programa permanece en alguna función o procedimiento.

Bus Load El cual se analiza el porcentaje de utilización del bus de los

microprocesadores del diseño

Arbitration Delay El cual permite analizar las esperas para poder ocupar el bus

principal por cada uno de los microprocesadores.

20

Page 36: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

SW Gant Chart E l cual muestra el periodo de tiempo en el cual se ejecuta cada

una de las funciones o procedimientos del programa. Eso se

despliega mina gráfica de Gant.

Memory

Transactions

El cual permite ver las operaciones de memoria realizadas en

cada momento por los microprocesadores. Aquí se permite ver el

momento en que se realizó una lectura o escritura de memoria.

Estas métricas ayudan a los diseñadores a decidir nuevas mejoras en el sistema

tales como un nuevo particionamiento, incremento de memoria, optimización de código,

etc. La forma en que puede obtener estas métricas es simplemente que existe un módulo

de hardware denominado bus monitor, el cual se cuelga de la interfaz y monitorea en

cada momento el estado del bus. De esta forma se obtienen las estadísticas

mencionadas.

E l sistema mínimo para poder implementar un diseño de hardware-software

consiste en un microprocesador, una unidad de memoria, una interfaz y una señal de

reloj. Con lo anterior, es posible ejecutar algún software en el microprocesador. A partir

de esta estructura básica es posible agregar módulos adicionales de hardware e

incorporarlos al diseño.

3.2. ETSI

European Telecommunications Standards Institute o mejor conocido como ETSI

es una organización de estandarización de la industria de las telecomunicaciones

(fabricantes de equipos y operadores de redes) de Europa. Esta organización posee una

proyección mundial creada en 1988 por el CEPT (conferencia europea de correos y

telecomunicaciones).

21

Page 37: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

ETSI produce estándares globalmente-aplicables para tecnologías de información

y telecomunicaciones, incluyendo fijas, móviles, cobertura de radio, tecnologías de

broadcast e internet. E l ETSI ha tenido gran éxito al estandarizar el sistema de telefonía

móvil GSM.

3.3. Código en lenguaje C para GSM-HR

El código en C para el algoritmo de GSM-HR fue extraído de la pagina del ETSI

[4], bajo el siguiente nombre "ETSI EN 300 967 ¥8.0.1(2000-11)", en el cual se

obtienen los siguientes 2 archivos:

• Un archivo .pdf cuyo contenido explica la estructura y jerarquías del código

desarrollado en C.

• Un archivo .zip el cual contiene una carpeta llamada DISK, la cual a su vez

contiene lo siguiente:

o Carpeta C: Contiene todos los códigos .c y .h necesarios para

implementar el algoritmo GSM-HR

o Carpeta D: Contiene archivos de prueba para comprobar el

funcionamiento del programa,

o Carpeta E X E C : Contiene los makefiles utilizados para compilar el

código y generar un ejecutable,

o Carpeta Utils: la cual contiene herramientas útiles para probar el

programa.

o Archivo readme.text_ el cual tiene una breve explicación de lo que

realiza el código, como se compila y como probarlo

Es muy importante destacar que este código está diseñado para compilarlo en las

siguientes plataformas Sun, Vax y PC (utilizando el compilador acc). E l primer paso fue

modificar el makefile para que este sea compilado por un compilador gcc y genere un

archivo ejecutable. E l makefile utilizado se encuentra en el Apéndice A . l .

22

Page 38: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Una vez compilado el archivo fue necesario comprobar su funcionamiento. Para

realizar esto, se siguieron los pasos descritos en el diagrama de flujo presentado en la

Figura 3.1. Estos pasos fueron extraídos del archivo readme.text proporcionado por el

ETSI y son explicados a continuación.

Figura3.2 - Procedimiento de comprobación de código

E l primer paso es realizar la codificación del archivo de datos de entrada con el

programa gsm_hr. Posteriormente en el segundo paso se utiliza el programa reid para

convertir el archivo de resultado del paso anterior para generar el archivo a codificar,

este programa únicamente realiza una validación de que el archivo de entrada sea

correcto y pueda ser decodificado. En el paso tres se utiliza nuevamente el programa

gsm_hr para realizar una decodificación en esta ocasión, finalmente en el último paso se

comparan los archivos generados en cada una de las etapas anteriores con los archivos

proporcionados por el ETSI, esta comparación debe dar como resultado, que no existe

ninguna diferencia entre estos archivos. Las instrucciones para realizar este

procedimiento se pueden ubicar en el Apéndice A.2.

3.3.1 Adecuación del Software

Seamless es una plataforma para integración de hardware y software para sistemas

embebidos por lo cual no cuenta con un sistema operativo que permita la lectura y

23

Page 39: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

generación de archivos. Por esta razón es necesario adecuar el software para que

funcione sin tener que abrir ningún archivo y sin generar un archivo de salida. Esto se

realizo abriendo el archivo Short.inp para leer los datos de entrada y posteriormente

guardarlos en memoria dentro de un arreglo de datos. Los datos de salida son

almacenados en un arreglo en memoria y de esta forma evitamos generar el archivo de

salida Shorttst.cod. Para poder leer una entrada de datos desde memoria y poder escribir

los parámetros de salida en una sección de memoria, fue necesario realizar

modificaciones extras en algunas secciones de código. Estas modificaciones son

presentadas en la tabla 3.2.

Tabla 3.2 - Modificaciones de software.

Archivo Función Descripción Modificación

Host.c HostEncoderlnt

erface

Abre un archivo de datos de voz

y apaga los 3 primeros bits de

cada muestra

Se cambio la función fread para lectura

de archivos por un ciclo for y una

variable estática que donde se leen las

muestras de una trama de datos desde

memoria. Código en Apéndice A.3

host.c WhiteEncFile Escribe los parámetros

codificados en un archivo de

salida

Se cambio la función fwrite para

escritura de archivos por un ciclo for y

una variable estática que permite escribir

los datos de salida en memoria de forma

ordenada. Código en Apéndice A.4

Main encodeMem Codifica los datos recibidos Manda a llamar a la modificación de

hostEncoderlnterface y WriteEncFile.

Código en Apéndice A.5 Host.c SpeechDecoder

Hostlnterface

Escribe los datos truncados pcm

en un archivo de salida

Se elimino del programa debido a que el

experimento solo incluye la etapa de

codificación

Host.c ReadDecfile Lee los parámetros de entrada

para el decodificador desde un

archivo de datos

Se elimino del programa debido a que el

experimento solo incluye la etapa de

codificación

gsm_hr.c Main Función principal del código, de

acuerdo a los parámetros de

entrada, decide si debe hacerse

una codificación o

Se elimino completamente la parte de

decodificación y se agrego la función

para generar los archivos de entrada en

memoria. Código en Apéndice A.6

24

Page 40: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

decodificación del archivo de

entrada y posteriormente

generar un archivo de salida

gsm_hr.c Fillmem Inicializa el arreglo de datos de

entrada

Se agrego esta función con la finalidad

de inicializar el arreglo de datos de

entrada al programa. Código en

Apéndice A.7

Por simplicidad se seleccionaron únicamente 2 tramas (320 datos) para realizar el

experimento, las tramas seleccionadas fueron las tramas 10 y 11 del archivo Short.inp.

Por cada trama de 160 datos se generan 20 datos de salida, por lo tanto se generaran los

datos 200 al 240 del archivo Shorttst.cod.

Para comprobar el funcionamiento del programa se corrieron ambos programas y

se compararon uno a uno los datos de entrada y resultados de salida de las tramas en

cuestión. Los resultados generados de la simulación se presentan en la Tabla 3.3.

Tabla 3.3 - Resultados obtenidos en la simulación del programa gsmhr

Muestra Dato Muestra Dato Muestra Dato Muestra Dato

1 17 11 222 21 17 31 478

2 1790 12 1 22 1846 32 20

3 157 13 13 23 155 33 8

4 36 14 189 24 155 34 205

5 0 15 8 25 1 35 20

6 2 16 8 26 3 36 8

7 107 17 489 27 117 37 487

8 501 18 11 28 354 38 25

9 0 19 1 29 20 39 1

10 13 20 1 30 6 40 1

25

Page 41: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

3.3.2 Simulación en Seamless

Para poder correr el código principal en Seamless o cualquier microprocesador es

necesario un código de arranque para configurar el microprocesador y arrancar el

programa principal (gsm_hr). E l código de arranque utilizado se puede encontrar en el

Apéndice 4.

A l realizar la simulación del algoritmo en Seamless obtuvimos información muy

importante. Como se menciono anteriormente en este capítulo Seamless cuenta con una

herramienta llamada Code Profile la cual permite obtener el tiempo total que emplea el

procesador en ejecutar las subrutinas del programa implementado. En la Figura 3.2

podemos ver los resultados obtenidos al simular el código de gsm_hr.

Figura 3.3 - Resultados obtenidos con el performance profiler de Seamless

En la Figura anterior se observan las funciones o etiquetas del programa que

consumen más ciclos de reloj por parte del procesador. Como se puede observar, el

procesador se encuentra realizando la operación de multiplicación acumulación

(L_mac) el 23.8% del tiempo total del programa. Esto quiere decir, que si el tiempo de

26

Page 42: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

duración de esta operación en particular fuera menor, afectaríamos al 23.8 % del tiempo

de todo el programa. Por esta razón, se selecciono esta operación para ser optimizada

Observando más a detalle en la Figura 3.3, tenemos la información

correspondiente a la función L_mac (multiplicación acumulación). En esta Figura

podemos observar que dicha operación fue invocada 152,503 ocasiones y tiene un

promedio de duración desde 320 ns a 3, 040 ns dando un promedio de 1,786 ns en

ejecutarse. Tomando en cuenta que el ciclo de ejecución del microprocesador es de 40ns

tenemos que esta operación puede llegar a tardar hasta 76 ciclos de reloj y un mínimo de

8 ciclos en ejecutarla. Este tiempo de ejecución es muy elevado y podría ser aplicada en

menos instrucciones si fuera implementada en hardware. Por lo tanto, en el siguiente

capítulo, se desarrollara una arquitectura que realice esta operación en un modulo

externo utilizando un lenguaje de descripción de hardware (HDL).

Figura 3.4 - Información de la función L_mac

27

Page 43: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Capitulo 4

Propuesta de arquitectura para el modulo L_mac

En este capítulo el funcionamiento en software de la función L_mac y se propone

una arquitectura para un modulo externo que implemente esta función en hardware y de

la misma forma se explicara la arquitectura para la interconexión de este modulo con el

microprocesador.

4.1 Descripción de la función L_mac

La función L m a c se encuentra compuesta por dos partes la operación de

multiplicación y la operación de suma. Cada una de estas partes se describirá a detalle a

continuación.

4.1.1 Descripción de la función multiplicación (L_mult).

La función L m u l t visto de manera general realiza una multiplicación de dos

números de 16 bits y regresa el resultado en un número de 32 bits. Además de esta

acción L m u l t realiza un par de comparaciones para identificar si ocurre o no un

overflow., si esto llega a ocurrir se regresa un valor predefinido sin realizar ninguna

multiplicación. En caso de no existir un overflow se realiza la operación de

multiplicación y posteriormente se realiza un corrimiento a la izquierda sobre el

resultado antes de regresar dicho número como resultado final.

28

Page 44: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Implementar esta función en software tiene una serie de desventajas. Requiere una

serie de operaciones consecutivas lo cual se puede traducir como más ciclos de reloj y

más energía consumida. E l número de mnemónicos utilizados no es un número fijo, esto

se debe a las condicionales realizadas para verificar el overflow ya que si alguna de

estas condiciones se cumple puede o no ejecutar un conjunto de mnemónicos

adicionales para obtener el resultado. E l código de esta operación se presenta en el

Apéndice B. 1.

Por otro lado al tratarse de operaciones muy simples. Estas pueden ser

implementadas en un modulo de hardware de forma más eficiente y en mucho menor

tiempo. Obteniendo como resultado menor número de operaciones y un número exacto

de operaciones a realizar durante todo el programa.

4.2 Descripción de la función suma (L_add).

La función L_add visto de manera general realiza una suma de dos números de 32

bits y regresa el resultado en un número de 32 bits. Además de esta acción la función

L_add implementa una lógica para determinar si existe o no un underflow u overflow,

Si llegara a ocurrir alguno de estos dos casos se regresa un valor predefinido para cada

situación.

La Implementación en software de esta función tiene una serie de desventajas.

Requiere una serie de operaciones consecutivas para determinar si existe o no un

underflow u overflow lo cual se puede traducir como más ciclos de reloj y más energía

consumida. E l número de mnemónicos utilizados no es un número fijo, esto se debe a

las condicionales realizadas para verificar la existencia de un underflow u overflow ya

que si alguna de estas condiciones se cumple puede o no ejecutar un conjunto de

mnemónicos adicionales para obtener el resultado. E l código de esta operación se

presenta en el Apéndice B.2

29

Page 45: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

La implementación de la lógica de verificación y suma puede ser fácilmente

implementada en hardware. Un modulo en hardware puede obtener resultados en un

solo ciclo de reloj proporcionando más velocidad y eficiencia.

4.3 Arquitectura propuesta para operación de

multiplicación.

Las operaciones de multiplicación son más complejas que las operaciones de

adición o sustracción. Inicialmente en algunos procesadores, la multiplicación era

llevada a cabo como una rutina de software, en la cual básicamente, realizan la

multiplicación como una secuencia de sumas y desplazamientos. Sin embargo, los

microprocesadores de alto desempeño, disponen de multiplicadores implementados en

hardware para incrementar la velocidad de las operaciones aritméticas. En este caso, el

bloque funcional que realiza la multiplicación es siempre un bloque esencial en

cualquier sistema de procesamiento digital de señales. Sin embargo para aplicaciones

como smart-cards y telefonía celular, los principales criterios de diseño son relacionados

con el área y la potencia disipada.

4.3.1 Multiplicador basado en el algoritmo de booth

Este algoritmo fue propuesto por Booth en 1951, con el que se consigue reducir el

número de productos parciales generados, gracias a un sistema de codificación en donde

se analizan series de unos o ceros consecutivos [7]. Este algoritmo es recomendado para

sistemas de bajo consumo de energía y mínimo espacio de área de hardware. E l

Algoritmo de Booth presenta dos ventajas importantes: Primero unifica los

multiplicadores tanto para números binarios positivos como negativos de n bits,

transformándolos en versiones adecuadas de multiplicandos de n bits que se suman para

30

Page 46: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

generar productos de 2n bits de signo correcto, en el sistema de representación numérica

de complemento a dos. Segundo, logra cierta eficiencia respecto al número de productos

parciales generados, cuando el multiplicador tiene algunos bloques grandes de unos [6].

Como sabemos, la operación de multiplicación se realiza con dos operaciones

básicas: la suma y el desplazamiento lógico. De estas dos operaciones la que consume

más tiempo es la suma. Con este conocimiento el algoritmo de booth pretende

minimizar el número de sumas que se realiza durante el proceso de multiplicación para

ello se toma en cuenta la igualdad presentada en la ecuación 4.1 para sustituir cadenas

de unos o ceros consecutivos:

2 n - i + 2 n - 2 + . . . + 2 1 + 2 o = 2 n - 1 (4.1)

Primer paso necesario en el algoritmo de booth es representar el multiplicador en

un número re-codificado bajo la forma de dígitos con signo. Para realizar esto es

necesario analizar los bits Bt y B^x y sustituir el bit de posición i según se muestra en

eltablal.

Tabla 4 .1- Recodificación de dígitos según el algoritmo de booth

Bits del Digito multiplicador Recodificado Operación Bi Bi-\ 0 0 0 Ox multiplicando 0 1 1 l x multiplicando 1 0 -1 — l x multiplicando 1 1 0 Ox multiplicando

E l procedimiento del algoritmo de booth puede ser explicado con el diagrama de

flujo de la Figura 4.1. Siguiendo este algoritmo se consigue que una cadena de "n" unos,

que en un algoritmo clásico se requieren "n" sumas y "n" corrimientos, pueda disminuir

31

Page 47: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

su complejidad a que únicamente sean requeridas 2 sumas y n corrimientos. Esto puede

ser claramente visualizado en el siguiente ejemplo:

A = 0011

B = 0110

Reg_salida = "OOOO" & B = 00001110

Primera iteración:

Regsalida = 00000110 Bit_ant(0) = 0 ; no hay suma ni resta

Regsalida = 00000011 Bit_ant(0) = 0 ; corrimiento a la derecha

Segunda iteración:

Reg_salida = 11010011 Bit_ant(0) = 0 ; realiza resta

Regsalida = 11101001 Bit_ant(0) = 1 ; corrimiento a la derecha

Tercera iteración:

Regsalida = 11101001 Bit_ant(0) = 0 ; no hay suma ni resta

Reg_salida = 11110100 Bit_ant(0)=l ; corrimiento a la derecha

Cuarta iteración:

Reg_salida = 00100100 Bit_ant(0) = 1 ; Realiza Suma

Reg_salida = 00010010 Bit_ant(0) = 0 ; corrimiento a la derecha

32

Page 48: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Ahora una vez explicado el funcionamiento del algoritmo se describirá la

arquitectura necesaria para implementarlo. En la Figura 4.2 se presenta un diagrama de

bloques de la arquitectura necesaria para la implementación del algoritmo de booth.

Figura 4.2 - Arquitectura para implementación del algoritmo de booth

33

Figura 4.1 - Diagrama de flujo del algoritmo de booth.

Page 49: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Para realizar nuestra operación de multiplicación necesaria para la instrucción

M A C que deseamos implementar, tenemos que los datos de entrada son números de 16

bits expresados en complementos a dos y nuestro resultado se encuentra en 32 bits en

complementos a dos. La arquitectura necesaria se compone de una unidad A L U capaz

de realizar sumas y restas en complementos a dos, un registro de corrimientos a la

derecha de 32 bits una unidad de control capaz de identificar por medio de la tabla 4.1 si

se debe realizar una suma, una resta o simplemente un corrimiento. Se cuenta con un

registro T para guardar el valor de signo en el momento de realizar los corrimientos y

finalmente se necesita un registro de 32 bits como salida del multiplicador. E l código en

V H D L para la implementación de este modulo se tiene encuentra en el apéndice B.3.

4.4 Análisis de Propuesta para implementación suma.

Sin importar si se trata de un sistema de propósito general o un procesador de

aplicación especifica la suma es la operación más frecuentemente usada. Por lo tanto es

muy importante seleccionar cuidadosamente que arquitectura es ideal para nuestra

aplicación. En [8] se realiza un análisis de diferentes arquitecturas para realizar la

operación de suma en forma paralela. Las arquitecturas propuestas analizadas son las

siguientes: sumador de acarreo propagado, sumador con esquivo de acarreo, sumador

con selector de acarreo, sumador con acarreo con vista hacia adelante, sumador con

digito con signo y sumador con acarreo salvado

A continuación se presentan algunos de los resultados presentados en [8]. Todos

los resultados presentados son para operaciones de 32 bits debido a que son los bits

necesarios para nuestra aplicación.

34

Page 50: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 4.3 - Comparativa de Área entre sumadores

En la gráfica de barras presentada anteriormente podemos observar como la

arquitectura de sumador de digito con signo presenta la arquitectura con mayor área. Lo

cual para nuestra aplicación es poco recomendable. Por otro lado las arquitecturas del

sumador con acarreo propagado y el sumador con selector de acarreo poseen la menor

área de circuito y siendo muy recomendadas para esta aplicación.

Figura 4.4 - Comparativa de retraso entre sumadores

Si bien el área es un factor muy importante para nosotros debemos tomar en

cuenta otros factores muy importantes como lo es el tiempo de respuesta del sumador.

En la gráfica de barras presentada en la Figura 4.4, Podemos observar como las dos

arquitecturas que nos brindaban menor área de circuito presentan un retraso mucho

35

Page 51: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

mayor a las demás arquitecturas lo cual hace que estas opciones no sean recomendadas

como una propuesta para nuestro modulo.

Finalmente dado que nuestra aplicación tiene como propósito disminuir el

consumo de energía disipada una comparativa entre estos sumadores con respecto al

consumo de energía disipado al realizar operaciones de 32 bits es por demás obligatoria.

Figura 4.5 - Comparativa de disipación de energía promedio entre sumadores

En la Figura 4.5 podemos observar como la potencia disipada en los sumadores de

dígitos con signo y el sumador con selector de acarreo es mayor a los otros sumadores.

Con esta información presentada obtenemos que la arquitectura del sumador con

acarreo con vista hacia adelante es la arquitectura idónea para nuestra aplicación pues

posee un balance entre tamaño, velocidad y promedio de energía disipada.

36

Page 52: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

4.4.1 Sumador con acarreo con viste hacia adelante

La base del funcionamiento de este sumador es la descomposición del Acarreo en

dos partes, el Acarreo propagado y el Acarreo generado.

E l Acarreo Generado (G) se obtiene si los dos sumandos son 1 (ai y bi = 1).

E l Acarreo Propagado (P) se obtiene si alguno de los dos es 1 entonces se propaga

el Acarreo de la suma anterior (Ci + 1 = afii + a¡c¿ 4- 6iC¿).

P y G no dependen del Acarreo anterior:

P ¿ = a¿ xor bi

Gi = a¿ and b¿

Con estas ecuaciones reescribimos la suma y el Acarreo usando P y G de la

siguiente forma:

Si = c¡ xor Pi

Ci+i = Gi or Pi and C¿

Con esto obtenemos que no existe ninguna dependencia de los valores anteriores y

los Acarreo de cada bit pueden ser calculados independientemente. Lo cual permite

acelerar el proceso de suma en paralelo.

La arquitectura para un sumador con acarreo con vista hacia adelante de 4 bits se

puede observar en la Figura 4.6

37

Page 53: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 4.6 - Diagrama de bloques de un sumador de 4 bits con acarreo con vista hacia

adelante

4.5 Propuesta para integración del modulo MAC con el

microprocesador.

La integración del modulo M A C a la arquitectura básica de operación de

Seamless es un punto muy importante para el proceso pues limita y define como debe

de operar el modulo M A C que se planea implementar. La arquitectura mínima de

funcionamiento para Seamless cuenta con un microprocesador, una memoria y un bus

para interconectar ambos componentes. La Figura 4.7 presenta la arquitectura mínima

para Seamless [11].

Figura 4.7 - Arquitectura mínima para Seamless

38

Page 54: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Basándonos en esta arquitectura usaremos la interfaz de bus (AMBA) para

interconectar nuestro modulo con el microprocesador. De esta manera para proporcionar

los operandos será necesario únicamente realizar escrituras de memoria (Store) y para

obtener el resultado únicamente se realizara una lectura de memoria (Load). Para ello es

necesario explicar el funcionamiento de las unidades de memoria con las que trabaja

Seamless.

La Unidad de memoria en Seamless (SRAM) define una unidad de de 8 x 255

bits, contiene las entradas y salidas típicas de una memoria. Estas se describen a

continuación y se muestran en la Figura 4.8.

• A D D R . Bus de direcciones de 16 bits. Es una entrada.

• DQ. Bus de datos de la memoria. Es una puerto bidireccional.

• CE. Señal de habilitación y deshabilitación de la memoria. Es una entrada y es

activa en bajo.

• WE. Señal de control de lectura y escritura. Es una entrada y se realiza una

escritura cuando se encuentra esta señal en bajo.

• OE. Señal de habilitación de puerto de salida para lectura. Es entrada y es activa

en bajo

ADDR(16) B

WE

£9 SRAM • DQ(16) OE 3 i l n - ° u t

Figura 4.8 - Diagrama de un sub-bloque que conforma la memoria del sistema

Con esta información obtenemos que nuestro modulo M A C solo puede tener una

entrada de datos y será necesario utilizar el bus de direcciones A D D R para direccionar

el dato vamos a ingresar. Utilizaremos un CE para habilitar en qué momento debe de

39

Figura 4.8 - Diagrama de un sub-bloque que conforma la memoria del sistema

Con esta información obtenemos que nuestro modulo M A C solo puede tener una

entrada de datos y será necesario utilizar el bus de direcciones A D D R para direccionar

el dato vamos a ingresar. Utilizaremos un CE para habilitar en qué momento debe de

Page 55: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

operar el modulo y un RE para saber identificar una lectura de información. En la

Figura 4.9 observamos una representación del modulo M A C .

Figura 4.9 - Diagrama de un sub-bloque que conforma el modulo MAC

En la Figura 4.10 se observa la arquitectura para interconectar el modulo M A C

junto con la arquitectura básica de Seamless. E l microprocesador se conecta mediante la

interfaz de bus A M B A con el controlador A H B el cual tiene la función de identificar si

se realiza una escritura o lectura de información. E l decodificador de direcciones

obtiene del controlador A H B la dirección de memoria sobre la cual se realizara una

escritura o lectura y generara un Habilitador (Div_en) para el dispositivo designado. E l

modulo M A C se comunica utilizando el de 32 bits de datos para recibir los operandos y

devolver el resultado de la operación, es importante resaltar que los operandos

necesarios para el modulo M A C son: 2 números de 16 bits para realizar la

multiplicación y un número de 32 bits para realizar la suma. Para utilizar el total de bits

de datos los operandos de multiplicación serán enviados juntos en una sola dirección

como se muestra en la Figura 4.11. Debido a que solo se requieren escribir 2 datos de

entrada y leer un resultado de salida únicamente se utilizaran los dos bits menos

significativos del bus de direcciones. La entrada de CE de nuestro modulo únicamente

se activara cuando se requiera realizar una escritura por lo tanto se utiliza una

compuerta or para con las señales Div_en(7) y la señal WE(0), esto se debe a que

Div_en(7) es la señal que activa el controlador de direcciones cuando se refiere al

modulo M A C y WE(0) es el habilitador del bloque de memoria al que se encuentra

mapeado el modulo M A C .

40

Page 56: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 4.10 - Arquitectura final de Implementación del modulo MAC con

microprocesador

Figura 4.11 - Formato de envió de operandos para multiplicación

4.5.1 Envió de datos al modulo MAC en software.

Como se mostró anteriormente el envió de datos al modulo M A C se realizara

mediante escrituras y lecturas de memoria por lo tanto será necesario modificar el

funcionamiento de la función M A C anterior. La escritura y lectura de datos de memoria

en lenguaje C se realizo mediante el uso de apuntadores y se creó una función "Sort" la

cual realiza la operación de acomodar los operandos de multiplicación (16 bits) en un

solo número (32 bits). E l proceso realizado para el enviar y recibir datos del modulo

M A C se puede ver en la Figura 4.12.

41

Page 57: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 4.12 - Proceso de comunicación con el modulo MAC

Como se puede observar en la Figura 4.12 se envía primero el operando de suma,

esto se debe a que la función para ordenar los operandos del multiplicador requiere una

serie de pasos y el compilador al trabajar con optimización de código ejecuta el envío

del operando de suma antes de los operandos de multiplicación, por esta razón el

modulo M A C debe recibir los datos en este orden.

4.6. Arquitectura interna del modulo MAC.

Con los datos descritos en los puntos anteriores podemos resaltar las restricciones

de operación del modulo M A C .

• Debe generar el mismo resultado de la operación M A C descrita en software

• Debe ser capaz de recibir los 3 operandos por un solo bus de datos.

• Debe generar una salida 3 estados para mantener la operación con las memorias

S R A M conectadas al mismo bus de datos.

• Debe tener la lógica para asignar los operandos de acuerdo a las direcciones con

las que fue recibido.

• Debe recibir primero el operando de suma antes de los operandos de

multiplicación.

42

Page 58: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Tomando en consideración estas restricciones se diseño una arquitectura interna

para el modulo M A C capaz de cumplir cada una de ellas. Esta arquitectura se presenta

en la Figura 4.13 y se describe a continuación:

E l bloque de selección lógica direcciona los datos recibidos por el bus

bidireccional DQ hacia los registros 1, 2 ó 3 dependiendo de la dirección recibida y si el

CE este activado. Además de esta función el bloque de selección lógica se encarga del

control del bus de salida manteniéndolo en alta impedancia mientras no se desee leer un

dato de él.

Figura 4.12 - Arquitectura interna para el modulo MAC.

La inserción de registros dentro del modulo nos permite mantener el valor de los

datos en las entradas de los módulos de suma y multiplicación respectivamente aun

cuando el valor en el bus DQ haya cambiado. Es necesario retrasar el operando de suma

utilizando dos registros en la entrada de datos del sumador. Esto se debe a que esté

operando es recibido primero y los operandos de multiplicación no han sido recibidos

previamente y esta operación debe realizarse antes de la suma.

43

Page 59: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Los bloques de multiplicación y suma realizan la operación exacta de las

funciones de L_mult y L_add respectivamente, incluyendo las verificaciones de

overflow y underflow necesarias en estas operaciones. E l código en vhdl para la

implementación de esta arquitectura puede ser encontrado en el Apéndice B.4.

Capitulo 5 Resultados

En el capítulo 3 se presento el procedimiento para simular el programa gsm_hr

usando la herramienta Seamless y se comentaron algunos resultados obtenidos de esta

simulación. Posteriormente en el capitulo anterior se presento la arquitectura e

interconexión del modulo M A C propuesta en esta tesis. En este capítulo se pretende

mostrar los resultados obtenidos después de agregar el modulo M A C a la arquitectura

mínima ARJVI de Seamless y posteriormente realizar una comparación de los resultados

obtenidos.

5.1. Resultados obtenidos de la simulación del programa

gsm_hr utilizando el modulo MAC.

5.1.1 Funcionalidad.

Recordando lo que se menciono en el capítulo 3 se realizo la simulación de

únicamente 2 frames (160 muestras), esto genera 40 resultados de datos a transmitir.

Para comprobar la funcionalidad del modulo M A C se repitió la anterior simulación

utilizando el modulo M A C para realizar las operaciones de la función L_mac. La prueba

44

Page 60: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Los bloques de multiplicación y suma realizan la operación exacta de las

funciones de L_mult y L_add respectivamente, incluyendo las verificaciones de

overflow y underflow necesarias en estas operaciones. E l código en vhdl para la

implementación de esta arquitectura puede ser encontrado en el Apéndice B.4.

Capitulo 5 Resultados

En el capítulo 3 se presento el procedimiento para simular el programa gsm_hr

usando la herramienta Seamless y se comentaron algunos resultados obtenidos de esta

simulación. Posteriormente en el capitulo anterior se presento la arquitectura e

interconexión del modulo M A C propuesta en esta tesis. En este capítulo se pretende

mostrar los resultados obtenidos después de agregar el modulo M A C a la arquitectura

mínima ARJVI de Seamless y posteriormente realizar una comparación de los resultados

obtenidos.

5.1. Resultados obtenidos de la simulación del programa

gsm_hr utilizando el modulo MAC.

5.1.1 Funcionalidad.

Recordando lo que se menciono en el capítulo 3 se realizo la simulación de

únicamente 2 frames (160 muestras), esto genera 40 resultados de datos a transmitir.

Para comprobar la funcionalidad del modulo M A C se repitió la anterior simulación

utilizando el modulo M A C para realizar las operaciones de la función L_mac. La prueba

44

Page 61: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

de funcionalidad arrojo resultados que fueron exactamente iguales a los resultados

presentados en la Tabla 3.2 en el capítulo 3.

5.1.2 Desempeño

Utilizando nuevamente la herramienta Code Profiler de Seamless obtenemos el

tiempo total que emplea el procesador en ejecutar las subrutinas del programa gsmhr.

Los resultados obtenidos se presentan en la Figura 5.1.

Figura 5.1 - Resultados obtenidos por el code profíle en la simulación del

programa gsmhr utilizando el modulo M A C .

Comparando estas gráficas con los resultados obtenidos por el programa sin

utilizar el modulo M A C (Figura 3.3). Podemos ver como hay una reducción de 2.2 en

el porcentaje de tiempo utilizado por el procesador para realizar la operación de

multiplicación y acumulación (L_mac). En la Figura 5.1 observamos a detalle las

propiedades de esta función. Realizando una comparación de esta Figura con la Figura

3.5 podemos ver como el número de llamadas es en ambos programas igual a 152, 503

llamadas, sin embargo el tiempo de ejecución es muy diferente, en la Figura 3.2

podemos ver que el tiempo mínimo de ejecución es de 320ns y el tiempo máximo de

45

Page 62: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

ejecución es de 3, 040ns dando un tiempo promedio de l,786ns. De forma contraria, en

la Figura 5.2 observamos como el tiempo promedio y el tiempo mínimo es el mismo,

esto se encuentra justificado debido a que las operaciones ejecutadas son realizadas en

hardware y el propósito de esta función es únicamente enviar y recibir datos y

resultados respectivamente. Aun cuando el tiempo mínimo de ejecución en software es

menor (320ns), el tiempo promedio de ejecución en hardware es ligeramente menor, es

por esta razón la pequeña diferencia en el porcentaje de tiempo ocupado por el

procesador en realizar la función.

Figura 5.2 - Propiedades de la función Lmac obtenidas por el code profile en la

simulación del programa gsm_hr utilizando el modulo MAC.

Hasta este punto únicamente se ha revisado el desempeño individual de la función

L m a c . Sin embargo siendo esta la función más utilizada en el programa gsm_hr, una

modificación de los tiempos de operación en esta producirá un cambio en el programa

principal. En la Figura 5.2 se presentan las características de la función principal "main"

de el programa gsm_hr sin utilizar el modulo M A C y en la Figura 5.3 tenemos las

características de esta misma función utilizando el modulo M A C .

46

Page 63: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Figura 5.3 - Propiedades de la función

main sin utilizar el modulo M A C

Figura 5.4 - Propiedades de la función

main utilizando el modulo M A C

Comparando el tiempo de ejecución de estas dos funciones observamos que este

tiempo es menor por casi 40 ms para la función main utilizando el modulo M A C . Con

esto comprobamos que el modulo M A C produce una mejora en el desempeño del

programa sin embargo esta mejora no es del todo significativa para justificar la

incrustación de nuevo hardware.

5.1.3 Mediciones del Consumo de energía del procesador

Utilizando el code profile es posible realizar mediciones del consumo de energía

del programa gsm_hr. En la Tabla 5.1 se presentan los resultados obtenidos por este

simulador. Es importante resaltar que estos resultados muestran la energía consumida

por el procesador sumando las siguientes categorías: CPU, System, I Cache y D Cache.

Los resultados obtenidos para el modulo M A C muestran la energía consumida por el

procesador al realizar operaciones con las direcciones de memoria en las cuales se

encuentra mapeado el modulo M A C (FFFF8000-FFFF8002).

47

Page 64: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Tabla 5.1 - Resultados de consumo de energía obtenidos por code profile de

Seamless

Etiqueta

Min

(mW)

Max

(mW)

Avg

(mW)

Total

(mW)

Consumo de energía

(Sin Modulo M A C )

84.43 123.72 114.12 166854.79

Consumo de energía

(Con Modulo M A C )

79.79 122.35 102.35 156394.32

Consumo de energía

(Modulo M A C )

25 26.7 25.7 39279.55

En la Tabla 5.1 se observa cómo se obtiene una disminución de 11.77mW en la

potencia promedio consumida por el procesador utilizando el modulo M A C con

respecto al programa original. Esta reducción es completamente justificada debido a que

se han reducido el número de instrucciones procesadas por la función L_mac. Respecto

a la potencia total consumida por el procesador hay una disminución de 10460.47mW,

debido a que además de reducir el consumo de energía promedio se ha reducido el

tiempo de operación del procesador y por lo tanto la energía total consumida.

5.1.4 Mediciones del Consumo de energía del modulo MAC

Las mediciones del consumo de energía producido por el modulo M A C al realizar

sus operaciones fueron realizas utilizando la herramienta XPower de Xilinx. Xpower es

una herramienta que permite analizar el consumo total de energía de un dispositivo

utilizando el código HDL, en este caso por V H D L y un set de estímulos para producir

análisis de consumo de potencia estática y dinámica [12].

Debido a que la herramienta XPower de xilinx es una herramienta de análisis para

dispositivos implementados sobre un FPGA, se realizo una síntesis del modulo M A C

48

Page 65: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

sobre una Spartan3E para realizar este análisis. Es muy importante considerar que el

propósito de la implementación del modulo M A C es planeado para ser implementado

sobre un ASIC, sin embargo un análisis del consumo de energía sobre un FPGA puede

ser utilizado como un punto de comparación, tomando en cuenta que el consumo de

energía sobre un ASIC debe ser menor.

Con el propósito de obtener un análisis del consumo de potencia dinámica

producido por el modulo M A C se genero un set de estímulos para las entradas del

modulo de 10 muestras. E l set de estímulos se encuentra en formato V C D y fue

generado utilizando la herramienta ModelSim de Mentor Graphics. La serie de

comandos utilizados para generar el set se encuentra en el apéndice 12.

Tabla 5.2 - Resultados de consumo de energía obtenidos por XPower de Xilinx

Voltaje Corriente (raA) Potencia (mW)

Vcclnt 1.2

Dinámica 2.65 3.81

Estática 66.58 79.90

Consumo Total 83.08

Como se puede observar en la Tabla 5.2 se obtiene un consumo total de energía de

82.85mW al realizar 10 operaciones de lectura y escritura, sin embargo para poder

obtener el consumo de energía total consumido al ejecutar todas las operaciones

realizadas en el programa gsm_hr es necesario seguir el siguiente procedimiento.

Suponiendo que el consumo de energía estático permanece constante durante la

ejecución de las operaciones, se multiplica el consumo de energía dinámico por el

número de operaciones realizadas durante la ejecución de todo el programa. Debido a

que las mediciones fueron realizadas para un Set de 10 operaciones se divide el número

49

Page 66: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

de operaciones totales entre 10 para obtener el número por el que se debe multiplicar la

potencia dinámica obtenida.

152504/10 = 15250

15250x3.81 = 58102

Posteriormente sumamos la potencia dinámica y estática para obtener el consumo

total de energía consumida por el modulo al realizar las operaciones.

Potencia total del modulo = 58102 + 79.90 = 58191.90

La potencia total consumida es la suma de la potencia consumida por el

procesador (ver Tabla 5.2) y la potencia consumida por el modulo M A C al realizar

todas las operaciones necesarias en el programa gsm_hr.

Potencia total consumida = 58191.90 + 156394 = 214585.90

Finalmente observamos que el consumo de energía consumida es mayor a la

energía ahorrada por el procesador. Se obtiene una perdida en el ahorro de energía al

ejecutar el programa gsm_hr utilizando el modulo M A C .

Potencia total ahorrada por el procesador = 166854- 156394 = 10460

Diferencia de Potencia total Consumida = 166854— 214586 = —47732

Es importante mencionar que estas mediciones son realizadas en un FPGA y no

sobre un ASIC, en [15] se menciona que el consumo de energía en un FPGA es 20

veces mayor al de un ASIC, partiendo de esta relación el consumo de energía se obtiene

con la siguiente ecuación:

50

Page 67: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Potencia total consumida = 2909.6 + 156394 = 159303.6

Diferencia de Potencia total Consumida =

166854- 159303.6 = 7550.4

Tomando en cuenta esta relación se obtiene un ahorro de energía de 7550.4mw en

la energía total utilizada entre el procesador y el modulo M A C .

Utilizando el simulador ModelSim integrado en Seamless se analizaron los

diagramas de tiempo de la comunicación entre el procesador y el modulo M A C . Los

resultados obtenidos de este experimento se muestran en la Tabla 5.4.

En la Tabla 5.4 observamos que el tiempo mayor se encuentra en la escritura del

primer dato. Sin embargo durante este tiempo, el procesador realiza las operaciones para

acomodar los operandos de multiplicación para ser enviados al modulo, operaciones

secundarias del procesador y el envió del primer dato. Observando la escritura del

segundo dato y el resultado final podemos deducir que los ciclos de reloj utilizados por

el procesador para realizar las operaciones extras es de 10.5 ciclos ya que durante el

tiempo de escritura del segundo dato y lectura del resultado del modulo M A C no se

realiza ninguna operación extra. En la etapa final de la función, el procesador realiza la

lectura del modulo M A C y regresa el resultado de la función, observamos cómo este

tiempo es el menor con respecto a los anteriores.

51

Consumo de energía del Modulo MAC enASIC = = 2909.56

Page 68: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Tabla 5.3 - Tiempo de ejecución y ciclos de operación del modulo M A C

Operación Tiempo (ns)

Tiempo entre

operaciones

Ciclos de C P U

de operación

Inicio de función 5480

Primer Dato 6220 740 18.5

Segundo Dato 6540 320 8

Resultado 6860 320 8

Final de función 7040 180 4.5

Con esto obtenemos que se requieren 8 ciclos de reloj para realizar las

operaciones de escritura y lectura del modulo M A C . Este tiempo se debe a que estas

operaciones se están realizando mediante escrituras y lecturas de memoria. Sin embargo

el modulo M A C es capaz de responder a frecuencias más altas y entregar resultados más

satisfactorios en desempeño y energía consumida por el procesador.

Realizando la siguiente operación es posible saber el tiempo total utilizado por el

bus para realizar las operaciones de lectura y escritura al modulo M A C .

Tiempo total de comunicación del modulo MAC =

(((8 + 8 + 8) * 40ns) x 152504) = 146403840ns

Con esta información sabemos que 146403 840ns es el factor de tiempo que es

posible optimizar utilizando un bus de alta velocidad como medio de comunicación

entre el modulo M A C y el procesador. Optimizando este factor de tiempo es posible

realizar una mayor optimización en el tiempo de ejecución del programa gsmhr

52

Page 69: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

utilizando el modulo M A C e incrementar el consumo de energía ahorrado por el

procesador.

Realizando un análisis de los accesos a memoria del programa gsmhr y el tiempo

utilizado en el bus, se obtuvieron los siguientes resultados:

Tabla 5.4 - Accesos de memoria y tiempo de utilización del bus

accesos de memoria Tiempo utilizado en el bus

Sin modulo 900417 216100080ns

Modulo M A C 457512 146403840ns

Accesos procesador 900436 216104640ns

Con modulo 1357948 362508480ns

Para obtener los accesos de memoria durante todo el programa se utilizo la

herramienta performance profiler de Seamless, y utilizando el Modelsim integrado con

Seamless se analizo los ciclos utilizados para hacer escrituras y lecturas en memoria, y

se obtuvo como resultado que los ciclos utilizados para escribir y leer datos de memoria

(Load y Store) es de 6 ciclos, sin embargo para escribir datos al modulo M A C son

necesarios 8 ciclos de reloj. Con esta información se realizo el siguiente cálculo para

obtener los tiempos de utilización de bus mostrados en la Tabla anterior.

Tiempo de bus = Numero de accesos x ciclos de reloj x tiempo de ciclo

Con esta información obtenemos que el porcentaje utilización del bus a lo largo de

el programa gsm_hr es de 18.95 % cuando no es utilizado el modulo M A C y de un

32.93 % cuando se utiliza el modulo M A C . Con esto obtenemos que una optimización

utilizando un bus más rápido es decir que requiera menos ciclos de reloj para realizar

una escritura y una lectura de memoria lograra una mejora en estos porcentajes

obteniendo una mayor velocidad de procesamiento y un menor consumo de energía en

53

Page 70: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

la Figuras 5.5 se observa la partición de tiempo utilizado en el procesamiento del

procesador y tiempo en el bus en el programa gsm_hr sin utilizar el modulo M A C y en

la figura 5.6 se observa las particiones de tiempo utilizado en procesamiento, bus y

Procesamiento del modulo M A C en el programa gsm_hr.

Figura 5.5 - Particiones de tiempo del programa gsm_hr

Figura 5.6 - Particiones de tiempo del programa gsm_hr utilizando el modulo M A C

54

Page 71: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Como se puede observar en Figura 5.6 el tiempo utilizado para el procesamiento

del modulo M A C es mucho menor comparado al tiempo utilizado en el bus por lo que sí

es posible disminuir el tiempo de utilización de este, será posible alcanzar una mejora

considerable en el tiempo de ejecución.

Conclusiones 6.1 Conclusiones

Este trabajo de investigación entregó como resultados una arquitectura funcional

para la implementación en hardware de la función L_mac utilizada en el programa

gsmhr desarrollado por el ETSI [4] en el cual se implementa en software el algoritmo

de codificación de G S M half-rate. Esta arquitectura fue desarrollada mediante técnicas

de codiseño y el análisis de diversas arquitecturas y métodos para la implementación de

las funciones en hardware. La evaluación de estas arquitecturas se realizo en base a

algunas métricas importantes tales como el consumo de energía, frecuencias de

operación y área ocupada para su implementación. De igual forma en el presente trabajo

se propuso una arquitectura para la interconexión de este modulo con el

microprocesador utilizando el bus A M B A . Utilizando estas arquitecturas es posible

obtener ahorro en el consumo de energía del procesador de un 6.27% y una mejora en el

desempeño reduciendo el tiempo de ejecución en un 3.45%. Sin embargo este ahorro es

muy pobre debido a que el módulo implementado tiene un consumo del 34.87 % de la

energía del procesador. Con esto se demuestra que se obtuvo una mejora en el tiempo de

ejecución pero una pérdida del 28.6% en el consumo de energía.

Sin embargo como se menciono en el capítulo 5 las mediciones del consumo de

energía fueron realizadas sobre la implementación de este módulo en un FPGA por lo

cual al ser implementadas sobre un ASIC éste consumo deberá ser menor.

55

Page 72: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Como se puede observar en Figura 5.6 el tiempo utilizado para el procesamiento

del modulo M A C es mucho menor comparado al tiempo utilizado en el bus por lo que sí

es posible disminuir el tiempo de utilización de este, será posible alcanzar una mejora

considerable en el tiempo de ejecución.

Conclusiones 6.1 Conclusiones

Este trabajo de investigación entregó como resultados una arquitectura funcional

para la implementación en hardware de la función L_mac utilizada en el programa

gsmhr desarrollado por el ETSI [4] en el cual se implementa en software el algoritmo

de codificación de G S M half-rate. Esta arquitectura fue desarrollada mediante técnicas

de codiseño y el análisis de diversas arquitecturas y métodos para la implementación de

las funciones en hardware. La evaluación de estas arquitecturas se realizo en base a

algunas métricas importantes tales como el consumo de energía, frecuencias de

operación y área ocupada para su implementación. De igual forma en el presente trabajo

se propuso una arquitectura para la interconexión de este modulo con el

microprocesador utilizando el bus A M B A . Utilizando estas arquitecturas es posible

obtener ahorro en el consumo de energía del procesador de un 6.27% y una mejora en el

desempeño reduciendo el tiempo de ejecución en un 3.45%. Sin embargo este ahorro es

muy pobre debido a que el módulo implementado tiene un consumo del 34.87 % de la

energía del procesador. Con esto se demuestra que se obtuvo una mejora en el tiempo de

ejecución pero una pérdida del 28.6% en el consumo de energía.

Sin embargo como se menciono en el capítulo 5 las mediciones del consumo de

energía fueron realizadas sobre la implementación de este módulo en un FPGA por lo

cual al ser implementadas sobre un ASIC éste consumo deberá ser menor.

55

Page 73: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

6.2 trabajo a futuro

La arquitectura propuesta del modulo M A C presenta resultados funcionales y

una pequeña mejora de desempeño en la velocidad de ejecución sin embargo presenta

una fuerte perdida en el consumo de energía del modulo M A C . Sin embargo

observamos que el tiempo de consumido por la lectura y escritura al bus A M B A es muy

alto (320ns / 8 ciclos de reloj), y el tiempo consumido por este representa el 13.3% del

tiempo total del programa. Por lo tanto si se realiza una optimización utilizando un bus

de alta velocidad se podrían obtener mejores resultados. Por lo tanto propongo como

trabajo a futuro una implementación del modulo M A C utilizando un bus de alta

velocidad con la finalidad de aumentar la velocidad de ejecución y aumentar la energía

ahorrada por el procesador.

Las mediciones de energía consumida por el modulo M A C fueron

implementando la arquitectura del modulo sobre un FPGA, por lo tanto propongo como

trabajo a futuro la implementación de esta arquitectura en un ASIC con la finalidad de

realizar una medición más exacta del consumo de energía de este modulo y obtener un

mayor beneficio en el consumo de energía.

El algoritmo implementado en el modulo M A C para realizar la función de

multiplicación es el algoritmo de booth, este algoritmo funciona correctamente sin

embargo, en un estudio realizado en [13] se presento un análisis del algoritmo Baugh-

Wooley para realizar la operación de multiplicación. Este algoritmo presenta un mejor

rendimiento y una menor consumo de energía por lo tanto como trabajo a futuro se

propone la implementación de este algoritmo para hacer nuevas pruebas de desempeño.

Finalmente, como la utilización de del modulo M A C significo una pequeña

mejora en el desempeño del programa gsmhr desarrollado por el ETSI y se obtuvo

igualmente un pequeño ahorro de la energía consumida en el programa. Durante la el

estudio del algoritmo VSELP se observo que la etapa de mayor procesamiento es "open

56

Page 74: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

lag loop search", sin embargo debido a que VSELP es una variación del CELP estos

algortimos también poseen una etapa simular a esta, dentro de estos se encuentra el

algoritmo de A C E L P el cual es utilizado como algoritmo de compresión y

descompresión de voz en G S M A M R el cual se utiliza en las nuevas generaciones de

teléfonos celulares. Por esta razón propongo como trabajo a futuro implementar el

modulo M A C en estos algoritmos para realizar nuevas pruebas de desempeño.

57

Page 75: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Apéndice A

Código modificados para simulación del programa gsm_

extraído del ETSI

A.l Makefile

#project output f i l e #PROJECT=memtest3_p2 PROJECT=gsm_hr

# GNU-ARM t o o l s d i r e c t o r y GNU_ARM = /home/shared/CodeSourcery/SourceryARM/bin

CC=$(GNU_ARM)/arm-none-eabi-gcc ASM=$(GNU_ARM)/arm-none-eabi-as OBJCOPY=$(GNU_ARM)/arm-none-eabi-objcopy LDSCRIPT=standalone.Id

# should use --gc-sections but the debugger does not seem to be able to cope with the opt i o n . LINKER_FLAGS=-nostartfiles - X l i n k e r -o$(PROJECT).elf - X l i n k e r -M -X l i n k e r -Map=$(PROJECT).map DEBUG=#-g 0PTIM=-03

#CFLAGS=$(DEBUG) - I . -D i n l i n e = -mcpu=arm926ej-s $(OPTIM) -T$(LDSCRIPT) CFLAGS=$(DEBUG) - I . -mcpu=arm9tdmi $(OPTIM) -T$(LDSCRIPT)

#C and Asm sources SRC= mathdp31.c mathhalf.c vad.c globdefs.c sp_rom.c err_conc.c dtx. homing.c sp_dec.c sp_enc.c sp_frm.c sp_sfrm.c host.c gsm_hr.c ASRC=startup.s LIBS= #typedefs.h mathdp31.h mathhalf.h err_conc.h homing.h sp_dec.h sp_enc.h sp_frm.h sp_rom.h sp_sfrm.h vad.h host.h gsm_hr.h dtx.h ##LIBS= #/home/Shared/toolchains/arm-2007q3/lib/gcc/arm-none-linux-gnueabi/4.2.1/include/stdio. h #LIBS= $(LUMINARY_DRIVER_DIR)/arm-none-eabi-gcc/libdriver.a $(LUMINARY_DRIVER_DIR)/arm-none-eabi-gcc/libgr.a

OBJS = $(ASRC:.s=.o) $(SRC:.c=.o)

a l l : $(OBJS) $(PROJECT).elf

%o : %c Ma k e f i l e $(CC) -c $(CFLAGS) -gdwarf-2 $< -o $@

%o : %s Ma k e f i l e $(ASM) -g -gdwarf2 $< -o $@

58

Page 76: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

% e l f : $(OBJS) M a k e f i l e $(CC) $(CFLAGS) $(OBJS) $(LIBS) $(LINKER_FLAGS)

clea n : touch M a k e f i l e rm - f $(OBJS) rm - f $(PROJECT).elf rm - f $(PROJECT).map

A.2 Pasos para comprobar el funcionamiento del programa

gsm_hr

Se introduce el archivo SHORT.INP al programa gsmhr para hacer la

codificación:

gsm_hr ene ..\d\shortinp ..\d\shorttst.cod nodtx

La salida generada es introducida al programa REID:

reid..\d\shorttstcod..\d\shorttst.dec EPO La salida generada es introducida nuevamente al programa gsmhr para hacer la

decodificación:

gsm_hr dec.. \d\shorttstdec..\d\shorttst.out nodtx

Una vez realizada la decodificación se realiza una comprobación para ver

si los datos de salida son correctos

comp shortísteod shortcod

comp shorttstdec shortdec

comp shorttst.out short.out Esta comprobación debe arrojar como resultado que no existe ninguna diferencia

entre estos archivos.

59

Page 77: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

A.3 Modificación de la sección de código HostEncoderlnterface

;********************************************************************̂ ^

* FUNCTION ÑAME: hostEncoderlnterfaceMem

* PURPOSE:

* Read in speech data from a file. Zero the least significant 3 bits.

* INPUTS:

* pfilelnSpeech * FILE pointer to the binary input file

* iNumToRead * Number of samples to read from the file, typically * 160 (20 msof speech).

* OUTPUTS:

* pswSamplesRead[] * The speech samples read in from the file.

* RETURN VALUE:

* iNumRead

* The number of samples actually read.

* IMPLEMENTATION:

* The input speech file should be in "native" format. This means that * the file is to be read (by this program) and written (by another * program) as short ints (not chars). * If not enough samples are available in the file, the number actually * read is returned. If the read fails to fill the requested iNumToRead * samples, then the rest are zeroed.

* In all cases the least significant 3 bits of all speech samples are

* zeroed.

* REFERENCES: Sub-clause 4.1 of GSM Recomendation 06.20

* KEYWORDS: read, read speech, get speech data ************************************************** int hostEncoderInterfaceMem(Shortword pmemInSpeech[], int iNumToRead,

Shortword pswSamplesReadf]) {

60

Page 78: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

61

/* I I | Automatic Variables | I I

*/ int iNumRead,

i; static int j = 1;

/* I I | Executable Code | I I */

// iNumRead = fread((char *) pswSamplesRead, sizeof (Shortword), // iNumToRead, pfdelnSpeech);

for (i = 0; i < iNumToRead; i++) { pswSamplesRead[i] = pmemInSpeech[i];

}

for (i = 0; i < iNumToRead; i++) { pswSamplesRead[i] = pmemlnSpeechfi + (j-l)*iNumToRead];

}

//memcpy(&pswSamplesRead[0], &pmemInSpeech[0]+(j*iNumToRead), iNumToRead*2); j + + ; iNumRead = iNumToRead;

/* Delete the 3 LSB's - 13 bit speech input */ /* */

for (i = 0; i < iNumRead; i++) { pswSamplesRead[i] &= OxfffB;

}

/* Fill out the iNumToRead buffer with zeroes */ /* */

if (iNumRead != iNumToRead) { for (i = iNumRead; i < iNumToRead; i++) { pswSamplesRead[i] = 0;

} } return (iNumRead);

}

Page 79: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

A.4 Modificación de la sección de código WriteEncfile

* * FUNCTION ÑAME: writeEncfileMem * * PURPOSE: * Writes encoded parameters to ouput fde * * INPUT: * pswSpeechPara array of encoded parameter words. * * OUTPUT: * fpfileEnc 16-bit encoded valúes. * * RETURN: * i number ofbytes written * * REFERENCES: Sub-clause 4.1 of GSM Recomendation 06.20

* KE Y WORDS: pswSpeechPara, fpfileEnc

*/

//int writeEncfile(Shortword pswSpeechPara[], FILE *fpfileEnc) int writeEncfileMem(Shortword pswSpeechPara[], Shortword pmemEnc[]) { //int i; static int 1 = 1; int i = 20; int k = 0; Shortword Prueba;

//i = fwrite((char *) pswSpeechPara, sizeof (Shortword), 20, fpfileEnc); for (k=0; k<20 ;k++) {

pmemEncfk + (1-1)*20] = pswSpeechParafk]; Prueba = pmemEncfk];

}

// memcpy(&pmemEnc[0], &pswSpeechPara[0] + 1*20, 20*2);

1++;

return (k); }

62

Page 80: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

A.5 Modificación de la sección de código de la función encode y * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

* FUNCTION ÑAME: encodeMem MODIFICACION PARA LEER Y ESCRIBIR DE MEMORIA

* PURPOSE: * Reads in one frame of speech samples and outputs one frame of * speech parameters. Resets the encoder to the home state if the * Encoder Homing Frame partera is detected.

* INPUT: * pfileSpeechln speech file * * OUTPUT: * pfíleEnc speech, encoded paramater data * * RETURN: * 0 successfully wrote a complete frame of data * 1 failed to write a complete frame of data * * REFERENCES: Sub-clause 4.1 of GSM Recomendation 06.20

* KEYWORDS: * pfileSpeechln, pfíleEnc ********************************************

int encodeMem(Shortword pmemSpeechIn[], Shortword pmemEnc[]) {

/* I I | Static Variables | I I */ static Shortword pswSpeechPara[20]; static Shortword pswSpeechBufíIFLEN];

/* | Automatic Variables | I I */ int iNumRead,

resetflag;

/* | Executable Code | I I

*/

//iNumRead = hostEncoderInterface(pfileSpeechIn, FLEN, &pswSpeechBuffT0]); iNumRead = hostEncoderInterfaceMem(&pmemSpeechIn[0], FLEN, &pswSpeechBufflO]);

if (iNumRead < FLEN) return (1);

63

Page 81: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

resetflag = encoderHomingFrameTest(&pswSpeechBuffIO]);

speechEncoder(&pswSpeechBuff[0], pswSpeechPara);

if (writeEncfileMem(pswSpeechPara, pmemEnc) != 20) return (1);

if (reset_flag) resetEnc(); /* Bring the encoder, VAD, and DTX to

* the home state */ return (0);

}

A.6 Modificación de la sección de código de la función Main

int main() { /* I I | Local Constants | I I

*/ #define DEFAULTNUMFRAMES 32766 /* I I | Automatic Variables | I I

*/ int iDoneFrm,

iDoneFrmTest, iMaxNumFrms, option, i;

static Shortword pmemInMem[1600]; static Shortword pmemOutMem[1600];

//definir variables de prueba 1: static Shortword pswPrueba[1600]; static Shortword pswPrueba2[1600];

int iNumRead; int s;

/* I I | Executable Code | I I

*/

64

Page 82: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Shortword x = 0x00000D02; Shortword z = OxOOOOFEDE; Longword m = 0x00010D02; Longword *y = 0xFFFF8000; Longword *c = 0xFFFF8004; Longword *a = 0xFFFF8008; Longword d =0xFFFF8008; Longword e =0xEEEE8008;

d = L_mac(m,x,z);

/* check command line arguments */ /* */

iMaxNumFrms = DEFAULT_NUMFRAMES; s = Fill_Mem(&pswPrueba2[0]);

giDTXon = 0; option = 0;

/* start the encoder, VAD, and transmit DTX in the home state */ I* •/

for (giFrmCnt = 1, iDoneFrm = 0; üDoneFrm && giFrmCnt <= iMaxNumFrms; giFrmCnt++)

//aqui empieza el for 2 { if (encodeMem(&pswPrueba2[0], &pmemOutMem[0]))

iDoneFrm = 1; if(giFrmCnt==2)

iDoneFrm = 1; }

//aqui acaba el for if (iDoneFrm) giFrmCnt-; return (0);

}

65

Page 83: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

A.7 Sección de código de la función Fill_Mem z*********************************************************************̂ ^ * * FUNCTION ÑAME: Fill_Mem MODIFICACION PARA LEER Y ESCRIBIR DE MEMORIA * * PURPOSE: * llenar la memoria con los datos a leer *

* * INPUT: * pswPrueba2 speech fue * * OUTPUT: * pswPrueba2 speech, encoded paramater data

* RETURN: * 0 successfully wrote a complete frame of data * 1 failed to write a complete frame of data * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * int Fill_Mem(Shortword Prueba2[]) {

/* I I | Executable Code | I I

*/ Prueba2[0] = 52; Prueba2[l] =-104; Prueba2[2] = -280; Prueba2[3] = -502; Prueba2[4] = -782; Prueba2[5] = -1039; Prueba2[6] = -1205; Prueba2[7] = -1052; Prueba2[8] = -644; Prueba2[9] = -370; Prueba2[10] = -309; Prueba2[ll] = -317; Prueba2[12] = -277;1

Prueba2[13] = -52; Prueba2[14] = 303; Prueba2[15] = 71I; Prueba2[16] = 1044; Prueba2[17] = 1191; Prueba2[18]= 1298; Prueba2[19] = 1294; Prueba2[20] = 1184; Prueba2[21]= 1032; Prueba2[22] = 727; Prueba2[23] = 372;

66

Page 84: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Prueba2[24] = 20; Prueba2[25] = -254; Prueba2[26] = -388; Prueba2[27] = -473; Prueba2[28] = -512; Prueba2t29] = -617; Prueba2[30] = -81l; Prueba2[31] = -926; Prueba2[32] = -934; Prueba2[33] = -852; Prueba2[34] = -692; Prueba2[35] = -511; Prueba2[36] = -303; Prueba2[37] = -6; Prueba2[38] = 268; Prueba2[39] = 403; Prueba2[40] = 479; Prueba2[41] = 525; Prueba2[42] = 574; Prueba2[43] = 596; Prueba2[44] = 569; Prueba2[45] = 592; Prueba2[46] = 571; Prueba2[47] = 417; Prueba2[48] = 265; Prueba2[49]= 137; Prueba2[50] = -88; Prueba2[51] = -345; Prueba2[52] = -599; Prueba2[53] = -840; Prueba2[54] = -1081; Prueba2[55] = -1359; Prueba2[56] = -1278; Prueba2[57] = -782; Prueba2[58] = -503; Prueba2[59] = -537; Prueba2[60] = -450; Prueba2[61] = -301; Prueba2t62]=-80; Prueba2[63] = 451; Prueba2t64] = 958; Prueba2[65] = 1250; Prueba2[66] = 1518; Prueba2[67] = 1665; Prueba2I68] = 1579; Prueba2[69]= 1332; Prueba2[70] = 1016; Prueba2[71] = 688; Prueba2t72] = 322; Prueba2[73J = -14; Prueba2[74] = -249; Prueba2[75] = -463; Prueba2[76] = -625; Prueba2[77] = -674; Prueba2[78] = -751; Prueba2[79] = -884;

67

Page 85: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Prueba2[80] = -976; Prueba2[81] = -985; Prueba2[82] = -900; Prueba2[83]=-759; Prueba2[84] = -546; Prueba2[85] = -307; Prueba2[86] = -66; Prueba2[87] = 219; Prueba2[88] = 432; Prueba2[89] = 536; Prueba2[90] = 638; Prueba2[91] = 652; Prueba2[92] = 604; Prueba2[93] = 680; Prueba2[94] = 748; Prueba2[95] = 687; Prueba2[96] = 522; Prueba2[97] = 275; Prueba2[98] = 12; Prueba2[99] = -315; Prueba2[100] = -646; Prueba2[101] = -873; Prueba2[102] = -1140 Prueba2[103] = -1416 Prueba2[104] = -1443 Prueba2[105] = -1078: Prueba2[106] =-557; Prueba2[107] =-361; Prueba2[108] = -364; Prueba2[109] = -346; Prueba2[110] = -273; Prueba2[lll]= 162; Prueba2[112] = 849; Prueba2[113] = 1397; Prueba2[114] = 1739; Prueba2[115] = 1812; Prueba2[116]= 1614; Prueba2[117] = 1362; Prueba2[118] = 1078; Prueba2[119] = 761; Prueba2[120] = 450; Prueba2[121] = 70; Prueba2[122] = -298; Prueba2[123] = -539; Prueba2[124] = -673; Prueba2[125] = -719; Prueba2[126] = -761; Prueba2[127] = -897; Prueba2[128] = -964; Prueba2[129] =-929; Prueba2[130] = -879; Prueba2[131] = -689; Prueba2[132] = -501; Prueba2[133] = -359; Prueba2[134] = -99; Prueba2[135] = 145;

68

Page 86: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Prueba2[136] = 368; Prueba2[137] = 555; Prueba2[138] = 608; Prueba2[139] = 602; Prueba2[140] = 584; Prueba2[141] = 666; Prueba2[142] = 820; Prueba2[143] = 741; Prueba2[144] = 462; Prueba2[145] = 238; Prueba2[146] = -39; Prueba2[147] = -355; Prueba2[148] = -618; Prueba2[149] = -906; Prueba2[150] = -1237: Prueba2[151] = -1557; Prueba2[152] = -1495: Prueba2[153] = -944; Prueba2[154] = -453; Prueba2[155] = -318; Prueba2[156] = -364; Prueba2[157] = -404; Prueba2[158] = -259; Prueba2[159] = 260; Prueba2[160] = 973; Prueba2[161] = 1496; Prueba2[162] = 1787; Prueba2[163] = 1854; Prueba2[164] = 1631; Prueba2[165] = 1316; Prueba2[166] = 999; Prueba2[167] = 675; Prueba2[168] = 401; Prueba2[169] = 91; Prueba2[170] = -225; Prueba2[171] = -465; Prueba2[172] = -651; Prueba2[173] = -742; Prueba2[174] = -809; Prueba2[175] = -925; Prueba2[176] = -971; Prueba2[177] = -954; Prueba2[178] = -883; Prueba2[179] = -719; Prueba2[180] = -535; Prueba2[181] = -312; Prueba2[182] = -62; Prueba2[183] = 171; Prueba2[184] = 369; Prueba2[185] = 519; Prueba2[186] = 594; Prueba2[187] = 566; Prueba2[188] = 574; Prueba2[189] = 702; Prueba2[190] = 769; Prueba2[191] = 625;

69

Page 87: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Prueba2[192] = 422; Prueba2[193] = 196; Prueba2[194] =-125; Prueba2[195] = -399; Prueba2[196] = -656; Prueba2[197] = -953; Prueba2[198] = -1263; Prueba2[199] = -1525; Prueba2[200] = -1388; Prueba2[201] = -776; Prueba2[202] = -271; Prueba2[203] = -228; Prueba2[204] = -356; Prueba2[205] = -414; Prueba2[206] = -204; Prueba2[207] = 400; Prueba2[208] = 1109; Prueba2[209] = 1646; Prueba2[210] = 1914; Prueba2[211]= 1849; Prueba2[212] = 1510; Prueba2[213] = 1106; Prueba2[214] = 786; Prueba2[215] = 546; Prueba2[216] = 298; Prueba2[217] = -22; Prueba2[218] = -317; Prueba2[219] = -551; Prueba2[220] = -695; Prueba2[221] =-723; Prueba2[222] = -820; Prueba2[223] = -947; Prueba2[224] = -987; Prueba2[225] = -995; Prueba2[226] = -872; Prueba2[227] = -597; Prueba2[228] = -333; Prueba2[229] = -122; Prueba2[230] = 88; Prueba2[231] = 267; Prueba2[232] = 416; Prueba2[233] = 551; Prueba2[234] = 601; Prueba2[235] = 604; Prueba2[236] = 653; Prueba2[237] =719; Prueba2[238] = 664; Prueba2[239] = 465; Prueba2[240] = 251; Prueba2[241] =41; Prueba2[242] = -228; Prueba2[243] = -560; Prueba2[244] = -860; Prueba2[245] = -1092; Prueba2[246] =-1352; Prueba2[247] = -1498;

70

Page 88: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Prueba2[248] = -1243; Prueba2[249] = -698; Prueba2[250] = -261; Prueba2[251] = -98; Prueba2[252] = -168; Prueba2[253] = -252; Prueba2[254] = 41; Prueba2[255] = 671; Prueba2[256]= 1312; Prueba2[257] = 1822; Prueba2[258] = 1979; Prueba2[259] = 1737; Prueba2[260] = 1357; Prueba2[261] = 903; Prueba2[262] = 518; Prueba2[263] = 337; Prueba2[264] = 150; Prueba2[265] = -119; Prueba2[266] = -384; Prueba2[267] = -605; Prueba2[268] = -731; Prueba2[269] = -787; Prueba2[270] = -861; Prueba2[271] = -928; Prueba2[272] = -964; Prueba2[273] = -923; Prueba2[274] = -719; Prueba2[275] = -464; Prueba2[276] = -214; Prueba2[277] = 28; Prueba2[278] = 199; Prueba2[279] = 316; Prueba2[280] = 433; Prueba2[281] = 564; Prueba2[282] = 634; Prueba2[283] = 637; Prueba2[284] = 674; Prueba2[285] = 696; Prueba2[286] = 540; Prueba2[287] = 320; Prueba2[288] = 145; Prueba2[289] = -136; Prueba2[290] = -441; Prueba2[291] = -681; Prueba2[292] = -917; Prueba2[293] = -1162; Prueba2[294] = -1479; Prueba2[295] = -1600; Prueba2[296] = -1116; Prueba2[297] = -369; Prueba2[298] = 37; Prueba2[299] = 98; Prueba2[300] = -98; Prueba2[301] = -248; Prueba2[302] = 107; Prueba2[303] = 772;

71

Page 89: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Apéndice B

Códigos en VHDL para implementación del modulo MAC e

interconeccion del modulo MAC con el microprocesador

B.3 Código en VHDL para la implementación del Modulo MAC

~ Company: ~ Engineer:

-- Créate Date: 16:12:22 09/23/2009 -- Design Ñame: ~ Module Ñame: mac - Behavioral ~ Project Ñame: ~ Target Devices: -- Tool versions: ~ Description:

~ Dependencies:

~ Revisión: ~ Revisión 0.01 - File Created — Additional Comments:

72

Prueba2[304] = 1449; Prueba2[305] = 1948; Prueba2[306] =2001; Prueba2[307] = 1709; Prueba2[308] = 1258; Prueba2[309] = 707; Prueba2[310] = 345; Prueba2[311] = 216; Prueba2[312] = 63; Prueba2[313] = -130; Prueba2[314] = -384; Prueba2[315] = -665; Prueba2[316] = -800; Prueba2[317] = -854; Prueba2[318] = -916; Prueba2[319] = -944;

return (0); }

Page 90: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Apéndice B

Códigos en VHDL para implementación del modulo MAC e

interconeccion del modulo MAC con el microprocesador

B.3 Código en VHDL para la implementación del Modulo MAC

~ Company: ~ Engineer:

-- Créate Date: 16:12:22 09/23/2009 -- Design Ñame: ~ Module Ñame: mac - Behavioral ~ Project Ñame: ~ Target Devices: -- Tool versions: ~ Description:

~ Dependencies:

~ Revisión: ~ Revisión 0.01 - File Created — Additional Comments:

72

Prueba2[304] = 1449; Prueba2[305] = 1948; Prueba2[306] =2001; Prueba2[307] = 1709; Prueba2[308] = 1258; Prueba2[309] = 707; Prueba2[310] = 345; Prueba2[311] = 216; Prueba2[312] = 63; Prueba2[313] = -130; Prueba2[314] = -384; Prueba2[315] = -665; Prueba2[316] = -800; Prueba2[317] = -854; Prueba2[318] = -916; Prueba2[319] = -944;

return (0); }

Page 91: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

73

—package

library work; use work.all;

library IEEE; use IEEE.STDLOGICJ 164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

— Uncomment the following library declaration if instantiating — any Xilinx primitives in this code. «library UNISIM; -use UNISIM.VComponents.au;

package mac_pkg is

component mac is Port(

data: inout std_logic_vector(31 downto 0); address: in std_logic_vector(l downto 0); Registro 1: out std_logic_vector(15 downto 0); Registro2: out std_logic_vector(15 downto 0); Registro3: out std_logic_vector(31 downto 0); Registro4: out std_logic_vector(31 downto 0); Mul32: out std_logic_vector(31 downto 0); Sum32: out std_logic_vector(31 downto 0); clk: in stdlogic; CE: in stdlogic; RE: in stdlogic); WE: in stdlogic);

end component;

end mac_pkg;

library work; use work.all;

library IEEE; use IEEE.STD_LOGIC_l 164.ALL; use ieee.numeric_std.all; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

use work.mac_pkg.all; —use work.functions_pkg.all;

— Uncomment the following library declaration if instantiating

Page 92: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

— any Xilinx primitives in this code. -library UNISIM; -use UNISIM.VComponents.all;

entity mac is Port( data: inout std_logic_vector(31 downto 0); address: in stdlogic_vector(l downto 0); Registro 1: out std_logic_vector(15 downto 0); Registro2: out std_logic_vector(15 downto 0); Registro3: out std_logic_vector(31 downto 0); Registro4: out std_logic_vector(31 downto 0); Mul32: out std_logic_vector(31 downto 0); Sum32: out std_logic_vector(31 downto 0); clk: in stdlogic; CE: in std_logic; RE: in stdlogic);

end mac;

architecture Behavioral of mac is

signal Enable : stdjogic; -- seÁ±ales primera etapa — pre pipeline signal vari : std_logic_vector(15 downto 0); signal var2 : std_logic_vector(15 downto 0); signal var3 : std_logic_vector(31 downto 0); -- seÁ±ales segunda etapa — post pipiline 1 signal in_varl : std_logic_vector(15 downto 0); signal in_var2 : std_logic_vector(15 downto 0); signal in_var3 : std_logic_vector(31 downto 0); signal in_var4 : std_logic_vector(31 downto 0);

signal inresult: std_logic_vector(31 downto 0); signal in2_result: std_logic_vector(31 downto 0); signal in3_result: std_logic_vector(31 downto 0); signal in4_result: std_logic_vector(31 downto 0);

-- sumaaaaa aaaahhhhh signal overflow : stdlogic; signal carry_out: std_logic; signal result: std_logic_vector(31 downto 0):=x"00000000"; signal sum : std_logic_vector(31 downto 0);

74

SIGNAL h_sum : STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL carry_generate : STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL carry_propagate : STD_LOGIC_VECTOR(31 DOWNTO 0); SIGNAL carry_in_internal : STD_LOGIC_VECTOR(31 DOWNTO 1); signal carry_in : STD_LOGIC;

multiplicacionnnnn aaaahhhh

Page 93: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

signal resuIt_Mult: std_Iogic_vector(31 downto 0):=x" 10000000"; signal result_Mult2 : std_logic_vector(31 downto 0):=x" 10000000";

signal sum32_mod : std_logic_vector(32 downto 0):= "000000000000000000000000000000000" ; signal sum32_fínal: std_logic_vector(31 downto 0):=x"00000000";

begin

Enable <= C E ; - W E or C E ;

-- L O G I C A D E H A B I L I T A C I O N DE DIRECCIONES

vari <= data(31 downto 16) when address = "00" and Enable = '0' else x"0000";

Registro 1 <= i n v a r l ;

var2 <= data(15 downto 0) when address = "00" and Enable = '0' else x"0000";

Registro2 <= in_var2;

var3 <= data(31 downto 0) when address = "01" and Enable = '0' else x"00000000";

Registro3 <= in_var3;

data <= in3_result when address = "10" and RE = '0' else (others => 'Z');

F F 1 6 1 : process(clk) begin

if(clk'event and clk = '0')then if(Enable = '0')then

i n v a r l <= vari; end if;

end if; end process;

FF16_2: process(clk) begin

if(clk'event and clk = '0')then if (Enable = '0')then

in_var2 <= var2; end if;

end if; end process;

FF32_1: process(clk) begin

if(clk'event and clk = '0')then if(Enable = '0')then

in_var3 <= var3; end if;

end if;

75

Page 94: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

end process;

-- OPERACION 1 - MULTIPLICACION

process(in_varl, in_var2)

variable C: std_logic_vector(16 downto 0):=(others=>'0'); variable CF: std_logic_vector(2*16 downto 0); variable x,T: std_logic;

variable DataA: std_logic_vector(16 downto 0);

begin

ifin_varl(16-l)=Tthen DataA:-l'&invarl;

else DataA:='0'&in_varl;

end if; x:='0'; T:='0'; CF:=C&in_var2;

for i in 1 to 16 loop if (CF(0)='0' and x='l') then

CF(2*16 downto 16):= CF(2*16 downto 16)+ DataA;

elsif (CF(0)='l' and x='0') then CF(2*16 downto 16):= CF(2*16 downto 16)-DataA;

end if; T:=CF(2*16); x:=CF(0); CF(2*16 downto 0):=T&CF(2*16 downto 1);

end loop;

resultMult <= CF(2*16-1 downto 0);

end process;

--MULTIPLICACION POR 2 result_Mult2 <= result_Mult(30 downto 0) & '0';

—overfiow inresult <= x"7FFFFFFF" when (invarl = x"8000") and (invarl = x"8000") else

result_Mult2;

- segunda parte de pipeline

Mul32 <= in_result;

76

Page 95: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

FF32 3: process(clk) begin

if(clk'event and clk = '0')then if(Enable = '0')then

in_var4 <= in_var3; end if;

end if; end process;

Registro4 <= in_var4;

-- O P E R A C I O N 2 - S U M A

carryin <= '0'; h s u m <= inresult X O R in_var4; carry_generate <= inresult A N D in_var4; carry_propagate <= inresult OR in_var4;

— generar carry

PROCESS (carry_generate,carry_propagate,carry_in_internal)

B E G I N carryininternal(l) <= carrygenerate(O) OR (carry_propagate(0) A N D carryin);

inst: FOR i IN 1 TO 30 LOOP carry_in_internal(i+l) <= carry generate(i) OR

(carry_propagate(i) A N D carry_in_internal(i)); END LOOP;

carry_out <= carrygenerate(31) OR (carry_propagate(31) A N D carry_in_internal(31));

E N D PROCESS;

sum(0) <= hsum(O) X O R carry_in; sum(31 D O W N T O 1) <= h_sum(31 DOWNTO 1) X O R carry_in_internal(31 DOWNTO 1);

—overflow overflow <= not(in_result(31) xor in_var4(31)) and (in_result(31) xor sum(31)); -resultado in3_result <= x"80000000" when (carryout = T ) and ( sum(31) = '0') and (inresult < 0 ) and

(in_var4 < 0 ) else x"7fffffff' when overflow = '1' and (inresult > 0 ) and (in_var4 > 0 ) else

sum;

Sum32 <= in3_result;

sum32_mod <= ('0' & in3_result) + ('0' & x"00008000");

sum32_fínal <= x"0000" & sum32_mod(31 downto 16);

end Behavioral;

77

Page 96: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

B.4 Código en VHDL para Interconexión del modulo MAC con

microprocesador

Copyright Mentor Graphics Corporation 2002 All Rights Reserved.

THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE

PROPERTY OF MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS

SUBJECT TO LICENSE TERMS.

- ARM946E-Srevl Testing

-- Owner: Ahmed S. Badran - SoC VBU - Mentor Graphics Egypt — - Questions/Suggestions: Email me at [email protected] -- Start date: 03-26-2002 --Enddate: - -2002 -- . ~ Filename: testbench.vhd ~ Description: This fue includes the top level design of the —

test bench used for testing the arm926ejs_rev0. ~

library work; use work.arm926ejs_lib.all; use work.sram_pkg.all; use work.screen_pkg.all; use work.ahb_controller_pkg.all; use work.ahb_arbiter_pkg.all; use work.address_decoder_pkg.all; use work.reset_controller_pkg.all; use work.conf_controller_pkg.all; use work.tcm_controller_pkg.all; use work.dma_controller_pkg.all; -use work.io_controller_pkg.all; use work.int_generator_pkg.all; use work.clk_generator_pkg.all; use work.mac_pkg.all;

library ieee; use ieee.std_logic_l 164.all; use ieee.numeric_std.all;

entity ARM926EJS_rev0_tb is generic ( - Timing parameters CLKCYCLETIME : time := 40 ns; INITIALSTARTUPTIME : time := 160 ns;

78

Page 97: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

— Processor setup parameters ENDIANNESS : bit := '0'; - 0 => low, 1 => big

- Memory map parameters MEMORYBASEADDRESS : unsigned (31 downto 0) := X"00000000"; MEMORY_ADDRESS_WIDTH : integer := 16; RESETCONTBASEADDRESS : unsigned (31 downto 0) := X'TFFFFFDO"; RESET CONT_ADDRESS_WIDTH : integer := 4; CONF CONTBASEADDRESS : unsigned (31 downto 0) := X'TFFFFFEO"; CONFCONTADDRESS WIDTH : integer := 4; SCREENBASEADDRESS : unsigned (31 downto 0) := X"FFFF8000"; SCREENADDRESS WIDTH : integer := 4; INTGENBASEADDRESS : unsigned (31 downto 0) := X'TFFFFFFO"; INTGENADDRESSWIDTH : integer := 4

);

end ARM926EJS_revO_tb;

architecture ARM926EJS_revO_tb of ARM926EJS_revO_tb is

- Binding indícation - None is needed, the default is to bind components and entities that have - the same ñames

- Data Bus Signáis.

signal DHADDR : std_logic_vector ( 31 downto 0 ) := (others => 'Z'); signal DHBL : stdlogicvector ( 3 downto 0 ) := (others => 'Z'); signal DHBURST : std_logic_vector (2 downto 0 ) := (others => 'Z'); signal DHBUSREQ : stdjogic := 'Z'; signal DHCLKEN : stdjogic := T; signal DHGRANT : stdjogic; signal DHLOCK : stdjogic := 'Z'; signal DHPROT : stdJogic_vector (3 downto 0 ) := (others => 'Z'); signal DHRDATA : stdlogicvector ( 31 downto 0 ); signal DHREADY : stdjogic; signal DHRESP : stdlogicvector ( 1 downto 0 ); signal DHSIZE : stdJogic_vector (2 downto 0 ) := (others => 'Z'); signal DHTRANS : stdJogic_vector ( 1 downto 0 ) := (others => 'Z'); signal DHWDATA : std logicvector ( 31 downto 0 ) := (others => 'Z'); signal DHWRITE : stdjogic := 'Z'; signal HRESETn : stdlogic;

- Instruction Bus Signáis.

signal IHADDR : stdlogicvector ( 31 downto 0 ) := (others => 'Z'); signal IHBURST : stdjogicvector (2 downto 0 ) := (others => 'Z'); signal IHBUSREQ : stdjogic := 'Z'; signal IHCLKEN : stdjogic := T; signal IHGRANT : stdjogic; signal IHLOCK : stdjogic := 'Z*; signal IHPROT : stdJogic_vector ( 3 downto 0) := (others => 'Z');

79

Page 98: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

signal IHREADY : stdjogic; signal IHRDATA : stdJogic_vector ( 31 downto 0 ); signal IHRESP : stdlogicvector ( 1 downto 0 ); signal IHSIZE : stdlogic_vector (2 downto 0 ) := (others => 'Z'); signal IHTRANS : std logic_vector ( 1 downto 0 ) := (others => 'Z'); signal IHWRITE : stdjogic := 'Z';

- AHB Arbiter to AHB memory controller signáis.

signal HADDR : stdJogic_vector (31 downto 0) := (others => 'Z'); signal HBL : std logicvector (3 downto 0) := (others => 'Z'); signal HBUSREQ : stdjogic := 'Z'; signal HBURST : stdJogic_vector (2 downto 0) := (others => 'Z'); signal HLOCK : stdjogic := '0'; signal HPROT : stdlogicvector (3 downto 0) := (others => 'Z'); signal HRDATA : stdJogic_vector (31 downto 0) := (others => 'Z'); signal HREADY : stdjogic := '1'; signal HRESP : std logicvector (1 downto 0) := "ZZ"; signal HSIZE : stdlogicvector (2 downto 0) := "ZZZ"; signal HTRANS : stdlogicvector (1 downto 0) := "ZZ"; signal HWRITE : stdjogic := 'Z'; signal HWDATA : stdJogic_vector (31 downto 0) := (others => 'Z');

-- Coprocessor Signáis - Not Supported

signal CPABORT : stdjogic := 'Z'; signal CPBURST : stdlogicvector (3 downto 0); signal CPCLKEN : stdjogic := 'Z'; signal CPDIN : stdlogicvector ( 31 downto 0 ); signal CPDOUT : stdlogicvector (31 downto 0 ) := (others => 'Z'); signal CPEN : stdjogic; signal CPINSTR : stdJogicvector (31 downto 0 ) := (others => 'Z'); signal CPPASS : stdjogic := 'Z'; signal CPLATECANCEL : stdjogic := 'Z'; signal CHSDE : stdJogic_vector (1 downto 0 ); signal CHSEX : stdJogic_vector ( 1 downto 0 ); signal nCPINSTRVALID : stdjogic := 'Z'; signal nCPMREQ : stdjogic := 'Z'; signal nCPTRANS : stdjogic := 'Z';

— Debug Signáis - Not Supported.

signal COMMRX : stdlogic := 'Z'; signal COMMTX : stdjogic := 'Z'; signal DBGACK : stdjogic := 'Z'; signal DBGDEWPT : stdjogic; signal DBGEN : stdjogic; signal DBGEXT : stdlogic_vector ( 1 downto 0 ); signal DBGIEBKPT : stdjogic; signal DBGINSTREXEC : stdjogic := 'Z'; signal DBGRNG : std logic_vector ( 1 downto 0 ) := (others => 'Z');

80

Page 99: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

signal DBGRQI : stdlogic := 'Z'; signal EDBGRQ : stdlogic;

- JTAG Signáis - Not Supported.

signal DBGIR : std_logic_vector ( 3 downto 0 ) := (others => 'Z'); signal DBGnTRST : stdlogic; signal DBGnTDOEN : stdlogic := 'Z'; signal DBGSCREG : std_logic_vector (4 downto 0 ) := (others => 'Z'); signal DBGSDIN : stdjogic := 'Z'; signal DBGSDOUT : stdjogic; signal DBGTAPSM : stdJogic_vector ( 3 downto 0 ) := (others => 'Z'); signal DBGTCKEN : stdjogic; signal DBGTDI : stdjogic; signal DBGTDO : stdjogic := 'Z'; signal DBGTMS : stdjogic;

- Miscellaneous Signáis.

- Supported. signal CLK : std logic; signal CFGBIGEND : stdjogic := 'Z'; signal nFIQ : stdjogic := '1'; signal nIRQ : std logic := '1'; - Not Supported. signal BIGENDINIT : stdjogic; signal EXTEST : std logic; signal INTEST : stdjogic; signal SCANENABLE : stdjogic; signal STANDBYWFI : stdjogic := 'Z'; signal TAPID : stdlogicvector ( 31 downto 0 ); signal TESTMODE : stdjogic;

- ETM Interface Signáis - Not Supported.

signal ETMBIGEND : stdjogic := 'Z'; signal ETMCHSD : stdjogic_vector ( 1 downto 0) := (others => 'Z'); signal ETMCHSE : stdlogicvector ( 1 downto 0 ) := (others => 'Z'); signal ETMDA : stdlogicvector (31 downto 0 ) := (others => 'Z'); signal ETMDABORT : std logic := 'Z'; signal ETMDBGACK : stdjogic := 'Z'; signal ETMDMAS : stdlogicvector ( 1 downto 0 ) := (others => 'Z'); signal ETMDMORE : std logic := 'Z'; signal ETMDnMREQ : std logic := 'Z'; signal ETMDnRW : std logic := 'Z'; signal ETMDSEQ : stdjogic := 'Z'; signal ETMEN : std logic; signal ETMHIVECS : stdjogic := 'Z'; signal ETMIA : std logicvector (31 downto 0 ) := (others => 'Z'); signal ETMIABORT : stdjogic := 'Z'; signal ETMID15Tol 1 : stdjogicvector ( 15 downto 11):= (others => 'Z'); signal ETMID3 lTo25 : stdlogic_vector (31 downto 25 ) := (others => 'Z'); signal ETMInMREQ : std logic := 'Z';

81

Page 100: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

signal ETMINSTREXEC : stdjogic := 'Z'; signal ETMINSTRVALID : stdjogic := 'Z'; signal ETMISEQ : stdjogic := 'Z'; signal ETMITBIT : stdjogic := 'Z'; signal ETMLATECANCEL : stdjogic := 'Z'; signal ETMnWAIT : std logic := 'Z'; signal ETMPASS : stdjogic := 'Z'; signal ETMPROCID : std logicvector ( 31 downto 0 ) := (others => 'Z'); signal ETMPROCIDWR : stdjogic := 'Z*; signal ETMRDATA : stdJogic_vector (31 downto 0 ) := (others => 'Z'); signal ETMZIFIRST : stdjogic := 'Z'; signal ETMZILAST : stdjogic := 'Z'; signal ETMIJBIT : stdjogic := 'Z'; signal ETMRNGOUT : stdJogic_vector (1 downto 0 ) := (others => 'Z'); signal ETMWDATA : stdlogicvector (31 downto 0 ) := (others => 'Z'); signal FIFOFULL : stdjogic;

-- TCM Interface Signáis.

— Suponed. signal DRADDR : stdlogicvector ( 17 downto 0 ) := (others => 'Z'); signal DRCS : stdjogic := 'Z'; signal DRnRW : std logic := 'Z'; signal DRRD : std logic_vector (31 downto 0); signal DRSEQ : std logic := 'Z'; signal DRSIZE : stdjogicvector (3 downto 0 ); signal DRWAIT : stdjogic; signal DRWBL : stdlogicvector (3 downto 0 ) := (others => 'Z'); signal DRWD : std logicvector (31 downto 0 ) := (others => 'Z'); signal IRADDR : stdlogicvector ( 17 downto 0) := (others => 'Z'); signal IRCS : stdjogic := 'Z'; signal IRnRW : stdjogic := 'Z'; signal IRRD : std logicvector (31 downto 0); signal IRSEQ : std logic := 'Z'; signal IRSIZE : stdjogicvector ( 3 downto 0 ); signal IRWAIT : stdjogic; signal IRWBL : stdJogic_vector ( 3 downto 0 ) := (others => 'Z'); signal IRWD : std logic_vector (31 downto 0 ) := (others => 'Z');

-- Instruction DMA signáis. signal IRDMAADDR : stdJogic_vector ( 17 downto 0 ); signal IRDMAEN : std logic := '0'; signal IRDMACS : stdjogic; signal IRIDLE : std logic := 'Z';

— Data DMA signáis. signal DRDMAADDR : stdJogic_vector ( 17 downto 0 ); signal DRDMAEN : std logic := '0'; signal DRDMACS : stdjogic; signal DRIDLE : stdjogic := 'Z';

— Memory-side Interface. -- Instruction memory. signal IADDR : stdJogic_vector (17 downto 0); - Addr.

82

Page 101: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

signal ICE : stdlogicvector (3 downto 0); - Chip enable. signal IOE : stdlogicvector (3 downto 0); -- Output enable. signal IWE : stdlogicvector (3 downto 0); - Write enable. signal ID ATA : stdlogicvector (31 downto 0); - Write enable.

- Data memory. signal DADDR : stdlogicjvector (17 downto 0); -- Addr. signal DCE : stdlogicvector (3 downto 0); -- Chip enable. signal DOE : stdlogicvector (3 downto 0); - Output enable. signal DWE : stdlogicvector (3 downto 0); - Write enable. signal DDATA : stdlogicvector (31 downto 0); - Write enable.

signal ITCMOE : stdlogicjvector (3 downto 0); signal ITCMWE : std_logic_vector (3 downto 0); signal IDMAOE : stdlogicvector (3 downto 0); signal IDMAWE : stdlogic_vector (3 downto 0);

signal DTCMOE : std_logic_vector (3 downto 0); signal DTCMWE : std_logic_vector (3 downto 0); signal DDMAOE : stdjogicvector (3 downto 0); signal DDMAWE : stdlogicvector (3 downto 0);

- Processor confíguration signáis at startup - Location of the reset vectors either 0x00000000 or OxFFFFOOOO

signal VINITHI: stdjogic := '0'; - Start execution from the ITCM/Memory

signal INITRAM : stdjogic := '0';

- Instruction AHB signáis signal DEVICEADDRESS : stdJogic_vector (31 downto 0 ); signal DEVICEDATA : stdJogic_vector (31 downto 0 ); signal DEVICECE : stdlogicvector (3 downto 0 ); signal DEVICEOE : stdlogicvector (3 downto 0 ); signal DEVICEJWE : stdJogic_vector (3 downto 0 );

- Instruction AHB signáis signal DAHBMADDR : stdJogic_vector (MEMORYADDRESSWIDTH - 1 downto 0 ); signal DAHBMDATA : stdJogic_vector (31 downto 0 ); signal DAHBMCE : stdlogicvector (3 downto 0 ); signal DAHBMOE : stdjogicvector (3 downto 0 ); signal DAHBMWE : stdlogicvector (3 downto 0 );

- UNUSED, ONLY FOR COMPLETENESS. —signal HCLK : stdlogic; signal HCLKEN : stdjogic; signal PERIPHERALCE: stdjogic; signal PERIPHERALOE : stdjogic; signal PERIPHERALWE : stdjogic;

- Device signáis

signal DE VICEENAB LE : stdlogicvector (7 downto 0);

83

Page 102: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

— Configuration controller signáis

signal MRESPLATENCY : stdlogic_vector (7 downto 0); signal IGRANTLATENCY : std_logic_vector (7 downto 0); signal DGRANTLATENCY : std_logic_vector (7 downto 0); signal PROCCONF : stdlogicvector (7 downto 0);

-- Configuration controller signáis

signal DEVICE OEMOD : stdjogic; signal DEVICE WEMOD : stdjogic; signal PruebaRegl : stdlogicvector (15 downto 0); signal PruebaReg2 : stdlogicvector (15 downto 0); signal PruebaReg3 : std logicvector (31 downto 0); signal PruebaMul : stdlogicvector (31 downto 0); signal PruebaSum : std logicvector (31 downto 0);

signal scrJVE : std logic := i ' ;

begin

-- Clock generator instance

clkgenerator instance : clkgenerator generic map ( CLK_CYCLE_TIME => CLK_CYCLE_TIME ) port map ( CLK => CLK );

- AHB Arbiter

Arbiter: ahbarbiter port map (

CLK => CLK, IGRANTLATENCY => IGRANTLATENCY, DGRANTLATENCY => DGRANTLATENCY, --HCLK => HCLK,

- Instruction AHB master signáis. IHADDR => IHADDR, IHBURST => IHBURST, IHBUSREQ => IHBUSREQ, IHGRANT => IHGRANT, IHLOCK => IHLOCK, IHPROT => IHPROT, IHREADY => IHREADY, IHRDATA => IHRDATA, IHRESP => IHRESP,

84

Page 103: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

IHSIZE => IHSIZE, IHTRANS => IHTRANS, IHWRITE => IHWRITE,

— Data AHB master signáis. DHADDR => DHADDR, DHBL => DHBL, DHBURST => DHBURST, DHBUSREQ => DHBUSREQ, DHGRANT => DHGRANT, DHLOCK => DHLOCK, DHPROT => DHPROT, DHRDATA => DHRDATA, DHREADY => DHREADY, DHRESP => DHRESP, DHSIZE => DHSIZE, DHTRANS => DHTRANS, DHWDATA => DHWDATA, DHWRITE => DHWRITE,

— AHB signáis to the arbiter. HADDR => HADDR, HBL => HBL, HBURST => HBURST, HLOCK => HLOCK, HPROT => HPROT, HRDATA => HRDATA, HREADY => HREADY, HRESP => HRESP, HSIZE => HSIZE, HTRANS => HTRANS, HBUSREQ => HBUSREQ, HWDATA => HWDATA, H WRITE => H WRITE

);

- Memory controller instances

- Contol the Instruction AHB memory. PeripheralController: ahbcontroller generic map ( — The number of address lines for the memory. MEMORYADDRESSWIDTH => MEMORYADDRESSWIDTH ) port map ( — Synchronization signáis CLK => CLK,

EN =>T, -EN => DEVICEENABLE (0),

— Processor interface signáis

85

Page 104: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

HBL => HBL, HADDR => HADDR, HBURST => HBURST, HLOCK => HLOCK, HPROT => HPROT, HREADY => HREADY, HRDATA => HRDATA, HRESP => HRESP, HSIZE => HSIZE, HTRANS => HTRANS, HWDATA => HWDATA, H WRITE => HWRITE,

— Combined control signáis ADDR => DEVICEADDRESS, DATA => DEVICEDATA, CE => DEVICE_CE, WE => DEVICE_WE, OE => DEVICE_OE );

— Memory chip instances

IAHBMem_0: sram generic map ( NUMADDRBITS => 16, CVENAME => "CHIP 0" ) port map ( ADDR => DEVICEADDRESS (MEMORYADDRESSWIDTH + 1 downto 2), DQ => DEVICE_DATA(7 downto 0), CE => DEVICEENABLE(O), OE => DEVICE_OE(0), WE => DEVICE_WE(0) );

IAHBMem_l: sram generic map ( NUMADDRJBITS => 16, CVENAME => "CHIP 1"

) port map ( ADDR => DEVICE ADDRESS (MEMORYADDRES SWIDTH + 1 downto 2), DQ => DEVICE_DATA(15 downto 8), CE => DEVICEJENABLE(l), OE=>DEVICE_OE(l), WE=>DEVICE_WE(1) );

IAHBMem_2: sram generic map ( NUMADDRBITS => 16, CVENAME => "CHIP 2" )

86

Page 105: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

port map ( ADDR => DEVICEADDRESS (MEMORYADDRESSWIDTH + 1 downto 2), DQ => DEVICE_DATA(23 downto 16), CE => DEVICE_ENABLE(2), OE => DEVICE_OE(2), WE => DEVICE_WE(2)

);

IAHBMem_3: sram generic map ( NUMADDRBITS => 16, CVENAME => "CHIP 3" ) port map ( ADDR => DEVICEADDRESS (MEMORYADDRESSWIDTH + 1 downto 2), DQ => DEVICE_DATA(31 downto 24), CE => DEVICE_ENABLE(3), OE => DEVICE_OE(3), WE => DEVICE_WE(3) );

— Address Decoder

Decoder: addressdecoder generic map (

MEMORYBASEADDRESS => MEMORYBASEADDRESS, MEMORYADDRESSWIDTH => MEMORYADDRESSWIDTH,

INTGENBASEADDRESS => INTGENBASEADDRESS, INTGENADDRESSWIDTH => INT_GEN_ADDRESS_WIDTH,

RESETCONTBASEADDRESS => RESET_CONT_BASE_ADDRESS, RESETCONTADDRESSWIDTH => RESET_CONT_ADDRESS_WIDTH,

CONFCONTBASEADDRESS => CONFCONTBASEADDRESS, CONFCONTADDRESSWIDTH => CONFCONTADDRESSWIDTH,

SCREENBASEADDRESS => SCREENBASEADDRESS, SCREENADDRESSWIDTH => SCREENADDRESSWIDTH

) port map (

CE => DEVICE_CE, HADDR => DEVICEADDRESS, EN => DEVICEENABLE

);

— Reset contoller instance

PERIPHERAL_OE<=DEVICE_OE(0) and DEVICE_OE(l) and DEVICE_OE(2) and DEVICE_OE(3); PERIPHERAL_CE<=DEVICE_CE(0) and DEVICE_CE(1) and DEVICE_CE(2) and DEVICE_CE(3); PERIPHERAL_WE<=DEVICE_WE(0) and DEVICE_WE(1) and DEVICE_WE(2) and

DEVICE_WE(3);

87

Page 106: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

reset_controller_instance : resét_controller generic map ( CLKCYCLETIME => CLKCYCLETIME, INITIALSTARTUPTIME => INITIALSTARTUPTIME

) port map ( CLK => CLK, ADDR => DEVICE_ADDRESS(3 downto 0), DQ => HWDATA, EN => DEVTCE_ENABLE(4), OE => PERIPHERALOE, WE => PERIPHERALWE, CE => PERIPHERALCE, HRESETn => HRESETn, HCLKEN => HCLKEN, DBGnTRST => DBGnTRST );

- Interrupt generator instance

int_generator_instance : int_generator generic map (

CLKCYCLETIME => CLKCYCLETIME )

port map ( CLK => CLK, ADDR => DEVICE_ADDRESS(3 downto 0), DQ => HWDATA, EN => DEVICE_ENABLE(5), CE => PERIPHERALCE, OE => PERIPHERALOE, WE => PERIPHERALWE, INT_LINES (0) => nIRQ, INT_LINES(l)=>nFIQ );

— Configuration controller

ConfigurationController: con fcontroller port map ( EN => DEVICE_ENABLE(6), ADDR => DEVICE_ADDRESS(3 downto 0), DQ => HWDATA, CE => DEVICE_CE, OE => DEVICE_OE, WE => DEVICE_WE, MRESPLATENCY => MRESPLATENCY, IGRANTLATENCY => IGRANTLATENCY, DGRANTLATENCY => DGRANTLATENCY, PROCCONF => PROCCONF

);

88

Page 107: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Screenifc: screen port map (

D => HWDATA( 7 downto 0 ), OE => T, - Q RESET => HRESETn, SET =>T, WE => scr_we

);

scr_we <= DEVICE_WE(0) or DEVICE_ENABLE(7); DEVICE_OE_MOD <= DEVICE_OE(0) and DEVICE_OE(l) and DEVICE_OE(2) and

DEVICE_OE(3); DEVICE_WE_MOD <= DEVICE_WE(0) and DEVICE_WE(0) and DEVICE_WE(0) and

DEVICE_WE(0);

mimodulo: mac Port map(

data => DEVICEDATA, address => DEVICE_ADDRESS(3 downto 2), Registro 1 => PruebaRegl, Registro2 => PruebaReg2, Registro3 => PruebaReg3, Mul32 => PruebaMul, Sum32=> PruebaSum, clk => CLK, CE => scrwe, RE => DEVICE_ENABLE(7) -WE=> DEVICE_WE(0) );

- TCM controller

TCMController: tcmcontroller port map (

CLK => CLK ,

-- Processor-side signáis - DTCM signáis. DRDMAEN => DRDMAEN , DRADDR => DRADDR , DRCS => DRCS , DRnRW => DRnRW , DRRD => DRRD , DRSEQ => DRSEQ , DRSIZE =>DRSIZE , DRWAIT =>DRWAIT , DRWBL => DRWBL , DRWD => DRWD , DRIDLE => DRIDLE ,

89

Page 108: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

— ITCM signáis. IRDMAEN => IRDMAEN , IRADDR => IRADDR , IRCS =>IRCS , IRnRW =>IRnRW , IRRD => IRRD , IRSEQ =>IRSEQ , 1RSIZE =>IRSIZE , IRWAIT =>IRWAIT , IRWBL =>IRWBL , IRWD => IRWD , IRIDLE =>IRIDLE ,

-- Memory-side Interface. — Instruction memory. IADDR => IADDR, ICE =>ICE, IOE => IOE, IWE => IWE, IDATA => IDATA,

— Data memory. DADDR => DADDR, DCE => DCE, DOE => DOE, D WE => DWE , DDATA => DDATA

);

-- TCM memories.

ITCMemO: sram generic map (

NUMADDRBITS => 12, CVENAME => "ITCM 0"

) port map (

ADDR => IADDR (11 downto 0), DQ => IDATA(7 downto 0), CE =>ICE(0), OE =>ITCMOE(0), WE =>ITCMWE(0)

);

ITCMem_l: sram generic map (

NUMADDRBITS => 12, CVE_NAME => "ITCM 1"

) port map (

ADDR => IADDR (11 downto 0), DQ => IDATA(15 downto 8), CE =>ICE(1),

90

Page 109: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

OE => ITCMOE(l), WE => ITCMWE(l)

);

ITCMem_2: sram generic map (

NUMADDRBITS => 12, CVENAME => "ITCM 2"

) port map (

ADDR => IADDR (11 downto 0), DQ => IDATA(23 downto 16), CE =>ICE(2), OE =>ITCMOE(2), WE =>ITCMWE(2)

);

ITCMem_3: sram generic map (

NUMADDRBITS => 12, CVENAME => "ITCM 3"

) port map (

ADDR => IADDR (11 downto 0), DQ => IDATA(31 downto 24), CE =>ICE(3), OE =>ITCMOE(3), WE =>ITCMWE(3)

);

DTCMemO: sram generic map (

NUMADDRBITS => 10, CVENAME => "DTCM 0"

) port map (

ADDR => DADDR (9 downto 0), DQ => DDATA(7 downto 0), CE =>DCE(0), OE =>DTCMOE(0), WE =>DTCMWE(0)

);

DTCMeml: sram generic map (

NUMADDRBITS => 10, CVENAME => "DTCM 1"

) port map (

ADDR => DADDR (9 downto 0), DQ =>DDATA(15 downto 8), CE =>DCE(1), OE =>DTCMOE(l), WE =>DTCMWE(1)

);

91

Page 110: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

DTCMem_2: sram generic map.(

NUMADDRBITS => 10, CVENAME => "DTCM 2"

) port map (

ADDR => DADDR (9 downto 0), DQ => DDATA(23 downto 16), CE =>DCE(2), OE =>DTCMOE(2), WE =>DTCMWE(2)

);

DTCMem_3: sram generic map (

NUMADDRBITS => 10, CVE_NAME => "DTCM 3"

) port map (

ADDR => DADDR (9 downto 0), DQ => DDATA(31 downto 24), CE =>DCE(3), OE =>DTCMOE(3), WE =>DTCMWE(3)

);

DMAController: dmacontroller port map(

CLK => CLK, - Instruction DMA signáis. -- Processor-side signáis. IRDMAADDR => IRDMAADDR, IRDMAEN => IRDMAEN, IRDMACS => IRDMACS, - Memory-side signáis. IOE => IDMAOE, IWE => IDMAWE, -IDATA => IDMADATA, IDATA => IDATA,

- Data DMA signáis. - Processor-side signáis. DRDMAADDR => DRDMAADDR, DRDMAEN => DRDMAEN, DRDMACS => DRDMACS, - Memory-side signáis. DOE => DDMAOE, DWE => DDMAWE, DDATA => DDATA );

ITCMOE <= IOE when (IRDMAEN = '0') else IDMAOE; ITCMWE <= IWE when (IRDMAEN = '0') else IDMAWE;

DTCMOE <= DOE when (DRDMAEN = '0') else DDMAOE; DTCMWE <= DWE when (DRDMAEN = '0') else DDMAWE;

92

Page 111: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

- ARM926E-Srevl processor instance

ARM926EJS_revO : arm926ejs port map (

- Data Bus Signáis - Supported. DHADDR => DHADDR DHBL => DHBL DHBURST => DHBURST DHBUSREQ => DHBUSREQ , DHCLKEN => HCLKEN DHGRANT => DHGRANT DHLOCK => DHLOCK DHPROT => DHPROT DHRDATA => DHRDATA DHREADY => DHREADY DHRESP => DHRESP DHSIZE => DHSIZE DHTRANS => DHTRANS DHWDATA => DHWDATA DHWRITE => DHWRITE HRESETn => HRESETn

- Instruction Bus Signáis - Supported. IHADDR => IHADDR IHBURST => IHBURST IHBUSREQ => IHBUSREQ , IHCLKEN => HCLKEN IHGRANT => IHGRANT , IHLOCK => IHLOCK IHPROT => IHPROT IHREADY => IHREADY IHRDATA => IHRDATA IHRESP => IHRESP IHSIZE => IHSIZE IHTRANS => IHTRANS IHWRITE => IHWRITE

- Coprocessor Signáis - Not Supported. CPABORT => CPABORT CPBURST => CPBURST CPCLKEN => CPCLKEN CPDIN => CPDIN CPDOUT => CPDOUT CPEN => CPEN CPINSTR => CPINSTR CPPASS => CPPASS CPLATECANCEL => CPLATECANCEL , CHSDE => CHSDE CHSEX => CHSEX nCPINSTRVALID => nCPINSTRVALID, nCPMREQ => nCPMREQ

93

Page 112: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

nCPTRANS =>nCPTRANS ,

- Debug Signáis - Not Supported. COMMRX => COMMRX COMMTX => COMMTX DBGACK => DBGACK DBGDEWPT => DBGDEWPT , DBGEN => DBGEN DBGEXT => DBGEXT DBGIEBKPT => DBGIEBKPT , DBGINSTREXEC => DBGINSTREXEC , DBGRNG => DBGRNG DBGRQI => DBGRQI EDBGRQ => EDBGRQ

-- JTAG Signáis - Not Supported. DBGIR => DBGIR DBGnTRST => DBGnTRST , DBGnTDOEN => DBGnTDOEN , DBGSCREG => DBGSCREG , DBGSD1N => DBGSDIN DBGSDOUT => DBGSDOUT , DBGTAPSM => DBGTAPSM , DBGTCKEN => DBGTCKEN , DBGTDI => DBGTDI DBGTDO => DBGTDO DBGTMS => DBGTMS

-- Miscellaneous Signáis. - Supported. CLK => CLK CFGBIGEND => CFGBIGEND , nFIQ => nFIQ nIRQ => nIRQ VINITHI => VINITHI - Not Supported. BIGENDINIT => BIGENDINIT , EXTEST => EXTEST INTEST => INTEST SCANENABLE => SCANENABLE , STANDBYWFI => STANDBYWFI , TAPID =>TAPID TESTMODE => TESTMODE ,

-- ETM Interface Signáis - Not Supported. ETMBIGEND => ETMBIGEND , ETMCHSD => ETMCHSD ETMCHSE => ETMCHSE ETMDA => ETMDA ETMDABORT => ETMDABORT , ETMDBGACK => ETMDBGACK , ETMDMAS => ETMDMAS ETMDMORE => ETMDMORE , ETMDnMREQ => ETMDnMREQ , ETMDnRW => ETMDnRW ETMDSEQ => ETMDSEQ

94

Page 113: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

ETMEN => ETMEN ETMHIVECS =>ETMHIVECS , ETMIA => ETMIA ETMIABORT => ETMIABORT , ETMZIFIRST => ETMZIFIRST , ETMZILAST => ETMZILAST , ETMIJBIT => ETMIJBIT , ETMID15Toll =>ETMID15Toll , ETMID31To25 => ETMID31To25 , ETMInMREQ => ETMInMREQ , ETMINSTREXEC => ETMINSTREXEC , ETMINSTRVALID => ETMINSTRVALID, ETMISEQ => ETMISEQ ETMITBIT => ETMITBIT , ETMLATECANCEL => ETMLATECANCEL, ETMnWAIT => ETMnWAIT , ETMPASS => ETMPASS ETMPROCID => ETMPROCID , ETMPROCIDWR => ETMPROCIDWR , ETMRDATA => ETMRDATA , ETMRNGOUT => ETMRNGOUT , ETMWDATA => ETMWDATA , FIFOFULL => FIFOFULL ,

- TCM Interface Signáis. -- Supported. INITRAM => INITRAM DRADDR => DRADDR DRCS => DRCS DRnRW => DRnRW DRRD => DRRD DRSEQ => DRSEQ DRSIZE => DRSIZE DRWAIT => DRWAIT DRWBL => DRWBL DRWD => DRWD IRADDR => IRADDR IRCS =>IRCS IRnRW => IRnRW IRRD => IRRD IRSEQ => IRSEQ IRSIZE => IRSIZE IRWAIT => IRWAIT IRWBL => IRWBL IRWD => IRWD

- ITCM DMA Interface Signáis. IRDMAADDR => IRDMAADDR , IRDMAEN => IRDMAEN IRDMACS => IRDMACS

- DTCM DMA Interface Signáis. DRDMAADDR => DRDMAADDR , DRDMAEN => DRDMAEN DRDMACS => DRDMACS

95

Page 114: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

- Not Supported. DRIDLE => DRIDLE IRIDLE => IRIDLE

);

end arm926ejs_rev0_tb;

96

Page 115: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

Bibliografía

[I] Mitel. Cifras relevantes de la industria marzo 2007. Pagina. 2, Marzo 2007.

[2] Linda Brackenbury Mike Lewis. A low-power asynchronos dsp architecture for digital

mobile phono chipsets. Proceedings PREP 2000 Pages 120-124, Abril 2000.

[3] L.Besacier, S. Grassi, A. Dufaux, M . Ansorge, F. Pellandini. GSM speech coding and

speaker recognition. University of Neuchatel, A.L. Breguet, University Joseph Fourier, 2000

[4] http://www.etsi.org

[5] Ira A. Gerson and Mark A, Jasiuk, VECTOR SUM EXCITED LINEAR PREDICTION

(VSELP) SPEECH CODING AT 8 KBPS, Chicago Corporate Research and Development

Center, pp 461-464, abril 1990.

[6] Approach", IEEE Computer Society, 1999.

[7] A. Booth. "Asigned Multiplication Technique". QuartellyJ. ofMech. Appl Math. Vol.4, Part2. 1951.

[8] Chetana Nagendra,, Mary Jane Irwin, Robert Michael Owens. Area-Time-Power Tradeoffs in Parallel Adders, ANALOG AND DIGITAL SIGNAL PROCESSING, VOL. 43, NO. 10, OCTOBER 1996.

[9] GSM 6.20 versión 8.0.1, "GSM half rate speech transcoding", ETSI, 1999.

[10] A. Sánchez, E. Baz, I. Gutiérrez, R. Nava, S. García Implementación en VHDL de un módulo de multiplicación basado en algoritmos de Booth Instituto Tecnológico de Orizaba

[II] Mentor Graphics, Seamless user and reference manual, softrare versión 5.6.1 February 2009

[121http://www.xilinx.com/products/design_tools/logic_design/verification/xpower.htm

[13] Gustavo E. Ordóñez-Fernández, Lewin A. López-López, Jaime Velasco-Medina, DISEÑO DE MULTIPLICADORES PARALELOS DE 16 BITS EN FPGAS, Universidad del Valle, A.A. 25360, Cali, Colombia

[14] William Webb Wireless Communications The future, Wiley, 2007

[15] Amara Amara, Frédéric Amiel and Thomas Ea, FPGA vs. ASIC for low power applications, Electronics Department, Instituí Supérieur d'Electronique de Paris-ISEP, 21 rué d'Assas, 75006 Paris, France

97

Page 116: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de:

98

Page 117: INSTITUTO TECNOLÓGICO Y DE ESTUDIOS - … de energÍa para el protocolo gsm half-rate tesis presentada como requisito parcial para obtener el grado acadÉmico de: