This shows you the differences between two versions of the page.
soc:laboratoare:09 [2025/05/15 11:45] mihai_catalin.stan [Implementarea unei instructiuni] |
soc:laboratoare:09 [2025/05/27 17:37] (current) stefan.maruntis [Semnale de control] |
||
---|---|---|---|
Line 44: | Line 44: | ||
| MDR_EN | Incarca output-ul memoriei pe magistrala sistemului | | | MDR_EN | Incarca output-ul memoriei pe magistrala sistemului | | ||
| MDR_LD | Incarca octetul inferior de pe magistrala in octetul inferior al MDR | | | MDR_LD | Incarca octetul inferior de pe magistrala in octetul inferior al MDR | | ||
- | | MAR_LD_L | Incarca octetul superior al unei adrese aflate pe magistrala in octetul superior al MAR | | + | | MAR_LD_H | Incarca octetul superior al unei adrese aflate pe magistrala in octetul superior al MAR | |
- | | MAR_LD_H | Incarca octetul inferior al unei adrese aflate pe magistrala in octetul inferior al MAR | | + | | MAR_LD_L | Incarca octetul inferior al unei adrese aflate pe magistrala in octetul inferior al MAR | |
| PC_EN | Pune pe magistrala valoarea program counter-ului | | | PC_EN | Pune pe magistrala valoarea program counter-ului | | ||
| PC_LD | Incarca in modulul de program counter valoare de pe magistrala (folosit in instructiunile de jump, care trebuie sa sara la o anumita instructiune) | | | PC_LD | Incarca in modulul de program counter valoare de pe magistrala (folosit in instructiunile de jump, care trebuie sa sara la o anumita instructiune) | | ||
Line 118: | Line 118: | ||
Instrucțiunile pot fi împărțite în 4 categorii în funcție de modul în care adresează memoria în opcode: | Instrucțiunile pot fi împărțite în 4 categorii în funcție de modul în care adresează memoria în opcode: | ||
- | * Direct - Primește adresa de memorie pe care se operează în instrucțiune - ex. STA addr (Store la o anumită adresa) | + | * Direct - Primește adresa de memorie pe care se operează în instrucțiune - ex. STA addr (Store la o anumită adresa) |
- | * Immediate - Primește o valoare constantă direct folosită în instrucțiune - ex. ORI byte (Aplica operatia de OR logic între registrul A și o valoare primită) | + | * Immediate - Primește o valoare constantă direct folosită în instrucțiune - ex. ORI byte (Aplica operatia de OR logic între registrul A și o valoare primită) |
- | * Register - Funcționează pe datele dintr-un registru - ex. DCR A - Decrementează valoare registrului A | + | * Register - Funcționează pe datele dintr-un registru - ex. DCR A - Decrementează valoare registrului A |
- | * Implied - Adresa/Registrul pe care se efectuează instrucțiunea este implicită și nu se modifică - ex. RAL (Shiftează la stânga valoarea din registrul A și o salvează înapoi tot în acesta) | + | * Implied - Adresa/Registrul pe care se efectuează instrucțiunea este implicită și nu se modifică - ex. RAL (Shiftează la stânga valoarea din registrul A și o salvează înapoi tot în acesta) |
Sistemul nostru - SOC-1 - ia 3 ciclii de ceas pentru aducerea instrucțiunii de executat din memorie, deci cea mai scurtă instrucțiune va dura 3 ciclii (NOP). Cele mai lungi instrucțiuni sunt cele care lucrează cu adrese din memoria ROM și ajung până la 9-10 ciclii de ceas (STA - 9 ciclii, CALL - 9 ciclii, LDA - 10 ciclii) | Sistemul nostru - SOC-1 - ia 3 ciclii de ceas pentru aducerea instrucțiunii de executat din memorie, deci cea mai scurtă instrucțiune va dura 3 ciclii (NOP). Cele mai lungi instrucțiuni sunt cele care lucrează cu adrese din memoria ROM și ajung până la 9-10 ciclii de ceas (STA - 9 ciclii, CALL - 9 ciclii, LDA - 10 ciclii) |