Guten Morgen! Ich habe einen 8Bit ADC mit 48MSPS Samplerate und möchte dessen Daten an den PC senden. Der bislang verwendete AT91SAM7x schafft diese Datenmenge jedoch nicht. Kennt jemand einen Controller der diese Datenrate schaffen kann? Im Notfall wäre ich auch schon mit 24MByte/s zufrieden. Voraussetzung für mich wäre allerdings, das man das Teil noch Handlöten kann, also kein BGA.Ich habe eine gute Ausrüstung zur verfügung, aber eben nichts für BGA. Danke schonmal im Voraus für eure Vorschläge!
Könntest einen Cypress FX2 nehmen, der schafft im isochronen Streaming die 24 MByte/s. Für 48MByte/s kontinuierlichen Datenstrom wird die Auswahl dann schon sehr beschränkt.
es gibt für DVB-H-USB-tongles einen chip, der die emfangenen daten vom demodulator (normalerweise den MPEG2-stream) via USB an den PC streamt... vielleicht mal nach einem solchen chip umsehen?
Ich brauche halt eine Lösung um die Daten an den PC zu schicken und dort in einem C# Programm weiterzuverarbeiten.
Theoretisch sollte das doch der Cypress FX2 Chip die vollen 48MByte/s auch schaffen, wenn er 480Mbit/s High Speed USB kann, oder?! mfg Andreas
Weiss jemand wo man den her bekommt? Also in geringen Stückzahlen? Digikey hatte den nicht als TQFP100 als ich letztens geschaut habe.
Nein, schafft er nicht, mal ins Datenblatt oder hier rein http://download.cypress.com.edgesuite.net/design_resources/application_notes/contents/streaming_data_through_isochronous_bulk_endpoints_on_ez_usb_fx2_tm__and_ez_usb_fx2lp_tm____an4053_b_12.pdf schauen Den Chip gibts bei Segor in Berlin.
OK. Stimmt... das DIng schafft dann doch nur 24 MByte/s. Übrigens gibts den auch bei Farnell. mfg Andreas
Was mir jetzt noch spotan eingefallen ist, wäre, dass du deine ADC Daten vor der Übertragung komprimierst. Also z.B. mit einem CPLD/FPGA (weiß nicht, ob es sich in einem CPLD ausgehen würde) und dann an den FX2 gibst und an den PC sendest. 48MByte/s sind schon ziemlich viele Daten.... das wird sicher nicht mehr so leicht! mfg Andreas
Und wie könnte ich die Daten z.B. effizient komprimieren? Es handelt sich leider um dauernd schwankende Messwerte mit sehr wenigen Mustern.
Hast Du eigentlich eine Strategie, wie der angeschlossene PC mit dem Datenstrom zurechtkommen soll? Was soll der mit den anfallenden mehr als 40 MByte/sec anfangen?
Also erst mal kurz und knapp: Geht nicht! Der USB ist keine serielle Schnittstelle über die man einfach so viele Bits pumpt wie man will. Da gibt es ein Protokoll und das verbraucht Bandbreite und beschränkt wie viel Bandbreite ein Gerät überhaupt belegen darf (in der Wikipedia habe ich gerade eine Diskussion mit einer Flachzange die das nicht begreift...). Unter kontrollierten Testbedingungen kann man nachweisen, das ca. 48MB/s transferiert werden können. In der Praxis haut das aber nicht hin, da das Betriebssystem nun mal noch andere Dinge zu tun hat als nur am USB zu lauschen. Mit viel Feintuning kommt man auf etwa 40MB/s, damit ist aber auch Essig wenn mehr Geräte auf dem Bus sind.
okok... 48MB/s geht also nicht. 24MB/s ist aber möglich. Muss reichen. Mehr würde zwar mit Firewire gehen, aber dafür habe ich erst recht keine Lösung gefunden.
Firewire: www.orsys.de gibts nen fertiges Modul. Kann 32MByte/s isochron streamen. Aber Vorsicht, sowohl bei USB als auch bei FW hat man im schnellen isochronen Mode keinerlei Flusskontrolle o.ä. Datenpakete können schon mal verlören gehn.
Keine Flusskontrolle? Und wie schafft es dann meine externe Festplatte 30-40MByte/s fehlerfrei zu übertragen? Könnte ich ev. einen dafür gedachten Chip missbrauchen indem ich einfach so tue als wäre mein Messgerät ein externes Laufwerk mit einer einzigen Datei mit gefälschter Größenangabe und wenn ich die Datei kopieren will startet die Messund und die Daten (1-2GiB) werden eben nicht von einer Festplatte übertragen, sondern frisch erzeugt...
> Könnte ich ev. einen dafür gedachten Chip missbrauchen indem ich einfach > so tue als wäre mein Messgerät ein externes Laufwerk mit einer einzigen > Datei mit gefälschter Größenangabe und wenn ich die Datei kopieren will > startet die Messund und die Daten (1-2GiB) werden eben nicht von einer > Festplatte übertragen, sondern frisch erzeugt... Ja, AppNotes gibt's dazu eigentlich von allen Herstellern (wobei sich die Auswahl an Hi-Speed-fähigen Controllern in Grenzen hält). Man könnte auch einen 08/15 USB<->IDE-Adapter nehmen, wenn das einfacher ist... oder sowas ISP1581 (TQFP) und 1582/83 (QFN) http://www.nxp.com/#/pip/cb=[type=product,path=50803/53481/47806,final=ISP1581-06]|pip=[pip=ISP1581-06][0] bzw. http://www.nxp.com/#/homepage/cb=[type=product,path=/50803/53481/47806]|[5]
Die Festplatten laufen asynchron oer im Interrupt-Transfer. Allerdings kenne ich keine universellen Controller, die diese Geschwindigkeit schaffen. Ich nehme an, diese ATA-Controller sind FPGAs oder sowas, die das Protokoll in Hardware machen, deshalb sind die so schnell. Die Idee mit der virtuellen HDD hatte ich auch schon mal, braucht man aber nen recht schnellen FPGA, der das ATA-Protokoll simuliert. Dann kann man z.b. den leicht verfügbaren Cypress 68300 nehmen.
Festplatten am USB laufen im Bulk-Transfer, das ist ein Modus mit gesicherter Übertragung, aber ohne gesicherte Übertragungszeit. Grundsätzlich kann der USB immer nur pünktlich oder sicher, nicht beides.
Aber du kannst die Daten vorher Puffern. Also bei USB ist es üblich, dass möglichst viele Daten in einem Rahmen übertragen werden (1ms oder 125us bei USB 2.0). Würden immer nur 8Bit übertragen, kommt man niemals auf die bandbreite. Also Puffern und anschließend in großen Paketen senden. Vielleicht kann man die Pakete vorher noch lauflängen Kodieren (worst case: 1010101010....Kompremierung=0%) oder vorher sogar noch mit Differenzwerten arbeiten (ähnlich wie bei MPEG z.B. ein original dann 5 differenz und wieder 1 original usw.) Wenn du absolut nicht bis auf 24Mbyte/s runter kommst, dann funktioniert der Isochrone Transfer nicht und du kannst nur noch auf USB 2.0 wechseln. Aber selbst da kommst du nur auf diese Datenraten, wenn du große Blöcke verschickst. Gruß Alexander
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.