Routing 30MHz clock melalui beberapa board

9

Saya menggunakan driver LED TLC5945 . Mikrokontroler (saya menggunakan LPC1343 ) harus menyediakan jam untuk penghitung / penghitung PWM internal. Kecepatan clock maksimum yang diizinkan ditentukan sebagai 30MHz.

Saya akan memiliki beberapa papan dengan TLC5945 daisychained. Papan akan dihubungkan melalui konektor board-to-board atau kabel pita pendek, lebar satu papan adalah 10cm. Saya akan memiliki maksimal 4 dari mereka terhubung secara seri.

Mungkin saya tidak akan menggunakan 30MHz penuh, tetapi bagaimanapun saya ingin melakukannya dengan benar - bagaimana cara rute / kondisi sinyal clock agar tetap utuh?

Jika saya menambahkan buffer seperti 74HC245 pada output setiap board, saya akan mendapatkan penundaan 10ns setelah setiap buffer, saya tidak menginginkannya. Haruskah saya menggunakan buffer jam "tanpa penundaan" khusus? Skema pemutusan apa yang harus saya pakai?

miceuz
sumber
2
Satu siklus pada 30MHz adalah ~ 33ns. Apakah keluar dengan 1/3 dari satu siklus per papan yang besar masalah?
Toby Lawrence
1
Sungguh pertanyaan dan jawaban yang bagus. Setiap jawaban menambah solusi, tanpa mengulangi jawaban sebelumnya!
Vorac

Jawaban:

20

30 MHz sudah cukup sehingga Anda perlu memperlakukan sinyal sebagai masalah saluran transmisi. Anda harus memperhatikan tata letak papan di seluruh desain, termasuk dan terutama pada konektornya. Anda harus membawa pin ground tambahan bersama sinyal 30 MHz Anda, atau mungkin menggunakan konektor khusus.

Anda akan memerlukan informasi tentang tata letak papan Anda, jumlah lapisan, dan Anda mungkin perlu berkoordinasi dengan pabrikan papan yang Anda tuju sehingga mereka dapat menargetkan impedansi karakteristik spesifik untuk Anda, atau hanya untuk mendapatkan parameter seperti konstanta dielektrik.

Memang terdengar seperti Anda mengetahui banyak dari masalah ini, tapi saya pikir yang terbaik untuk mengatasinya, karena jika Anda tidak hati-hati Anda mungkin mendapatkan desain yang fungsional tetapi memancarkan banyak RF dan tidak akan pernah bisa melalui Tes EMI.

Pedoman untuk merutekan sinyal:

  • Hitung impedansi dan lebar jejak.
  • Arahkan jam Anda terlebih dahulu.
  • Jika memungkinkan, jangan pernah merutekan sinyal melalui via. Jika harus, letakkan kapasitor bypass di dekat via.
  • Jika memungkinkan / berlaku, rutekan sinyal melalui lapisan internal (sehingga tanah luar dan bidang daya dapat berfungsi sebagai semacam kandang Faraday). Dalam hal ini, sinyal harus diarahkan pada satu layer kecuali untuk vias yang dibutuhkan untuk mengakses chip.
  • Sinyal tidak pernah pergi ke mana pun tanpa pesawat ground (atau secara tegas, pesawat referensi).
  • Sinyal tidak pernah melewati batas antara bidang daya.
  • Saat melalui konektor, kelilinginya dengan tanah.
  • Dalam rantai daisy, rute langsung ke input jam tanpa menggunakan bertopik, jika memungkinkan. Diagram rantai daisy tanpa rintisan dari Altera PDF
  • Silang sinyal lain pada posisi tegak lurus.
  • Jika sinyal lain harus bepergian dengan itu, beri mereka izin. Empat kali lebar jejak.
  • Gunakan penghentian paralel ke ground dengan tahanan yang sama dengan impedansi karakteristik microstrip / stripline, atau penghentian sumber jika sinyal hanya memiliki satu tujuan. Untuk diskusi, lihat pertanyaan terkait ini .

Tentu saja, dalam desain dunia nyata, Anda mungkin harus melanggar salah satu dari pedoman itu.

Sebagian besar aturan ini mengikuti dari pengamatan bahwa pada frekuensi tinggi, arus balik akan mencoba melakukan perjalanan dekat dengan sinyal, sehingga Anda harus memberikan jalur untuk arus balik. Jika arus balik dipisahkan secara fisik, Anda membuat antena parasit. Pesawat ground (atau power!) Yang menyediakan jalur untuk arus balik disebut referensi. Jangan tinggalkan bidang referensi. Jika Anda harus melalui via, bidang referensi berubah. Kapasitor bypass diatur antara bidang referensi baru dan lama.

Konektor Anda akan menimbulkan masalah, karena kemungkinan memiliki impedansi yang berbeda dari PCB, sehingga akan menyebabkan pantulan dan menurunkan sinyal. Salah satu opsi mungkin menggunakan konektor yang dikendalikan impedansi yang cocok dengan impedansi papan.

Di sisi firmware, Anda mungkin perlu bereksperimen dengan kekuatan drive untuk mengontrol laju tepi. Kekuatan drive maksimum seringkali merupakan jawaban yang salah. Vendor IC Anda harus dapat menyediakan model IBIS , yang dengannya Anda dapat mensimulasikan rangkaian untuk memperkirakan integritas sinyal. Sebenarnya, bukan frekuensi clock yang menyebabkan integritas sinyal atau masalah EMC, tetapi laju tepi (waktu untuk transisi antara tinggi dan rendah) karena tepi cepat bermanifestasi sebagai transien broadband dalam domain frekuensi. Mengurangi kekuatan drive dan / atau laju perubahan tegangan akan mengurangi laju tepi, dan mengurangi emisi harmonis, sementara (mungkin) meningkatkan clock jitter. Periksa lembar data untuk melihat berapa nilai tepi yang dapat diterima untuk penerima jam.

Perasaan saya adalah bahwa jika Anda melakukan pekerjaan rumah Anda, Anda mungkin tidak akan memerlukan pengulang sinyal apa pun. Sebagai contoh, pertimbangkan SCSI, yang merupakan bus paralel berkecepatan tinggi yang sangat besar yang didistribusikan melalui kabel pada kisaran 100 MHz. Jika memungkinkan, pertimbangkan berinvestasi dalam program seperti HyperLynx untuk mensimulasikan tata letak Anda.

Altera memiliki panduan yang sangat baik untuk masalah perutean kecepatan tinggi.

jbarlow
sumber
Terima kasih atas wawasannya yang luar biasa. Dari jawaban Anda, saya mendapatkan bahwa tidak ada cara saya bisa melakukan ini dengan papan terukir DIY?
miceuz
@Miceuz: Ya, jika ini adalah proyek hobi maka Anda tidak khawatir tentang EMC, jadi mungkin. Konsensus yang muncul adalah bahwa ini akan sulit bagi insinyur senior untuk memperbaikinya, dan mencoba melakukannya DIY tidak membuat apa pun lebih mudah. Di sisi lain, Anda dapat menurunkan frekuensi jam jika tidak berhasil dalam kasus ini. Saya akan mencoba menemukan tata letak alternatif untuk mengurangi panjang rantai daisy.
jbarlow
Akan mengungguli ini dua kali jika saya bisa.
Renan
10

Ini tidak akan menyakiti Anda untuk melakukan semua hal yang disarankan jbarlow dan David, tetapi izinkan saya mencoba untuk membuat hal-hal sedikit lebih mudah bagi Anda (atau mungkin lebih sulit, karena saya akan mengatakan Anda mungkin bisa lolos dengan banyak hal hal, tapi aku tidak akan berjanji ).

Aturan klasiknya adalah Anda dapat menganggap sirkuit sebagai sirkuit yang disatukan jika tidak ada dimensi yang lebih panjang dari 1/10 panjang gelombang sinyal frekuensi tertinggi yang diminati. Jika itu adalah sirkuit yang disatukan, Anda dapat menganggap trek Anda hanya sebagai koneksi antara elemen-elemen diskrit. Jika ini bukan sirkuit yang disumbat, Anda perlu khawatir tentang efek sirkuit terdistribusi, dan menganggap jejak Anda sebagai saluran transmisi.

Anda sedang berbicara tentang frekuensi clock 30 MHz, sesuai dengan panjang gelombang 10 m. Jika merambat melalui FR4, panjang gelombang ini akan berkurang menjadi sekitar 4,7 m. Dan panjang sirkuit 40 cm. Jadi untuk dasar sinyal jam Anda tepat di ujung aturan praktis lama.

Masalah: Anda tidak hanya perlu khawatir tentang frekuensi jam, tetapi berapa banyak harmonik dari frekuensi itu yang harus dikirim untuk memberikan naik turunnya waktu yang Anda inginkan. Jika Anda sengaja memperlambat tepian yang Anda transmisikan, Anda mungkin dapat bertahan dengan hanya harmonik 1 dan 3 (David menyinggung hal ini ketika ia menyebutkan tidak harus menggunakan kekuatan drive maksimum).

Ini memberi Anda frekuensi bunga maksimum 90 MHz, dan panjang gelombang yang sesuai (dalam FR4) sekitar 1,6 m. Jadi jarak kritis adalah 16 cm. Itu berarti bahwa secara keseluruhan Anda ingin memberikan jalur balik yang digabungkan dengan erat, menganggap trek Anda sebagai saluran transmisi dan mengakhiri dengan impedansi yang sesuai, dll.

Tetapi Anda mungkin tidak perlu membayar ekstra untuk impedansi terkontrol. Jika Anda mendesain dengan jejak di atas lebar minimum yang tersedia dari vendor Anda, (katakanlah 8 atau 10 juta), toleransi normal kemungkinan besar akan memberi Anda kinerja yang memadai.

Dan jika sepanjang jalan Anda harus melalui melalui, atau menabrak celah pendek di bidang tanah, atau Anda tidak dapat menempatkan kapasitor bypass tepat di sebelah bagian beban, jangan terlalu banyak berkeringat. Jika Anda ingin menjalankan trek Anda langsung dari konektor ke konektor, dengan beberapa rintisan cm untuk mencapai chip beban di setiap papan, itu akan baik-baik saja. Jika panjang bagian jalan yang tidak terkontrol (atau slot di bidang tanah) kurang dari beberapa cm, itu tidak akan merusak hari Anda. Bahkan jika itu 10 cm, Anda mungkin lolos begitu saja, tetapi jangan memaksakan keberuntungan Anda.

Misalnya, ini berarti ketika Anda menghubungkan antara papan, tidak perlu untuk konektor terkontrol impedansi biaya tinggi. Bahkan beberapa sentimeter dari kabel pita akan baik-baik saja. Pola ground-signal-ground atau ground-signal-signal-ground dari kabel dalam pita adalah ide yang bagus, tetapi jangan khawatir tentang kabel twisted pair yang cocok dengan impedansi atau membujuk.

Untuk yang lain, jika Anda memutuskan untuk menggunakan buffer di setiap papan, itu akan memungkinkan Anda untuk memperlakukan sirkuit di setiap papan (dengan panjang 10 cm) sebagai sirkuit yang disatukan. Anda akan ingin mengelola kemiringan buffer, seperti yang dijelaskan David, dan Anda harus membatasi waktu naik dan turun dari setiap buffer, tetapi Anda akan mendapatkan banyak fleksibilitas dalam tata letak di setiap papan tanpa menurunkan fungsi. Yang mengatakan, semakin banyak yang Anda lakukan untuk menjaga jalur pengembalian Anda dekat dengan jejak sinyal Anda, semakin kecil kemungkinan Anda memiliki kejutan buruk ketika datang ke pengujian EMC.

Foton
sumber
6

Saya pikir jawaban @ jbarlow cukup tepat. Saya ingin menambahkan beberapa, tetapi saya tidak akan repot mengulangi apa yang dia katakan.

Satu-satunya hal yang saya tidak setuju dengan @ jbarlow adalah penggunaan repeater, atau buffering semua sinyal. Apa yang dia katakan benar, "jika kamu melakukan pekerjaan rumahmu ...". Tapi itulah masalahnya, melakukan pekerjaan rumah Anda. Anda dapat melakukannya, tetapi Anda akan membutuhkan kabel dan konektor yang relatif mahal - dan itu hanya akan "sangat sulit".

Tampaknya tidak menambahkan penundaan 10 ns ke buffer jam pada setiap PCB benar-benar masalah. Sulit bagi saya untuk mengatakan dengan pasti karena Anda meninggalkan banyak detail tentang sinyal lain seperti BLANK dan XLAT. Tetapi bahkan jika itu adalah masalah, Anda selalu dapat buffer SEMUA sinyal. Semua gerbang di 74xx245 akan cenderung memiliki penundaan yang sama (atau paling tidak serupa), sehingga waktu keseluruhan pada driver LED akan tetap baik.

(Catatan: Periksa lembar data. Chip yang baik akan mencantumkan dua nomor penundaan propagasi yang berbeda. Satu untuk gerbang individu, dan yang lainnya menunjukkan perbedaan atau condong dalam penundaan antara gerbang dalam chip yang sama. Jangan mengambil kata-kata saya untuk itu. Anda masih perlu melakukan analisis waktu yang tepat.)

Mendapatkan terminasi dan impedansi sinyal antara PCB sangat penting untuk membuat desain ini berfungsi. Mengontrol impedansi pada kabel multi-konduktor selalu sulit, dan menjalankan sinyal tunggal melalui beberapa PCB dan kabel hanya meminta masalah. Anda akan memiliki perubahan impedansi di banyak titik di sepanjang sinyal, yang akan menciptakan masalah integritas sinyal. Menyangga semua sinyal di antara PCB akan membantu mengelola ini. Setidaknya panjang jejak dan perubahan impedansi pada setiap sinyal akan dijaga agar tetap minimum.

Penggunaan zero delay buffer tidak diperlukan, dan benar-benar dapat memperburuk keadaan (dan lebih mahal). Zero delay buffer benar-benar Phase-Locked-Loops (PLL) dan membutuhkan desain yang cermat untuk bekerja dengan sempurna. Dalam kebanyakan kasus ini bukan masalah besar, tetapi tentu bisa menjadi masalah jika jam Anda tidak sempurna. Akan lebih baik untuk menghindari ini untuk aplikasi ini. Selain itu, buffer nol tunda tidak cocok untuk buffering selain jam yang terus berjalan - sehingga tidak membantu Anda untuk buffer sinyal lain.


sumber
Poin luar biasa. Saya setuju bahwa pendekatan sinyal buffer mungkin jauh lebih aman dan lebih mungkin berhasil.
jbarlow
Bagaimana cara buffer semut menghentikan sinyal? Apakah MCU-> Penyangga-> Istilah term-> kabel-> Penyangga-> TLC5945-> Penyangga-> istilah term-> kabel ... atau MCU-> Penyangga-> Istilah term-> kabel-> TLC5945-> Penyangga -> seri term-> kabel ... yaitu apakah saya perlu buffer sinyal dari kedua ujung kabel atau dapatkah saya meneruskan buffer dan terminasi untuk bekerja baik untuk konektor / kabel dan untuk papan yang datang berikutnya?
miceuz
@ miceuz Idealnya Anda akan buffer dua kali di setiap papan. Suatu ketika ketika sinyal memasuki papan pada satu konektor. Lain waktu ketika sinyal meninggalkan papan di konektor lain. Praktis, melakukannya sekali mungkin cukup. Jadi itu akan menjadi MCU-> Cable-> LED-> term-> buf-> cable-> led-> term-> buf-> cable-> dll. Perhatikan bahwa pemutusan sumber-seri hanya berfungsi jika Anda memiliki satu beban pada sinyal, yang tidak Anda lakukan. Anda memiliki chip driver LED dan buffer. Anda harus melihat terminasi AC, yang memiliki resistor dan penutup seri ke ground di ujung.