Sprowadza się to do kwestii przepustowości i opóźnień. Dla prostego systemu załóżmy jedną sondę o szerokości 100 MHz z częstotliwością próbkowania 1GS / s i 10-bitowym przetwornikiem A / D (miałem złe doświadczenia z 8-bitowymi zakresami).
Chcę wyświetlać w czasie rzeczywistym na komputerze PC z minimalnym oknem próbkowania, powiedzmy 10ns - 1 cykl fali sinusoidalnej 100 MHz i maksymalnym oknem (będę hojny dla ciebie w tym momencie) pół sekundy. Innymi słowy, najniższe ustawienie czasu będzie takie jak 1ns / div, a najwyższe to .05s / div. Chcę też kilka trybów napięcia - powiedzmy, zakres 100 mV do 20 V.
Jakiego rodzaju szybkości przesyłania danych to dotyczy?
1 Gs / s * 10 bitów / próbka = 10 Gbit / s
To nie są prędkości USB. Daleko stąd. I nawet nie wziąłem pod uwagę kosztów ogólnych. Po pierwsze, po prostu nie masz przepustowości. I to nie tylko przepustowość. Aby wyświetlać w czasie rzeczywistym, musisz być spójny. Musisz przenieść 100 bitów do warstwy aplikacji co 10 nano sekund. Tego rodzaju spójności nie można uzyskać z USB. Nie jest przeznaczony do obsługi jednego urządzenia o ekstrawaganckich wymaganiach - jest zaprojektowany jako autobus. Nie możesz kontrolować, kiedy jesteś właścicielem magistrali - urządzenia są tylko niewolnikami. Jeśli host pozwala innemu urządzeniu mówić, kiedy trzeba wysłać dane, dane zostaną utracone.
Możliwe, że płaczesz - po co przesyłać dane w czasie rzeczywistym do komputera, gdy „czas rzeczywisty” dla danej osoby wynosi 60 Hz? Jeśli wszystko, co musisz zrobić, to zaktualizować wyświetlacz, na pewno nie potrzebujesz tak dużo danych. Z wyjątkiem tego, że robisz - wyświetlacz jest liniową kombinacją wszystkich zebranych próbek. Uśredniona, przybliżona do średniej kwadratowej interpolacja splajnu sześciennego - to nie ma znaczenia. Aby stworzyć ładny, ładny wyświetlacz, który nie jest tylko zbiorem kropek, potrzebujesz wszystkich tych danych i musisz je przetworzyć. Jakieś wyzwalanie? Obliczenia należy wykonać na hoście - w warstwie aplikacji. Bez względu na to, w jaki sposób możesz to pokroić, w przypadku wyświetlania w czasie rzeczywistym z szybkością 1 GS / s dla dowolnej dokładności wartej cholery, musisz przesyłać rzędy wielkości więcej danych niż USB może obsłużyć i musisz to robić bardziej niezawodnie niż „
Jakie są na to sposoby? Nie rób wyświetlania w czasie rzeczywistym. Niektóre zakresy USB oferują tylko tryby wyzwalania. Wyzwalanie jest obsługiwane na urządzeniu, a po znalezieniu wyzwalacza dane są gromadzone w buforze. Gdy bufor się zapełni, zakres USB powoli przenosi go do aplikacji, a następnie aplikacja wyświetla. To wystarcza do wielu zastosowań zakresu, ale nie jest to w czasie rzeczywistym. I transfer - to też zajmuje trochę czasu. To niewygodne. I zwykle kierowcy są do dupy. Możesz powiedzieć, że miałem złe doświadczenia.
Zawsze zastanawiałem się, dlaczego Firewire nie był używany do celowników. Pozwala to uniknąć niektórych problemów związanych z USB. Jest peer-to-peer, oferuje tryby izochroniczne (spójne taktowanie) i ma stosunkowo dużą przepustowość. Dzięki temu możesz być w stanie wykonać zakres czasu rzeczywistego 10 MHz.
Aby zająć się punktami po edycji:
Użyteczność lunety ogromnie wzrasta wraz z ceną. Po przejściu z lunety USB o wartości 200 USD na samodzielną nawet 500 USD otrzymasz olbrzymi wzrost funkcji i podstawowej funkcjonalności. Po co wydawać zaledwie 200 USD, skoro za trochę więcej można uzyskać prawdziwy zasięg? Teraz, gdy Chiny otworzyły wrota tanich, skutecznych lunet, nie ma powodu, aby chcieć zaoszczędzić 300 USD, co tylko frustruje cię później. „Fantazyjne” lunety posiadające te funkcje są obecnie tanie.
Tak, ograniczenie transferu danych, aby zapewnić tylko spójne dane o wartości około 60 Hz, będzie łatwiejsze dzięki USB, ale nadal nie jest to coś, co chcesz zrobić. Nie zapomnij o swoich klasach DSP - tylko pobieranie określonych danych ze strumienia sprowadza się do zdziesiątkowania. Po zdziesiątkowaniu musisz dodać filtry antyaliasingu. Kiedy to robisz, tracisz przepustowość. To sprawia, że twój zakres jest mniej przydatny - ograniczy twoje pasmo na wyświetlaczu w czasie rzeczywistym (i tylko w czasie rzeczywistym - tryby uruchomione byłyby w porządku) do znacznie mniejszej niż przepustowość twojego analogowego interfejsu. Zarządzanie aspektami przetwarzania sygnału oscyloskopu to trudna sprawa.
Wyraźny responsywny wyświetlacz? PC? Nie konsekwentnie. Niezależnie od tego, jak to robisz, musisz buforować dane. Jak powiedziałem wcześniej, USB nie gwarantuje, że Twoje dane zostaną przesłane. Powiem inaczej: USB nie jest przystosowane do twardego przesyłania danych w czasie rzeczywistym. Jasne, w przypadku wystarczająco małych ilości danych w dużych odstępach czasu możesz uzyskać dobrą wydajność, ale nie stałą wydajność. Użyjesz buforowania i raz na jakiś czas BĘDZIESZ spóźniał się z przesłaniem bufora w odpowiednim czasie. Następnie ekran przeskakuje, dane są nieaktualne itp. Itp. Przejrzyste i responsywne wyświetlacze w czasie rzeczywistym wymagają twardych łączy danych w czasie rzeczywistym, kropka.
Proste wyzwalanie - znów wracamy do kosztu vs. złożoności vs. responsywności. Aby uruchomić urządzenie w celu wykrycia stanów nieustalonych, urządzenie nie może być po prostu głupim potokiem danych, który nieodpowiedzialnie przesyła próbki przez USB. Musisz buforować, buforować, buforować próbki na urządzeniudopóki nie zobaczysz warunku wyzwalania. Oznacza to, że potrzebujesz pamięci i inteligencji urządzenia - dużego FPGA lub dużego mikrokontrolera. To zwiększa rozmiar i przestrzeń. Jeśli używasz FPGA, musisz zrównoważyć ilość logiki wyzwalania z potrzebą dużej ilości pamięci RAM na miejsce w buforze. Twój bufor jest mniejszy, niż byś chciał. Oznacza to, że masz niewielką ilość danych wokół punktu wyzwalania. Chyba że dodasz pamięć zewnętrzną - możesz zrobić więcej. To jednak zwiększa rozmiar i koszt urządzenia - z pewnością nie będzie to tylko sonda z podłączonym do niej kablem USB.
Miałbyś szczęście uzyskać przepustowość 100 MHz - zwykle 10 razy częstotliwość próbkowania jest uważana za minimalną wartość graniczną dla przepustowości. Więc jeśli masz częstotliwość próbkowania 1GS / s, która ledwo daje ci przepustowość 100 MHz. Nie można uzyskać więcej - fala prostokątna 200 MHz będzie wyglądać jak fala sinusoidalna 200 MHz. To jest do bani. To głupie - nie jest to poziom profesjonalny.
Twój inny zestaw punktów:
- 200 $? Jak się masz? Jaka jest lista części?
- Dobry zasięg odczytu szybkich sygnałów nie kosztuje tysięcy dolarów. Kosztują może tysiąc dolarów. 100 MHz jest dziecinnie proste w dziale lunety, a Twój pomysł nie spełni nawet tego poziomu odniesienia, a także lunety o wartości 1000 USD
- Tak, ze sposobu, w jaki to opisujesz, byłoby bardzo ograniczone. Techniczne aspekty nawet kilku wymagań, które masz na myśli, to bardzo ograniczone urządzenie.
- Nie byłoby to tak przydatne, jak luneta o wartości 1100 USD, którą kupiłem z analizatorem logicznym i pasmem analogowym 60 MHz. Wolałbym zapłacić za mój sprzęt testowy, który chowa się z celowo ograniczonymi zabawkami dla dzieci.
Żyjesz i umierasz na swoim sprzęcie testowym jako inżynier. Jeśli nie jesteś pewien, możesz mu zaufać, marnujesz swój czas. Biorąc pod uwagę brak ekspertyzy na temat szybkiej komunikacji, przetwarzania sygnałów i mocy wbudowanego przetwarzania (w układach FPGA lub mikrokontrolerach), nie postawiłbym na to, że sam to zaprojektujesz i nikt inny, kto udzielił odpowiedzi, jest niczym inne niż ambiwalentne.
Gdyby istniał lepiej ukierunkowany zestaw wymagań, które zaspokajałyby rzeczywistą potrzebę w społeczności, która nie została zaspokojona, to dostrzegłbym technicznie wykonalność, byłbym na pokładzie. Ale twoje niejasne wymagania nie wydają się zbadane. Musisz zrobić przegląd dostępnych opcji dla hobbystów - jakie lunety USB i standalony używają ludzie, jakie są ich mocne i słabe strony, i ustal, czy jakieś nisze nie są wypełnione. W przeciwnym razie to tylko fantazjowanie.