Logic analyzer / Pattern generator mit PCI

Gast #896586
Hat schonmal jemand versucht mit den PCI-Ports von einem alten 
Motherboard einen Logic analyzer / digital patttern generator zu bauen?

Theoretisch hätte man doch mit den 33 MHz Taktrate und dem 32Bit breiten 
Bus einen relativ guten Datendurchsatz und im PC-RAM mehr als genug 
Speicher.

Wenn man dort nen CPLD mit 4 fachem PLL auf Bustakt laufenlassen würde, 
könnte man doch eigentlich 8 Bit mit 133 MHz einlesen oder ausgeben. Man 
würde einfach für die Ausgabe (pattern generator) den 32 Bit Bus allt 4 
Takte im CPLD-Eingangslatch zwichenspeichern und dann jeden Takt 8 Bit 
ausgeben. Als Logic analyzer auf einer anderen Karte eben andersrum.

Mich würde interessieren, ob die CPU und das Betriebssystem in der Lage 
ist, fortlaufend und ohne Unterbruch am PCI-port Daten einzulesen und zu 
speichern, bzw. Daten im RAM zu lesen umd am PCI-Port auszugeben. Da es 
PCI-Graphikkarten gibt, sollte es doch eigenlich mit nem geeigneten 
Treiber möglich sein, denn das Bild kann dort nicht einach 
stehenbleiben.

Wenn man mehr als eine solcher Karte basteln würde hätte man mit 5 
PCI-Slots 40 Kanäle mit 133 MHz und unmengen an Speicher, allerdings 
wäre man dann mit der Datendurchsatzrate von 133 MHz SDRAM am Ende.

Was meint ihr dazu, wenn alles theoretich funktionieren würde, wäre das 
doch ne gute Anwendung für alte PC's.
#896859
Hm...erst mal müsste man ja erst mal das gesamte PCI-Interface bauen, 
das ist nicht ohne. Gibts aber mittlerweile als IP-Core für FPGAs. Dann 
müsstest du ein Echtzeit-OS haben, denn mit Linux und Windows kannst du 
es vergessen, äquidistant da was zu machen.
Grafikkarten haben ja einen eigegen Bild-Speicher, und machen das 
Bild-Timing unabhängig von der CPU.

Die Sache ist doch viel zu kompliziert. Ein FPGA mit bissl RAM reicht 
doch vollkommen zu, als Interface einen USB Controller wie den Cypress 
FX2 dran und gut.

Schau mal hier: http://www.sump.org/projects/analyzer/
#897110
Vergiss es. Wie willst du die Zugriffsmuster einhalten? Wie willst du 
dafür sorgen, dass du nicht sämtliche Peripherie lahmlegst?

Eher noch wäre der ISA Bus geeignet, aber der ist einfach zu lahm. 
Vielleicht auch VLB, aber einen 486er treibt man mit der vollen VLB 
Datenrate in den Grenzbereich, und VLB ist 486er spezifisch weil der 
direkt an der CPU hängt.
Gast #897329
Die ganze Idee ist so wie beschrieben nicht realisierbar. PCI ist
ein Bus, d.h. da hängen auch noch andere Sachen dran und brauchen
gelegentlich Bandbreite. Ich müßte nochmal nachschlagen, aber
wenn ich mich richtig erinnere sorgt der Arbiter auch dafür das
kein Device den Bus zu lange belegt. Deswegen sind die theoretischen
Werte (32MHz * 4 Byte) nie erreichbar. Durch die Zugriffe auf andere
Peripherie (Video, je nach Chipsatz auch Timer, DMA, usw.) kommt
außerdem nie ein kontinuierlicher Datenstrom zustande.
Die günstigste Selbstbaulösung sieht aus wie der bereits verlinkte
Sump-LA, wobei man bei Bedarf das Interface zum PC auch anders
ausführen kann. Mit einer neuen Platine könnte das auch PCI sein.
Wenn da die Speichertiefe oder die Geschwindigkeit nicht reicht
wird es entweder teurer oder abenteuerlich.

Jens
#897440
Im Prinzip kann man sagen, dass alle Busse im PC nicht dazu geeignet 
sind, kontinuierlich und zeitdeterministisch irgendwwas abzutasten. Wenn 
man richtig messen will, muss da immer eine extra Logik für die 
zeitkritische Aufnahme hin. Im einfachsten Fall ein kleines CPLD für die 
Ablaufsteuerung mit einem FIFO-Speicher, der die Werte aufnimmt, und aus 
dem man dann gemütlich mit Pausen lesen kann. Schon kleinste Jitter 
erzeugen digitales Rauschen. Ist bei einem Logic-Analyser nicht so 
schlimm, aber äquidistant bekommt man das mit einem PC-Bus-System (und 
einem Betriebssystem wie Windows oder Linux) nicht auf die Reihe. Selbst 
die Realtime Aufsätze für Linux und Windows können nur µs garantieren.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.