Beberapa waktu lalu, papan Raspberry Pi3 muncul sesuai keinginan saya. Kemampuannya sangat mengesankan: prosesor quad-core yang cepat, dan codec / decoder perangkat keras audio / video / jpeg, Ethernet / WIFI, USB2, HDMI ... Komputer yang asli. Sangat keren bahwa ada konektor GPIO, yang memungkinkan pengrajin yang berbeda untuk menghubungkan sesuatu yang tidak standar dan khusus. Ada sejumlah besar papan ekspansi berbeda yang dipasang pada konektor ini: display, layar LED, adaptor untuk motor, papan ADC ...
Saya ingin berbicara sedikit tentang papan FPGA di Mars Rover 2RPI, yang, seperti kartu ekspansi lainnya, terhubung ke slot GPIO dari buah beri, dan menambahkan properti yang sama sekali baru ke komputer mikro kami.
Biayanya cukup sederhana. Dipasang di atasnya:
- FPGA Cyclone IV EP4CE6E22C8
- elemen logis 6272;
- memori internal 270Kbps;
- Pengganda 15 (18x18);
- PLL 2;
- Empat LED
- Tiga tombol
- Osilator kristal 100MHz;
- Kemungkinan untuk memasang chip EPCS4 (jika papan akan digunakan secara mandiri);
- Konektor JTAG (dalam hal papan akan digunakan secara mandiri);
- Dua konektor 40 pin pada masing-masing 28 pengguna GPIO - konektor yang kompatibel dengan Raspberry;
- Satu konektor 40-pin untuk menghubungkan ke Raspbery, di mana Anda dapat menggunakan 24 atau 20 GPIO (tergantung pada apakah chip EPCS4 dipasang atau tidak).
Papan Mars rover2RPI dipasang tidak di atas papan Raspberry Pi, tetapi dari samping, melalui adaptor khusus. Ini dilakukan dengan sengaja. Raspberry Pi3 sudah cukup panas saat memuat 4 core, untuk menutupi papan dari atas sepertinya tidak terlalu manusiawi dalam hal pendinginan.
Jadi Anda dapat menghubungkan papan Raspberry Pi2 / Pi3:

Dan di sini adalah Pi-nol:

Mungkin saja (tapi ini tidak akurat), kartu ekspansi yang sama dapat digunakan dengan OrangePi.
Aplikasi pertama dari papan ini yang muncul di pikiran adalah menggandakan jumlah sinyal GPIO: ada satu konektor, dan ada dua. Anda hanya perlu membuat dan mengunggah proyek yang diinginkan ke FPGA, yah, Anda harus mengelola input dan output dengan beberapa cara khusus, ada banyak pilihan: port serial, SPI, GPIO, Anda dapat menggunakan DMA ...
Anda dapat mengunduh FPGA dari papan Mars rover2RPI langsung dari Raspberry melalui sinyal JTAG, yang tentu saja ditampilkan di GPIO
- tck → GPIO7
- tms → GPIO0
- tdi → GPIO11
- tdo ← GPIO1
Ada semacam proyek open source, OpenOCD, debugger dan debugger, yang memungkinkan Anda untuk menggunakan Raspberry sebagai programmer JTAG. OpenOCD adalah server, Anda dapat memulainya, dan kemudian menyambungkannya bahkan dari jarak jauh melalui telnet dan menggunakan perintah "svf", Anda dapat mengunggah gambar proyek yang dikompilasi ke FPGA.
Pelajari lebih lanjut tentang OpenOCD di raspberry pi .
Ini hanya demonstrasi video:
Proyek "test" pertama untuk papan Mars rover2RPI sudah siap, meskipun masih belum terlalu mengesankan dalam fungsinya. Proyek pertama untuk FPGA biasanya selalu "berkedip LED", semacam "halo Dunia!" dunia mikrokontroler dan FPGA.
Sumbernya dapat diambil di github:
github.com/marsohod4you/m2rpi_firstTapi di sini, bahkan dalam kasus sederhana ini, sudah ada interaksi antara FPGA dan komputer mikro. Dari raspberry, Anda dapat mengirim byte melalui port serial ke FPGA yang mengubah kecepatan kedip LED. Selain itu, "proyek uji" pertama FPGA menerima byte dari port serial, memodifikasinya (menambahkan satu), dan mengirimkannya kembali. Tentu saja, agak primitif, tetapi sudah interaksi dari dua sistem FPGA dan prosesor.
Demo video:
Ini adalah pengalaman akses Raspberry FPGA pertama saya. Saya pikir akan menarik untuk mencoba membuat proyek yang sangat rumit, seperti menangkap bingkai dari kamera video di raspberry dan mentransfernya melalui DMA ke FPGA untuk diproses. Saya pikir ada banyak proyek menarik dengan papan ekspansi ini.