Saya ingin membuat osiloskop USB. Saya membaca tentang berbagai jenis transfer USB . Jenis transfer mana yang terbaik untuk mentransfer sampel ADC yang dikumpulkan dari osiloskop USB ke PC?
Berikut adalah beberapa temuan saya. Harap perbaiki saya dan juga akan lebih baik jika ada yang menyarankan jenis transfer yang baik.
- Transfer isochronous - Kemungkinan hilangnya data. Tidak bagus untuk osiloskop karena setiap item data berharga. Berapa banyak data yang bisa hilang?
- Mode interupsi - Saya tidak tahu apakah itu akan membanjiri koneksi USB
- Mode massal - Tampaknya yang terbaik bagi saya karena tidak ada kehilangan data
- Kontrol transfer - tidak cocok karena tidak dimaksudkan untuk mentransfer data
usb
oscilloscope
robomon
sumber
sumber
Jawaban:
Transfer massal tidak kehilangan data, tetapi mereka tidak memiliki bandwidth minimum yang dijamin. (Di sisi lain, mereka dapat mencapai kecepatan yang lebih tinggi, karena mereka dapat menggunakan semua bandwidth yang sebenarnya tidak digunakan oleh transfer lain.)
Apa yang terjadi ketika transfer data osiloskop Anda tertunda (baik karena kesalahan, atau karena perangkat lain), dan data baru menumpuk? Apakah Anda menghentikan perangkat sampai data lama ditransmisikan, atau apakah Anda membuang data lama untuk dapat mengirimkan data saat ini?
Transfer isochronous dirancang untuk data 'real-time'. Anda tidak punya pilihan tentang penanganan kesalahan, tetapi bandwidth Anda dicadangkan di bus.
sumber
Pertanyaannya hampir sepenuhnya independen dari penggunaan Anda sebagai osiloskop, dan sepenuhnya diatur oleh jenis komunikasi yang Anda minta USB lakukan. Sebagai contoh:
Setelah Anda tahu jenis data apa yang Anda transmisikan, dan Kualitas Layanan (QoS) menyatakan bahwa data harus sampai di bawah, maka Anda dapat memutuskan mekanisme transfer USB mana yang harus dilakukan. Anda akan tahu bahwa Anda siap untuk membuat keputusan ini ketika kata "osiloskop" tidak lagi diperlukan untuk menggambarkan data dan QoS yang Anda butuhkan. Maka Anda tahu itu dalam kata-kata yang cukup objektif untuk mulai mengatasi masalah ini.
sumber
Untuk osiloskop, bandwidth transfer adalah parameter yang ingin Anda maksimalkan. Transfer massal dirancang khusus untuk bandwidth tinggi, sehingga merupakan pilihan yang tepat. Sementara transfer isochronous dan interrupt memberi batasan pada latensi, mereka hanya ditujukan untuk aliran data bandwidth rendah hingga menengah.
sumber
Cukup gunakan transfer massal. Osiloskop sebenarnya bukan perangkat kecepatan data tinggi. Kecuali Anda berencana membuat desain tipe fosfor digital, osiloskop sebenarnya hanyalah jendela ke bagian gelombang yang sangat kecil. Sebagai contoh, katakanlah Anda ingin menampilkan 1000 piksel horizontal dan menyegarkan tampilan sekitar 30Hz. Jika sampel masing-masing 8-bit (ini khas) dan ada dua saluran, Anda hanya melihat 60.000 byte / detik. USB kecepatan penuh dapat melakukan sekitar 1.000.000 byte / detik, sehingga Anda menggunakan kurang dari 6% kapasitas throughput bus. Itu memberi banyak waktu untuk membiarkan mode transfer massal melakukan tugasnya (memperbaiki kesalahan, mengatasi lalu lintas bus lain), dan sepertinya Anda tidak akan pernah menemukan konfigurasi bus kehidupan nyata yang tidak akan dapat mengalokasikan Anda cukup bandwidth untuk data sebanyak itu.
sumber