Koneksi bus SPI - untuk loop atau tidak untuk loop?

9

Saya punya pertanyaan tentang koneksi fisik bus SPI.

Saya memiliki master SPI (perangkat PIC32) dan sejumlah budak (dalam hal ini perangkat PIC16). Saya hanya menulis ke budak, dan protokol mengatur yang mana melakukan apa kapan, jadi tidak ada sinyal MISO atau SS yang perlu dikhawatirkan dan saya hanya sejajar dengan data dan garis waktu untuk semua budak. Panjang total bus tidak lebih dari beberapa kaki (katakanlah 60cm) dan saya menjalankan SCK pada 8MHz.

Sekarang, penempatan fisik perangkat slave (yang sebenarnya adalah node antarmuka pada papan lain) adalah sedemikian rupa sehingga loop SPI segera kembali ke master sehingga dimungkinkan untuk menghubungkan kedua ujung masing-masing loop ke MOSI dan SCK masing-masing.

Diagram berikut menunjukkan apa yang saya maksud - saya sedang berbicara tentang koneksi bertitik merah - dan pertanyaannya adalah: apakah itu hal yang baik untuk melakukan ini atau tidak?

Bus SPI

Saya memiliki kekuatan dan tanah melakukan perjalanan yang serupa, dan ini jelas - dan terbukti - berguna karena meminimalkan penurunan tegangan yang disebabkan oleh para budak. Namun, saya tidak tahu apakah itu hal yang baik atau buruk untuk melakukan hal yang sama dengan garis sinyal ini. Haruskah saya sebaliknya membiarkan semacam terminasi - resistor ke tanah (?) - atau mungkin resistor secara seri untuk menekan refleksi, atau apa?

Saya sudah mencoba keduanya dengan dan tanpa menghubungkan titik-titik, sehingga untuk berbicara, dan tidak ada perbedaan fungsional dan tidak ada perubahan yang dapat saya lihat pada ruang lingkup, tapi mungkin jika itu sedikit lebih panjang dari 60cm atau sedikit lebih cepat dari 8Mhz, Saya punya masalah? Jadi saya mencari saran tentang apa yang harus dilakukan yang akan membuat saya keluar dari masalah jika ada perubahan.

Meskipun pertanyaan ini sangat mengganggu saya untuk bus 60cm SPI @ 8Mhz, apakah ada prinsip umum untuk situasi lain? Mungkin pull-up di bus I2c harus ditempatkan berbeda?

Tautan apa pun ke bahan bacaan yang sesuai akan disambut baik - Saya belum menemukan apa pun yang mencakup pertanyaan khusus ini.

Roger Rowland
sumber
Saya tidak yakin masalah apa yang Anda coba selesaikan dengan koneksi itu
PlasmaHH
@PlasmaHH Yah, itu benar-benar pertanyaan saya - Saya tidak punya masalah untuk dipecahkan tetapi saya memiliki opsi itu. Saya tahu itu membantu dengan saluran listrik, saya tidak tahu apakah itu membantu dengan saluran sinyal. Apakah ini pertanyaan bodoh? Mungkin saya terlalu banyak berpikir.
Roger Rowland
Saya akan menambahkan bahwa idealnya, PCB 4-layer dan pesawat Vdd dan Vss khusus akan menjadi ide yang bagus di sini karena beberapa alasan, bersama dengan tutup bypass khusus yang sangat dekat dengan masing-masing perangkat.
rdtsc
1
IMO Saya akan melakukan koneksi yang Anda usulkan dalam warna merah dan menyingkirkan koneksi dari slave 3 ke slave 4.
lucas92

Jawaban:

9

Loop kembali? TIDAK. Jika jalur tersebut cukup panjang sehingga membutuhkan penghentian (lebih lama dari waktu penelitian * c / 10 atau lebih), maka gerakkan cukup kuat untuk mengakhiri terminasi dengan benar, dan cocokkan dengan garis dan terminasi dengan cukup baik. Jika jalurnya cukup pendek sehingga tidak perlu terminasi, maka tidak perlu konduktivitas 'ekstra' yang tampaknya Anda cari dengan koneksi balik yang dililitkan.

Sebuah resistor seri? TIDAK. Gaya penghentian sumber-ujung hanya bekerja untuk penerima titik tunggal di akhir baris. Pada titik-titik sebelumnya pada saluran, Anda mendapatkan bentuk gelombang terburuk untuk penerima Anda, yang merupakan langkah ke setengah tegangan, diikuti oleh tempat tinggal, diikuti oleh langkah lain ke tegangan penuh.

Neil_UK
sumber
Ok terima kasih - dapatkah Anda menjelaskan apa yang Anda maksud dengan "mengendarainya dengan cukup kuat" ? Maksud Anda bukan langsung dari PIC tetapi melalui MOSFET atau sesuatu? Juga, untuk "menghentikannya dengan benar" , maksud Anda resistor ke ground? Saya mengerti titik naik kembali waktu daripada frekuensi jam menentukan kebutuhan untuk penghentian, dapatkah Anda menunjukkan perhitungan penuh aturan praktis? Naik waktu di unit apa? Apa c/10?
Roger Rowland
@RogerRowland 'cukup kuat' sehingga mengembangkan tingkat logika yang baik ke dalam beban terminasi. Output uC mungkin cukup kuat, mungkin tidak, tergantung pada terminasi dan kekuatan drive-nya. Gunakan buffer, atau dua secara paralel jika tidak mendapat cukup arus drive. 'Benar' berarti impedansi resistif shunt. Apakah itu ke ground, atau ke mid rail, atau AC coupled, tergantung pada sistem. Jika Anda pernah menyatakan 3-driver, maka itu harus ke tanah untuk mempertahankan tingkat logika yang valid. Kalau tidak, terminasi mid rail memuat pengemudi lebih sedikit.
Neil_UK
@RogerRowland naik waktu dalam hitungan detik, c kecepatan cahaya dalam m / detik, jadi risetime * c dalam meter, / 10 adalah sedikit handwavy untuk 'fraksi yang tidak signifikan dari kehadiran saat ini simulataneuosly pada garis sinyal'
Neil_UK
Terima kasih sekali lagi Neil, ini sangat berguna! Saya pikir saya akan mendapat manfaat dengan melakukan beberapa eksperimen untuk memastikan apa yang Anda katakan meresap - mungkin akhir pekan yang hujan akan dihabiskan dengan baik.
Roger Rowland
3

Masalah yang saya lihat dengan topologi loop adalah sulit untuk menempatkan terminator dengan benar untuk menekan refleksi. ini tidak masalah pada 8MHz, tetapi mungkin menjadi masalah pada frekuensi yang lebih tinggi atau dengan saluran yang lebih panjang.

Satu-satunya kasus yang saya lihat di mana garis putus-putus bisa membantu adalah ketika penundaan propagasi dari master ke SLAVE 6tidak dapat diterima. Dalam hal ini, Anda akan menghubungkan garis putus-putus, tetapi memutus loop di suatu tempat di tengah (katakanlah, antara SLAVE 3dan SLAVE 4), dan mengakhiri setiap cabang secara independen.

Dmitry Grigoryev
sumber
2

Dengan sinyal cepat atau garis panjang, pantulan sinyal menjadi masalah. Dalam kasus tersebut, Anda harus menghentikan jalur dengan benar dengan meletakkan resistor yang menghubungkan ujung garis dan tanah (bukan awal garis). Pengakhiran membuat garis "terlihat tak terbatas secara listrik", sehingga sinyal tidak kembali. Pemutusan terkadang juga membutuhkan elemen LC untuk melawan impedansi reaktif.

Namun, untuk kasus Anda, terminasi tidak diperlukan (saluran pendek untuk kecepatan sinyal Anda, dengan asumsi Anda tidak beroperasi di lingkungan yang bising secara elektrik). Itu sebabnya Anda tidak melihat perbedaan. Ini juga merupakan praktik desain yang buruk untuk mengulang sinyal Anda. Melakukannya membuat loop sinyal, menimbulkan noise di sirkuit Anda (dan loop di kedua arah). Ini juga memudahkan menangkap noise RF di saluran Anda.

Selain itu, biasanya juga buruk untuk loop ground dan saluran listrik. Digital switching noise dan ground loop juga ada, dan mereka dapat memiliki dampak dramatis pada sirkuit analog. Jika perlu, Anda dapat menggunakan garpu Y (tidak ada koneksi di ujung) untuk mengurangi penurunan tegangan. Jika itu tidak cukup, gunakan jejak yang lebih luas (jejak yang lebih luas-> lebih sedikit resistensi-> lebih sedikit drop tegangan).

Ronan Paixão
sumber