2.6 La digitalización de señales

Las señales (independientemente de si representan fuentes de información analógicas o digitales) necesitan digitalizarse antes de ser procesadas por un sistema digital (una computadora, por ejemplo). El proceso al que deben ser sometidas se conoce como digitalización y consiste básicamente en registrar el valor aproximado de la señal cada cierto intervalo de tiempo.

El número de muestras capturadas durante la digitalización está directamente relacionado con la máxima componente de frecuencia de la señal. Dicha relación es expuesta por el Teorema del Muestreo Uniforme de esta forma:

Si capturamos 2n muestras/segundo de una señal entonces la máxima componente de frecuencia registrada de dicha señal tiene n Hercios.

La digitalización implica normalmente una pérdida irreversible de parte de la información que transporta la señal, por dos motivos:

  1. Si la señal no está limitada en banda por mucho que aumentemos la frecuencia de muestreo no será posible registrar todas sus componentes de frecuencia.
  2. Si la señal no es digital, es imposible utilizando un número finito de bits representar cada uno de sus estados.

Evidéntemente, las señales digitales digitalizadas sólo adolecen del primer problema.

2.6.1 Digitalización de señales digitales

Una forma sencilla de crear versiones digitales de señales digitales consiste en replicar tantas veces como sea preciso cada uno de los distintos valores que toma la señal digital. Esto es lo que realiza el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/sampler.c (véase el Apéndice H.8). Nótese que si la señal no fuera digital este proceso no sería tan simple.

En la entrada de sampler.c, cada número real (representado físicamente como un número en punto flotante de 32 bits de precisión) indica un estado de la señal digital. La salida es simplemente una replicación de cada uno de estos estados.

Para generar el fichero de entrada para sampler.c podemos usar el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/ascii2float.c (véase el Apéndice H.2).

Finalmente, para averiguar el contenido de un fichero .float podemos utilizar el programa http://www.ace.ual.es/\~{}vruiz/docencia/redes/practicas/progs/float2ascii.c (véase el Apéndice H.5).______________________________________________

Taller 2.1:

  1. Ejecute el PC virtual. El resto de pasos se realizarán en él.
  2. Descarge los ficheros fuente necesarios para realizar esta práctica.
  3. Compile los fuentes en C. Sitúese en el directorio donde están los fuentes y el fichero Makefile. Escriba:
    make all

  4. Asegúrerse de que los scripts (ficheros con la extensión .sh) poseen permiso de ejecución para el dueño del fichero (aparece una “x” en la cuarta posición comenzando desde la izquierda cuando escribimos el comando ls -l en el directorio en el que hemos descargado el script).
_____________________________________________________________

Taller 2.2: Ejecute:

ascii2float << EOF | float2ascii

y escriba una serie de números reales separados por la tecla <Enter>. Cuando no desee introducir más números escriba EOF y pulse finalmente <Enter>. Nota: con el redirector de flujo de entrada << provocamos que todo lo que tecleemos se convierta en la entrada estándar del programa sobre el que estamos realizando la redirección, hasta que no escribimos el código de fin de entrada (en este caso la cadena EOF). Nota 2: el redirector de flujo | provoca que la salida estándar del programa que queda a la izquierda se la entrada estándar del programa que queda a la derecha.

_____________________________________________________________