Architektura systemów komputerowych II niestacjonarne (projekt)
Zasady zaliczania i tematy projektów
Część wspólna wszystkich projektów
W ramach projektu należy zaprojektować mikroprogramowalny układ sterowania realizujący rozkazy opisane w tematach projektów. Projekt składa się z trzech części:
- Projektowanie mikroprogramu (maksymalnie na ocenę 3.5):
- Zaproponowana struktura układu
- Mikroprogram napisany w postaci listy
- Zakodowanie mikroprogramu do postaci binarnej (maksymalnie na ocenę 4.5)
- Implementacja mikroprogramu:
- Osadzenie przygotowanego mikroprogramu w architekturze zaprojektowanej w środowisku Altera Quartus II v13.0 (maksymalnie na ocenę 4.5)
- Wykonanie testowania układu w środowisku Altera Quartus II
Projekty realizowane są w grupach czteroosobowych. W przypadku, gdy liczba osób nieprzydzielonych do żadnej grupy wyniesie:
- 1 lub 2 – osoby te zostaną przyłączone do innych grup, a grupy te dostaną dodatkowe zadania do zrealizowania (kolejne rozkazy)
- 3 – osoby te utworzą grupę, która otrzyma zadanie pomniejszone o pewną liczbę rozkazów
Oznaczenia przyjęte w opisie listy rozkazów procesora:
REG | - | rejestr 16-bitowy A, B, C, D, E, F, ADH, ADL, |
RA | - | rejestr 32-bitowy AD, PC lub SP, |
[RA] | - | adres argumentu w rejestrze (adresowanie rejestrowe pośrednie, |
st16[RA] | – | adresowanie bazowe, |
adr | - | adres 32-bitowy (adresowanie bezpośrednie), |
[adr] | - | adresowanie pośrednie, |
st8 | - | stałą 8-bitowa, |
st16 | - | stała 16-bitowa, |
st32 | - | stała 32-bitowa. |
Zakładamy, że młodszy bajt każdego rozkazu ma następującą budowę:
B7..B2 | - | numer grupy rozkazów |
B1..B0 | – | numer rozkazu w grupie |
Tematy projektów
Pracę należy wykonać w formie sprawozdania. Ocena uzależniona jest od jakości zaproponowanego rozwiązania, liczby zrealizowanych rozkazów, zastosowanych technik
optymalizacji lub obniżenia kosztów procesora, stopnia zaawansowania pracy oraz od wyników obrony projektu.
W ramach projektu można używać komponentów dostarczonych przez prowadzącego (np.: plik rejestrów), środowisko Altera Quartus II (włączając w to pakiety dodatkowe)
lub innych, pod warunkiem posiadania odpowiedniej licencji i zgody prowadzącego na ich użycie.
Dodatkowe informacje można znaleźć pod linkiem: [link]
Niektóre materiały są zabezpieczone hasłem - w tej sprawie proszę wysyłać maila, na który zwrotnie zostanie przesłane owe hasło.
Zadanie 1:
1. | XNOR REG, REG | negacja alternatywy wykluczającej rejestrów roboczych |
2. | JNZ st16 | skoki warunkowe, adresowanie względne |
3. | XLAT [RA], [adr] | translacja wartości z pamięci o adresie w RA wg tabeli o adresie początkowym w [adr] (adresowanie pośrednie), RA++ |
Zadanie 2:
1. | JMP st16 | skok bezwarunkowy pod podany adres, |
2. | LOOP st32 | skok bezwzględny, gdy rejestr C≠0, C ← C-1 |
3. | OR [adr], REG, [RA] | suma logiczna wartości z rejestru REG i pamięci [RA], wynik zapisany w [adr] |
Zadanie 3:
1. | SUB REG, st16 | odjęcie od rejestru stałej wartości 16-bitowej |
2. | CALL [adr] | wywołanie procedury, adresowanie połrednie |
3. | ADD REG, REG, st16[RA] | zsumowanie 2 rejestrów i umieszczenie wyniku w pamięci |
Zadanie 4:
1. | CMP REG, | adr porównanie zawartości rejestru roboczego z wartością w pamięci |
2. | JMP st16 | skok bezwarunkowy |
3. | ADC REG, REG, st16[RA] | dodanie 2 rejestrów z przeniesieniem i umieszczenie wyniku w pamięci |
Zadanie 5:
1. | ADD RA, st32 | dodanie stałej 32-bitowej do rejestru adresowego |
2. | DEC adr | dekrementacja z nasyceniem (U2) słowa w pamięci, |
3. | CMP REG, st16[RA] | porównanie zawartości rejestrze ze słowem w pamięci |