Les meilleurs outils pour déboguer des circuits numériques simples?


10

Je suis un développeur de logiciels professionnel habitué au luxe des débogueurs intégrés. Depuis un moment maintenant, j'expérimente avec la plate-forme Arduino. Cependant, je trouve que tenter d'interfacer avec des composants comme un capteur de température numérique Dallas DS1820, c'est comme tâtonner dans le noir.

En supposant un budget approximatif de 200 $ environ, quel type d'outils existe-t-il pour m'aider à visualiser ce qui se passe? J'ai regardé le Link Instruments MSO-19, mais honnêtement, je ne sais pas grand-chose sur la différence entre un oscilloscope et un analyseur logique.

Comment puis-je savoir que l'appareil que j'achète sera capable de mesurer les types de composants (simples) que j'utilise?

Réponses:


9

essentiellement, un oscilloscope vous donne une lecture graduée de la tension sur la ligne tandis qu'un analyseur logique ne vous dira que si elle est 0 ou "haute" (la valeur de "haute" pourrait potentiellement être 5V, 3,3V ou 1,8V selon votre circuit). Vous constaterez souvent que les analyseurs logiques ont beaucoup plus de canaux (lignes pouvant être lues simultanément) que les oscilloscopes en raison de la résolution inférieure requise.

En ce qui concerne un appareil spécifique, j'ai entendu beaucoup de choses sur la logique des Salées . Il échantillonne à 24 MHz; cela signifie qu'il vérifie si la tension sur une sonde particulière est élevée ou basse 24 millions de fois par seconde. Le logiciel semble également avoir une certaine connaissance des protocoles intégrés courants pour faciliter le débogage. J'imagine que 24 MHz serait suffisant pour le travail arduino car la vitesse d'horloge maximale de l'Atmegaxx8 est de 20 MHz.


Après une demi-journée de recherches supplémentaires, je peux dire que Saleae Logic devrait m'aider avec 90% des idées que j'ai, pour l'instant. Le logiciel semble soigné et intuitif pour un "outsider" matériel comme moi. Je peux voir comment un oscilloscope serait extrêmement utile, mais pour les types de projets simples, un analyseur logique USB semble être un bon compromis.
Owen Thomas

Dans The soul of a new machineTracy Kidder dit (en paraphrasant) que les hommes des cavernes ont utilisé un oscilloscope pour voir pourquoi le feu ne brûlerait pas. :-)
stevenvh

9

ce n'est qu'un ajout à la réponse de penjuin car il ne rentre pas dans un commentaire et sa réponse est généralement correcte. Je veux juste clarifier une implication dans sa réponse.

Soyez très prudent en choisissant un appareil de mesure en fonction de sa bande passante / taux d'échantillonnage. Un appareil avec un taux d'échantillonnage de 25 MHz ne peut pas échantillonner avec précision un signal d'horloge numérique de 25 MHz, même pas à proximité.

Si vous prenez un signal d'horloge numérique à 25 MHz et l'introduisez dans un o-scope avec une bande passante de 25 MHz, vous verrez quelque chose près d'une onde sinusoïdale. Un oscilloscope avec un taux d'échantillonnage de 25 MHz afficherait probablement un niveau continu car, par Nyquist, le signal de fréquence le plus élevé qu'un tel oscilloscope pourrait échantillonner serait de 12,5 MHz.

Une onde carrée contient sa fréquence fondamentale qui est sa fréquence d'horloge, pour cet exemple 25mhz. Il contient également de grandes harmoniques impaires qui donnent sa forme carrée, pour regarder un signal d'horloge numérique de 25 MHz avec précision, vous devrez non seulement regarder 25 MHz, mais 75, 125, 175, 225, etc. Jusqu'où vous devez aller est en hausse à la précision souhaitée ou jusqu'à la vitesse de balayage de l'émetteur-récepteur.

Bien que cela soit légèrement moins important pour un analyseur logique, c'est toujours très important. L'analyseur logique recherche un «haut» et un «bas» au-dessus ou en dessous d'un certain seuil. Si ce qui apparaît est une onde sinusoïdale, vous verrez des états haut et bas artificiellement courts et des espaces artificiellement longs entre les bits. Cela peut dépendre quelque peu de l'architecture de l'analyseur.

Cela peut rendre impossible le diagnostic des problèmes liés aux différents modes de transmission. Par exemple, SPI a 4 modes différents basés sur des données valides sur les fronts d'horloge montants ou descendants et également sur la polarité des données (est élevé à 1 ou 0?). D'autres protocoles de transmission ont également ce problème (I2S et formats audio associés par exemple). Si vous ne pouvez pas identifier avec précision quand les transitions de bord ont lieu, il est presque impossible de déterminer si le bus agit conformément aux spécifications.

En général, vous avez besoin de taux de bande passante / d'échantillonnage beaucoup plus élevés que votre taux de données cible prévu. Si vous souhaitez échantillonner un bus I2C de 40 kHz, un analyseur logique avec une fréquence d'échantillonnage de 100 MHz est plus que suffisant. Si vous devez échantillonner un bus SPI de 25 MHz, vous devez disposer d'un oscilloscope / analyseur avec une bande passante beaucoup plus élevée, quelque chose près de 500 MHz si vous avez besoin d'une réelle précision, ainsi que d'une fréquence d'échantillonnage qui permet de mesurer dans cette plage de fréquences.

Ainsi, le penjuin de l'appareil recommandé avec un taux d'échantillonnage de 24 MHz ne peut probablement fournir qu'une mesure précise des signaux numériques inférieurs à ~ 2 MHz avec une vitesse de balayage appréciable par rapport à ce taux de données.


3
vous avez absolument raison, cela m'a complètement glissé. Pour aider à illustrer cet effet davantage, j'ai introduit une onde carrée de 1 kHz dans mon oscilloscope et pris un vidage d'écran de la transformée de Fourier résultante (l'axe x est la fréquence essentiellement): i.imgur.com/lJvtD.png . Les harmoniques sont les pics répétitifs.
jeremy

1
@penjuin illustration parfaite. Juste pour clarifier ma réponse pour le owen, le penjuin recommandé est probablement très capable de gérer un ardunio, car vous n'aurez probablement jamais besoin de gérer une interface fonctionnant à> 2 mhz avec cette classe de périphérique. Je voulais juste m'assurer qu'il ne le prenait pas comme une règle de base et qu'il finisse par le mordre s'il passe à des périphériques / interfaces plus rapides plus tard.
Mark

1
Un analyseur logique à seuil variable correctement configuré fournit généralement une résolution suffisante pour analyser la logique à seulement quelques facteurs supérieurs à la fréquence du signal. Le problème existe en ce que le contrôleur recevant le signal passera à zéro logique pour tout ce qui est inférieur à 1,2 V (par exemple) et le logique 1 pour tout ce qui est supérieur à 2,2 V (par exemple) tandis que l'analyseur logique pourrait basculer à 1,7 V, ce qui rend le timing moins précis. Dans de nombreux cas, un taux d'échantillonnage d'environ 2 à 3 fois plus rapide dans un circuit numérique est suffisant pour comprendre ce qui se passe.
Wouter Simons

@wouter simons veille à ne pas confondre la bande passante et le taux d'échantillonnage (j'ai également nettoyé mon utilisation des mots dans la réponse). Un taux d'échantillonnage de 2x la fréquence de votre signal est le strict minimum pour détecter ce signal. Dans les pratiques, les portées et en particulier les analyseurs suréchantillonnent généralement beaucoup. Par exemple, mon oscilloscope tek a une bande passante de 100 MHz mais des échantillons à 2,5 GHz.
Mark

Très bonne réponse. J'ai bien suivi votre message et je peux probablement encore mesurer ce que je veux avec l'un des appareils les moins chers. Je garderai un œil sur les limites lorsque j'explorerai des composants plus complexes.
Owen Thomas

8

Si vous prévoyez de travailler principalement sur des circuits numériques, l'analyseur logique est ce que vous voulez. Les oscilloscopes excellent à montrer un nombre relativement faible (par exemple, 2-4) de signaux analogiques dans les moindres détails, tandis que les analyseurs logiques, car ils se préoccupent principalement de haut contre bas ont généralement beaucoup plus d'entrées.

Vous pouvez certainement utiliser un O-scope comme analyseur logique, mais l'avantage avec ce dernier est qu'il est plus facile d'avoir une vue d'ensemble en pouvant regarder des dizaines de signaux simultanément.



2

En ce qui concerne les analyseurs logiques, j'ai écrit une comparaison de base des analyseurs (relativement) peu coûteux:

Comparaison des analyseurs logiques sur PC

Une chose à noter sur la vitesse d'échantillonnage, une règle de base est que vous avez généralement besoin d'au moins 4x votre débit de données afin d'obtenir une lecture précise, et jusqu'à 10x, c'est mieux. Donc, si vous voulez surveiller un signal à 8 MHz (que vous pouvez facilement générer à partir d'un AVR bon marché en SPI par exemple), vous voudriez un analyseur de taux d'échantillonnage de 32 à 80 MHz. Cela s'applique uniquement lors de la capture en mode «asynchrone». Si vous effectuez une capture en mode «synchrone» (par exemple avec un signal d'horloge), votre taux d'échantillonnage n'a besoin que de correspondre au taux du signal d'horloge. Ainsi, par exemple dans ce cas, un échantillonnage synchrone à 8 MHz serait suffisant pour capturer un signal SPI à 8 MHz (car il a un signal d'horloge dédié).


1

Je possède un MSO-19 et je l'aime beaucoup. Je souhaite qu'il ait plus d'un canal analogique, mais il fonctionne à la fois comme un oscilloscope et un analyseur logique. Pour le prix, je pense que c'est une belle pièce d'équipement (et fonctionne bien dans VMWare sur OS X). L'o'scope m'a aidé à voir ce qui se passe réellement dans une partie du circuit et ne vous montre pas seulement l'état haut / bas d'une ligne numérique, comme le fait un analyseur logique. C'est un voltmètre beaucoup plus précis (et répondant plus rapidement) que votre multimètre standard. Ce serait vraiment bien s'il pouvait décoder des données série, au lieu de simplement I2C et SPI…


1

Cette réponse ne vous est probablement pas très utile en utilisant ardunio mais est une réponse à la question générale.

J'utilise beaucoup les fonctions d'analyseur logique de mon pickit2. De toute évidence, il est destiné à la programmation des PIC, mais il dispose également d'un mode d'analyseur logique à 3 canaux que j'utilise tout le temps pour regarder les signaux numériques. Je l'utilise toujours pour cela même si j'utilise Cortex-M3 pour mes projets en cours. De toute évidence, c'est un outil extrêmement primitif par rapport au bon équipement, mais je le trouve quand même incroyablement utile

Je l'ai utilisé pour déboguer les circuits I2C et les signaux de sortie TV aussi, par exemple, voir mon article ici


1

C'est assez cool et vraiment pas cher: http://www.seeedstudio.com/depot/preorder-open-workbench-logic-sniffer-p-612.html?cPath=75

Il a un taux d'échantillonnage décent et vous pouvez prendre en charge un projet HW ouvert et cool. Il semble qu'il soit encore dans une sorte de phase bêta, donc ce n'est peut-être pas la meilleure chose si vous voulez simplement brancher quelque chose et le faire fonctionner.


Je viens de l'acheter il y a un mois, car je travaillais principalement avec un netbook, j'ai eu des problèmes avec la taille de l'écran de mon ordinateur pour pouvoir cliquer sur le bouton "capture", mais si vous avez un ordinateur portable ou de bureau de taille normale, vous ça ira. Je ne l'ai pas beaucoup utilisé, mais j'aime le peu que j'ai, et le prix est sympa aussi!
onaclov2000

J'utilise beaucoup ce LA, et comme c'est mon premier LA, j'utilise probablement moins de 50% de la puissance / fonctionnalité qu'il fournit. En comparant divers autres LA à faible coût, j'ai trouvé que c'était l'un des meilleurs LA avec un bon rapport qualité-prix. Le logiciel n'est pas mauvais. En fait, je l'ai trouvé assez bon pour mes besoins. Si vous voulez voir comment je l'ai utilisé, cliquez simplement sur mon profil et voyez les questions que j'ai posées.
icarus74
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.