Forum: Mikrocontroller und Digitale Elektronik Möglichst schnell Daten an einen PC senden


von Luky S. (luky)


Lesenswert?

Hallo!
Ich (oder besser gesagt wir) möchten einen Messwertaufnehmer bauen.
ein Grundgerät hängt mit einer möglichst schnellen Schnittstelle (USB
oder Ethernet?) an einen PC und sendet an diesen Daten von
verschiedenen Messaufnehmern (Digitale Eingänge, aber auch 16bit ADCs
und Frequenzzähler).
Die Messaufnehmer liefern ihre Daten mit einem sehr einfachen seriellen
(Digitaleingänge) oder parallelen 4-8Bit (alle anderen) Protokoll an.
Die Messaufnehmer bauen andere Gruppen.
Unsere Aufgabe ist es nun, einen kosteneffizienten, aber doch möglichst
schnellen Basiscontroller zu bauen, also praktisch die größte
Ausbaustufe, ab der es anfängt teuer + aufwändig zu werden.
Also keine FPGAs oder große Pufferspeicher.
Im Moment sind die ARM ja ziemlich "in".
Wie viele MBit/s schafft die USB - Schnittstelle eines LPC2148 oder ein
AT91SAM7Sxxx?
Oder ist ein FTDI245R schneller?
PC- seitige Treiberprogrammierung ist das geringere Problem.
Es ist ein Informatiker in der Gruppe.

von Philipp B. (philipp_burch)


Lesenswert?

Darf man erfahren, wozu die Übertragung so schnell sein muss? Wenn ihr
einen entsprechenden Treiber schreiben könnt (Viel Spass dabei), dann
würde ich den LPT nehmen, da ist das Aufwand/Geschwindigkeit-Verhältnis
wohl am Besten. USB wäre natürlich eine Alternative, aber dort wird der
Treiber, sowie die Hardware möglicherweise um Einiges komplizierter.

von Luky S. (luky)


Lesenswert?

Die Übertragung soll so schnell sein, damit man auch mehrere
Messwertaufnehmer an ein Teil hängen bzw. mehr Messungen vornehmen
kann.
Das Ziel liegt bei 2x 5Msps @ 16bit und einigen zusätzlichen digitalen
Eingängen, also zusammen etwa 20MByte/s. 10MByte/s würde auch reichen,
40MByte/s wäre traumhaft.
LPT ist keine Alternative, da er immer mehr verschwindet.
Vor allem TabletPCs sind Legacy-Free (keine serielle oder parallele
Schnittstelle)
Wir haben wie gesagt einen Informatikstudenten in der Gruppe der
Treiber programmiert.
Nur der Kostenaufwand (Hardware) soll möglichst gering sein.

von Dieter Werner (Gast)


Lesenswert?

Huiuiui, das ist schon sehr anspruchsvoll.

Bei 20MByte/s ist alle 50ns ein Byte fällig, da wird sich auch ein ARM,
Shark oder Coldfire anstrengen müssen.
Die Daten müssen ja auch noch eingesammelt und in eine Form gebracht
werden die eine Trennung des Bitsalates zulässt.

Von der Geschwindigkeit kommt da bestenfalls USB highspeed oder
firewire in Frage. Dabei ist die begrenzte Leitungslänge zu beachten;
USB 5m, firewire weiss ich nicht.

Alterantive wäre vielleicht Ethernet (100MBit), da braucht man aber
schon einen Port am Rechner für sich allein.

von Alpha (Gast)


Lesenswert?

Wir haben sowas in der Gruppe mal gemacht. War fuer einen extrem
schnellen PMT. USB und aenliches fiel damals wegen der 1 ms
Uebertragungsintervalle weg. Der Typ der das gemacht hat, hat es mit
einem ARM und einem FPGA fuers 1G Ethernet gemacht. Hat super
funktioniert. Er meinte damals es sei die einfachste Loesung und das
FPGA hat uns auch nur 200 Dollar inklusive DevBoard gekostet. Den ARM
hat ein Freund von ihm programmiert. Ich befuerchte aber, dass wenn ihr
kein FPGA nehmen koennt weil es keinen gibt der Ahnung davon hat, dann
wird es auch mit den anderen Loesungen schwierig. Warum kauft ihr nicht
einfach ein fertiges DA System von National Instruments? Die haben
nichts was 2x 5Msps @ 16bit kann? Dann sieht es fuer euch ganz schlecht
aus wenn es "nicht teuer oder aufwendig" werden soll.
Es gibt ja nichtmal viele ADCs die sowas koennen...

von Karl-j. B. (matrixman)


Lesenswert?

100Mbit reicht net! da hast du maximal 12,5Mbyte gesammt durch das
protokoll wird das aber noch weniger! also wenn dann gigabit! oder
fireware wäre auch net schlecht! muss das ganze echtzeitfähig sein?
wo willst du die vielen daten im pc ablegen/verarbeiten? festplatte
wird knapp für die datenmenge da sollte man entweder ein raid machen
oder nur aufn arbeitsspeicher! oder willst du die daten net ablegen?

mfg Karl

von Luky S. (luky)


Lesenswert?

National Instruments hat sowas. Ja.
Soll aber ein Projekt werden. Zum Lernen und für eine gute Note.
FPGA kann hier keiner und Devboard verfügbar ist auch keines.
Soll aber auch ohne gehen.
Was wäre die maximale Geschwindigkeit, die man mit einem "kleinen"
ARM7 über USB hinbekommt?
Ginge es mit einem Arm9 schneller?

von Karl-j. B. (matrixman)


Lesenswert?

usb hat 480MBit des sind dann 60MByte pro sekunde da du das aber nicht
komplett für daten nutzen kannst denke ich werdens so 20bis 30MByte
werden! was du mit nem amr hinbekommst kann ich dir net helfen damit
hab  ich mich noch net so beschäftigt! aber das sind schon ziemlich
hohe datenraten die du da willst!

mfg Karl

von A.K. (Gast)


Lesenswert?

LPC2148, SAM7S: Implementieren USB "Full Speed". Das sind theoretisch
12Mbps, also 1,5MB/sec, abzüglich Overhead.  NB: "Full Speed" =
12Mbps, "High Speed = 480Mbps. Schilda lässt grüssen.

Controller mit integriertem DMA-basiertem Ethernet dürfte klar im
Vorteil sein. Wird dann aber üblicherweise 100Mbps sein, mehr als
~10MB/sec ist damit nicht drin.

Und auch die Daten müssen aus dem Messaufnehmer erst mal schnell genug
reinkommen. Mach dir auch darüber mal Gedanken. Bitweise einsammeln
kannst du bei den Raten vergessen.

von A.K. (Gast)


Lesenswert?

Minimum ist wohl LPC288x, der kann USB High Speed. Wenn die Platine auch
zum Projekt gehört, dann mach dich mal mit BGA Gehäusen vertraut.

von Peter D. (peda)


Lesenswert?

Wie wärs, erstmal für das Projekt ein Pflichtenheft zu erstellen, d.h.
was wird wirklich, real, in Echt gebraucht.

40MByte ist jedenfalls recht heftig, sollen da 100 Videokameras
gleichzeitig eingelesen werden ?

Und wenn der PC die 40MByte auch noch irgendwie verarbeiten soll, wirds
wohl nichts unter 4 CPUs a 4GHz.

Eine praxisgerechte Abschätzung der Anforderungen ist das A und O eines
jeden erfolgreichen Projekts.


Peter


P.S.:
Und die Probleme werden nicht weniger, wenn man noch 2 andere Teams mit
im Boot hat, sondern sie entstehen dadurch erst.
Ohne genaue Spezifikationen (Pflichtenheft) ist Teamarbeit absolut
unmöglich.

von Lukas (Gast)


Lesenswert?

Das Problem ist eben die eher ungenaue Spezifikation.
Momentan sind wir ja erstmal beim abklären, was geht.
Jede Kosten-Nutzen-Funktion hat irgendwo einen Sprung, und im Moment
glaube ich, das dieser bei den größten "kleinen" ARM7 (LPC2148,
T91SAM7S) liegt.
Bleibt die Frage, welche der Beiden für die Messdatenerfassung besser
geeignet ist.
Der nächste Schritt wäre ein AT91SAM7X mit Ethernet, wobei ich für
diesen kein günstiges Devboard ohne Schnickschnack (LCD, Audio,
Joystick...) gefunden habe.
Wenn man noch ein bischen mehr drauflegt (165€) gibts schon ein
Blackfin Board.
Schwierige Entscheidung.

von A.K. (Gast)


Lesenswert?

Deine Anforderungen und die Möglichkeiten von LPC2148/SAM7S sind nicht
annähernd in Einklang zu bringen.

Wirst also entweder die Anforderungen auf das mit den o.A. Chips
verträgliche Mass drastisch runterschrauben oder tiefer in die Kasse
greifen müssen.

von Lukas (Gast)


Lesenswert?

Momentan stimme ich für drastisch reduzieren.
Die ursprüngliche Forderung (5Msps@16Bit) stammt von einem anderen Team
das ihr Projekt gerne am PC visualisieren möchte.
Was wäre mit einem ARM7 möglich?

von Markus K. (markus-)


Lesenswert?

ARM7 mit Ethernet gibts z.B. hier:
http://www.embeddedartists.com/products/boards/lpc2138_100eth.php

Was ihr auch noch abklären solltet:
Ist es wirklich nötig, dass die Daten dauerhaft übertragen werden oder
reicht es, wenn ein Buffer schnell gefüllt wird, der dann langsam
übertragen werden kann?

von Lukas (Gast)


Lesenswert?

Wen es gepuffert sein kann, dan braucht es einen eher großen Puffer (min
für 20sec, besser 1 min) bzw. genug kapazität um eben so lange
aufzuzeichnen während in der zwischenzeit langsam übertragen wird.
Das z.B. mit der doppelten Datenübertragungsrate aufgezeichnet wird und
der Rest dann in einem (billigen SDRAM von alten PCs?) Specher landet
wäre schon denkbar wen man wie  gesagt brauchbaren, günstigen Speicher
findet.

von Rolf Magnus (Gast)


Lesenswert?

> Die ursprüngliche Forderung (5Msps@16Bit) stammt von einem anderen
> Team das ihr Projekt gerne am PC visualisieren möchte.

Wie soll diese Datenmenge denn visualisiert werden? Man wird eh nur
einen Bruchteil davon sehen können, also kann man die Datenmenge evtl.
schon vor der Übertragung entsprechend reduzieren.

von A.K. (Gast)


Lesenswert?

Das Board von embeddedartists kann zwar 100Mbps, aber mit externem
Ethernet-Chip der per 8bit Port-I/O angesprochen wird. Nennenswerte
Datenraten lassen sich damit nicht erzielen.

von Karl-j. B. (matrixman)


Lesenswert?

das hab ich mir auch schon gedacht! kein mensch schafft das soviele
datenmengen in echtzeit anzukucken! und wenns nur als stream abgelegt
werden soll auf der festplatte dann gibts da glaub auch  probleme wenn
die hdd zu langsam ist!


mfg Karl

von Alpha (Gast)


Lesenswert?

Igendwie klingt euer Projekt sehr neblig. Fuer eine gute Note allein
wird das nie was. Versucht ihr das steht ihr ohne Ergebnis da. Wer soll
das bei euch denn programmieren? Wa sagt der denn dazu? Der muss doch
wissen was er aus einem Arm7 rausholen kann. Wenn er das nicht weiss,
dann teilt eure Datenrate mal durch 10 und ihr habt ein realisitisches
Projekt, was zumindest die Chance hat von euch geschafft zu werden.
Warum tauchen hier eigentlich immer Leute auf, die irgendwelche Daten
mit 30 Gigabit in den Rechner stopfen wollen, aber a, weder Ahnung
haben mit was sowas gehen kann, b, sowas noch nie gemacht haben und c,
keine Ahnung haben was eine Festplatte realistischerweise schafft?

von Thomas (Gast)


Lesenswert?

welches Betriebssystem wollt ihr eigentlich auf dem PC laufen lassen?
Unter windows könnt ihr das ganze komplett vergessen.
alles was einen intervall von <5ms hat wird sehr problematisch

Macht lieber ein Projekt, was zum Schuss funktioniert und ihr auf der
sicheren Seite seid. Man kann ja zum Projekt immer noch Ausführungen
machen, mit welchen Mitteln man eine höhere performance erzielen
könnte.

Ich schreibe beruflich Software für Messdatenerfassung , Visualisierung
und Speicherung für die QS.
Hauptsächlich brührungslose Durchmessermessung im 0,001 mm bei der
Rohrfertigung.
Wir arbeiten mit Datenmengen von 100- 500 Messwerten pro sec.
Das ist in der Praxis völlig ausreichend.

von Luky S. (luky)


Lesenswert?

Also wir haben einen Informatiker der für die Treiberprogrammierung und
das MMI zuständig ist. Mikrocontrollerprogrammierung soll ich erledigen
und ein anderer, der aber auch ev. die Platine erstellen könnte, wenn
wir kein Devboard nehmen.
20MByte/s schafft jede Notebookfestplatte, aber wir haeb unsere
Anforderungen ja auf "so schnell wie mit dem ARM7 USB möglich"
heruntergeschraubt. Dann müssen wir halt auf die schnellen ADCs
verzichten.
Auch eine Datenreduzierung wäre drinnen, da eigendlich nur wenige
Zeitpunkte (wenn Vibrationen auftreten, aber das ist eine andere
Geschichte) so schnell gesampelt werden müssen, um Vibrationen zu
untersuchen.
Entweder lassen wir es ganz weg oder wir geben Pufferspeicher auf die
Platine, was die ganze Geschichte aber gleich wieder schwieriger macht.

von Dieter Werner (Gast)


Lesenswert?

>> 20MByte/s schafft jede Notebookfestplatte ...

Burst sehr wahrscheinlich, aber wie es bei Streaming aussieht steht auf
einem anderen Blatt.

von Gast ein Anderer (Gast)


Lesenswert?

Hohe Datenraten gehen wohl auch über ATA und ne kleine CPLD. Soll aber
jetzt wohl patentiert sein (Stichwort: Direct I/O Interface).

von Alpha (Gast)


Lesenswert?

"aber wir haeb unsere
Anforderungen ja auf "so schnell wie mit dem ARM7 USB möglich"

Na prima, dann hat sich die Sache ja erledigt. Am besten ihr probiert
aus wie schnell es geht.

von Lukas (Gast)


Lesenswert?

Noch eine Frage:
Was ist beim Platinenlayout zu beachten? Irgendwelche Besonderheiten im
Vergleich zu einem z.B. ATmega128 Board? Wirklich Hochfrequent ist der
ARM7 ja nicht wirklich.

von Peter D. (peda)


Lesenswert?

"Wirklich Hochfrequent ist der ARM7 ja nicht wirklich."

Für nen Layout-Anfänger beginnt spätestens ab 1MHz die blanke HF.

Es ist auch ein riesen Unterschied, ob Du beim AVR nur nen 16MHz Quarz
dranpappen mußt oder beim ARM externen Code-, Datenspeicher und
Peripherie.


Ich hatte mal für nen DS80C320 (32MHz) ne Platine extern machen lassen,
das Layout war grauenvoll (Autorouter) und die Signale auch.
Dann hab ichs selber gemacht und die Signale waren wieder rechteckig
und negative Überschwinger waren auch weg.


Für den ARM würde ich nicht unter 6 Layer nehmen.


Peter

von A.K. (Gast)


Lesenswert?

"Für den ARM würde ich nicht unter 6 Layer nehmen."

Scheibst du das jetzt zur Abschreckung oder meinst du das ernst?
Immerhin sind viele PC-Mainboard nur 4-lagig, mit 3-stelligen MHz auf
den Leitungen.

von Peter D. (peda)


Lesenswert?

@A.K.

"Immerhin sind viele PC-Mainboard nur 4-lagig"


Das glaub ich jetzt mal nicht (hab grad kein Mainboard zur Hand).
Schon die alten 386-er Boards hatten ja mehr.

Unter 8..10 Layern kann ich mir nicht vorstellen, diese 600-Pin BGAs zu
kontaktieren. Oder die Leiterzüge müßten nur 1µ breit sein.


Peter

von A.K. (Gast)


Lesenswert?

Nach 4-layer mainboard gegoogelt:

http://de.shuttle.com/DesktopDefault.aspx/searchcall-12/searchcategory-853/noblendout-1/tabid-391/636_read-10178/
http://www.tecchannel.de/technologie/prozessoren/401815/index4.html
http://www.cheeplinux.com/product_info.php?name=VIA%20EPIA%20ME6000%20Mainboard&products_id=382

Eine Frage des Preises. Wie sonst kann man PC-Mainboards dem Endkunden
schon für 50 Euronen andrehen. Sieht natürlich insbesondere bei
Multiprozessor Workstation-Boards etwas anders aus, aber die kosten ja
auch "bischen" mehr.

von A.K. (Gast)


Lesenswert?

Apropos Leiterbahnzüge: Die Pins vom Sockel zu zählen ist bisweilen der
falsche Ansatz.

Beispiel Socket754:
~80 Pins Hypertransport-Link
~150 Pins Speicherinterface
~20-30 Pins Steuerung
der Rest ist Stromversorgung (bis zu ~60A).

Zudem hat AMD dafür gesorgt, dass es wenig "drunter und drüber" gibt.
Speicher am einen Rand, HT am anderen, Strom dazwischen.

von Peter D. (peda)


Lesenswert?

@A.K.

Jetzt müßte man bloß noch wissen, sind das 4 Layer insgesamt oder 4
Signal-Layer (+ VCC, GND = 6 Layer) ?

Ich denke mal, daß die Mainboardhersteller etwas fitter beim Layouten
sind und auch bessere Software (>1.000.000€) haben, als ein
Hobby-Layouter.

Ich staune auch immer wieder, wie man selbst DVD-Player in einseitig
mit tausenden Drahtbrücken hinkriegt.


Peter

von Alpha (Gast)


Lesenswert?

Einseitige DVD Player? Sind die nicht zweiseitig?

von A.K. (Gast)


Lesenswert?

DVDs mit Drahtbrücken drauf sind gottlob selten.

von bbbla (Gast)


Lesenswert?

@Peter Dannegger:
Du hast bei 32MHz am Datenbus noch Rechtecke gesehen? entweder hast du
dich mit einem Logic Analyser reingehängt oder dein oszi hat eine
schmitt trigger funktion. Nie und nimmer wirst du bei 32MHz noch
Rechtecke auf dem Datenbus beobachten. Das braucht kein IC und nebenbei
bemerkt ist das auch ganz gut so, sonst hättest wohl enorme probleme mit
EMI!

also die kirche im dorf lassen, und abschätzen was wirklich gebraucht
wird, wie lange die leiterbahnen sind, wie schnell der datentransport,
...

selbstverständlich MUSS man layout richtlinien einhalten >MHz, aber
bsp.  DDR2 Layout rules für 33MHz Bus anzuwenden ist etwas
übertrieben.

beste grüße

von Peter D. (peda)


Lesenswert?

@bbbla,

das ist ein ziemlich gutes Tektronix mit Tastkopf (1GSample, 200MHz).

Rechteck heißt bei mir, die Flanken sind kleiner 20% und in der Mitte
ist ein schöner gerader Abschnitt und negative Überschwinger sind min
-0,1V.

Die Platine ist 4-lagig (VCC, GND, 2 Signallayer).
Der Daten-/Adreßbus ist mittig parallel und die ICs liegen beidseitig
daneben, jede Datenleitung ist insgesamt kürzer als 15cm.


Beim alten Layout hatte der Autorouter alles um die Platine herum
geroutet (>50cm) und die negativen Überschwinger hatten unter -1V.
Ich mußte ALE mit nem Kondensator bedämpfen, damits überhaupt noch
funktioniert hat.


Peter

P.S.:
Der DS80C320 teilt /4, d.h. bei 32MHz Quarz, ist ein
Programmspeicherzugriff 8MHz lang, wobei ja noch die Adressen A7..0 mit
dem Datenbus gemultiplext werden müssen.

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.