Folosiți manualul setului de instrucțiuni AVR pentru a implementa codificările și decodificările comenzilor. Căutați în meniu capitolele aferente fiecărei instrucțiuni.

În scheletul de laborator sunt câteva fișiere de interes:

  • decode_unit.v se ocupă de decodificarea instrucțiunilor. Aici trebuie să adăugăm instrucțiunile noi.
  • control_unit.v implementează logica de control. Aici trebuie sa translatăm type în opcode.
  • alu.v execută operații aritmetice și logice. Aici trebuie calculate rezultatele operațiilor aritmetice.
  • rom.v conține codul ce va fi executat.

Cheatsheet schelet laborator

Dacă implementați complet instrucțiunile necesare, în urma simulării checker_view.v toate semnalele vor fi verzi. Codul se află într-o memorie ROM, așadar pentru orice schimbare în cod tot designul trebuie resimulat.

Task 00 Descărcați scheletul de laborator.

Următoarele task-uri necesită modificări în mai multe fișiere din arhivă. Căutați TODO-urile din fișierele decode_unit.v (pentru etapa de ID), alu.v (pentru etapa de EXEC), control_unit.v (pentru etapa de WB).

Task 01 (1p) Implementați instrucțiunea NOP.

Task 02 (1p) Implementați instrucțiunea NEG.

Task 03 (2p) Implementați instrucțiunea ADD.

Task 04 (2p) Implementați instrucțiunea SUB.

Task 05 (2p) Implementați instrucțiunea AND.

Task 06 (2p) Implementați instrucțiunea OR.

Pentru instrucțiunile care nu modifică în mod explicit valoarea unui bit din registrul SREG, acel bit trebuie setat pe 0!

Mai exact:

  • Pentru NOP, toți biții registrului SREG trebuie setati pe 0
  • Pentru toate celelalte instructiuni, biții I (Interrupt) si T (Timer) trebuie setați pe 0

apm/laboratoare/02/exercitii.txt · Last modified: 2025/10/21 20:23 by stefan.maruntis
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0