This shows you the differences between two versions of the page.
apm:laboratoare:01:exercitii [2024/10/17 11:02] stefan.maruntis |
apm:laboratoare:01:exercitii [2025/10/09 02:31] (current) mihnea.dinica |
||
---|---|---|---|
Line 2: | Line 2: | ||
**Task 01: Jocuri de lumini, memoria ROM** (3p): | **Task 01: Jocuri de lumini, memoria ROM** (3p): | ||
- | * Analizați codul memoriei ROM din fișierul //task01.v//. Ce capacitate are această memorie ROM? Câți biți? Câți octeți? | + | * Analizați codul memoriei ROM din fișierul //task01.v//. Ce capacitate are această memorie ROM? Câți biți? Câți bytes/octeți? |
* Observați vreo greșeală în modulul **rom** din fișierul //task01.v// ? Dacă da, corectați aceste erori. | * Observați vreo greșeală în modulul **rom** din fișierul //task01.v// ? Dacă da, corectați aceste erori. | ||
- | * Analizați codul Verilog din fișierul read_rom.v. Modulul read_rom va citi conținutul memoriei rom și îl va afișa pe ledurile plăcii Nexys A7. | + | * Analizați codul Verilog din fișierul read_rom.v. Modulul read_rom va citi conținutul memoriei rom și îl va afișa pe ledurile plăcii Nexys A7. Modificați constraint file-ul din schelet astfel încât să legați switch-urile din dreapta de pe placa FPGA la intrările corespunzătoare modulului read-rom (decomentați liniile aferente switch-urilor folosite (liniile 12-27) și completați cu portul corect din modul). |
* Completați TODO 1.1 din //read_rom.v// - adică instanțiați modulul //rom//. | * Completați TODO 1.1 din //read_rom.v// - adică instanțiați modulul //rom//. | ||
- | * Generați bitstream-ul pentru modulul read_rom. Încarcați acest bitstream pe placa FPGA. Modificați valoarea intrării //read_frequency// din switch-urile din dreapta de pe placa FPGA. Ce se afișează pe cele 16 leduri ? | + | * Generați bitstream-ul pentru modulul read_rom. Încarcați acest bitstream pe placa FPGA. Modificați valoarea intrării //read_frequency// din switch-urile din dreapta de pe placa FPGA. Ce se afișează pe cele 16 leduri? |
- | * (Opțional) Completați TODO 1.2 din fișierul task01.v, în interiorul modului rom pentru a încărca și un alt joc de lumini. | + | * (Opțional) Completați TODO 1.2 din fișierul task01.v, în interiorul modului rom pentru a încărca și un alt joc de lumini. |
<note info> | <note info> | ||
Line 109: | Line 109: | ||
- | **Task 03 ** (3p) Descărcați scheletul Verilog al microcontrolerului {{:apm:laboratoare:02:lab02.zip| Scheletul de laborator}}. Acest schelet îl vom folosi în laboratoarele viitoare. Astăzi ne vom familiariza cu structura acestuia. Identificați memoria de instrucțiuni. Ce tip de memorie este aceasta? Identificați modulele din cheatsheet-ul de mai sus. | + | **Task 03 ** (3p) Descărcați scheletul Verilog al microcontrolerului {{:apm:laboratoare:02:lab02.zip| Scheletul de laborator}}. Acest schelet îl vom folosi în laboratoarele viitoare. Astăzi ne vom familiariza cu structura acestuia. Identificați memoria de instrucțiuni. Ce tip de memorie este aceasta? Identificați modulele din cheatsheet-ul de mai jos. |
În scheletul de laborator sunt câteva fișiere de interes: | În scheletul de laborator sunt câteva fișiere de interes: | ||
Line 122: | Line 122: | ||
Găsiți răspunsurile pentru următoarele întrebări: | Găsiți răspunsurile pentru următoarele întrebări: | ||
- | - Deschideți modulul //cpu//. Cum se numește parametrul ce definește lățimea datelor? Pe câți biți e definit ? | + | - Deschideți modulul //cpu//. Cum se numește parametrul ce definește lățimea datelor? Pe câți biți e definit? |
- | - Câte registre generale are procesorul din schelet în memoria SRAM ? Care e lățimea registrelor ? (Nr. biti) | + | - Câte registre generale are procesorul din schelet în memoria SRAM? Care e lățimea registrelor? (nr. biți) |
- | - Câți bytes poate stoca memoria //rom// folosită pentru instrucțiuni așa cum e instanțiată în modulul //cpu// ? Câți bytes sunt scriși deja în memorie (cât ocupă instrucțiunile deja scrise)? | + | - Câți bytes poate stoca memoria //rom// folosită pentru instrucțiuni așa cum e instanțiată în modulul //cpu//? Câți bytes sunt scriși deja în memorie (cât ocupă instrucțiunile deja scrise)? |
- | - Câte stagii are pipeline-ul procesorului ? (Deschideți modulul //state_machine//) | + | - Câte stagii are pipeline-ul procesorului (Deschideți modulul //state_machine//) |
- | - Cu se stagiu al pipeline-ului se ocupă alu.v ? (Deschideți modulul //control_unit//) | + | - Cu se stagiu al pipeline-ului se ocupă alu.v? (Deschideți modulul //control_unit//) |
- | - Care este valoarea inițială a registrului r7 ? | + | - Care este valoarea inițială a registrului r7? |
- Registrul SREG este registrul Status Register. Citiți despre acest registru în [[http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf|setul de instructiuni AVR]]. Pentru procesorul din schelet acest registru conține 8 flag-uri, fiecare de câte un bit. Ce reprezintă flag-ul **//S//**? Cum și unde este calculat pentru instrucțiunea (implementată deja) //Add with Carry// din schelet? | - Registrul SREG este registrul Status Register. Citiți despre acest registru în [[http://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf|setul de instructiuni AVR]]. Pentru procesorul din schelet acest registru conține 8 flag-uri, fiecare de câte un bit. Ce reprezintă flag-ul **//S//**? Cum și unde este calculat pentru instrucțiunea (implementată deja) //Add with Carry// din schelet? | ||