custom FPGA PCB Design tips

9

Saya berencana untuk merancang PCB FPGA khusus. PCB akan berisi sensor. Saya perlu membaca output dari sensor dan memprosesnya di prosesor. Saya telah menyelesaikan banyak proyek menggunakan FPGA, tetapi ini akan menjadi desain khusus pertama saya di mana saya perlu mempertimbangkan konfigurasi perangkat keras juga. Saya telah melakukan penelitian akhir-akhir ini, tetapi masih sulit bagi saya untuk memulai dari suatu titik. Oleh karena itu saya meminta Anda untuk membantu saya dan orang lain yang ingin merancang FPGA khusus mereka apa poin yang perlu mereka pertimbangkan pada setiap langkah. Apakah ada buku / sumber daya online yang dapat membantu kami dalam proses ini? Saya juga akan membuat dokumen setelah saya menyelesaikan proyek saya sehingga orang dapat memanfaatkannya.

omid
sumber
Mungkin Anda harus menyebutkan ukuran fisik FPGA yang Anda rencanakan untuk digunakan, jumlah pin, tegangan pasokan yang diperlukan, ...
Dzarda
Ini belum ditentukan. Mungkin pertanyaan saya tidak jelas, tetapi saya mencari pedoman.
omid
OK cukup adil.
Dzarda
Pertanyaan ini tampaknya di luar topik
Roh
4
Pertanyaan besarnya adalah apakah Anda bersedia menggunakan paket BGA, atau apakah Anda akan membatasi diri Anda pada subset penawaran (dan mengurangi kinerja listrik) yang tersedia dalam paket TQFP yang ramah pekerjaan tangan. Selanjutnya, apakah Anda berharap untuk mendapatkan semua persediaan dan sinyal Anda dialihkan pada dua lapisan (rumit tetapi mungkin untuk tujuan terbatas) atau apakah Anda bersedia menggunakan 4 atau lebih? Seberapa cepat sinyal sensor Anda? Pada tingkat apa Anda berharap untuk mencatat logika internal? Apakah Anda memiliki analog yang peka terhadap noise? Sudahkah Anda mempertimbangkan membuat papan anak untuk digunakan dengan papan FPGA yang ada?
Chris Stratton

Jawaban:

11

Di perusahaan saya, kami sebelumnya telah merancang beberapa papan FPGA khusus, dan baru-baru ini mulai menggunakan papan FPGA komersial ("COTS") dengan papan utama FMC kustom.

Tahap prototipe

Jika Anda masih dalam tahap definisi proyek awal, rencanakan untuk membeli setidaknya satu papan COTS FPGA untuk pembuatan prototipe. Anda dapat memasang salah satu sensor Anda ke header I / O dan melakukan proof-of-concept cepat. Itu memberi Anda gambaran bagaimana proyek dapat dilakukan ketika diskalakan ke banyak sensor, dan memperkirakan berapa banyak Anda dapat mendukung dengan FPGA yang diberikan.

Jika FPGA terlalu kecil atau terlalu lambat atau alatnya tidak memadai untuk pekerjaan itu, mudah untuk menukar FPGA COTS yang berbeda pada tahap ini. (Yah tidak mudah tapi setidaknya bisa diatur ...)

Jika firmware tidak berfungsi pada tahap ini, jelas karena masalah firmware, bukan kesalahan desain PCB khusus. Dengan custom firmware dan custom PCB, terkadang sulit untuk mengatakan sisi mana yang salah karena masalah.

Papan FPGA khusus versus papan FPGA Komersial Di Luar Shelf

Mendesain papan FPGA khusus masuk akal jika proyek akan memiliki siklus hidup pendek, volume tinggi, atau memerlukan faktor bentuk yang lebih kecil daripada yang dapat Anda capai dengan papan COTS FPGA dan papan tambahan PMOD atau FMC.

Jika siklus hidup proyek melebihi masa pakai produk dari chip memori DDR (beberapa tahun), maka mendesain papan induk FMC kustom mungkin merupakan alternatif yang lebih baik.

Biaya adalah faktor dalam keputusan ini. Kebanyakan papan COTS FPGA agak bertujuan umum, dirancang untuk fleksibilitas maksimum. Jika Anda membuat produk volume tinggi, sensitif biaya, mungkin ada baiknya membuat desain khusus; tetapi untuk volume rendah Anda mungkin lebih baik berkonsentrasi untuk membuat kartu anak.

Apa pun pendekatan yang Anda pilih, ada antarmuka tertentu yang memerlukan dokumentasi master yang jelas: pada antarmuka antara pin I / O tingkat atas FPGA dan bagian papan lainnya, dan pada antarmuka konektor di antara papan. Ini adalah tempat di mana pin lokasi, nama jaring internal, dan nama jaring eksternal kadang-kadang tidak cocok dan ditukar. Tabel adalah dokumentasi yang memadai; pastikan untuk menjaga tabel antarmuka ini versi dan di bawah kendali sumber. Sebelum mengirim file PCB ke fabrikasi, cetak salinan tabel antarmuka ini, salinan skema, dan salinan laporan pin / pad FPGA. Seret highlighter melintasi kertas untuk memeriksa setiap sinyal yang terhubung di mana seharusnya.

Untuk konektor, saya telah belajar cara yang sulit untuk menyediakan "gambar sistem" mekanis yang menunjukkan kedua papan dan konektor kawin bersama pada satu gambar berdimensi tunggal. Saya pertama kali terbakar oleh sistem konektor VME di mana pin "A1" pada satu konektor tidak memetakan untuk pin "A1" pada konektor lainnya. Saya juga melihat desainer lupa bahwa sepasang konektor sudut kanan menghasilkan koneksi gambar cermin (90 derajat + 90 derajat = 180 derajat). Ini adalah masalah ketika saya bertanggung jawab untuk motherboard dan beberapa manajer proyek lainnya bertanggung jawab untuk berbagai motherboard.

Kiat papan FPGA khusus

Mulailah dengan "desain referensi" dari vendor FPGA, dan kemudian abaikan bagian apa pun yang tidak diperlukan untuk aplikasi Anda. Jangan lepaskan kapasitor pintas apa pun dari FPGA, dan jangan coba-coba menggunakan lebih sedikit lapisan PCB. Perhatikan tumpukan lapisan (sering ditemukan di samping gambar bor); komponen nada halus biasanya menggunakan 0,5 oz tembaga daripada ketebalan 1 oz tembaga foil standar.

Paket BGA sangat menyebalkan. Hasil tidak pernah sebagus dengan paket TQFP atau TQFN, dan pengerjaan ulang BGA hampir mustahil. Bahkan memeriksa untuk masalah perakitan membutuhkan pencitraan X-Ray. Pastikan untuk menggunakan penyedia layanan Pembuatan Kontrak yang Anda percayai.

Pasokan daya selalu rumit ketika bekerja dengan papan FPGA. Persyaratan daya aktual dari FPGA sangat bergantung pada bitstream konfigurasi. Xilinx menyediakan alat "penaksir daya", tetapi perkiraan ini hanya valid jika firmware lengkap. Ada risiko ketika melakukan perubahan firmware menit terakhir, bahwa persyaratan daya lebih besar dari yang diharapkan. Berencana meninggalkan beberapa margin pasokan saat ini. Jika perkiraan daya awal mengatakan Anda membutuhkan 560mA, silakan dan gunakan regulator 1000mA. Arus keluaran ekstra yang tersedia tidak membahayakan, tetapi jika arus keluaran tidak mencukupi akan mengakibatkan perilaku sistem yang menyimpang.

Jika ada pin FPGA yang tidak dikomit, bawa sebanyak mungkin ke header. Ketika ada masalah, pin yang tidak terikat ini menjadi sumber diagnostik yang berharga untuk memeriksa sinyal di dalam FPGA.

MarkU
sumber
11

Saya telah merancang lebih dari selusin papan berbasis FPGA yang menggunakan berbagai jenis FPGA mulai dari daya rendah Lattice Mach X02s hingga kinerja tinggi Virtex 6 dengan 24 saluran SERDES. Langkah-langkah normal yang saya ikuti adalah:

Temukan papan COT (mirip dengan MarkU) dan dapatkan gambaran kasar tentang sumber daya FPGA internal yang Anda perlukan, khususnya saya memperhatikan:

  • LUT (lihat tabel) dihitung:(apakah desain cocok dengan LUT pada papan referensi?) Jika Anda tidak memiliki sumber daya atau metode lengkap untuk menentukan perkiraan yang tepat dari penggunaan LUT (<1K akurasi LUT) karena mungkin desain belum selesai. Gunakan aturan praktis ini. Jika desain hampir selesai, ambil ukuran desain (hitungan LUT) dan temukan FPGA dengan setidaknya 30% lebih banyak LUT. jika desain tidak hampir selesai naik hingga 50% atau 100% lebih banyak LUT. Jadi jika desainnya cocok dengan 9K LUT, pastikan untuk menggunakan FPGA dengan 12K LUT atau lebih besar. Saya cenderung berlebihan dan mungkin akan mencapai 25K LUT. Ini akan menyelamatkan Anda dari sakit kepala yang menyakitkan nanti. Siapa pun yang menugaskan desain papan ini harus memahami bahwa harus ada lebih dari satu putaran desain ini sehingga dapat dimengerti untuk membesar-besarkan versi pertama FPGA.
  • BRAM (Blok jumlah RAM):Tentukan apakah desain Anda membutuhkan lebih banyak sumber daya memori daripada yang dimiliki FPGA Anda secara internal. Ini mudah diabaikan pada awalnya tetapi dalam desain Anda cenderung menggunakan RAM blok karena berbagai alasan (ROM, FIFOs, dll ...) Saya kehabisan memori blok pada desain dan mencoba menggunakan RAM yang didistribusikan (menggunakan LUT sebagai RAM ) dan memakan semua LUT saya dengan sangat cepat. Sangat penting untuk menentukan apakah Anda akan memerlukan memori eksternal. Ini menambah banyak risiko pada desain karena jika desain itu membutuhkan tingkat kinerja apa pun Anda bisa '
  • Hitung semua standar pensinyalan dan kemungkinan level tegangan yang akan Anda gunakan: Ini penting karena beberapa standar pensinyalan yang ingin Anda gunakan (LVDS, LVSPEC, LVCMOS) mungkin memiliki batasan voltase. Bacalah panduan pengguna dan pastikan semua standar ini didukung.
  • Persyaratan catu daya:Saya bersimpati dengan semua keluhan sebelumnya tentang catu daya berukuran kecil yang mendapatkan tegangan inti yang ditentukan, akhir-akhir ini saya telah menggunakan banyak modul TI Nano untuk FPGA besar tapi low-end (Spartan LX45 (T) - LX75 (T) dan Kisi ECP3). Untungnya Anda dapat mengurangi beberapa risiko saat mengukur pasokan daya yang digunakan untuk I / O. Khususnya jika bank ini tidak menggerakkan sumber yang tidak dikenal (konektor ekspansi) maka prosesnya adalah sebagai berikut: Temukan semua komponen yang akan dilampirkan oleh bank ini, tentukan kapasitansi input untuk semua komponen tersebut, cari tahu laju jam maksimum yang Anda gunakan. akan mengarahkan sinyal-sinyal ini maka Anda dapat menghitung baik kebutuhan daya dan memperkirakan secara kasar persyaratan bypass,

Menggunakan persamaan [P = (1/2) CV ^ 2 * (f)] di mana C = kapasitansi input, f = frekuensi. dari input FPGA Anda harus mengemudi (Untuk setiap sinyal!). Anda dapat mengetahui perkiraan kasus terburuk tentang seberapa besar daya yang diperlukan untuk menggerakkan semua sinyal output.

Anda juga perlu mempertimbangkan kehilangan daya yang terkait dengan resistor terminasi internal (berdasarkan standar I / O yang Anda gunakan)

Saya juga telah menggunakan alat TI Webbench belakangan ini dengan banyak keberhasilan:

TI Webbench (Saya tidak bekerja untuk TI)

Skema:

  • Siapkan skematis Anda dengan mengingat orang bodoh. Anda dan semua desainer HDL akan sering kembali ke skema ini, jadi buatlah mudah bagi semua orang untuk menemukan apa yang mereka butuhkan dengan cepat tanpa mengharuskan Anda di masa depan atau mereka untuk meriset seluruh skema untuk mengetahuinya jika Pin 20 adalah input jam. Ini termasuk banyak catatan tentang skema (jika mungkin), jelaskan tujuan rangkaian, hasil yang diharapkan, dan bahkan kekhawatiran. Karena FPGA dapat dipecah menjadi bank, pertimbangkan untuk memecah komponen FPGA menjadi beberapa bagian dan bahkan mungkin mendedikasikan seluruh halaman skematik untuk masing-masing bank.

  • PUT BESAR MENGUMUMKAN CATATAN DALAM SKEMATIK ANDA TENTANG MENCARI CLOCKS KE PIN YANG TEPAT: Saya membenturkan kepala ke banyak dinding ketika saya sedang membangun gambar pertama saya untuk desain dan mendapatkan sinyal jam yang ditakuti diarahkan pada pin yang diaktifkan non-jam ' . Hiduplah dalam ketakutan akan berbagai jenis pin jam pada FPGA. Pastikan Anda memahami bahwa beberapa pin jam dimaksudkan untuk digunakan pada kuadran FPGA atau Anda akan menghadapi semua orang yang mengatakan: "Hei, tahukah Anda ada pin jam tertentu yang dimaksudkan untuk digunakan pada kuadran FPGA". Hanya perlu 15 orang untuk memberi tahu Anda hal ini untuk memastikan Anda tidak pernah melakukannya lagi.

  • Habiskan BANYAK WAKTU PADA DESAIN KONFIGURASI FPGA: Pastikan Anda mengeluarkan pin JTAG bahkan jika Anda tidak berencana menggunakannya. Ini adalah perbedaan antara kesalahan yang bisa diterapkan dan cacat fatal.

  • Ketika ragu mengeluarkan tombol sinyal tambahan dan LED serta sakelar celup: Saya telah mencengkeram banyak pekerjaan tambahan yang terkait dengan merutekan sinyal tambahan ke breaker header LED, sakelar dan tombol celup tetapi selalu SELALU membantu.

Tata letak :

  • Berkomunikasi dengan rumah Fab lebih awal: Terutama jika Anda mungkin memerlukan perutean terkontrol impedansi meminta lapisan menumpuk untuk jumlah lapisan yang diinginkan. Jauh lebih mudah untuk merutekan sinyal berkecepatan tinggi ketika Anda memiliki lebar jejak yang ditentukan pertama kali untuk mengetahui bahwa Anda bisa menggunakan 6 mil jejak bukannya 8 mil jejak untuk mencapai impedansi 50 ohm Anda.

  • Mulailah dengan topi pintas: Desain sistem daya lebih awal. Hal pertama yang saya lakukan adalah mulai dengan menempatkan semua topi kecil di bawah FPGA atau dekat dengan pin. Yang lebih besar di luar FPGA dan rute seluruh rangkaian catu daya dan letakkan kira-kira di tempat yang saya harapkan. Dengan cara ini Anda tidak akan melawan puzzle perutean dan membuat kompromi.

  • Sinyal kecepatan tinggi kedua: Ini adalah sinyal yang tidak ingin Anda lompati terlalu banyak lapisan.


Saya selalu belajar lebih banyak hal dan akan sangat menyukai tips lain yang telah ditemukan oleh desainer lain jadi tolong tambahkan mereka.

Dave
sumber
6

Saya pikir titik awal yang baik untuk PCB kustom yang dilengkapi dengan FPGA akan menjadi papan desain referensi dari vendor FPGA. Anda dapat memeriksa desain ini sebagai contoh untuk catu daya, tetapi perlu diketahui bahwa papan desain referensi terkadang berukuran kurang. Kami mengalami banyak masalah dengan papan Xilinx ML605 kehilangan konfigurasi di sana, karena catu daya yang berukuran lebih kecil.

Menjawab komentar omid:

Salah satu rekan saya menerapkan algoritma perhitungan sistolik pada Virtex-6 LXT240. Input data dipasok oleh Gigabit Ethernet. Karena pendekatan sistolik FPGA hampir tidak melakukan apa-apa jika tidak ada data di input fifos atau terutama semua sandal jepit dari FPGA yang beralih dengan 200 MHz jika bingkai ethernet baru tiba. Ketidakseimbangan dalam perhitungan ini menyebabkan sirkuit catu daya TI mematikan papan ML605 yang hanya dapat dipulihkan dari keadaan ini dengan mengganti sakelar daya utama.

Kami memberikan desain ini ke departemen teknik elektro di universitas kami dan mereka menemukan, bahwa tidak ada cara untuk menyesuaikan koefisien regulator berdasarkan kapasitor yang dipasang.

Ya, bisa dikatakan: desain yang buruk atau menggunakan fifos yang lebih besar atau ...

Solusi rekan saya adalah pemanfaatan FPGA berkurang 80%.

Namun demikian, papan prototipe dan desain referensi harus mampu menangani beban kerja yang ekstrem, terutama jika papan ini memiliki FPGA yang tidak memiliki penggunaan daya seperti CPU.

Paebbels
sumber
Bisakah Anda menjelaskan apa yang Anda maksud dengan "terlalu kecil" yang harus saya ketahui?
omid