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.
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.
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.
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.
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...
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
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?
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
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.
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.
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.
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.
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.
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?
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?
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.
> 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.
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.
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
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?
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.
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.
>> 20MByte/s schafft jede Notebookfestplatte ...
Burst sehr wahrscheinlich, aber wie es bei Streaming aussieht steht auf
einem anderen Blatt.
Hohe Datenraten gehen wohl auch über ATA und ne kleine CPLD. Soll aber jetzt wohl patentiert sein (Stichwort: Direct I/O Interface).
"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.
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.
"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
"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.
@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
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.
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.
@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
@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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.