T13-ReTI-Datenpfade-und-Kontrolllogik
ReTI Datenpfade & Kontrolllogik
Zusammenfassung
Die ReTI-CPU besteht aus 4 benutzersichtbaren Registern (PC, ACC, IN1, IN2), einem Instruktionsregister I, einer ALU, einem
Exam-Relevanz
MEDIUM. Unterstützt das Verständnis von A2 (ReTI Maschinencode). Wissen über Datenpfade hilft beim Nachvollziehen, welche Befehle welche Register/Treiber verwenden.
SRAM
Ein
Adress-Eingänge- Dateneingang
- Datenausgang
- Kontrollsignal
(write)
Funktionalität
Der Speicher enthält
- Lesen:
zeigt Inhalt von - Schreiben: Schreibpuls an
übernimmt nach
-Bit-SRAM
Ein
Bei ReTI:
Tristate-Treiber
Ein Tristate-Treiber hat Eingang
Wahrheitstabelle
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | Z |
| 1 | 1 | Z |
Busse
Ausgänge von Tristate-Treibern können zusammengeschaltet werden (Bus), wenn zu jeder Zeit höchstens ein Treiber enabled ist (Bus Contention vermeiden — sonst physikalische Zerstörung!).
Ein
Treiberbäume
Ein Treiber berechnet
ReTI Datenpfade
Register und Komponenten
| Komponente | Beschreibung |
|---|---|
| PC | Programmzähler (Zähler) |
| ACC | Akkumulator (Register) |
| IN1 | Indexregister 1 (Register) |
| IN2 | Indexregister 2 (Register) |
| I | Instruktionsregister (Register) |
| ALU | Arithmetic Logic Unit, 32-Bit |
Busse
| Bus | Funktion |
|---|---|
| Linker Operand der ALU | |
| Rechter Operand der ALU | |
| Interner Datenbus | |
| Adressbus (zum SRAM) | |
| Datenbus (zum SRAM) |
Alle Busse und Register sind 32 Bit breit.
Treiber (Auswahl)
| Treiber | Funktion |
|---|---|
PCAd |
PC → Bus |
IAd |
I → Bus |
ALUAd |
ALU → Bus |
SMDd |
SRAM → Bus |
DDId |
Bus |
ALUDId |
ALU → Bus |
ACCLd |
ACC → Bus |
PCLd |
PC → Bus |
IN1Ld |
IN1 → Bus |
IN2Ld |
IN2 → Bus |
0Ld |
0 → Bus |
IRd |
I → Bus |
DRd |
Bus |
0Rd |
0 → Bus |
ASMd |
Bus |
Namenskonvention: Treiber zwischen X und Y heißt XYd; Output-Enable-Signal XYdoe.
Instruktionsregister I
: Befehlskodierung (für Steuersignale) : Speicheradresse oder Konstante für ALU
| Verwendung | Transformation | Treiber |
|---|---|---|
| Speicheradresse | IAd |
|
| Natürliche 24-Bit-Konstante | IRd |
|
| Ganzzahlige 24-Bit-Konstante | IRd |
Kontrollsignal sext: sext = 0 → sext = 1 →
Datenpfade pro Befehlstyp
Fetch-Phase (alle Befehle):
PC → PCAd → A → SRAM(ASMd) → D → I
Compute Immediate:
I → IRd → R → ALU
ACC → ACCLd → L → ALU
ALU → ALUDId → DI → ACC
Compute Memory:
I → IRd → R → ALU
ACC → ACCLd → L → ALU
I → IAd → A → SRAM(ASMd) → D → DRd → R → ALU
ALU → ALUDId → DI → ACC
JUMP:
I → IRd → R → ALU
PC → PCLd → L → ALU
ALU → ALUDId → DI → PC
LOAD i:
I → IAd → A → SRAM(ASMd) → D → DDId → DI → ACC
LOADIN1 i:
I → IRd → R → ALU
ACC → ACCLd → L → ALU
ALU → ALUAd → A → SRAM(ASMd) → D → DDId → DI → IN1
LOADI i:
0 → 0Ld → L → ALU
I → IRd → R → ALU
ALU → ALUDId → DI → ACC
STORE i:
I → IAd → A → SRAM(ASMd)
ACC → D → SRAM (SMw)
STOREIN1 i:
I → IRd → R → ALU
IN1 → IN1Ld → L → ALU
ALU → ALUAd → A → SRAM(ASMd)
ACC → D → SRAM (SMw)
MOVE ACC IN1:
ACC → ACCLd → L → ALU
0 → 0Rd → R → ALU
ALU → ALUDId → DI → IN1
Kontrolllogik
Phasensignale
Befehlsabarbeitung in Takten: Fetch- und Execute-Phase bestehen jeweils aus 4 Takten.
| Signal | Bedeutung |
|---|---|
| Fetch-Phase | |
| Execute-Phase | |
| Binärkodierung des Takts innerhalb der Phase (0–3) |
- Steigende Flanken (Taktanfang):
- Fallende Flanken (Taktmitte):
Ein 2-Bit-Zähler erzeugt Sreset setzt PC := 0.
Zu generierende Kontrollsignale
- Clock-Enable für alle Register
:rcken - Output-Enable (active low) für alle Treiber
XYd:/XYdoe - Funktions-Select
für ALU /PCclear,/PCloadfür PCsextfür Sign Extension/SMDdoe(active low),SMwfür Speicher
Aufbau
Die Kontrolllogik ist ein endlicher Automat:
- Kombinatorischer Schaltkreis berechnet aus Eingängen (
/reset, , , ) die Pre-Signale (z.B.Ickenpre,PCLdoepre) - D-Flipflops speichern die Pre-Signale
- Active-low Signale werden durch Negation erzeugt
Ein Teil der D-FFs wird mit ck geclockt, ein anderer mit /ck (Verschiebung um halben Takt für Adressbus-Signale).
Beispiel: Icken
Ickenpre steigende Flanke bei
Beispiel: ACCcken
ACCckenpre steigende Flanke bei
Register-Kodierung S/D
| Register | |
|---|---|
| 0 0 | PC |
| 0 1 | IN1 |
| 1 0 | IN2 |
| 1 1 | ACC |
Beispiel: /PCLdoe
PCLdoepre aktiviert für JUMP, Compute mit D=PC, MOVE mit S=PC:
Speicheransteuerung
/SMDdoe (Lesezugriff) aktiviert von
- Fetch (alle Befehle)
- Compute Memory
- LOAD, LOADINj
SMw (Schreibzugriff) aktiviert von
- STORE, STOREINj
Clock-Enable vs. berechnetes Clock-Signal
In modernen Designs erhält jedes Register einen MUX am Eingang, gesteuert durch Regcken (Clock-Enable), während ck die globale Clock bleibt. Berechnete Clock-Signale sind verboten wegen:
- Clock-Tree-Synthese wird verhindert
- Timing-Analyse-Werkzeuge können nicht damit umgehen
- Höhere Anforderungen an Flankensteilheit
Befehlsdekodierung
Befehlsformat (32 Bit)
| Bits | 31 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 ... 0 |
|---|---|---|---|---|---|---|---|---|
| Load | 0 1 | M | * | D | ||||
| Store | 1 0 | M | S | D | ||||
| Compute | 0 0 | MI | F | D | ||||
| Jump | 1 1 | C | * |
Legende: M – Modus; S – Source; D – Destination; MI – memory/immediate; F – Function; C – Condition
Opcode → Befehlstyp
| Befehlstyp | ||
|---|---|---|
| 0 | 0 | Compute |
| 0 | 1 | Load |
| 1 | 0 | Store |
| 1 | 1 | Jump |
Die Kontrolllogik decodiert
Übungsblätter
| Blatt | Aufgabe | Thema | Punkte |
|---|---|---|---|
| Blatt11 | 2 | Welche Treiber werden bei welchen Befehlen enabled? (/IAdoe, /IN1Ldoe, /ALUAdoe) |
1.5 |
| Blatt11 | 3 | Minimale Befehlsmenge, die jeden Treiber (außer PCAd) verwendet |
2.5 |
| Blatt11 | 4 | Tristate-Treiber Gatter-Implementierung ( |
2 |
| Blatt11 | 5 | ITE-Operator: alle binären Operatoren zurückführen | 4 |
| Blatt11 | 6a | ReTI Fibonacci-Programm | 5 |
| Blatt11 | 6b | Zeitbedarf bei 6.78 ns Zykluszeit, 8 Zyklen/Befehl | 2 (Bonus) |
Quellen
- k440-SRAM_Treiber — SRAM-Struktur, Tristate-Treiber, Busse
- k450-Anwendung_Datenpfade_von_ReTI — ReTI Datenpfade, Fetch/Execute, Befehlstypen
- k460-Kontrolllogik_von_ReTI — Phasensignale, Kontrollsignale, Timing
- Blatt11 — Treiber-Zuordnung, Tristate-Implementierung, ReTI-Programmierung
Priorität
MEDIUM. Unterstützt A2 (ReTI Maschinencode). Beherrsche:
- SRAM-Struktur und Adressierung
- Tristate-Treiber: high-Z, Bus Contention, active-low OE
- ReTI-Datenpfade für alle Befehlstypen (Fetch, Compute, Load, Store, Jump)
- Phasensignale
: 4 Takte Fetch + 4 Takte Execute - Befehlsdekodierung: Opcode-Bits
, S/D-Kodierung - Kontrollsignal-Berechnung (z.B.
Ickenpre = E' \cdot s_1' \cdot s_0)