Vous êtes sur la page 1sur 22

Sistema de sealizacin telefnica - LabVIEW.

Codificacin/Decodificacin DTMF

Grupo 2 AST-1 Mario E. Casado Garca Manuel ngel Becerra Alonso

AST-1 3 I.T.T. Sistemas de Telecomunicacin

AST-1 3 I.T.T. Sistemas de Telecomunicacin

ndice
Introduccin ........................................................................................................................ 5 Codificacin DTMF en LabVIEW ................................................... 6 Decodificacin DTMF en LabVIEW ............................................... 9 Ejecucin del sistema de sealizacin en 1 DSP ........................ 14 Ejecucin del sistema de sealizacin en 2 DSPs ...................... 15 Conclusiones sobre el trabajo .................................................... 20 Referencias ................................................................................ 21

AST-1 3 I.T.T. Sistemas de Telecomunicacin

ndice de figuras y tablas


Ilustracin 1: Front panel del codificador DTMF. .......................................................................................... 6 Ilustracin 2: Block diagram del codificador DMTF. ..................................................................................... 6 Ilustracin 3: Vista de la ayuda contextual de nuestro Sub-Vi Teclado. ....................................................... 7 Ilustracin 4: Vista general del conexionado del Sub-Vi del codificador. ..................................................... 7 Ilustracin 5: Decodificador DTMF implementando dos caminos para calcular el nmero pulsado............ 9 Ilustracin 6: Front panel decodificador DTMF. ........................................................................................... 9 Ilustracin 7: Grfico separacin de muestras para la obtencin de las salidas fila y columna................. 11 Ilustracin 8: Rectas de las salidas de fila (---) y columna (). ........................................................... 12 Ilustracin 9: Vista del conexionado del Sub-Vi Leds. ................................................................................. 13 Ilustracin 10: Front panel del codificador/decodificador DTMF ejecutado sobre 1 DSP........................... 14 Ilustracin 11: Conexionado en 1 DSP de la parte de codificacin y decodificacin................................... 14 Ilustracin 12: Pulsando el botn 1 en el teclado numrico del codificador. ............................................. 15 Ilustracin 13: Vista general del block diagram y resultados cuando se ha pulsado el botn 1. ............... 16 Ilustracin 14: Sub-Vi del codificador cuando se ha pulsado el botn 1..................................................... 16 Ilustracin 15: Decodificando el nmero 1 en el decodificador. ................................................................. 17 Ilustracin 16: Vista general del block diagram y resultados cuando se ha decodificado el nmero 1...... 18

Tabla 1: Tabla correspondiente a las frecuencias de la prctica. ................................................................. 5 Tabla 2: Asignacin del nmero de fila y columna para montar nuestro array. .......................................... 8 Tabla 3: Asignacin de frecuencia en muestras de la DFT y viceversa para un N = 64............................... 10 Tabla 4: Salidas fila columna identificando nmero pulsado. .................................................................... 12 Tabla 5: Composicin del array esttico para sacar el nmero pulsado. ................................................... 12 Tabla 6: Asignacin de array en funcin de la fila transmitida. ................................................................. 13 Tabla 7: Funcionamiento puerta OR. .......................................................................................................... 13

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Introduccin
El trabajo consiste en la realizacin de un Codificador/Decodificador DTMF (Dual Tone Multi-Frequency) programado en LabVIEW y ejecutado en DSPs de la familia SPEEDY-33, mediante el mdulo module DSP del LabVIEW. DTMF es un sistema de sealizacin telefnica que utiliza simultneamente dos tonos con unas frecuencias determinadas, un tono para las columnas y otro tono para las frecuencias. El plan de frecuencias que se nos asigna para la realizacin del ejercicio es el mostrado en la Tabla 1. Frecuencia columna (Hz) Frecuencia fila (Hz) 1000 1500 2000 5000 1 4 7 5750 2 5 8 6500 3 6 9

Tabla 1: Tabla correspondiente a las frecuencias de la prctica.

La memoria est dividida principalmente en las dos partes ms importantes del trabajo; una primera en la que se habla de cmo se ha realizado el codificador y otra en la que se habla del decodificador, ambas partes estn acompaadas de capturas de pantalla, tablas e imgenes que facilitan la explicacin y compresin de la misma. Adems podemos encontrarnos en la memoria un ejemplo concreto de funcionamiento que ilustra cmo actan las distintas partes de nuestro trabajo final en un caso prctico.

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Codificacin DTMF en LabVIEW


En esta seccin desarrollaremos en detalle la realizacin del codificador DTMF que incluir tambin el teclado numrico. Para ello primeramente veamos una vista general del front panel y del block diagram del codificador en la Ilustracin 1 y 2 respectivamente. Dividiremos nuestro trabajo en dos partes, una de ellas ser el Sub-Vi Teclado y la otra ser la codificacin de la seal propiamente dicha.

Ilustracin 1: Front panel del codificador DTMF.

Ilustracin 2: Block diagram del codificador DMTF.

La forma de enviar nuestra seal codificada ser mediante el teclado numrico, que podemos apreciar en la Ilustracin 1, donde se interactuar para pulsar uno de los botones y de ese modo mandar la informacin correspondiente de fila y columna. Tambin observamos en el front panel los indicadores que reflejan el correcto funcionamiento del codificador. 6

AST-1 3 I.T.T. Sistemas de Telecomunicacin En la Ilustracin 2 podemos ver las distintas partes del codificador, block diagram. En una primera parte, a la izquierda de la imagen, tenemos los botones que conforman el teclado numrico. Estos botones mandan una salida booleana que ser true si el botn est pulsado y false en caso contrario. Estos envan la seal al Sub-Vi Teclado que detallaremos a continuacin.

1.- Sub-Vi Teclado: Antes de entrar en detalle con el Sub-Vi Teclado, veamos de lo que nos informa la ayuda contextual del propio programa, Ilustracin 3. Recordemos que es un Sub-Vi que hemos creado nosotros. Esto nos habla de la facilidad de manejo y gran ayuda que nos proporciona el programa LabVIEW.

Ilustracin 3: Vista de la ayuda contextual de nuestro Sub-Vi Teclado.

Vistas las entradas y salidas que tiene nuestro Sub-Vi pasemos ahora a detallar que es lo que lo compone, veamos la ilustracin 4:

Ilustracin 4: Vista general del conexionado del Sub-Vi del codificador.

AST-1 3 I.T.T. Sistemas de Telecomunicacin En el Sub-Vi, como apreciamos en la imagen, cuando uno de los botones del teclado numrico es pulsado obtendremos un array de cuatro elementos, estos cuatro elementos corresponden primeramente al nmero pulsado (posicin 0 del array), en segundo lugar la columna, en tercer lugar la fila y por ultimo un 1 para indicar que el botn esta pulsado. En el caso de que no est pulsado el botn mandara un array tambin de 4 elementos, pero todos ellos a 0. Despus realizaremos una suma de todos los arrays, de tal manera que en el ultimo modulo de suma obtendremos el array correspondiente al nmero pulsado, ya que el resto de los arrays estn a 0_0_0_0. Posicin 1 del array 1 2 3 1 1 4 7 2 2 5 8 3 3 6 9

Posicin 2 del array

Tabla 2: Asignacin del nmero de fila y columna para montar nuestro array.

Seguidamente nos encontramos con una batera de herramientas Index Array las cuales nos extraen el valor de la posicin, indicada que le pasemos, del array que le llegue, de tal manera que con cuatro mdulos tenemos en elementos separados la fila, la columna, el estado y el nmero pulsado.

2.- Codificacin de la seal: Avanzando en el block diagram del codificador, nos encontramos con que se divide en dos partes, una para las filas y otra para las columnas, ambas partes son idnticas, salvo por los valores de los arrays. En ambas partes se aborda desde el indicador que nos da el nmero de fila (o columna) del nmero pulsado, y a partir de la herramienta Index Array, extraemos el valor de la posicin del array, a partir del valor del indicador, predefinido con las frecuencias de fila (o columna). La salida de esta ltima herramienta atacar a la entrada de la frecuencia de nuestro generador sinusoidal de fila (o columna), que ser el encargado de general la seal a transmitir. Indicar que para hacer que la seal sea nula en el caso de que no se est pulsado ningn botn utilizaremos el indicador de estado que ser introducido en la amplitud del generador sinusoidal. En el caso de tener un nmero pulsado se tendr valor de estado igual a 1, que ser multiplicado por 200 para aumentar la amplitud de la seal, es decir, amplificacin de la seal. En el caso de que ningn botn este pulsado el estado estar a 0, ya que 0 x 200 = 0, luego la amplitud y por tanto la seal sern nulas. Finalmente sumaremos las dos seales que salen de los generadores sinusoidales convirtiendo la seal en una sola que contendr la informacin de las dos. Esta ser enviada a un convertidor de seal digital a analgica que enviar la seal en analgica por la salida del DSP (DSP output), siendo esta salida analgica llevada a otro DSP que ser nuestro decodificador. 8

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Decodificacin DTMF en LabVIEW


La parte de decodificacin extrae la informacin que ha sido enviada por el codificador, e interpreta dicha informacin para poder averiguar la fila y columna del nmero transmitido. Una vez conocida la fila y columna se calcular por algn mtodo, nosotros hemos implementado dos caminos para ello, el botn pulsado. Vamos a dividir este apartado en cuatro partes; la primera de ellas corresponder a la parte de decodificar la seal mediante algoritmo DFT (concretamente FFT) para obtener la fila y columna transmitida, otras dos correspondern a los dos caminos implantados para calcular el nmero pulsado, y la ltima corresponder al Sub-Vi Leds. Veamos antes de nada una captura de pantalla completa del decodificador, block diagram, para situarnos, Ilustracin 5:

Ilustracin 5: Decodificador DTMF implementando dos caminos para calcular el nmero pulsado.

El front panel mostrar mediante indicadores y grficas los resultados que se estn obteniendo en el block diagram, Ilustracin 6.

Ilustracin 6: Front panel decodificador DTMF.

AST-1 3 I.T.T. Sistemas de Telecomunicacin 1.- Decodificacin de la seal mediante algoritmo DFT (obtencin de fila y columna): Primeramente destacar que la seal codificada que recibimos en el decodificador nos llega por la entrada analgica del DSP (DSP input), que no es ms que la seal que sale del codificador DTMF. Todo ello lo hacemos con el bloque A/D el cual est configurado a un frameside de 64 muestras con una tasa de muestro (Sample Rating) de 24000 Hz, elegida esta ltima por ser mltiplo de 16000 Hz que era la tasa de muestreo en nuestro generador de seal sinusoidal, vase el apartado del codificador DTMF. A continuacin disponemos de un controlador de seal para que no se muestre seal alguna cuando no se est transmitiendo informacin, es decir, evitamos que se reflejen trazas en las grficas y en los indicadores debido al ruido. Lo conseguimos mediante un umbral de paso, l cual, mediante una extraccin del valor mximo en amplitud de la seal mediante el bloque Array Max Min, dejar pasar la seal tal cual en el caso de que la comparacin booleana entre el umbral y el valor mximo de la seal sea true (nivel en amplitud de la seal mayor que el umbral). En el caso false se pasar un array de ceros con el mismo nmero de muestras que el frameside del bloque A/D, es decir, un array de 64 ceros. A partir de ahora nos centraremos en la DFT (Transformada Discreta de Fourier), para pasar la seal del dominio del tiempo al dominio de la frecuencia y as poder distinguir los picos de seal que generan las sinusoides en frecuencia. Los primeros bloque se corresponden con un Split y un Pad, que se encargan de dividir la seal en bloques (frameside) y padearla (introducir ceros en caso de que nuestro frameside sea ms pequeo que la DFT a calcular) respectivamente. Estos dos bloques en nuestro caso no estn haciendo nada ya que el frameside del bloque A/D es de 64 muestras y queremos una DFT de 64 puntos, por lo que estos bloques estn redundantes y se podran quitar; pero a modo de aprendizaje y juego constan y se podra poner otra configuracin para que s estuvieran actuando (por ejemplo, un frameside en A/D de 128 y un Split de 64). Pero, por qu queremos una DFT de 64 puntos, es decir, N = 64? Este es el mnimo valor de la DFT, que hace que el muestreo de la TF (DFT) sea ptimo a la hora de detectar el tono, es decir, que el tono caigua en una muestra entera de la DFT. Lo calculamos: w = 2 f/fs f/fs = K/N; siendo fs = 16000 Hz y f las frecuencias de fila y columna w = 2 K/N Entonces el mnimo N de la DFS mltiplo de dos (debido a que estamos utilizamos FFT base 2) que d como resultado un K entero ser N = 64, orden 6 de la DFT, ya que para el resto de mltiplos de dos menores, el K no es entero en alguna de las frecuencias. As que: Fila f = 1000 Hz f = 1500 Hz f = 2000 Hz K=4 K=6 K=8 f = 5000 Hz f = 5750 Hz f = 6500 Hz Columna K = 20 K = 23 K = 26

Tabla 3: Asignacin de frecuencia en muestras de la DFT y viceversa para un N = 64.

10

AST-1 3 I.T.T. Sistemas de Telecomunicacin Una vez hemos realizado la DFT con el bloque EMB Real FFT nos interesa saber el mdulo de la misma, para ello utilizamos la herramienta ReIm To Polar que convierte las partes real e imaginaria en mdulo y fase. Ya con el mdulo de la DFT procedemos a sacar grficos para poder observar los picos de fila y columna transmitidos de la seal cuando se est pulsando algn nmero. Ntese que el grfico escalado en frecuencia tiene un factor de escala de x250, debido a 16000 Hz/64 muestras. Para finalizar nos queda dividir la seal para obtener la salida de fila y columna del nmero pulsado. El mdulo de la DFT tiene 64 muestras (array de 64 posiciones) de las cuales 32 estn repetidas debido a la periodicidad de la DFT, por lo que descartamos las 32 ltimas con el bloque Divisor dividiendo la seal en 32 y cogiendo solo la primera salida. Ahora, de esas 32 muestras tenemos que distinguir filas y columnas por lo que volvemos a dividir la seal en dos pero en este caso a 16 muestras cada una obteniendo en las dos salidas del bloque divisor las muestras de fila y columna, vase la Ilustracin 7. Por ltimo extraemos la posicin en la que est la muestra del pico transmitido, que ser nuestra salida, gracias a la herramienta Array Max Min en su salida Index Max, ya que detecta el valor mximo de la seal en amplitud, que se corresponder con el pico transmitido, y devuelve su posicin con respecto al array que se le pasa.

Ilustracin 7: Grfico separacin de muestras para la obtencin de las salidas fila y columna.

2.- Nmero pulsado calculado por fuerza bruta: Una vez hemos llegado a la salida de fila y columna con la clasificacin descrita anteriormente, el siguiente paso ser transformar esa informacin para obtener el nmero del botn pulsado. Primeramente y mediante un Index Array extraemos los valores de fila y columna transmitidos a travs de arrays estticos predefinidos en las posiciones de las salidas de fila y columna. As pues quedara:

0_0_0_0_1_0_0_2_0_0_3 0_0_0_0_1_0_2_0_3

array de columnas; 4_6_8

4_7_10

Salida columnas

array de filas;

Salida filas

11

AST-1 3 I.T.T. Sistemas de Telecomunicacin Ahora bien, ya tenemos el valor de fila y columna transmitido, por lo que solo nos queda calcular el nmero del botn pulsado. Pare ello partimos, como hicimos con fila y columna, de un array esttico predefinido cuyas posiciones, correspondientes a los valores del nmero transmitido, son la suma de las salidas de fila y columna:

+ 4 6 8

4 1 4 7

7 2 5 8

10 3 6 9

La suma de las salidas de fila y columna ser la posicin del array cuyo valor, que contendr el valor del nmero, ser extrado con la herramienta Index Array:

Tabla 4: Salidas fila columna identificando nmero pulsado.

Posicin array Valor array

0 0

1 0

2 0

3 0

4 0

5 0

6 0

7 0

8 1

9 0

10 4

11 2

12 7

13 5

14 3

15 8

16 6

17 0

18 9

Tabla 5: Composicin del array esttico para sacar el nmero pulsado.

3.- Nmero pulsado calculado por algoritmo: Partiendo, como en el anterior apartado, de las salidas fila y columna correspondientes a 4_6_8 y 4_7_10 respectivamente, vemos que podemos aplicar un algoritmo para poder calcular el botn pulsado. El algoritmo estara basado en la ecuacin de la recta para poder convertir esos valores en 1_2_3. Partamos de la grfica de la Ilustracin 8: Lo primero de todo es calcular la ecuacin de la recta para las salidas de fila y columna. As pues quedaran de la siguiente manera: y = 3x + 1 y = 2x + 2 x = (y 1)/3 x = (y - 2)/2 Salidas columna Salidas fila

Donde y sera el nmero 4_6_8 para la salida de fila y 4_7_10 para la salida de columnas, y x sera el valor buscado 1_2_3 en ambos casos. En el caso de ningn botn pulsado nuestra y sera 0 dando lugar a una x negativa que se reflejara en el indicador de fila y columna. Para solventar este inconveniente hemos introducido un comparador ms la herramienta Case para que todo valor menor o igual a 0 sea reflejado como 0 en los indicadores de fila y columna. Con todo esto ya sabemos la fila y columna transmitidas por el codificador, que son mostradas en el front panel.

Ilustracin 8: Rectas de las salidas de fila (---) y columna ().

12

AST-1 3 I.T.T. Sistemas de Telecomunicacin Partiendo de que ya sabemos la fila y la columna transmitidas solo nos queda calcular el nmero pulsado. Lo primero de todo es comparar la fila transmitida con los valores 1, 2 y 3, y junto con la herramienta Case y sumas de arrays obtenemos un array con los nmeros de la fila correspondiente, ya que las comparaciones false generan un array nulo en el Case. Array fila 1 1 2 3 Array fila 2 4 5 6 Array fila 3 7 8 9
Tabla 6: Asignacin de array en funcin de la fila transmitida.

Por ltimo utilizaremos la herramienta Index Array para extraer del array antes mencionado el valor de la posicin correspondiente a el valor de la columna menos uno, ya que los arrays comienzan en la posicin 0.

4.- Sub-Vi Leds: En este apartado mostramos el conexionado del Sub-Vi Leds incluido en el decodificador DMTF, Ilustracin 9. Como podemos ver a partir del nmero decodificado se harn una serie de comparaciones booleanas cuyas salidas irn a su puerta OR correspondiente, puesta esta para el caso del nmero 9 en el que se encienden todos los Leds, que atacarn, estas ltimas puertas, directamente a la batera de Leds (a cuya entrada si le llega un true se encender el Led de la tarjeta del DSP).

Ilustracin 9: Vista del conexionado del Sub-Vi Leds.

OR 0 1

0 0 1

1 1 1

Tabla 7: Funcionamiento puerta OR.

13

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Ejecucin del sistema de sealizacin en 1 DSP


No vamos a entrar en detalle en este apartado ya que hemos ido explicando el codificador DMTF y el decodificador DTMF y posteriormente haremos una extensa explicacin sobre la codificacin/decodificacin de un botn pulsado sobre dos DSPs que creemos es mucho ms interesante. Este apartado esta a modo de curiosidad, aprendizaje y funcionamiento.

Ilustracin 10: Front panel del codificador/decodificador DTMF ejecutado sobre 1 DSP.

Como podemos ver en la Ilustracin 10 el front panel tiene indicadores tanto de la parte de codificacin como de decodificacin. Esta ejecucin nos ha servido para desarrollar nuestro programa ms rpido ya que podemos apreciar todo el ciclo de ejecucin centralizado en una sola pantalla, y podemos hacer mejoras y correcciones mucho ms rpido. De lo visto hasta ahora, el codificador enviaba la seal a una salida analgica (DSP output) y el decodificador reciba esa seal analgica (DSP input). Para este caso no necesitamos tales salidas ni entradas, simplemente conectamos la parte de codificacin y decodificacin unidas por un cable como se muestra en la Ilustracin 11.

Ilustracin 11: Conexionado en 1 DSP de la parte de codificacin y decodificacin.

14

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Ejecucin del sistema de sealizacin en 2 DSPs


En esta seccin profundizaremos en el funcionamiento - ejecucin del codificador y decodificador en dos DSPs distintos, de modo que el teclado y el codificador se ejecutan en un DSP y el decodificador en el otro, como hemos visto hasta ahora. Para ello hemos querido ilustrar mediante capturas de pantalla la codificacin/decodificacin DTMF del nmero pulsado 1, explicando que es lo que est sucediendo internamente en cada uno de los pasos.

1.- Vayamos en orden y comencemos por el codificador, primer DSP:

Ilustracin 12: Pulsando el botn 1 en el teclado numrico del codificador.

Una vez pulsado el botn 1 podemos ver en el front panel, Ilustracin 12, toda la informacin que hemos considerado oportuna mostrar mediante indicadores colocados en el block diagram. As podemos ver a simple vista que el botn pulsado corresponde al nmero 1, y que su correspondiente fila y columna es 1 y 1 respectivamente. Tambin podemos observar el indicador del estado que, como ya se explico anteriormente en el codificador, est a 1 indicando botn pulsado. Y finalmente, a modo de test y rpida comprensin, podemos ver los indicadores correspondientes de las frecuencias a las que se estn generando las seales sinusoidales de fila y columna que en este caso son 1000 Hz y 5000 Hz respectivamente. Vista la interfaz de usuario, front panel, pasaremos ahora a detallar lo que est pasando por dentro de la programacin por diagrama en el codificador, el block diagram. Una vez pulsado el botn 1 podemos observar, Ilustracin 13, que el pulsador 1 est a true y todos los dems estn a false. Esto har que el Sub-Vi del codificador, Ilustracin 14, saque de la suma de todos los pulsadores el array 1_1_1_1. De este array y con la herramienta Index Array vamos extrayendo las posiciones que nos interesan en cada caso de este segn el siguiente cdigo (Nmero - 0, Columna - 1, Fila - 2, Estado - 3), sabiendo que la posicin primera del array es la nmero 0. As pues tendremos que el nmero corresponde al 1, la columna es la 1, la fila es la 1 y el estado es 1 (activo).

15

AST-1 3 I.T.T. Sistemas de Telecomunicacin

T 5000

1 1 F

Salida DSP

1000

Ilustracin 13: Vista general del block diagram y resultados cuando se ha pulsado el botn 1.

T 1111

Ilustracin 14: Sub-Vi del codificador cuando se ha pulsado el botn 1.

Ya obtenida toda la informacin del array, pasemos ahora a trabajar con ella de cara a codificar la seal a enviar, para su posterior decodificacin. La informacin del estado, aparte de indicar que uno de los botones est pulsado, nos servir a la hora de generar las sinusoides, haciendo que cuando no se est pulsando uno de los botones las seales generadas sean de amplitud 0. Cuando s se est pulsando uno de los botones se enviar un 1 que ser multiplicado (amplificado) por 200 de cara a que el detectado de la seal en el decodificador sea ms sencillo (ruido) al enviar una sinusoide de amplitud 200. Hasta ahora bien, pero cmo escogemos las frecuencias de nuestras sinusoides? 16

AST-1 3 I.T.T. Sistemas de Telecomunicacin Bien, pues esta respuesta es bien sencilla en nuestro planteamiento de la problemtica; como hicimos anteriormente cogemos un par de arrays predefinidos con las frecuencias de las filas y las columnas y con la herramienta Index Array extraemos las posiciones que nos interesan en funcin del nmero de fila y columna que le llega. Y las extracciones de los arrays sern las frecuencias que les lleguen a los generadores de las sinusoides. El ltimo paso consistir en sumar las sinusoides y enviarlas por una salida digital a analgica, que se corresponde con la salida analgica del DSP (DSP output).

2.- Segundo DSP Decodificador:

Ilustracin 15: Decodificando el nmero 1 en el decodificador.

Fijemos en la captura de pantalla del front panel realizada en el PC del segundo DSP, Ilustracin 15; en ella podemos observar que la salida, es decir, la decodificacin, se corresponde correctamente con el nmero 1. Adems se nos muestra la fila y columna al que pertenece el nmero, en nuestro caso 1 y 1 respectivamente que son las de nuestro nmero 1. Aparte se nos da informacin duplicada, pero esto no es un error, simplemente se ha realizado la decodificacin de la seal empleando dos formas diferentes, la fuerza bruta y aplicando un algoritmo, como se explic anteriormente en la seccin de decodificacin DTMF. Otro tipo de informacin se da en la parte inferior de la imagen, en la que se muestra la seal en el dominio frecuencial discreto una vez realizada la DFT. sta se representa en dos grficas una escalada en muestras y la otra en frecuencia, las dos a modo de curiosidad y de test. Y efectivamente podemos observar a simple vista que estamos decodificando el nmero 1 el cual se corresponde con las frecuencias de 1000 Hz (fila) y 5000 Hz (columna), o lo que es lo mismo picos de seal en las muestras 4 y 20 de la DFT respectivamente. Pasemos ahora a analizar paso por paso la decodificacin en el block diagram, Ilustracin 16.

17

AST-1 3 I.T.T. Sistemas de Telecomunicacin Entrada DSP

1 1 T 1

T 2 forma de decodificacin T 1 1 1 T
Ilustracin 16: Vista general del block diagram y resultados cuando se ha decodificado el nmero 1.

La seal procedente del primer DSP nos llega a travs de la entrada analgica a digital, que se corresponde con la entrada analgica del DSP (DSP input). Extraemos el valor de amplitud mxima de la seal, con la herramienta Array Max Min, y lo comparamos con un umbral para que no nos salga seal alguna cuando no se est transmitiendo nada (evitamos que salga seal decodificada alguna debido al ruido, pasando a la siguiente etapa un array de 64 muestras a 0, debido a nuestro frameside de 64 en el bloque A/D de la entrada). Como en este caso si estamos transmitiendo informacin pasar tal cual la seal, sin modificacin alguna, true en la herramienta Case, debido que se est transmitiendo una seal con amplitud mayor que la del umbral. Como ya vimos en la seccin de decodificacin DTMF, pasamos la seal al dominio discreto, vase dicha seccin, y obtenemos al final del todo una salida con los valores 4, 6 y 8 correspondientes a las filas 1, 2 y 3; y otra salida con los valores 4, 7 y 10 correspondientes a las columnas 1, 2 y 3. En este punto y centrndonos en el caso que nos atae, distinguimos las dos formas de calcular el nmero pulsado. a. Por fuerza bruta: Siguiendo la filosofa que hicimos en la codificacin se monta un array predefinido cuyos valores son los nmeros del 1 al 9 en las posiciones que se corresponden de sumar las dos salidas mencionadas anteriormente. En nuestro caso la suma sera 4 + 4 = 8; con lo que extraeramos del array el valor de la posicin 8 con la herramienta Index Array, que sara el valor 1. Para el valor de fila y columna se hara exactamente igual pero solo con una de las salidas para cada caso. La fila de valor 1 se extraera de la posicin 4 del array fila y la columna de valor 1 se extraera de la posicin 4 del array columna.

18

AST-1 3 I.T.T. Sistemas de Telecomunicacin b. Por algoritmo: A las salidas anteriormente citadas les aplicamos el algoritmo explicado en la seccin decodificacin DTMF. Para la fila obtenemos 4 2 = 2 x 0,5 = 1; y para la columna 4 1 = 3 x 0,3333333333 = 1. En los dos casos el resultado va a ser mayor que 0, con lo que estara a true el Case y dejara pasar la seal tal cual (si no fuera as, false, meteramos un 0). El valor de la fila lo compararemos con el valor 1, 2 y 3, y solo la comparacin igual a 1 sera true en el Case, con lo que obtendramos a la salida de la suma de arrays el array 1_2_3, ya que los dems arrays son de ceros debido a que no se cumple, false. De este ltimo array sacaremos gracias a la herramienta Index Array el valor del nmero decodificado; para ello extraeremos el nmero decodificado de la posicin del array valor de columna 1 = 0, es decir, el nmero 1.

19

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Conclusiones sobre el trabajo


La prctica final ha sido un compendio de todo lo aprendido en todas las prcticas anteriores, y nos ha servido esta ltima para pensar cmo resolver un problema prctico real y poner en prctica todos los conocimientos adquiridos en la asignatura. Durante el desarrollo de la misma nos ha surgido algn que otro problema de cara a como implementar la solucin buscada sobre el papel, y es que el modulo DSP del LabVIEW con el que trabajamos (tarjeta SPEEDY-33) estaba limitado de cara por ejemplo a implementar matrices, no as el programa LabVIEW general. No es que lo consideremos una limitacin sino un problema de base y de que tenamos que haber empezado a desarrollar nuestra solucin partiendo de lo que disponamos para desplegarla. El diseo de nuestra solucin no est optimizado para una menor carga computacional y ahorro de memoria. No pensamos en ello a la hora de disear y hemos empleado mucha memoria, arrays en lugar de algoritmos. Al ser un diseo sencillo no tenemos problemas con la memoria ya que hay suficiente y nuestro diseo, a baja escala, es muy eficiente ya que tiene muy poca carga computacional. Pero claro est que si fuera un diseo mayor tendramos que ahorrar memoria en detrimento de aumentar la carga computacional. Hemos optado por arrays estticos de los cuales obtenemos informacin, nos ha resultado una solucin fcil de implementar y de jugar con ella para obtener lo que se nos peda. A la hora de decodificar la seal para obtener la informacin necesaria, a parte del empleo de arrays, hemos implementado otro camino de decodificacin de la seal paralelo en el que utilizamos algoritmos para obtener la informacin necesaria, el cual tiene ms carga computacional pero menor coste de memoria y ms escalabilidad. El software LabVIEW es una herramienta a nuestro entender muy potente con la que se puede hacer muy diferentes tareas (programacin, simulacin,.). Divide el programa en dos partes de manera muy inteligente separando la parte de control e indicadores de la parte de programacin, estructuras, uniones,.. Es una herramienta muy intuitiva y fcil de utilizar, por lo menos al nivel que la utilizbamos nosotros, con la que se puede aprender muchas cosas relacionadas con el Tratamiento Digital de la Seal. La asignatura AST-1 creemos que complementa de una manera muy prctica lo visto en la asignatura de 2 curso de I.T.T. en Sistemas de Telecomunicacin TDS, y consideramos que para un mayor rendimiento, aprovechamiento y asimilacin de los conceptos de la asignatura AST-1 se debera haber visto TDS. En general y hablando o modo individual, nos ha gustado la asignatura sobre todo porque es muy prctica y trata temas ya vistos en la ingeniera, lo cual ayuda a comprender y asimilar conceptos de cara a la problemtica de la vida real. Hay una cosa que nos ha parecido mejorable, aunque no creemos que se repita, y es la previsin a la hora de instalar en los PCs del aula el LabVIEW.

20

AST-1 3 I.T.T. Sistemas de Telecomunicacin

Referencias
[1] Labview: entorno grfico de programacin; Jos Rafael Lajara Vizcano y Jos Pelegr Sebasti. Editorial Marcombo; ISBN 978-84-267-1426-8. [2] Labview digital signal processing: and digital communications; Cory L. Clark. Editorial McGraw-Hill; ISBN 0-07-144492-0. [3] Labview advanced programming techniques; Rick Bitter, Taqi Mohiuddin and Matt Nawrocki. Editorial CRC Press/Taylor & Francis Group; ISBN 978-0-8493-3325-5. [4] Digital Signal Processing System-Level Design Using LabVIEW; Nasser Kehtarnavaz and Namjin Kim. Editorial Elsevier; ISBN 0-7506-7914-X.

21

AST-1 3 I.T.T. Sistemas de Telecomunicacin

22