\documentclass[12pt,a4paper]{article} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{graphicx} %\usepackage{picins} \usepackage{thmbox} \parindent0pt \usepackage[left=1.00cm, right=1.00cm, top=1.00cm, bottom=1.00cm]{geometry} \begin{document} \newtheorem[S,bodystyle=\normalfont]{defi}{Definition} \newtheorem[S,bodystyle=\normalfont]{satz}{Satz} \newtheorem[S,bodystyle=\normalfont]{bew}{Beweis} \renewcommand{\thedefi}{\hspace{-0.5em}} \renewcommand{\thesatz}{\hspace{-0.5em}} \renewcommand{\thebew}{\hspace{-0.5em}} \newtheorem{lol}{} \renewcommand{\thelol}{\hspace{-0,5em}} \pagestyle{empty} \section{Einführung} Technische Informatik ist diejenige Disziplin der Informatik, die sich mit dem Entwurf von Systemen in Hard- und Software beschäftigt. \section{Funktion und Struktur} \begin{defi}[System] wird im Zusammenhang mit natürlichen, technischen und organisatorischen Gebilden mit komplexem Erscheinungsbild eingesetzt.\\ Fülle an Merkmalen: Grad der Bestimmtheit, Entstehungsweise, örtliche und zeitliche Konzentriertheit, Zeitabhängigkeit\\ Umfasst stets kleine Anteile - Untersysteme, Komponenten, Module, Bausteine, Elemente $\Rightarrow$ Objekte.\\ Zwischen den Objekten eines Systems müssen Beziehungen materieller, energetischer und informationeller Natur bestehen. Gesamtheit dieser Beziehungen bildet zusammen mit den Objekten die Struktur des Systems, eine abgeschlossene Einheit. Nur über definierte Schnittstellen kann ein System betreten und verlassen werden. \end{defi} Darstellung:\\ externe Sicht für Benutzer: keine Aussagen über interne Realisierung des Systems \\ interne Sicht nur für den Hersteller und Betreiber: geeignete Beschreibungsmöglichkeit durch Funktion F\\ Komplexe Systeme werden unterteilt in überschaubare Teilsysteme und einzeln bearbeitet. Einstufige Verfeinerung reicht meist nicht aus, deshalb mehrstufige Verfeinerung. Zwei Möglichkeiten: Top-Down-Prinzip oder Bottom-Up-Prinzip \section{Nachricht und Signal} \begin{defi}[Information] Information ist nicht allgemein definiert, jedoch in der Gemeinsprache als Kenntnis über reale oder gedankliche Sachverhalte und Vorgänge bekannt.\\ Nachrichten: Weitergabe von Information\\ Daten: Verarbeitung von Informationen\\ Zeichen: ein Element aus einer endlichen Menge von Objekten\\ Alphabet: Zeichenvorrat, zur Darstellung von Information vereinbart\\ Symbol: Zeichen mit bestimmter Bedeutung\\ Signal: Die Darstellung von Nachrichten oder Daten mit physikalischen Mitteln \end{defi} Nur diskrete Signale, kontinuierliche Signale sind physikalisch und messtechnisch nicht möglich \begin{defi}[Typen von Signalen] Zeitdiskrete Signale: wertkontinuierlich, wobei man diskrete Abtastzeitpunkte hat\\ Wertdiskrete Signale: zeitkontinuierlich \end{defi} In der Digitaltechnik hat man zeitdiskrete und wertdiskrete Signale. Ein Digitalwert repräsentiert immer ein Intervall an Werten. Grenzwerte werden durch undefinierte Bereiche überbrückt. \begin{defi}[Binärsignale] Signaldarstellung: Auswahl aus zwei Werten\\ Binärsignal enthält Informationen von 1 Bit. Zur Abstraktion werden die Signale häufig als 0 und 1 bezeichnet. Da ein einziges Binärsignal nicht reicht, um Informationen weiterzuleiten, setzt man Binärsignale zusammen. Mit n Binärzahlen lassen sich $2^n$ unterschiedliche Kombinationen darstellen \end{defi} \section{Information und Codierung} \subsection{Informationsgehalt} \begin{defi}[Informationsgehalt] Voraussetzung: Zeichen voneinander unabhängig\\ $I(x)= ld \dfrac{1}{p(x)} = -ld p(x)$\\ Zeichen werden quantitativ im Vergleich zu anderen Zeichen oder im Hinblick auf technischen Darstellungsaufwand bewertet (je seltener, desto mehr Information).\\ 1 bit entspricht der elementaren Entscheidung zwischen zwei gleichwahrscheinlichen Möglichkeiten: $p(x) = 0.5$\\ Für ein Alphabet mit N Zeichen gilt: $\sum\limits_{i=1}^{N} p (x_i) = 1 $ \end{defi} In einer Zeichenfolge mit L Zeichen ist die zu erwartende Häufigkeit eines speziellen Zeichens $x_i: L \cdot p(x_i)$\\ Aus der zu erwartenden Häufigkeit und dem Informationsgehalt eines Zeichens, kann man den durchschnittlichen Informationsgehalt einer Quelle berechnen. \begin{defi}[Entropie] Alle beobachteten Zeichen des Typs $x_i$ liefern insgesamt den Informationsgehalt \[L\cdot p(x_i)\cdot I(x_i)=L\cdot p(x_i)\cdot ld \frac{1}{p(x_i)}\] Wenn alle N Zeichen des Alphabets zusammen betrachtet werden, ist der durchschnittliche Informationsgehalt der Quelle (H ist Entropie der Quelle): \[H=\sum_{i=1}^{N} p(x_i) \cdot ld \dfrac{1}{p(x_i)}\] \end{defi} \subsection{Codierung und Fehlerkorrektur} \begin{defi}[Codewörter] Code ist Vorschrift für eindeutige Zuordnung (Codierung). \\ Die Zuordnung muss nicht umkehrbar eindeutig sein.\\ Codewörter sind elementare Einheiten zur Darstellung von Informationen. Die max. Anzahl der Codewörter im Binären ist $2^m$.\\ Anzahl strukturierter m-stelliger Codewörter mit genau k Einsen: $\binom{m}{k}=\dfrac{m!}{k!\cdot (m-k)!}$ \end{defi} \begin{defi}[Hammingdistanz HD] Seien $CW_i$, $CW_j$ Binärvektoren und $HD_{ij}$ die Anzahl der Stellen, an denen sich $CW_i$ und $CW_j$ unterscheiden. Dann heißt $HD_ij$ die Hammingdistanz zwischen $CW_i$ und $CW_j$.\\ Die Hammingdistanz zwischen zwei gleich langen Codewörtern gibt also die Anzahl der unterschiedlichen Binärstellen an. \end{defi} \begin{defi}[Minimale Hammingdistanz $HD_{min}$] Gibt an, wie weit alle Codewörter aus einer Menge mindestens auseinander sind. Somit ist die minimale Hammingdistanz eine entscheidende Eigenschaft eines Codes, um Übertragungsfehler erkennen und korrigieren zu können. \end{defi} Bei einschrittigen Codes ist die Hammingdistanz zweier benachbarter Codes immer 1, z.B. Gray Code. \subsubsection{Codes für Fehlererkennung/Fehlerkorrektur} Fehlerschutz umfasst Fehlererkennung und Fehlerkorrektur. Diese Schutzwirkung wird durch Codierung realisiert.\\ \\ Es gibt mehrere Arten von Fehlern: Bitfehler, Burstfehler und Symbolfehler.\\ Allgemein gilt: Geeignete Codes können Fehler erkennen und sogar korrigieren. Notwendig ist dabei die Hinzufügung von zusätzlichen/redundanten Informationen bzw. Bits. Es ist wichtig, dass man eine Systematik des Codes festlegt, z.b. minimale Hammingdistanz, Paritätsbits, Blocksicherungsverfahren, Hamming-Codes.\\ \begin{defi}[Paritätsbit-Prüfverfahren] Es wird ein zusätzliches Paritätsbit angehängt. Im Binärwort enthaltene Einsen werden entweder auf gerade oder ungerade Anzahl geprüft und an den Code angehängt. Die Überprüfung erfolgt beim Empfänger.\\ Das Prinzip der Paritätssicherung ist zweidimensional anwendbar (heißt dann Blocksicherung). Dabei wird die Nachricht in Blöcke von n Codewörtern mit Paritätsbit eingeteilt. Zusätzlich wird am Ende jedes Blocks ein weiteres Codewort eingefügt, das alle Paritätsbits der Spalten enthält.\\ Bei Auftreten von Einfachfehlern lassen sich dadurch Spalte und Zeile eindeutig ermitteln. Somit sind Einfachfehler korrigierbar und Bündelstörungen sind erkennbar.\\ \end{defi} \subsection{Hamming-Codes} Mehrfachfehler korrigieren: \begin{satz} [Zusammenhang zwischen $HD_{min}$ und Anzahl erkennbarer / korrigierbarer Fehler] a) Sei $X \subseteq \{0,1\}^n$ ein Code mit $HD_{min}(x)=d$, Dann sind bis zu (d-1) Fehler erkennbar\\ b) Sei $HD_{min}(X)=d=2e + 1$, Dann sind bis zu $e=((d-1)/2)$ Fehler korrigierbar \end{satz} Die Hammingdistanz kann man anhand eines Prüfbits erweitern, jedoch nicht durch weitere Prüfbits. \subsubsection{Konstruktion von Hamming-Codes} Stellen $x_i$ und $y_i$ lassen sich gemeinsam in einem Schema darstellen, das der Binärdarstellung ab dem Wert 1 entspricht.\\ Prüfstellen $y_i$ besitzen nur eine einzige 1 in einer Spalte. \\ Alle anderen Spalten stellen von rechts die Stellen $x_i$ dar. \\ Eine Prüfstelle $y_i$ überprüft alle Informationsstellen $x_i$, die in der Zeile, in der $y_i$ den Wert 1 besitzt, selbst eine 1 in der Tabelle haben.\\ \\ \includegraphics[width=0.7\linewidth]{hammingcodes}\\ \\ Allgemein gilt: \\ Bei m Informationsstellen $x_i$ werden k Prüfstellen $y_j$ zur Bildung des Hamming-Codes benötigt:\\ $2^k - k - 1 \geq m$ \subsection{Nachrichtenübertragung und Optimale Codes} Ziele bei Nachrichtenübertragung:\\ $\Rightarrow$ Darstellungsaufwand minimieren, wenig Bits\\ $\Rightarrow$ Schutz gegen Verfälschungen und typische Fehlerfälle \subsubsection{Bündelstörung} Problem: längere Auswirkung einer Störung auf ein Signal, dadurch können mehrere Bits nacheinander gestört werden. \\ Lösung: Scrambling von Datensequenzen \begin{center} \includegraphics[width=0.5\linewidth]{buendelstoerung} \end{center} Länger anhaltender Störeinfluss verfälscht nur Binärstellen von unterschiedlichen Codewörtern\\ $\Rightarrow$ eine Störung mehrerer Bits ist damit erkennbar, denn pro Codewort ist nur 1 Bit verfälscht. \subsubsection{Optimale Codes} Optimale Codes versuchen, die im Mittel auftretende durchschnittliche Codewortlänge zu minimieren.\\ Der minimal erreichbare Idealwert ist dabei der durchschnittliche Informationsgehalt des Zeichenvorrats.\\ Häufig auftretende Buchstaben $\rightarrow$ möglichst kurze Codewörter,\\ seltene Buchstaben $\rightarrow$ längere Codewörter\\ \begin{defi}[Präfix-freie Codierung] Kein Codewort ist Präfix eines anderen Codewortes, also kein Codewort darf den Beginn eines anderen Codewortes darstellen. \end{defi} \begin{defi}[Shannon-Fano-Code] Zeichenvorrat nach aufsteigender Wahrscheinlichkeit linear sortieren, danach 2 Teilmengen so konstruieren, dass die Summenwahrscheinlichkeiten der beiden Teilmengen möglichst gleich groß sind. Solange wiederholen, bis nur noch 1 Zeichen in resultierenden Teilmengen enthalten ist. \end{defi} \begin{defi}[Huffman-Code] Binärer Codierungsbaum repräsentiert Codewörter mit variabler Bitlänge, präfix-freie Codierung\\ erzeugt optimalen Code\\ \\ Vorgehensweise: \begin{enumerate} \item Finde aus sortierter Liste die beiden Zeichen mit niedrigster Auftrittshäufigkeit (=AH) \item Verschmelze die Zeichen zu neuem Element, dessen AH die Summe der beiden Einzelwahrscheinlichkeiten zugeordnet wird. Sortiere neues Element in Liste. \item Abbruch, wenn nur noch 1 Objekt in Liste übrig \end{enumerate} \end{defi} \newpage \subsection{JPEG-Komprimierung} \begin{enumerate} \item Aufteilung des Bildes in 8x8-Pixelblöcke \item Schnelle diskrete Cosinustransformation (FDCT): transformiert Daten aus Ortsbereich in Frequenzbereich. \[ F(u,v)=\frac{1}{4} C_u C_v \sum_{x=0}^{7}\sum_{y=0}^{7} f(x,y) \cos \frac{(2y+1)u\pi}{16} \cos\frac{(2x+1)v\pi}{16} \] \[C_u, C_v = \frac{1}{\sqrt{2}}\text{ für } u,v=0; 1 \text{ für } u,v=1...7\] \item Quantisierung mithilfe einer Quantisierungsmatrix $Q(u,v)$, der eigentlich verlustbehaftete Vorgang in der Codierung. \\ Ziel: möglichst viele Nullen in die Transformationsmatrix\\ Ansatz: Menschliche Wahrnehmung viel empfindlicher für kleine Variation in Farbe und Helligkeit als für hochfrequente Schwankungen. \\ $\Rightarrow$ Quantisierungsfaktoren für niederfrequente Koeffizienten kleiner wählen als für hochfrequente. \item Umsortierung der Matrix mittels Zig-Zag-Verfahren, Sequenz mit möglichst langen Nullfolgen \\ \includegraphics[width=0.7\linewidth]{umsortierung} \item Lauflängencodierung mithilfe der Huffman-Codierung\\ \includegraphics[width=0.7\linewidth]{lauflaengencodeirung} \end{enumerate} \newpage \subsection{Zahlensysteme} \begin{defi}[Polyadische Zahlensysteme] geben Ziffern ihren Wert in Abhängigkeit von ihrer Stelle innerhalb einer systematischen stellenorientierten Anordnung. \\ Die Stellen werten entsprechen den Potenzen der Basis R des jeweiligen Zahlensystems.\\ Aufbau allgemein: \[ N= d_{n-1}\cdot R^{n-1}+\dots + d_1\cdot R^1+d_0\cdot R^0 \] $N$: Zahl im Zahlensystem\\ $R$: Basis\\ $R^i$: Wertigkeit der i-ten Stelle\\ $d_i$: Ziffer der Stelle i\\ $Z$: Menge der Ziffern \end{defi} Bin $\rightarrow$ Hex: 4 Stellen zusammenfassen, Bin $\rightarrow$ Okt: 3 Stellen zusammenfassen\\ Wenn anderes zum Umrechnen: Division durch Basis R des neuen Systems. Letzter Wert ist vorderste/linkeste Stelle der neuen Zahl in R.\\ \begin{defi}[BCD-Code (Binary Coded Decimal)] Jede Dezimalziffer ist durch 4-Bit Dualzahl dargestellt. \\ Die nicht verwendeten BCDs werden Pseudotetraden genannt.\\ Bei Addition muss zu Pseudotetraden und bei jedem Übertrag noch $6_{10}=0110_2$ addiert werden. \end{defi} \begin{defi}[Gleitkommazahlen] Darstellung von Zahlen durch Vorzeichen (1 Bit), Exponent (8 Bit) und Mantisse (23 Bit)\\ $Zahl = (-1)^V\cdot 2^{E-127}\cdot 1,M$\\ Vorzeichen: $V=0 \Rightarrow$ positiv, $V=1 \Rightarrow$ negativ\\ Mantisse: Die Mantisse ist normalisiert, d.h. dass vor dem Komma genau eine 1 steht. Diese wird nicht gespeichert, sondern nur die Nachkommastellen.\\ Exponent: Der Exponent wird berechnet durch Subtraktion einer Verschiebedistanz (Bias): E-127. Dadurch ist E immer positiv.\\ \\ Spezialwerte:\\ \begin{tabular}{@{}cc|cc} Biased Exponent E & Mantisse M & Wert &\\ $0$\\ \hspace*{10mm}sequence\_of\_statements\\ \hspace*{5mm}\{ when choice =$>$\\ \hspace*{10mm}sequence\_of\_statements \}\\ \hspace*{5mm}$[$ when others =$>$\\ \hspace*{10mm}sequence\_of\_statements $]$\\ end case;\\ \\ \textbf{Bereitstellung von Bibliotheken:}\\ library IEEE;\\ use IEEE.std\_logic\_1164.all;\\ use IEEE.std\_logic\_misc.all;\\ use IEEE.std\_logic\_arith.all;\\ use IEEE.std\_logic\_components.all;\\ \\ \textbf{Entities:} beschreibt die Schnittstelle eines Moduls.\\ Die port\_liste ist eine Liste der Ein- und Ausgänge (identifier : PORT\_MODUS Datentyp)\\ ENTITY half\_adder IS\\ \hspace*{5mm}PORT(\\ \hspace*{10mm}i\_x : IN bit;\\ \hspace*{10mm}i\_y : IN bit;\\ \hspace*{10mm}i\_enable : IN bit;\\ \hspace*{10mm}o\_carry : OUT bit;\\ \hspace*{10mm}o\_result : OUT bit\\ \hspace*{5mm});\\ END half\_adder;\\ \\ \textbf{Architecture:} beschreibt den inneren Aufbau und die Funktion eines Moduls\\ 1. Datenflussbeschreibung: eignet sich für reinkombinatorische, ungetaktete Logik. \\ \hspace*{5mm}Durch ausschließliche Verwendung nebenläufiger Signale möglich.\\ 2. Verhaltensbeschreibung: keine reinen Logikgleichungen, sondern Verhalten wird auf algorithmischer \\ \hspace*{5mm}Ebene beschrieben. Im Allgemeinen übersichtlicher und weniger fehlerträchtig. \\ \hspace*{5mm}Durch Verwendung von Prozessen möglich.\\ 3. Strukturbeschreibung: Hierarchisches Design aus Komponenten, die durch eigene VHDL-Module \\ \hspace*{5mm} beschrieben sind. Im Wesentlichen Umsetzung eines Schaltplans/Blockdiagramms: Instanziierung der \\ \hspace*{5mm}Komponenten und Verdrahtung\\ \newpage ARCHITECTURE architecture\_name OF entity\_name IS\\ -- Deklaration nur intern genutzter Signale\\ BEGIN\\ -- Body aus nebenläufigen Prozessen und Anweisungen\\ \hspace*{5mm}Prozess (PROCESS): enthält sequentielle Anweisungen, z.B.\\ \hspace*{5mm}process (i\_enable, i\_x, i\_y) is \ \ \ --- Sensitivitätsliste, enthält Signale, die das Ergebnis beeinflussen\\ \hspace*{10mm}begin\\ \hspace*{15mm} -- sequentielle Abarbeitung der Befehle -- \\ \hspace*{5mm}end process;\\ \hspace*{5mm}Prozess (PROCESS): enthält sequentielle Anweisungen\\ \hspace*{5mm}nebenläufige Anweisung (concurrent statement);\\ \hspace*{5mm}nebenläufige Anweisung (concurrent statement);\\ \hspace*{5mm}nebenläufige Anweisung (concurrent statement);\\ END [ARCHITECTURE] architecture\_name;\\ \\ \\ Komponenten einarbeiten:\\ architecture structure of full\_adder is\\ \hspace*{5mm}component half\_adder\\ \hspace*{10mm}port (i\_x, i\_y, i\_enable: in std\_logic;\\ \hspace*{15mm}o\_result, o\_carry: out std\_logic );\\ \hspace*{5mm}end component;\\ \hspace*{5mm}signal c1, s1, c2 : std\_logic;\\ begin\\ \hspace*{5mm}HA1: half\_adder port map (\\ \hspace*{10mm}i\_x $=>$ a, i\_y $=>$b, i\_enable $=>$ i\_enable, o\_result $=>$ s1, o\_carry $=>$ c1);\\ \hspace*{5mm}HA2: half\_adder port map (s1, cin, i\_enable, sum, c2);\\ \hspace*{5mm}cout $<=$ c1 or c2;\\ end architecture structure;\\ \\ \\ VHDL-Operatoren:\\ - Logische Operatoren: and, or, nand, nor, xor\\ - Relationale Operatoren: =, /=, $<$, $<$=, $>$, $>$=\\ - Addition und Konkatenation: +, -, \&\\ - Vorzeichen: +, -\\ - Multiplikation: *, /, mod, rem\\ - Exponent, Absolutbetrag, Komplement: **, abs, not\\ \\ Arrays:\\ \includegraphics[width=1\linewidth]{array}\\ Rechnungen auf std\_logic\_vector sind zu vermeiden, da teilweise gar nicht synthetisierbar. \subsection*{Konstanten, Variablen, Signale} Konstanten: der Wert einer Konstante kann nicht verändert werden.\\ Variablen unterscheiden sich nicht von Variablen anderer höheren Programmiersprachen und werden im Rahmen von Zwischenrechnungen verwendet. Eine Variable hat kein Gegenstück in der Hardware!\\ Zuweisung einer Variable: target\_variable := value\_expression;\\ Variablen werden in Prozessen / Unterprogrammen deklariert und sind auch nur da sichtbar. \\ Variablen werden zum Abspeichern temporärer Werte benutzt.\\ Wertzuweisung bei Variablen erfolgt sofort, wenn die Variablenzuweisung ausgeführt wird.\\ Signale sind in anderen Programmiersprachen nicht zu finden. Ein Signal kann man als verbindende physikalische Leitung bzw. als Register ansehen.\\ Zuweisung eines Signals: target\_signal $<=$ value\_expression;\\ Signale können nicht in Prozessen / Unterprogrammen deklariert werden.\\ Signale stehen üblicherweise für Verbindungen oder Register in der Hardware.\\ Wertzuweisung bei Signalen erfolgt nicht sofort, wenn die Signalzuweisung ausgeführt wird.\\ - Die Signalzuweisung aktualisiert den Signaltreiber.\\ - Der Signaltreiber gibt die Information an die Signale erst an das Signal weiter, wenn der Prozess \\ \hspace*{3mm}angehalten hat. \subsection*{Automaten} Taktsteuerung: \includegraphics[width=0.7\linewidth]{steuerung}\\ \includegraphics[width=1\linewidth]{pegelflanke} Definition der Zustandsmenge eines Automaten durch einen benutzerdefinierten Typ empfehlenswert, denn die Kodierung hat einen erheblichen Einfluss auf die Geschwindigkeit, die Störungsstabilität und die Fläche der synthetisierten Schaltung\\ type my\_type is (S0, S1, S2);\\ \\ \textbf{Verzögerung und Zeit}:\\ 1. träge Verzögerung (inertial delay), output $<$= NOT input AFTER 10 ns;\\ \hspace*{5mm}erlaubt dem Benutzer, die Verzögerungszeit eines Gatters oder einer Operation anzugeben, und \\ \hspace*{5mm}absorbiert Eingangssignale, die kürzer sind als die spezifzierte Verzögerungszeit\\ 2. nichtträge Verzögerung (transport delay), output $<$= TRANSPORT NOT input AFTER 10 ns;\\ \hspace*{5mm}gibt alle Eingangsimpulse weiter \end{document}