.include "m8def.inc" ldi r16, 0xFF out DDRB, r16 ldi r16, 0b11111111 out PORTB, r16 end: rjmp end
typische cpus der smartcard sind z.B. der Atmel AT90SC3232C AVR
.include "m8def.inc" ldi r16, 0xFF out DDRB, r16 sldi r16, 0b00000000 loop5: com r16 out PORTB, r16 com r16 ldi r20, 0xfe loop1: dec r20 ldi r21, 0xfe loop2: dec r21 ldi r22, 0xfe loop3: dec r22 ldi r23, 0xfe loop4: dec r23 cpi r23, 0x01 brge loop4 cpi r22, 0x01 brge loop3 cpi r21, 0x01 brne loop2 cpi r20, 0x01 brne loop1 inc r16 rjmp loop5
genuegt nicht, wird mehr, aber einführend
MIPS-Architektur lb, lbu Laden eines Bytes sb Speichern eines Bytes lh, lhu Laden eine Halbwortes sh Speichern eines Halbwortes lw Laden eines Wortes sw Speicher eines Wortes ld* Laden eines Doppelwortes sd* Speichern eines Doppelwortes la* Laden einer Addresse li* Laden eines immidiate Wertes l.s*, l.d* Laden eines Gleitkommaregisters s.s*, s.d* Speichern eines Gleitkommaregisters move* Transfer zwischen Universalregistern mov.s* Transfer zwischen Gleitkommaregistern mov.d* mfhi Transfer zwischen Universalregister und den Regiestern Hi und Lo mflo mthi mtlo mfc1 Transfer zwischen Universalregistern und Gleitkommaregistern mtc1 addi Addition addi addu addiu sub Subtration sub mult Multiplikation multu div Division divu abs* Absoluter Wert neg* Negation rem* Modulo not* Logisches NOT and Logisches UND andi or Logisches OR ori xor Logisches XOR xori nor Logisches NOR sll Logisches Linksschieben sllv srl Logischse Rechtsschieben srlv sra Arithmetische Rechtsverschiebung srav rol* Rotation links ror* Rotation rechts slt Vergleich kleiner slti sltu stliu seq* Vergleich gleich sne* Vergleich ungleich sgt* Vergleich groesser sgtu* sge* Vergleich groeser gleich sgeu* sle* Vergleich kleiner gleich sleu* j, unbedingter Sprung b* jr jal* Jump mit Speicherung PC+4 jalr Jump Regeister beq Verzweigung falls gleich bne Verzweigung falls ungleich beqz* Verzweigung falls gleich bnez* Verzweigung falls gleich bgt* Verzweigung falls groesser bge* Verzweigung falls groesser gleich bgtz Verzweigung fals groesser bgez Verzweigung falls groesser gleich blt* Verzweigung falls kleiner ble* Verzweigung falls kleiner gleich bltz Verzweigung falls kleiner blez Verzweigung falls kleiner gleich nop Nulloperation, leere Anweisung bge* Befehlssatz = Instruction Set Befehlsarten: 1. Datenbewegungsbefehle (Data Movement) 2. Arithmetisch-Logische Befehle (Integer Arithmeic and Logical) 3. Schiebe- und Rotationsbefehle (Shift, Rotate) 4. Multimediabefehle 5. Gleitkommabefehle (Floating-Point Instructions) 6. Programmsteuerbefehle (Control Transfer Instructions) 7. Systemsteuerbefehle (System Control Instructions) 8. Synchronisationsbefehle Gleitkommabefehle (Floating-Point Instructions) 1. Bitfeldorientierte Multimediabefehle 2. Graphikorientierte Multimediabefehle Datenbewegungsbefehle, auch: push, pop Saturationsarithmetik: Zahlen"uberschreitungen werden auf die h"ochstwertigste bzw. niederwertigste Zahl abgebildet Befehlsformate: Opcode Dreiaddressformat Zweiaddressformat Einaddressformat Nulladdressformat Lade/- und Speicherarchitektur (Load/Store Architecture) Register-Speicher-Architektur Speicher-Speicher-Architektur Akkumalatoren-Architekturen Stack- und Kellerarchitektur Stackarchiktur: 8087, Intel ATAM862 Atmel Addressierungsarten: Register und Unmittelbare Addressierungsarten Klasse des Einstufigen Addressierung Klasse der zweistufigen Addressierung Datenaddressierung Registeraddressierung Unmittelbare Addressierung Direkte oder absolute Addressierung Registerindirekte ADdressierung Registeraddressiernug mit Autoinkrement/Dekrement Pr"ainkrement, Postinkrement Pr"adekrement, Postdekrement Registerindirekte Addressierung mit Verschiebung (Displacement) Indizierte Addressierung Indizierte Addressierung mit Verschiebung Befehlsaddressierung Befehlsrelativer Modus Befehlsz"ahlerindirekt +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Big-Endian-Format - Little-Endian-Format - Datenformate 1. Einzelbit 2. Ganzzahl (Integer) 3. Gleitkomma 4. Multimedia Ganzzahldatenformate: - signed - unsigned - packed - unpacked - BCD-Zahlen (Binary Coded Decimals) - ASCII Bate Halbwort Wort Doppelwort Gleitkommadatenformate (IEEE-754-Standard) Einfache Genauigkeit: 32 Bit Doppelte Genauigkeit: 64 Bit Erweiterte Genauigkeit: 80 Bit f = (-1)^s * 1.m*2^(e-b) biased - verschoben b bias m Mantissenanteil b = 2^{ne-1}-1 p = 23, einfache p = 52, doppelte p = 63, erweiterte Multimediaformate: 64 Bit breite W"orter Bitfeldorientierte Graphikorientierte Befehlssatz Datenbwegungsbefehle (Data Movement) Arithmetisch-Logische-Befehle Schiebe- und Rotationsbefehle Multmediabefehle Gleitkommabefehle Programmsteuerbefehle Systemsteuerbefehle Synchronisationsbefehle SWAP, TAS Befehlsformate (instruction format) Dreiaddressformat (3-Address Instruction Format), zwei Quelloperanden, ein Zieloperand Zweiaddressformat Einaddressformat Nulladdressformat Lade-/Speicherarchitektur (Load/Store Architecture) Register-Register-Architektur Register-Speicher-Architektur Speicher-Speicher-Architektur Akkumalatorarchitektur Stack- oder Kellerarchitektur Addressierungsart Effektive Addresse Effektive Addresse Virtuelle Addresse Physikalische Addresse Datenaddressierungsarten Registeraddressierung Unmittelbare Addressierung Direkte oder absolute Addressierung Registerindirekte Addressierung Registerindirekte Addressierung mit Autoinkrement/Autodekrement Pr"ainkrement, Postinkrement, Pr"adekrement, Postdekrement Registerindirekte Addressierung mit Verschiebung (Displacement) Indizierte Addressierung Indizierte Addressierung mit Verschiebung Befehlsaddressierungsarten Befehlsrelativer Modus Befehlsindirekter Modus MIS Register $0 bis $31 $0 $zero 0 (read-only) $1 $at reserviert f"ur den Assembler $2 - $3 $v0 - $v1 R"uckgabewert von Funktionsaufrufen $4 - $7 $a0 - $a3 Argumente f"ur den Funktionsauf $8 - $15 $t0 - $t7 Tempor"are Variablen $16 - $23 $s0 - $s7 Gesicherte Variablen $24 - $25 $t8 - $t9 Tempor"are Variablen $26 - $27 $k0 - $k1 Reserviert f"ur das Betriebssystem $28 $gp Data Segment Pointer $29 $sp Stack Pointer $30 $fp Frame Pointer $31 $ra Return Address Einzyklus-Mikroarchitekur Zustandselemente Zustandselemente: - PC - Befehlsspeicher - Registersatz - Datenspeicher Befehlsz"ahlerregister Befehlsspeicher Datenpfad Befehlsholephase (Instruction Fetch - IF) Zustandselmente 1. Befehlsz"ahler 2. Befehlsspeicher 3. Registersatz 4. Datenspeicher Datenpfade f"ur die Daten (Nicht Befehle): Also: - Lesedaten brauchen keinen Eingabeport - warum auch? Aus ihnen wird gelesen Stattdessen 5-Bit-Addresse (32-Bit-Register) - Dann haben wir 3-Address-Befehle - also 2 Lesedaten - Eine Schreibedaten: 32 Bit - Ein Schreiberegister (Welches - 5 Bit) - Einen CLK - Ein WE (Write Enable) Das ist oder war schon der Registersatz Danach kommt die ALU und jetzt nicht direkt verbunden mit Registersatz, sondern mit Datenspeicher Der Befehlsdekodierer bzw. die Steuereinheit hat Steuerleitung zu - RegWrite - Registersatz - WE - MemWrite f"ur Datenspeicher - Keine Daten zu Lese-Daten und Lese-Register, diese sind immer frei => Das m"ussen wir uns so vorstellen, wie mit unseren Multiplexern im Operationswerk Zun"achst mal das Wichtigste: - Registersatz - Datenspeicher - ALU - Steuereinheit Der Datenspeicher ist wiederum mit dem Registersatz verbunden Registersatz -> (Lese-Daten 1, Lese-Daten 2) -> ALU -> Datenspeicher Multiplexer sind: 1. Vor ALU (Lese Daten 2)/F"ur Befehle, zum Berechnen der Adresse 2. Nach Datenspeicher: Entweder Datenspeicher oder ALU Weil: Registersatz -> Datespeicher Von Datenspeicher oder ALU kann das Ergebnis nach Regsistersatz Registersatz -> (Lese-Daten 1, Lese-Daten 2) -> ALU/Datenspeicher -> Registersatz Alles, was mit Befehlen im Operationswerk zu tun hat 1. Befehlsz"ahler 2. Befehlsspeicher 3. Vorzeichenerweiterung 4. 2x Addierer Register-Satz - Lese-Daten 1 -> ALU -> Datenspeicher -> MUX Register-Satz - Lese-Daten 1 -> ALU -> MUX Register-Satz - Lese-Daten 1 -> ALU -> Datenspeicher -> MUX -> Registersatz - Schreibedaten Register-Satz - Lese-Daten 1 -> ALU -> MUX -> Registersatz - Schreibedaten Register-Satz - Lese-Daten 2 -> MUX -> ALU -> MUX Register-Satz - Lese-Daten 2 -> MUX -> ALU -> Datenspeicher -> MUX Normaler Befehlspfad ohne Verzweifung Befehlsz"ahler -> Befehlsspeicher Befehlsz"ahler -> Addierer +4 MUX -> Befehlsz"ahler. Steuereinheit: 1. Befehlsdekodierer 2. Funktionsdekodierer Befehlsdekodierer: 1. MemtoReg 2. MemWrite 3. Branch 4. ALUSrc 5. RegDst 6. RegWrite 7. ALUOp Funktionsdekodierer: ALU Operation: 3 Bit Funktionsdekodierer: 1. Ausgang: ALU Operation: 3 Bit 2. Eingang: Func - vom Befehl - 6 Bit 3. Eingang: ALUOp, 2 Bit vom Befehlsdekodierer Befehlsdekodierer Funktionsdekodierer Registersatz ALU Datenspeicher Befehlsspeicher Befehlsz"ahler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x Bit Shifter Befehlsdekodierer: 1. MemtoReg 2. MemWrite 3. Branch 4. ALUSrc 5. RegDst 6. RegWrite 7. ALUOp Funktionsdekodierer: 1. Func 2. ALUOp 3. ALU Operation Registersatz: - Lese-Register 1 - Lese-Register 2 - Schreiberegister - Schreibedaten - WE - Lese-Daten 1 - Lese-Daten 2 ALU: - ALU-Ergebnis - Null AND: - PCSrc Datenspeicher: - Addresse - Schreibedaten - WE - Lesedaten Befehlsspeicher: - Leseaddresse - Lesedaten Befehlsz"ahler: - PC (t+1) - PC (t) Alle Datenwege: 1. MemtoReg (Befehlsdekodierer) 2. MemWrite (Befehlsdekodierer) 3. Branch (Befehlsdekodierer) 4. ALUSrc (Befehlsdekodierer) 5. RegDst (Befehlsdekodierer) 6. RegWrite (Befehlsdekodierer) 7. ALUOp (Befehlsdekodierer) 8. Func (Funktionsdekodierer) 9. ALUOp (Funktionsdekodierer) 10. ALU Operation (Funktionsdekodierer) 11. Lese-Register 1 (Registersatz) 12. Lese-Register 2 (Registersatz) 13. Schreiberegister (Registersatz) 14. Schreibedaten (Registersatz) 15. WE (Registersatz) 16. Lese-Daten 1 (Registersatz) 17. Lese-Daten 2 (Registersatz) 18. ALU-Ergebnis (ALU) 19. Null (ALU) 20. PCSrc (AND) 21. Addresse (Datenspeicher) 22. Schreibedaten (Datenspeicher) 23. WE (Datenspeicher) 24. Lesedaten (Datenspeicher) 25. Leseaddresse (Befehlsspeicher) 26. Lesedaten (Befehlsspeicher) 27. PC (t+1) (Befehlsz"ahler) 28. PC (t) (Befehlsz"ahler) Abgeschrieben, das war aus dem Blockschaltbild - aber allgemeiner Prozessor (OpenSource - und kann jeder verwenden): ALUOp Func ALU Operanden 00 X 010 - add X1 X 110 - sub 1X 100000 - add 010 - add 1X 100010 - sub 110 - sub 1X 100100 - and 000 - and 1X 100101 - or 001 - or 1X 101010 - slt 111 - set les than Op-Code Reg-Write Reg-Dst ALU-Src Branch Mem-Write Mem-toReg ALU-Op R-Typ 000000 1 1 0 0 0 0 10 lw 100011 1 0 1 0 0 1 00 sw 101011 0 X 1 0 1 X 00 beq 000100 0 X 0 1 0 X 01 Geographisch, von S"uden nach Norden und Westen nach Osten Addierer, Befehlsz"ahler, Befehlsspeicher MUX, Registersatz, Funktionsdekodierer, Befehlsdekodierer Vorzeichenweiterung, Registersatz, Funktionsdekodierer, Befehlsdekodierer 2-Bit-Shifter, MUX, ALU Addierer, Datenspeicher, AND Oder als ganze Bl"ocke, von Westen nach Osten, S"uden nach Norden Block 1: Addierer, Befehlsz"ahler, Befehlsspeicher Block 2: MUX, Vorzeichenerweiterung Regisersatz Funktionsdekodierer, Befehlsdekodierer Block 3 2-Bit-Shifter, Addierer, ALU MUX, ALU, Datenspeiecher, MUX AND Verzweigungsbefehle: 1. Bedingt 2. Unbedingt Zwei Quellregister werden verglichen eq - equal ne - not equl gt - greater than ge - greater than equal lt - less than le - less than equal Zieladdresse: - Angegeben durch 16-Bit-Verschiebewert - der zum inkrementierten Befehlsz"ahler (PC+4) addiert wird Unbedingte Spr"unge: - absolut: branch - befehlsz"ahlerrelativ: jump - befehlsz"ahlerindirekt: jump register Jump-And-Link: JAL - speichern zus"atzlich die Adresse es Befehls, der dem Sprungbefehl folgt J (Jump) JAL (Jump and Link) Fall 1: - Der im Befehlswort codierte unmittelbare Operand wird als Zahl im Zweierkomplement zum Befehlsz"ahler addiert Fall 2: - Der Operand ersetzt einen Teil, (Bits 0 bis 27) des aktuellen Befehlsz"ahlers Opcode, unmittelbarer Operand (immidiate) I Unmittelbarer Operand I Der Operand I wird aus den 26 unteren Bits gewonnen und im Zweierkomplement interpretiert Programmsegment: Wortgrenzen! => Zwei Stellen nach links verschieben und anschlie"send addieren PC_neu = PC_alt + (I << I) Im Fall 2: Ersetzen PC_neu = PC_alt & 0xf0000000 | (I << 2) Verzweigungsbefehle: j, b*, jr unbedingter Sprung, befehlsz"ahlerrelativ, absoluter und befehlsz"ahlerindirekte Addressierung jal* Jump mit Speicher von PC+4 im Register $ra jalr Jump Register mit Speicherung von PC+4 im Register $ra beq, bne Verzweigung fals REgister- oder Register-Operand gleich, oder ungleich beqz*, bnez* Verzweigung falls Register oder oder ungleich 0 bgt*, bge* Gr"o"ser, Gleich bgtz, bgez Gr"o"ser, gr"o"ser gleich Null blt*, ble* Register-Register, Register-Operand kleiner oder kleiner gleich bltz, blez Register kleiner oder kleiner gleich 0 nop Nulloperation Mehrzuyklus - Zustandselemente: - Befehlsz"ahler - Befehlsspeicher - Registersatz - Datenspeicher Datenpfad Pipeline-Prinzip Pipeline-Phase Pipeline-Stufe Pipeline-Register Stufen: 1. Befehl holen 2. Befehl dekodieren 3. Operanden der ALU bereit stellen 4. Operation in der ALU ausf"uhren bzw. Speicherzugriff 5. Resultat in Architekturregister zur"uckschreiben MIPS-Pipeline 1. Befehlsbereitsstellungsphase - IF-Phase - Instruction Fetch 2. Dekodier und Operandenbereitsstellungsphase (ID-Phase - Instruction Decode/Register Fetch) 3. Ausf"uhrungs oder EX-Phase (Execute/Address Calculation) 4. Speicherzugriffsphase - oder MEM-Phase (Memory Access) 5. Resultatspeicher oder WB-Phase (Write Back) WB MEM EX ID IF WB, MEM, EX, ID, IF Ir, PC+4 Ai1, Ai2, Rt, Im, PC+4 Ao, Sv, Rt, Jta Ar, Lv, Rt Pipeline-Konflikte - Datenkonflikte - Steuerflusskonflikte - Struktur und Ressourenkonflikte Superpipelining Parallelverarbeitung Superpipelining: Um Frequenz zu Erh"ohen, noch mehr Stufen UltraSPARC T1 - Superpipelining Parallalverarbeitung: Very Long Instruction Word - VLIW Parallele - Befehlsausf"uhrung 1. Statisches Scheduling 1.1. In-order issue in-order completion 1.2. Very Long Instructon Word - VLIW-Prozessor 2. Dynamisches: 2.1. Out-of-order issue Out of-order completion 2.2. Out-of-order Execution OOE-Prozessor In-Order-Execution-Pipeline: IOE-Prozessor Out-Of-Order-Execution-Pipeline: Sprungvorhersage: Dynamisch, statisch Sprungziel-Cache (Branch Target Cache - BTC) Statische Sprungvorhersagen, durch die Hardware: - Predict always not taken - Predict always taken - Predict backward taken, forward not taken Dynamische Sprungvorhersagen: Ein- und zwei-Bit-Pr"adiktor (Seite 172 - immer abmalen) Predikt Taken -> Predict Taken Predict taken -> predict not taken NT und T predict strongly aken, predict weakle taken, p. weakly not taken ... Immer abmahlen Seite 172/173 Korrelations-Pr"adiktor Seite 173Auswendig:
Auswendig: lb, lbu: laden eines Bytes lh, lhu: Laden eines halbwortes lw: Laden eines Wortes ld* la* li* sb sh sw sd* addi, addu, addiu sub mult, multu div, divu and, andi or, ori xor, xor rem* abs* neg* Lade und Speicherarchitektur Speicher-speicherarchitektur stack und Kellerarchitektur Akkumulatorarchitektur ... FEHLT eines (Register Speicherarchitektur?) Datenbewegungsbefehle arithmetisch logische Befehl Schiebe und Rotationsbefehle Multimediabefehle Gleitkommabefehle systemsteuerbefehle Programmsteuerbefehle Byte Halbwort Wort Doppelwort Einzelbit Ganzzahl Gleitkomma Multimedia Signed Unsigned Packed Unpacked BCD ASCII ieee-754-std f = (-1)^s*1.m*2^(e-b) b: bias e: exponent s: Vorzeichen m: mantisse direkte Addressierung Indirekte Addressierung Absolute Addressierung Immidiate Direktwert Indirekte Addressierung mit Verschiebung indirkte Addressierung mit Autoinkrement/dekrement Indizierte Addresierung Indizierte Addressierung mit Verschiebung Displacemenet Steuereinheit 1.) Befehlsdekodierer 2.) Funktionsdekodierer MemToReg memWrite Branch ALU-Src RegDst RegWrite ALU-OP Befehlsdekodierer RegDst RegWrite ALU-Op ALU-Src MemToReg MemWrite Branch Funktionsdekodierer Func ALU-Op ALU-Operation Befehlsekodierer Funktionsdekodierer Registersatz ALU datenspeicher Befehlsspeicher Befehlszaehler Vorzeichenerweiterungseinheit 4 x MUX 1 x AND 2 x Addierer 1 x 2 Bit Shifter Register: Lese-Register-1 Lese-Register-2 Schreiberegister Lese-Daten-1 Lese-Daten-2 Schreibedaten WE Speicher Addresse Lesedaten Schreibedaten We ALU: ALU AND: PC-Src Befehlszaehler: PC (t) PC (t+1) Befehlsspeicher Lesedaten Schreibedaten ALU-Op Func ALU-Operation 00 x 010 - add x1 x 110 - sub 1x 100 - 000 010 - add OpCode RegDst RegWrite Branch ALU-Src MemToReg MemWrite ALU-Op r-typ 000 000 1 1 0 0 0 0 10 Verzweigungsbefehle 1.) Bedingt 2.) Bedingt eq - equal ne - not equal gt - greater than ge - greater than equal lt - less than le - less than equal 1.) Absolut 2.) Befehlssrelativ 3.) ... lernen nachgucken weiss nicht genau Branch Jump PC_neu = PC_alt + (i << 2) PC_neu = PC_alt & 0xf000 0000 | (I << 2) Nachgucken jb, jb*, jr jal, jalr beq, bne beqz*, bnez* ble*, blt* blez, bltz bgt*, bge* bgtz, bgez Befehlsspeicher Befehlszaehler Registersatz Datenspeicher Stackarchitektur: 8087, Intel ATAM 862, Atmel 1.) Befehl holen, instruction fetch 2.) Befehl dekodieren, instruction decode/register fetch 3.) Befehl ausfuehren, Execute Address Calculation 4.) Speicherzugriffsphase, Mem Memory Access 5.) WB Resultatsspeicherphase IF, ID, EX, MEM, WB 1.) VLIW = very long instruction 2.) OOE Out Of Order Issue Out of Order Execution 3.) In Order Issue in Order Completion 1.) Ein bit Praediktor 1.1.) Predict Taken, Not Taken 1.2.) Predict Strongly, weakly Taken Not Taken Inhalt, Kapitel Schalnetze Schaltwerke Komplexe Schaltwerke Aufbau und Funktionsweise eines Computers Schaltnetze Boolsche Algebra Definition der Booleschen Algebra Schaltalgebra ein Modell der Booleschen Algebra Schaltfunktionen Definition Darstellung Minimierung Analyse von Schaltnetzen Synthese von Schaltnetzen Wort - Glieder?? Kodierglieder Schaltnetzentwurf fuer die 8421-BCD- zu sieben Segment Umsetzumsetzung Schaltnetzentwurf fuer einen Addresskodierer Komperatoren Multiplexer Addierer Zahlendarstellung und zweierkomplement Addierer/subtrahierer ALU Programmierbare Logikbausteine PROM EPROM PAL PLA Schaltwerke Entwurf von Schaltwerken Implementierung von Schaltwerken Synthese von Schaltwerken Analyse von Schaltwerken Aufbau Komplexer Schaltwerke Speichergliedr Transformation mealy und moore Komplexe schaltwerke Entwurf komplexer Schaltwerk RTL-Notation ASM-Diagramme Aufbau ud Funktionsweise eines computers Beispiel einsen Zaehler Loesung mit komplexen Moore Schaltwerk Loesung mit komplexen Mealy schaltwerk Moore Steuerwerk als konventionelles Schalwerk Moore Steuerwerk mit HotOne Kodierung mealy Steuerwerk als konventielles Schaltwerk Mealy Steuewerk mit HoOne Kodierung Mikroprogrmmiertes Steuerwerk Aufbau und Funktionsweise eines Computers Erweiterung komplexer Schaltwerke Komponenten eines Computers rechenwerk Leitwerk Speicher Ein und Ausgabe Unterprogramme, Unterbrechungen Interruptes Interne und externe Daten Rechenwerk Registersatz ALU Arithmetische Operationen Logische Operationen Schiebemultiplexer Steuerwerk Hier fehlen ein paar Sachen, genauer machen, vom Wortlaut Schaltnetze: sind elektronische Schaltungen, die Spannungen als logische Variablen 0 und 1 interpretieren Schaltnetz: Definition DIN 44300/93 Schaltfunktion: DIN 44300/87 boolsche Algebra, Schaltalgebra Eingangsvektor, Ausgangsvektor Eingangsvariablen, x0, x1, ..., xn Eingangsvektor Schaltnetz Ausgangsetor Boolsche Algebra, Schaltalgebra f:{0,1}^m->{0,1}^n Schaltfunktion, Vektorfunktion Schaltalgebra ein Boolschen Algebra Boolsche Algbra ist eine Algebraische Struktur Schaltalgbra ist Boolesche Algbra ueber der Menge {0,1} 1.) Menge B={0,1} 2.) Verknuepfungen wedge, vee 3.) Es gelten die gesetze der Boolschen Algebra Assoziativgesetz Distributivgesetz Kommutivgesetz Absorbtionsgesetz neutrales element inverses Element De Morgan Neutralitaet? AND - Konjunktion OR - Dijunktion Transfer Antivalenz Inhibition Aequivalenz Null Eins fehlt was Komperator, Schaltfunktion, Rechenelement: DIN 40700 Kodierer: zuordnung des Zeichen eines Zeichenvorrats zu dem Zeichen eines anderen zeichenvorrats Dekodierer: Kodierer, mit mehreren ein und Ausgaengen, bei denen fuer jede Kombinition von Eingangssignalen immer nur je ein Ausgang das Signal 1 annimmt kodierer: DIN44300/118 Dekodierer: diN 44300/121 Addierer S = A XOR B XOR C U = A AND B OR (A OR B) AND C PLHS 18P8
b a x b a y 0 0 0 0 0 0 1 1 0 0 1 1 1 1 2 0 1 0 1 0 1 3 0 1 1 0 0 0 4 1 0 0 0 1 1 5 1 0 1 1 1 0 6 1 1 0 1 0 1 7 1 1 1 0 0 1 b a x b 1 0 0 1 1 2 0 1 0 1 5 1 0 1 1 6 1 1 0 1 b a x a 1 0 0 1 1 4 1 0 0 1 5 1 0 1 1 b a x y 0 0 0 0 1 1 0 0 1 1 2 0 1 0 1 4 1 0 0 1 6 1 1 0 1 7 1 1 1 1 b a x b Gruppe 1: 1 0 0 1 1 2 0 1 0 1 Gruppe 2: 5 1 0 1 1 6 1 1 0 1 b a x a Gruppe 1: 1 0 0 1 1 4 1 0 0 1 Gruppe 2: 5 1 0 1 1 b a x y Gruppe 0: 0 0 0 0 1 Gruppe 1: 1 0 0 1 1 2 0 1 0 1 4 1 0 0 1 Gruppe 2: 6 1 1 0 1 Gruppe 3: 7 1 1 1 1 b a x b Gruppe 1: 1 0 0 1 1 2 0 1 0 1 Gruppe 2: 5 1 0 1 1 6 1 1 0 1 1:5 - 0 1 2:6 - 1 0 b <= (not a and x) or (x and not x) b a x a Gruppe 1: 1 0 0 1 1 4 1 0 0 1 Gruppe 2: 5 1 0 1 1 1:5 - 0 1 4:5 1 0 - a <= (not a and x) or (b and not a) b a x y Gruppe 0: 0 0 0 0 1 Gruppe 1: 1 0 0 1 1 2 0 1 0 1 4 1 0 0 1 Gruppe 2: 6 1 1 0 1 Gruppe 3: 7 1 1 1 1 0:1 0 0 - 0:2 0 - 0 0:4 - 0 0 2:6 - 1 0 4:6 1 - 0 6:7 1 1 - 0:1 0 0 - 6:7 1 1 - 0:2 0 - 0 4:6 1 - 0 0:4 - 0 0 2:6 - 1 0 0:1 0 0 - 6:7 1 1 - 0:2:4:6 - - 0 0 1 2 4 6 7 0:1 - - 6:7 - - 0:2:4:6 - - - - y <= (not b and not a) or (b and a) or (not x) a <= (not a and x) or (b and not a) b <= (not a and x) or (x and not x) y <= (not b and not a) or (b and a) or (not x)
bash
#!/bin/bash if [[ "$1" == "David" && "$2" == "Vajda" ]] then echo "Das bin ich" elif [[ "$1" == "Vajda" && -z "$2" ]] then echo "Das koennte ich sein" else echo "Hallo Welt" i=0 while [ $i -lt 10 ] do echo "Hallo zum $(($i+1))" i=$(($i+1)) done A=(a b c d) A+=(e f g h) i=0 while [ $i -lt 8 ] do echo "${A[$i]}" i=$(($i+1)) done for s in "${A[@]}" do echo "$s" done /bin/bash "$0" "David" "Vajda" /bin/bash "$0" "Vajda" fi
Hallo Welt Hallo zum 1 Hallo zum 2 Hallo zum 3 Hallo zum 4 Hallo zum 5 Hallo zum 6 Hallo zum 7 Hallo zum 8 Hallo zum 9 Hallo zum 10 a b c d e f g h a b c d e f g h Das bin ich Das koennte ich sein
;; Das scheint funktioniert zu haben, aus dem Kopf .include "m8def.inc" ldi r16, 0xff out DDRB, r16 ldi r16, 0x00 out PORTB, r16 end: rjmp end ; david@work:~$ avra m820240921.asm ; david@work:~$ avrdude -c stk500 -p atmega8 -U flash:w:m820240921.hex -P /dev/ttyUSB0
.include "m8def.inc" ldi r16, 0xff out DDRB, r16 ldi r16, 0x00 todoagain: com r16 out PORTB, r16 com r16 ldi r17, 0xff slowmotion1: dec r17 ldi r18, 0xff slowmotion2: dec r18 ;ldi r19, 0xff ;slowmotion3: ; dec r19 ; cpi r19, 0x00 ; brne slowmotion3 cpi r18, 0x00 brne slowmotion2 cpi r17, 0x00 brne slowmotion1 inc r16 rjmp todoagain end: rjmp endund:
.include "m8def.inc" ldi r16, 0xff out DDRB, r16 ldi r16, 0x01 todoagain: com r16 out PORTB, r16 com r16 ldi r17, 0xff slowmotion1: dec r17 ldi r18, 0xff slowmotion2: dec r18 ;ldi r19, 0xff ;slowmotion3: ; dec r19 ; cpi r19, 0x00 ; brne slowmotion3 cpi r18, 0x00 brne slowmotion2 cpi r17, 0x00 brne slowmotion1 rol r16 mov r21, r16 andi r21, 0b10000000 ror r21 ror r21 ror r21 ror r21 ror r21 ror r21 ror r21 ror r21 or r16, r21 rjmp todoagain end: rjmp end