diff --git a/Schaltlogik/README.md b/Schaltlogik/README.md index e50f9ffbafc5d9eb606f2015fbefd58d06002fb3..e0745ee2367223dd714722e0c796e293d0171537 100644 --- a/Schaltlogik/README.md +++ b/Schaltlogik/README.md @@ -4,20 +4,50 @@ ## Physikalisches Praktikum P1 für Studierende der Physik -Versuch P1-63, 64, 65 (Stand: Oktober 2023) +Versuch P1-51, 52, 53 (Stand: **Oktober 2024**) -[Raum F1-08](https://labs.physik.kit.edu/img/Praktikum/Lageplan_P1.png) +[Raum F1-08](https://labs.physik.kit.edu/img/Klassische-Praktika/Lageplan_P1P2.png) # Schaltlogik -Das P1 befindet sich derzeit in der Umstellung zu verbesserten Anleitungen, die alle notwendigen Informationen zur Vorbereitung auf den Versuch beinhalten. +## Motivation -**Dieser Versuch wird vorläufig noch nach der alten Anleitung durchgeführt.** +In jedem physikalischen Labor werden heutzutage Daten digitalisiert und digital weiterverarbeitet. Die digitale Schaltlogik bildet daher eine wichtige Grundlage zur Erfassung und weiteren Verarbeitung von Daten. Im Praktikum erleben Sie digitale Datenaufzeichnung beim Digitaloszilloskop und ohne Ausnahme überall dort, wo Sie Daten direkt aus einem Messgerät beziehen. Mit diesem Versuch führen wir Sie in die der Physik benachbarte Disziplin der Digitaltechnik ein. Sie können dabei einen Blick über den Tellerrand der reinen Physik werfen und Ihren Horizont als Physiker:in um einen wichtigen Aspekt wissenschaftlichen Arbeitens erweitern. Von Aufgabe zu Aufgabe entwickeln Sie ein grundlegendes Verständnis für das Gebiet der digitalen Schaltlogik, von den physikalischen Grundlagen zur Realisierung digitaler Schaltungen, die Sie mit bekannten elektrischen Bauelementen und Kabeln am Schaltbrett untersuchen, bis hin zur Schaltung eines digitalen Speicherelements und eines daraus erzeugten einfachen Zählers, den Sie selbst realisieren. Zwischen den **Aufgaben 1 und 2** erleben Sie den Übergang vom einfachen Schaltbrett zum hochmodernen programmierbaren Chip (FPGA), auf dem alle weiteren Schaltungen nur noch konfiguriert werden. Für den FPGA wird die Schaltung, die Sie sich erarbeiten in Software realisiert und anschließend auf den konfigurierbaren Chip hochgeladen. FPGAs werden überall dort verwendet, wo die schnelle Prozessierung von Daten, zum Beispiel für die Entscheidungsfindung ob ein bestimmtes Messereignis weiter ausgewertet oder verworfen werden soll, von höchster Wichtigkeit ist. Was Sie lernen schließt nahtlos an die Versuche [Elektrische Messverfahren](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Elektrische_Messverfahren), [Netzwerke und Leitungen](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Netzwerke_und_Leitungen) und [Transistor und Operationsverstärker](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Transistor_und_Operationsverstaerker) an. -- Abbildungen zum Versuch finden Sie im Verzeichnis [`figures`](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Schaltlogik/figures). -- Informationen zur Vorbereitung auf den Versuch nach der alten Anleitung finden Sie im Verzeichnis [`doc`](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Schaltlogik/doc). +## Lehrziele -Im Verzeichnis [`doc`](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Schaltlogik/doc) finden Sie auch die originale Version der alten Anleitung, die z.T. noch etwas mehr Information enthält, als die Jupyter-notebook Version. In einigen Fällen weichen Nummerierungen und Reihenfolge der Versuchsteile in den alten Anleitungen von der jeweiligen Version in Jupyter-notebook ab. In diesen Fällen ist die jeweilige Version der **Durchführung in Jupyter-notebook** für Sie maßgeblich! +Wir listen im Folgenden die wichtigsten **Lehrziele** auf, die wir Ihnen mit dem Versuch **Schaltlogik** vermitteln möchten: +- Sie nutzen **bekannte elektrische Bauelemente, um logische Gatter** mit Hilfe von elektrischen Schaltkreisen zu realisieren. +- Sie lernen, wie man **komplizierte logische Schaltungen** aus einfacheren Schaltungen aufbaut. +- Sie lernen den Übergang vom Schaltbrett, in dem die Bauelemente mit Kabeln verbindet zur **integrierten Technik eines FPGA** Chips kennen, den Sie am Computer konfigurieren. +- Am Ende des Versuchs realisieren Sie eine einfache digitalen Schaltung, die die Zahlen von 1 bis 15 binär zählt. + +## Versuchsaufbau + +Ein typischer Aufbau für den Versuch **Schaltlogik** ist in **Abbildung 1** gezeigt: + +--- + +<img src="./figures/SchaltlogikAufbau.png" width="1000" style="zoom:100%;" /> + +**Abbildung 1**: (Ein typischer Aufbau für den Versuch **Schaltlogik**) + +--- + +Am Arbeitsplatz finden Sie eine Schaltbrett der Marke Fisher zum Aufbau logischer Gatter mit elektrischen Bauelementen und Kalbeln, sowie eine Platine mit FPGA und einen Rechner zur Konfiguration des FPGA. Zudem stehen Ihenen mehrere Kabel in den Farben schwarz, blau und rot, Feinwerkzeug und ein Multimeter zu Verfügung. + +## Wichtige Hinweise + +- Für diesen Versuch entfällt die Auswertung von Daten mit Methoden der statistischen Datenanalyse. Eine Aufgabe gilt als erfüllt, sobald Sie die entsprechende Schaltung, je nach Aufgabenstellung, am Steckbrett oder auf dem FPGA realisiert und die entsprechende Wahrheitstabelle überprüft haben. +- Dokumentieren Sie diesen Umstand entsprechend in Ihrem Protokoll, so dass Sie den Versuch mit Hilfe Ihres Protokolls zu jedem Zeitpunkt wieder durchfphren könnten. + +# Navigation + +- [Schaltlogik.iypnb](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/Schaltlogik.ipynb): Aufgabenstellung und Vorlage für Ihr Protokoll. +- [Schaltlogik_Hinweise.ipynb](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/Schaltlogik_Hinweise.ipynb): Hinweise zu den Aufgaben. +- [Datenblatt.md](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/Datenblatt.md): Technische Details zu den Versuchsaufbauten. +- [doc](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Schaltlogik/doc): Dokumente zur Vorbereitung auf den Versuch. +- [figures](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/tree/main/Schaltlogik/figures): Bilder, die für die Dokumentation des Versuche verwendet wurden. diff --git a/Schaltlogik/Schaltlogik.ipynb b/Schaltlogik/Schaltlogik.ipynb index e8075123d68a6cbb1d16e3b6be027cd9c6b9582c..bc137aa3cb5e397124e2c6f96893650558432491 100644 --- a/Schaltlogik/Schaltlogik.ipynb +++ b/Schaltlogik/Schaltlogik.ipynb @@ -100,13 +100,19 @@ { "cell_type": "markdown", "id": "88038e94-cbb5-4df8-860e-44a71d9bdfe5", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "# Durchführung" ] }, + { + "cell_type": "markdown", + "id": "6294dfd5-e201-4b88-8e98-6e55152ab81d", + "metadata": {}, + "source": [ + "**Detaillierte Hinweise zur Durchführung der Versuche finden Sie in der Datei [Schaltlogik_Hinweise.ipynb](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/Schaltlogik_Hinweise.ipynb)**" + ] + }, { "cell_type": "markdown", "id": "387c78c9-606e-4201-b2be-5ed4fe1d249f", @@ -183,7 +189,7 @@ "### Aufgabe 1.3: NOT- und NAND-Gatter\n", "\n", " * Implementieren Sie zusätzlich zum AND-Gatter ein **Transistor-NOT-Gatter**.\n", - " * Bilden Sie durch Hintereinanderschalten ein NAND-Gatter.\n", + " * Erzeugen Sie durch Hintereinanderschalten beider Gatter ein NAND-Gatter.\n", " * Vergewissern Sie sich von dessen Funktion.\n", "\n", "---" @@ -220,9 +226,9 @@ "jp-MarkdownHeadingCollapsed": true }, "source": [ - "### Aufgabe 2.1: NOT-Gatter (Inverter)\n", + "### Aufgabe 2.1: NOT-Gatter aus einem NAND- oder NOR-Gatter\n", "\n", - " * Implementieren Sie ein NOT-Gatter (Inverter) aus einem **NAND- oder einem NOR-Gatter**.\n", + " * Implementieren Sie ein NOT-Gatter aus einem **NAND- oder NOR-Gatter**.\n", " * Vergewissern Sie sich von dessen Funktion.\n", "\n", "---" @@ -306,13 +312,11 @@ { "cell_type": "markdown", "id": "0f8d8b8a-d78a-4cba-ac34-7e9aed025534", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "## Aufgabe 3: Speicherelemente\n", "\n", - "Mit dieser Aufgabe stellen wir Ihnen eine Reihe von Flip-Flop-(FF)Schaltungen vor. FFs sind bistabile Kippstufen, die als **digitale Speicher** dienen." + "Mit dieser Aufgabe stellen wir Ihnen eine Reihe von Flip-Flop-(FF)Schaltungen vor. FFs sind bistabile Kippstufen, die als **digitale Speicher** verwendet werden." ] }, { @@ -327,7 +331,7 @@ " * Verbinden Sie zwei NAND-Gatter zu einem FF.\n", " * Demonstrieren Sie seine **Funktionstabelle**.\n", "\n", - "**NB:** Eine Funktionstabelle beschreibt die Abhängigkeit der Ausgangszustände (hier an $Q$ und $\\overline{Q}$) von den Eingangszuständen (hier an $R$ (Reset) und $S$ (Set)).\n", + "**NB:** Eine Funktionstabelle beschreibt die Abhängigkeit der Ausgangszustände (hier an $\\mathrm{Q}$ und $\\mathrm{\\overline{Q}}$) von den Eingangszuständen (hier an $\\mathrm{R}$ (Reset) und $\\mathrm{S}$ (Set)).\n", "\n", "---" ] @@ -351,11 +355,10 @@ "jp-MarkdownHeadingCollapsed": true }, "source": [ - "### Aufgabe 3.2: Getaktetes RS-Flip-Flop (RST-FF)\n", + "### Aufgabe 3.2: Taktpegelgesteuertes RS-Flip-Flop (RST-FF)\n", "\n", " * Schalten Sie getaktetes RS-FF (RSR-FF).\n", " * Demonstrieren Sie seine **Funktionstabelle**.\n", - " * Beschreiben Sie eine Möglichkeit, den *verbotenen Zustand* zu eliminieren.\n", "\n", "---" ] @@ -379,13 +382,13 @@ "jp-MarkdownHeadingCollapsed": true }, "source": [ - "### Aufgabe 3.3: JK-Master-Slave-Flip-Flop (JK-MS-FF)\n", + "### Aufgabe 3.3: Zweiflankengesteuertes JK-Flip-Flop (JK-MS-FF)\n", "\n", "**Bei der Schaltung zu dieser Aufgabe unterstützt Sie Ihr:e Tutor:in. Sie sollten die Schaltung jedoch verstehen und in der Lage sein diese zu erklären und zu diskutieren.**\n", "\n", "* **Erklären Sie** die Schaltung eines JK-MS-FF.\n", "* Demonstieren Sie seine **Funktionstabelle**, in der sowohl die Master-, als auch die Slave-Ausgänge enthalten sein sollen, und die zwischen dem 0/1-Wechsel und dem 1/0-Wechsel des Taktsignals unterscheidet.\n", - "* Beschreiben Sie die Unterschiede und Vorteile dieses FF-Typen gegenüber den zuvor untersuchten FF-Typen.\n", + "* Beschreiben Sie die Unterschiede dieses FF-Typen gegenüber den zuvor untersuchten FF-Typen.\n", "\n", "---" ] @@ -422,7 +425,7 @@ "### Aufgabe 4.1: 4-Bit-Asynchronzähler\n", "\n", " * Schalten Sie **vier JK-MS-FFs hintereinander**.\n", - " * Löschen Sie den Inhalt und **beobachten Sie nach jedem Taktzyklus** am Zählereingang $T$ die an $Q_{A}$, $Q_{B}$, $Q_{C}$, $Q_{D}$ angezeigte Dualzahl.\n", + " * Löschen Sie den Inhalt und **beobachten Sie nach jedem Taktzyklus** am $\\mathrm{\\overline{C}}$ die an den Ausgängen $(\\mathrm{Q_{3},\\,Q_{2},\\,Q_{1},\\,Q_{0}})$ angezeigte Binärzahl.\n", "\n", "---" ] @@ -448,8 +451,8 @@ "source": [ "### Aufgabe 4.2: 4-Bit-Synchronzähler \n", "\n", - " * **Entwerfen Sie** eine Schaltung für einen 4-Bit-Synchronzähler.\n", - " * Implementierne Sie die Schaltung und **überprüfen Sie ihre Funktion**.\n", + " * **Realisieren Sie** eine Schaltung für einen 4-Bit-Synchronzähler.\n", + " * **Überprüfen Sie die Funktion der Schaltung**.\n", "\n", "---" ] @@ -469,9 +472,7 @@ { "cell_type": "markdown", "id": "f745017e-62b8-47de-ab9d-2310d99dbf29", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "# Beurteilung" ] diff --git a/Schaltlogik/Schaltlogik_Hinweise.ipynb b/Schaltlogik/Schaltlogik_Hinweise.ipynb index f80530efb6f4c3733b66f1d411ba275c3548053e..bfad84e396ed2f963d044be926106707401dff47 100644 --- a/Schaltlogik/Schaltlogik_Hinweise.ipynb +++ b/Schaltlogik/Schaltlogik_Hinweise.ipynb @@ -39,7 +39,7 @@ " * Beschreiben Sie das Steckbrett und Ihre Vorgehensweise beim Aufbau der Schaltung.\n", " * Fügen Sie Ihrem Protokoll eine **Skizze der Schlatung** zu.\n", " * Fügen Sie Ihrem Protokoll eine **Photographie der Schaltung** zu aus der sich die Schaltung erkennen lässt.\n", - " * Fügen Sie Ihrem Protokoll eine **Funktionstafel** zu. \n", + " * Fügen Sie Ihrem Protokoll eine **Funktionstafel** zu, wie sie sich für Ihre Schaltung ergibt. \n", "\n", "---\n", "\n", @@ -61,11 +61,11 @@ "id": "451d24a5-c46c-4a75-b923-1361045d7817", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor. Eine Beschreibung des Schaltbretts ist hier nicht mehr nötig. \n", "\n", "---\n", "\n", - "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in den Dateien [Hinweise-Schaltbrett](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Schaltbrett.md) und [Hinweise-Gatter](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Gatter.md).\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Gatter](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Gatter.md).\n", "\n", "---" ] @@ -83,11 +83,11 @@ "id": "dfd8c35c-640b-458b-a99e-1f590d1f20d4", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor. Eine Beschreibung des Schaltbretts ist hier nicht mehr nötig. \n", "\n", "---\n", "\n", - "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in den Dateien [Hinweise-Schaltbrett](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Schaltbrett.md) und [Hinweise-Gatter](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Gatter.md).\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Gatter](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Gatter.md).\n", "\n", "---" ] @@ -105,7 +105,7 @@ "id": "f080f0ee-abec-42a8-8fa1-477cc0288077", "metadata": {}, "source": [ - "### Aufgabe 2.1: NOT-Gatter (Inverter)" + "### Aufgabe 2.1: NOT-Gatter aus einem NAND- oder NOR-Gatter" ] }, { @@ -113,11 +113,14 @@ "id": "f7235a94-0201-4eed-9a32-88923b150708", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor. \n", + "\n", + " * Sie können sich **eine Variante** zur Reduktion eines NAND- oder NOR-Gatters aussuchen.\n", + " * Fügen Sie Ihrer Auswertung eine grundlegende Beschreibung Ihres Vorgehens beim Laden des FPGAs zu.\n", "\n", "---\n", "\n", - "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in den Dateien [Hinweise-MAXwel](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-MAXwel.md) und [Hinweise-Gatter](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Gatter.md).\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in den Dateien [Hinweise-MAXwel](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-MAXwel.md) und [Hinweise-Logik](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Logik.md).\n", "\n", "---" ] @@ -125,9 +128,7 @@ { "cell_type": "markdown", "id": "d3dda936-f113-45ca-87bf-3bfe51644ad7", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "### Aufgabe 2.2: XOR " ] @@ -137,7 +138,11 @@ "id": "cd5d3ea1-4777-4e68-98ac-7ccefa0d5b6c", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Logik](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Logik.md).\n", "\n", "---" ] @@ -145,9 +150,7 @@ { "cell_type": "markdown", "id": "b4758697-b501-45da-a365-05d90a0e0c26", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "### Aufgabe 2.3: XOR aus NAND-Gattern" ] @@ -157,19 +160,21 @@ "id": "eaa207b4-3552-4dc2-8658-4b7c0311fb46", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", "\n", " * Fügen Sie dem Protokoll die Umformung der disjunktiven Normalform in die angegebene Gleichung zu.\n", "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Logik](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Logik.md).\n", + "\n", "---" ] }, { "cell_type": "markdown", "id": "5bd53db4-ad5b-41a7-b165-249bd71d9025", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "## Aufgabe 3: Speicherelemente" ] @@ -177,9 +182,7 @@ { "cell_type": "markdown", "id": "49b4e841-494b-4379-88dc-e3f164c66c59", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "### Aufgabe 3.1: RS-Flip-Flop (RS-FF) " ] @@ -189,7 +192,11 @@ "id": "056a9233-a99c-4b0a-be3b-38dbca029999", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 2.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Speicher](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Speicher.md).\n", "\n", "---" ] @@ -197,11 +204,9 @@ { "cell_type": "markdown", "id": "6f4aa669-45c2-4ee5-84ca-adcaa1b9dd56", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ - "### Aufgabe 3.2: Getaktetes RS-Flip-Flop (RST-FF)" + "### Aufgabe 3.2: Taktpegelgesteuertes RS-Flip-Flop (RST-FF)" ] }, { @@ -209,7 +214,11 @@ "id": "7728601d-c084-472d-8093-d6b176daf019", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 2.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Speicher](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Speicher.md).\n", "\n", "---" ] @@ -217,11 +226,9 @@ { "cell_type": "markdown", "id": "cdd6bc28-52b6-468f-9320-87c3ecc49c85", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ - "### Aufgabe 3.3: JK-Master-Slave-Flip-Flop (JK-MS-FF)" + "### Aufgabe 3.3: Zweiflankengesteuertes JK-Flip-Flop (JK-MS-FF)" ] }, { @@ -229,7 +236,11 @@ "id": "9a9c8393-0694-4710-a033-026521acd3c1", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 2.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Speicher](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Hinweise-Speicher.md).\n", "\n", "---" ] @@ -237,9 +248,7 @@ { "cell_type": "markdown", "id": "23c738a7-1fbd-44a9-8c56-7bd72b1dbda3", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ "## Aufgabe 4: Zähler " ] @@ -257,7 +266,11 @@ "id": "1765132c-6bda-42a7-b955-7e280110ebd2", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 2.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Zaehler](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Zaehler-Speicher.md).\n", "\n", "---" ] @@ -275,7 +288,11 @@ "id": "23f0c693-a70a-4992-8ace-4c325e9d06ba", "metadata": {}, "source": [ - "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 1.1** vor.\n", + "Gehen Sie zur Bearbeitung dieser Aufgabe wie für **Aufgabe 2.1** vor. Eine Beschreibung Ihres Vorgehens beim Laden des FPGA ist hier nicht mehr nötig.\n", + "\n", + "---\n", + "\n", + "Weitere Details zur Vorbereitung auf diese Aufgabe finden Sie in der Datei [Hinweise-Zaehler](https://gitlab.kit.edu/kit/etp-lehre/p1-praktikum/students/-/blob/main/Schaltlogik/doc/Zaehler-Speicher.md).\n", "\n", "---" ] diff --git a/Schaltlogik/doc/Hinweise-Speicher.md b/Schaltlogik/doc/Hinweise-Speicher.md index b79870ec703aac7f4df454ce35214ca6268aa123..1e53d4b8fc79ed4458b39407a19ec3ee89df4718 100644 --- a/Schaltlogik/doc/Hinweise-Speicher.md +++ b/Schaltlogik/doc/Hinweise-Speicher.md @@ -8,7 +8,7 @@ Bei der [bistabilen Kippstufe](https://de.wikipedia.org/wiki/Flipflop) (Fliflop <img src="../figures/Symbole-Flipflops.png" width="1000" style="zoom:100%;" /> -**Abbildung 1**: (Schaltsymbole des (a) RS-FF, (b) RST-FF, (c) D-FF und (d) JK-FF) +**Abbildung 1**: (Schaltsymbole des (a) RS-FF, (b) RST-FF, (c) D-FF, (d) einflankengesteuerten JK-FF und (e) zweiflankengesteuerten JK-MS-FF) --- @@ -202,7 +202,7 @@ $$ \end{equation*} $$ -Durch die Rückkopplung des Ausgangszustands auf den Eingangszustand sind nun die Reaktion der Schaltung bei gegebenem Eingangssignal sowohl für $(\mathrm{Q=1,\,\overline{Q}=0})$, also auch für $(\mathrm{Q=0,\,\overline{Q}=1})$ zu überprüfen. Wir tun dies exemplarisch für zwei Fälle: +Durch die Rückkopplung des Ausgangszustands auf den Eingangszustand ist nun die Reaktion der Schaltung bei gegebenem Eingangssignal sowohl für $(\mathrm{Q=1,\,\overline{Q}=0})$, also auch für $(\mathrm{Q=0,\,\overline{Q}=1})$ zu überprüfen. Wir tun dies exemplarisch für zwei Fälle: $\mathbf{J=1,\,K=0}$ $$ @@ -261,39 +261,41 @@ Das dynamische Verhalten eines Flipflops visualisiert man durch **Ablauf- oder I <img src="../figures/Ablaufdiagramm.png" width="1000" style="zoom:100%;" /> -**Abbildung 5**: (Ablaufdiagramm des (a) taktpegelgesteuerten RS-FF, (b) einflankengesteuerten JK-FF und (c) zweiflankengesteuerten JK-FF, bei gleicher Taktung durch C) +**Abbildung 5**: (Ablaufdiagramm des (a) taktpegelgesteuerten RS-FF, (b) einflankengesteuerten JK-FF und (c) zweiflankengesteuerten JK-MS-FF, bei gleicher Taktung durch C) --- -In der ersten Zeile jedes Diagramms ist der Taktpegel C dargestellt, in der zweiten Zeile das Signal am Setzeingang (S oder J) und in der dritten Zeile das Signal am Rücksetzeingang (R oder K). Das Signal Q am Ausgang ist in der vierten Zeile gezeigt. Bei positiven Flanken wechselt C von 0 auf 1, bei negativen Flanken von 1 auf 0. +In der ersten Zeile jedes Diagramms ist der Taktpegel C dargestellt, in der zweiten Zeile das Signal am Setzeingang (S bzw. J) und in der dritten Zeile das Signal am Rücksetzeingang (R bzw. K). Das Signal Q am Ausgang ist in der vierten Zeile gezeigt. Bei positiven Flanken wechselt C von 0 auf 1, bei negativen Flanken von 1 auf 0. ### Taktpegelgesteuerte FFs -Bei positiv taktpegelgesteuerten FFs können die Ausgänge über die Eingänge manipuliert werden, solange $\mathrm{C=1}$ anliegt. Dies ist **im gesamten Zeitintervall $\Delta t$** der Fall. Wird innerhalb von $\Delta t$ mehrfach hin- und hergeschaltet, übertragen sich die damit verbundenen Zustandsänderungen sofort auf Q. Dies ist z.B. in vierten Taktzyklus in **Abbildung 5a** der Fall. Bei negative taktpegelgesteuerten FFs wird C negiert. +Bei positiv taktpegelgesteuerten FFs können die Ausgänge über die Eingänge manipuliert werden, solange $\mathrm{C=1}$ anliegt. Dies ist **im gesamten Zeitintervall $\Delta t$** der Fall. Wird innerhalb von $\Delta t$ mehrfach hin- und hergeschaltet, übertragen sich die damit verbundenen Zustandsänderungen sofort auf Q. Dies ist z.B. im vierten Taktzyklus in **Abbildung 5a** der Fall. Bei negativ taktpegelgesteuerten FFs wird C negiert. ### Taktflankengesteuerte FFs -Bei dieser Art von FFs erfolgt die Änderung des Ausgangszustands beim **Übergang von C** von einem zum anderen Zustand. Beim positiv taktflankengesteuerten FF wird der Ausgangszustand durch den Eingangszustand zum Zeitpunkt $t_{j}$ des Übergangs von $\mathrm{C=0}$ nach 1 bestimmt. Die Bestimmung des Ausgangs erfolgt zum Zeitpunkt $t_{j}$ und nicht wie beim taktpegelgesteuerten FF über den ganzen Zeitraum $\Delta t$. Weitere Änderungen des Eingangszustands innerhalb von $\Delta t$ haben keine Auswirkung auf Q. Für negativ taktflankengesteuerte FFs erfolgen die Änderungen von Q auf der negativen Flanke. Hierzu wird C negiert. Beim zweiflankengesteuerten FF ändert sich der Ausgangszustand auf jeder Flanke. +Bei dieser Art von FFs erfolgt die Änderung des Ausgangszustands beim **Übergang von C** von einem zum anderen Zustand. Beim positiv taktflankengesteuerten FF wird der Ausgangszustand durch den Eingangszustand zum Zeitpunkt $t_{j}$ des Übergangs von $\mathrm{C=0}$ nach 1 bestimmt. Die Bestimmung des Ausgangs erfolgt zum Zeitpunkt $t_{j}$ und nicht wie beim taktpegelgesteuerten FF über den ganzen Zeitraum $\Delta t$. Weitere Änderungen des Eingangszustands innerhalb von $\Delta t$ haben keine Auswirkung auf Q. Für negativ taktflankengesteuerte FFs erfolgen die Änderungen von Q auf der negativen Flanke. Hierzu wird C negiert. Beim zweiflankengesteuerten FF ändert der Gesamtzustand des FF auf jeder Flanke. -## Zweiflankengesteuertes JK-FF +## Zweiflankengesteuertes JK-MS-FF -Beim zweiflankengesteuerten JK-FF handelt es sich um zwei in Reihe geschaltete JK-FFs. Der Ausgang des vorderen dient als Eingang für das hintere JK-FF. Der Takt des vorderen ist relativ zum hinteren JK-FF invertiert. Die Schaltung ist in **Abbildung 6** gezeigt: +Beim zweiflankengesteuerten JK-MS-FF handelt es sich um zwei in Reihe geschaltete JK-FFs. Der Ausgang des vorderen dient als Eingang für das hintere FF. Der Takt des vorderen ist relativ zum hinteren FF invertiert. Die Schaltung ist in **Abbildung 6** gezeigt: --- <img src="../figures/JK-MS-FF.png" width="1000" style="zoom:100%;" /> -**Abbildung 6**: (Schaltung eines zweiflankengesteuerten JK-FFs) +**Abbildung 6**: (Schaltung des zweiflankengesteuerten JK-MS-FFs) --- -Die Invertierung von C bewirkt, dass das hintere JK-FF blockiert ist während das vordere JK-FF ausgelesen wird. In der in **Abbildung 6** dargestellten Schaltung werden J und K auf der positiven Flanke von C ausgelesen und als Eingang für das hintere JK-FF bereitgestellt. Auf der negativen Flanke werden die Daten an das hintere JK-FF durchgeschaltet, während das vordere JK-FF blockiert ist. Eine Darstellung der dynamischen Abläufe am zweiflankengesteuerten JK-FF sind in **Abbildung 5c** gezeigt. In Anlehnung an diese Abläufe wird das vordere JK-FF als "Master" und das hintere JK-FF als "Slave" bezeichnet, woraus sich auch die Bezeichnung **Jack-Kilby-Master-Slave-Flioflop (JK-MS-FF)** ableitet. +Die Invertierung von C bewirkt, dass das hintere FF blockiert ist während das vordere FF ausgelesen wird. In der in **Abbildung 6** dargestellten Schaltung werden J und K auf der negativen Flanke von C ausgelesen und als Eingang für das hintere FF bereitgestellt. Auf der positiven Flanke werden die Daten dann an das hintere FF durchgeschaltet, während das vordere FF blockiert ist. Ein FF mit umgekehrter Flankensteuerung erhält man, indem man C invertiert. + +Eine Darstellung der dynamischen Abläufe am JK-MS-FF sind in **Abbildung 5c** gezeigt. In Anlehnung an diese Abläufe wird das vordere FF als "Master" und das hintere FF als "Slave" bezeichnet, woraus sich auch die Bezeichnung **Jack-Kilby-Master-Slave-Flipflop (JK-MS-FF)** ableitet. Das Schaltsymbol des JK-MS-FF ist in **Abbildung 1e** gezeigt. ### Check - Sie sollten die **Realisierung des RS-FF** mit Hilfe von NOR- oder NAND-Gattern verstanden haben und erklären können. - Sie sollten die Erweiterung zu einem **getakteten Flipflop** vornehmen können. -- Die Problematik des **verbotenen Zustands** sollte Ihnen bewusst sein und Sie sollten die Erweiterungen des RS-FF kennen, die dieses Problem umgehen. +- Die Problematik des **verbotenen Zustands** sollte Ihnen bewusst sein und Sie sollten die oben diskutierten Erweiterungen des RS-FF kennen, die dieses Problem umgehen. - Sie sollten das zweiflankengetaktete JK-FF (JK-MS-FF) anhand der Schaltung in **Abbildung 6** erklären können ### Frage: diff --git a/Schaltlogik/figures/JK-MS-FF.odg b/Schaltlogik/figures/JK-MS-FF.odg index 773655bbbee6a68afc559bcfaa6c9672ef43dae0..e63122f2c76e42992081fd1c395da543120c85d0 100644 Binary files a/Schaltlogik/figures/JK-MS-FF.odg and b/Schaltlogik/figures/JK-MS-FF.odg differ diff --git a/Schaltlogik/figures/JK-MS-FF.png b/Schaltlogik/figures/JK-MS-FF.png index 783a2a1627fb0a2f74a7a7df75421238dca2b349..6336a96c7b0e1892316c223858d3583124946df1 100644 Binary files a/Schaltlogik/figures/JK-MS-FF.png and b/Schaltlogik/figures/JK-MS-FF.png differ diff --git a/Schaltlogik/figures/Symbole-Flipflops.odg b/Schaltlogik/figures/Symbole-Flipflops.odg index c9a3a2bd6d1b4f76601db1bb05dc13b0d59ebeb6..75ce9afdb0f931604fc7b415bbe69dafbb098753 100644 Binary files a/Schaltlogik/figures/Symbole-Flipflops.odg and b/Schaltlogik/figures/Symbole-Flipflops.odg differ diff --git a/Schaltlogik/figures/Symbole-Flipflops.png b/Schaltlogik/figures/Symbole-Flipflops.png index 363e5b97ed3ac13173c0eeb29880fa461bd191fc..f513af92cd91df0e47c7e216e2597aaf63385147 100644 Binary files a/Schaltlogik/figures/Symbole-Flipflops.png and b/Schaltlogik/figures/Symbole-Flipflops.png differ diff --git a/Schaltlogik/figures/Symbole-Gatter.odg b/Schaltlogik/figures/Symbole-Gatter.odg index 6fd62acf55f63726b92e2a32a272a87ca5d4d55e..41ee0cb02c7ee47968765f9b4fe677d75586f156 100644 Binary files a/Schaltlogik/figures/Symbole-Gatter.odg and b/Schaltlogik/figures/Symbole-Gatter.odg differ