Hallo Um meine Ausrüstung noch etwas zu komplettieren, denke ich derzeit darüber nach, einen Logic Analyzer zu bauen. Es gibt ja das mikrocontroller.net-Projekt (Mir aber bald etwas zu wild und zudem noch etwas chaotisch.) sowie weitere vorgestellte Eigenbaulösungen. Und eigentlich habe ich Lust, selbst etwas zu entwickeln. Das Gerät werde ich einerseits zum Debuggen von Mikrocontroller- und CPLD-Schaltungen (Ähm, am liebsten später auch für FPGAs, aber wohl unrealisitisch.), andererseits aber auch fürs "reverse engineering" von irgendwelchen Geräten und Protokollen verwenden. (Computermaus, Diskettenlaufwerk, Wiimote, Handy-IR-Port - nur so als Beispiele) Ich weiss nun nicht recht, was ich brauche und wo die Schwierigkeiten liegen. Vielleicht könnt ihr mir ja etwas weiterhelfen :-) 1. Samplerate. Mehr als 50 MHz dürften mit dem vorgesehenen XC9572 kaum drin liegen. Reicht das? Wie weit reicht das? Und ist das überhaupt realistisch? 2. Analogteil. Soweit ich es sehe, werden die zu analysierenden Signale 5 V oder 3.3 V haben. Dürfte ja eigentlich beides vom XC9572 verstanden werden. Aber welche besonderen Probleme könnten die bis zu 50 MHz schnellen Signale mit sich bringen? 3. Triggerung. Was braucht man hier in der Praxis? 4. Speichertiefe...? Jaja, ich weiss, etwas konfus :-) Gruss Michael
Ich würde mir nicht allzuviel Gedanken über Samplerate usw. machen. Wenn mit dem CPLD eben nur 40MHz drin sind, dann sind 60MHz eben nur das Wunschziel (die Werte sind jetzt einfach mal willkührlich gewählt). Schau was du an Speicher bekommst und bau das Ding. Wenn du damit arbeitest merkst du was fehlt, dann kannst du immer noch das Ding erweitern oder eine 2. Version bauen, bei der alle Schwachstellen der 1. Version behoben sind. Ich würde mal mindestens 16bit, besser 32bit ansetzen. Speichertiefe einige 10k oder besser >100k bis max. 1M. Bis einige 10MS ist relativ leicht. Über 50MHz wird es schwer, da man dann auf Laufzeiten auf den Leitungen achten muss usw.
@Benedikt: 16 bit - damit meinst du die Anzahl Kanäle? Ich dachte eigentlich an 8 Bit und 64 kByte Speicher. Wofür braucht man denn so viele Kanäle, und vorallem eine solche Speichertiefe? (Ich habe noch nie mit einem Logic Analyzer gearbeitet, und leider auch keine Gelegenheit dazu - das erleichtert die Planung natürlich nicht unbedingt...)
Sagen wir mal du steuerst irgendwas an (HD44780 LCD oder sowas in der Art) dann brauchst du 8bit Datenbus + Steuersignale. Also schonmal >8 Leitungen, daher 16 als Minimum. Falls noch ein 8 oder 16bit Adressbus dazukommt sind es dann die 32. Die hohe Speichertiefe kommt dadurch zustande, wenn man z.B. die komplette Initialisierung vom LCD aufzeichnen möchte. Haben die Impule z.B. 1µs Breite muss man mit mindestens >1MHz aufzeichnen. Bei 64k wären das gerade mal etwa 64ms. Da man bei der LCD Initialisierung öfters mal Pausen im Milisekundenbereich hat (und um Sicherzugehen manchmal auch 10ms verwendet), wird das ganze schon etwas knapp. Daher haben eigentlich fast alle gekauften Logikanalyser einer zweiten Aufzeichnungsmodus, der nicht dumm mit x MHz aufzeichnen, sondern nur dann etwas abspeichert wenn sich irgendwas auf den Leitungen ändern (Änderung + Zeitpunkt müssen gespeichert werden). Das spart vor allem bei nicht allzuviel Aktivität auf den Leitungen Speicherplatz. Allerdings ist das nicht ganz so einfach zu bauen wie das dumme Aufzeichnen. Daher lieber etwas mehr Speicher nehmen, dafür wird aber die Entwicklung des Logikanalysers einfacher. Das sind zumindest meine Erfahrungen.
Bei der Planung solltest du auch daran denken, wie du die Daten zur Anzeige bringst. Sinnvoll wäre hier natürlich der PC, d. h. du mußt eine geeignete Schnittstelle auswählen. Und schleßlich brauchst du ne gescheite Software auf PC-Seite. Excel und Konsorten sind zwar ne Lösung, die aber auf Dauer nerven. Aus der Not heraus habe ich mir an einem Samstag (oder war's ein Sonntag?) mal einen LA mit einem dsPIC gebaut. Einfach einen Port genommen, den gepollt und die Werte direkt in das SRAM geschrieben. Dank der DSP-Funktionalität (Hardwareunterstützung von Schleifen) konnte ich damit 10MHz Abtastrate erreichen und dieses Teil hat mir schon sehr viele gute Dienste geleistet. Um ne Computermaus zu belauschen, reicht das allemal. Zwar ist der Speicher etwas begrenzt, aber besser als nichts.
@Benedikt: Klingt logisch wegen der Speichertiefe. Du nennst die intelligente Aufzeichnung, dazu kommt mir noch das Thema Triggerung in den Sinn: Was für Trigger sollte man einbauen? Eine reine Erkennung, ob auf einer Leitung was läuft, finde ich etwas mager. Ich dachte an Flanken/Zustandserkennung auf etwa 4 Leitungen sowie ein komplexeres Muster (ca 8 Bit lang) auf einer Leitung. Oder ist das völlig übertrieben? @Schorsch: Die PC-Software ist auch noch so eine Sache. Da es hier offenbar schon gute Lösungen für Eigenbau-LAs gibt, evtl. werde ich eine solche verwenden. Den LA selbst möchte ich aber selbst entwickeln. Eine andere Lösung für die Software wäre ein Scripting-System, wo man mittels einer einfachen Programmiersprache beliebige Auswertungen coden kann. Aufwandsmässig ist sowas aber dann wohl ausserhalb dem vorgesehenen Bau eines kleinen Tools... :-)
@Schorsch: Dein projekt "LA mit einem dsPIC" klingt interessant, könntest Du das hier veröffentlichen? Danke.
LOL kann ich tun, aber gib mir etwas Zeit. Außer dem Quelltext ist da nämlich nix vorhanden :)
Die Triggerung kann man vom Aufwand her locker derart kompliziert machen, dass man damit einen eigenen CPLD füllen kann. Ich habe es mir einfach gemacht und einfach ein 1Bit Latch genommen: Daten und Takt sind an jedes der 16 Eingangssignale schalt und invertierbar. Als Triggerbedingung erhält man dann: Start wenn Low auf Leitung 5 und eine steigende Flanke auf Leitung 2. Das ist zwar ziemlich wenig als Triggermöglichkeit, aber mir hat es meistens gereicht. Ich triggere dann z.B. auf die Resetleitung oder auf fallende Flanke von WR\ wenn CS\ Low ist oder so. Zur Darstellung der Daten nutze ich ein einfaches, selbstgeschriebenes C++ Programm, das speziell an meinen Logikanalyser angepasst ist (für eine Echtzeitdarstellung) oder GTKWave zum Darstellen der aufgezeichneten Daten. @Schorsch: An dem dsPIC Code wäre ich auch interessiert.
@Benedikt: Dann werde ich meine Triggerung auch nicht allzu kompliziert machen. Evtl noch eine Mustererkennung über einige Bits auf einer Leitung. Unschlüssig bin ich noch beim Analogen teil, d.h. die Eingänge. Direkt an die Pins (für 3.3 und 5 V) oder doch noch Levelshifter ran?
Ich habe bei mir normale HCT245 verbaut. Die haben TTL Schaltschwelle, erkennen also in 3-5V Systemen die Pegel korrekt. Allerdings ist das keine saubere Lösung. Legt man einmal mehr als 5V an, sind die Eingangspuffer hinüber (ich zähle garnichtmehr wie oft ich die schon getauscht habe: einen Pin daneben erwischt, Plopp, Mist, das war die 12V Leitung...)
Und wenn man zum Schutz noch einen Serienwiderstan 1 oder 10k Ohm einbaut? Da die Eingänge sowieso hochomig sind, sollte der Spannungsteilereffekt sich ja sehr in Grenzen halten. Was für Anschlüsse sieht man eigentlich am besten vor, d.h., wie greift man die Signale ab?
mr.chip wrote: > Und wenn man zum Schutz noch einen Serienwiderstan 1 oder 10k Ohm > einbaut? Da die Eingänge sowieso hochomig sind, sollte der > Spannungsteilereffekt sich ja sehr in Grenzen halten. Für Gleichspannung stimmt das, aber rechne mal bei 10pF Eingangskapzität und 10k die Grenzfrequenz aus... > Was für Anschlüsse sieht man eigentlich am besten vor, d.h., wie greift > man die Signale ab? Ich habe bei mir D-SUB Buchsen eingebaut. Auf die obere Reihe die 16 Eingänge, auf die untere GND. So hat man immer abwechselnd Signal, GND, Signal, GND... Das Hilft übersprechen zu vermeiden. Da schließe ich dann entweder direkt passende Kabel an die z.B. Anschlüsse für ISA Bus oder ähnliches haben, oder Testklemmen (gibts z.B. bei Reichelt für <1€ bis >5€ pro Klemme, je nach Qualität.)
Hallo, ich hab mein Intronix LA aufgeschraubt. Die Eingangsstufe besteht aus einem Frequenzkompensiertenspgteiler. Der FPGA ist ein Cyclone II und zur Übertragung der Daten ist ein FT245 drauf. Konfigurationsspeicher konnte ich auf der PCb nicht entdecken.
> Für Gleichspannung stimmt das, aber rechne mal bei 10pF Eingangskapzität > und 10k die Grenzfrequenz aus... Autsch, ja. Was man auch so allerlei beachten muss... :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.