r56 - 04 Sep 2006 - 23:01:57 - MartinSzmulewiczYou are here: pablohoffman.com >  Oscusb Web  >  OscusbDocumentacion > DocCap04Hardware

Capítulo 4. Hardware

Introducción

Este capítulo cubre todos los temas relacionados con el diseño del hardware del osciloscopio desde la selección de la arquitectura y cada uno de sus componentes, hasta el análisis de tiempos y el consumo de potencia.

Selección de la arquitectura

La primera decisión importante que tuvimos que tomar en la etapa de análisis fue definir la arquitectura sobre la cual íbamos a construir el osciloscopio. Es una decisión crucial porque todo el resto del diseño (selección de componentes, etc) depende de ella.

El elemento más importante de la arquitectura es el microcontrolador a usar, pues define el juego de instrucciones disponibles, el lenguaje a utilizar, etc.

En nuestro caso la decisión estuvo entre las siguientes 3 arquitecturas:

  1. usar un único integrado con conversor analógico-digital (ADC) y USB incluido
  2. usar un sistema linux embedded similar a un PC de bajo porte
  3. armar una placa con un microprocesador controlador y diferentes componentes específicos para cada tarea (ADCs, memoria, etc)

Arquitectura: Chip único

La opción de utilizar un único chip que ya tuviera integrado el ADC y el controlador USB resultó muy tentadora al principio pues simplificaba enormemente muchas otras decisiones de diseño. Un integrado en particular que analizamos fue el C8051F065 de Silicon Laboratories (ver referencias) el cual contaba con un ADC de 1MSPS/16 bits y un micro 8051. Su costo es de U$S 24 (el integrado), más U$S 300 (placa de desarrollo). Además habría que comprarle un bridge UART-USB (U$S 5) con su correspondiente placa de desarrollo (U$S 50).

Sin embargo, al profundizar el estudio nos dimos cuenta que la meta de los 20 MHz era inalcanzable siguiendo este camino, puesto que los ADC que vienen incorporados en este tipo de chips ronda en los 500 KSPS - 1 MSPS y, aun aplicando técnicas de submuestreo (y suponiéndolas exitosas) la frecuencia máxima que era posible muestrear estaba muy lejos del mínimo requerido.

Ademas esta alternativa tenía la desventaja de la falta de flexibilidad, puesto que de haber escogido este modelo hubiéramos realizado un diseño completamente atado al integrado en cuestión y para nada extensible.

Por lo tanto, debido a estas dos desventajas (velocidad de captura y portabilidad del diseño) decidimos descartar esta alternativa.

Arquitectura: Linux Embedded

Otra opción que investigamos muy a fondo es la posibilidad de utilizar una arquitectura del tipo linux embedded, en el cual el sistema consta básicamente de un PC, pero con menor potencia de procesamiento.

En éste área analizamos en particular el procesador ETRAX de la compañía Axis (ver referencias). El procesador ETRAX es un procesador de 32 bits que trabaja a 100 MHz y está diseñado para correr el sistema operativo Linux. Esto nos brinda una flexibilidad enorme a la hora de desarrollar sobre dicha arquitectura ya que Linux es una plataforma muy popular y con excelente documentación lo cual nos brinda la sencillez de poder desarrollar en lenguaje C sobre una plataforma robusta y probada, como es el caso de linux.

La gente de Axis pone a disposición una placa de desarrollo que es apropiada para una gran variedad de aplicaciones, entre ellas nuestro proyecto. La misma cuenta de:

  • 2 puertos USB
  • 1 puerto ethernet
  • 2 puertos seriales
  • 8 contactos secos


Fig 4.1 Placa de desarrollo ETRAX

Otra de las grandes ventajas de este enfoque es la de poder implementar un osciloscopio de red autónomo ("standalone"), es decir, que funcione independiente de una PC, al cual nosotros llamamos "Osciloscopio IP". La interfaz por excelencia en este tipo de dispositivos hoy en día es la Web, y este caso no sería la excepción. Alguien con una Palm y acceso a la red del osciloscopio podría perfectamente manejarlo. La misma aplicación se puede extender para casos en los que el usuario no se encuentra físicamente en el mismo lugar que el osciloscopio de forma que alguien pueda dejar conectado el osciloscopio en el laboratorio y luego obtener muestras desde la casa.

Sin embargo, debido a la naturaleza de nuestro proyecto es indispensable discutir sobre dos temas: por un lado, como se hará la conexión de los ADC (conversores analógicos-digitales), ya que la placa de desarrollo no viene con ADC incluidos, y por otro como se hará para asegurar el funcionamiento en tiempo real del dispositivo. Estos puntos se discuten a continuación:

Conexionado de los ADC

Debido a la alta velocidad de trabajo requerida para los conversores analógico-digital (40 Mhz) la única forma de conectar el ADC es utilizando DMA, de forma que los datos sean transferidos directamente a memoria, sin pasar por los registros del procesador, lo cual enlentecería el proceso impidiendo llegar a la velocidades necesarias. El ETRAX en particular viene con dos canales DMA externos que son ideales para conectar los dos ADC que va a tener nuestro osciloscopio.

Los canales de DMA externo del ETRAX pueden trabajar de dos formas diferentes: en modo negociación (handshake) y en modo ráfagas (burst). Sin embargo, aún trabajando en modo ráfagas un ciclo completo de DMA dura no menos de 5 ciclos de reloj, lo cual nos reduce la frecuencia de muestreo máxima a 20 Mhz, restringiendo así a 10 MHz el ancho de banda máximo de las señales a medir.

Linux en tiempo real

Debido a las exigencias tan estrictas de tiempo, uno de los requisitos para poder implementar el osciloscopio con el ETRAX es la utilización de un linux compilado para poder poder trabajar en tiempo real (característica no disponible en los linux estándar). Actualmente existen varias distribuciones de linux en tiempo real (real-time linux). Dos de las más conocidas son: RTLinux y RTAI. RTLinux nació como un proyecto de código abierto pero luego se hizo comercial, cerrando el código y la comunidad de software libre que lo apoyaba. De esta, mucha gente que trabaja en RTLinux se volcó a trabajar en otro proyecto muy similar ya existente llamado RTAI en el cual la permanencia del código bajo licencia libre es uno de sus principios básicos. Hoy en día RTAI es la distribución de real-time linux con mas movimiento, aunque RTLinux sigue siendo la preferencia para proyectos crítico de medicina y aeronáutica.

Afortunadamente, un par de ingenieros neozelandeses ya portó el RTAI para el ETRAX como tesis de maestría (ver Referencias) y por lo tanto lo tendríamos disponible para usar en el proyecto en el caso de que optáramos por esta arquitectura.

Ventajas y prestaciones adicionales de un Osciloscopio IP

La interfaz web podría tener un menú de captura fuera de línea, es decir, una página donde se llena el formulario con los parámetros de la captura y luego se envía la solicitud de captura, devolviendo el osciloscopio inmediatamente los datos medidos, ya sea en forma de un imagen o una tabla de datos en formato CSV (para abrir en planillas de cálculo, por ejemplo).

También dentro de la interfaz web se podría proveer una aplicación Java para controlar el osciloscopio, evitando de esta forma tener que instalar un software en las PCs donde se lo quiera usar: bastaría solo con tener Java instalado, lo cual es algo muy común en las PCs de hoy en día y además le agregaría la ventaja de ser multiplataforma (correría en Windows, Linux y Mac).

Otra idea interesante disponible en el caso de utilizar el procesador ETRAX es la de tener la posibilidad de conectarle al osciloscopio un disco duro USB (tipo pendrive) y realizar captura de datos allí para luego analizarlos posteriormente en una PC.

Otras ventajas de esta arquitectura son las siguientes:

  • es algo innovador (no hemos encontrado ningún proyecto similar existente)
  • deberíamos tener menos imprevistos armando el sistema con el ETRAX puesto que hay menos partes de hardware para implementar y la placa de desarrollo ya viene diseñada para trabajar a altas frecuencias (100 Mhz)
  • la sencillez y flexibilidad de programación que brinda el poder programar C bajo un entorno linux

Conclusión

Aunque nos fue muy difícil, puesto que esta alternativa resultaba muy tentadora, tuvimos que descartar puesto que el costo de la placa de desarrollo (U$S 300) era muy elevado y, para el presupuesto asignado del proyecto, nos dejaba con muy poco margen para imprevistos.

Arquitectura: Microprocesador y componentes separados

Por último, la tercera arquitectura analizada fue la de utilizar un microprocesador que se encargue de implementar la lógica y controlar la placa, y utilizar otros componentes (más veloces) para la captura de datos.

En nuestro caso, el microprocesador analizado fue un PIC18F4550 y consta de las siguientes ventajas:

  • viene con controlador USB integrado lo cual deja resuelto el tema la comunicación USB
  • es de uso muy popular lo cual brinda gran versatilidad al diseño
  • bajo costo de producción (costo del micro: U$S 6 en USA)
  • bajo costo de desarrollo (hay esquemáticos de programadores disponibles para construirlos uno mismo, y depuradores de hardware por U$S 50)

Por todas estas razones, ésta fue la arquitectura elegida para implementar el hardware del osciloscopio.

Vale mencionar que este PIC también contiene un ADC pero es de muy baja velocidad. Por lo tanto, se deberá usar ADCs externos (cada uno con su memoria buffer) para realizar las capturas a alta velocidad.

Finalmente, para poder controlar y direccionar las memorias se utilizaran contadores binarios en cascada que serán controlados desde el propio PIC.

Funcionamiento y diagrama de bloques

Como se mencionó en la parte anterior, el hardware constará de:

  • un microprocesador central para controlar el resto de los componentes e implementar la lógica de captura
  • dos conversores analógico-digitales para digitalizar los datos
  • dos memorias SRAM para usar como buffers de captura
  • dos contadores de 8-bit para direccionar las memorias

A continuación se muestra el diagrama de bloques del sistema con sus componentes y la interconexión de los mismos.


Fig 4.2 Diagrama de bloques

Si bien el PIC puede trabajar hasta 48 Mhz, su capacidad de procesamiento no le permite capturar y almacenar lo datos a muy altas frecuencias. Por lo tanto, es necesario que los conversores analógico-digitales (ADCs) se conectan directo a las memorias, y que a su vez sean direccionadas a través dos contadores rápidos. Estos contadores son comandados por el PIC.

La memoria es entonces direccionada a través del contador por dos razones:

  1. porque el PIC no posee una cantidad suficiente de patas para controlar simultáneamente las memorias y el resto de la lógica
  2. porque al capturar es necesario direccionar a altas velocidades (40 Mhz) imposibles de alcanzar por el PIC

Los buffers tri-state se utilizarán para seleccionar cual memoria leer (puesto que solo se usaran 8 patas del PIC para el bus de datos) y para presetear los contadores.

Por lo tanto, al correrse el proceso de adquisición el PIC habilita los contadores que comienzan contar de forma creciente mientras los ADC muestrean los datos y estos son almacenados en las direcciones de memoria presentadas por los contadores. El hecho de que haya 2 contadores es porque no existen contadores de 16 bits tan rápidos (40 Mhz) y tuvimos que colocar 2 de 8 bit en cascada para controlar las memorias (RAM1/RAM2), dado que 8 bits no eran suficientes.

El microprocesador PIC18F4550

El PIC18F4550 es un microprocesador de propósito general versátil y económico. Pertenece a la popular familia de procesadores PICmicro de la empresa norteamericana Microchip cuya sede se ubica en Chandler, Arizona (USA).

pic-photo.jpg
Fig 4.3 PIC18F4550 - empaquetado DIP-40

Lo particular del procesador PIC18F4550 es que es uno de los PICs que viene con soporta nativo para USB, lo cual quiere decir que incluyen un controlador USB interno que ya brinda patas de salida para conectar directo a la PC, sin la necesidad de pull-ups o ninguna circuitería externa.


Fig 4.4 Características del PIC

Soporta cristales y osciladores de varias frecuencias como entrada y tiene post-scaler de manera que el procesador pueda trabajar a una frecuencia de 48 Mhz, independiente del oscilador que se conecte. Para ello debe configurarse (a través de los configuration bits) el oscilador que se le ha conectado. Trabajar a 48 Mhz es un requisito para poder transferir a full-speed por el puerto USB. El controlador USB, por lo tanto, transfiere a full-speed (1.5 Mbytes/seg) por USB y es compatible con el estándar USB 2.0.

También cuenta con 35 patas de entrada/salida digitales de propósito general (ver pinout más adelante) y viene disponible en varios empaquetados, entre ellos DIP-40 lo cual lo hace una alternativa muy popular entre desarrolladores entusiastas y aficionados. Los puertos de entrada/salida son todos compatibles con la tecnología TTL. Cuando se los utiliza como salida, se comporta como un CMOS, siendo compatible con TTL, de modo de poder manejar cualquier tipo de tecnología. Sin embargo cuando son configurados los puertos como entrada, hay dos comportamientos posibles: puede ser exclusivamente TTL, o puede ser configurado para TTL o CMOS. Dado que ciertos puertos de entrada son solamente compatibles con la tecnología TTL, es que se ha optado por realizar toda la circuitería con tecnología TTL. Vale destacar que la única excepcion a esto es la etapa de entrada, en donde se han utilizado componentes CMOS, algunos con compatibilidad TTL y otros no. Esto se ha dado de este modo por la disponibilidad de los componentes, pero previo a una cuidadosa revisión para asegurar de que no existan problemas. Existen otras razones adicionales que hacen a la tecnología TTL la más adecuada para este caso, esto se explica a continuación, en la elección de los componentes.

En cuanto a memoria, posee 32Kb de flash para almacenamiento de programas, 2Kb de SRAM para memoria volátil, y 256 bytes de EEPROM (memoria no-volátil) para almacenamiento permanente de datos como configuraciones y demás.

Las instrucciones son de 1 byte de longitud con la excepción de algunas que ocupan 2 bytes (CALL, MOVFF, GOTO, LSFR). Utiliza el mecanismo de pipelining para la ejecución de código por lo cual hace que las instrucciones consecutivas se ejecutan en 4 CLK (períodos de reloj) y las que contengan saltos adicionan 4 CLK extras.

Otras características interesantes que posee son timers, interrupciones (externas e internas por timers) con dos niveles de prioridad y disparadas tanto por nivel como por flanco, un comparador analógico con un generador de voltaje de referencias de 16 niveles (útil para implementar un trigger de hardware por nivel).

Por último, el PIC también cuenta con un conversor analógico de 10-bit pero que para nuestro osciloscopio es insuficiente debido a la alta velocidad de captura necesaria. Ya que, si bien el oscilador es de 48 Mhz, entre los tiempo de ejecución de las interrupciones y otros delays (bucles, etc) no se pueden obtener velocidades de captura mayores a 200 KHz.

Pinout

A continuación se presenta el pinout del PIC18F4550, en empaquetado DIP-40. En particular se puede reconocer las pines D- y D+ de la conexión USB (patas 23 y 24).


Fig 4.5 Pinout del PIC18F4550

Selección de componentes

Recordamos lo mencionado en las características del PIC: Los puertos de entrada/salida del PIC son todos compatibles con la tecnología TTL. Cuando se los utiliza como salida, se comporta como un CMOS, siendo compatible con TTL, de modo de poder manejar cualquier tipo de tecnología. Sin embargo cuando son configurados los puertos como entrada, hay dos comportamientos posibles: puede ser exclusivamente TTL, o puede ser configurado para TTL o CMOS. Dado que ciertos puertos de entrada son solamente compatibles con la tecnología TTL, es que se ha optado por realizar toda la circuitería con tecnología TTL. Vale destacar que la única excepcion a esto es la etapa de entrada, en donde se han utilizado componentes CMOS, algunos con compatibilidad TTL y otros no. Esto se ha dado de este modo por la disponibilidad de los componentes, pero previo a una cuidadosa revisión para asegurar de que no existan problemas.

Otra de las razones por la cual se ha elegido a TTL, y tan importante como la mencionada, es la velocidad de las compuertas.

A modo de ejemplo podemos tomar las compuertas NAND. En tecnología TTL (74F00), el tiempo de propagación de entrada a salida típico es de 3ns. Esto mismo para tecnología CMOS (74HC00) es de 7ns y 10ns para los compatibles con TTL (74HCT00).

Conversor analógico-digital | Tecnologías

Aproximaciones sucesivas (SAR)

Los conversores por registros de aproximaciones sucesivas (SAR - successive approximation register) son frecuentemente la arquitectura elegida por las aplicaciones de media a alta resolución a tasas de muestreo medias. Los conversores SAR tienen una resolución entre los 8 y 18 bits, y usualmente no superan las 10 millones de muestras por segundo (10MSPS). Una de sus ventajas es su bajo consumo.

Este tipo de conversores funcionan de una manera similar a una balanza de escalas, como las antiguas. Es decir, de un lado se coloca el peso desconocido, y del otro se van colocando diferentes pesos conocidos, hasta que se logra el equilibrio. Finamente, el peso desconocido se obtiene por la suma de los pesos conocidos colocados en el otro plato de la balanza. De igual forma ocurre con los ADC del tipo SAR. El voltaje analógico desconocido a la entrada es comparado con diferentes tensiones sucesivas generadas por el ADC. Una vez completadas todas las comparaciones, el resultado de cada comparación es exactamente la salida que entrega el conversor. Sin embargo, al tratarse de un componente electrónico de alta velocidad, estas comparaciones ocurren mucho mas rápido que lo que esperamos de una balanza real.

Dado que estos tipos de conversores utilizan la técnica del sample & hold (muestreo y retención), la arquitectura en ningún momento asume nada sobre la naturaleza de la señal de entrada, y por lo tanto esta señal no tiene que ser continua. Esto hace que los SAR sean una arquitectura ideal para aplicaciones donde se debe muestrear muchas señales y se utiliza un multiplexor a la entrada del mismo, o bien cuando las muestras no son tomadas una seguida de la otra sino que son tomadas cada algunos segundos o mas, o también donde se requiera una conversión rápida.

El tiempo de conversión se mantiene constante en todos los casos, y tiene una demora desde la adquisición hasta la conversión comparada a los conversores del tipo pipeline o delta-sigma. Los conversores SAR son ideales para aplicaciones de tiempo real, tales como el control industrial, control de motores, instrumentos portables o a batería, y equipos de adquisición de datos o señales.

adc_sar_arch.jpg
Fig 4.6 Diagrama del conversor SAR

Delta-Sigma

Los conversores delta-sigma se destacan por su alta resolución, y son ideales para la conversión de señales con un ancho de banda amplio (desde tensión continua hasta una frecuencia de algunos mega ciclos). Básicamente, estos conversores la señal de entrada es sobremuestreada (oversampling) por un modulador y luego filtrada y decimada por un filtro digital, produciendo una conversión de muy alta resolución a tasas de muestreo relativamente bajas.

La conversión propuesta por los conversores delta-sigma permiten que la resolución pueda ser negociada por velocidad o consumo. Es decir que si se precisa mucha resolución en la conversión, entonces el dispositivo será mas lento y consumirá mas potencia, mientras que si se requiere menos definición, entonces se pueden lograr tiempos de conversión más bajos o un consumo de potencia más bajo. Además, muchos de estos dispositivos permiten que este comportamiento pueda ser programado. Esto hace que este tipo de conversores sea muy flexible y permita en un mismo aparato diferentes tipos de uso de acuerdo a los requerimientos.

Dado que estos conversores sobremuestrean la señal de entrada, pueden lograr un filtrado anti-aliasing en la etapa del filtrado digital. Los diseños modernos con técnicas VLSI (Very Large Scale Integration, integración en escala muy grande) han llevado el costo de filtros digitales complejos muy por debajo del costo de su equivalente analógico. Por ejemplo, el filtrado de ruido de línea simultaneo en 50Hz y 60Hz que antes no era provisto, ahora se tiene integrado directamente en estos conversores.

Entre las aplicaciones típicas para los conversores delta-sigma se encuentran el audio, procesos de control industrial, e instrumentos médicos entre otros.

Investigaciones e innovaciones recientes en cuanto a las arquitecturas de los ADC han conducido a una arquitectura donde se usan los principios de oversampling y pipeline simultáneamente. Estos conversores de alta velocidad ahora permiten conversiones en el rango de los MSPS (millones de muestras por segundo) manteniendo la alta resolución que antes se obtenía pero a baja velocidad, o incluso una resolución aún mayor. Estas innovaciones permiten que con conversores con tanta definición y de tan alta velocidad puedan ser aplicados en comunicaciones y en la proyección de imágenes en la medicina.

Prácticamente todos los conversores delta-sigma tienen entradas diferenciales. Esto significa que en realidad la medición se toma por la diferencia de voltaje entre las 2 entradas, en vez de la diferencia entre un voltaje y tierra (0v). La estructura de las entradas diferenciales permiten que estos conversores sean ideales para medir fuentes del tipo de las termocuplas o sensores del tipo puente, en donde no existe un voltaje común, sino que el mismo dispositivo genera un diferencial de potencial entre sus bornes. En la mayoría de los casos no se precisan amplificadores de entrada para estas aplicaciones.

A diferencia de los conversores SAR, donde la señal de entrada es muestreada y luego analizada para obtener el resultado, los delta-sigma miden la señal de entrada durante un pequeño lapso de tiempo y luego a su salida se obtiene en código digital el valor promedio de la señal durante ese tiempo. Es importante recordar la forma en que estos conversores operan, particularmente en diseños que incorporan multiplexación y sincronización.

Es relativamente fácil (y es una práctica común) sincronizar varios conversores delta-sigma para que muestreen simultáneamente, pero es mas difícil sincronizar uno de estos conversores con un evento externo. Los conversores delta-sigma son poco sensibles al jitter en los pulsos de reloj (variación de su periodo), y esto esta dado por el hecho de que el oversampling efectivamente promedia las demoras de estos pulsos y por lo tanto logra una reducción del impacto del jitter en el ruido.

Muchos de estos conversores incluyen entradas con buffers (adaptadores de impedancia) y amplificadores de ganancia programable (PGA - programmable gain amplifiers). Los buffers de incrementan la impedancia de entrada permitiendo una conexión directa con una fuente cuya salida sea también de alta impedancia, evitando la necesidad de componentes intermediarios. La ventaja de poseer un PGA interno es que cuando se mide una señal de poca amplitud estos amplificadores logran que se pueda obtener la misma resolución que cuando se tratan señales de mayor amplitud. Los sensores del tipo puente son un claro ejemplo de una fuente de señal que puede aprovechar las ventajas de los PGA dentro del conversor.

Todo ADC requiere de una referencia para la señal de entrada, pero en especial para los de alta resolución, el bajo ruido y la baja deriva son críticos, y es por esto que la mayoría de los conversores delta-sigma tienen entradas diferenciales.

adc_ds_arch.jpg
Fig 4.7 Diagrama del conversor Delta-Sigma

Pipeline

La mayoría de los conversores del rango de las decenas de millones de muestras por segundo están basados en una arquitectura del tipo tubería (pipeline). Los conversores pipeline consisten en "N" etapas en cascada. La operación continua de todas las etapas de la tubería hacen que este tipo de arquitectura alcance velocidades de muestreo altas. Cada una de estas etapas son idénticas en su esencia, alineadas una detrás de otra, y diseñadas para convertir sólo una parte de la muestra analógica de entrada. El resultado digital de la comparación hecha por cada una de las etapas es alineada luego para obtener la salida en paralelo de estos resultados. En cierta forma, sería como colocar tantos ADC de 1 bit de resolución como bits de resolución se deseen obtener. Por cada ciclo de reloj se obtiene una nueva muestra. Sin embargo, dado este tipo de construcción, es evidente que se tiene un retardo desde que se tomó la muestra hasta que se obtiene la salida, pero en la mayoría de las aplicaciones esto no es una limitación ya que dicho retardo, expresado en ciclos de reloj, es constante y conocido.

Pipeline ADC
Fig 4.8 ADC tipo Pipeline

Una de las características principales que permiten que los ADC tipo pipeline tengan un desempeño dinámico tan bueno a altas frecuencias radica en que la señal de entrada sea del tipo diferencial. Esta configuración de entrada tiene como resultado optimizar su rango dinámico, dado que esto lleva a señales de menor amplitud y una reducción en los armónicos de orden par. La mayoría de los conversores pipeline de alta velocidad usan una fuente de alimentación simple, haciendo que sea necesario que la señal de entrada opere en modo común, y que este valor se encuentre típicamente en el medio del voltaje de alimentación. Este requerimiento de modo común debe entrar en consideración cuando se define la circuitería de entrada.

Los conversores del tipo pipeline son los mas utilizados cuando se trata de muestrear a velocidades de entre unos pocos MSPS y los 100MSPS. La complejidad de esta arquitectura crece linealmente (no exponencialmente) con la cantidad de bits de resolución que se exigen, y esto es justamente debido al tipo de construcción en tubería. Con característica se logran tener conversores de alta velocidad y alta resolución, aún manteniendo un bajo consumo. Los pipeline son útiles en un amplio rango de aplicaciones, más notablemente en el área de las comunicaciones digitales, donde la performance dinámica del conversor suele ser más importante que las especificaciones tradicionales sobre tensión continua, como ser la no-linealidad diferencial (DNL - differential non-linearity), y la no-linealidad integral (INL - integral non-linearity).

Los conversores semi-flash utilizan una arquitectura de varios pipelines integrados en una flash para lograr una mejor performance que la flash en cuanto a velocidad y reduciendo drásticamente su consumo.

Semiflash ADC
Fig 4.9 Semiflash ADC

Flash

Los conversores del tipo flash, también conocidos como conversores paralelos, son la arquitectura más rápida en conversores A-D.

Para aplicaciones que no requieren una resolución muy alta, sino mas bien media, típicamente 8 bits, pero que tengan la capacidad de muestrear señales de cientos de MHz o aún mayores, la arquitectura flash puede que sea la única alternativa viable. Sin embargo estos conversores tienen un consumo de potencia mayor que las otras arquitecturas y también tienen un costo mayor, lo que hace que estos conversores sean usados exclusivamente para altas frecuencias y donde no pueda ser usado otro tipo de arquitectura.

Las aplicaciones típicas para estos conversores son:

  • Adquisición de datos
  • Comunicaciones satelitales
  • Procesamiento de radares
  • Discos de datos de alta densidad

Cómo su nombre lo indica, utiliza una arquitectura de conversión en paralelo. Cada comparador representa 1 LSB (Least Significant Bit), y su funcionamiento se puede comparar a un termómetro de mercurio, donde la columna de mercurio aumenta hasta el valor de apropiado de temperatura. Se puede observar en el siguiente gráfico dicho comportamiento, donde el valor de tensión de una señal generaría una salida de los comparadores del estilo "0000111111111", y luego esta salida es enviada a un codificador binario tal que se represente en potencias de 2 el valor obtenido. Existen tantos comparadores como divisiones o resolución se deseen, es decir que si se desean N bits, entonces el conversor tendrá 2^N-1 comparadores. El siguiente gráfico explica la arquitectura:

Flash ADC
Fig 4.10 ADC tipo Flash

Dado que todos los conversores actúan en paralelo, solo se requiere de un tick de reloj para convertir la señal de entrada. El voltaje de referencia de cada conversor es de 1 LSB mayor al del comparador que lo precede, siendo para el primer comparador exactamente 1 LSB.

Este tipo de conversores requiere que el jitter del reloj sea lo mas pequeño posible para asegurar la mejor performance. De acuerdo a las especificaciones de cada caso, se debe utilizar un track & hold, el cual en la mayoría de los casos es necesario. Existen conversores de este tipo que ya incluyen esta funcionalidad dentro del mismo integrado.

Conversores integrados

Dada la baja velocidad de conversión de esta arquitectura, este tipo de conversores no será estudiado.

Comparación y elección

Comparación ADC
Fig 4.11 Comparación ADC

Resolución Vs Velocidad de muestreo
Fig 4.12 Resolución Vs. Velocidad de muestreo

  SAR Delta-Sigma Pipeline Flash
Velocidad ~ 10MSPS < 1MSPS ~ 100MSPS > GSPS
Resolución hasta 16 bits entre 10 y 16 bits entre 8 y 14 bits hasta 8~10 bits
Consumo Bajo (~10mW) Muy bajo (~1mW) Medio (~100mW) Alto (~1000mW)
Tabla 4.1 Comparación de tipos de muestreo

  • Texas TLC 5540
    • 8-Bit Resolution
    • Differential Linearity Error
      • ±0.3 LSB Typ, ±1 LSB Max (25°C)
      • ±1 LSB Max
    • Integral Linearity Error
      • ±0.6 LSB, ±0.75 LSB Max (25°C)
      • ±1 LSB Max
    • Maximum Conversion Rate of 40 Megasamples Per Second (MSPS) Max
    • Internal Sample and Hold Function
    • 5-V Single Supply Operation
    • Low Power Consumption: 85 mW Typ
    • Analog Input Bandwidth: ≥75 MHz Typ
    • Internal Reference Voltage Generators
    • Hoja de datos: ver apéndice III.
  • Texas ADS831
    • High SNR: 49dB
    • Internal or external reference option
    • Single-ended or differential analog input
    • Programmable input range: 1Vp-p /2Vp-p
    • Low Power Consumption: 275mW
    • Low DNL: 0.35LSB
    • Single +5V supply operation
    • SSOP-20 Package
    • Hoja de datos: ver apéndice III.
  • Texas THS0842
    • Dual Simultaneous Sample and Hold Inputs
    • Differential or Single-Ended Analog Inputs
    • 8-Bit Resolution 40 MSPS Sampling Analog-to-Digital Converter (ADC)
    • Single or Dual Parallel Bus Output
    • Low Power Consumption: 275 mW Typ Using External References
    • Wide Analog Input Bandwidth: 600 MHz Typ
    • 3.3 V Single-Supply Operation
    • 3.3 V TTL/CMOS-Compatible Digital I/O
    • Internal or External Bottom and Top Reference Voltages
    • Adjustable Reference Input Range
    • Power-Down (Standby) Mode
    • Hoja de datosver apéndice III.
  • Analog Devices AD9057
    • 8-Bit, Low Power ADC: 200 mW Typical
    • 120 MHz Analog Bandwidth
    • On-Chip 2.5 V Reference and Track-and-Hold
    • 1 V p-p Analog Input Range
    • Single 5 V Supply Operation
    • 5 V or 3 V Logic Interface
    • Power-Down Mode: <10 mW
    • 3 Performance Grades
      • (40 MSPS, 60 MSPS, 80 MSPS)
    • Hoja de datos: ver apéndice III.
  • Analog Devices AD9059
    • Dual 8-Bit ADCs on a Single Chip
    • Low Power: 400 mW Typical
    • On-Chip 2.5 V Reference and Track-and-Hold
    • 1 V p-p Analog Input Range
    • Single 5 V Supply Operation
    • 5 V or 3 V Logic Interface
    • 120 MHz Analog Bandwidth
    • Power-Down Mode: <12 mW
    • Hoja de datos: ver apéndice III.

Entre los dispositivos seleccionados, hemos llegado a la conclusión que el conversor que utilizaremos es el TLC5540 de Texas Instruments. Las características que nos han hecho decidir por éste son su bajo consumo, su bajo precio, la alta disponibilidad, y como ventaja adicional por sobre el resto de los conversores, encontramos suficiente documentación sobre su uso, e incluso su uso en aplicaciones similares a este proyecto.

La única contra que tiene este conversor, pero que es igual en cualquiera de los casos, es que no se encuentra disponible en encapsulado DIP, lo que prácticamente nos obliga a comprar un adaptador SOIC - DIP. Este zócalo adaptador sólo lo hemos conseguido en Estados Unidos, y lamentablemente no tiene un bajo precio. El tema del precio esta directamente relacionado con que estos casos ocurren solamente en etapa de desarrollo (de lo contrario se tendría el zócalo necesario para dicho encapsulado), la cuales obviamente no es un caso común ni masivo. Sin embargo consideramos a este problema como temporal, ya que de concluir satisfactoriamente el diseño y la prueba en la placa, se construirá un circuito impreso en donde se va a prever el encapsulado de cada componente sin necesidad de zócalos adaptadores.

Memoria

El funcionamiento de una memoria esta basado en celdas y el interior de cada chip se puede imaginar como una matriz o tabla en la cual cada celda es capaz de almacenar un bit. Es decir, que las memorias se basan en celdas para almacenar cada bit, y dichas celdas están organizadas en arreglos, tal sería la forma de una matriz, en donde se tienen filas y columnas, y cada celda tiene una ubicación única, descripta por el numero de columna y numero de fila. El numero que identifica a cada ubicación se conoce como dirección. Luego, a partir de una dirección se calcula cuál es la fila y columna correspondiente, con lo que ya se puede acceder a la celda deseada.

Las memorias de RAM (Random Access Memory) son memorias volátiles, esto significa que se pierde la información cuando no se le brinda alimentación y se clasifican en dos categorías básicas: la RAM estática y la RAM dinámica, las cuales se describen en las siguientes secciones.

Para este tipo de memorias, aún cuando su funcionamiento es secuencial y en cada avance de reloj se avanza en un bit la dirección de memoria, se debe utilizar una lógica externa de control en donde dicha dirección se incremente. Ante esta característica, hemos encontrado una memoria que tiene una pequeña lógica interna que permite evitar el uso de componentes externos.

Memorias de acceso programable

Se trata de una memoria capaz de realizar operaciones lógicas no complejas, como ser el autoincremento de la dirección de memoria a la cual se accede.

Este tipo de dispositivo sería realmente útil ya que simplificaría la etapa de control de memoria. Una arquitectura de este tipo fue encontrada en la búsqueda de soluciones pero, si bien se encuentra fabricada, aún no existían producto disponibles con esta tecnología. Por lo tanto, continuamos analizado las diferentes posibilidades dentro de las memorias estándar en el mercado (siguiente apartado).

Memoria RAM estática

El componente principal de estas memorias es el flip-flop. Se compone de 4 transistores MOSFET o CMOS en un arreglo tal que cuando se le da un valor en una de sus entradas, este valor es conservado hasta que se quite la alimentación o se le cargue un nuevo valor.

Este tipo de memoria conocida como SRAM (Static Random Access Memory) se compone de celdas de flip-flops. En la siguiente figura se observa la estructura típica de una celda de memoria de una SRAM.

celda SRAM
Fig 4.13 Celda SRAM

En la figura se pueden ver las 4 conexiones necesarias. El pin de entrada indica que es allí en donde se coloca el dato que se desea almacenar. Luego un pulso en "W" (Write) hará que el dato sea cargado en en flip-flop. Finalmente, para volver a obtener el dato guardado, se debe dar tensión en "R" (Read), y en la salida tendremos el dato que anteriormente se había almacenado.

arreglo SRAM
Fig 4.14 Arreglo SRAM

Memoria RAM dinámica

Las memorias DRAM (Dynamic Random Access Memory) son similares a las memorias estáticas, pero su diferencia radica en que en vez de utilizar flip-flops, utilizan condensadores. La utilización de condensadores implica que haya que cargarlos, pero también implica que éstos se descarguen.

Es decir, que para el funcionamiento correcto de estas memorias, una vez que se posiciona en la dirección deseada y se le carga el valor que se quiere almacenar, es estrictamente necesario volver a recurrir a la misma dirección después de cierto lapso de tiempo (este tiempo depende exclusivamente de cada memoria) para volver a cargar el capacitor con el dato que éste tenía antes de que por efecto de la descarga, éste pierda el dato almacenado.

El uso de condensadores en vez de transistores hace que su tamaño sea considerablemente menor, haciendo posible la construcción de memorias de mucha mayor capacidad.

celda DRAM
Fig 4.15 Celda DRAM

La operación de la celda es similar a la de un interruptor, cuando el estado en la fila se encuentra en alto, el transistor entra en saturación y el dato presente en el bus interno de la memoria (columna) se almacena en el condensador, durante una operación de escritura y se extrae en una operación de lectura. El inconveniente que tiene este tipo de memorias consiste en que hay que recargar la información almacenada en las celdas, por lo cual estas celdas requieren de circuitería adicional para cumplir esta función. En la siguiente figura se observa la celda completa con sus aditamentos donde se puede identificar la forma en que se desarrollan las operaciones de escritura, lectura y recarga.

La siguiente figura muestra que cuando dicha celda se encuentra seleccionada por la columna y fila correspondiente, entonces un pulso en el bit de recarga hará que el mismo valor que ya tiene (obtenido desde el dato de salida) es vuelto a cargar como entrada de datos y se vuelve a cargar el condensador. La señale R/W (Read/Write) habilita a que se cargue el condensador con el valor que se encuentra en el pin de entrada de datos, o bien habilita la lectura mediante el pin de salida de datos con el valor que esta cargado en el condensador. Vale aclarar que si se ha demorado en hacer una recarga de datos y el tiempo límite desde la ultima carga del condensador ha sido superado, entonces el dato que se leerá será erróneo.

arreglo DRAM
Fig 4.16 Funcionamiento DRAM

Comparación y elección

El primer punto que se debe analizar es si la memoria que utilizaremos será del tipo estática o dinámica. A continuación presentamos un cuadro comparativo de las principales características de una y otra arquitectura.

Memoria Ventajas Desventajas
SRAM La velocidad de acceso es alta Menor capacidad, debido a que cada celda de almacenamiento requiere mas transistores
Para retener los datos solo necesita estar energizada Mayor costo por bit
Son mas fáciles de diseñar Mayor consumo de Potencia
DRAM Mayor densidad y capacidad La velocidad de acceso es baja
Menor costo por bit Necesita recargar de la información almacenada para retenerla
Menor consumo de potencia Diseño complejo
Tabla 4.2 Comparación de tipos de memorias

Dado que el costo de los componentes no es alto (básicamente por que su capacidad de almacenamiento no es alta tampoco), utilizaremos memorias estáticas, ya que son de más fácil uso, y no requieren de una lógica externa para que la información guardada se mantenga.

Las características determinantes para la elección de la memoria son su capacidad y su velocidad. Hemos hecho una búsqueda de memorias de diferentes tamaños y velocidades en el mercado, y a continuación destacamos cada una con sus características principales:

  • Texas BQ4011
    • Data retention in the absence of power
    • Automatic write-protection during power-up/power-down cycles
    • Industry-standard 28-pin 32K x 8 pinout
    • Conventional SRAM operation; unlimited write cycles
    • 10-year minimum data retention in absence of power
    • Battery internally isolated until power is applied
    • Hoja de datos: ver apéndice III.
  • Cypress CY7C199
    • High speed — 10 ns
    • Fast tDOE
    • CMOS for optimum speed/power
    • Low active power — 467 mW (max, 12 ns “L” version)
    • Low standby power - 0.275 mW (max, “L” version)
    • 2V data retention (“L” version only)
    • Easy memory expansion with CE and OE features
    • TTL-compatible inputs and outputs
    • Automatic power-down when deselected
    • Hoja de datos: ver apéndice III.
  • Cypress CY7C109B
    • High speed — tAA = 12 ns
    • Low active power — 495 mW (max. 12 ns)
    • Low CMOS standby power — 55 mW (max.) 4 mW
    • 2.0V Data Retention
    • Automatic power-down when deselected
    • TTL-compatible inputs and outputs
    • Easy memory expansion with CE1, CE2, and OE options
    • Hoja de datos: ver apéndice III.
  • ALSC AS7C256A
    • Industrial and commercial temperature options
    • Organization: 32,768 words × 8 bits
    • High speed
      • 10/12/15/20 ns address access time
      • 5, 6, 7, 8 ns output enable access time
    • Very low power consumption: ACTIVE
      • 412.5 mW max @ 10 ns
    • Very low power consumption: STANDBY
      • 11 mW max CMOS I/O
    • Easy memory expansion with CE and OE inputs
    • Hoja de datos: ver apéndice III.

Arquitectura de una memoria
Fig 4.17 Arquitectura de la memoria Cypress CY7C-109B

Una vez que se tiene un estimado de las memorias que se podrían utilizar y su precio, se tuvo que hacer la evaluación del tamaño y la velocidad que el proyecto requería.

Dado que se tiene como objetivo tener una velocidad de trabajo del orden de los 40Mhz, la memoria debe tener tiempos de acceso menores a 20~25 ns.

En cuanto al tamaño que ésta debe tener, consideramos que con mil muestras sería en principio suficiente para el objetivo buscado. Sin embargo, si se considera la opción del disparo por hardware para obtener las muestras, entonces se precisarían mas muestras, para poder tener muestras previas y siguientes sobre un hecho que puede no repetirse, con lo cual, se podría pedir que la memoria sea capaz de almacenar diez mil muestras.

Ahora las opciones serían a partir de los 16K x 8 bits como mínimo. La intención de largo alcance del proyecto y la escalabilidad y flexibilidad deseada, hacen que dentro de lo posible, las características limitantes sean las menores posibles y se puedan tener los mejores componentes. Por esta razón es que a partir de un mínimo de 16K pasamos a tener en cuenta las memorias de 32K. Además, una memoria que exceda los mínimos nos permite tener un registro mucho mayor sobre cada muestreo o captura que se realiza. Si en vez de mostrar en pantalla lo que se ha capturado, se desea transferirlo a un archivo para su posterior análisis, entonces esta ventaja pasa a ser fundamental, donde una captura pasa a ser prácticamente un historial sobre el muestreo realizado. Una memoria de 32K nos permite una flexibilidad y posibilidad de realizar muchas operaciones sin que el tamaño de la memoria sea una limitante.

Al igual que en el caso de los conversores analógico-digital, entre los encapsulados disponibles no se encuentra el DIP, por lo que será necesario comprar un zócalo adaptador. De todos modos, esto es solamente temporal, porque en el caso de la construcción de una placa impresa (PCB) este problema queda solucionado.

Luego de analizadas las opciones y verificar su precio, hemos observado que la diferencia de costo entre una memoria de 32K y una memoria que cuadriplique su tamaño, es decir 128K, era de aproximadamente un 15% superior, pero en precios tan bajos, esto pasa a ser casi despreciable, por lo que directamente optamos por excedernos en demasía con la memoria y dejar que este componente sea lo suficientemente grande como para que el día que los alcances del proyecto crezcan, no sea una limitante.

Otra razón por la que hemos elegido la memoria de Cypress es su disponibilidad y precio. Luego de buscar en el mercado uruguayo los componentes citados y ver que no había ninguno en plaza, se buscó en Buenos Aires, Argentina. La memoria de Cypress era una de las tres memorias seleccionadas que se podía conseguir en dicho mercado, pero teniendo ventaja en su precio. Es por esta razón por la cual decidimos utilizar la citada memoria. Esta ventaja nos dio tiempo para poder probarla y estudiarla mientras se construía la placa. Además, existe mucha documentación valiosa sobre su uso y funcionalidad.

Amplificadores de entrada

Los amplificadores de entrada son utilizados principalmente para separar la etapa de entrada de la de adquisición y hacer una adaptación de impedancias. Esto independiza a estas etapas.

Todos los amplificadores seleccionados tienen características muy similares, y todos son aptos para el proyecto, sin embargo el MAX477 tiene como ventaja el encapsulado DIP, que el resto no lo tiene disponible. Esta característica nos simplifica en costo y tiempo, y es por eso que lo hemos elegido. La estabilidad en cuanto a las variaciones de parámetros (offsets) es superior frente al resto, mientras que el ancho de banda y rango de tensiones es similar a los otros amplificadores.

  • Maxim MAX477
    • High Speed
      • 300MHz -3dB Bandwidth (AV = +1)
      • 200MHz Full-Power Bandwidth (AV = +1,VO = 2Vp-p)
      • 1100V/μs Slew Rate
      • 130MHz 0.1dB Gain Flatness
    • Drives 100pF Capacitive Loads Without Oscillation
    • Low Differential Phase/Gain Error: 0.01°/0.01%
    • 8mA Quiescent Current
      • Low Input-Referred Voltage Noise: 5nV/√Hz
      • Low Input-Referred Current Noise: 2pA/√Hz
    • Low Input Offset Voltage: 0.5mV
    • 8000V ESD Protection
    • Voltage-Feedback Topology for Simple Design Configurations
    • Short-Circuit Protected
    • Hoja de datos: ver apéndice III.
  • Texas OPA695
    • GAIN = +2 BANDWIDTH (1400MHz)
    • GAIN = +8 BANDWIDTH (450MHz)
    • OUTPUT VOLTAGE SWING: ±4.2V
      • ULTRA-HIGH SLEW RATE: 4300V/μs
    • RD-ORDER INTERCEPT: > 40dBm (f < 50MHz)
    • LOW POWER: 129mW
    • LOW DISABLED POWER: 0.5mW
    • Hoja de datos: ver apéndice III.
  • Texas OPA691
    • FLEXIBLE SUPPLY RANGE:
      • +5V to +12V Single-Supply
      • ±2.5V to ±6V Dual-Supply
    • UNITY-GAIN STABLE: 280MHz (G = 1)
    • HIGH OUTPUT CURRENT: 190mA
    • OUTPUT VOLTAGE SWING: ±4.0V
      • HIGH SLEW RATE: 2100V/μs
    • LOW dG/dφ: 0.07%/0.02°
    • LOW SUPPLY CURRENT: 5.1mA
      • LOW DISABLED CURRENT: 150μA
    • WIDEBAND +5V OPERATION: 190MHz (G = +2)
    • Hoja de datos: ver apéndice III
  • Texas OPA830
    • HIGH BANDWIDTH:
      • 250MHz (G = +1)
      • 110MHz (G = +2)
    • LOW SUPPLY CURRENT: 3.9mA (VS = +5V)
    • FLEXIBLE SUPPLY RANGE:
      • ±1.4V to ±5.5V Dual Supply
      • +2.8V to +11V Single Supply
    • INPUT RANGE INCLUDES GROUND ON SINGLE SUPPLY
    • 4.88V OUTPUT SWING ON +5V SUPPLY
    • HIGH SLEW RATE: 550V/ns
      • LOW INPUT VOLTAGE NOISE: 9.2nV/√Hz
    • Hoja de datos: ver apéndice III

Las características que nos han hecho elegir el MAX477 de Maxim son mas bien prácticas que técnicas. Es decir, cualquiera de estos amplificadores satisfaría los requisitos, sin embargo, el amplificador de Maxim gana en precio, disponibilidad, y por sobre todo, es el único que se encuentra disponible en encapsulado del tipo DIP. Este encapsulado es nuestro preferido y facilita su conexión y posible reemplazo, sin necesidad de utilizar zócalos especiales, los cuales en ciertos casos son difíciles de conseguir y pueden ser muy caros.

Contadores

Un contador es básicamente un circuito secuencial temporizado. Un contador binario de n bits puede contruirse con n flip-flops en cascada. Los flip-flops que se utilizan son flip-flops tipo T, el cual cambia de estado (0 o 1) en cada flanco ascendente de su entrada de reloj. A continuación se puede observar la operación básica de un contador de 4 bits.

Estructura de un contador
Fig 4.18 Estructura de un contador

Dentro de la familia de contadores, hemos encontrado de hasta 8 bits que trabajen a la frecuencia especificada (40Mhz) y es por esta razón que debimos colocar dos contadores. También consideramos útil que los mismos sean contadores hacia adelante y hacia atrás. Si bien puede que no lo utlicemos en este momento, consideramos que es de buen diseño poder prever futuros usos y dar la posibilidad de expandir a funcionalidad de los componentes. Así también hemos elegido un contador que tenga una señal de habilitación de funcionamiento, es decir, que si el dispositivo no se encuentra habilitado, por mas que tenga señal de reloj y se intente avanzar en la cuenta, no lo va a hacer ya que como se espera, éste no se encuentra habilitado. Dado que el direccionamiento de las memorias es de 16 bits, se deben utilizar dos contadores en cascada para obtener el funcionamiento deseado.

Entre los dispositivos TTL de alta velocidad hemos encontrado el siguiente:

  • 74F269 (ver hoja de datos en apéndice III)

Hemos elegido este por ser el mas estándar y utilizado mundialmente. Nos provee las características necesarias para el proyecto, y es de alta disponibilidad, bajo precio, y existe mucha documentación sobre su uso. Consideramos que siempre que se puedan utilizar componentes masivos y siempre que cumplan con las especificaciones, sería un buen punto a tener en cuenta para tomar la decisión sobre su uso.

Buffers bidireccionales 8-bit

Son conocidos también como transceptores, y son básicamente 2 separadores de tres estados. Estos separadores de tres estados hacen que en funcionamiento normal, cada bit de salida tenga exactamente el mismo valor que en su correspondiente entrada. Sin embargo, cuando se los pone en el tercer estado (tri-state), su salida pasa a ser de alta impedancia, tal como si no existiese conexión alguna. De esta forma se permite a algún otro dispositivo escribir en ese bus. Los transceptores, o buffers bidireccionales, hacen uso de esta característica para escribir a uno u otro lado del bus. Es decir que pueden hacer que un bus de entrada se convierta en uno de salida y viceversa. Tiene como objetivo poder separar a dos sub-circuitos que tengan funciones tanto de lectura como de escritura, entonces mediante este dispositivo es posible que ambos se comuniquen, tomando previa decisión de quién es el que escribe y quién es el que lee.

Buffer bidireccional
Fig 4.19 Buffer bidireccional

Al igual que en la elección del contador, hemos tomado el mismo criterio de utilizar un componente masivo. La línea 74F de Fairchild Semiconductors es la óptima para estos casos.

El componente seleccionado en este caso fue entonces el 74F245.

Protectores USB

Estos protectores USB son supresores de transitorios de tensión que puedan ocurrir en la línea de comunicación. Estos ruidos pueden provenir de cualquier fuente, y pueden provocar daños a los equipos en ambos extremos del bus USB si son de magnitud y duración suficiente. Estos son protectores para USB 1.1, y nos son aptos para las altas velocidades del USB 2.0 dada su alta capacitancia de entrada.

Circuito de protección USB
Fig 4.20 Circuito de protección USB

Hemos buscado circuitos integrados que provean esta funcionalidad, y la única fabrica que provee componentes específicamente con este fin es Texas Instruments. Los modelos disponibles que hay son: SN75240, SN65240, y SN65220. Entre estos componentes, el único del cual teníamos disponibilidad y solamente en los Estados Unidos, es del SN65240. Este integrado difiere del SN65220 en que el primero tiene dos supresores mientras que el segundo tiene uno solo. Es evidente que esta característica no afecta en absoluto el diseño ni el funcionamiento del circuito.

  • Texas SN65220/SN65240/SN75240 (ver hoja de datos en apéndice III)

Osciladores programables

Hemos evaluado también la utilización de un oscilador integrado programable en vez de cristales. Éstos tienen la ventaja de tener menor radiación, menor amplitud en componentes de mayor frecuencia, requieren menor cableado, tienen mayor estabilidad, y también evitan tener que comprar varios cristales para diferentes frecuencias cuando se pueden obtener a partir de un mismo integrado. Sin embargo los encapsulados en los que se consiguen estos integrados tienen un montaje mas complicado, y los cristales son de uso mucho más masivo y común que estos integrados. Hemos tenido en nuestro poder muestras de estos componentes, pero aún así tomamos la decisión de optar por un cristal, ya que tienen muy alta disponibilidad en cualquier mercado (incluso el local), son baratos, fácilmente reemplazable, y proveen una forma segura y conocida de manejo. Además, se cuenta con extensa documentación sobre su uso. Creemos todas éstas razones suficientes para haber tomado la elección del cristal.

A continuación presentamos un ejemplo de oscilador programable.

  • Linear Technology LTC6905 (ver hoja de datos en apéndice III)

Etapa de entrada y acondicionamiento de señal

Diseño

La etapa de entrada consta de 2 amplificadores operacionales, y un selector de rango de voltaje, o mejor dicho, de ganancia de la etapa.

Directamente de la entrada de medición, la señal entra en el primer amplificador operacional. Este se encarga de disminuir los voltajes de la señal de entrada, es decir, tiene ganancia mucho menor que la unidad para adaptar una señal de entrada que se encuentre sobrepasando los niveles máximos de tensión aceptable.

También este primer amplificador se encarga de sumar una tensión media a la señal de entrada, de modo de que luego esta señal se encuentre centrada en el valor de tensión medio entre los rangos de entrada de los conversores A/D.

La señal de entrada original se supone centrada en 0v y el osciloscopio debería ser capaz de medir señales tanto positivas como negativas. Dado que la alimentación de todos los circuitos es de 0-5v, para lograr medir señales que sean negativas a la entrada del osciloscopio debemos de sumarle una tensión continua, la cual haría que una entrada de 0v se encuentre en el valor de tensión que se encuentre justo en el medio del rango de voltajes del conversor A/D.

Una vez que la señal es "pequeña" y esta centrada, pasa a un segundo amplificador, el cual tiene una ganancia bastante alta para adaptar esta señal a valores de tensión que maximicen el rango de conversión del ADC.

La ganancia de este segundo amplificador esta dada por la selección de resistencias en su nodo de realimentación. La selección de la resistencia a utilizar esta comandada por patas de control del PIC.

Se trata de 2 patas de control, las cuales nos dan un total de 4 posibles selecciones.

Estas 2 señales de control del PIC van a un decoder/demux, el cual a partir de estas 2 señales genera 4, las cuales son mutuamente excluyentes. Luego estas van a un juego de 4 llaves analógicas. De este modo, solo una de las 4 llaves estará seleccionada a la vez.

Es aquí donde se selecciona el camino que seguirá el nodo de realimentación y ganancia del segundo amplificador, seleccionando a través de cada uno de los 4 caminos una resistencia en particular, de modo de seleccionar la ganancia deseada de esta etapa.

Por más información, ver los esquemáticos de la etapa de entrada en el Apéndice 1.

La siguiente es una foto de la etapa de entrada final.

In Circuit Debugger
Fig 4.21 Etapa de entrada del osciloscopio

Componentes utilizados

Amplificador operacional: MAX477

En un principio habíamos elegido al MAX477 (ver selección de componentes). Este amplificador no lo habíamos utilizado sino hasta casi llegado el final del proyecto, ya que dados los tiempos que se han manejado, no habíamos llegado al diseño e implementación de la etapa de entrada.

Al probar el funcionamiento del MAX, hemos experimentado que, dada su altísima ganancia, este provocaba oscilaciones en su salida. También el hecho de amplificar con gran ganancia señales pequeñas, la distorsión que se obtenía a su salida era muy considerable. Esta distorsión era básicamente oscilaciones pequeñas sobre la señal original.

Al cambiar este operacional por un 741 (muy popular dentro del ambiente electrónico), observamos que su comportamiento se acercaba más al esperado. Las oscilaciones ya no existían y por lo tanto se obtenía una señal mucho mas limpia. Sin embargo la ganancia era mucho menor que la del MAX, y esto provocaba que las resistencias elegidas para la selección de rangos prácticamente no provoquen diferencia alguna en la ganancia de este segundo amplificador, en especial a altas frecuencias. Esto implicaba tener una señal mucho mas limpia a la salida de la etapa de entrada pero sin control sobre la selección de rangos.

Así también, al utilizar el 741 el ancho de banda se ve drásticamente reducido, ya que este operacional no esta preparado para trabajar a las altas frecuencias a las cuales va a ser sometido el osciloscopio. Además, al tener un ancho de banda menor, la ganancia de este operacional es modificada de acuerdo a la frecuencia de la señal de entrada, haciendo que a partir de una frecuencia media se comporte de forma no-lineal.

Luego hemos optado por probar con otro operacional, en este caso, un OP37 de Texas Instruments, pero sin lograr un resultado satisfactorio.

Finalmente hemos probado con una combinación de 741 y MAX, pero dejamos este tema como mejora pendiente para el futuro (ver Capítulo 10. Temas pendientes y rentabilidad ).

Decodificador binario: 74HCT139

Este decodificador binario cumple 2 funciones básicas: decodificar un numero binario representado en 2 bits en un juego de 4 bits de control, y, adicionalmente (por la naturaleza de un decodificador), estos bits son mutuamente excluyentes, necesario para el control de las llaves analógicas.

Es necesario utilizar inversores a la salida de estas señales de control ya que el decodificador controla señales activo-bajas, mientras que el integrado de llaves analógicas utiliza una lógica activo-alta. El inversor en cuestión, el 74HC240 es un inversor de 8 pares de entradas/salidas.

Llaves analógicas: 74HC4066

Este integrado contiene 4 llaves analógicas. Cada una de estas llaves consta de un par de transistores que permiten o no la comunicación directa entre sus 2 puntas y es habilitado mediante una pata de habilitación independiente para cada uno de estos circuitos.

Cuando esta llave se encuentra habilitada, su resistencia es de aproximadamente 50 ohm, mientras que cuando se encuentra deshabilitada, su resistencia tiende a infinito. Todas estas compuertas son independientes, y es por esto que se necesita del decodificador, el cual hace que las señales de control sean mutuamente excluyentes, de modo que nunca pueda estar seleccionado más de un canal simultáneamente.

Un detalle a tener en cuenta es que los voltajes en sus pines de entrada/salida no pueden superar por mucho a Vcc ni caer muy por debajo de tierra. Esto implicaría una conducción forzada de los transistores.

Frecuencia máxima de trabajo

La frecuencia máxima de trabajo del osciloscopio puede calcularse a partir de las frecuencias máximas de los componentes que lo integran. Las compuertas lógicas simples generalmente no son el problema, puesto que éstas, siendo de naturaleza TTL, tiene un ancho de banda muy superior al del resto de los componentes.

Por eso, para calcular la frecuencia máxima de trabajo del osciloscopio estudiaremos la frecuencia máxima que soporta cada uno de sus componentes. Sin embargo, no todos los componentes cumplen un papel relevante en el cálculo de la frecuencia máxima de trabajo. Por ejemplo, la velocidad máxima de trabajo del PIC es independiente de la velocidad máxima de trabajo del osciloscopio puesto que en las capturas a alta velocidad el PIC no juega ningún papel, más que el de disparar la captura. Por lo tanto, el análisis de la máxima frecuencia de trabajo debe realizarse a partir de los componentes que están involucrados directamente en la capturas a a alta velocidad, a saber:

  • Conversores AD
  • Contadores
  • Memorias
  • Amplificadores de entrada

De las hojas de datos de dichos componentes podemos extraer sus frecuencias máximas de trabajo, las cuales son:

Componente Modelo Frecuencia máxima
Contador 74F269 100 Mhz
Memoria CY7C-109B-25 40 MHz (ciclo lectura/escritura: 25 us max)
Conversor AD TLC5540 40 MHz
Amplificador MAX477 300 Mhz
Tabla 4.3 Frecuencia máxima de componentes

Como se puede observar en la tabla las dos limitantes son el conversor AD y la memoria, siendo ésta última la menos importante puesto que se puede reemplazar por el modelo CY7C-109B-15 (de igual pinout) que trabaja hasta 66 Mhz. El conversor AD, en cambio, no tiene un sustituto inmediato conocido.

Por consigue, de éste análisis se desprende que la frecuencia máxima de trabajo del osciloscopio es de 40 Mhz. Para lograr dicha frecuencia se deberá utilizar un cristal de 40 Mhz y será necesario contar con un PCB bien diseñado a los efectos de minimizar ruidos e interferencias, que son muy dañinos a dichas frecuencias.

_En nuestro caso particular (en el cual no dispusimos del tiempo y los medios necesarios para fabricar un PCB) la frecuencia máxima a la cual pudimos hacer trabajar la placa fue 8 Mhz ya que, para frecuencias superiores (probamos con un cristal de 20MHz) el funcionamiento de la placa era erróneo o nulo. Atribuimos estos problemas a la falta de haber diseñado un circuito impreso apropiado, y llegamos a la conclusión de que para trabajar a tan altas frecuencias la distribución y el diseño físico de la placa cumple un papel fundamental, cosa que no ocurre a bajas frecuencias donde solo es necesario que los componentes estén conectados correctamente._

Por más información referirse a el Capítulo 8. Fabricación y puesta en marcha donde se pueden ver fotos de la placa.

Análisis de tiempos

En esta parte se realizará un análisis, estudio, y verificación de los requerimientos de tiempos de los componentes para garantizar el correcto funcionamiento del equipo a las velocidades esperadas. Esto se hará sobre los componentes que forman parte de las operaciones de alta velocidad, ya que aquí es donde se considera crítico el tema de los tiempos.

Para comenzar, debemos especificar las limitaciones máximas y mínimas de los componentes:

  • Microcontrolador PIC 18F4550
    • velocidades aceptadas del reloj externo (usado para el control de alta velocidad):
      • 4, 8, 12, 16, 20, 24, 40, y 48 MHz.
  • Buffer bidireccional 74F245
    • tiempo de propagación:
      • típico: 4 ns.
      • máximo: 7 ns.
  • Compuertas NAND 74F00
    • tiempo de propagación:
      • típico: 3.5 ns.
      • máximo: 6 ns.
  • Contadores 74F269
    • tiempo de propagación:
      • típico: 4 ns.
      • máximo: 10 ns.
    • frecuencia máxima de operación:
      • mínimo: 85 MHz.
  • Conversor AD TLC5540
    • frecuencias de operación:
      • mínimo: 5 MHz.
      • máximo: 40 MHz.
    • retardo de salida (tiempo de conversión)
      • típico: 9 ns.
      • máximo: 15 ns.
  • Memoria CY7C109B-20
    • tiempo de acceso:
      • mínimo: 20 ns.
    • tiempo de retención de la dirección:
      • mínimo: 20 ns.
    • tiempo de retención del dato (durante la escritura):
      • mínimo: 10 ns.

Dados los límites del PIC y del conversor AD, se puede ver cómo la velocidad del oscilador externo, que es quién controla la señal de reloj de los componentes de alta velocidad, debe ser entre 5 y 40 MHz. Por esta razón consideramos apropiado comenzar con las pruebas con una señal de reloj de 8 MHz, para luego aumentar esta velocidad.

El estudio que realizamos a continuación será sobre el proceso de escritura, ya que es donde se utilizan los componentes a máxima velocidad.

oscusb-diagtiempos.gif
Fig 4.22 Diagrama de tiempos de escritura a memoria a 40Mhz

La señal de reloj esta tomada a la salida del inversor que va directo al cristal, ya que esta es la señal común que controla a los circuitos externos.

El reloj que llega a los contadores es invertido 3 veces, por lo que la salida del contador será estable transcurridos 15ns desde el flanco negativo del reloj. Este tiempo esta determinado por la suma del retardo entrada/salida de los 3 inversores más el tiempo de respuesta de los contadores (tambien sumados, ya que se encuentran en cazcada).

Los datos, que son obtenidos a la salida del conversor, estarán disponibles 12.5ns después del flanco negativo del clock, ya que se trata de los 4ns de retardo del inversor más los 9ns de tiempo de respuesta del conversor.

De esta forma es que se tienen los datos y la dirección estables transcurridos solamente 2.5ns a partir del flanco positivo del reloj, ya que estas señales son manejadas por el flanco negativo del reloj.

Finalmente, la escritura se realiza en el flanco negativo de la señal WR\. Esta señal pasa por un solo inversor, es por esto que el flanco negativo de la señal de control se encuentra a 3.5ns del flanco positivo del reloj.

El diagrama muestra que se cumplen todos los requerimientos necesarios para que al instante de escritura en la memoria, los datos y la dirección se encuentren disponibles previamente, y que también estén fijos durante el tiempo que lleva este proceso (12ns).

De igual forma se puede inferir que mientras que el reloj se encuentre dentro de las velocidades permitidas (5 a 40Mhz), el circuito funciona de igual forma.

Luego, para el proceso de lectura no se utiliza el conversor, pero sí los contadores (para direccionar la memoria). Este proceso no es sincrónico (no utiliza la señal de reloj), sino que una vez que se direcciona la memoria 12ns después se encuentran los datos disponibles. Dado que la velocidad de procesamiento del microcontrolador no llega a estos tiempos de respuesta, esta determinado que cuando éste intente obtener los datos del bus, éstos ya van a estar disponibles.

Para concluir, podemos decir que el estudio de tiempos que hemos realizado nos asegura de que los componentes van a funcionar a las velocidades esperadas sin inconvenientes, ya que cumplen con los requisitos necesarios para los procesos de escritura a alta y baja velocidad, como también para la lectura de los datos.

Consumo de potencia y alimentación

Para decidir si es necesario alimentar la placa con una fuente externa (o si basta con la potencia entregada por el puerto USB) basta con estudiar el consumo de los diferentes componentes activos que integran el osciloscopio, los cuales se presentan en la siguiente tabla (todos los valores están en mA).

Comp. Típica Máxima Cantidad Típica Máxima
PIC18F4550 200 300 1 200 300
74F269 113 135 2 226 270
TLC5540 17 27 2 34 54
CY7C-109B 80 100 2 160 200
MAX477 100 120 2 200 240
74F245 95 120 2 190 240
74HC4066 20 20 2 40 40
Total 1050 1344
Tabla 4.4 Consumo de potencia de componentes activos

En esta tabla se omitieron algunos componentes cuyo consumo es despreciable (74HCT240, 74HCT139).

A partir de los valores típicos y máximos totales de la tabla se puede concluir (alimentación de 5V) que el consumo de potencia del osciloscopio ronda entre los 5 y 7 watts.

Dado que un puerto USB es capaz que suministrar un máximo de 500 mA de corriente por cada dispositivo conectado al bus, resultó indispensable el uso de una fuente externa para alimentar la placa. Para ello utilizamos decidimos utilizar un regulador 7805 y optamos por una fuente de 9V DC pues es el voltaje mínimo necesario para el funcionamiento del 7805 (y por lo tanto el que disipa menos calor) y además permitiría la posibilidad de ser reemplazado por una batería de 9V, en caso de ser apropiado y/o necesario.

Trigger externo por hardware

Otro de los temas que quedó pendientes fue la implementación de un trigger externo por hardware, lo cual permitiría, por ejemplo, disparar la captura de datos por un canal al recibir un pulso recibido por el otro canal.

Para implementar esta característica se puede usar el módulo comparador que viene incluido en el PIC. Dicho módulo permite disparar una interrupción cuando la señal de entrada supera un nivel dado de voltaje. El voltaje de referencia puede suministrarse con otra señal externa o utilizar un generador interno de referencia, de 4 bits. Por lo cual es posible generar 16 valores de referencias. A su vez, también es posible configurar el comparador para disparar por flanco positivo o negativo.

En definitiva, utilizando el módulo comparador del PIC es posible construir un trigger por hardware de 16 niveles. El módulo comparador incluye dos comparadores independientes.

Las salidas AOUT1 y AOUT2 de la etapa de entrada se encuentran conectadas a los pines RA0 y RA1 del PIC. Estos pines son las entradas a los dos comparadores del PIC. El módulo comparador del PIC puede funcionar en varias configuraciones. En particular, para nuestro caso utilizaríamos el modo de cuatro entrada multiplexadas a dos comparadores (CM2:CM0 = 110) como se muestra en el siguiente diagrama:

pic-comparador.gif
Fig 4.23 Comparador para el trigger por hardware

Por más información consultar la hoja de datos del PIC (capítulo 15).

Características del módulo comparador

Las especificaciones del módulo comparador del PIC son las siguientes:

  • puede usar una referencia interna de voltaje programable
    • 16 valores
  • 2 rangos
    • rango bajo: 0 -- 0.667 ΔV
    • rango alto: 0.25 ΔV -- 0.75 ΔV
  • ΔV seleccionable. Valores posibles:
    • ΔV = Vdd - Vss
    • ΔV = Vref+ - Vref-
    • Tiempo de ajuste del voltaje de referencia: 10 us (max)
  • Entradas analógicas (deben estar entre Vdd y Vss)
    • RA0 (entrada al primer comparador)
    • RA1 (entrada al segundo comparador)
    • RA2 (Vref-)
    • RA3 (Vref+)
  • Salidas digitales (no se usan en nuestro caso)
    • RA4 (salida comp1)
    • RA5 (salida comp2)
  • Tiempo de respuesta del comparador: 400ns (max)

Tiempos y demoras

Para esta característica, el tiempo cumple un papel crucial. Por lo tanto, debemos es necesario estudiar detenidamente los tiempos involucrados, a saber:

  • tiempo de respuesta del comparador (400 ns max)
  • tiempo de atención a la interrupción
  • tiempo de ejecución de las instrucciones necesarias (depende del código)

Por lo tanto, para lograr un comportamiento satisfactorio en el trigger de hardware será necesario medir y cuantificar de la forma más precisa posible dichos tiempos.

Por otro lado, es claro que la suma de dichos tiempos generará una demora inaceptable para altas frecuencias, por lo cual resulta inviable disparar el proceso de captura a través de la interrupción.

Por lo tanto, lo que haremos será detener la captura, en lugar de empezarla. Esto permitirá conservar las muestras capturadas en el momento exacto que ocurrió el trigger, que es justamente el objetivo de un trigger externo.

También es evidente que no detendremos la captura en el momento exacto que recibimos la interrupción del comparador, puesto que querremos obtener una cantidad considerable de muestras posterior al momento del disparo para poder observar que ocurrió después del mismo. Por lo tanto, una vez que recibamos la interrupción del comparador se esperará un tiempo arbitrario (a definir) antes de detener los comparadores. Para implementar esta demora arbitraria se utilizará alguno de los timers internos del PIC.

En definitiva, la demora total entre el momento que llega el trigger por la señal de entrada y el momento en que se detienen los contadores es la suma de las siguientes demoras:

  • demora de respuesta del comparador (400 ns máx)
  • demora de atención a la interrupción (ver hoja de datos del PIC)
  • demora en ejecutar las instrucciones para configurar el timer (ver demora de instrucciones en hoja de datos del PIC)
  • demora arbitraria (a definir, según el caso)
  • demora en ejecutar las instrucciones para detener los contadores

Para que el algoritmo funcione correctamente todas estas demoras deberán ser cuantificadas con precisión. Para ello será necesario analizar una por una las instrucciones ejecutadas. Si nuestro código estuviera escrito en assembler, esto sería tedioso pero trivial. Sin embargo, como nosotros programamos en lenguaje C, será necesario compilar el programa, y utilizar la vista de código ensamblado disponible en el MPLAB (en el menú View - Disassembly listing).

Algoritmo de trigger por hardware

Una vez calculada apropiadamente la demora total estaremos en condiciones de poder implementar el mecanismo de gatillado por hardware, a través del siguiente algoritmo:

  1. se mantiene al PIC capturando de forma continua
  2. cuando llega el disparo externo el comparador (que habrá sido programado acorde previamente) éste genera una interrupción
  3. en la rutina de atención a la interrupción se espera un tiempo suficiente como para llenar gran parte de la memoria, pero no demasiado como para que los contadores den una vuelta completa y sobreescriban las muestras capturadas en el momento que ocurrió el trigger
  4. luego de terminada dicha espera se detienen los contadores y se retroceden una cantidad N, donde N es el producto entre la frecuencia del oscilador y la demora total (calculada en la parte anterior) Para ello serán necesarios lo siguientes pasos:
    • cambiar la dirección del contador (pin UPDN del bloque de adquisición)
    • seleccionar CKLO como entrada de clock (a través de CKSEL)
    • enviar N ticks a CKLO (pin RC0 del PIC)
  5. se lee la cantidad de muestras solicitadas y se transfieren al PC

Este algoritmo es fácilmente adaptable (cambiando el N) para transferir una cantidad determinada de muestras previas al disparo del trigger para poder observar que ocurría antes de que éste ocurriese, lo cual puede ser útil en muchos casos.

Temas pendientes

Por razones de tiempo no fue posible implementar esta característica en el firmware del osciloscopio. Sin embargo, el hardware fue dejado previsto de manera que solo queda pendiente la implementación del algoritmo en el firmware.

Herramientas de programación

Una vez seleccionada la arquitectura hay que analizar cómo es que esta se programa. Al tratarse de un PIC, normalmente se utilizaría el PICSTART Plus, de Microchip. Sin embargo, el modelo que hemos seleccionado es el único que no funciona con este programador. Así mismo, una ventaja que teníamos si este programador nos sirviese, es que tendríamos uno disponible a nuestro alcance, sin la necesidad de comprar uno. Al momento de realización del proyecto, se estimaba que en el futuro una actualización iba a permitir utilizar dicho PIC, pero dado que aún esto no había ocurrido, corrimos con la necesidad de conseguir o construir nuestro propio programador.

La solución que encontramos fue el programador y depurador ICD2. Hemos conseguido uno a bajo precio en los Estados Unidos, pero al verse demorado este proceso, especialmente en que llegue a nuestras manos, optamos por comenzar construyendo nuestro propio programador.

PG2C (Programador PIC de interfaz serie)

Este simple programador es el que nos permitió comenzar con la programación y prueba del microcontrolador. Antes de tener en nuestras manos el ICD2, debimos construir nuestro propio programador para poder comenzar con el proyecto.

A continuación mostramos el esquemático del programador:

Programador serie
Fig 4.24 Programador serie

Para poder programar el PIC, se debe usar el software PicPgm (http://www.members.aon.at/electronics/pic/picpgm/index.html).

La simpleza del circuito nos permitió comenzar rápidamente con la programación y prueba del PIC, sin embargo esta herramienta no nos iba a servir a futuro cuando comenzáramos con la fabricación de la placa, ya que nos exigía extraer el microcontrolador para su programación, y no contaba con una herramienta de depurado, lo que creemos indispensable para la etapa de desarrollo e implementación.

CUI (Create USB Interface)

Este pequeño circuito nos daba la posibilidad de programar el PIC vía USB. Se trata de pocos componentes, y de un firmware que debe correr en el PIC para permitir la conexión USB. Cabe aclarar que en una primera etapa, para poder cargarle dicho firmware al PIC, se debe poseer de un programador estándar. Una vez que el PIC esta programado con este programa base se puede cargar nuevos programas en el sin necesidad de un programador. Esto nos permite realizar actualizaciones del firmware en el PIC sin necesidad de que nosotros o el usuario final posea un programador.

Create USB Interface
Fig 4.25 Create USB Interface

ICD2 (In Circuit Debugger)

Este equipo nos permite la programación del PIC, pero adicionalmente permite depurar el programa directamente dentro del microprocesador. De esta forma no se trabaja sobre una simulación de cómo podría funcionar el sistema, sino que efectivamente se trabaja en tiempo real sobre el sistema real.

Hemos elegido el Easy ICD2, el cual es un ICD2 completamente compatible y similar al fabricado por Microchip, pero a un costo mucho menor.

In Circuit Debugger
Fig 4.26 In Circuit Debugger

Como se puede observar, el dispositivo consta de dos partes. La primera y principal es la que provee la interfaz hacia el PC, permitiendo la comunicación y programación. La segunda placa es simplemente una interfaz de conexión con el PIC. Esto permite, tal cual luego hemos hecho, realizar la conexión y programación directamente sobre nuestra placa de desarrollo, sin tener que extraer el PIC y colocarlo en el zócalo de programación. Es decir, realizando las conexiones pertinentes, se puede conectar directamente el programador a nuestro circuito y programar y depurar directamente allí. Esta es la razón principal por la cual hemos escogido esta herramienta.

Características principales:

  • Interfaz ,S-232 para conexión al PC
  • Depurado en tiempo real
  • Firmware actualizable desde el PC
  • LEDs indicadores de diagnostico (Power, Busy, Error)
  • Depurado con detenciones programadas y monitoreo de variables

Referencias

toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
jpgjpg adc_ds_arch.jpg manage 21.2 K 22 Feb 2006 - 05:46 MartinSzmulewicz  
jpgjpg adc_sar_arch.jpg manage 24.5 K 22 Feb 2006 - 05:46 MartinSzmulewicz  
jpgJPG flashadc.JPG manage 29.2 K 01 Mar 2006 - 23:32 MartinSzmulewicz Flash ADC
jpgJPG PipelineADC.JPG manage 24.2 K 01 Mar 2006 - 23:56 MartinSzmulewicz Pipeline ADC
jpgJPG comparacionADC.JPG manage 22.8 K 02 Mar 2006 - 00:01 MartinSzmulewicz Comparación ADC
gifgif semiflash.gif manage 9.2 K 02 Mar 2006 - 01:23 MartinSzmulewicz Semiflash ADC
jpgjpg ResVsSampleRate.jpg manage 60.5 K 02 Mar 2006 - 01:35 MartinSzmulewicz Resolución Vs Velocidad de muestreo
jpgJPG memoria.JPG manage 54.4 K 03 Mar 2006 - 19:31 MartinSzmulewicz Arquitectura de una memoria
gifgif sram_1.gif manage 11.7 K 03 Mar 2006 - 19:59 MartinSzmulewicz celda SRAM
gifgif sram_2.gif manage 7.5 K 03 Mar 2006 - 20:00 MartinSzmulewicz arreglo SRAM
gifgif dram_1.gif manage 4.8 K 03 Mar 2006 - 20:16 MartinSzmulewicz celda DRAM
gifgif dram_2.gif manage 8.2 K 03 Mar 2006 - 20:17 MartinSzmulewicz arreglo DRAM
jpgJPG usb.JPG manage 6.6 K 04 Mar 2006 - 16:55 MartinSzmulewicz Ciurcuito de protección USB
jpgJPG contador.JPG manage 7.3 K 04 Mar 2006 - 22:43 MartinSzmulewicz Estructura de un contador
jpgJPG bidir_buffer.JPG manage 23.3 K 04 Mar 2006 - 23:20 MartinSzmulewicz Buffer bidireccional
jpgjpg CUI.jpg manage 52.6 K 05 Mar 2006 - 22:26 MartinSzmulewicz Create USB Interface
jpgjpg ICD2.jpg manage 170.9 K 05 Mar 2006 - 22:36 MartinSzmulewicz In Circuit Debugger
jpgjpg PG2C.jpg manage 126.2 K 05 Mar 2006 - 23:01 MartinSzmulewicz Programador serie
gifgif pinout-pic.gif manage 18.7 K 08 Mar 2006 - 13:46 PabloHoffman pintout del pic
gifgif pic-features.gif manage 50.2 K 08 Mar 2006 - 13:47 PabloHoffman features del pic
jpgjpg pic-photo.jpg manage 3.5 K 08 Mar 2006 - 13:47 PabloHoffman foto del pic
jpgjpg devb_lx_back_500px.jpg manage 37.9 K 28 May 2006 - 11:40 PabloHoffman placa desarrollo etrax
pngpng bloques_pic.png manage 33.3 K 29 May 2006 - 15:45 MartinSzmulewicz diseno de bloques - pic + componentes
jpgjpg oscusb-entrada.jpg manage 133.9 K 11 Jun 2006 - 19:56 PabloHoffman Etapa de entrada del osciloscopio
gifgif oscusb-diagtiempos.gif manage 5.4 K 14 Jun 2006 - 01:28 PabloHoffman diagrama de tiempos
elsevsd oscusb-diagtiempos.vsd manage 45.5 K 14 Jun 2006 - 01:29 PabloHoffman diagrama de tiempos - fuentes visio
gifgif pic-comparador.gif manage 5.2 K 14 Jun 2006 - 04:29 PabloHoffman comparador del pic
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r56 < r55 < r54 < r53 < r52 | More topic actions
Oscusb.DocCap04Hardware moved from Oscusb.DocCap05Hardware on 27 May 2006 - 21:09 by PabloHoffman - put it back

Osciloscopio USB


Esta Web
Cronograma
  • DONE planificación
  • DONE análisis
  • DONE presentación oral
  • DONE diseño
  • DONE implementación
  • DONE documentación
  • DONE imprevistos
  • DONE defensa
  • MOVED TO... correcciones
 
Powered by pablohoffman.com
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding pablohoffman.com? Send feedback