¿Las mejores herramientas para depurar circuitos digitales simples?

10

Soy un desarrollador de software profesional que está acostumbrado a los lujos de los depuradores integrados. Desde hace un tiempo, he estado experimentando con la plataforma Arduino. Sin embargo, encuentro que intentar interactuar con componentes como un sensor de temperatura digital DS1820 de Dallas es como buscar en la oscuridad.

Suponiendo un presupuesto suelto de $ 200 más o menos, ¿qué tipo de herramientas hay para ayudarme a visualizar lo que está sucediendo? He examinado el Link Instruments MSO-19, pero honestamente no sé mucho sobre la diferencia entre un osciloscopio y un analizador lógico.

¿Cómo sé que el dispositivo que compro será capaz de medir los tipos de componentes (simples) que estoy usando?

Owen Thomas
fuente

Respuestas:

9

esencialmente, un osciloscopio le da una lectura gradual del voltaje en la línea, mientras que un analizador lógico solo le dirá si es 0 o "alto" (el valor de "alto" podría ser 5V, 3.3V o 1.8V dependiendo de tu circuito) A menudo verá que los analizadores lógicos tienen muchos más canales (líneas que se pueden leer simultáneamente) que los osciloscopios debido a la menor resolución requerida.

En cuanto a un dispositivo específico, he escuchado grandes cosas sobre la lógica de Saleae . Muestra a 24MHz; Esto significa que verifica si el voltaje en una sonda en particular es alto o bajo 24 millones de veces por segundo. El software también parece tener cierto conocimiento de los protocolos integrados comunes para ayudar a la depuración. Me imagino que 24MHz serían suficientes para el trabajo de arduino ya que la velocidad máxima de reloj del Atmegaxx8 es de 20MHz.

Jeremy
fuente
Después de medio día de más investigación, puedo decir que Saleae Logic debería ayudarme con el 90% de las ideas que tengo, por ahora. El software se ve pulido e intuitivo para un "extraño" de hardware como yo. Puedo ver cómo un osciloscopio sería inmensamente útil, pero para los tipos de proyectos simples, un analizador lógico USB parece una buena compensación.
Owen Thomas
En The soul of a new machineTracy Kidder dice (parafraseando) que los hombres de las cavernas usaron un osciloscopio para ver por qué el fuego no se quemaría. :-)
stevenvh 05 de
9

esto es solo una adición a la respuesta de penjuin ya que no cabe en un comentario y su respuesta es generalmente correcta. Solo quiero aclarar una implicación en su respuesta.

Tenga mucho cuidado al elegir un dispositivo de medición en función de su ancho de banda / frecuencia de muestreo. Un dispositivo con una frecuencia de muestreo de 25 mhz no puede muestrear con precisión una señal de reloj digital de 25 mhz, ni siquiera cerca.

Si toma una señal de reloj digital a 25 mhz y la introduce en un osciloscopio con un ancho de banda de 25 mhz, verá algo cercano a una onda sinusoidal. Un osciloscopio con una frecuencia de muestreo de 25 mhz probablemente mostraría un nivel de CC ya que, según Nyquist, la señal de frecuencia más alta que tal osciloscopio podría muestrear sería de 12.5 mhz.

Una onda cuadrada contiene una frecuencia fundamental que es su frecuencia de reloj, para este ejemplo 25mhz. También contiene grandes armónicos impares que le dan su forma cuadrada, para mirar una señal de reloj digital de 25 mhz con precisión, necesitaría no solo mirar 25 mhz, sino también 75, 125, 175, 225, etc. a la precisión deseada o hasta la velocidad de respuesta del transceptor.

Si bien esto es un poco menos importante para un analizador lógico, sigue siendo muy importante. El analizador lógico está buscando un "alto" y un "bajo" por encima o por debajo de algún umbral. Si lo que ve entrar es una onda sinusoidal, verá estados artificialmente altos y bajos cortos y espacios artificialmente largos entre bits. Esto puede ser algo dependiente de la arquitectura del analizador.

Esto puede hacer que sea imposible diagnosticar problemas relacionados con varios modos de transmisión. Por ejemplo, SPI tiene 4 modos diferentes basados ​​en datos que son válidos en los bordes del reloj ascendente o descendente y también en la polaridad de los datos (¿es alto un 1 o un 0?). Otros protocolos de transmisión también tienen este problema (I2S y formatos de audio relacionados, por ejemplo). Si no puede identificar con precisión cuándo tienen lugar las transiciones de borde, es casi imposible determinar si el bus está actuando dentro de las especificaciones.

En general, necesita tasas de ancho de banda / muestreo mucho más altas que la tasa de datos objetivo deseada. Si desea probar un bus I2C de 40 kHz, un analizador lógico con una frecuencia de muestreo de 100 mhz es más que suficiente. Si necesita muestrear un bus SPI de 25 mhz, necesita tener un alcance / analizador con un ancho de banda mucho más alto, algo cercano a 500 mhz si necesita una precisión real, así como una frecuencia de muestreo que permita la medición en ese rango de frecuencia.

Por lo tanto, el dispositivo penjuin recomendado con una velocidad de muestreo de 24 mhz probablemente solo pueda proporcionar una medición precisa de señales digitales que sean inferiores a ~ 2 mhz con una velocidad de respuesta apreciable para esa velocidad de datos.

marca
fuente
3
tienes toda la razón, esto se me olvidó por completo. Para ayudar a ilustrar aún más este efecto, introduje una onda cuadrada de 1 kHz en mi osciloscopio y realicé un volcado de pantalla de la transformada de Fourier resultante (el eje x es la frecuencia básicamente): i.imgur.com/lJvtD.png . Los armónicos son los picos repetitivos.
jeremy
1
@penjuin perfecta ilustración. Solo para aclarar mi respuesta para el propietario, el dispositivo recomendado por penjuin probablemente sea muy capaz de lidiar con un ardunio, ya que es probable que nunca necesite lidiar con una interfaz que se ejecute a> 2 mhz con esa clase de dispositivo. Solo quería asegurarme de que no lo tomara como una regla general y que terminara mordiéndolo si más adelante pasa a dispositivos / interfaces de mayor velocidad.
Mark
1
Un analizador lógico con umbral variable configurado correctamente generalmente proporciona una resolución suficiente para analizar la lógica con solo unos pocos factores más altos que la frecuencia de la señal. El problema existe en que el controlador que recibe la señal cambiará a cero lógico para cualquier cosa por debajo de 1.2V (por ejemplo) y la lógica 1 para cualquier cosa por encima de 2.2V (por ejemplo) mientras que el analizador lógico podría cambiar a 1.7V haciendo que sincronización menos precisa. En muchos casos, una frecuencia de muestreo de aproximadamente 2-3 veces más rápido en un circuito digital es suficiente para comprender lo que está sucediendo.
Wouter Simons
@wouter Simons tiene cuidado de no confundir el ancho de banda y la frecuencia de muestreo (en realidad también limpié el uso de palabras en la respuesta). Una frecuencia de muestreo de 2x la frecuencia de su señal es el mínimo para detectar esa señal. En las prácticas, los ámbitos y, especialmente, los analizadores suelen sobremuestrear mucho. Por ejemplo, mi alcance tek tiene un ancho de banda de 100 mhz pero muestras a 2.5 ghz.
Mark
Gran respuesta. Seguí tu publicación muy bien y probablemente aún pueda medir lo que quiero con uno de los dispositivos más baratos que existen. Estaré atento a las limitaciones a medida que explore componentes más complicados.
Owen Thomas
8

Si planea trabajar principalmente en circuitos digitales, el analizador lógico es lo que desea. Los osciloscopios se destacan al mostrar relativamente pocas (por ejemplo, 2-4) señales analógicas con gran detalle, mientras que los analizadores lógicos, ya que se refieren principalmente a alto-bajo-bajo, generalmente tienen muchas más entradas.

Ciertamente, puede usar un O-Scope como analizador lógico, pero la ventaja de este último es que es más fácil obtener 'el panorama general' al poder ver docenas de señales simultáneamente.

JustJeff
fuente
2

En cuanto a los analizadores lógicos, escribí una comparación básica de los (relativamente) económicos:

Comparación de analizadores lógicos basados ​​en PC

Una cosa a tener en cuenta sobre la velocidad de muestreo, una regla general es que generalmente necesita al menos 4 veces su velocidad de datos para obtener una lectura precisa, y hasta 10 veces es mejor. Entonces, si desea monitorear una señal de 8MHz (que puede generar fácilmente desde un AVR económico en SPI, por ejemplo), querría un analizador de frecuencia de muestreo de 32-80MHz. Esto solo se aplica cuando se captura en modo 'asíncrono'. Si está capturando en modo 'síncrono' (por ejemplo, con una señal de reloj), entonces su frecuencia de muestreo solo necesita coincidir con la frecuencia de la señal de reloj. Entonces, por ejemplo, en ese caso, el muestreo sincrónico de 8MHz sería suficiente para capturar una señal SPI de 8MHz (ya que tiene una señal de reloj dedicada).

davr
fuente
1

Tengo un MSO-19 y me gusta mucho. Desearía que tuviera más de un canal analógico, pero funciona como un osciloscopio y un analizador lógico. Por el precio, creo que es un buen equipo (y funciona bien en VMWare en OS X). El o'scope me ayudó a ver lo que realmente está sucediendo en una parte del circuito, y no muestra solo el estado alto / bajo de una línea digital, como lo hace un analizador lógico. Es un voltímetro mucho más preciso (y de respuesta más rápida) que su multímetro estándar. Sin embargo, sería realmente bueno si pudiera decodificar datos en serie, en lugar de solo I2C y SPI ...

blalor
fuente
1

Esta respuesta probablemente no sea de mucha utilidad para usted usando ardunio, pero es una respuesta a la pregunta general.

Utilizo mucho las funciones del analizador lógico de mi pickit2. Claramente, está destinado a programar PIC, pero también tiene un modo de analizador lógico de 3 canales que uso todo el tiempo para mirar señales digitales. Todavía lo uso para eso, aunque estoy usando Cortex-M3 para mis proyectos actuales. Claramente, es una herramienta extremadamente primitiva según el estándar del equipo adecuado, pero aun así lo encuentro increíblemente útil

Lo he usado para depurar circuitos I2C y señales de salida de TV también, por ejemplo, vea mi publicación aquí

John Burton
fuente
1

Esto es bastante bueno y muy barato: http://www.seeedstudio.com/depot/preorder-open-workbench-logic-sniffer-p-612.html?cPath=75

Tiene una tasa de muestreo decente, y puede apoyar un proyecto HW abierto y genial. Parece que todavía está en una especie de etapa beta, por lo que podría no ser lo mejor si solo quieres conectar algo y hacer que funcione.

AdamShiemke
fuente
Acabo de comprar esto hace un mes, ya que estaba trabajando principalmente con una netbook, tuve problemas con el tamaño de la pantalla de mi computadora para poder hacer clic en el botón "capturar", pero si tienes una computadora portátil o computadora de escritorio de tamaño normal, 'Estaré bien. No lo he usado mucho, pero me gusta lo poco que tengo, ¡y el precio también es bueno!
onaclov2000
Estoy usando este LA bastante, y dado que este es mi primer LA, probablemente esté usando menos del 50% de la potencia / funcionalidad que proporciona. Comparando varios otros LA's de bajo costo, encontré que es uno de los mejores LA's con mejor relación calidad-precio. El software no es malo. De hecho, me pareció bastante bueno para mis propósitos. Si desea ver cómo lo he usado, simplemente haga clic en mi perfil y vea las preguntas que he hecho.
icarus74