martes, 26 de mayo de 2009

A/D y D/A de N bits, ¿proceso de N bits? (Contra la intuición: 3)

Ya hemos visto en otras ocasiones cómo la resolución efectiva de un convertidor A/D o D/A influye en la calidad del proceso. Aumentar el número de bits de un convertidor sin aumentar su resolución efectiva no mejora en nada la calidad.

Si se tiene una resolución dada en la salida digital del convertidor A/D ¿influirá en la calidad global de una SDR la resolución de los cálculos o no?. Es decir, si un valor de, pongamos, 16 bits se pasa a 32 bits para su proceso en 32 bits en lugar de 16, ¿mejorará el resultado final?. He visto que esta cuestión, que se ha tratado de refilón en alguna de las entradas no ha quedado claro, así que voy a intentar aclararlo definitivamente. Antes de seguir leyendo me gustaría que diese una respuesta.

Y ahora la solución: ¡Por supuesto que sí!. La cuestión no está en mirar si el valor de entrada está sobre 16 bits o 32 o 128. Si el valor procede de un convertidor de 13 bits útiles, en todos los casos será la misma. La cuestión está en los cálculos intermedios. Cada vez que se hace una operación matemática se puede precisar una mayor resolución para guardar el resultado. Si no se guarda así, se deberá comprimir el resultado para alojar el nuevo valor.
Veamos un ejemplo: Si tenemos un mutiplicador que admite dos entradas del 0 al 9 -la tabla de multiplicar de la escuela- su salida puede dar valores de dos dígitos, tal como 8*7=56. La entrada se puede representar en un dígito, pero la salida no.

Por este motivo, los multiplicadores de los procesadores de "coma fija" están diseñados para funcionar con valores entre 1 y -1. Así los resultados están acotados entre (1 y -1) -los paréntesis significan que los valores 1 y -1 no están incluidos-. Siguiendo con el ejemplo anterior podemos admitir entradas con resolución de un dígito entre -0,9 y 0,9. Si este dispositivo hace la multiplicación equivalente a la anterior el resultado será: 0,8*0,7=0,56. El resultado tiene dos dígitos significativos. Si queremos guardarlo en la misma resolución que la entrada -un dígito- guardaremos 0,5 o 0,6 con la consiguiente pérdida de precisión en los cálculos que sigan.

Los procesadores de coma fija de 16 bits suelen mantener resultados intermedios de los cálculos de 40 bits para mantener la precisión. Pero cuando se requiere este resultado para nuevos cálculos, se reduce de nuevo la precisión a 16 bits de modo que pueda procesarse adecuadamente. Los de 32 bits suelen tener 80 bits para resultados intermedios. Los procesadores de coma flotante obtienen resultados de operación en el mismo formato que los operandos, y no tienen porqué estar sujetos a valores entre -1 y 1.

lunes, 25 de mayo de 2009

El viaje de la información digital

Al igual que la señal viaja entre diferentes circuitos que la procesan en una radio clásica, encadenando la salida de uno con la entrada de otro, en una SDR la información debe viajar también entre los diferentes procesos que la forman. A veces, este viaje es simplemente "lógico" o virtual. El resultado de un proceso pasa al siguiente en forma de secuencia de programa o un proceso software deja información en memoria para que otro proceso en el mismo procesador la tome como entrada.

El proceso de señal puede estar repartido en varios procesadores distintos, con lo que debe viajar entre ellos. Estos procesadores pueden estar en un mismo componente, ser componentes distintos que comparten una placa de circuito impreso, estar en diferentes tarjetas o en diferentes módulos...

¿Hasta dónde se pueden separar los diferentes elementos?. En una radio analógica, no demasiado. Sabemos que la señal eléctrica se degrada cada vez que recorre una distancia a través de un medio. Cualquier tipo de línea de transmisión que se emplee -cable, fibra...- somete a la señal a pérdidas y distorsiones importantes. En una SDR este problema no existe ya que lo único que se transmite es información en forma digital. Así, parte del proceso se puede hacer en la misma base de la antena, parte al final del cable de antena y parte en un ordenador situado a cientos de kilómetros de distancia. La degradación de la señal ya no existe. Aparece en cambio un problema relacionado con el tiempo de respuesta, debido al tiempo necesario para que la señal viaje y se procese en todos los elementos de la cadena.

Hay que tener en cuenta un aspecto fundamental: La cantidad de información. La cantidad de información puede llegar a ser tal que puede hacer necesarios canales de comunicación muy costosos o poco prácticos. Un ejemplo podría ser un convertidor A/D de 16 bits a 80000000 muestras/segundo. Este convertidor genera 1,2 Gbits (1200000000 bits) de información por segundo. Esto supera en más de 300 veces la capacidad de un canal ADSL típico de 4Mb. y está por encima de la capacidad de un canal Ethernet de 1GB.

Transmitir esta cantidad de datos implica nuevos problemas de diseño. El hecho de que la información sea digital no significa que se pueda enviar sin más por cuqalquier medio. El diseño de canales eléctricos u ópticos para ello plantea de nuevo problemas de diseño de drivers, receptores, líneas de transmisión... y aspectos de tecnología electrónica que parecía que ya no aparecerían en la SDR.
Siento decir que para hacer una SDR hace falta hardware y para ello hacen falta conocimientos de electrónica y electromagnetismo. Eso sí, una vez terminado el hardware, ya nos podremos dedicar en cuerpo y alma al software.

lunes, 18 de mayo de 2009

Dando forma a un proyecto SDR

Este pasado fin de semana se ha celebrado el "MercaHAM 2009" la feria de radioafición más importante de España. Gracias a la amabilidad de Luis (EA3OG, en la fotografía en plena disertación) y Sergi (EA3DU) que me permitieron "colarme" en su conferencia, tuve la ocasión de presentar la idea en la que estoy trabajando.

El objeto de la presentación, además de mostrar las ideas que guían este proyecto, era el de buscar colaboradores. Creo que sin ellos resultará muy difícil, podemos decir imposible, que el proyecto llegue a demostrar una parte de sus numerosas posibilidades.

El interés mostrado por los asistentes y sus comentarios me han llevado a corregir la presentación para reflejar mejor las dudas e indicar el estado actual del proyecto. El resultado se puede descargar desde este enlace.
Quiero agrecer la calurosa acogida que recibí por parte de todos, tanto de quienes conocía como de quienes tuve ocasión de conocer. Y por supuesto, felicitar a los organizadores del evento... al resto de conferenciantes y a todos los que hacen posible que esta afición siga adelante.

miércoles, 13 de mayo de 2009

¿Qué es eso de la ZERO-IF y el I/Q?

Diversos receptores utilizan una técnica de conversión de frecuencia en la que la señal se mezcla con una frecuencia igual a la del centro de su ancho de banda.
Imaginemos que se tiene una señal de 7,050 MHz. Si se mezcla con 7,050 MHz se obtendrá una señal de frecuencia 0 -Corriente continua- en la salida. Esto es un convertidor ZERO-IF -Frecuencia intermedia cero-Veamos ahora qué ocurre con dos frecuencias de señal de 7,051 y 7,049 MHz. Al mezclarlas, ambas aparecen como 1 KHz, siendo indistinguibles entre sí. La solución clásica a este problema de frecuencia imagen es la de filtrar una de las dos antes de atacar al mezclador.

Para separar una señal por encima de la frecuencia de otra por debajo de la frecuencia portadora en un convertidor ZERO-IF se emplean dos mezcladores. Uno de ellos emplea una portadora de una determinada frecuencia, mientras que el segundo emplea la misma frecuencia pero con un desfase de 9o grados respecto a la primera. El resultado son dos señales en lugar de una que procesadas adecuadamente permiten eliminar las frecuencias superiores a la portadora o las inferiores -mediante operaciones de desplazamiento de fase y una simple suma o resta de ambas señales-.

No sólo eso. El formato I/Q es más cómodo en la implementación de procesos DSP. Tal es así que muchos procesadores dedicados DSP incluyen núcleos de cálculo doble en los que las mismas operaciones se efectuan de forma simultánea sobre dos valores.

Este efecto, poco fácil de visualizar intuitivamente pero relativamente fácil de comprender matemáticamente ya se había empleado en la era pre-digital para generación detección de señales en banda lateral -por ejemplo en el clásico R2-, pero el proceso digital empleado en SDR y DSP supera muchas de las limitaciones y problemas prácticos que aparecen en su implementación analógica. Por cierto en el anterior artículo sobre el R2 -QST enero 1993- ya se menciona la posibilidad de usar un DSP en un receptor "del futuro" (Fig. 7).

Ahora se puede comprender porqué muchos receptores SDR emplean la entrada estéreo de una tarjeta de sonido para la recepción SDR: Dos canales, uno para la salida de un corvertidor(I=In phase), y otro para la salida del segundo (Q=Quadrature).

viernes, 8 de mayo de 2009

Los productos de intermodulación son independientes del nivel (Contra la intuición: 3)

Hace unos días tuve el inmenso placer de pasar unas horas con Luis del molino, EA3OG en su QTH de Vilassar de mar. Estuvimos hablando de radio digital y en la conversación me llamó la atención sobre un artículo publicado en QEX, Noviembre de 2006: "IMD in digital receivers". En él se hace notar que la distorsión de intermodulación de tercer orden (IM3) medida mediante un test de dos tonos está a unos -100dBm independientemente del nivel de señal de prueba sobre un SDR-14 (Figura 4 del artículo).

Estamos tan acostumbrados a nuestros receptores "clásicos" en los que la intermodulación empeora con el aumento en el nivel de señal que esto puede parecer contrario a la intuición. La explicación es, sin embargo, bastante simple. En un receptor "clásico" la amplificación de la señal se produce mediante métodos físicos: por ejemplo, un transistor. Pero el comportamiento de un transistor nunca es completamente lineal. Es decir, si se introduce 1 microvoltio para obtener 100 en la salida, al introducirse 10 microvotios la salida no sera 1000 microvoltios sino, 1001 o 1000,1 pero siempre habrá una pequeña distorsión.

A pequeños niveles de señal la linealidad es mayor que a niveles elevados. De ahí que la distorsión aumente. La amplificación en un receptor digital se hace mediante procesos digitales, que no añaden distorsión (el producto 10*100 es perfectamente lineal respecto a 1*100). Solamente debe cuidarse la linealidad del convertidor A/D. Desde luego, el convertidor A/D está basado en componentes que tampoco son estrictamente lineales.

En el desarrollo de un convertidor A/D los diseñadores incluyen métodos y circuitos que compensan la linealidad para distribuir los errores a lo largo de toda la escala y hacerlos independientes del nivel de señal. De este modo, los productos de intermodulación no cambian con el nivel de señal. Las limitaciones debidas a la resolución limitada de los cálculos y de la propia conversión A/D aparecen en forma de ruido.

¡Ojo! Si se añade un preamplificador antes de la conversión A/D la señal sufrirá distorsiones debidas a la no linealidad que pueden hacer que el efecto aparezca de nuevo con un aspecto más "clásico".

La medida del IP3 no suele ser relevante en un receptor digital. Los valores del propio convertidor A/D y de cualquier circuitería que lo preceda sí son relevantes. Nos acostumbraremos a incorporar nuevos términos como "No-linealidad integral (INL) o diferencial (DNL), rango dinámico libre de espúreos (SFDR) y otros. Deberemos adoptar nuevas medidas para la comparación. Y cuando no sea posible acudir a los números... ¡dejaremos que una "oreja de oro" decida!

jueves, 7 de mayo de 2009

¿El fin de HPSDR?



El proyecto HPSDR (High Performance SDR) se ha mudado. ¿Por qué?. Los motivos los explica Phil Covington en una página del pasado 5 de Mayo.

Aunque siempre me pareció un proyecto muy complejo, fue una buena fuente de ideas y estudio. Desconozco qué piensa hacer Phil en el futuro con este proyecto, pero por el momento dejaré los enlaces a su página personal y su blog para poder seguirlo de cerca.

En la página del proyecto han quedado varios enlaces de interés relacionados con el mismo y SDR en general.

domingo, 3 de mayo de 2009

¿Más rápido o más bits? (Contra la intuición: 2)

En la entrada "¡Mejor con ruido!" ya se indicó un número de bits limitado en el convertidor como un aparente problema para tratar con elevados rangos dinámicos o con señales débiles.

La intuición parece indicar que solamente se pueden mejorar estos aspectos mejorando el circuito de conversión A/D. Sin embargo, es posible mejorar la resolución de los resultados de un convertidor, aumentando el número de muestras por encima de las imprescindibles (el doble del ancho de banda de acuerdo al teorema de Nyquist).

Para recibir una señal de 4KHz de ancho de banda se puede emplear un convertidor A/D de poco más de 8 Km/s (Kilomuestras/segundo). Pero también se puede emplear un convertidor de varias decenas de Mm/s (Megamuestras/segundo). En este segundo caso, un proceso digital de las muestras denominado "diezmado" nos permitirá pasar del elevado número de muestras original a un número menor que represente la señal.

Sin entrar en grandes detalles, si en este proceso de diezmado, se procede a ciertas operaciones de filtraje, cada vez que se reduce el ritmo de muestras a la mitad, se ganan 3dB, es decir, cada vez que se reduce a la cuarta parte se ganan 6dB, equivalentes a 1 bit de conversión A/D.

Al pasar de un muestreo de 65 Ms/s a una salida de 8Ks/s se obtiene una ganancia de proceso que se puede calcular mediante: 10*log(65000000/8000)=39dB. Pasándolo a bits se tiene una mejora de 39/6=6,5 bits. Es decir, para el ancho de banda indicado, la resolución de un convertidor de 14 bits pasaría a ser de 20,5 bits, pasando el rango dinámico desde 84dB a 120 dB. ¡Casi magia!.

Todo esto nunca es gratis. Se precisa capacidad de cálculo para efectuar las operaciones digitales necesarias.

Los convertidores A/D de audio, incluidos los que habitualmente se emplean en los ordenadores, emplean esta técnica llevada al límite. De hecho el convertidor A/D es de ¡un bit! y la tasa de sobremuestreo -factor por encima del teórico necesario- de entre 256 y 1024. En estos dispositivos casi todo el circuito del convertidor A/D es... digital.

Para saber más de nuevo recurro a Analog Devices.

viernes, 1 de mayo de 2009

¡Mejor con ruido! (Contra la intuición: 1)

La radio digital presenta algunos aspectos técnicos en su funcionamiento que parecen desafiar el sentido común. El primero que quiero tratar es el de la sensibilidad.

La aparente paradoja se puede plantear del siguiente modo ¿Cómo es posible que un receptor digital alcance sensibilidades tal altas?. Analizando un receptor como el SDR-14 o el PERSEUS - en los que la conversión A/D se hace práctiamente a partir de la señal de antena- se observa que el convertidor es de 14 bits, con un rango de entrada de 1V a escala completa. Esto significa que cada bit representa un salto de: 1/(2^14)= ¡60 microvoltios!. Es decir, hace falta que la señal cambie 60 microvotios respecto a la muestra anterior para poder percibir un cambio en la muestra de entrada. Sin embargo el recptor detecta perfectamente señales de pocos microvoltios.

La solución a esta paradoja viene por dos lados: Por un lado está el ruido -externo e interno no deseado e incluso a veces forzado- que hace que una señal de entrada aunque sea siempre del mismo valor acabe generando códigos de salida distintos. Por otro lado está la ganancia de proceso debida al submuestreo. Por ahora comentaremos el ruido, dejando la ganancia de proceso para más adelante.

Si se emplea un convertidor analógico/digital que entrega, pongamos, cuatro valores entre 0 y 3 a su salida -de dos bits- para una entrada entre 0 y 1V, se obtendrá que la salida den convertidor será:
  • "0" entre 0 y 0,25V
  • "1" entre 0,25V y 0,5V
  • "2" entre 0,5V y 0,75V
  • "3" entre 0,75V y 1V
Así pues, si se introducen 0,3V obtendremos siempre 1 ¿O no?. Bueno, si el sistema tiene ruido, la señal a veces aparecerá como 1, a veces como otro valor. Si se hace un número elevado de medidas (pongamos 1000) el valor 1 aparecerá, por ejemplo -dependerá de la caracter´sitica del ruido-, 800 veces, el valor 0 198 el valor dos una vez, y el valor 3 una vez. Gracias a ello podremos aproximar el valor real del nivel de entrada. Pero esto es materia que dejo para otra entrada.

Tal es así que algunos convertidores A/D de alta velocidad ¡incluyen un generador de ruido!. Por ejemplo, el LTC2207 -recomiendo la lectura de su hoja de características para entender mejor el fenómeno- es un convertidor A/D en el que se emplea un generador de ruido añadido para mejorar el rango libre de espúreos.

Quizá el aspecto más contrario a la intuición surja del hecho de que este ruido añadido es más útil en señales de bajo nivel que en señales de nivel elevado.