This shows you the differences between two versions of the page.
|
soc:laboratoare:09 [2026/05/15 00:02] bianca.popa1106 [Instrucțiuni] |
soc:laboratoare:09 [2026/05/15 13:22] (current) mihnea.popescu1811 [Unitatea de control] |
||
|---|---|---|---|
| Line 17: | Line 17: | ||
| ==== Unitatea de control ==== | ==== Unitatea de control ==== | ||
| - | La fiecare front negativ de ceas, deci la finalul fiecărui ciclu, controller-ul vaverifica semnalul de reset, care va reseta orice instrucțiune se execută și va trece înapoi în stage 0 (IF). | + | La fiecare front negativ de ceas, deci la finalul fiecărui ciclu, controller-ul va verifica semnalul de reset, care va reseta orice instrucțiune se execută și va trece înapoi în stage 0 (IF). |
| În orice alt caz el va trece circular (deci de la WB vom trece înapoi în IF) la următorul stagiu de execuție a instrucțiunii curente: | În orice alt caz el va trece circular (deci de la WB vom trece înapoi în IF) la următorul stagiu de execuție a instrucțiunii curente: | ||
| Line 171: | Line 171: | ||
| - (5p) (Branch Group Instructions): Observati cum este implementata instructiunea de JM (Jump Minus) si implementati similar si operatia de JP (Jump Positive) in modulul controller.v. Vom defini opcode-ul instructiunii JP ca fiind 8'hFB. Ulterior, modificati in sap2_ctrl_rom.xlsx semnalele de control necesare fiecarei etape de executie a instructiunii. Dupa ce le-ati modificat, copiati coloana cu semnalele concatenate si puneti-le in ctrl_rom_io.bin. | - (5p) (Branch Group Instructions): Observati cum este implementata instructiunea de JM (Jump Minus) si implementati similar si operatia de JP (Jump Positive) in modulul controller.v. Vom defini opcode-ul instructiunii JP ca fiind 8'hFB. Ulterior, modificati in sap2_ctrl_rom.xlsx semnalele de control necesare fiecarei etape de executie a instructiunii. Dupa ce le-ati modificat, copiati coloana cu semnalele concatenate si puneti-le in ctrl_rom_io.bin. | ||
| - (5p) (Arithmetic Group Instructions): Implementati in modulul UAL instrucțiunile CMP B si CMP C, care compara prin scadere valoarea lui A cu a lui B, respectiv C si modifica flag-urile pe baza acestor operatii. Opcode-urile pentru CMP B si CMP C in ALU sunt 8 si 9, iar in ROM si excel sunt 8'h92 si 8'h93. Modificati semnalele si adaugati-le in ctrl_rom_io.bin ca la task-ul de mai sus. | - (5p) (Arithmetic Group Instructions): Implementati in modulul UAL instrucțiunile CMP B si CMP C, care compara prin scadere valoarea lui A cu a lui B, respectiv C si modifica flag-urile pe baza acestor operatii. Opcode-urile pentru CMP B si CMP C in ALU sunt 8 si 9, iar in ROM si excel sunt 8'h92 si 8'h93. Modificati semnalele si adaugati-le in ctrl_rom_io.bin ca la task-ul de mai sus. | ||
| - | - (0p): Cum va usureaza munca instrucțiunile implementate la task 2 fata de utilizarea unor operatii normale de SUB | + | - (0p): Cum va usureaza munca instrucțiunile implementate la task 3 fata de utilizarea unor operatii normale de SUB? |
| - (Bonus) (I/O Group Instructions): Implementati instructiunea de I/O IN data, care se va primi prin intermediul switch-urilor o valoare pe 4 biti pe care o veti stoca in sectiunea LOW a registrului A. Instructiunea de IN poate fi gasita ca 0'hDB. Pentru ajutor puteti vedea si instructiunea de OUT ca 0'hD3. Modificati semnalele si ctrl_rom_io ca la primele 2 task-uri. | - (Bonus) (I/O Group Instructions): Implementati instructiunea de I/O IN data, care se va primi prin intermediul switch-urilor o valoare pe 4 biti pe care o veti stoca in sectiunea LOW a registrului A. Instructiunea de IN poate fi gasita ca 0'hDB. Pentru ajutor puteti vedea si instructiunea de OUT ca 0'hD3. Modificati semnalele si ctrl_rom_io ca la primele 2 task-uri. | ||