Logic analyzer / Pattern generator mit PCI

Gast #896586
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren