This shows you the differences between two versions of the page.
apm:laboratoare:02:exercitii [2024/10/12 14:52] laura_elena.nicoara |
apm:laboratoare:02:exercitii [2025/10/21 20:23] (current) stefan.maruntis |
||
---|---|---|---|
Line 12: | Line 12: | ||
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. | 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. | ||
</note> | </note> | ||
- | |||
- | <hidden> | ||
- | **Task 0** (1p) Inspectați scheletul laboratorului, identificați modulele din schema de mai sus și găsiți răspunsuri pentru următoarele întrebări: | ||
- | |||
- | - (0.2p) Cum se numește parametrul ce definește lățimea instrucțiunilor (Nr. biți) ? | ||
- | - (0.2p) Care e lățimea registrelor ? (Nr. bytes) | ||
- | - (0.2p) Câți bytes poate stoca memoria rom folosită pentru instrucțiuni ? | ||
- | - (0.2p) Cu se stagiu al pipeline-ului se ocupă ''alu.v'' ? | ||
- | - (0.2p) Care este valoarea inițială a registrului r4 ? | ||
- | </hidden> | ||
- | |||
**Task 00** Descărcați {{:apm:laboratoare:02:lab02.zip| scheletul de laborator}}. | **Task 00** Descărcați {{:apm:laboratoare:02:lab02.zip| scheletul de laborator}}. | ||
Line 31: | Line 20: | ||
**Task 02** (1p) Implementați instrucțiunea NEG. | **Task 02** (1p) Implementați instrucțiunea NEG. | ||
- | |||
- | <hidden> | ||
- | <note>Pentru instrucțiunea NEG, flag-ul H se calculează astfel: H = R3 + ~Rd3 (În [[http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf|AVR Instruction Set Manual]] e un typo.)</note> | ||
- | Update: manualul ISA AVR folosit în laboratoare e updatat - https://ocw.cs.pub.ro/courses/_media/apm/laboratoare/atmel-0856-avr-instruction-set-manual.pdf | ||
- | </hidden> | ||
**Task 03** (2p) Implementați instrucțiunea ADD. | **Task 03** (2p) Implementați instrucțiunea ADD. | ||
Line 44: | Line 28: | ||
**Task 06** (2p) Implementați instrucțiunea OR. | **Task 06** (2p) Implementați instrucțiunea OR. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | 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 | ||
+ | |||
+ | </note> |