Teach Pelajaran dengan makmal jarak jauh

Pelajaran Teach

Nios V pada DE1-SoC (3/5): I/O assembly RISC-V

Ubah suai I/O assembly RISC-V, jejaki arahan muat dan simpan, serta uji tingkah laku suis kepada LED pada DE1-SoC.

  • Nios V for DE1-SoC
  • 55 min
  • Prasiswazah Sains atau Kejuruteraan Komputer
  • ms-MY
  • Digital systems & FPGA · Embedded systems
Nios V for DE1-SoC
Nios V for DE1-SoC · Butiran makmal

Hasil pembelajaran

  • Membina dan menjalankan fail ELF assembly RISC-V untuk Nios V.

  • Memadankan arahan muat, simpan, anjak, topeng dan cabang dengan tingkah laku C.

  • Menerangkan peranan daftar sementara dalam gelung tinjauan.

  • Mengesahkan tingkah laku assembly pada papan DE1-SoC sebenar.

Pratonton aktiviti pelajar

Kandungan aktiviti

Pratonton sahaja. Dalam sesi kelas, pelajar boleh mengisi jawapan dan menyerahkan hasil kerja mereka kepada guru.

1

Perkakasan yang sama, kod aras lebih rendah

6 min

Dalam pelajaran sebelumnya, kod C membaca data JP1, menganjak dan mengenakan topeng pada nilai NSW0..NSW9, lalu menulis hasilnya kepada daftar LED. Dalam pelajaran ini, anda akan melaksanakan gelung yang sama secara langsung dalam assembly RISC-V.

Anda tidak perlu mengetahui keseluruhan ISA RISC-V untuk bengkel ini. Gunakan rujukan ringkas ini semasa membaca atur cara permulaan:

- t0..t6: daftar sementara untuk menyimpan alamat, nilai input, topeng dan nilai output.
- zero: daftar yang sentiasa memberikan nilai 0.
- li rd, nilai: meletakkan nilai pemalar ke dalam daftar rd. Dalam pelajaran ini, arahan ini memuatkan alamat perkakasan seperti 0xFF200000 dan topeng seperti 0x3FF.
- lw rd, ofset(rs1): memuatkan satu perkataan 32 bit daripada memori ke dalam rd. Di sini, arahan ini membaca daftar perkakasan.
- sw rs2, ofset(rs1): menyimpan satu perkataan 32 bit daripada rs2 ke dalam memori. Di sini, arahan ini menulis kepada daftar perkakasan.
- srli rd, rs1, bilangan: menganjak bit dalam rs1 ke kanan sebanyak bilangan tetap dan meletakkan hasilnya dalam rd.
- and rd, rs1, rs2: mengekalkan hanya bit yang bernilai 1 dalam kedua-dua daftar sumber.
- j label: melompat kembali ke label supaya gelung tinjauan terus berjalan.

Untuk rujukan lengkap set arahan, gunakan spesifikasi rasmi ISA RISC-V tanpa keistimewaan. Bagi sistem Nios V dan persisian pemetaan memori, gunakan manual FPGAcademy DE1-SoC Computer with Nios V. Untuk aktiviti ini, rujukan ringkas di atas, nota alamat daripada Pelajaran 2 dan komen kod di bawah sudah mencukupi.

Gelung tinjauan assembly RISC-V yang memuatkan input JP1, menganjak dan mengenakan topeng padanya, menulisnya kepada LEDR, lalu mengulangi proses.

Atur cara permulaan assembly mengulangi satu gelung pemerhatian: muatkan data JP1, anjak bit NSW ke bawah, kenakan topeng pada sepuluh bit suis, simpan hasilnya kepada LEDR dan lompat kembali untuk meninjau semula.

Berdasarkan rujukan ringkas, terangkan mengapa gelung ini memerlukan operasi muat, simpan, anjak, topeng dan lompat. Anda belum perlu memikirkan sintaks yang tepat.

2

Jalankan atur cara permulaan assembly

12 min

  1. Buka Nios V Assembly IDE for DE1-SoC.

  2. Periksa main.s.

  3. Klik Build ELF (Bina ELF).

  4. Muat naik ke FPGA dengan Upload to FPGA.

  5. Tukar NSW0, NSW5 dan NSW9.

  6. Perhatikan sama ada LED merah yang sepadan berubah.

Gunakan jadual untuk merekod tiga ujian atur cara permulaan daripada makmal. Isi satu baris bagi setiap corak suis dan catat perkara yang benar-benar ditunjukkan oleh papan.

Rekod tiga ujian suis kepada LED daripada atur cara permulaan assembly. Gunakan corak suis yang telah diisi atau gantikannya dengan ujian setara yang benar-benar anda jalankan.

Input yang diuji LEDR diperhatikan pada papan Catatan
3

Jejaki gelung

13 min

Atur cara permulaan mempunyai struktur berikut:

li   t0, 0xFF200000      # LEDR
li   t1, 0xFF200060      # data GPIO JP1
li   t2, 0xFF200064      # arah GPIO JP1
sw   zero, 0(t2)         # gunakan baris GPIO JP1 sebagai input
loop:
    lw   t3, 0(t1)
    srli t3, t3, 5
    li   t4, 0x3FF
    and  t3, t3, t4
    sw   t3, 0(t0)
    j    loop

Gunakan rujukan ringkas dan komen kod untuk mengisi jadual daftar. Setiap baris perlu menerangkan perkara yang disimpan oleh daftar itu semasa gelung berjalan. Daftar t3 ialah daftar data yang diubah: pada mulanya, daftar ini mengandungi nilai input JP1 yang dimuatkan; kemudian, nilainya menjadi nilai yang telah dianjak dan dikenakan topeng sebelum ditulis kepada LED.

Bagi setiap daftar sementara, nyatakan perkara yang disimpan oleh daftar itu dalam atur cara ini dan kelaskan nilainya sebagai alamat, nilai input, topeng, nilai output atau nilai input/output yang diubah.

Daftar Peranan dalam atur cara Jenis nilai

Arahan manakah yang membaca nilai GPIO suis, dan arahan manakah yang menulis kepada LED?

Mengapakah arahan terakhir j loop penting untuk kawalan suis secara langsung?

4

Hubungkan C dengan assembly

12 min

Padankan ungkapan C ini dengan arahan assembly: (*JP1 >> 5) & 0x3FF. Baris assembly manakah yang membaca nilai daftar? Baris manakah yang melakukan anjakan? Baris manakah yang menghasilkan topeng? Baris manakah yang mengenakan topeng itu?

Nyatakan dua operasi yang disembunyikan oleh ungkapan C tetapi ditulis secara jelas dalam assembly. Kemudian, nyatakan satu perkara yang menjadi lebih sukar untuk dibaca atau diselenggara dalam assembly.

5

Ubah suai kecil pada assembly

12 min

Ubah suai assembly supaya hanya NSW0..NSW3 dipaparkan pada LED. Petunjuk: topeng berubah daripada sepuluh bit kepada empat bit.

Serahkan baris assembly yang diubah dan terangkan nilai yang anda ubah.

Huraikan satu ujian apabila suis yang lebih tinggi daripada NSW3 dihidupkan. Apakah yang patut ditunjukkan oleh LED selepas topeng diubah?