Teach Pelajaran dengan makmal jarak jauh

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.

  • Altera DE1-SoC
  • 50 min
  • Menengah atas teknikal, latihan vokasional awal atau kursus teknikal peringkat awal
  • ms-MY
  • Digital systems & FPGA
Altera DE1-SoC
Altera DE1-SoC

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.

1

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.
- HEX0HEX5 — 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 Verilog DE1-SoC LabsLand: edit modul aras teratas leds_mirror.v, jalankan sintesis dengan Quartus pada pelayan, muat naik reka bentuk ke FPGA sebenar, kemudian gunakan suis pada skrin dan perhatikan kamera langsung.

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.

2

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.

3

Jalankan sintesis, muat naik dan sahkan

16 min

Sekarang bina litar pada papan sebenar dan bandingkannya dengan jadual kebenaran.

  1. Buka makmal Verilog DE1-SoC. Editor akan memaparkan fail leds_mirror.v.

  2. Pilih seluruh kandungan leds_mirror.v dan gantikannya dengan modul gerbang asas di atas. Kekalkan nama modul sebagai leds_mirror.

  3. 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.

  4. Pilih Muat naik ke FPGA (Upload to FPGA) dan tunggu sehingga sesi papan serta kamera langsung muncul.

  5. Dengan suis SW0 dan SW1 pada skrin diturunkan (A=0, B=0), perhatikan LED yang menyala pada kamera dan bandingkan dengan jangkaan anda.

  6. Naikkan SW1 (A=0, B=1), kemudian naikkan SW0 (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.

4

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.