Upload
nenefi
View
255
Download
0
Embed Size (px)
Citation preview
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
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
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
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
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.
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.
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.
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.
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.
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.
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
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 (·······).
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
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.
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).
8/2/2019 Labview Cod DeCod DTMF
http://slidepdf.com/reader/full/labview-cod-decod-dtmf 16/22
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.
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
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.
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.
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.
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