22
 Sistema de señalización telefónica - LabVIEW. Codificación/Decodificación DTMF Grupo 2 AST-1 Mario E. Casado García Manuel Ángel Becerra Alonso

Labview Cod DeCod DTMF

  • Upload
    nenefi

  • View
    255

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 1/22

 

Sistema de señalización

telefónica - LabVIEW.

Codificación/Decodificación DTMF

Grupo 2 AST-1

Mario E. Casado García

Manuel Ángel Becerra Alonso

Page 2: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 2/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

2

Page 3: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 3/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

3

Índice

Introducción........................................................................................................................5 

Codificación DTMF en LabVIEW ................................................... 6

Decodificación DTMF en LabVIEW ............................................... 9

Ejecución del sistema de señalización en 1 DSP ........................ 14

Ejecución del sistema de señalización en 2 DSP’s ...................... 15

Conclusiones sobre el trabajo .................................................... 20

Referencias ................................................................................ 21 

Page 4: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 4/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

4

Índice de figuras y tablas 

Ilustración 1: Front panel del codificador DTMF. .......................................................... ................................ 6 

Ilustración 2: Block diagram del codificador DMTF. ................................................... .................................. 6 

Ilustración 3: Vista de la ayuda contextual de nuestro Sub-Vi Teclado. ....................................................... 7  

Ilustración 4: Vista general del conexionado del Sub-Vi del codificador. ......................................... ............ 7  

Ilustración 5: Decodificador DTMF implementando dos caminos para calcular el número pulsado. ........... 9 

Ilustración 6: Front panel decodificador DTMF. .......... ........................................................... ...................... 9 

Ilustración 7: Gráfico separación de muestras para la obtención de las salidas fila y columna. ................ 11 

Ilustración 8: Rectas de las salidas de fila (-··-··-) y columna (·······). .......................................................... . 12 

Ilustración 9: Vista del conexionado del Sub-Vi Leds. ............................................................. .................... 13 

Ilustración 10: Front panel del codificador/decodificador DTMF ejecutado sobre 1 DSP. .......................... 14 

Ilustración 11: Conexionado en 1 DSP de la parte de codificación y decodificación................................... 14 

Ilustración 12: Pulsando el botón 1 en el teclado numérico del codificador. ............................................. 15 

Ilustración 13: Vista general del block diagram y resultados cuando se ha pulsado el botón 1. ......... ...... 16 

Ilustración 14: Sub-Vi del codificador cuando se ha pulsado el botón 1. ................................................... . 16 

Ilustración 15: Decodificando el número 1 en el decodificador. ....................................................... .......... 17  

Ilustración 16: Vista general del block diagram y resultados cuando se ha decodificado el número 1...... 18 

Tabla 1: Tabla correspondiente a las frecuencias de la práctica. ..................................................... ............ 5 

Tabla 2: Asignación del número de fila y columna para montar nuestro array. .......................................... 8 

Tabla 3: Asignación de frecuencia en muestras de la DFT y viceversa para un N = 64............................... 10 

Tabla 4: Salidas fila columna identificando número pulsado. .................................................................... 12 Tabla 5: Composición del array estático para sacar el número pulsado. ................................................... 12 

Tabla 6: Asignación de array en función de la fila transmitida. ................................................................. 13 

Tabla 7: Funcionamiento puerta OR. ........................................................................................................ .. 13 

Page 5: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 5/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

5

Introducción

El trabajo consiste en la realización de un Codificador/Decodificador DTMF (Dual Tone

Multi-Frequency ) programado en LabVIEW y ejecutado en DSP’s de la familia SPEEDY-33,

mediante el módulo module DSP del LabVIEW. DTMF es un sistema de señalización telefónica

que utiliza simultáneamente 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

realización del ejercicio es el mostrado en la Tabla 1.

Frecuencia columna (Hz)

Frecuencia fila (Hz) 5000 5750 6500

1000 1 2 3

1500 4 5 62000 7 8 9

Tabla 1: Tabla correspondiente a las frecuencias de la práctica.

La memoria está dividida principalmente en las dos partes más importantes del

trabajo; una primera en la que se habla de cómo se ha realizado el codificador y otra en la que

se habla del decodificador, ambas partes están acompañadas de capturas de pantalla, tablas e

imágenes que facilitan la explicación y compresión de la misma. Además podemos

encontrarnos en la memoria un ejemplo concreto de funcionamiento que ilustra cómo actúan

las distintas partes de nuestro trabajo final en un caso práctico.

Page 6: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 6/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

6

Codificación DTMF en LabVIEW

En esta sección desarrollaremos en detalle la realización del codificador DTMF que

incluirá también el teclado numérico. Para ello primeramente veamos una vista general del

  front panel y del block diagram del codificador en la Ilustración 1 y 2 respectivamente.

Dividiremos nuestro trabajo en dos partes, una de ellas será el Sub-Vi Teclado y la otra será la

codificación de la señal propiamente dicha.

Ilustración 1: Front panel del codificador DTMF.

Ilustración 2: Block diagram del codificador DMTF.

La forma de enviar nuestra señal codificada será mediante el teclado numérico, que

podemos apreciar en la Ilustración 1, donde se interactuará para pulsar uno de los botones y

de ese modo mandar la información correspondiente de fila y columna. También observamosen el front panel los indicadores que reflejan el correcto funcionamiento del codificador.

Page 7: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 7/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

7

En la Ilustración 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

numérico. Estos botones mandan una salida booleana que será true si el botón está pulsado y

 false en caso contrario. Estos envían la señal al Sub-Vi Teclado que detallaremos a

continuación.

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, Ilustración 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.

Ilustración 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 ilustración 4:

Ilustración 4: Vista general del conexionado del Sub-Vi del codificador.

Page 8: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 8/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

8

En el Sub-Vi, como apreciamos en la imagen, cuando uno de los botones del teclado

numérico es pulsado obtendremos un array de cuatro elementos, estos cuatro elementos

corresponden primeramente al número pulsado (posición 0 del array), en segundo lugar la

columna, en tercer lugar la fila y por ultimo un 1 para indicar que el botón esta pulsado. En el

caso de que no esté pulsado el botón mandara un array también de 4 elementos, pero todos

ellos a 0. Después realizaremos una suma de todos los arrays, de tal manera que en el ultimo

modulo de suma obtendremos el array correspondiente al número pulsado, ya que el resto de

los arrays están a 0_0_0_0.

Posición 1 del array

Posición 2 del array

1 2 3

1 1 2 3

2 4 5 6

3 7 8 9

Tabla 2: Asignación del número de fila y columna para montar nuestro array.

Seguidamente nos encontramos con una batería de herramientas Index Array  las

cuales nos extraen el valor de la posición, indicada que le pasemos, del array que le llegue, de

tal manera que con cuatro módulos tenemos en elementos separados la fila, la columna, el

estado y el número pulsado.

2.- Codificación de la señal:

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 idénticas, salvo por los

valores de los arrays. En ambas partes se aborda desde el indicador que nos da el número de

fila (o columna) del número pulsado, y a partir de la herramienta Index Array , extraemos el

valor de la posición 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 señal

a transmitir.

Indicar que para hacer que la señal sea nula en el caso de que no se esté pulsadoningún botón utilizaremos el indicador de estado que será introducido en la amplitud del

generador sinusoidal. En el caso de tener un número pulsado se tendrá valor de estado igual a

1, que será multiplicado por 200 para aumentar la amplitud de la señal, es decir, amplificación

de la señal. En el caso de que ningún botón este pulsado el estado estará a 0, ya que 0 x 200 =

0, luego la amplitud y por tanto la señal serán nulas.

Finalmente sumaremos las dos señales que salen de los generadores sinusoidales

convirtiendo la señal en una sola que contendrá la información de las dos. Esta será enviada a

un convertidor de señal digital a analógica que enviará la señal en analógica por la salida del

DSP (DSP output ), siendo esta salida analógica llevada a otro DSP que será nuestrodecodificador.

Page 9: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 9/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

9

Decodificación DTMF en LabVIEW

La parte de decodificación extrae la información que ha sido enviada por el

codificador, e interpreta dicha información para poder averiguar la fila y columna del número

transmitido. Una vez conocida la fila y columna se calculará por algún método, nosotros hemos

implementado dos caminos para ello, el botón pulsado.

Vamos a dividir este apartado en cuatro partes; la primera de ellas corresponderá a la

parte de decodificar la señal mediante algoritmo DFT (concretamente FFT) para obtener la fila

y columna transmitida, otras dos corresponderán a los dos caminos implantados para calcular

el número pulsado, y la última corresponderá al Sub-Vi Leds. Veamos antes de nada una

captura de pantalla completa del decodificador, block diagram, para situarnos, Ilustración 5:

Ilustración 5: Decodificador DTMF implementando dos caminos para calcular el número pulsado.

El   front panel mostrará mediante indicadores y gráficas los resultados que se están

obteniendo en el block diagram, Ilustración 6.

Ilustración 6: Front panel decodificador DTMF.

Page 10: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 10/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

10

1.- Decodificación de la señal mediante algoritmo DFT (obtención de fila y columna):

Primeramente destacar que la señal codificada que recibimos en el decodificador nos

llega por la entrada analógica del DSP (DSP input ), que no es más que la señal 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 múltiplo de 16000 Hz que era la tasa de muestreo en nuestro generador de

señal sinusoidal, véase el apartado del codificador DTMF.

A continuación disponemos de un controlador de señal para que no se muestre señal

alguna cuando no se está transmitiendo información, es decir, evitamos que se reflejen trazas

en las gráficas y en los indicadores debido al ruido. Lo conseguimos mediante un umbral de

paso, él cual, mediante una extracción del valor máximo en amplitud de la señal mediante el

bloque   Array Max Min, dejará pasar la señal tal cual en el caso de que la comparación

booleana entre el umbral y el valor máximo de la señal sea true (nivel en amplitud de la señal

mayor que el umbral). En el caso  false se pasará un array de ceros con el mismo número demuestras 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 señal del dominio del tiempo al dominio de la frecuencia y así poder distinguir los

picos de señal que generan las sinusoides en frecuencia. Los primeros bloque se corresponden

con un Split y un Pad , que se encargan de dividir la señal en bloques ( frameside) y padearla

(introducir ceros en caso de que nuestro  frameside sea más pequeño que la DFT a calcular)

respectivamente. Estos dos bloques en nuestro caso no están 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 están redundantes y se podrían quitar; pero a modo de aprendizaje y juegoconstan y se podría poner otra configuración 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 mínimo

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/f s  f/f s = K/N; siendo f s = 16000 Hz y f las frecuencias de fila y columna

w = 2 π K/N

Entonces el mínimo N de la DFS múltiplo 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 múltiplos de dos menores, el K no es entero en alguna de las frecuencias. Así que:

Fila Columna

f = 1000 Hz K = 4 f = 5000 Hz K = 20f = 1500 Hz K = 6 f = 5750 Hz K = 23f = 2000 Hz K = 8 f = 6500 Hz K = 26

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

Page 11: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 11/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

11

Una vez hemos realizado la DFT con el bloque EMB Real FFT  nos interesa saber el

módulo de la misma, para ello utilizamos la herramienta ReIm To Polar  que convierte las

partes real e imaginaria en módulo y fase. Ya con el módulo de la DFT procedemos a sacar

gráficos para poder observar los picos de fila y columna transmitidos de la señal cuando se

está pulsando algún número. Nótese que el gráfico escalado en frecuencia tiene un factor de

escala de x250, debido a 16000 Hz/64 muestras.

Para finalizar nos queda dividir la señal para obtener la salida de fila y columna del

número pulsado. El módulo de la DFT tiene 64 muestras (array de 64 posiciones) de las cuales

32 están repetidas debido a la periodicidad de la DFT, por lo que descartamos las 32 últimas

con el bloque Divisor dividiendo la señal 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 señal 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, véase la Ilustración 7. Por último extraemos la posición 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 máximo de la señal en amplitud,

que se corresponderá con el pico transmitido, y devuelve su posición con respecto al array que

se le pasa.

Ilustración 7: Gráfico separación de muestras para la obtención de las salidas fila y columna.

2.- Número pulsado calculado por fuerza bruta:

Una vez hemos llegado a la salida de fila y columna con la clasificación descrita

anteriormente, el siguiente paso será transformar esa información para obtener el número del

botón pulsado. Primeramente y mediante un Index Array  extraemos los valores de fila y

columna transmitidos a través de arrays estáticos predefinidos en las posiciones de las salidas

de fila y columna. Así pues quedaría:

0_0_0_0_1_0_0_2_0_0_3 array de columnas; 4_7_10 Salida columnas

0_0_0_0_1_0_2_0_3 array de filas; 4_6_8 Salida filas

Page 12: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 12/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

12

Ahora bien, ya tenemos el valor de fila y columna transmitido, por lo que solo nos

queda calcular el número del botón pulsado. Pare ello partimos, como hicimos con fila y

columna, de un array estático predefinido cuyas posiciones, correspondientes a los valores del

número transmitido, son la suma de las salidas de fila y columna:

La suma de las salidas de fila y columna será la

posición del array cuyo valor, que contendrá el valor del

número, será extraído con la herramienta Index Array :

Tabla 4: Salidas fila columna

identificando número pulsado.

Posición array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

Valor array 0 0 0 0 0 0 0 0 1 0 4 2 7 5 3 8 6 0 9

Tabla 5: Composición del array estático para sacar el número pulsado.

3.- Número 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 botón pulsado. El algoritmo estaría basado en la ecuación de la recta para poder

convertir esos valores en 1_2_3. Partamos de la gráfica de la Ilustración 8:

Lo primero de todo es calcular la ecuación de la recta

para las salidas de fila y columna. Así pues quedarían de la

siguiente manera:

y = 3x + 1 x = (y – 1)/3 Salidas columna

y = 2x + 2 x = (y - 2)/2 Salidas fila

Donde “y” sería el número 4_6_8 para la salida de fila y

4_7_10 para la salida de columnas, y “x” sería el valor buscado

1_2_3 en ambos casos. En el caso de ningún botón pulsadonuestra “y” sería 0 dando lugar a una “x” negativa que se

reflejaría en el indicador de fila y columna. Para solventar este

inconveniente hemos introducido un comparador más 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 .

+ 4 7 10

4 1 2 3

6 4 5 6

8 7 8 9

Ilustración 8: Rectas de las salidasde fila (-··-··-) y columna (·······).

Page 13: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 13/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

13

Partiendo de que ya sabemos la fila y la columna transmitidas solo nos queda calcular

el número 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 números de la

fila correspondiente, ya que las comparaciones false generan un array nulo en el Case.

Array fila 1 1 2 3Array fila 2 4 5 6Array fila 3 7 8 9

Tabla 6: Asignación de array en función de la fi la transmitida.

Por último utilizaremos la herramienta Index Array  para extraer del array antes

mencionado el valor de la posición correspondiente a el valor de la columna menos uno, ya

que los arrays comienzan en la posición 0.

4.- Sub-Vi Leds:

En este apartado mostramos el conexionado del Sub-Vi Leds incluido en el

decodificador DMTF, Ilustración 9. Como podemos ver a partir del número decodificado se

harán una serie de comparaciones booleanas cuyas salidas irán a su puerta OR

correspondiente, puesta esta para el caso del número 9 en el que se encienden todos los Leds,

que atacarán, estas últimas puertas, directamente a la batería de Leds (a cuya entrada si le

llega un true se encenderá el Led de la tarjeta del DSP).

Ilustración 9: Vista del conexionado del Sub-Vi Leds.

Tabla 7: Funcionamiento puerta OR.

OR 0 1

0 0 11 1 1

Page 14: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 14/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

14

Ejecución del sistema de señalización 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 explicación

sobre la codificación/decodificación de un botón pulsado sobre dos DSP’s que creemos es

mucho más interesante. Este apartado esta a modo de curiosidad, aprendizaje y

funcionamiento.

Ilustración 10: Front panel del codificador/decodificador DTMF ejecutado sobre 1 DSP.

Como podemos ver en la Ilustración 10 el  front panel tiene indicadores tanto de la

parte de codificación como de decodificación. Esta ejecución nos ha servido para desarrollar

nuestro programa más rápido ya que podemos apreciar todo el ciclo de ejecución centralizado

en una sola pantalla, y podemos hacer mejoras y correcciones mucho más rápido.

De lo visto hasta ahora, el codificador enviaba la señal a una salida analógica (DSP

output ) y el decodificador recibía esa señal analógica (DSP input ). Para este caso no

necesitamos tales salidas ni entradas, simplemente conectamos la parte de codificación ydecodificación unidas por un cable como se muestra en la Ilustración 11.

Ilustración 11: Conexionado en 1 DSP de la parte de codificación y decodificación.

Page 15: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 15/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

15

Ejecución del sistema de señalización en 2 DSP’s

En esta sección profundizaremos en el funcionamiento - ejecución del codificador y

decodificador en dos DSP’s 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 codificación/decodificación DTMF del número

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:

Ilustración 12: Pulsando el botón 1 en el teclado numérico del codificador.

Una vez pulsado el botón 1 podemos ver en el   front panel , Ilustración 12, toda la

información que hemos considerado oportuna mostrar mediante indicadores colocados en el

block diagram. Así podemos ver a simple vista que el botón pulsado corresponde al número 1,

y que su correspondiente fila y columna es 1 y 1 respectivamente. También podemos observar

el indicador del estado que, como ya se explico anteriormente en el codificador, está a 1

indicando botón pulsado. Y finalmente, a modo de test y rápida comprensión, podemos ver los

indicadores correspondientes de las frecuencias a las que se están generando las señales

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 programación por diagrama en el codificador, el block diagram. Una

vez pulsado el botón 1 podemos observar, Ilustración 13, que el pulsador 1 está a true y todos

los demás están a  false. Esto hará que el Sub-Vi  del codificador, Ilustración 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 según el siguiente

código (Número - 0, Columna - 1, Fila - 2, Estado - 3), sabiendo que la posición primera del

array es la número 0. Así pues tendremos que el número corresponde al 1, la columna es la 1ª,

la fila es la 1ª y el estado es 1 (activo).

Page 16: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 16/22

Page 17: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 17/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

17

Bien, pues esta respuesta es bien sencilla en nuestro planteamiento de la

problemática; 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 función del número de fila y columna que le llega. Y las

extracciones de los arrays serán 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

analógica, que se corresponde con la salida analógica del DSP (DSP output ).

2.-  Segundo DSP – Decodificador:

Ilustración 15: Decodificando el número 1 en el decodificador.

Fijemos en la captura de pantalla del  front panel realizada en el PC del segundo DSP,

Ilustración 15; en ella podemos observar que la salida, es decir, la decodificación, se

corresponde correctamente con el número 1. Además se nos muestra la fila y columna al que

pertenece el número, en nuestro caso 1 y 1 respectivamente que son las de nuestro número 1.

Aparte se nos da información duplicada, pero esto no es un error, simplemente se ha realizado

la decodificación de la señal empleando dos formas diferentes, la fuerza bruta y aplicando un

algoritmo, como se explicó anteriormente en la sección de decodificación DTMF.

Otro tipo de información se da en la parte inferior de la imagen, en la que se muestra

la señal en el dominio frecuencial discreto una vez realizada la DFT. Ésta se representa en dos

gráficas 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 número

1 el cual se corresponde con las frecuencias de 1000 Hz (fila) y 5000 Hz (columna), o lo que es

lo mismo picos de señal en las muestras 4 y 20 de la DFT respectivamente.

Pasemos ahora a analizar paso por paso la decodificación en el block diagram,

Ilustración 16.

Page 18: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 18/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

18

Ilustración 16: Vista general del block diagram y resultados cuando se ha decodificado el número 1.

La señal procedente del primer DSP nos llega a través de la entrada analógica a digital,

que se corresponde con la entrada analógica del DSP (DSP input ). Extraemos el valor de

amplitud máxima de la señal, con la herramienta   Array Max Min, y lo comparamos con un

umbral para que no nos salga señal alguna cuando no se está transmitiendo nada (evitamos

que salga señal decodificada alguna debido al ruido, pasando a la siguiente etapa un array de64 muestras a 0, debido a nuestro frameside de 64 en el bloque A/D de la entrada). Como en

este caso si estamos transmitiendo información pasará tal cual la señal, sin modificación

alguna, true en la herramienta Case, debido que se está transmitiendo una señal con amplitud

mayor que la del umbral.

Como ya vimos en la sección de decodificación DTMF, pasamos la señal al dominio

discreto, véase dicha sección, 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 centrándonos en el caso que nos atañe, distinguimos las

dos formas de calcular el número pulsado.

a.  Por fuerza bruta:

Siguiendo la filosofía que hicimos en la codificación se monta un array predefinido

cuyos valores son los números del 1 al 9 en las posiciones que se corresponden de sumar las

dos salidas mencionadas anteriormente. En nuestro caso la suma sería 4 + 4 = 8; con lo que

extraeríamos del array el valor de la posición 8 con la herramienta Index Array , que saría el

valor 1. Para el valor de fila y columna se haría exactamente igual pero solo con una de las

salidas para cada caso. La fila de valor 1 se extraería de la posición 4 del array fila y la columna

de valor 1 se extraería de la posición 4 del array columna.

Entrada DSP

T

F

2ª forma dedecodificación 1

1

1

1

1

1

T

T

T

Page 19: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 19/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

19

b.  Por algoritmo:

A las salidas anteriormente citadas les aplicamos el algoritmo explicado en la sección

decodificación 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 estaría a true 

el Case y dejaría pasar la señal tal cual (si no fuera así,  false, meteríamos un 0). El valor de lafila lo compararemos con el valor 1, 2 y 3, y solo la comparación igual a 1 sería true en el Case, 

con lo que obtendríamos a la salida de la suma de arrays el array 1_2_3, ya que los demás

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 número decodificado; para ello extraeremos el número

decodificado de la posición del array valor de columna – 1 = 0, es decir, el número 1.

Page 20: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 20/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

20

Conclusiones sobre el trabajo

La práctica final ha sido un compendio de todo lo aprendido en todas las prácticas

anteriores, y nos ha servido esta última para pensar cómo resolver un problema práctico real

y poner en práctica todos los conocimientos adquiridos en la asignatura. Durante el desarrollo

de la misma nos ha surgido algún que otro problema de cara a como implementar la solución

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 limitación sino un problema de base y de

que teníamos que haber empezado a desarrollar nuestra solución partiendo de lo que

disponíamos para desplegarla.

El diseño de nuestra solución no está optimizado para una menor carga computacional

y ahorro de memoria. No pensamos en ello a la hora de diseñar y hemos empleado mucha

memoria, arrays en lugar de algoritmos. Al ser un diseño sencillo no tenemos problemas con la

memoria ya que hay suficiente y nuestro diseño, a baja escala, es muy eficiente ya que tiene

muy poca carga computacional. Pero claro está que si fuera un diseño mayor tendríamos que

ahorrar memoria en detrimento de aumentar la carga computacional. Hemos optado por

arrays estáticos de los cuales obtenemos información, nos ha resultado una solución fácil de

implementar y de jugar con ella para obtener lo que se nos pedía. A la hora de decodificar la

señal para obtener la información necesaria, a parte del empleo de arrays, hemos

implementado otro camino de decodificación de la señal paralelo en el que utilizamos

algoritmos para obtener la información necesaria, el cual tiene más carga computacional pero

menor coste de memoria y más escalabilidad.

El software LabVIEW es una herramienta a nuestro entender muy potente con la que

se puede hacer muy diferentes tareas (programación, simulación,….). Divide el programa en

dos partes de manera muy inteligente separando la parte de control e indicadores de la parte

de programación, estructuras, uniones,….. Es una herramienta muy intuitiva y fácil de utilizar,

por lo menos al nivel que la utilizábamos nosotros, con la que se puede aprender muchas

cosas relacionadas con el Tratamiento Digital de la Señal.

La asignatura AST-1 creemos que complementa de una manera muy práctica lo visto

en la asignatura de 2º curso de I.T.T. en Sistemas de Telecomunicación “TDS”, y consideramos

que para un mayor rendimiento, aprovechamiento y asimilación de los conceptos de la

asignatura AST-1 se debería haber visto “TDS”. En general y hablando o modo individual, nos

ha gustado la asignatura sobre todo porque es muy práctica y trata temas ya vistos en la

ingeniería, lo cual ayuda a comprender y asimilar conceptos de cara a la problemática de la

vida real. Hay una cosa que nos ha parecido mejorable, aunque no creemos que se repita, y es

la previsión a la hora de instalar en los PC’s del aula el LabVIEW.

Page 21: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 21/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

21

Referencias

[1] “Labview: entorno gráfico de programación”; José Rafael Lajara Vizcaíno 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. 

Page 22: Labview Cod DeCod DTMF

8/2/2019 Labview Cod DeCod DTMF

http://slidepdf.com/reader/full/labview-cod-decod-dtmf 22/22

AST-1 3º I.T.T. Sistemas de Telecomunicación

22