MiniLA

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
miniLA Bestückseite
miniLA Lötseite

Einleitung

Diese Seite soll eine Art Informationssammlung zum Open-Source-Logic-Analyzer "miniLA" werden um potentielle "Nachbauer" zu unterstützen. Die zugehörigen Threads im Forum sind inzwischen sehr umfangreich und dadurch leider auch etwas unübersichtlich geworden.

Die Features das Gerätes sind auf der Projekt-Homepage zu finden.

Es gab hier im Forum bereits drei Sammelbestellungen zur Platine und den nötigen Bauteilen. Die erste fand Anfang 2008, die zweite im Herbst 2008 und die dritte im Frühling 2009 statt. Details zu den Bestellungen und teils auch zur Hardware finden sich in diesem Thread.

Hardware

Allgemein

Bei den Sammelbestellungen wurde jeweils die Version von Bob Grieb bestellt, bei der der USB-Anschluss direkt integriert ist. Wird dieser nicht benötigt, so werden die entsprechenden Teile einfach nicht bestückt.

Es wurden einige kleine Veränderungen und Korrekturen am Layout durchgeführt, die Funktion blieb jedoch gleich. Die Daten zu dieser überarbeiteten Version sind hier zu finden. Details zu den Änderungen können in der enthaltenen "README2_v1.txt" nachgelesen werden.

Der Schaltplan wurde mit TinyCAD und das Layout mit FreePCB erstellt.

Bauteile

Mainboard

Leider ist es nicht ganz einfach an einige der Bauteile zu kommen. Besonders passende SRAMs sind relativ schwer zu bekommen.

Bei den ersten beiden Sammelbestellungen wurden die Bauteile aus folgenden Quellen bezogen:

Die beiden Reichelt-Warenkörbe sind unter Umständen nicht mehr ganz aktuell und sollten deswegen unbedingt mit der Stückliste abgeglichen werden. Bitte ggf. hier auf Fehler bei den Warenkörben hinweisen oder Michael K. diesbezüglich benachrichtigen!

Bei der Bauteil-Auswahl gibt es nicht sehr viel zu beachten, lediglich CPLD, SRAM und der Multiplexer sind etwas kritischer. Beim CPLD muss es sich um einen Typ mit Speed-Grade 6 handeln (XC95288XL-6..., TQFP144), zur Auswahl von SRAM und HC4053 gibt es ein paar Anmerkungen in der "mlaUSBbom_v1.txt" und in der "README2_v1.txt".

Bzgl. SRAM wurde seinerzeit nach passenden Alternativen zum ursprünglich verwendeten Alliance AS7C33128PFS32A gesucht und die Ergebnisse in eine Excel-Liste eingetragen. Auf Vollständigkeit, Richtigkeit und Aktualität kann es jedoch leider keine Garantie geben.

Folgende SRAMs wurden bereits erfolgreich eingesetzt:

  • K7B803625B-PI65
  • CY7C1361B-133AC
  • IS64LF12832A-7 (lt. miniLA-Entwickler)
Brücke bei Verwendung von K7B803625B-PI65 (siehe Text)

Die wichtigen Kriterien beim SRAM sind:

  • Pin-Kompatibilität
  • Größe >= 128k
  • Datenbreite >= 32bits
  • Flow-Through-Modus
  • cycle time < 10ns
  • data setup time <= 2ns
  • data hold time <= 2ns

Falls ein SRAM verwendet wird, das größer ist als 128k, müssen evtl. ein paar Brücken eingelötet werden. Dies hängt von der Pinbelegung des SRAMs ab - meistens müssen nur Adressleitungen beschaltet werden, die sonst in der Luft hängen würden. Beim K7B803625B-PI65 aus den Sammelbestellungen wäre das bei Pin 43 (= A17) der Fall. Im nebenstehenden Bild ist Pin 43 mit GND verbunden. Es wäre aber ebenfalls möglich den Pin mit einem anderen Adresspin zu verbinden (z. B. Pin 44) oder mit Vcc, je nachdem was am einfachsten ist.

Tastköpfe

Tastkopf Bestückseite (inkl. Flachbandkabel zum miniLA)

Als Schutz für den CPLD wurde eine Art Tastkopf entwickelt, der zwischen das zu messende Signal und den miniLA geschaltet wird. Dieser Tastkopf ist sehr einfach gehalten und besteht aus nur wenigen Bauteilen. Ein Tastkopf dient für 8 Kanäle, d.h. für alle 32 Kanäle werden 4 Stück benötigt. Die Schaltung wurde mittels TinyCAD und FreePCB entwickelt und die Daten dazu finden sich hier.

Hinweise:

  • R9 bis R16 dienen zur Terminierung und können überbrückt werden, da sich auf der Hauptplatine ebenfalls Serienwiderstände finden.
  • R17 bis R24 dienen als Platzhalter falls eine Hysterese gewünscht sein sollte. Auf jeden Fall sollen hier keine 47Ω-Widerstände bestückt werden, sondern welche im 10k- bis 100k-Bereich.

Trigger

Die obigen Platinen passen leider nur für die 32 Kanäle (K2-K5), nicht jedoch für die Trigger-Ein- und Clock-Ausgänge. Deswegen wurde im Zuge der dritten Sammelbestellung zusätzlich zu den Tastköpfen noch eine Triggerplatine entwickelt. Um Verwechslungen mit den Tastköpfen zu vermeiden ist auf dieser Platine eine 10polige Kontaktierung vorgesehen, die mit K1 des miniLA verbunden wird. Pin 7 (X8) davon ist im Moment noch nicht belegt und kann für eventuelle spätere Erweiterungen verwendet werden. Die beiden Jumper auf der Unterseite sind vorgesehen um die Richtung (Ein-/Ausgang) entsprechend wählen zu können. Schaltplan, Stückliste und Bestückpläne sind hier zu finden.

Hinweise:

  • Der 74AC244N dient nur als Platzhalter. Hier soll stattdessen (wie bei den Tastköpfen auch) ein 74LVC244 bestückt werden.
  • R6 bis R10 dienen zur Terminierung und können überbrückt werden, da sich auf der Hauptplatine ebenfalls Serienwiderstände finden.
  • R11 bis R15 dienen als Platzhalter falls eine Hysterese gewünscht sein sollte. Auf jeden Fall sollen hier keine 47Ω-Widerstände bestückt werden, sondern welche im 10k- bis 100k-Bereich.

Sonstiges

Zum Betreiben des miniLA wird zusätzlich zu den, in der Stückliste aufgeführten Bauteilen

  • ein USB-Kabel (A- auf B-Stecker, wie bei Druckern) oder ein LPT-Kabel
  • ein Netzteil (~5V / ~700mA)

benötigt.

Firmware / Software

Als Firmware und Software kommen die Original-Versionen der Projekt-Seite zum Einsatz. Desweiteren gibt es bzgl. der PC-Software einen Beitrag in der Codesammlung.

MiniLA Windows EXE Vers 0.6.4 für 256k- und 512k-Sample Speicher gibt es hier.

CPLD-Programmierung

Für die Programmierung des CPLDs gibt es zwei Möglichkeiten:

via LPT

Dazu wird ein Xilinx-JTAG-Programmer benötigt, welcher sehr einfach nachgebaut werden kann. Die Original-Version von Xilinx, auf die von der miniLA-Seite aus verwiesen wird, ist allerdings nur eingeschränkt zu empfehlen, da einige Nutzer Probleme damit haben/hatten. Martiniman's Version sollte besser und zuverlässiger sein. Schaltplan und Layout seiner Version für Eagle können hier heruntergeladen werden. Eine Programmieranleitung findet sich auf der miniLA-Projektseite.

via USB

Dank Uwe Bonnes und seinem Programm "xc3sprog" kann der CPLD mittels FT2232 programmiert werden. Da bei der miniLA-Version von Bob Grieb bereits ein FT2232 auf dem Board bestückt ist, wird keine weitere Hardware (außer ein paar Litzen) benötigt.

Vorgehensweise:

  1. xc3sprog herunterladen
  2. Inhalt des Ordners "build-win32" entpacken
  3. Zu programmierende Firmware (*.jed) in diesen Ordner kopieren
  4. libusb installieren (sofern nicht schon geschehen)
  5. FT2232 und CPLD folgendermaßen verbinden
    • K10.1 / ADBUS0 / USBD0 <-> E3 / E7 / TCK
    • K10.2 / ADBUS1 / USBD1 <-> E2 / E6 / TDI
    • K10.3 / ADBUS2 / USBD2 <-> E1 / E5 / TDO
    • K10.4 / ADBUS3 / USBD3 <-> E4 / E8 / TMS
  6. FT2232 und den Rest der Schaltung einschalten (mit USB bzw. Betriebsspannung verbinden)
  7. Eingabeaufforderung öffnen und in das Verzeichnis "build-win32" wechseln
  8. "xc3sprog -c ftdi -v firmware.jed" (ohne "") eingeben und bestätigen, wobei firmware.jed für die Datei steht, die unter Punkt 3 kopiert wurde

Die obige Anweisung gilt für Windows unter Benutzung des FT2232 auf dem miniLA-Mainboard. Es gibt aber ebenfalls eine Linux-Version von xc3sprog und es kann auch eine andere Platine mit FT2232 genutzt werden.

Zwecks einfacherer Handhabung gibt es ein kleines Batch-Script zum Programmieren. Zusätzlich zu den enthaltenen Dateien, muss der Inhalt des Ordners "build-win32" und die *.jed-Files in das Verzeichnis kopiert und entsprechend benannt werden ("miniLA_state2.2.jed", "miniLA_time1.7_20mhz.jed", "miniLA_time1.7_40mhz.jed", "miniLA_time1.7_80mhz.jed" und "miniLA_time1.7_100mhz.jed"). Anschließend "programme_miniLA.bat" aufrufen und den Anweisungen folgen.

Siehe auch

Nachfolgend eine Zusammenfassung relevanter bzw. interessanter Links und Daten:

Artikel und Diskussionen auf www.mikrocontroller.net: