Bu bir bant genişliği ve gecikme sorununa denk geliyor. Basit bir sistem için, 1GS / s örnekleme oranı ve 10 bit A / D dönüştürücü ile 100 MHz bant genişliğine sahip bir prob olduğunu varsayalım (8 bit kapsamlarla ilgili kötü deneyimler yaşadım).
Diyelim ki minimum örnekleme penceresi olan 10ns - 100MHz sinüs dalgasının 1 döngüsü ve maksimum pencere (bu konuda size cömert olacağım) yarım saniyede PC'de gerçek zamanlı bir görüntü istiyorum. Başka bir deyişle, en düşük zaman ayarı 1ns / div gibi bir değer ve en yüksek değer ise .05s / div'dir. Ayrıca birkaç voltaj modu istiyorum - 100mV aralığı 20V'a kadar.
Bu ne tür veri hızları içeriyor?
1Gs / s * 10 bit / örnek = 10Gbits / s
Bunlar USB hızları değil. Ne münasebet. Ve ek yükü bile hesaba katmadım. Öncelikle, sadece bant genişliğiniz yok. Üstelik bu sadece bant genişliği değil. Gerçek zamanlı ekranınız için tutarlı olmanız gerekir. Her 10 nano saniyede bir uygulama katmanınıza 100 bit aktarmanız gerekir . Bu tür bir tutarlılık USB'den sağlanamaz. Aşırı talepleri olan bir cihaza hitap etmek için tasarlanmamıştır - bir otobüs olarak tasarlanmıştır. Ve otobüse ne zaman sahip olduğunuzu kontrol edemezsiniz - cihazlar sadece köledir. Ana bilgisayar, veri göndermeniz gerektiğinde başka bir cihazın konuşmasına izin veriyorsa verileriniz kaybolur.
Faul ağlıyor olabilirsiniz - neden bir kişi için 'gerçek zamanlı' 60Hz olduğunda gerçek zamanlı verileri bilgisayara aktarıyorsunuz? Yapmanız gereken tek şey ekranı güncellemekse kesinlikle bu kadar veriye ihtiyacınız yoktur. Siz hariç - ekranınız, topladığınız tüm numunelerin doğrusal bir kombinasyonudur. Ortalama, en küçük ortalama kare yaklaşık, kübik spline enterpolasyonu - önemli değil. Sadece bir demet nokta olmayan güzel bir ekran yapmak için, tüm verilerin çoğuna ihtiyacınız var ve bunları işlemden geçirmeniz gerekiyor. Herhangi bir tetikleme var mı? Hesaplamalar ana bilgisayarda - uygulama katmanında yapılmalıdır. Ne şekilde dilerseniz dileyin, lanet olası herhangi bir doğruluk için 1GS / s oranlarındaki gerçek zamanlı ekranlar için, büyüklük siparişlerini USB'nin işleyebileceğinden daha fazla veri aktarmanız gerekir ve bunu sizden daha güvenilir bir şekilde yapmanız gerekir.
Bunun için yollar nelerdir? Gerçek zamanlı görüntü yapmayın. Bazı USB kapsamları yalnızca tetiklenmiş modlar sunar. Tetikleme aygıt üzerinde işlenir ve bir tetikleyici bulunduğunda, veriler bir arabellekte toplanır. Arabellek dolduğunda, USB kapsamı yavaşça uygulamaya aktarır ve ardından uygulama bunu görüntüler. Bu, çok fazla kapsam kullanımı için yeterli, ancak gerçek zamanlı değil. Ve transfer - bu da biraz zaman alıyor. Bu elverişsiz. Ve genellikle sürücüler berbat. Kötü deneyimlerim olduğunu söyleyebilirsin.
Firewire'ın neden kapsamlar için kullanılmadığını hep merak ettim. USB'nin bazı baş ağrılarını önler. Eşler arası, eşzamanlı (tutarlı zamanlama) modları sunar ve nispeten yüksek bant genişliğidir. Bununla 10MHz gerçek zamanlı bir kapsam yapabilirsiniz.
Düzenlemeden sonra puanlarınızı adreslemek için:
Bir kapsamın kullanılabilirliği, fiyatla büyük ölçüde artar. 200 $ 'lık USB kapsamından 500 $' lık bağımsız bir kapsama geçtiğinizde, özelliklerde ve temel işlevlerde büyük artışlar elde edersiniz. Biraz daha fazla gerçek bir kapsam elde edebileceğinizde neden sadece 200 $ harcayasınız? Çin, ucuz, etkili kapsamların taşma kapılarını açtığına göre, sizi daha sonra hayal kırıklığına uğratacak 300 $ tasarruf etmek için çok az neden var. Bu özelliklere sahip 'süslü' kapsamlar günümüzde ucuz.
Evet, veri aktarımınızı yalnızca 60Hz değerinde tutarlı veriler sağlamak için sınırlamak USB ile daha kolay olacaktır, ancak bu yine de yapmak istediğiniz bir şey değildir. DSP sınıflarınızı unutmayın - yalnızca akıştaki belirli verileri almak, miktarını azaltmak anlamına gelir. Tahmin ettiğinizde kenar yumuşatma filtreleri eklemeniz gerekir. Bunu yaptığınızda, bant genişliğini kaybedersiniz. Bu, kapsamınızı daha az kullanışlı hale getirir - gerçek zamanlı ekrandaki bant genişliğinizi (ve yalnızca gerçek zamanlı tetiklenen modlar iyi olur) analog ön ucunuzun bant genişliğinden çok daha azla sınırlar. Bir osiloskopun sinyal işleme yönlerini yönetmek zor bir iştir.
Duyarlı ekran temizlensin mi? PC? Tutarlı değil. Bunu nasıl yaptığınızdan bağımsız olarak, verileri arabelleğe almanız gerekir. Daha önce söylediğim gibi, USB verilerinizin ne zaman geçeceğini garanti etmez. Farklı bir şekilde söyleyeceğim: USB, sabit gerçek zamanlı veri aktarımına uygun şekilde tasarlanmamıştır. Elbette, büyük aralıklarla yeterince küçük miktarlarda veri için iyi bir performans elde edebilirsiniz, ancak tutarlı bir performans elde edemezsiniz. Arabelleğe almayı kullanacaksınız ve ara sıra ara belleğinizi zamanında aktarmayı özleyeceksiniz. Ardından ekranınız atlanır, veriler eski vb. Olur. Net ve duyarlı gerçek zamanlı ekranlar, sabit gerçek zamanlı veri bağlantıları gerektirir.
Basit tetikleme - yine, maliyete karşı karmaşıklığa karşı duyarlılığa geri döneriz. Geçici akımları tespit etmek için cihazda tetikleme yapmak için cihazınız sadece örnekleri USB üzerinden sorumsuzca aktaran aptal bir veri borusu olamaz. Cihazda tampon örnekleri, tamponlar, tampon örnekleritetikleme durumunuzu görene kadar. Bu, cihazınızda bellek veya zekaya ihtiyacınız olduğu anlamına gelir - büyük bir FPGA veya büyük bir mikro denetleyici. Bu boyut ve alan katıyor. Bir FPGA kullanıyorsanız, tetikleyici mantık miktarını arabellek alanı için çok fazla RAM gereksiniminizle dengelemeniz gerekir. Bu nedenle, arabelleğiniz zaten olmasını istediğinizden daha küçük. Bu, tetik noktanızın çevresinde minik miktarda veri alacağınız anlamına gelir. Harici bellek eklemediğiniz sürece - daha fazlasını yapabilirsiniz. Bu, cihazınızın boyutunu ve maliyetini artırır - bu kesinlikle bir USB kablosuna sahip bir prob olmayacaktır.
100MHz bant genişliği elde ettiğiniz için şanslısınız - genellikle örnekleme oranının 10 katı bant genişliği için minimum kesme olarak kabul edilir. Dolayısıyla, 100MHz bant genişliğini zorlukla elde eden 1GS / s örnekleme oranınız varsa. Daha fazlasını elde edemezsiniz - 200MHz kare dalga 200MHz sinüs dalgasına benzeyecektir. Bu berbat. Bu aptalca - profesyonel seviyeye yakın bir yerde değil.
Diğer puan kümeniz:
- $200 dolar? Nasıl anlıyorsun? Parça listesi nedir?
- Yüksek hızlı sinyalleri okumak için iyi kapsamlar binlerce dolara mal olmaz. Belki bin dolara mal oluyorlar. 100MHz, kapsam departmanında çocuk oyuncağıdır ve fikriniz bu karşılaştırmayı ve 1000 dolarlık bir kapsamı bile karşılamayacaktır.
- Evet, tarif ettiğiniz şekilde gerçekten çok sınırlı olurdu. Sahip olduğunuz birkaç gereksinimin bile teknik yönleri çok sınırlı bir cihaz demektir.
- Bir mantık analizörü ve 60MHz analog bant genişliği ile satın aldığım 1100 dolarlık kapsam kadar kullanışlı olmazdı. Kasıtlı olarak sınırlı çocuk oyuncakları ile uğraşan test ekipmanım için ödeme yapmayı tercih ederim .
Mühendis olarak test ekipmanlarınızla yaşar ve ölürsünüz. Eğer emin değilseniz, zamanınızı boşa harcıyorsunuz demektir. Yüksek hızlı iletişim, sinyal işleme ve gömülü işlemenin gücü (FPGA'larda veya mikrodenetleyicilerde) hakkında gösterdiğiniz uzmanlık eksikliği göz önüne alındığında, kendiniz tasarlamaya hazır olduğunuzdan bahsetmezdim ve cevaplanan hiç kimse bir şey değildir kararsız olmaktan başka.
Toplulukta hizmet edilmeyen gerçek bir ihtiyaca çarpan daha iyi hedeflenmiş bir dizi gereksinim olsaydı, teknik olarak uygulanabilir olduğunu görebiliyordum. Ancak belirsiz gereksinimleriniz araştırılmış gibi görünmüyor. Hobiler için orada mevcut seçeneklerin bir anketini yapmalısınız - insanlar hangi USB kapsamlarını ve bağımsızlarını kullanıyor, güçlü ve zayıf yanları nelerdir ve herhangi bir nişin doldurulmadığını belirleyin. Aksi takdirde bu sadece hayalidir.