Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Hard- und Softwaretechnik

No description
by

Gregy Huber

on 24 June 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Hard- und Softwaretechnik

Hard- und Softwaretechnik
Grundlagen
Logik
Verknüpfungen
Schaltalgebra
-auch Boolsche Algebra
- ein UND bindet stärker als ein Oder
- die Disjunktive Normalform beschereibt die einsen
- die Konjunktive Normalform beschreibt die nullen
Karnaugh-Veitch-Diagramm
Das Karnaugh-Veitch-Diagramm (bzw. das Karnaugh-Veitch-Symmetrie-Diagramm, die Karnaugh-Tafel oder der Karnaugh-Plan), kurz KV-Diagramm, KVS-Diagramm oder K-Diagramm (engl. Karnaugh map), dient der übersichtlichen Darstellung und Vereinfachung Boolescher Funktionen in einen minimalen logischen Ausdruck. Es wurde 1952 von Edward W. Veitch [viːtʃ] entworfen und 1953 von Maurice Karnaugh [ˈkɑːɹnɔː] zu seiner heutigen Form weiterentwickelt.
Das Ausfüllen des KV-Diagramms

Ein KV-Diagramm für n Eingangsvariablen hat 2n Felder (siehe Beispiel). Das KV-Diagramm wird mit den Variablen an den Rändern beschriftet. Dabei kommt jede Variable in negierter und nicht-negierter Form vor. Die Zuordnung der Variablen zu den einzelnen Feldern kann dabei beliebig erfolgen, jedoch ist zu beachten, dass sich horizontal und vertikal benachbarte Felder nur in genau einer Variablen unterscheiden dürfen (Gray-Code). Mit Hilfe der Wahrheitstabelle der zu optimierenden Funktion wird in die einzelnen Felder eine 1 eingetragen, wenn ein Minterm der Funktion vorliegt, andernfalls eine 0.

wobei der Vektor der Eingangsvariablen ist. In einer disjunktiven Normalform gilt dies für jeden Konjunktionsterm, der 1 liefert, da dann auch die Gesamtdisjunktion und folglich auch die Funktion 1 liefert.
KV-Diagramme eignen sich für die Vereinfachung von Funktionen mit bis zu ca. 4-6 Eingangsvariablen; bis 4 Variablen sind sie übersichtlich.
Vereinfachung
Sind weniger Felder des KV-Diagramms mit 0 als mit 1 belegt, so wählt man die Minterm-Methode, andernfalls die Maxterm-Methode.
Minterm-Methode



Man versucht, möglichst viele horizontal und vertikal benachbarte Felder, die eine 1 enthalten (Minterme) zu rechteckigen zusammenhängenden Blöcken (Päckchen) zusammenzufassen. Als Blockgröße sind alle Potenzen von 2 erlaubt (1, 2, 4, 8, 16, 32, ...). Dabei sind alle 1-Felder mit Blöcken zu erfassen.
Ein Block kann unter Umständen über den rechten bzw. unteren Rand des Diagramms fortgesetzt werden. Dies erklärt sich folgendermaßen: KV-Diagramme für drei Variablen müssen im Grunde als Zylinder verstanden werden. Die Felder ganz links und ganz rechts bzw. oben und unten sind also benachbart. KV-Diagramme für vier Variablen müssen im Grunde als Torus („Donut-Form“) verstanden werden; die vier Ecken des quadratisch gezeichneten KV-Diagrammes sind benachbart. Noch komplexere Nachbarschaftsbeziehungen gelten für 5 oder mehr Variablen. Da multidimensionale Gebilde zeichnerisch schwierig zu handhaben sind, wählt man die Darstellung in der Ebene, muss dann aber die Nachbarschaftsbeziehungen im Sinn behalten.
Von den ermittelten Blöcken sind so viele auszuwählen, dass alle 1-Felder überdeckt werden. Bei vielen Schaltfunktionen sind das alle zusammengefassten Blöcke, es kommt jedoch nicht selten vor, dass es Alternativen gibt. Dann besteht bei gleich großen Blöcken die freie Auswahl, andernfalls sind die größeren Blöcke zu wählen, da sie zu den kleineren (da stärker zusammengefassten) Termen führen.
Die gebildeten und ausgewählten Blöcke/Päckchen wandelt man nun in Konjunktionsterme um. Dabei werden Variablen innerhalb eines Blockes, die in negierter und nicht negierter Form auftreten, weggelassen.
Diese UND-Verknüpfungen werden durch ODER-Verknüpfungen zusammengefasst und ergeben eine disjunktive Minimalform.
Maxterm-Methode
Die Maxterm-Methode unterscheidet sich von der Minterm-Methode lediglich in folgenden Punkten:
Statt Einsen werden Nullen zu Päckchen zusammengefasst.
Ein Päckchen bildet einen Disjunktionsterm (ODER-Verknüpfungen, statt eines Konjunktionsterms).
Die Disjunktionsterme werden konjunktiv (mit UND) verknüpft.
Die Variablen werden zusätzlich einzeln negiert.


Häufig gibt es Boolesche Funktionen mit Wahrheitstabellen, in denen nicht für jede Kombination der Eingangsvariablen ein Wert der Ausgangsvariablen definiert sein muss. Man nennt solche Ausgangszustände Don’t-Care-Terme und bezeichnet sie mit X, da sie sowohl den Wert 1 als auch 0 annehmen können. Diese X-Felder dürfen als 1 oder 0 angesehen werden, um in der Minterm- oder Maxterm-Methode Blöcke von Einsen oder Nullen zu vervollständigen. Ein gutes Beispiel dafür ist die Dekodierung einer binär codierten Dezimalzahl (BCD). Hier spielen nur die Zahlen 0 bis 9 eine Rolle, die sogenannten Pseudotetraden dürfen ein beliebiges Ergebnis liefern, sind also Don’t-Care-Terme.
Synthese
Eine logische Funktion ist oft nur in Form einer Wahrheitstabelle vorhanden. Aus ihr lässt sich aber unschwehr die disjunktive oder konjunktive Normalform herauslesen. Mit der Schaltalgebra lässt sich die Formel meist verinfachen. Diese muss dann eventuell noch umgeformt werden, bis sich eine Möglichkeit der Realisation durch NAND-Tore ergibt.
Zahlensysteme
Oktal
-Das Oktalsystem, geht von 0-8
-um von Binär zu Oktal zu wandeln wird die Binäre Zahl in 3er Gruppen aufgeteilt
Dual
- Das Dualsystem hat nur die Ziffern 0 und 1
Hex
- Das Hexsystem geht von 0-F(1-9 und A-F)
- um von binär zu Hex umzuwandeln muss die binäre Zahl in 4er Gruppen unterteilr werden
BCD code
BCD oder BCD-Code (von engl. Binary Coded Decimal) bezeichnet in der Informatik in der Regel den 8-4-2-1-Code. In diesem Fall kann Binary Coded Decimal mit dualkodierte Dezimalziffer übersetzt werden. Es handelt sich dann um einen numerischen Code, der jede Ziffer einer Dezimalzahl einzeln dualkodiert. Die Ziffernfolge 8-4-2-1 steht dabei für die Werte der Stellen in einer dualkodierten Dezimalziffer. In einigen Fällen wird mit BCD die allgemeine Binärkodierung einzelner Dezimalziffern bezeichnet (siehe weiter unten). Der BCD-Code sollte nicht mit dem BCD-Zählcode verwechselt werden.
Um eine Zahl als BCD-Zahl darzustellen, wird jede dezimale Ziffer (0 bis 9) durch jeweils vier Bit dargestellt (0000 bis 1001, siehe Codetabelle), also in einem Halbbyte (Nibble). Die verbleibenden sechs Werte (10102 bis 11112), die mit vier Bit darstellbar sind, stellen keine gültigen BCD-Zahlen dar und werden auch als Pseudotetraden bezeichnet.
Flip Flop
RS
JK
D
D-Flipflops (Data-Flipflops, oft auch bezeichnet als Delay-Flipflops zum Verzögern des Datensignals um einen Takt) erschienen als Einzelbausteine erstmals in den 1960er Jahren. Diese besitzen einen Daten- (D) und einen Clock-Eingang (C, oft dargestellt als „>“). Oft ist noch ein sogenannter Clock-Enable-Eingang (CE) vorhanden, mit dem der Takteingang in seiner Funktion freigeschaltet werden kann (engl. enable = freigeben). Als Ausgang kommt Q und nur selten der dazu invertierte Ausgang vor. Aus diesem elementaren Flipflop lassen sich durch externe Beschaltung alle weiteren taktflankengesteuerten Typen von Flipflops und komplexere Schaltungen wie Synchronzähler, Taktteiler oder auch Schieberegister realisieren.
Das D-Flipflop speichert bei freigeschaltetem Takteingang und aktiver Taktflanke den logischen Zustand des Eingangs und gibt seinen Wert in Folge auf Q aus. Liegt keine aktive Taktflanke an oder ist der Clock-Enable-Eingang deaktiviert, erfolgt keine Übernahme des Eingangswertes.
Davon zu unterscheiden ist das taktzustandsgesteuerte D-Flipflop, auch als D-Latch bezeichnet, welches aus einem RS-Flipflop erweitert um einen Taktzustandseingang besteht. Diese Gruppe wird insbesondere in der englischsprachigen Literatur und zur Unterscheidung von dem taktflankengesteuerten D-Flipflop als Latch bezeichnet. Solange der Takteingang C aktiv ist, nimmt das Latch den Zustand an, der am Eingang D anliegt, das ist der transparente Zustand. Der Vorteil des D-Latch ist, dass der illegale Zustand R = S = 1 vermieden wird. Der Nachteil besteht darin, dass es wie alle taktzustandsgesteuerten Flipflops einen direkten Durchgriff des Eingangs D auf den Ausgang Q aufweist und damit insbesondere in synchronen digitalen Schaltungen, wie in FPGAs, unbestimmte Zeitverhältnisse auftreten können.
Wegen ihrer eingängigen Funktionsweise haben sich D-Flipflops bis heute als verbreitetes Beschreibungssymbol für Einzelfunktionen in hochintegrierten Bausteinen wie Microcontrollern, Field Programmable Gate Array (FPGAs) und ASICs erhalten.
T
Ein asynchrones T-Flipflop (Toggle-Flipflop) wechselt mit jedem Taktimpuls seinen Ausgangszustand. Seine erste Realisierung in elektromechanischer Bausteinform wurde schon im 19. Jahrhundert als Treppenhausschalter prominent und ist heute noch bei Neuinstallationen verbreitet im Einsatz. Das asynchrone T-Flipflop kann durch ein (synchrones) D-Flipflop gebildet werden, wenn dessen Ausgang Q invertiert auf den Eingang D zurückgeführt wird. T steht dabei für englisch toggle – Hin- und herschalten. Vor allem bei diskreten Digitalschaltungen wird zur Realisierung eines asynchronen T-Flipflops manchmal auch das oben beschriebene JK-Flipflop verwendet. Dabei müssen beide Eingänge des JK-FF auf logisch »1« gelegt werden.
Ein asynchrones T-Flipflop funktioniert ähnlich wie ein Druckkugelschreiber oder ein Stromstoßrelais (Stromstoßschalter). Wegen der oben schon erwähnten Eigenschaft des mit halber Frequenz des Taktsignals wechselnden Ausgangspegels dienen diese Flipflops vor allem als Frequenzteiler und als Grundelement in asynchronen digitalen Zählern. Man verwendet sie auch, um ein Rechtecksignal mit einem Tastverhältnis von exakt 1:1 zu gewinnen.
Programmieren
Aufbau
Praktischeanwendung
UHR
D-FF als Toggel FF beschalten um den Taster wie ein Kippschalter zu nutzen, der Schmitttrigger IC8B verhindert, dass man mehrmals kurz hintereinander umschalten kann.
AND IC Damit bei Stromausfall die Taster nicht bedient werden können, da die Speisung +5SW verloren geht.
Der Quarzoszillator gibt eine Frequenz von 32.768 kHz aus, IC6 teilt die Frequenz durch 4096 die D-FF welche so beschalten sind, dass sie bei jedem Impuls toggeln teilen dies durch 3 mal durch 2 so dass am schluss noch 1 Hz aus der Taktschaltung kommt.
Binärzähler, zählt binär hoch bis 9, setzt sich dann zurück und gibt über RC eine Übertrag.
Binär zu BCD wandler, wandelt den Binärcode in BCD um, um die 7-Segmentanzeigen anzusteuern.
Nand Gatter für den Reset bzw. Übertrag, da dieser Zähler bei 6 zurückgesetzt werden muss und einen Übertrag geben muss auf die Minuten.

Das RC glied verhindert ein durchrutschen, falls der Impuls fälschlicherweise beim umschalten kommt.

Der schmitttrigger wandelt das analoge Signal vom RC Glied wieder in ein sauberes digitales.
IC18D verhindert, dass man beim stellen hochschalten kann wenn gerade ein Zähl impuls kommt, da sonst der Zählstand ungewollt um zwei stellen springt.
Dieses Nand-Gatter invertiert das kommende Signal hier wurde ein Nand dafür verwendet, damit nicht ein weiteres IC auf den Print muss.
Dieser Teil verhindert, dass auf der Zehnerstelle der Stunden eine Null angezeigt wird, also nciht
->01:00:00 sondern ->1:00:00
Verknüpft die beiden Zähler, wenn der ober eine 4 hat und der untere eine 2 setzt er die Anzeige also die zähler auf 0 zurück: 24:00:00 -> 00:00:00
Treiber für die Anzeige, da man aus den Logik IC's nicht den nötigen Strom ziehen kann.
7-Segmentanzeige
Hier wird der Schmitttrigger als normaler Inverter genutzt, damit kein zusätzliches IC auf den Print muss.
Die Masse ist weich geerdet.
Brückengleichrichter
klappt die negativen Sinusabschnittehoch.
Kondensator zum verringern der Brummspannung
Ultracap mit 1F kann bei kurzfristigem Stromausfall die Schaltung weiterlaufen lassen, die Anzeige läuft jedoch nicht, so ist es möglich, dass die Zeit noch stimmt nach einem Stromausfall.
Die anzeige läuft ohne Spannungsregler, da die Netzschwankungen nicht sichtbar sind. Und ein Spannungsregler desshalb nur unnötigen Leistungsverlust bringen würde.
Wenn der Taster gedrückt bleit zählt die Anzeige automatisch hoch, da der Schmittriger den Kondensator lädt dann umschaltet, der kondensator kann sich entladen und das ganez beginnt von vorne, das ganze gibt also eine Frequenz aus, solange der Taster gedrückt ist.
Tasterentprellung
Garantiert einen sauberen 5V pegel wenn der Taster hochohmig ist.
Stützkondensatoren und ungenutzte Gatter, deren Eingänge müssen auf 5V oder 0V liegen da sie sonst undefiniert wären und das IC zu schwingen beginnen könnte, dadur können die restlichen Gatter im IC gestört werden oder das IC sogar kaputt gehen.
Prozessor
Sprachen
Assembler
C
Befehlsliste einer PIC 16fXXX Alu
Beschreibung

Programmbefehle in Maschinensprache – Instruktionen – sind einfache Bitmuster, die sich aus den Opcodes und den zugehörigen Daten bilden. Da die Zahlenwerte der Opcodes schwieriger zu merken sind, verwendet eine Assemblersprache besser merkbare Kürzel, so genannte mnemonische Symbole (kurz Mnemonics).

Beispiel:

Der folgende Befehl in der Maschinensprache von x86-Prozessoren
10110000 01100001

entspricht dem Assemblerbefehl


movb $0x61, %al ; AT&T-Syntax (Zeichen nach einem „;“ gelten als Kommentare)

bzw.


mov al, 61h ; Intel-Syntax

und bedeutet, dass der hexadezimale Wert 61 (97 dezimal) ins Register ‚al‘ geladen werden soll (al: dabei steht das ‚a‘ für das Register, und das ‚l‘ für low, was praktisch dem ersten Teil des Registers entspricht). Der zweite Teil des Registers wird mit einem ‚h‘ ausgezeichnet, das ‚h‘ steht für High (Also: ‚ah‘). Soll das ganze Register (je nach Speicherbedarfs des Typs, der gespeichert werden soll) angesprochen werden, wird ‚l‘ bzw. ‚h‘ durch ein ‚x‘ ersetzt: ‚ax‘. Mit Computerhilfe kann man das eine in das andere weitgehend eins zu eins übersetzen. Jedoch werden Adressumformungen vorgenommen, so dass man symbolische Adressen benutzen kann. Im Allgemeinen haben die Assembler neben den eigentlichen Codes auch Steueranweisungen, die die Programmierung bequemer machen, zum Beispiel zur Definition eines Basisregisters.

Häufig werden komplexere Assemblersprachen (Makroassembler) verwendet, um die Programmierarbeit zu erleichtern. Makros sind dabei Bruchstücke von Assemblercode, der vor dem eigentlichen Assemblieren automatisch an Stelle der Makroaufrufe eingefügt wird. Dabei können einfache Parameterersetzungen vorgenommen werden. Die Disassemblierung von derart generiertem Code ergibt allerdings den reinen Assemblercode ohne die beim Übersetzen expandierten Makros.
Überblick

C ist eine Programmiersprache, die auf fast allen Computersystemen zur Verfügung steht. Sie zählt zu den sogenannten prozeduralen Programmiersprachen. Um den Wildwuchs zahlreicher Dialekte einzudämmen, wurde C mehrfach standardisiert (C89, C95, C99, ISO-C). Abgesehen vom Mikrocontrollerbereich, wo eigene Dialekte existieren, sind die meisten aktuellen PC-/Server-Implementierungen eng an den Standard angelehnt; eine vollständige Implementierung aktueller Standards ist aber selten. In den meisten C-Systemen mit Laufzeitumgebung steht auch die genormte Standard C Library zur Verfügung. Dadurch können C-Programme, die keine sehr hardware-nahe Programmierung enthalten, in der Regel gut auf andere Zielsysteme portiert werden. Konzeptionell ist C auf einfache Kompilierbarkeit ausgelegt. Die Compiler erzeugen in der Regel aber auch nur wenig Code zur Gewährleistung der Sicherheit zur Laufzeit der Programme.

Die Verbreitung von C ist groß, und viele Programmierschnittstellen für Anwendungsprogramme und Betriebssystem-APIs werden in Form von C-Schnittstellen implementiert, z. B. Win32

Geschichte

Frühe Entwicklungen

C wurde 1969–1973 von Dennis Ritchie[1] in den Bell Laboratories für die Programmierung des damals neuen UNIX-Betriebssystems entwickelt. Er stützte sich dabei auf die Programmiersprache B, die Ken Thompson und Dennis Ritchie in den Jahren 1969/70 geschrieben hatten – der Name C entstand als Weiterentwicklung von B. B wiederum geht auf die von Martin Richards Mitte der 1960er-Jahre entwickelte Programmiersprache BCPL zurück[3]. Ritchie schrieb auch den ersten Compiler für C. 1973 war die Sprache so weit ausgereift, dass man nun den Unix-Kernel für den PDP-11 neu in C schreiben konnte.

Hauptartikel: Varianten der Programmiersprache C

C verbreitete sich rasch und wurde laufend weiterentwickelt. Das führte dazu, dass das von Kernighan und Ritchie beschriebene C nicht mehr dem C entsprach, das von den Compilern unterstützt wurde. Um eine Normierung der Sprache zu erreichen, setzte das American National Standards Institute (ANSI) 1983 ein Komitee namens X3J11 ein, das 1989 schließlich die Norm ANSI X3.159-1989 Programming Language C verabschiedete. Ein Jahr später übernahm die ISO diese Norm (mit kleinen Änderungen) als C90. 1995 veröffentlichte die ISO eine Ergänzung zur Norm (C95). 1999 wurde der Standard ISO/IEC 9899 verabschiedet. Mit diesem Standard, der als C99 bekannt ist, flossen auch aus C++ bekannte Erweiterungen zurück in die Sprache C. Danach arbeitete das Normierungskommitee WG14 an der nächsten Erweiterung der Programmiersprache unter dem Arbeitstitel C1X , die am 8. Dezember 2011 als C11 veröffentlicht wurde
Beispiel
Im Beispiel handelt es sich um ein Programm, dass als Hausaufgabe gemacht werden musste. Es ist ein Rechner mit menü auswahl.
Links
http://www.cprogramming.com/tutorial/c++-tutorial.html
C++/C:
http://www.proggen.org/doku.php?id=cpp:start
Videos
FF-Zähler
IC Herstellung
Assembler
Programmieren
5V Spannungsregler
Windrichtungsmessung
TP-Vorbereitung
Förderband
TP-Vorbereitung
Full transcript