Suatu hari saya bertemu dan mengambil wawancara video pendek dari
Kathy Giori, Wakil Presiden Operasional Arduino USA . Kami membahas dengan Katie tren baru yang telah menyentuh komunitas Arduino: karena pemrograman mikrokontroler dengan bantuan Arduino sudah lebih atau kurang dipelajari, saatnya untuk mengambil langkah berikutnya: mengajar anak-anak sekolah untuk menggunakan bahasa untuk menggambarkan peralatan Verilog dan mikrosirkuit FPGA / FPGA, matriks logika, matriks logika elemen dengan fungsi variabel. Dan untuk membuat penguasaan FPGA lebih mudah, ada baiknya menghidupkan kembali latihan dengan sedikit chip integrasi, yang populer di tahun 1970-an, sebagai prekuel FPGA modern. Semua ini akan menutup celah antara fisika dan pemrograman, elemen diskrit dan mikrokontroler, transistor dan Arduino.
FPGA dan papan dapat digunakan dari produsen mana pun (Xilinx, Altera, Lattice, Digilent, Terasic), semua yang saya tulis di bawah ini tidak terkait dengan perusahaan tertentu.
Svetlana Khutka , seorang
guru Stanford, mengambil bagian dalam percakapan dengan Katya, yang memberi tahu Katy tentang
percobaan mengajar anak-anak sekolah bagaimana menggunakan FPGA di Kiev dengan bantuan guru yang antusias dari beberapa universitas di Kiev. Setelah itu, saya berbagi dengan rencana Katie untuk percobaan berikutnya di
sekolah musim panas para programmer muda di Novosibirsk , yang dikenal sejak masa Soviet, dan juga berbicara dengan kawan-kawan lain dari komunitas Arduino yang hadir tentang penerapan FPGA di dua sekolah dan satu perguruan tinggi Lembah Silikon.
Motherboard dengan FPGA, yang sekarang direkomendasikan oleh Katya, dan yang saya ulangi sesuaikan dengan kebutuhan saya (akan ada posting terpisah tentang ini):

Di bawah ini saya akan memberikan informasi tentang hasil percobaan Kiev, serta beberapa rencana untuk masa depan yang sedang dikembangkan oleh para aktivis - guru sekolah pendidikan fisik dan universitas di Kiev, Chernigov, Novosibirsk, Moskow, Nizhny Novgorod, Samara, St. Petersburg, Almaty, dan kota-kota lainnya. Pada seminar Kiev, para peserta mencapai tahap menciptakan mesin negara dari kunci kode dan integrasi dengan perangkat periferal sederhana (keyboard 16 tombol, speaker). Di sekolah musim panas di Novosibirsk, kita akan memiliki lebih banyak waktu dan kami akan mencoba membangun prosesor dengan para siswa. Di masa depan, direncanakan untuk membuat kursus tahunan tentang dasar-dasar elektronik digital pada FPGA untuk sekolah fisik, yang dapat memperkaya pendidikan sekolah, karena pada 1980-an itu diperkaya dengan pengenalan elemen-elemen pemrograman.
Kami akan membahas ini secara rinci:
1. Mengapa mengajar anak-anak sekolah cara mendeskripsikan perangkat keras dan cara menggunakan FPGA? Pembenaran program.Dalam gambar dunia yang diwakili oleh pendidikan sekolah, ada "titik buta" di bidang prinsip-prinsip merancang elektronik digital, antara fisika dan pemrograman. Kursus robotika dan Arduino tidak menutup titik buta ini, karena mereka datang ke pemrograman chip yang sudah jadi. Latihan-latihan dengan elemen-elemen diskrit dan sirkuit mikro dari tingkat kecil integrasi, meskipun efektif dalam memperkenalkan prinsip-prinsip dasar, didasarkan pada teknologi tahun 1960-1970-an dan tidak mengandung tautan apa pun ke desain modern. Bintik buta dapat ditutup dengan memperkenalkan elemen bahasa deskripsi perangkat keras (NLA) dan chip FPGA (sirkuit terintegrasi logika yang dapat diprogram) yang tersedia untuk eksperimen sekolah - matriks elemen logika yang dapat dikonfigurasi ulang. Dengan demikian, gambaran dunia menjadi integral, dan memberikan kontribusi pada penciptaan lingkungan untuk munculnya sejumlah besar insinyur muda yang memiliki gagasan tentang semua aspek sirkuit mikro modern untuk aplikasi seperti mobil self-driving, dan dapat mengkhususkan diri di masa depan untuk desain satu atau aspek lain dari perangkat tersebut.
Pengenalan NLA dan FPGA ke dalam kurikulum sekolah juga terkait dengan kursus matematika dan fisika di sekolah fisika dan matematika - aljabar Boolean, skema aritmatika, dan mesin negara yang terbatas.
Perhatikan bahwa NLA dan FPGA, meskipun memiliki kemiripan dengan pemrograman, menggunakan konsep dasar lainnya:
Pemrograman: eksekusi berurutan, cabang seleksi, loop, variabel, ekspresi, array (dengan model flat addressable memory), fungsi (berdasarkan penggunaan stack), rekursi.
Desain logika digital: elemen logika kombinasional; membangun logika kombinasional dari elemen-elemen cloud ini, termasuk seleksi primitif menggunakan multiplexer, serta blok untuk mengimplementasikan ekspresi aritmatika; konsep sinyal jam untuk menyinkronkan perhitungan dan pengulangan, konsep pemicu-D untuk menyimpan keadaan saat ini di antara tindakan; mesin negara; operasi paralel, hierarki modul, konsep pipa (tidak hanya untuk prosesor, tetapi juga untuk unit aritmatika).
2. Rencana umum kursus tersebut:Bagian 1. Koneksi dengan fisika, dengan laboratorium pada komponen diskrit.
Bagian 2. Dasar-dasar logika dan aritmatika digital, dengan sirkuit mikro laboratorium dengan tingkat integrasi yang kecil.
Bagian 3. Merancang sirkuit berdasarkan sintesis bahasa deskripsi perangkat keras, dengan yang laboratorium di Xilinx atau Altera FPGAs.
Bagian 4. Arsitektur prosesor: pandangan dari sisi programmer, dengan laboratorium yang menggunakan simulator prosesor RISC pada tingkat instruksi, misalnya MARS MIPS.
Bagian 5. Mikroarsitektur: membangun prosesor.
Proyek individu: integrasi sensor atau perangkat periferal lainnya dengan sirkuit yang diterapkan dalam FPGA.
3. Hasil percobaan Kiev.Teks terperinci dengan hasil eksperimen Kiev ditulis oleh seorang guru di Institut Politeknik Kiev, Yevgeny Korotky. Saya akan menambahkannya dengan kesimpulan pribadi saya. Latar Belakang - pos di HabrΓ© dan Geektimes -
1 ,
2 ,
3 ,
4 ). Dalam posting itu pertanyaan diajukan. Inilah jawabannya:
Hipotesis bahwa anak sekolah dapat menggunakan Verilog telah dikonfirmasi
Verilog juga ternyata menarik bagi sejumlah anak sekolah yang cukup (beberapa rekan meragukan hal ini sebelum Kiev, dengan alasan bahwa anak-anak lebih tertarik pada proyek-proyek seperti lengan robot dengan mikrokontroler)
Gagasan bahwa sebelum menggunakan Verilog, akan bermanfaat untuk menunjukkan elemen logika anak sekolah dan pemicu-D pada sirkuit mikro dari tingkat integrasi yang kecil - tidak hanya bahwa hal itu benar-benar dikonfirmasi, tetapi menerima lebih banyak pembenaran.
Secara total, setelah satu hari pengalaman dengan veril, beberapa siswa mulai mengajukan pertanyaan yang dapat dipahami - misalnya, kapan harus menggunakan pemblokiran dan kapan harus menggunakan tugas yang tidak menghalangi.
Tampaknya tidak realistis untuk membawa anak sekolah dari nol ke mesin negara yang mengimplementasikan protokol seperti SPI dalam satu minggu, tetapi ke mesin negara dari kunci kode atau lampu lalu lintas - sungguh.
Ini juga tidak realistis untuk membawa satu minggu untuk desain prosesor, tetapi kami akan mencoba melakukannya dalam dua minggu di Novosibirsk.
Selama percobaan di Kiev, kami mencoba untuk berbicara tentang FPGA dan prosesor tertanam (MediaTek MT7688, yang terletak di suatu tempat di tengah-tengah antara Arduino dan Intel Galileo atau Rasbery Pye dalam hal kinerja). Kemudian kami membuat hackathon (di Akademi Kiev-Mohyla) dan mengamati berapa banyak anak sekolah yang memilih proyek FPGA untuk hackathon dan berapa banyak proyek dengan prosesor terintegrasi. Ternyata - 50 hingga 50. Sangat menarik - sebelum hackathon, saya tidak tahu apa yang akan terjadi.
Saya khawatir anak sekolah mungkin bingung dengan antarmuka pengguna di Xilinx Vivado, dengan banyak opsi dan elemen antarmuka. Tetapi ternyata para siswa tidak peduli - GUI yang kompleks tidak membuat mereka takut.
Sebagian besar siswa menggunakan Windows. Bersama dengan kolega saya Alexander Belits, saya punya ide untuk mempersiapkan acara semacam itu beberapa lusin drive SSD yang dapat di-boot dengan Linux (Ubuntu atau CentOS) dan memakainya dari satu acara ke acara lainnya. Alex bahkan menulis skrip untuk mengkloning drive tersebut. Ubuntu lebih ramah, tetapi CentOS lebih resmi didukung oleh alat otomatisasi desain sirkuit FPGA, khususnya Xilinx Vivado dan Altera Quartus. Apakah mungkin untuk melakukan program pendidikan Linux dan program pendidikan Verilog / FPGA secara bersamaan selama perkemahan musim panas? Tidak jelas, tetapi bisa dicoba.
Ternyata Xilinx Vivado buggy tanpa ampun saat mengkonfigurasi Artix-7 FPGA, jika Anda menggunakan kabel micro-USB murah yang tidak terlindung. Pada beberapa arus mistis, sebelum pergi ke Kiev, saya meletakkan selusin tali berkualitas tinggi di dalam koper saya, dan ini menyelamatkan seminar.
Saya memiliki gagasan bahwa menggunakan modul FPGA yang dapat dilipat (papan FPGA yang menempel di papan papan tempat memotong roti), seperti Digilent Cmod A7 35T , dapat memudahkan siswa untuk beralih dari latihan dengan chip integrasi kecil ke latihan dengan FPGA. Apakah ide ini benar, saya tidak mengerti. Mungkin penggunaan motherboard yang lebih besar dengan seperangkat peripheral yang kaya, seperti Terasic DE10-Lite , tidak akan lebih buruk. Pokoknya, ketika beralih dari sirkuit mikro dengan tingkat integrasi rendah (CMOS 4000 atau 74HC) ke FPGA - Anda perlu mengubah tegangan suplai (dari 9 V atau 5 V menjadi 3,3 V), sehingga Anda tidak dapat menggunakan Cmod A7 alih-alih mengatakan CMOD 4013 di papan tempat memotong roti yang sama dengan lampu dan tombol, dan berharap semuanya akan terus berfungsi.
Saya membenarkan pengamatan saya bahwa untuk mengadakan acara pendidikan jangka pendek (1 minggu), sangat penting bahwa tim siswa dari universitas setempat siap untuk membimbing anak-anak sekolah. Dalam kasus Kiev, tim semacam itu disediakan oleh guru Institut Politeknik Kiev, Eugene Korotky .
Menjadi lebih atau kurang jelas dalam hal apa dan sejauh mana nilainya termasuk dalam program acara semacam itu bagian tentang tingkat transistor dan tentang produksi sirkuit mikro. Bagian ini diajarkan oleh Associate Professor dari Kiev National University Alexander Barabanov , penerjemah materi pada kursus ASIC Nanometer untuk siswa. Rupanya, materi ini harus sepenuhnya dimasukkan dalam kursus tahunan untuk anak sekolah, dalam kursus kecil - dalam kursus dua minggu dalam format perkemahan musim panas, tetapi dengan durasi kurang dari seminggu Anda mungkin harus memberikan mikrosirkuit dengan tingkat integrasi kecil segera (dalam waktu 1 jam setelah dimulainya) (misalnya CMOS 4000) dan menyebutkan transistor secara sepintas, dalam bentuk βtransistor adalah perangkat di mana arus mengalir dari titik A ke titik B, jika tegangan C adalah 1 (atau 0) dalam C. Dari transistor dimungkinkan untuk membangun elemen logis DAN, ATAU, BUKAN (tunjukkan gambar). "
Selama kuliah di depan audiens yang besar, siswa dapat ditunjukkan sirkuit yang dirakit di papan tempat memotong roti dari mikrosirkulasi dengan tingkat integrasi yang kecil. Ini visual, memancing minat, dan juga tidak perlu menghubungkan desain ke komputer - hanya dengan baterai 9 V. Saya menunjukkan tiga sirkuit ini yang paling penting untuk dipahami - elemen logika XOR, 4-bit combiner D-trigger adder dengan frekuensi urutan 1 Hertz ( mis. mengukur per detik).
Pertanyaannya tetap terbuka apakah mungkin untuk mengajarkan siswa ide perpipaan, salah satu ide paling kuat dalam desain digital dan organisasi komputasi pada umumnya. Untuk ini, tidak perlu membangun prosesor konveyor, Anda dapat membuat perangkat aritmatika konveyor . Mungkin ini dapat disebutkan di akhir kursus, ketika anak-anak bermain cukup dengan sirkuit kombinasional dan sekuensial sederhana serta mesin negara. Kemungkinan besar itu akan menarik bagi sebagian kecil anak sekolah, tetapi patut dicoba.
Untuk acara yang lebih otentik, Anda dapat menggunakan proyek individual dan pekerjaan verifikasi .
Kode pada GitHub digunakan untuk acara Kiev
4. Sumber informasi untuk pengembangan materi masa depan.Sumber informasi untuk guru sekolah pendidikan jasmani, yang cenderung mengembangkan sebagian besar materi terperinci, setelah percobaan awal dengan siswa di Ukraina, Rusia dan Lembah Silikon:
Buku Teks oleh David Harris dan Sarah Harris "Sirkuit digital dan arsitektur komputer", edisi 2, terjemahan Rusia. Buku teks ini dapat diunduh secara gratis, lihat artikel tentang HabrΓ© tentang hal itu - 1 , 2 , 3 . Baru- baru ini, edisi kertas baru dengan pencetakan warna yang ditingkatkan juga telah dirilis.
Slide untuk guru, selain buku teks Harris & Harris. Unduhan gratis.
Materi tentang kursus Dari NAND ke Tetris , yang dibuat di Israel dan diperkenalkan di beberapa universitas Amerika. Pada saat yang sama, IMHO, kursus harus menggunakan ide dan kerangka, tetapi melakukan implementasi pada subset alat desain "dewasa", daripada alat "anak-anak" buatan, seperti kursus. Bagian-bagian penting diunduh secara gratis.
Buku Charles Petzold "Code", yang secara memadai menjelaskan banyak konsep pada jari dan yang levelnya sesuai dengan tingkat sekolah (ide tersebut disarankan oleh guru sekolah ORT Kiev, Sergey Dziuba ). Sekali lagi, dari sudut pandang saya, ada baiknya menggunakan ide dan kerangka dari buku, tetapi sebagian besar materi harus diganti dengan yang lebih benar (daripada menggunakan kait (D-kait) menggunakan D-flip-flop (D-flip-flop)) dan modern, misalnya, alih-alih akumulator Berbasis 6800 dan 8080 kuno menggunakan subset arsitektur RISC.
Kit untuk membangun sirkuit pada papan tempat memotong roti berdasarkan komponen diskrit dan sirkuit mikro tingkat kecil integrasi dari perusahaan Amerika ETron Circuit Labs, perusahaan Rusia Cyberfizika, perusahaan Ukraina Radiomag (saya bisa menjelaskan perbedaan antara set ini di komentar, jika Anda tertarik).
Bahan dari produsen FPGA (Xilinx, Altera) dan kartu pendidikan dengan FPGA (Digilent, Terasic).
Contoh kode, tes, dan rekomendasi proyek yang dikembangkan oleh Anton Moiseev, Yuri Panchul, Eugene Korotkiy, Alexander Barabanov, dan insinyur perusahaan lainnya serta profesor universitas untuk berbagai acara di California, Kazakhstan, Rusia, dan Ukraina.
5. Merencanakan untuk masalah masa depan 1. Format program tahunan selama 35 jam akademik, tersebar untuk tahun akademik, satu jam semingguDari fisika ke elemen diskrit
Apa arus, tegangan dan resistansi. Bagaimana cara kerja papan tempat memotong roti? Latihan: Sirkuit pertama dengan baterai, LED dan resistor. Mengapa menghubungkan resistor ke sirkuit dengan LED. Baca label resistor. Resistor variabel, fotoresistor.
Apa itu transistor? Tinjauan beralih elemen dari relay, tabung radio, transistor diskrit ke transistor pada sirkuit mikro. Latihan dengan thyristor (SCR - rectifier terkontrol silikon - lebih jelas daripada transistor), transistor pnp dan npn bipolar.
Pekerjaan verifikasi.
Dari elemen diskrit hingga logika kombinasional
Aljabar Boolean dan aljabar logika. Operasi, ekspresi, aksioma, dan identitas, termasuk hukum de Morgan. Tabel kebenaran.
Elemen logika kombinasional DAN, ATAU, TIDAK, DAN-TIDAK, ATAU TIDAK, EKSKLUSIF-ATAU (DAN, ATAU, TIDAK, NAND, NOR, XOR). Bagaimana elemen kombinasional dibangun dari transistor. Latihan: membangun AND, NAND, atau NOR dari elemen diskrit.
Elemen-elemen logis dalam rangkaian mikro dari tingkat integrasi yang kecil. Latihan individu: setiap siswa diberikan chip logika pribadi dari seri CMOS 4000, dengan deskripsi teknis dari pabrikan, dengan tugas menggambar tabel kebenaran, memperagakan pekerjaannya, dan secara verbal menggambarkan fungsinya. Chip berisi elemen logis AND, OR, XOR, NOR, NAND dengan jumlah input yang berbeda. Apa itu pull-up resistor dan mengapa mereka dibutuhkan. Tambahkan tombol dan resistor pull-up ke latihan sebelumnya.
Pekerjaan verifikasi.
Aritmatika biner dan implementasinya
Angka biner Konversi dari biner ke desimal dan sebaliknya. Penambahan dan operasi multiplikasi. Angka negatif dan kode tambahan.
Implementasi setengah penambah dan penambah penuh menggunakan elemen logika. Migrasi Multi-bit adder dengan carry berurutan. Latihan di papan tempat memotong roti. Sebutkan waktu tunda yang lama dan skema dengan waktu tunda yang lebih optimal.
Menggunakan penambah penuh 4-bit CMOD 4008. Membangun darinya penambah 8-bit dan skema pengurangan. Pekerjaan rumah untuk siswa tingkat lanjut: untuk belajar dan membuat presentasi tentang penerapan penambah cepat dengan transfer kelompok yang dipercepat.
Pekerjaan verifikasi.
Logika berurutan
Membangun generator jam berdasarkan chip 555. Mempelajari efek kapasitor dan resistensi pada frekuensi dan durasi level tinggi dan rendah.
Karena kapasitor termasuk dalam strapping 555, penjelasan tambahan mungkin diperlukan tentang apa kapasitor itu, mengapa mereka diperlukan dalam strapping 555, dan bagaimana mereka diberi label. Latihan bantu dengan pengisian dan pemakaian kapasitor dengan kapasitas berbeda juga dapat bermanfaat.
Skema dengan keadaan internal. Membangun kait RS dari gerbang NAND. Mempelajari perilaku D-flip-flop menggunakan chip CMOS 4013 dan sinyal clock dari 555 dengan frekuensi 1 Hz.
Blok serial - penghitung (CMOS 4029) dan register geser (4015). Indikator tujuh segmen dan drivernya 4511. Latihan dengan sirkuit mikro ini.
Ujian
Dari Sirkuit Terpadu Kecil ke FPGA - Logika Kombinasional
Konsep FPGA (programmable logic integrated circuit) - sebuah matriks elemen-elemen logika yang dapat dikonfigurasi ulang. Konsep bahasa deskripsi perangkat keras Verilog, sintesis, penempatan, penelusuran, dan prosedur konfigurasi. Latihan: sintesis modul kombinasi paling sederhana dengan konfigurasi FPGA di papan pelatihan.
Terus belajar Verilog. Jenis data, ekspresi, penugasan. Selalu blok dan operator dasar. : , .
Verilog. . : . : .
Verilog . / . . : , Verilog. Icarus Verilog GTKWave .
: , ( ).
Verilog
Verilog, D- . : always-. Icarus Verilog.
: D-, . . : .
. . : .
. ( ) c . : , : , .
. , .
.
: , RISC- , MARS MIPS .
- . : , , , . . . β MARS MIPS. .
, , . : . .
. . . : , . .
.
:
Verilog MIPS , , . , , . . .
9.1
6. 2., .
, . . .
. CMOS 4000, , , . AND, OR, XOR, NOR, NAND . , .
2 , .
4- CMOD 4008.
8- 4-.
-a == ~ a + 1
555. .
D- CMOS 4013 555 1 .
β β CMOS 4015.
(CMOS 4029) 4511.
( ) β . Verilog, , , . Verilog, , . Always- .
.
, .
Verilog. . Verilog . / . .
: .
, Verilog. Icarus Verilog , GTKWave .
Verilog. Verilog, D- . : always-. Icarus Verilog. .
.
.
.
2 3 .
. . . ( ) c .
β β.
.
.
: . - . MARS MIPS .
: , , , . . . .
, , . .
. . . , . .
: .
Verilog MIPS , , . , , . . .
.
Lampiran A. Apa bahasa deskripsi perangkat keras Verilog dan bagaimana kaitannya dengan desainsirkuit mikro Dari sebuah pos di Geektimes Microelectronics Scammers . Laporan video dari Konferensi Desain Elektronik San Francisco.25 Verilog ( β VHDL), (logic synthesis) , (static timing analysis) , , (place-and-route) .
: , , , , static timing analysis, floorplanning, place-n-route, parasitics extraction .. β GDSII, , . Taiwan Semiconductor Manufacturing Company TSMC.
Lampiran B. Apa itu FPGA / FPGA dan mengapa studi FPGA tidak dapat digantikan oleh studi yang lebih mendalam tentang Arduino atau Rasberry Pye.Dari sebuah pos di Habr. Bagaimana memulai mengembangkan besi menggunakan FPGA - petunjuk langkah demi langkah :FPGA , , . AND , β .. β FPGA , , ..
- / FPGA β , «» ( -) (), ( ) ().
β FPGA, look-up table (LUT) flip-flop. , , .

, FPGA:

:

C. ,(system on chip, SoC), IP- (CPU, GPU, DSP) β , . ADAS (advanced driver-assistance systems) .
, , , ( 1980- β 1990- ). (hardware description languages β HDL), (register transfer level β RTL), RTL-to-GDSII, Verilog VHDL , FPGA (field-programmable gate arrays). , -, -. HDL RTL , , , , 1980- .
Selain konferensi di Tomsk dan eksperimen berikutnya yang direncanakan pada bulan Juli dan Novosibirsk, yang didukung oleh Sekolah Musim Panas Pemuda Programer Novosibirsk, ada juga rencana awal untuk mengadakan eksperimen semacam itu di Kazakhstan (ini terutama tertarik pada Venus Zhanalina yang menghadiri seminar Kiev).
Lampiran D. Contoh kode Verilog sederhana dan skema yang dihasilkannyamodule adder
(
input a,
input b,
input carry_in,
output reg sum,
output reg carry_out
);
reg p, q;
always @*
begin
p = a ^ b;
q = a & b;
sum = p ^ carry_in;
carry_out = q | (p & carry_in);
end
endmodule

module counter
(
input clock,
input resetn,
input load,
input [15:0] load_data,
output reg [15:0] count
);
always @ (posedge clock or negedge resetn)
begin
if (! resetn)
count <= 0;
else if (load)
count <= load_data;
else
count <= count + 1;
end
endmodule
Cara kerjanya:
Penjelasan terperinci ada dalam teks "Pengantar desain chipset Harver untuk programmer yang belum pernah melakukan ini . "Jika Anda seorang guru dan ingin berpartisipasi dalam pengembangan materi seperti itu (ini semua atas dasar sukarela, tanpa komunikasi dengan perusahaan tertentu), beri tahu saya di komentar. Setiap kritik juga menarik.