/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-01/excrs-2021-07-09/all30003.txt


1. PLD
1.1. Bausteine, Typen
- PLD: Programmable Logic Device
- PLA: Programmable Logic Array
- PAL: Programmable Array Logic 
- CPLD: Complex Programmable Logic Device
- FPGA: Field Programmable Gate Array
- LCA: Logic Cell Array
1.2. Hersteller
- Xilinx
- Altera
- Lattice
- Actel 
- Cypress
- Quicklogic
- Atmel
1.3. Technik
- PLA: Programmierbare UND-Matrix, gefolgt von programmierbarer ODER-Matrix
- PROM: Festverdrahtete UND, programmierbare ODER 
- PAL: Oder Struktur fest verdrahtet
1.2. Kirchhoff:
- Jeder Punkt in dem mehr als zwei Zweige zusammenlaufen nennt man einen Knotenpunkt
- 1. Kirchhoffsche Regel: Knotensatz: In jedem Knotenpunkt ist die Summe der zufließenden Ströme gleich die Summe der abfließenden
- 2. Kirchhoffsche Regel: Maschensatz: Beim gleichseitigem Umlaufen ist die Summe aller Spannungen gleich 0
1.3. FET
- FET: Field Effect Transistor 
- MOSFET: Metal Oxid Semiconductor FET 
- MISFET: Metal Insulated Gate FET 
- MESFET: Schottky Übergang
- IGFET: Insulated Gate FET 
- SFET: Sperrschicht FET
- JFET: Junction FET 
- Source: Quelle, Drain: Senke, Gate: Tor, Bulk 
1.4. Bipolare Transistoren
- Schaltungen: Basisschaltung, Emitterschaltung, Collectorschaltung
- Kennlinien: Arbeitspunkteinstellung, Übersteuerungsgrenze, Sättigungsspannung, Kleinsignalverhalten, Stromverstärkungsgruppen, Restströme
- Herstellung: Mesa-Transistor, Exitaxie-Planar-Transistor, HF-Hochleistungstransistor, Hochspannungstransistor
1.5. Vierschichtdioden: 
- Symmetrische Vierschichtdiode, Thriode, Thrystor, Triac
1.6. Dioden: 
- Gleichrichterdioden 
- PIN und PSN-Dioden
- Schottky-Dioden
- Hetero-Dioden 
- Z-Dioden 
- Tunnel-Dioden
- Backward-Dioden 
2. VHDL
- Blöcke, Signale
- Blöcke: Multiplexer, Dekoder, ... 
- Blöcke sind über Signale miteinander verbunden 
- Kommentare: Doppelter Bindesstrich
- Es wird nicht zwischen Groß- und Kleinschreibung unterschieden 
- Typisierung: Streng 

boolean: true, false 
bit: 0, 1
std_logic: 0, 1, z, -, u, l, h, x, w

0: starke 0
1: starke 1
z: hochohmig
-: don't care
u: unbekannt
l: schwache 0
h: schwache 1
w: schwaches x
x: Fehler 

c <= b;
c <= a or b;

signal <signalname>: <typ>
<signalname>: <richtung> <typ>

Vektoren: 
- bit_vector (<lower> to <upper>);
- bit_vector (<upper> downto <lower>);

a: in bit_vector (0 to 3);
b: out bit_vector (7 to 0);
c: std_logic_vector (0 to 3);

c <= b;
c <= ('1', '0', '0', '0');
c <= "1000";

1. Bibliotheks und Packagebeschreibung
2. Entity für Schnittstellenfunktion
3. Architecture für Funktionsbeschreibung

entity <blockname> is
port
(
    <signalname>: <richtung> <typ>;
    <signalname>: <richtung> <typ>
);
end;

entity Multiplexer is
port
(
    a: in bit_vector (3 downto 0);
    b: in bit_vector (3 downto 0);
    s: in bit;
    c: out bit_vector (3 downto 0);
);
end;

entity Counter is 
port
(   
    clk: in bit;
    rst: in bit;
    q: out bit_vector (3 downto 0);
);
end;

architecture <Beschreibungsname> of <Blockname> is
begin 

end <Beschreibungsname>;

architecture Structural of Multiplexer is
    signal a, b, c: bit_vector (3 downto 0);
begin
    a <= (a3, a2, a1, a0);
    b <= (b3, b2, b1, b0);
    
    c <= a when (s='0') else b);
    
    c3 <= c(3);
    c2 <= c(2);
    c1 <= c(1);
    c0 <= c(0);
end;

3. Speicher

4. MIPS, Software

Befehle 

lb, lbu: laden eines Bytes
lh, lhu: Laden eines Halbworts
lw: Laden eines Wortes
ld*: Laden eines Doppelwortes
la*: Laden einer Addresse
ls*: Laden eines Immidiate-Wertes
sb: Speichern eines Bytes
sh: Speichern eines Halbwortes
sw: Speichern eines Wortes
sd*: Speichern eines Doppelwortes
move*: Transfer zwischen Registern 
add, addi, addiu: Addtion 
sub: Subtraktion 
mult, multu: Multiplikation 
div, divu: Division
rem*: Modulo
abs*: Absoluter Wert 
neg*: Negation 
not*: Logisches NOT
and, andi: Logisches UND 
or, ori: Logisches OR
xor, xori: Logiches XOR 

Transportbefehle 
Arithmetisch Logische Befehle 
Rotationsbefehle 
Gleitkommabefehle 
Multimediabefehle 
Programmsteuerbefehle
Systemsteuerbefehle
Synchronisationsbefehle 

Load- and Storearchitecture 
Speicher-Speicher-Architektur
Register-Speicher-Architektur 
Akkumulator-Architektur
Stack-Architektur 

Little-Endian-Format
Big-Endian-Format

1. Bit 
2. Ganzzahl 
3. Gleitkomma 
4. Multimedia

signed
unsigned
packed
unpacked 
bcd
ascii 

gleitkomma: ieee-754-std 

f = (-1)^s*1.m*2^(e-b)

Stackarchitektur: 8087 intel, 862 atmel 

Direktwertaddressierung
Registeraddressierung
Direkte Addressierung 
Registerindirekte Addressierung
Registerindirekte Addressierung mit Autoinkrement/Autodekrement
Registerindirekte Addressierung mit Verschiebung 
Registerindizierte Addressierung
Registerindizierte Addressierung mit Verschiebung 

$a
$v
$s
$t
$ra
$fp
$sp
$ra
$zero

5. MIPS, Hardware

Steuerwerk:
1. Befehlsdekodierer
2. Funktionsdekodierer

Befehlsdekodierer
1. RegDst
2. RegWrite 
3. ALUSrc
4. Branch 
5. MemToReg
6. MemToWrite 
7. ALUOp

Funktionsdekodierer
1. ALU-Op
2. Func 
3. ALU-Operation 

1. Befehlsdekodierer
2. Funktionsdekodierer
3. Registersatz 
4. ALU 
5. Datenspeicher
6. Befehlsspeicher
7. Befehlszähler
8. Vorzeichenerweiterungseinheit
9. 4 x MUX 
10. 1 x AND 
11. 2 x 2-Bit-Shifter 

AND: PCSrc

ALU: Null, ALU-Ergebnis 

Register-Satz:
1. Lese-Daten-1
2. Lese-Daten-2
3. Schreibedaten
4. Schreiberegister
5. Schreibe-Daten-1
6. Schreibe-Daten-2
7. WE

Befehlsspeicher: 
- Lesedaten 
- Schreibedaten 

Befehlszähler 
- PC (t)
- PC (t+1)

Datenspeicher 
- Lesedaten
- Schreibedaten 
- Addresse 
- WE

ALU-Op      Func                ALU-Operation 
00          1000000 - add       010 add
1X                              ... sub
X1                              010 add
...                             
    
            Operations-Code MemToReg    MemToWrite Branch ALU-Src   RegDst  RegWrite    ALU-Operation
r-Typ       000000          1           1          0      0         0       0           10

6. Mehrzyklus