Pelajaran Teach
Logik digital pada DE1-SoC (1/6): gerbang pertama anda pada perkakasan sebenar
Tulis gerbang logik dalam Verilog, jalankan sintesis dan muat naik reka bentuk ke DE1-SoC sebenar, kemudian sahkan jadual kebenaran dengan suis dan LED fizikal.
Kali pertama menggunakan LabsLand? Cipta akaun guru anda
Hasil pembelajaran
Menerangkan bahawa Verilog menghuraikan perkakasan, bukan atur cara yang berjalan baris demi baris.
Menggunakan aliran kerja DE1-SoC LabsLand: edit, jalankan sintesis, muat naik dan perhatikan.
Membina enam gerbang logik asas dan mengesahkan jadual kebenarannya pada perkakasan sebenar.
Mengenal pasti LED aktif-tinggi dan butang tekan aktif-rendah pada DE1-SoC.
Pratonton aktiviti pelajar
Kandungan aktiviti
Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.
Perkara yang akan anda lakukan
12 min
Kebanyakan pengaturcaraan yang anda kenali berjalan pada pemproses: arahan dilaksanakan satu demi satu. Dalam kursus ini, anda akan melakukan sesuatu yang berbeza. Anda akan menghuraikan litar digital dalam bahasa yang dipanggil Verilog, dan cip sebenar akan dikonfigurasikan untuk menjadi litar tersebut. Tiada pemproses yang menjalankan baris kod anda satu demi satu; huraian anda menjadi wayar dan gerbang sebenar yang semuanya beroperasi serentak.
Cip itu ialah FPGA (*Field-Programmable Gate Array*), iaitu litar bersepadu dengan rangkaian besar blok logik yang sambungannya boleh dikonfigurasikan semula. Papan yang digunakan ialah Terasic DE1-SoC dengan FPGA Cyclone V Intel/Altera, papan yang turut digunakan dalam banyak kursus reka bentuk digital universiti. Anda mengakses papan sebenar melalui pelayar dengan LabsLand: pelayan menjalankan Intel Quartus untuk menukarkan Verilog anda kepada fail konfigurasi, memprogram papan fizikal dan menyiarkan kamera langsung supaya anda dapat melihat tindak balas LED sebenar.
Bahagian papan yang akan anda gunakan dalam kursus ini:
- SW[9:0] — 10 suis gelangsar yang anda kawal pada skrin. Suis yang dinaikkan mewakili logik 1.
- KEY[3:0] — 4 butang tekan. Butang ini aktif-rendah: bacaannya ialah 0 apabila ditekan dan 1 apabila dilepaskan.
- CLOCK_50 — isyarat jam 50 MHz yang digunakan mulai Pelajaran 3.
- LEDR[9:0] — 10 LED merah, dengan LEDR0 di hujung kanan baris dan LEDR9 di hujung kiri. LED ini aktif-tinggi: LED menyala apabila dipacu dengan 1.
- HEX0–HEX5 — enam paparan 7 segmen. Paparan ini aktif-rendah: segmen menyala apabila dipacu dengan 0.
Aliran kerja adalah sama dalam setiap pelajaran: editor Verilog LabsLand dibuka dengan satu fail, leds_mirror.v, yang mengandungi modul aras teratas bernama leds_mirror. Anda akan menggantikan seluruh kandungan fail itu dengan reka bentuk latihan sambil mengekalkan nama modul leds_mirror. Kemudian pilih Jalankan sintesis (Synthesize), tunggu sehingga selesai, pilih Muat naik ke FPGA (Upload to FPGA) dan gunakan suis pada skrin sambil memerhatikan kamera. Jika lawatan berpandu atau lapisan bantuan menutupi butang editor, tutup atau langkau lawatan itu sebelum meneruskan.
Aliran kerja kursus: edit leds_mirror.v, pilih Jalankan sintesis (Synthesize, Quartus pada pelayan), pilih Muat naik ke FPGA (Upload to FPGA), kawal suis pada skrin dan perhatikan kamera langsung. Modul Verilog anda disintesis terus sebagai reka bentuk aras teratas, jadi anda hanya perlu mengedit satu fail ini.
Pernyataan manakah yang paling tepat menerangkan fungsi Verilog anda dalam makmal ini?
Pada papan ini, nilai apakah yang menyalakan LED, dan apakah nilai yang dibaca oleh butang KEY apabila ditekan? Jawab dalam satu ayat.
Enam gerbang asas
12 min
Gerbang logik menerima satu atau lebih input perduaan dan menghasilkan output perduaan. Enam gerbang merangkumi hampir semua perkara yang akan anda gunakan dalam kursus ini. Dengan input A dan B:
Jadual kebenaran bagi A, B:
- A=0, B=0 -> AND 0, OR 0, NOT A 1, NAND 1, NOR 1, XOR 0
- A=0, B=1 -> AND 0, OR 1, NOT A 1, NAND 1, NOR 0, XOR 1
- A=1, B=0 -> AND 0, OR 1, NOT A 0, NAND 1, NOR 0, XOR 1
- A=1, B=1 -> AND 1, OR 1, NOT A 0, NAND 0, NOR 0, XOR 0
Dalam Verilog, gerbang ini menggunakan operator bit demi bit & | ~ ^. Reka bentuk di bawah menyambungkan suis SW[0] kepada A, suis SW[1] kepada B dan menghantar hasil setiap gerbang kepada satu LED. assign bermaksud “output ini sentiasa sama dengan ungkapan ini”, sama seperti wayar yang disambungkan kepada gerbang logik.
// Pelajaran 1 - templat awal gerbang asas. Gantikan seluruh kandungan leds_mirror.v dengan kod ini.
// Lengkapkan setiap ungkapan TODO sebelum menjalankan sintesis.
module leds_mirror(SW, LEDR);
input [9:0] SW; // SW[0] = A, SW[1] = B (suis lain tidak digunakan)
output [9:0] LEDR;
wire A = SW[0];
wire B = SW[1];
assign LEDR[0] = TODO_AND_EXPRESSION; // AND
assign LEDR[1] = TODO_OR_EXPRESSION; // OR
assign LEDR[2] = TODO_NOT_A_EXPRESSION; // NOT A
assign LEDR[3] = TODO_NAND_EXPRESSION; // NAND
assign LEDR[4] = TODO_NOR_EXPRESSION; // NOR
assign LEDR[5] = TODO_XOR_EXPRESSION; // XOR
assign LEDR[9:6] = 4'b0000; // LED yang tidak digunakan kekal padam
endmodule
Sebelum menjalankannya, tentukan sendiri corak awal LED. Apabila kedua-dua suis diturunkan, A=0 dan B=0. Cari baris itu dalam jadual kebenaran di atas dan tentukan sama ada output setiap gerbang ialah 1. Dalam langkah seterusnya, anda akan membandingkan jangkaan anda dengan papan sebenar.
Dengan kedua-dua suis diturunkan (A=0, B=0), LED manakah antara LEDR[0] hingga LEDR[5] yang anda jangka akan menyala? Senaraikannya sebelum menjalankan reka bentuk.
Jalankan sintesis, muat naik dan sahkan
16 min
Sekarang bina litar pada papan sebenar dan bandingkannya dengan jadual kebenaran.
Buka makmal Verilog DE1-SoC. Editor akan memaparkan fail
leds_mirror.v.Pilih seluruh kandungan
leds_mirror.vdan gantikannya dengan modul gerbang asas di atas. Kekalkan nama modul sebagaileds_mirror.Pilih Jalankan sintesis (
Synthesize). Jika lawatan berpandu menutupi butang, tutup atau langkau lawatan itu terlebih dahulu. Tunggu sehingga selesai, biasanya sekitar 1 hingga 3 minit. Jika ralat dilaporkan, periksa tanda koma bernoktah yang hilang atau kurungan yang tidak sepadan, betulkannya dan jalankan sintesis semula. Binaan mungkin memaparkan banyak amaran; teruskan hanya apabila status akhir menyatakan binaan berjaya dengan 0 ralat.Pilih Muat naik ke FPGA (
Upload to FPGA) dan tunggu sehingga sesi papan serta kamera langsung muncul.Dengan suis
SW0danSW1pada skrin diturunkan (A=0, B=0), perhatikan LED yang menyala pada kamera dan bandingkan dengan jangkaan anda.Naikkan
SW1(A=0, B=1), kemudian naikkanSW0(A=1, B=0) dan akhirnya naikkan kedua-duanya (A=1, B=1), sambil memerhatikan enam LED bagi setiap keadaan.
Bagi setiap baris input, tetapkan suis dan catat perkara yang ditunjukkan oleh enam LED pada kamera (1 = menyala, 0 = padam). Bandingkan dengan jadual kebenaran dalam langkah sebelumnya.
| A = SW0 | B = SW1 | LEDR0 AND | LEDR1 OR | LEDR2 NOT A | LEDR3 NAND | LEDR4 NOR | LEDR5 XOR |
|---|---|---|---|---|---|---|---|
Hantar bukti anda. Ambil tangkapan kamera apabila kedua-dua suis dinaikkan (SW = 11): LEDR0 (AND) dan LEDR1 (OR) sepatutnya menyala, manakala yang lain padam. Lampirkan imej dalam ruang di bawah.
Gerbang tunggal manakah yang menghasilkan 1 bagi tepat satu gabungan input, iaitu baris A=1, B=1?
Gerbang tunggal manakah yang menghasilkan 1 bagi tepat satu gabungan input, iaitu baris A=0, B=0?
Dengan kata-kata anda sendiri, apakah maksud NAND dan NOR dari segi AND/OR diikuti NOT? Gunakan data yang dicatat untuk menyokong jawapan anda.
Semakan aliran kerja
10 min
Urutan manakah yang sepadan dengan perkara yang baru anda lakukan?
Dalam tiga ayat, terangkan perkara yang dilakukan oleh Jalankan sintesis, perkara yang dilakukan oleh Muat naik ke FPGA dan cara anda mengetahui bahawa gerbang berfungsi. Nyatakan satu keadaan yang menunjukkan kepentingan kekutuban aktif-tinggi atau aktif-rendah.