Masalah apa yang bisa terjadi saat merantai 40 register geser?

16

Saya berencana melakukan chaining bersama register geser 40 x 74HC595 . Seluruh rantai 74HC595 akan dikontrol oleh mikrokontroler 5 V, yang akan menghasilkan SDI, CLOCK&LATCH sinyal.

Setiap register geser dan mikrokontroler akan memiliki PCB sendiri, seperti yang diilustrasikan dalam diagram di bawah ini:

diagram

Karena kendala mekanis, jarak antara masing-masing register geser adalah sekitar 30 cm (12 in), sehingga sinyal kontrol akan bergerak sepanjang jarak aprox. 12 m (40 kaki). Selain itu, seluruh sistem akan dipasang di lingkungan yang sangat bising (dekat lampu neon, kabel listrik, dll.)

Kekhawatiran saya adalah bahwa sinyal kontrol akan sangat bising dan register shift mungkin menampilkan hal-hal yang salah. Saya sedang memikirkan:

  • Menggunakan buffer IC pada setiap papan, untuk buffer sinyal kontrol. Mana yang akan Anda rekomendasikan?
  • Menggunakan kabel berpelindung di antara papan untuk sinyal
  • Turunkan CLOCKfrekuensi sebanyak mungkin. Saya hanya perlu memperbarui konten register beberapa kali sehari.

Apakah solusi di atas adalah hal yang baik untuk dilakukan? Apa lagi yang bisa saya lakukan untuk menjaga kebisingan (potensial) di kabel sinyal menjadi minimum?

m .lin
sumber
3
Ini kedengarannya seperti kandidat yang luar biasa untuk CPLD menggantikan 40 register geser.
Joel B
2
@ JoelB Mungkin terdengar cocok untuk CPLD, tetapi itu berarti memiliki 320 (= 40 * 8) sinyal dari papan utama (CPLD) ke semua tempat. Akan sangat sulit untuk menginstal, dalam kasus saya, di lingkungan itu; dan itu akan sangat sulit untuk dipertahankan. Plus, sinyalnya, meski lebih pendek, mereka tetap akan mengalami noise.
m .lin
1
@ Joel - Digikey hanya mencantumkan beberapa CPLD dengan 320 I / Os, dan semuanya BGA. Mereka lebih mahal dari 40 '595s juga, dan seperti m.lin mengatakan Anda tidak memiliki keuntungan dari sinyal yang didistribusikan. Dari sudut pandang logis, ini adalah pekerjaan yang sempurna untuk CPLD, dari yang kurang praktis.
stevenvh
2
@ m.Alin - Anda sepenuhnya benar. Saya baru saja membaca 40 register geser dan mengetik CPLD. Setelah membaca pertanyaan dengan seksama, bagaimana Anda melakukannya masuk akal.
Joel B

Jawaban:

14

Gunakan buffer pemicu Schmitt pada input setiap papan. Mereka akan membersihkan sinyal sehingga kebisingan tidak akan memberikan pulsa palsu pada jam, misalnya. The 74LVC3G17 adalah tiga non-pembalik penyangga.

Juga, berikan sinyal buffered ke papan berikutnya. Kalau tidak, semua input akan paralel dan Anda dapat melebihi kipas dari mikrokontroler mengemudi (saya terutama memikirkan beban kapasitif total). Rantai daisy sinyal clock dan latch akan memberikan penundaan riak di seluruh rantai, tetapi data akan melakukannya juga, dan Anda berencana untuk tetap menggunakan kecepatan rendah.

stevenvh
sumber
1
@ m.Alin - Ya, tahap push-pull akan baik-baik saja. Tapi saya akan sangat merekomendasikan buffer, tidak hanya untuk kemampuan drive, tetapi terutama untuk histeresis pemicu Schmitt , yang akan menghindari pulsa clock palsu yang disebabkan oleh kebisingan di sekitar ambang pintu.
stevenvh
2
@ Saad - Maksud Anda buffer mengarahkan sinyal ke kabel? Yang baik adalah bahwa itu akan memberikan impedansi rendah yang mengurangi kebisingan. Tetapi jika akan ada suara di sisi penerima Anda tidak dapat berbuat apa-apa di sisi pengirim. Jadi itu adalah penerima yang membutuhkan kekebalan kebisingan yang baik, yang disediakan oleh pemicu Schmitt.
stevenvh
1
@ Saad - Ya, tetapi dalam kasus ini tampaknya berlebihan: kabelnya hanya 30 cm panjang, dan Anda sudah memiliki repeater / buffer di setiap papan.
stevenvh
1
@stevenvh Ya, saya berbicara secara umum. Posting Anda memiliki banyak informasi dan saya hampir selalu belajar sesuatu yang baru! Dalam hal ini, saya memiliki buffer di papan pengontrol yang terhubung ke kabel yang menghubungkan ke 'papan anak'. Saya tidak berharap banyak kebisingan, jadi saya mungkin tetap dengan pengaturan saya. Saya hanya punya buffer di sana sehingga sumber saya tidak berakhir mengemudi 8 perangkat (dengan kapasitansi input 8pF + jejak dan kapasitansi kabel).
Saad
1
@Saad - Terima kasih untuk bunganya! :-) Awasi kapasitansi kabel, terutama jika panjangnya lebih dari satu meter. Rule-of-thumb: 100 pF / m, itu jauh lebih dari kapasitansi input.
stevenvh
9

Masalah yang dapat terjadi adalah bahwa beberapa jam SR sebelum jam SR berikutnya, sehingga SR berikutnya akan clock di data yang salah. Solusi (standar?) Untuk ini adalah mentransfer jam mulai dari SR terakhir.

Saya akan mempertimbangkan menambahkan buffer (schmit-trigger?) Di setiap papan untuk semua 3 garis sinyal.

(sunting) Menurunkan frekuensi jam tidak akan membantu (kecuali jika terlalu tinggi untuk memulai). Masalah yang Anda dapat terjadi di tepi jam, yang akan Anda miliki, tidak peduli seberapa rendah Anda memilih frekuensi jam Anda.

Wouter van Ooijen
sumber
8

Masalah terbesar ketika chaining shift register adalah memastikan bahwa hubungan waktu antara jam yang digunakan oleh masing-masing papan digunakan untuk menerima data dan perubahan data dari papan sebelumnya dapat diprediksi. Fakta bahwa output dari 74HC595 berubah pada sisi yang sama dengan jam sedikit mengganggu dalam hal itu. Saya akan menyarankan bahwa sinyal jam harus buffered ketika melewati setiap papan dan bahwa sinyal data yang keluar dari 74HC595 satu papan harus dimasukkan melalui buffer yang akan menunda itu dengan waktu sedikit lebih lama daripada buffer jam.

Atau, Anda dapat menggunakan register geser seperti 74HC4094 yang memiliki perubahan output data di tepi jam jatuh, atau Anda dapat menambahkan flip flop antara output 74HC595 terakhir di papan dan papan berikutnya, dan memiliki flip flop itu kaitkan outputnya di tepi jatuh jam yang menggerakkan 74HC595's (mungkin melewatkan jam melalui dua inverter untuk buffer itu dan memberi makan sinyal clock terbalik ke flip flop).

Jika jumlah output 74HC595 yang akan Anda gunakan adalah satu (atau lebih) kurang dari jumlah yang disediakan oleh chip Anda (misalnya di papan dengan dua 74HC595, Anda sebenarnya hanya membutuhkan 15 output) Anda bisa memberi makan 74HC595 terakhir di papan dengan jam terbalik dari yang lain, tetapi itu akan dikenakan biaya penggunaan satu output 74HC595 untuk setiap kali sinyal melewati antara 74HC595 non-clock terbalik dan 74HC595 clock terbalik.

supercat
sumber