Forum: Mikrocontroller und Digitale Elektronik Logic Analyzer mit CYUSB3KIT (Cypress EZ-USB FX3)


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Michael D. (nospam2000)


Lesenswert?

Hallo zusammen,

es gibt hier im Forum schon ein paar Ansätze einen Logic Analyzer selbst 
zu bauen. Leider sind die meisten schon recht alt und nicht auf dem 
neuesten Stand der Technik.

Ich würde gerne das Cypress CYUSB3KIT-003 (Explorer kit) mit USB 3 als 
Basis verwenden. Das Board kostet bei Mouser knapp 50,- Euro (inkl. 
USt.).

Dafür gibt es bereits mindestens 2 Adaptierungen an Sigrok (PulseView), 
d.h. sowohl die Firmware auch auch den Sigrok Treiber:
1. https://github.com/cnlohr/fx3fun
2. https://github.com/zeldin/fx3lafw

Beide sind ggf. noch nicht fertig aber zumindest eine Basis.

Die interne DMA RAM Bandbreite des Boards liegt bei 800 Megabyte pro 
Sekunde. Der tatsächliche erreichbare USB Durchsatz scheint zwischen 200 
und 400 Megabyte pro Sekunde zu liegen.
Solange die PC-Seite mitmacht (keine Unterbrechung, genügend RAM) sollte 
man damit "beliebig" lange aufzeichnen können.

Ich würde ca. 32 bis 48 Kanäle und eine Samplerate von 50 MHz benötigen 
und über mindestens 30 Sekunden aufzeichnen.

Was noch fehlt ist eine Eingangsstufe für die Spannungswandlung (z.B. 
5V=>3.3V) welche auch die Empfindlichkeit gegen elektrostatische 
Aufladungen und Überspannungen reduzieren soll als Platine zum 
Aufstecken.

Wie sollte solch eine Eingangsstufe am besten aussehen?
Spricht was dagegegen für die 5V nach 3,3V Anpassung mit einem 
Spannungsteiler und einer Schutz-Diode zu beginnen oder benötigt man da 
gleich aktive Elektronik?
Auf dem Board sind 22 Ohm Widerstände in Reihe zu den GPIOs eingebaut.

Notfalls könnte man für unterschiedliche Eingangsspannungen einfach 
unterschiedliche Adapterplatinen machen.

Was für Kabel und welchen Connector sollte man für den Anschluss des DUT 
verwenden?

  Michael

: Bearbeitet durch User
von F. M. (foxmulder)


Lesenswert?

Michael D. schrieb:
> Wie sollte solch eine Eingangsstufe am besten aussehen?
> Spricht was dagegegen für die 5V nach 3,3V Anpassung mit einem
> Spannungsteiler und einer Schutz-Diode zu beginnen oder benötigt man da
> gleich aktive Elektronik?
> Auf dem Board sind 22 Ohm Widerstände in Reihe zu den GPIOs eingebaut.

Was spricht dagegen sich die Service Manuals älterer Logikanalysatoren 
anzusehen?

https://www.eevblog.com/forum/testgear/mso6000a-logic-analyzer-pinout/

https://www.eevblog.com/forum/microcontrollers/cross-talk-on-logic-analyzer-leads/

http://literature.cdn.keysight.com/litweb/pdf/16760-97016.pdf

mfg

von Die Elektor ist da! (Gast)


Lesenswert?

> ca. 32 bis 48 Kanäle und eine Samplerate von 50 MHz

Das kann ja schon diverse Jahre jede Implementation die ein
FPGA Evalboard verwendet. Und 50 MHz ist viel zu wenig.
Das merkt man schon, wenn man mal einigermassen schnelle
Signale mit so einem Chinadingens beguckt.
Einigermassen nuetzlich sind >= 200 MHz.

Die Profis nahmen frueher, keine Ahnung was heute so los ist,
einfach einen FPGA als Pegelwandler. Z.B. Altera ACEX.

Mir reichen prinzipiell die 3.3 V die meine (FPGA-Board)-LAs
nativ koennen. An 5 V verschwende ich keine Gedanken mehr.
Und weniger z.B. 1.8 V geht mit den FPGA-Boards ja zur Not auch.

> Solange die PC-Seite mitmacht (keine Unterbrechung, genügend RAM) sollte
> man damit "beliebig" lange aufzeichnen können.

Ja und wer soll die vielen dabei anfallenden Gigabyte dann ansehen?
Das die 8 Kanal-China-Billig-LAs triggermaessig fast nichts koennen
und man dann SELBER den Punkt finden muss?
Nee, danke.

Mit einem vernuneftigen mehrstufigem Trigger braucht man selten
besonders viel Speichertiefe. Guenstig ist auch ein Triggerausgang
zum Kaskadieren oder fuers Oszi.

von Michael D. (nospam2000)


Lesenswert?

A. K. schrieb:
> Was spricht dagegen sich die Service Manuals älterer Logikanalysatoren
> anzusehen?

Das ist sicher eine gute Idee und qualitätsmäßig bestimmt das Optimum.

Möglicherweise sind diese Lösungen zu preisintensiv für den von mir 
angepeilten Zweck. Ehrlich gesagt auch erstmal schwer für mich zu 
durchdringen um sie an meine Zwecke anzupassen.

Die Leitungslängen will ich unter 25cm halten. Das sollte gehen, da der 
LA ein sehr kleines Kunststoffgehäuse bekommt und quasi direkt am oder 
sogar im DUT plaziert werden kann.

Als ESD Schutz hätte ich diese Dioden verwendet:
Microdiode Electronics ESD0524P 
(https://lcsc.com/product-detail/Diodes-ESD_MDD-Microdiode-Electronics-ESD0524P_C840786.html)

  Michael

von bork (Gast)


Lesenswert?

Das PIO peripheral vom Raspberry Pi Pico müsste sich eigentlich sehr gut 
für einen Logicanalyzer nutzen lassen. Das Bottleneck wird wohl USB 
sein.

von Gustl B. (-gb-)


Lesenswert?

bork schrieb:
> Das PIO peripheral vom Raspberry Pi Pico müsste sich eigentlich sehr gut
> für einen Logicanalyzer nutzen lassen. Das Bottleneck wird wohl USB
> sein.

Ja, sowohl USB als auch der uC.

Wie ist das beim FX3, kann man die 512 kByte intern als Speicher für die 
Daten verwenden oder sind die Arbeistspeicher für den ARM9 Kern und 
exklusiv für die Software die auf dem läuft?

von Michael D. (nospam2000)


Lesenswert?

Gustl B. schrieb:
> Wie ist das beim FX3, kann man die 512 kByte intern als Speicher für die
> Daten verwenden

Ja, der ist universell. Dient als ARM Arbeitsspeicher, DMA Zugriff für 
die I/O Daten und USB Zwischenpuffer.

 Michael

von Gustl B. (-gb-)


Lesenswert?

Da sind 512 kByte tatsächlich ziemlich viel. Der FT60x hat nur 16 kByte. 
Dem habe ich dann im FPGA noch 64 kByte BRAM spendiert um hohe USB3 
Datenraten zu bekommen.

von Michael D. (nospam2000)


Lesenswert?

Noch ein weiteres github Projekt, welches sich dem Thema widmet:
https://github.com/schnommus/libsigrok-cypress-fx3-test

Und hier ein anderer LA, der auf dem FX3 aufbaut:
https://sigrok.org/wiki/DreamSourceLab_DSLogic_U3Pro16

: Bearbeitet durch User
von bingo (Gast)


Lesenswert?

als Vorstufe bzw.Pegelwandler: 74LVC244

von Gustl B. (gustl_b)


Lesenswert?

Interessant fände ich da Komparatoren und eine einstellbare 
Referenzspannung.

von Michael D. (nospam2000)


Lesenswert?

Gustl B. schrieb:
> Interessant fände ich da Komparatoren und eine einstellbare
> Referenzspannung.

Gibt es da welche die schnell genug sind?
Was kosten die für 16 bzw. 32 Kanäle?

  Michael

von Gustl B. (-gb-)


Lesenswert?

Schnell genug ja. Aber ich kenne da keinen Baustein mit 16 Stück 
drinnen. Es gibt welche mit 4 Komparatoren.

Rigol verwendet Komparatoren im Logic Pod für deren Oszilloskope. Hier 
ist der Thread dazu inklusive Nachbau:
https://www.eevblog.com/forum/testgear/rpl1116-active-logic-probe-pod-for-1000z-series-teardown/

Das Oszi liefert die Referenzspannung und die Versorgungsspannungen, die 
Komparatoren liefern ein LVPECL Signal zurück. Ja, das kann man nicht 
direkt an den FX3 anschließen, an FPGAs aber schon.

von Michael D. (nospam2000)


Lesenswert?

Gustl B. schrieb:
> Schnell genug ja. Aber ich kenne da keinen Baustein mit 16 Stück
> drinnen. Es gibt welche mit 4 Komparatoren.

Bei Digikey habe ich mal gesucht nach Komperatoren, die einen FX3 
kompatiblen Ausgang haben und 4 Kanäle. Da kommt z.B. der MAX964EEE+-ND 
in Frage. Der hat eine Verzögerungszeit von etwa 4.5ns und eine Rise 
Time von 2.3ns.

Der von dir genannte LMH7322 hat nur eine Verzögerungszeit von 0,783ns, 
aber wie du schreibst benötigt der zusätzlich einen FPGA. Das ist dann 
schon High End.

Die Verzögerungszeit selbst wäre ja egal, aber je höher diese ist, desto 
höher wird natürlich auch der Jitter für den Erfassungszeitpunkt eines 
Signalwechsels.

Preislich liegen alle Bausteine bei mindestens 1,50 Euro pro Kanal, der 
LMH7322 sogar bei 2,50 Euro (+FPGA).

Daher macht ein modulares System mit Aufsteckplatinen Sinn, wo man sich 
entscheiden kann, ob man nur 3,3V benötigt oder auch andere Spannungen 
welche das ganze wesentlich aufwändiger machen.

  Michael

von Fpgakuechle K. (Gast)


Lesenswert?

Michael D. schrieb:
> Gustl B. schrieb:
>> Interessant fände ich da Komparatoren und eine einstellbare
>> Referenzspannung.
>
> Gibt es da welche die schnell genug sind?

Diskret mit GHz Transistoren aufbauen wäre auch ne Option:
Beitrag "komparator diskret"

von Gustl B. (-gb-)


Lesenswert?

Michael D. schrieb:
> aher macht ein modulares System mit Aufsteckplatinen Sinn,

Diese Überlegung hatte ich bei einem meiner FPGA Boards und habe dem 
einen USB-C spendiert der direkt am FPGA hängt. Nicht für USB, aber eben 
um 4 Diff-Paare anschließen zu können und dann sind da noch weitere Pins 
drinnen die man für Versorgungsspannung und Regerenzspannung verwenden 
könnte oder man nutzt die für SPI/I2C und setzt den DAC für die 
Referenzspannung direkt auf die kleine Tastkopfplatine.

Ich habe das aber bisher nicht für einen LA verwendet, 4 schnelle IOs 
fand ich etwas wenig und habe die bisher nur als Ausgang für HDMI über 
USB-C verwendet.

Aber das wäre mal was, eine FPGA Platine mit schnellem USB zum PC, 
optional etwas RAM und dann noch ein paar USB-C Buchsen um etwas mit 
schnellen IOs anschließen zu können.
Warum USB-C und nicht HSMC oder FMC? Weil die Buchsen günstig sind, man 
das einfach geroutet bekommt und weil man normale günstige Kabel 
verwenden kann.

von Michael D. (nospam2000)


Lesenswert?

Nachdem ich mich mal nach einem Rigol DS1074Z Plus (Oszi+LA, 520,- Euro) 
umgesehen habe und die originalen LA Probes dort 350,- Euro extra kosten 
bin ich unter der Beschreibung "Rigol MSO5000 Digital Logic Probe 
CMOS/TTL" bei ebay auf ein board von Sergey Petrukhin gestoßen.

Er selbst schreibt, dass er das Board bis 16 MHz getestet hat. Das wäre 
deutlich zu langsam.

In einer anderen ebay Akution steht, dass der Line Driver 
SN65LVDS1DBVRG4 verwendet wurde (LVDS Transmitter) und es sind auch 
Bilder von 100, 200 und 475 MHz Oszi Aufnahmen drin. Wenn ich das 
richtig deute, dann sind die 100 MHz gerade noch ok.

Auktion aus USA mit guter Beschreibung und guten Bildern
https://www.ebay.de/itm/Rigol-MSO5000-Custom-16-Channel-Logic-Probe-Bare-PCB-w-Tray/224366736056?hash=item343d4cb2b8:g:T~gAAOSwpSlgOVtO

Auktion aus Deutschland:
https://www.ebay.de/itm/Rigol-MSO5000-Digital-Logic-Probe-Logic-Analyzer-PCB/324521286127?hash=item4b8ef9d9ef:g:dxsAAOSw5KBgTjD0

  Michael

: Bearbeitet durch User
von tri tra trollo (Gast)


Lesenswert?

> dann sind die 100 MHz gerade noch ok

Spielkram.

von Gustl B. (-gb-)


Lesenswert?

Ich hatte oben doch den Tread aus dem EEV-Forum verlinkt. Rigol verbaut 
8x den https://www.ti.com/lit/ds/symlink/lmh7322.pdf für insgesamt 16 
Kanäle. Abtastung machen dann vermutlich SerDes bei 1 GSample/s.

Und das könnte man auch im FPGA machen, selbst recht günstige Spartan7 
haben SerDes die >1 GHz können, auch genug davon.

Meine Idee wäre also Folgende:

Ein "Mainbaord" mit FPGA, USB3 Baustein, optional RAM und eben ein paar 
Anschlüssen für LVDS Signale. Ich würde da USB-C verwendet weil die 
Kabel günstig sind und eine Buchse/Stecker 4 LVDS Leitungen kann. 
Ausserdem sind da dann noch weitere Leitungen drinnen für z. B. SPI.

Mehrere Komparatorplatinen. Möglichst kleine Platinen, mit je zwei 
lmh7322 (4 Komparatoren) und einer USB-C Buchse. Versorgung von der 
Hauptplatine auch über USB-C. Auch dabei ein SPI DAC für die 
Triggerschwelle, SPI kommt vom Mainboard über USB-C.

Weitere Vorteile:
Man kann die Platinen getrennt entwickeln, und man könnte auch andere 
Sachen mit den USB-C machen. Man könnte eine Tochterplatine mit ADC 
bauen (den HMCAD1511 mit 1 GSample/s könnte man über 3 USB-C Buchsen 
anbinden, gibt auch ADCs die weniger Leitungen haben) und dann also 
entweder Komparatorplatine oder ADC Platine über USB-C anschließen - 
oder auch beides gemixt, ADC und Logikkanäle.
Als Bastelboard wäre das auch was, denn man könnte sehr einfach passive 
Adapterplatinen von USB-C <-> PMOD oder was man eben haben will. Das 
sind auch einfach 12 FPGA IOs.

Also wenn da Interesse besteht für ein Projekt, dann bin ich da gerne 
dabei.

von Michael D. (nospam2000)


Lesenswert?

Gustl B. schrieb:
> Ich hatte oben doch den Tread aus dem EEV-Forum verlinkt. Rigol verbaut
> 8x den https://www.ti.com/lit/ds/symlink/lmh7322.pdf für insgesamt 16
> Kanäle.

Ich habe eigentlich nur nach einem günstigen DIY LogicAnalyzer gesucht 
und wollte mich gleichzeitig mit USB3 beschäftigen.

Die 4 Euro LogicAnalyzer für 24 MHz 8 Kanal (bzw. 12 MHz 16 Kanal) auf 
Basis des EZ-USB FX2LP CY7C68013A finde ich beeindruckend.

Allerdings sind mir diese etwas zu langsam, mit USB2 ist ohne 
Pufferung nicht mehr drin. 100 MHz Samplingrate bei 16 Kanälen wäre mein 
bescheidenes erstes Ziel.

Für ein Hobby-Projekt finde ich den lmh7322 mit 10,- Euro zu teuer.
Einem Rigol LA mit 1 GHz Samplingrate will ich nicht Konkurrenz machen, 
das würde ich sowieso nicht hinbekommen.

Da braucht man auch ganz andere Tools als KiCad und vor allem spezielles 
Fachwissen, was das Platinenlayout und Schaltungsdesign angeht um die 
Impedanzen der Leiterbahnen zu berücksichtigen und ggf. ein Längen 
matching zu machen.

> Ein "Mainbaord" mit FPGA, USB3 Baustein, optional RAM und eben ein paar
> Anschlüssen für LVDS Signale. Ich würde da USB-C verwendet weil die
> Kabel günstig sind und eine Buchse/Stecker 4 LVDS Leitungen kann.

Mir wäre wichtig erstmal den FX3 zu verstehen, was der überhaupt kann 
und wie der funktioniert. Als Basis Board würde ich erstmal das FX3 Eval 
Board nehmen. Alleine ein BoardLayout für USB3 zu machen ist nicht ohne.

Das zweite wäre dann, wie man die letzten 20cm von Board zum DUT 
überbrückt, d.h. wie weit man mit normalen Dupont Kabeln kommt.

> Mehrere Komparatorplatinen. Möglichst kleine Platinen, mit je zwei
> lmh7322 (4 Komparatoren) und einer USB-C Buchse. Versorgung von der
> Hauptplatine auch über USB-C. Auch dabei ein SPI DAC für die
> Triggerschwelle, SPI kommt vom Mainboard über USB-C.

Das hört sich schon cool an, aber auch ambitioniert. Das fängt schon
bei den Lötkünsten an. Die USB3 Buchsen haben einen 0.5mm pitch.
Ich habe noch nie SMD gelötet.

Ich würde nur ganz klein anfangen :-)

  Michael

von Gustl B. (-gb-)


Lesenswert?

Michael D. schrieb:
> Für ein Hobby-Projekt finde ich den lmh7322 mit 10,- Euro zu teuer.

Ja gut, den Punkt lasse ich gelten.

Michael D. schrieb:
> Da braucht man auch ganz andere Tools als KiCad und vor allem spezielles
> Fachwissen, was das Platinenlayout und Schaltungsdesign angeht um die
> Impedanzen der Leiterbahnen zu berücksichtigen und ggf. ein Längen
> matching zu machen.

Das geht schon mit KiCAD und du könntest eine Menge lernen. Und wenn man 
den Längenausgleich weglässt, ein paar 100 MHz bekommt man trotzdem hin.

Michael D. schrieb:
> Mir wäre wichtig erstmal den FX3 zu verstehen, was der überhaupt kann
> und wie der funktioniert. Als Basis Board würde ich erstmal das FX3 Eval
> Board nehmen.

OK, ja das klingt vernünftig wenn du diesen Baustein verwenden möchtest.

Michael D. schrieb:
> Alleine ein BoardLayout für USB3 zu machen ist nicht ohne.

Aber auch nicht dramatisch.

Michael D. schrieb:
> Das zweite wäre dann, wie man die letzten 20cm von Board zum DUT
> überbrückt, d.h. wie weit man mit normalen Dupont Kabeln kommt.

Für 100 MHz geht das schon.

Michael D. schrieb:
> Das hört sich schon cool an, aber auch ambitioniert. Das fängt schon
> bei den Lötkünsten an. Die USB3 Buchsen haben einen 0.5mm pitch.
> Ich habe noch nie SMD gelötet.

Ja, aber

Michael D. schrieb:
> Ich würde nur ganz klein anfangen :-)

wenn du das machst und deine Fähigkeiten langsam erweiterst, dann kannst 
du in wenigen Jahren auch das was du jetzt für unmöglich hältst.

von Michael D. (nospam2000)


Lesenswert?

Das oben bereits erwähnte Design von Sergey Petrukhin findet man hier:
https://easyeda.com/f33net/digital-probe-rigol-mso5000

Allerdings hat das einen differentiellen Output für die Rigol Scopes.

von Michael D. (nospam2000)


Angehängte Dateien:

Lesenswert?

Hi,

ich habe jetzt mal den ersten Entwurf eines Boards mit einem 
SN74LXC8T245-Q als Eingangsstufe gemacht. Der hat 8 Kanäle pro Chip und 
kostet etwa 1,20 Euro. Infos siehe hier: 
https://www.mouser.de/ProductDetail/595-74LXC8T245QPWRQ1

Für jeden Chip will ich die Eingangsspannung einzeln per Jumper wählbar 
machen zwischen 3 Möglichkeiten:
1. 5V
2. 3.3V
3. eine Spannung die man per Poti einstellen kann zwischen 1,25V bis 5V 
(dafür ist der Spannungsregler)

Einen Serienwiderstand (ca. 33 Ohm) vor jedem Eingang habe ich noch 
nicht vorgesehen, ich muss erstmal sehen wie das Routing klappt.

Die beiden Pfostenstecker haben jeweils 16xInput + 16xGND und noch 8 
unbelegte Pins.

  Michael

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
Noch kein Account? Hier anmelden.