Pelajaran Teach
Logik digital pada DE1-SoC dengan VHDL (1/6): gerbang pertama anda pada perkakasan sebenar
Tulis gerbang logik dalam VHDL, 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 VHDL menghuraikan perkakasan, bukan atur cara yang berjalan langkah demi langkah.
Menggunakan aliran kerja VHDL 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 VHDL, 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 VHDL 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 downto 0) — 10 suis gelangsar yang anda kawal pada skrin. Suis yang dinaikkan mewakili logik 1.
- KEY(3 downto 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 downto 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 VHDL LabsLand dibuka dengan satu fail, blink.vhd, yang mengandungi entiti aras teratas bernama blink. Anda akan menggantikan seluruh kandungan fail itu dengan reka bentuk latihan sambil mengekalkan nama entiti blink. 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 blink.vhd, pilih Jalankan sintesis (Synthesize, Quartus pada pelayan), pilih Muat naik ke FPGA (Upload to FPGA), kawal suis pada skrin dan perhatikan kamera langsung. Entiti VHDL anda disintesis terus sebagai reka bentuk aras teratas, jadi anda hanya perlu mengedit satu fail ini.
Pernyataan manakah yang paling tepat menerangkan fungsi VHDL 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 VHDL, gerbang ini ditulis dengan operator logik and, or, not dan xor. Reka bentuk di bawah menyambungkan suis SW(0) kepada A, suis SW(1) kepada B dan menghantar hasil setiap gerbang kepada satu LED. Penugasan isyarat serentak seperti LEDR(0) <= A and B; bermaksud output sentiasa mengikut ungkapan itu, sama seperti wayar yang disambungkan kepada gerbang.
-- Templat awal pelajar: lengkapkan baris TODO sebelum menjalankan sintesis.
-- Pelajaran 1 - gerbang asas. Gantikan SELURUH kandungan blink.vhd dengan reka bentuk ini.
library ieee;
use ieee.std_logic_1164.all;
entity blink is
port (
SW : in std_logic_vector(9 downto 0); -- SW(0)=A, SW(1)=B
LEDR : out std_logic_vector(9 downto 0)
);
end entity blink;
architecture rtl of blink is
signal A, B : std_logic;
begin
A <= SW(0);
B <= SW(1);
LEDR(0) <= TODO_AND; -- TODO: ungkapan bagi AND
LEDR(1) <= TODO_OR; -- TODO: ungkapan bagi OR
LEDR(2) <= TODO_NOT_A; -- TODO: ungkapan bagi NOT A
LEDR(3) <= TODO_NAND; -- TODO: ungkapan bagi NAND
LEDR(4) <= TODO_NOR; -- TODO: ungkapan bagi NOR
LEDR(5) <= TODO_XOR; -- TODO: ungkapan bagi XOR
LEDR(9 downto 6) <= (others => '0'); -- LED tidak digunakan kekal padam
end architecture rtl;
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 VHDL DE1-SoC. Editor akan memaparkan fail
blink.vhd.Pilih seluruh kandungan
blink.vhddan gantikannya dengan reka bentuk awal gerbang asas di atas. Lengkapkan setiap baris TODO dan kekalkan nama entiti sebagaiblink.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
SW(0)danSW(1)pada skrin diturunkan (A=0, B=0), perhatikan LED yang menyala pada kamera dan bandingkan dengan jangkaan anda.Naikkan
SW(1)dan turunkanSW(0)(A=0, B=1), kemudian turunkanSW(1)dan naikkanSW(0)(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 = SW(0) | B = SW(1) | 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.