Jaki jest najlepszy rodzaj transferu USB (luzem, przerwaniem, transferami izochronicznymi) do zastosowania w oscyloskopie USB?

20

Chcę zbudować oscyloskop USB. Czytałem o różnych typach transferu USB . Jaki rodzaj transferu najlepiej przenieść zebrane próbki ADC z oscyloskopu USB na komputer?

Poniżej kilka moich ustaleń. Proszę mnie poprawić, a także byłoby dobrze, gdyby ktokolwiek mógł zasugerować dobry typ transferu.

  1. Transfer izochroniczny - możliwa utrata danych. Nie jest to dobre dla oscyloskopu, ponieważ każdy element danych jest cenny. Ile danych można utracić?
  2. Tryb przerwania - nie mam pojęcia, czy spowoduje to zalanie połączenia USB
  3. Tryb zbiorczy - wydaje mi się najlepszy, ponieważ nie ma utraty danych
  4. Transfer kontrolny - nieodpowiedni, ponieważ nie jest przeznaczony do przesyłania danych
robomon
źródło
2
Z tego, co przeczytałem, większość zakresów z USB używa trybu zbiorczego do wysyłania zrzutów ekranu z zakresu.
Passerby,
Prawdopodobnie jeśli wybierzesz tryb izochroniczny, możesz zarezerwować trochę dodatkowej przepustowości dla korekcji błędów.
user253751
Lub w przypadku rażącej przesady PCIe DMA łaskocze moje upodobania.
Mitch

Odpowiedzi:

28

Przesyłanie zbiorcze nie powoduje utraty danych, ale nie ma gwarantowanej minimalnej przepustowości. (Z drugiej strony mogą osiągać wyższe prędkości, ponieważ są w stanie wykorzystać całą szerokość pasma, która nie jest faktycznie wykorzystywana przez żadne inne transfery).

Co się stanie, gdy transfery danych Twojego oscyloskopu zostaną opóźnione (z powodu błędów lub z powodu innych urządzeń), a nowe dane się gromadzą? Czy zatrzymujesz urządzenie, dopóki stare dane nie zostaną przesłane, czy wyrzucasz stare dane, aby móc przesyłać bieżące dane?

Transfery izochroniczne są zaprojektowane dla danych „w czasie rzeczywistym”. Nie masz wyboru odnośnie obsługi błędów, ale twoja przepustowość jest zarezerwowana na magistrali.

  • Jeśli chcesz wyświetlać zarejestrowane dane w czasie rzeczywistym, powinieneś użyć transferów izochronicznych.
  • Jeśli chcesz przesłać zarejestrowane dane do komputera po zakończeniu pomiarów, powinieneś użyć przesyłania zbiorczego.
CL.
źródło
10

Pytanie jest prawie całkowicie niezależne od twojego zastosowania jako oscyloskopu i jest całkowicie regulowane przez rodzaje komunikacji, o które pytasz USB. Na przykład:

  • Oscyloskop, który ma wewnętrznie duży bufor (wiele megabajtów) i jest przeznaczony do przeprowadzenia krótkiego testu, a następnie przesłania danych, wykorzystałby całkowicie masowy transfer. Nie ma potrzeby gwarantowanej przepustowości, więc najlepszy będzie wysoki poziom głośności z kontrolą błędów przesyłania masowego.
  • Oscyloskop, który jest przeznaczony do ciągłego podłączania do testowanego obwodu w sposób ciągły i musi działać w „czasie rzeczywistym” (czytaj: deterministyczny czas pracy) wybrałby izochronus. Bulk nie oferuje żadnych deterministycznych gwarancji środowiska uruchomieniowego i nie można skonfigurować potoku, aby miał zarezerwowaną przepustowość. Będziesz musiał zrobić własne korekty błędów, ale przynajmniej można to zrobić deterministycznie.
  • Oscyloskop z transmisją „na żywo” do oglądania przez człowieka oraz rejestracją z dużą prędkością na wyzwalaczu może skonfigurować dwa punkty końcowe, jeden izochronus, aby nadążyć za transmisją na żywo i przesyłaniem zbiorczym dla wyzwalanych danych. W przypadku spożycia przez ludzi utrata klatki lub dwóch nie jest wielkim problemem, więc nie ma powodu, aby martwić się brakiem sprawdzania błędów w Isochronus. Jednak jeśli chodzi o rzeczywiste dane, przesyłane są one masowo w celu korekcji błędów.
  • Można użyć tego obwodu jako części systemu na żywo. Może to być nie tylko oscyloskop, ale także zabezpieczenie przed sygnałami wskazującymi, że obwód opuszcza zakresy działania i musi zostać wyłączony przez komputer. W takim przypadku możesz dodać punkt końcowy przerwania do systemu, aby uzyskać gwarantowane opóźnienie (i pewną dobrze zdefiniowaną obsługę błędów), aby upewnić się, że problem zostanie rozwiązany przed zerwaniem obwodów.

Gdy dowiesz się, jaki rodzaj przesyłanych danych oraz warunki jakości usługi (QoS), na podstawie których dane muszą dotrzeć, możesz zdecydować, który mechanizm transferu USB zrobić. Będziesz wiedział, że jesteś gotowy podjąć te decyzje, gdy słowo „oscyloskop” nie jest już wymagane do opisania potrzebnych danych i QoS. Wtedy wiesz, że jest wystarczająco obiektywny, aby zacząć rozwiązywać te problemy.

Cort Ammon - Przywróć Monikę
źródło
4

W przypadku oscyloskopu przepustowość transferu jest parametrem, który chcesz zmaksymalizować. Przesyłanie masowe zostało zaprojektowane specjalnie z myślą o dużej przepustowości, więc jest to właściwy wybór. Chociaż transfery izochroniczne i przerywające ograniczają opóźnienia, są one przeznaczone tylko dla strumieni danych o niskiej i średniej przepustowości.

Dave Tweed
źródło
3

Po prostu użyj przelewów masowych. Oscyloskop nie jest tak naprawdę urządzeniem o dużej szybkości przesyłania danych. O ile nie planujesz wykonać cyfrowego projektu typu luminofor, oscyloskop jest tak naprawdę tylko oknem na bardzo małą część kształtu fali. Załóżmy na przykład, że chcesz wyświetlić 1000 poziomych pikseli i odświeżyć ekran przy częstotliwości około 30 Hz. Jeśli próbki są 8-bitowe (jest to typowe) i istnieją dwa kanały, patrzysz tylko na 60 000 bajtów / sekundę. Pełna prędkość USB może wykonać około 1 000 000 bajtów / s, więc zużywasz mniej niż 6% przepustowości magistrali. Daje to dużo czasu, aby pozwolić trybowi przesyłania zbiorczego wykonać swoje zadanie (skorygować błędy, obejść inny ruch autobusowy) i jest mało prawdopodobne, że kiedykolwiek napotkasz rzeczywistą konfigurację magistrali, która nie będzie w stanie przydzielić ci wystarczającej przepustowości za tak dużo danych.

Jon
źródło