OpenLogic

| assistant | ~5min


Projektdatum: 12.07.2010

In meiner Werkstatt steht schon seit einigen Jahren ein alter HP1630D LogicAnalyzer.
Dieser hatte auch schon für einige Projekte gute Dienste geleistet. Doch leider ist dieser ziemlich gross und umständlich. Auch sind schon einige Menüs auf seinem Kathodenstrahlbildschirm eingebrannt. Deshalb kam schon ziemlich bald der Gedanke auf einen eigenen, kleinen LogicAnalyzer zu bauen.

Die meisten LA’s welche ich gefunden habe waren mit SRAM’s ausgerüstet damit die Daten so schnell wie möglich gesampelt werden konnten. Ich hatte noch eine Sortiment-Box voll mit SRAM Muster von Glyn. Doch wenn ich schon ein SRAM verwende, sollte es auch ein standard RAM sein, welches man überall bekommt. Also war das RAM erst einmal kein Thema mehr.

Die Idee wurde dann eine Weile auf Eis gelegt.
Etwas später an einem Abend hat mich der LA dann doch nochmal gepackt. Ich wollte einfach mal ein Gerät, mit welchem ich meine zuvor programmierte Software testen kann. Es war mir also egal, wie schnell der LA sein wird.

Die Datenübertragung sollte mittels RS232 bzw. UART erfolgen. Als Mikrocontroller hatte ich einen Attiny2313 vorgesehen. Nach einiger Recherche ist mir jedoch aufgefallen, dass dieses Vorhaben nicht ideal ist, da der Computer in den meisten Fällen nur begrenzt, sehr hohe Baudraten zulässt. Ich habe mich also auf eine niedrigere Übertragungsrate eingestellt und habe deshalb einfach mal die UART-Pins auf einer Stiftleiste herausgeführt.

Heraus kam dabei dieses Schema:

Nachdem ich es fertig hatte fiel mir ein, dass es da ja noch diesen tollen Chip von FTDI… Den FT232RL gibt. Er verwandelt jede USB-Schnittstelle in eine highspeed UART-Schnittstelle mit 3 MegaBaud Übertragungsgeschwindigkeit.

Also habe ich noch einen kleinen USB<->UART Adapter designt.

Dieser Adapter ermöglicht es nun die Daten unabhängig vom PC mit einer Geschwindigkeit von bis zu 3 MBaud vom LA zu übertragen.

Der Attiny2313 wird nun direkt vom FT232RL mit einem Clock versorgt. Dieser Clock hat eine Frequenz von 24Mhz. Im Datenblatt des 2313 steht zwar dass dieser nur bis 20MHz ausgelegt ist, die 24MHz verträgt er jedoch ohne Probleme. Es läuft alles absolut stabil!

Nach dem Ätzen der beiden Platinen war alles soweit um in das Gehäuse eingebaut und getestet zu werden.

Zuerst habe ich nur den aktuellen Portzustand empfangen und Dezimal ausgegeben.
Nachdem dies einwandfrei funktionierte begann ich damit, das Gerät bzw. die FTDI Treiber in meine Anwendung zu übernehmen. Dies erwies sich als einfacher als zuvor angenommen. Die grosse Überraschung kam erst als ich bemerkte, dass ich damals überhaupt nicht daran gedacht hatte die Darstellungsfunktionen für das Timingdiagramm flexibler zu programmieren. Das bedeutet, dass ich das Programm nur für eine einzige „Breite“ von 10’000 Abtastungen ausgelegt hatte. Also musste ich mich nochmals in die Programmabläufe hineindenken.

Leider hatte ich keine Kommentare dazu geschrieben! Dies wurde mir nun teilweise zum Verhängnis.

Nach einigen Stunden habe ich wieder dahinter geblickt und konnte somit den ersten Kanal einigermassen korrekt darstellen. Doch so richtig gestimmt hat es dennoch nicht. Also hab ich mir Hilfe in der DelphiPraxis geholt. Da gab es einen Benutzer namens Idefix2 welcher mir sehr bei der Programmierung der Darstellungsfunktionen geholfen hat. Genauergesagt ist die Funktion zur Darstellung der Signale von Ihm. Deshalb hier nochmals ein grosses Dankeschön an dich!

Nach dem nun alle Kanäle soweit dargestellt wurden kam der feinschliff und die Messungen. Der LogicAnalyzer überzeugte durch seine Flexibilität in der Handhabung sowie in der Kompaktheit seiner Grösse. Ein mini USB-Anschluss rundete das Ganze noch ab. Alles in allem ein super Gerät wenn man nicht gerade einen PCI Bus eines PC’s untersuchen muss. Aber für kleinere Hobby-Anwendungen reicht es allemal!

Meistens geht es ja darum, ob das Timing untereinander stimmt. Zudem kann man gewisse Prozesse wie SPI ja auch meistens verlangsamen, falls diese Signale zu schnell für diesen LA-Typ wären.

Nun kommen noch einige technische Daten:

Technische Details
Stromversorgung: Mini USB +5V
Interne Taktfrequenz: 24MHz vom FTDI
Maximale Samplerate: 233’000 Samples/s
Anzahl Kanäle: 8
Trigger: Jeder Kanal auf ansteigende oder fallende Flanke
Anzeige: 2 Status LED’s sowie eine für Power

Es sind bereits 3 weitere Versionen in Planung. Version1 enthält anstelle des FT232RL einen FT245RL welcher den Port direkt selbst einliest. Der Attiny2313 dient lediglich zum steuern des Timings.

Version2 beinhaltet einen FT245RL sowie einen 12ns SRAM Speicherbaustein.
Wiederum einen Attiny2313 für das Timing.

Version3 baut auf einem CPLD auf um die Daten mit höchst möglicher Geschwindigkeit einlesen zu können.

Wie ihr seht, dürft ihr noch auf so einiges gespannt sein.

Die Software welche für die Darstellung der Daten benötigt wird ist kostenlos im Downloadbereich verfügbar. Sie befindet sich noch in experimenteller Phase und hat daher noch einige Unklarheiten. Das Sampeln der Daten funktioniert jedoch einwandfrei.

Zur Verwendung des LA’s benötigt man noch den passenden FTDI Treiber.
Einen Link zu diesem findet sich auf der Downloadseite oder auf dieser Seite bei den Links.

Die aktuelle Software kann auch Signale abspeichern sowie Signale laden. Wenn ihr die Software mal testen möchtet, so könnt ihr dies tun indem ihr diese im Downloadbereich herunterladet und danach die Beispieldatei aus dem Downloadbereich öffnet.

Bitte bei der Software ein Update durchführen, damit ihr die neueste Version habt!
(Es werden derzeit keine Proxyserver für den Updatevorgang unterstützt!)