FPGA - Pemrograman DIY


9

Saya telah memprogram mikrokontroler selama beberapa tahun sekarang, dan saya baru saja menemukan FPGA setelah mengambil kelas desain digital. Setelah melakukan riset ke berbagai FPGA, papan pengembangan, dll, saya masih ragu untuk membelinya karena saya tidak tahu bagaimana membuat versi "produk" saya sendiri. Saya telah menempatkan PIC, SAM, AVR, dll pada PCB kustom tanpa masalah, jadi saya tidak khawatir tentang hal itu - perhatian utama saya adalah pemrograman FPGA tanpa papan pabrikan.

Pertanyaan spesifik saya: Apakah fungsi FPGA jika saya mengambil file bitmap yang dihasilkan oleh Quartus, Vivado, iCEcube, dll, menulisnya ke chip memori flash SPI mulai dari alamat 0 (katakanlah, melalui FT2232H), dan menghubungkan memori flash ke pin SPI dari FPGA (dengan konfigurasi MODE diatur dengan benar)?

Saya minta maaf untuk hipotesis parsial; Saya cukup yakin hanya itulah yang dilakukan Lattice's Diamond Programmer, tetapi saya bertanya-tanya apakah pendekatan itu akan bekerja untuk FPGA dari produsen yang berbeda, atau apakah mengatakan, Quartus menambahkan "window dressing" tambahan atau header ke memori saat menulisnya.

Beri tahu saya jika ada yang bisa saya lakukan untuk meningkatkan / mengklarifikasi pertanyaan, atau jika saya kehilangan poin besar dalam proses pemrograman FPGA. Terima kasih!


Maksud dari "bitmap" yang Anda maksud adalah bit-stream?
Eugene Sh.

Pertanyaan ini telah diajukan dalam inkarnasi yang berbeda sebelumnya
Voltage Spike

1
Pada desain papan FPGA pertama Anda, saya sarankan untuk menyediakan 2 metode pemrograman perangkat (ditambah tajuk JTAG vendor). Tempatkan lokasi jumper untuk memungkinkan Anda mengubah pin MODE sesuai kebutuhan. Sangat mudah untuk mengacaukan ini dan itu baik untuk memiliki rencana cadangan. Pastikan juga untuk memberikan titik uji untuk INIT dan DONE (atau apa pun yang digunakan Lattice untuk menunjukkan status pemrograman).
The Photon

2
Kontrol proses yang diperlukan untuk memasang BGA, terutama yang jumlah pin tinggi lebih ketat daripada sesuatu seperti QFP. Faktanya ada lebih banyak bola berarti ada kemungkinan menjembatani atau koneksi yang buruk dan karena mereka disembunyikan Anda tidak akan dapat mendeteksi masalah (kecuali jika Anda memiliki X-ray) sebelum menjalankan hal tersebut untuk melihat apakah Anda memiliki ada masalah. Dan jika Anda memasang kembali komponennya maka Anda harus membukanya kembali yang memerlukan lebih banyak peralatan. FPGA juga merupakan chip mahal yang tidak ingin Anda rusak. BGA besar adalah tempat hal-hal seperti preheater PCB menjadi perlu.
DKNguyen

1
Saya dulu bekerja di tempat di mana para teknisi tidak melakukan apa-apa selain mengerjakan ulang sepanjang hari dan mereka memiliki stasiun udara panas (kontrol suhu yang lebih ketat dan lebih dapat diandalkan daripada senapan panas) dan mereka tidak dapat diandalkan untuk menyerahkan BGA solder. Saya tidak berpikir mereka memiliki preheater jadi jika Anda akan mencobanya, dapatkan preheater dan gunakan chip murah (bahkan mungkin paket BGA dummy rantai daisy sehingga Anda dapat memverifikasi koneksi Anda secara elektrik hingga Anda telah memakukannya sebelum melakukan hal yang nyata).
DKNguyen

Jawaban:


12

Ya, itu akan bekerja dengan baik.

Sebenarnya, alat pengembangan untuk sebagian besar FPGA memungkinkan Anda untuk memprogram flash eksternal secara langsung melalui koneksi JTAG FPGA sendiri, menghilangkan kebutuhan untuk antarmuka pemrograman terpisah untuk flash.


1
Dan beberapa, seperti Lattice Mach X02, memiliki flash on-board sehingga Anda hanya perlu beberapa resistor dan header 5x2 untuk terhubung ke pod pemrograman Lattice.
Spehro Pefhany

Saya sadar Anda dapat memprogram flash secara langsung melalui JTAG dari alat-alat seperti Vivado / Quartus, yang saya harapkan adalah dapat melakukannya tanpa perlu membeli kabel khusus vendor - cukup gunakan FT2232H dan tulis bitstream (tidak bitmap?) sendiri. Saya tidak berpikir bahwa chip didukung oleh Quartus, dan tidak secara terbuka didukung oleh Vivado (meskipun mereka menggunakannya pada papan Nexys dan Basys).
Blake Lucas

1
Ya, Anda dapat memprogram flash dengan file bit menggunakan cara lain. Salah satu pemrogram Anda untuk MCU Anda mungkin bisa melakukannya. Saya tahu Segger J-link saya pasti bisa.
DKNguyen

@Toor: Memang itu bukan kabel khusus vendor, tetapi masih memiliki dukungan hardcoded pada alat vendor, dan Segger sedikit lebih mahal daripada FT2232H.
Ben Voigt

2
Hampir semua vendor besar menyediakan dokumentasi teknik untuk membiarkan bitstream stream yang diunggah ke bagian mereka (baik FPGA dan konfigurasi kustom flash) dengan alat khusus, karena kadang-kadang diinginkan dalam sistem terintegrasi atau rig uji. Mungkin paling sederhana untuk menggunakan peralatan yang didukung vendor (terutama pada awalnya), tetapi saya telah menerapkan alternatif untuk proyek tertentu beberapa kali selama bertahun-tahun. Bagian yang lebih sulit dari proyek papan FPGA asli mungkin adalah semua dukungan yang dibutuhkan FPGA di papan - banyak pasangan daya untuk rute dan memotong, sering untuk beberapa voltase berbeda.
Chris Stratton

3

Ketika Anda mengatakan "file bitmap [sic] dihasilkan oleh", jawabannya adalah Ya selama Anda memilih yang benar - Anda membuat sedikit kesalahan dengan menggunakan artikel yang pasti karena tidak hanya ada satu file yang dihasilkan .

Sebagai contoh, Quartus dapat menghasilkan file SOF, POF, dan JIC. Yang terakhir adalah apa yang Anda gunakan untuk pemrograman tidak langsung melalui FPGA JTAG. Tidak akan berguna untuk menulis itu ke flash SPI. SOF adalah untuk memuat lebih dari JTAG untuk menjalankan desain Anda di FPGA secara sementara. POF adalah apa yang Anda butuhkan untuk memuat ke dalam chip flash.

Lihat FPGA: Bitstream vs. SRAM Object File untuk banyak informasi berguna tentang apa arti file yang berbeda dari masing-masing vendor yang berbeda.


1

Apakah fungsi FPGA jika saya ... menghubungkan memori flash ke pin SPI FPGA (dengan konfigurasi MODE diatur dengan benar)?

Jika saya memahami pertanyaan Anda dengan benar, Anda ingin menulis konfigurasi FPGA (mis. Model HDL Anda yang dikompilasi) ke SPI EEPROM atau SPI Flash dan Anda ingin FPGA memprogram dirinya sendiri menggunakan data pada IC SPI.

(Jika saya mengerti jawaban Dave Tweed dengan benar, dia memahami pertanyaan Anda dengan cara yang berbeda.)

Setidaknya banyak perangkat memori SPI Flash TIDAK akan berfungsi karena IC memori SPI Flash memerlukan bentuk gelombang tertentu (misalnya alamat yang akan dibaca) untuk dikirim sehingga data dibaca dari IC.

Bentuk gelombang ini tidak sama untuk semua perangkat memori Flash. Bahkan ketika hanya melihat kartu memori SD (yang juga dapat digunakan sebagai memori Flash SPI) kami menemukan dua varian yang membutuhkan bentuk gelombang yang berbeda untuk dikirim ke kartu sebelum kartu membacakan data.

Saat mengatur pin mode FPGA dengan benar, FPGA akan mengirimkan beberapa bentuk gelombang yang menginstruksikan beberapa perangkat memori serial untuk mengirim data. Namun, karena IC yang berbeda memerlukan bentuk gelombang yang berbeda, bentuk gelombang tidak akan dipahami oleh semua IC Flash tetapi hanya oleh tipe tertentu.

Saya tahu bahwa Altera menghasilkan Flash khusus atau IC EEPROM yang kompatibel dengan FPGA mereka.


Jelas kartu SD tidak akan berfungsi, karena tidak ada FPGA (setahu saya) yang mendukung SD / MMC sebagai protokol konfigurasi. Kebanyakan FPGA menempel pada AT24 / AT26 / AT45.
Dmitry Grigoryev

1

Jika Anda ingin menulis bitstream FPGA ke flash tanpa alat pemrograman FPGA resmi, kemungkinan besar Anda ingin mengonversi file bitstream tersebut ke format biner terbuka yang dapat Anda baca dengan mudah, seperti biner mentah, Intel HEX atau Motorola SREC ( contoh ). Ini akan menghapus setiap header kepemilikan yang mengandung bitstream FPGA.

Dengan cara ini Anda dapat memprogram flash menggunakan alat dari produsen flash (atau alat Anda sendiri), atau bahkan memesan chip flash yang diprogram sebelumnya dengan bitstream FPGA Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.