Was ist der beste USB-Übertragungstyp (Bulk, Interrupt, Isochronous Transfers) für die Implementierung eines USB-Oszilloskops?


20

Ich möchte ein USB-Oszilloskop bauen. Ich habe über verschiedene USB-Übertragungsarten gelesen . Welche Übertragungsart eignet sich am besten, um die gesammelten ADC-Samples von einem USB-Oszilloskop auf einen PC zu übertragen?

Im Folgenden sind einige meiner Ergebnisse aufgeführt. Bitte korrigieren Sie mich und es wäre auch gut, wenn jemand eine gute Überweisungsart vorschlagen könnte.

  1. Isochrone Übertragung - Möglicher Datenverlust. Nicht gut für ein Oszilloskop, da jedes Datenelement wertvoll ist. Wie viele Daten könnten verloren gehen?
  2. Interrupt-Modus - Ich habe keine Ahnung, ob es die USB-Verbindung überfluten würde
  3. Massenmodus - Scheint mir das Beste, da kein Datenverlust
  4. Kontrollübertragung - nicht geeignet, da nicht zur Datenübertragung gedacht

2
Nach dem, was ich gelesen habe, verwenden die meisten Bereiche mit USB den Bulk-Modus, um Screenshots des Bereichs zu senden.
Passant

Wenn Sie sich für den isochronen Modus entscheiden, können Sie möglicherweise ein wenig zusätzliche Bandbreite für die Fehlerkorrektur reservieren.
user253751

Oder für grobe Overkill, kitzelt PCIe DMA meine Phantasie.
Mitch

Antworten:


28

Massenübertragungen verlieren keine Daten, haben jedoch keine garantierte Mindestbandbreite. (Auf der anderen Seite können sie höhere Geschwindigkeiten erreichen, da sie die gesamte Bandbreite nutzen können, die von anderen Übertragungen tatsächlich nicht genutzt wird.)

Was passiert, wenn die Datenübertragung Ihres Oszilloskops verzögert wird (entweder aufgrund von Fehlern oder aufgrund anderer Geräte) und neue Daten angehäuft werden? Halten Sie das Gerät an, bis die alten Daten übertragen wurden, oder werfen Sie die alten Daten weg, um die aktuellen Daten übertragen zu können?

Isochrone Übertragungen sind für Echtzeitdaten ausgelegt. Sie haben keine Wahl bezüglich der Fehlerbehandlung, aber Ihre Bandbreite ist auf dem Bus reserviert.

  • Wenn Sie die aufgezeichneten Daten in Echtzeit anzeigen möchten, sollten Sie isochrone Übertragungen verwenden.
  • Wenn Sie die aufgezeichneten Daten nach Abschluss der Messungen auf den PC übertragen möchten , sollten Sie Massenübertragungen verwenden.

10

Die Frage ist fast völlig unabhängig von Ihrer Verwendung als Oszilloskop und hängt vollständig von der Art der Kommunikation ab, die Sie von USB verlangen. Beispielsweise:

  • Ein Oszilloskop, das intern einen großen (Multi-Megabyte-) Puffer hat und einen kurzen Test ausführen und dann die Daten hochladen soll, würde eine vollständige Massenübertragung verwenden. Es ist keine garantierte Bandbreite erforderlich, daher ist das hohe Volumen mit Fehlerüberprüfung der Massenübertragung am besten.
  • Ein Oszilloskop, das so ausgelegt ist, dass es kontinuierlich an den zu testenden Stromkreis angeschlossen wird und in "Echtzeit" (sprich: deterministische Laufzeit) arbeiten muss, würde Isochronus wählen. Bulk bietet keine deterministischen Laufzeitgarantien, und Sie können Ihre Pipe nicht so einrichten, dass sie Bandbreite reserviert. Sie müssen Ihre eigenen Fehlerkorrekturen vornehmen, aber zumindest können sie deterministisch durchgeführt werden.
  • Ein Oszilloskop mit einem "Live" -Feed für die menschliche Betrachtung und einer Hochgeschwindigkeitsaufnahme an einem Auslöser kann zwei Endpunkte einrichten, einen Isochron, um mit dem Live-Feed und der Massenübertragung für die ausgelösten Daten Schritt zu halten. Für den menschlichen Verzehr ist es keine große Sache, ein oder zwei Frames zu verlieren. Es gibt also keinen Grund, sich über die fehlende Fehlerprüfung bei Isochronus Sorgen zu machen. Wenn es jedoch um die eigentlichen Daten geht, übertragen Sie diese zur Fehlerkorrektur in großen Mengen.
  • Man könnte diese Schaltung als Teil eines Live-Systems verwenden. Dies ist möglicherweise nicht nur das Oszilloskop, sondern auch ein Schutz vor Signalen, die darauf hinweisen, dass der Stromkreis den Betriebsbereich verlässt und vom Computer heruntergefahren werden muss. In diesem Fall können Sie dem System einen Interrupt-Endpunkt hinzufügen, um eine garantierte Latenz (und eine gut definierte Fehlerbehandlung) zu gewährleisten, dass das Problem behoben wird, bevor die Stromkreise unterbrochen werden.

Sobald Sie wissen, welche Art von Daten Sie übertragen und unter welchen QoS-Bedingungen (Quality of Service) die Daten eingehen müssen, können Sie entscheiden, welcher USB-Übertragungsmechanismus verwendet werden soll. Sie wissen, dass Sie bereit sind, diese Entscheidungen zu treffen, wenn das Wort "Oszilloskop" nicht mehr zur Beschreibung der von Ihnen benötigten Daten und QoS erforderlich ist. Dann wissen Sie, dass es objektiv genug ist, um diese Probleme anzugehen.


4

Bei einem Oszilloskop ist die Bandbreite der Übertragung der Parameter, den Sie maximieren möchten. Die Massenübertragung wurde speziell für hohe Bandbreiten entwickelt, daher ist dies die richtige Wahl. Während isochrone und Interrupt-Übertragungen die Latenz einschränken, sind sie nur für Datenströme mit niedriger bis mittlerer Bandbreite vorgesehen.


3

Verwenden Sie einfach Sammeltransfers. Ein Oszilloskop ist eigentlich kein Gerät mit hoher Datenrate. Ein Oszilloskop ist nur ein Fenster in einen sehr kleinen Teil einer Wellenform, es sei denn, Sie planen ein digitales Leuchtstoffdesign. Angenommen, Sie möchten 1000 horizontale Pixel anzeigen und die Anzeige bei etwa 30 Hz aktualisieren. Wenn die Samples jeweils 8-Bit sind (dies ist typisch) und zwei Kanäle vorhanden sind, sehen Sie nur 60.000 Bytes / Sekunde. Full-Speed-USB kann bis zu 1.000.000 Bytes / Sek. Verarbeiten, sodass Sie weniger als 6% der Bus-Durchsatzkapazität nutzen. Das gibt genügend Zeit, um den Massenübertragungsmodus seine Sache tun zu lassen (Fehler korrigieren, anderen Busverkehr umgehen), und es ist unwahrscheinlich, dass Sie jemals auf eine reale Buskonfiguration stoßen, die nicht in der Lage ist, Ihnen genügend Bandbreite zuzuweisen für so viele Daten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.