Saya sedang membaca probe lingkup USB - permintaan komentar dan ide , dan itu membuat saya berpikir. Yang saya benar-benar suka adalah osiloskop berkinerja sangat tinggi, yang biayanya $ 10.000 atau lebih. Tentunya banyak orang lain juga akan menyukainya. Dan tentunya, dengan keahlian yang tersedia di situs ini, harus mungkin untuk merancang dan membuka sumber.
Inilah ide saya:
- Ini akan menjadi probe lingkup genggam dengan USB memimpin keluar.
- Baterai dioperasikan untuk mengisolasinya dari daya USB.
- Tahap input adalah op-amp kecepatan tinggi, seperti THS3201DBVT ?
- ADC adalah sesuatu seperti ASD5010 , yaitu 1 Gs / s dan bandwidth input 650 MHz.
- FPGA untuk menangani data 32-bit yang keluar, melakukan pemicunya, dan mengemasnya ke USB.
- Perangkat lunak sumber terbuka untuk dijalankan pada PC.
Apakah ini tugas orang bodoh? Apa yang saya lewatkan?
Ditambahkan, lebih detail dalam menanggapi jawaban:
- Ruang lingkup ini tidak akan mampu bersaing dengan ruang lingkup mewah mahal di luar sana. Tujuan utamanya adalah untuk memiliki sesuatu yang memungkinkan untuk memeriksa sinyal kecepatan tinggi, dengan biaya kurang dari $ 200 bagi seseorang untuk membuat sendiri.
- Bandwidth USB: Ini bukan ruang lingkup analog, juga bukan LeCroy yang mewah . Namun, USB cukup mampu mentransfer sampel 2k pada 60 Hz. Ini masih membuatnya sangat berguna, meskipun mungkin tidak mampu menangkap peristiwa sementara di antara frame-frame tersebut.
- Tampilan responsif yang jelas. Ya, monitor PC jelas. Lebih baik daripada hampir semua ruang lingkup di pasar. Jadi kejelasan dan ukuran bukanlah masalah. Responsif? Selama layar dapat diperbarui pada 60 Hz, saya pikir itu cukup responsif.
- Memicu: Saya membayangkan pemicu tingkat sederhana terjadi pada perangkat. Sekali lagi, itu tidak akan mampu bersaing dengan lingkup mewah, tetapi ingat: ini seharusnya menjadi perangkat $ 200.
- Seharusnya tidak memiliki bandwidth 1 GHz. Di mana saya mengatakan itu? Tetapi tentunya bisa memiliki bandwidth lebih dari 100 MHz?
Poin yang dibawa pulang:
- Ini adalah perangkat $ 200.
- Tujuan utama perangkat ini adalah memungkinkan untuk melihat sinyal kecepatan tinggi tanpa menghabiskan $ 10.000.
- Akan ada banyak hal yang tidak dapat dilakukan.
- Tentunya hal seperti ini akan sangat berguna bagi orang-orang di sini.
- Tentunya, dengan keahlian yang tersedia di situs ini, kita dapat mewujudkannya?
usb
oscilloscope
high-frequency
Roket
sumber
sumber
Jawaban:
Ini bermuara pada masalah bandwidth dan latensi. Untuk sistem yang sederhana mari kita asumsikan satu probe dengan bandwidth 100 MHz dengan sampling rate 1GS / s dan konverter A / D 10-bit (Saya punya pengalaman buruk dengan cakupan 8-bit).
Saya ingin tampilan real-time pada PC dengan jendela pengambilan sampel minimum katakanlah 10ns - 1 siklus gelombang sinus 100MHz dan jendela maksimum (saya akan bermurah hati kepada Anda dalam hal ini) setengah detik. Dengan kata lain, pengaturan waktu terendah adalah sekitar 1ns / div dan yang tertinggi adalah 0,05 / div. Saya juga ingin beberapa mode tegangan - kisaran 100mV hingga 20V katakanlah.
Jenis kecepatan data apa yang dilibatkan?
1Gs / s * 10 bit / sampel = 10Gbits / s
Itu bukan kecepatan USB. Jauh dari itu. Dan saya bahkan tidak memperhitungkan biaya overhead. Pertama, Anda hanya tidak memiliki bandwidth. Dan itu bukan hanya bandwidth saja. Untuk tampilan waktu nyata Anda, Anda harus konsisten. Anda perlu mentransfer 100 bit ke lapisan aplikasi Anda setiap 10 nano detik. Konsistensi semacam itu tidak dapat diperoleh dari USB. Itu tidak dirancang untuk memenuhi satu perangkat dengan tuntutan berlebihan - itu dirancang sebagai bus. Dan Anda tidak dapat mengontrol kapan Anda memiliki bus - perangkat hanya budak. Jika tuan rumah memungkinkan perangkat lain berbicara ketika Anda perlu mengirim data, data Anda hilang.
Anda mungkin menangis busuk - mengapa mentransfer data real-time ke komputer ketika 'real-time' untuk seseorang adalah 60Hz? Jika semua yang perlu Anda lakukan adalah memperbarui tampilan Anda tentu tidak membutuhkan banyak data. Kecuali Anda melakukannya - tampilan Anda adalah kombinasi linear dari semua sampel yang telah Anda kumpulkan. Rata-rata, kurang lebih rata-rata kuadrat, interpolasi spline kubik - tidak masalah. Untuk membuat tampilan cantik yang bagus yang bukan hanya sekelompok titik, Anda paling membutuhkan semua data itu dan Anda harus mempostingnya. Adakah pemicu? Perhitungan harus dilakukan pada host - di lapisan aplikasi. Tidak peduli bagaimana cara Anda mengirisnya, untuk tampilan waktu nyata pada tingkat 1GS / s untuk akurasi apa pun yang berharga, Anda harus mentransfer pesanan yang besarnya lebih banyak data daripada yang dapat ditangani oleh USB dan Anda harus melakukannya dengan lebih andal daripada Anda '
Apa cara mengatasi ini? Jangan lakukan tampilan waktu nyata. Beberapa lingkup USB hanya menawarkan mode yang dipicu. Pemicu ditangani pada perangkat dan ketika pemicu ditemukan, data dikumpulkan dalam buffer. Ketika buffer terisi, ruang lingkup USB secara perlahan mentransfernya ke aplikasi dan kemudian aplikasi menampilkannya. Itu sudah cukup untuk banyak penggunaan ruang lingkup, tapi itu tidak real-time. Dan transfer - itu butuh waktu juga. Ini tidak nyaman. Dan biasanya drivernya payah. Bisa dibilang saya punya pengalaman buruk.
Saya selalu bertanya-tanya mengapa Firewire tidak digunakan untuk lingkup. Ini menghindari beberapa sakit kepala USB. Ini peer-to-peer, menawarkan mode isochronous (timing yang konsisten) dan bandwidth yang relatif tinggi. Anda mungkin dapat membuat lingkup real-time 10MHz atau lebih dengan itu.
Untuk mengatasi poin Anda setelah diedit:
Kegunaan ruang lingkup naik sangat dengan harga. Ketika Anda melakukan lompatan dari lingkup USB $ 200 ke bahkan $ 500 mandiri Anda mendapatkan peningkatan luar biasa dalam fitur dan fungsionalitas dasar. Mengapa menghabiskan hanya $ 200 padahal untuk sedikit lebih Anda bisa mendapatkan ruang lingkup nyata? Sekarang setelah Cina membuka pintu gerbang ruang lingkup murah dan efektif, ada sedikit alasan untuk ingin menghemat $ 300 yang hanya akan membuat Anda frustrasi nanti. Lingkup 'mewah' yang memiliki fitur-fitur ini murah saat ini.
Ya, membatasi transfer data Anda hanya untuk memberikan sesuatu yang konsisten dengan nilai sekitar 60Hz akan lebih mudah dengan USB, tetapi itu masih bukan sesuatu yang ingin Anda lakukan. Jangan lupa tentang kelas DSP Anda - hanya mengambil data tertentu dari jumlah aliran hingga penipisan. Ketika Anda memusnahkan, Anda harus menambahkan filter antialiasing. Ketika Anda melakukannya, Anda kehilangan bandwidth. Ini membuat ruang lingkup Anda kurang berguna - itu akan membatasi bandwidth Anda pada tampilan real-time (dan hanya untuk real-time - mode yang dipicu akan baik-baik saja) menjadi jauh lebih sedikit daripada bandwidth front-end analog Anda. Mengelola aspek pemrosesan sinyal dari sebuah osiloskop adalah bisnis yang rumit.
Hapus tampilan responsif? PC? Tidak konsisten. Terlepas dari bagaimana Anda melakukan ini, Anda perlu melakukan buffer data. Seperti yang saya katakan sebelumnya, USB tidak menjamin ketika data Anda melewati. Saya akan mengatakannya secara berbeda: USB tidak dirancang untuk mengakomodasi transfer data real-time yang sulit. Tentu, untuk jumlah data yang cukup kecil pada interval besar Anda mungkin mendapatkan kinerja yang baik, tetapi tidak kinerja yang konsisten. Anda AKAN menggunakan buffering dan sesekali Anda AKAN akan kehilangan mentransfer buffer Anda secara tepat waktu. Kemudian tampilan Anda dilewati, data basi, dll. Dll. Tampilan real-time yang jelas dan responsif membutuhkan tautan data real-time yang keras, titik.
Pemicu sederhana - sekali lagi, kami kembali ke biaya vs kompleksitas vs. responsif. Untuk melakukan pemicu pada perangkat untuk mendeteksi transien, perangkat Anda tidak hanya berupa pipa data bodoh yang mentransfer sampel secara tidak bertanggung jawab melalui USB. Anda harus melakukan buffer, buffer, buffer sampel pada perangkatsampai Anda melihat kondisi pemicu Anda. Itu berarti Anda membutuhkan memori dan kecerdasan pada perangkat Anda - baik FPGA besar atau mikrokontroler besar. Itu menambah ukuran dan ruang. Jika Anda menggunakan FPGA Anda harus menyeimbangkan jumlah logika pemicu dengan kebutuhan Anda akan banyak RAM untuk ruang buffer. Jadi buffer Anda lebih kecil dari yang Anda inginkan. Itu berarti Anda mendapatkan sejumlah kecil data di sekitar titik pemicu Anda. Kecuali Anda menambahkan memori eksternal - maka Anda dapat melakukan lebih banyak. Itu meningkatkan ukuran dan biaya perangkat Anda - ini tentunya tidak hanya berupa probe dengan kabel USB yang terpasang padanya.
Anda akan beruntung mendapatkan bandwidth 100MHz - biasanya 10x laju pengambilan sampel dianggap sebagai cutoff minimum untuk bandwidth. Jadi jika Anda memiliki laju sampling 1GS / s yang hampir tidak membuat Anda bandwidth 100MHz. Anda tidak bisa mendapatkan lebih banyak - gelombang persegi 200MHz akan terlihat seperti gelombang sinus 200MHz. Itu menyebalkan. Itu bodoh - tidak ada yang mendekati tingkat profesional.
Kumpulan poin Anda yang lain:
Anda hidup dan mati dengan peralatan uji Anda sebagai seorang insinyur. Jika Anda tidak yakin, Anda bisa percaya bahwa Anda membuang-buang waktu. Mengingat kurangnya keahlian yang Anda tunjukkan tentang komunikasi berkecepatan tinggi, pemrosesan sinyal, dan kekuatan pemrosesan tertanam (dalam FPGA atau mikrokontroler), saya tidak ingin Anda merancang sendiri dan tidak ada orang lain yang menjawab. selain ambivalen.
Jika ada serangkaian persyaratan yang ditargetkan dengan lebih baik yang memenuhi kebutuhan nyata di masyarakat yang tidak dilayani, bahwa saya bisa melihat secara teknis layak saya akan berada di atas. Tetapi persyaratan samar Anda tampaknya tidak diteliti. Anda perlu melakukan survei terhadap opsi yang tersedia di luar sana untuk penggemar - apa lingkup dan standalone USB yang digunakan orang, apa kekuatan dan kelemahan mereka, dan menentukan apakah ada ceruk yang tidak diisi. Kalau tidak, ini hanya khayalan.
sumber
Anda tidak ingin itu dalam format probe genggam, karena cakupan saluran tunggal tidak terlalu berguna. Biaya tambahan 2 saluran (bahkan jika Anda mux ADC) adalah persentase tambahan biaya kecil, tetapi peningkatan besar dalam kegunaan.
Kecuali jika Anda ingin menarik lebih dari 500mA, tidak ada alasan untuk menggunakan baterai karena Anda dapat memiliki konverter DC-DC yang terisolasi. Namun mendapatkan bandwidth tinggi di penghalang isolasi adalah nontrivial.
sumber
Ada beberapa masalah di sini. Jika kami menganggap standar referensi kami 1GHz lingkup analog (seperti Tektronix yang baik) maka cakupan yang diusulkan ini akan menderita dengan cara berikut:
1) ASD5010 adalah konverter 8 bit. 8 bit hampir tidak cukup untuk dapat bersaing dengan ruang lingkup analog yang baik.
2) Jangan mengacaukan laju sampling dengan bandwidth analog. Untuk chip yang Anda pilih bandwidth analog yang setara mungkin akan lebih dekat ke 100 MHz dari 1 GHz.
Ini bukan untuk mengatakan bahwa tidak mungkin untuk membangun ruang lingkup seperti itu, orang dapat dengan jelas membeli satu pertemuan spesifikasi ini secara komersial. Hanya sepele untuk mencapai bandwidth 1 GHz, dan teknik khusus serta komponen yang lebih baik akan diperlukan.
sumber
8bit ADC cukup umum di osiloskop, namun teknik menggunakan ADC sedikit berbeda. Seperti yang telah saya lihat beberapa lingkup internal, kasus yang umum adalah menggunakan 4 chip ADC, masing-masing memiliki clock fase 90deg, sehingga Anda mendapatkan 4x sampel per satu siklus clock dan itulah mengapa frek clk cukup rendah, tetapi bandwidth data tinggi. Bagaimanapun, proyek seperti itu akan berakhir dengan lebih banyak pemborosan uang daripada membeli lingkup baru :-) Namun, ini bisa menjadi praktik yang baik untuk belajar mandiri. OTOH, pikirkan sisi analog dari ruang lingkup. Bagian itu sangat sulit dan sangat sulit untuk dilakukan.
sumber
Masalah lain:
perlindungan : pasti Anda tidak ingin merusak waktu pertama Anda memasukkan 20-30 V ke input;
kalibrasi : bahkan pada akurasi 8-bit, Anda masih harus mengontrol kesalahan dalam 1/256 = 0,4% secara keseluruhan; tidak sepele dengan komponen standar;
noise filtering : itu harus dilindungi dan difilter, dan itu tidak cukup karena FPGA juga akan menghasilkan noise, jadi Anda harus memisahkan domain analog dan digital.
Bagaimanapun, tentang koneksi USB, saya pikir lebih fungsional untuk memproses data secara internal, dan menghubungkannya langsung ke layar.
sumber