Differences

This shows you the differences between two versions of the page.

Link to this comparison view

apm:laboratoare:01:exercitii [2024/10/14 00:25]
teodor_stefan.dutu Fix typo in signal cheatsheet file name
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 24: Line 24:
  
 <​code>​ <​code>​
-// Pseudocod pentru o memorie ROM cu conținutul [1,​2,​4,​8,​16,​32,​64,​128,​170,​85,​3,​5,​1,​0,​53,​13,0]:+// Pseudocod pentru o memorie ROM cu conținutul [1,​2,​4,​8,​16,​32,​64,​128,​170,​85,​3,​5,​1,​0,​53,​13]:​
  
 module rom (input[4] adress, output[8] data) module rom (input[4] adress, output[8] data)
Line 104: Line 104:
  
 <note important>​ <note important>​
-Atentie! Porturile de ''​date''​ vor fi de tip wire. Asta înseamna că nu vom mai putea face atribuiri pe aceste porturi în interiorul blocurilor procedurale. Va trebui să găsiți o altă metodă de a modifica aceste porturi, care să fie validă în interiorul acestor blocuri. Utilizați pseudocodul de mai jos pentru a rezolva exercițiul și pentru a identifica modul în care a fost rezolvată problema porturilor de tip wire.+Atentie! Porturile de ''​date''​ vor fi de tip wire. Asta înseamna că nu vom mai putea face atribuiri pe aceste porturi în interiorul blocurilor procedurale. Va trebui să găsiți o altă metodă de a modifica aceste porturi, care să fie validă în interiorul acestor blocuri. Utilizați pseudocodul de mai sus pentru a rezolva exercițiul și pentru a identifica modul în care a fost rezolvată problema porturilor de tip wire.
 </​note>​ </​note>​
  
  
  
-**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 ? (Nrbiti+  - Câte registre generale are procesorul din schelet în memoria SRAM? Care e lățimea registrelor?​ (nrbiț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?
  
apm/laboratoare/01/exercitii.1728854732.txt.gz · Last modified: 2024/10/14 00:25 by teodor_stefan.dutu
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