====== Logische Funktionen finden ====== Häufig ist die Funktion als Wertetabelle gegeben, zum Beispiel((x sind die Eingänge, y die Ausgänge)) {{ .:wt.png |}} Ausführlich übersetzt lautet die so definierte logische Funktion von links nach rechts gelesen also: * Wenn x1 = 0 und x2 = 0, dann ist y = 1. * Wenn x1 = 0 und x2 = 1, dann ist y = 1. * Wenn x1 = 1 und x2 = 0, dann ist y = 0. * Wenn x1 = 1 und x2 = 1, dann ist y = 1. Wie realisiert man diese Funktion mit den elementaren AND, OR und NOT-Gattern? Man kann die Wertetabelle auch von recht nach links lesen: * **y=1** wenn x1=0 und x2=0 * **y=1** wenn x1=0 und x2=1 * y=0 wenn x1=0 und x2=0 * **y=1** wenn x1=1 und x2=1 Wenn man jetzt die Fälle zusammenfasst, in denen y=1 ist, erhält man: **y=1** wenn... * ... x1=0 und x2=0 ODER * ... x1=0 und x2=1 ODER * ... x1=1 und x2=1 {{ .:example.drawio.png |}} Nun muss man also nur noch für die drei Teilbedingungen die entsprechenden Schaltungen finden und diese mit OR verknüpfen. **y=1** wenn... * ... (¬X1) ∧ (¬X2) * ... (¬X1) ∧ X2 * ... X1 ∧ X2 Das kann man ziemlich direkt als Schaltung eintragen: {{ auswahl_302.png |}} ==== Schnellanleitung ==== * Suche alle Zeilen, in denen der Ausgabewert 1 ist * Bilde für jede dieser Zeilen AND-Terme aus allen Eingabewerten (x-Werten). * An Stellen, an denen xi=1 ist, bleibt die Variable xi im Term unverändert * An Stellen, an denen xi=0 ist, muss die Variable xi mit NOT negiert werden * Verknüpfe die AND-Terme aller Zeilen mit OR (Hinweis: Das entspricht dem Finden der [[faecher:informatik:oberstufe:techinf:formale_logik:normalformen:start#disjunktive_normalform|disjunktiven Normalform]]) ===== Übungen ===== {{:aufgabe.png?nolink |}} === (A1) === Finde den Ausdruck für die Logikfunktion und entwerfe die Schaltung im Simulator. Kontrolliere dein Ergebnis anhand der Wertetabelle. ^ x0 ^ x1 ^ y ^ | 1 | 1 | 0 | | 1 | 0 | 0 | | 0 | 0 | 1 | | 0 | 1 | 1 | ---- {{:aufgabe.png?nolink |}} === (A2) === Vervollständige die untenstehende Tabelle gemäß der Beschreibung. Realisiere jede Funktion yi anschließende als Schaltung im Simulator * y0 ist genau dann 1, wenn alle Eingänge 1 sind * y1 ist genau dann 1, wenn mindestens ein Eingang 1 ist * y2 ist genau dann 1, wenn alle Eingänge 0 sind * y3 ist genau dann 1, wenn mindestens ein Eingang 0 ist * y4 ist genau dann 1, wenn x0=1 und x1=x2=0 ist * y5 ist genau dann 1, wenn x0=1 und mindestens einer der beiden Eingänge x1 und x2 1 ist. * y6 ist genau dann 1, wenn x0=1 und genau einer der beiden Eingänge x1 und x2 1 ist. * y7 ist genau dann 1, wenn die Anzahl der mit 1 belegten Eingänge ungerade ist * y8 ist genau dann 1, wenn mindestens zwei Eingänge 1 sind * y9 ist genau dann 1, wenn x0=x1=x2=0 oder x0=x1=x2=1 Finde für y10 und y11 verbale Beschreibungen: * y10 ist ... * y11 ist ... {{ .:tabelle.png?600 |}} ++++ Lösungen Tabelle | {{ :faecher:informatik:oberstufe:techinf:logikschaltungen:digitaltechnik:logikfunktionenfinden:lsg_a2.png?400 |}} ++++ ++++ Vorlage für die Schaltungen | {{ :faecher:informatik:oberstufe:techinf:logikschaltungen:digitaltechnik:logikfunktionenfinden:2024-09-29_18-24.png?200 |}} Man erstellt die drei Eingänge und jeweils die Negierung. Jetzt hat man X1-X1 und "nicht" X1 bis "nicht" X3 direkt zur Verfügung und kann die Ausdrücke als Schaltung bauen. {{ :faecher:informatik:oberstufe:techinf:logikschaltungen:digitaltechnik:logikfunktionenfinden:aufgabe2_template.dig.zip |}} ++++ ---- {{:aufgabe.png?nolink |}} === (A3) === Gegeben sind die Wertetabellen der logischen Funktion f und g: {{ :faecher:informatik:oberstufe:techinf:logikschaltungen:digitaltechnik:logikfunktionenfinden:lf3.png?400 |}} Finde die Ausdrücke für die Logikfunktionen und entwerfe Schaltungen im Simulator. Kontrolliere dein Ergebnis anhand der Wertetabelle. ++++ Lösung f | f = (¬x1) ∧ (¬x2) ∧ x3 ∨ (¬x1) ∧ x2 ∧ (¬x3) ∨ (¬x1) ∧ x2 ∧ x3 ∨ x1 ∧ (¬x2) ∧ x3 {{ auswahl_303.png?600 |}} ++++ ++++ Lösung g | g = (¬x1) ∧ x2 ∧ x3 ∨ x1 ∧ (¬x2) ∧ (¬x3) ∨ x1 ∧ x2 ∧ (¬x3) {{ auswahl_305.png?600 |}} ++++