Skip to content

Commit

Permalink
Revise CMcC method
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianZug authored Nov 6, 2023
1 parent 28c6886 commit 5ba8393
Showing 1 changed file with 49 additions and 42 deletions.
91 changes: 49 additions & 42 deletions 04_Schaltnetze.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ Wie muss also die Schaltung für diese Aufgabe umgesetzt werden?
| 0 | 1 | 0 | 1 | 0 | | $x_3 + \overline{x_2} + x_1 + \overline{x_0}$ |
| 0 | 1 | 1 | 0 | 1 | $\overline{x_3} \cdot x_2 \cdot x_1 \cdot \overline{x_0}$ | |
| 0 | 1 | 1 | 1 | 1 | $\overline{x_3} \cdot x_2 \cdot x_1 \cdot x_0$ | |
| 1 | 0 | 0 | 0 | 1 | $x_3 \cdot \overline{x_2} \cdot \overline{x_1} \cdot \overline{x_0}$ | |
| 1 | 0 | 0 | 0 | 1 | $x_3 \cdot \overline{x_2} \cdot \overline{x_1} \cdot \overline{x_0}$ | 0, 8: - 0 0 0 ○ ○ (x̄2x̄1x̄0) |
| 1 | 0 | 0 | 1 | 1 | $x_3 \cdot \overline{x_2} \cdot \overline{x_1} \cdot x_0$ | |
| 1 | 0 | 1 | 0 | 1 | $x_3 \cdot \overline{x_2} \cdot x_1 \cdot \overline{x_0}$ | |
| 1 | 0 | 1 | 1 | 1 | $x_3 \cdot \overline{x_2} \cdot x_1 \cdot x_0$ | |
Expand Down Expand Up @@ -216,13 +216,7 @@ y =& \overline{x_3} x_2 x_1 \overline{x_0} + \overline{x_3} x_2 x_1
& \textcolor{red}{ x_3 \overline{x_2} x_1 \overline{x_0}}+ x_3 \overline{x_2} x_1 x_0 +\\
& x_3 x_2 \overline{x_1 }\,\overline{x_0} + x_3 x_2 \overline{x_1} x_0 + \\
& \textcolor{red}{ x_3 \overline{x_2} x_1 \overline{x_0}} + x_3 x_2 x_1 \overline{x_0}
\end{aligned}
$$

Damit ergibt sich die oben genannten Gleichung in der ersten Vereinfachungsstufe zu

********************************************************************************

\end{aligned}0, 8: - 0 0 0 ○ ○ (x̄2x̄1x̄0)
{{2-3}}
$$
\begin{aligned}
Expand Down Expand Up @@ -378,7 +372,7 @@ Die Minterme werden in tabellarischer Form entsprechend der Zahl der "1"en sorti
| $m_x$ | $x_3$ | $x_2$ | $x_1$ | $x_0$ | OK |
| --------------- | ---------- | ---------- | ---------- | ---------- | --- |
| @blue($m_8$) | @blue($1$) | @blue($0$) | @blue($0$) | @blue($0$) |. |
| $m_6$ | $0$ | 1 | 1 | 0 |. |
| $m_6$ | $0$ | 1 | 1 |0, 8: - 0 0 0 ○ ○ (x̄2x̄1x̄0) 0 |. |
| $m_9$ | 1 | 0 | 0 | 1 |. |
| $m_{10}$ | 1 | 0 | 1 | 0 |. |
| $m_{12}$ | 1 | 1 | 0 | 0 |. |
Expand Down Expand Up @@ -517,8 +511,6 @@ Visualisierung der generierten Primimplikanten
Offenbar werden die Minterme bis auf zwei Ausnahmen mehrfach durch die Primimplikaten abgedeckt. Hier ist eine weitere Minimierung notwendig.
### Primimplikatentafel und minimale Überdeckung

Die als zweite Quine'sche Tabelle bezeichnete Primimplikatentafel fasst die Primimplikanten und die zugehörigen Minterme zusammen.
<!-- data-type="none" style="table-layout: fixed; max-width:600px;"-->
Expand All @@ -530,56 +522,53 @@ Die als zweite Quine'sche Tabelle bezeichnete Primimplikatentafel fasst die Prim
| $P_4$ | | | | | | | | x | x |
| $P_5$ | x | | | | | | | | x |
Zielstellung ist nun die Generierung einer minimalen Überlappung.
**Spaltendominanzprüfung**
### Lösung der minimalen Überdeckung
Die Spalten werden paarweise darauf verglichen, ob nicht eine Spalte existiert, in der die markierten Primterme eine Teilmenge der markierten Primterme der anderen Spalte sind. Ist dies der Fall, so kann die Spalte mit der Obermenge gestrichen werden, denn es müssen alle Konjunktionen erfasst werden und daher ist die Konjunktion mit der Obermenge durch Auswahl der Konjunktion mit der Teilmenge ebenfalls erfasst.
> Ziel: Die Minterme sollen nur noch in einer Zeile erscheinen.
{{0-1}}
*******************************************************************
Beginnen wir mit $m_{13}$. Hier kann $m_{12}$ gestrichen werden, weil $m_{13}$ den Minterm $m_{12}$ vollständig dominiert.
__1. Intuitiver Ansatz__
Die Minterme $m_{13}$, $m_{11}$ und $m_{7}$ kommen nun in jeweils einem Primimplikanten vor. Folglich sind diese sogenannte essentielle Primimplikanten ($P_1, P_2, P_4$).
<!-- data-type="none" style="table-layout: fixed; max-width:600px;"-->
| | $m_{14}$ | $m_{13}$ | $m_{12}$ | $m_{11}$ | $m_{10}$ | $m_{9}$ | $m_{8}$ | $m_{7}$ | $m_{6}$ |
| ----- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | ------- | ------- |
| $P_1$ | | | | x | x | @blue(x) | @blue(x) | | |
| $P_2$ | | @gray(x) | @blue(x) | | | @blue(x) | @blue(x) | | |
| $P_3$ | x | | @blue(x) | | x | | @blue(x) | | |
| $P_4$ | | | | | | | | x | x |
| @blue($P_1$) | | | | @gray(x) | x | x | x | | |
| @blue($P_2$) | | @gray(x) | x | | | x | x | | |
| $P_3$ | x | | x | | x | | x | | |
| @blue($P_4$) | | | | | | | | @gray(x)| x |
| $P_5$ | x | | | | | | | | x |
<!-- data-type="none" style="table-layout: fixed; max-width:600px;"-->
| | $m_{14}$ | $m_{13}$ | $m_{11}$ | $m_{10}$ | $m_{9}$ | $m_{8}$ | $m_{7}$ | $m_{6}$ |
| ----- | -------- | -------- | -------- | -------- | -------- | -------- | ------- | ------- |
| $P_1$ | | | @gray(x) | x | @blue(x) | @blue(x) | | |
| $P_2$ | | @blue(x) | | | @blue(x) | @blue(x) | | |
| $P_3$ | x | | | x | | @blue(x) | | |
| $P_4$ | | | | | | | x | x |
| $P_5$ | x | | | | | | | x |
<!-- data-type="none" -->
| | $\overline{x}_1\,\overline{x}_0$ | $\overline{x}_1x_0$ | $x_1x_0$ | $x_1\overline{x}_0$ |
| -------------------------------- | -------------------------------- | ------------------- | ---------------- | ------------------- |
| $\overline{x}_3\,\overline{x}_2$ | 0 | 0 | 0 | 0 |
| $\overline{x}_3 x_2$ | 0 | 0 | $m_7$ ($P_4$) | $m_6$ ($P_4$, $P_5$) |
| $x_3 x_2$ | $m_{12}$ ($P_2$, $P_3$) | $m_{13}$ ($P_2$) | 0 | $m_{14}$ ($P_3$, $P_5$) |
| $x_3 \overline{x}_2$ | $m_{8}$ ($P_1$, $P_2$, $P_3$) | $m_{9}$ ($P_1$, $P_2$)| $m_{11}$ ($P_1$) | $m_{10}$ ($P_1$, $P_3$) |
<!-- data-type="none" style="table-layout: fixed; max-width:330px;"-->
| | $m_{14}$ | $m_{13}$ | $m_{11}$ | $m_{7}$ |
| ----- | -------- | -------- | -------- | ------- |
| $P_1$ | | | x | |
| $P_2$ | | x | | |
| $P_3$ | x | | | |
| $P_4$ | | | | x |
| $P_5$ | x | | | |
**Zeilendominanzprüfung**
> Statement 1: $m_2$ ist in $P_2$ enthalten. Wenn $P_2$ essentiell ist, dann ist die Weiterführung der Spalte für $m_{13}$ nicht notwendig. Es ist automatisch abgedeckt.
Jetzt vergleicht man die Zeilen (Primterme) der Tabelle paarweise, ob nicht eine Zeile existiert, in denen die markierten Minterme eine Teilmenge der markierten Minterme der anderen Zeile sind. Ist dies der Fall, so kann der Primterm mit der Teilmenge gestrichen werden, denn man kann für jede Markierung des gestrichenen Primterms den anderen Primterm als Ersatz nehmen. Die Relation ist hier also genau umgekehrt wie bei der Spaltendominanz.
> Statement 2: $m_{11}$ ist nur in $P_1$ enthalten und schließt damit $m_{10}$, $m_{9}$ und $m_{8}$ ein. Die zwei letztgenannten werden aber auch schon durch $P_2$ abgedeckt.
<!-- data-type="none" style="table-layout: fixed; max-width:320px;"-->
> Statement 3: $P_4$ deckt automatisch $m_6$ ab.
<!-- data-type="none" style="table-layout: fixed; max-width:330px;"-->
| | $m_{14}$ | $m_{13}$ | $m_{11}$ | $m_{7}$ |
| ----- | -------- | -------- | -------- | ------- |
| $P_1$ | | | x | |
| $P_2$ | | x | | |
| $P_3$ | @gray(x) | | | |
| $P_3$ | x | | | |
| $P_4$ | | | | x |
| $P_5$ | @gray(x) | | | |
| $P_5$ | x | | | |
Keine dominanten Zeilen aber Dopplung eines Minterms - Welchen sollen wir entfernen?
$P_3$ und $P_5$ decken ein und den selben Minterm ab. Welcher sollte gewählt werden?
$$
\begin{aligned}
Expand All @@ -593,7 +582,25 @@ $$
> Ergebnis: Unsere relevanten Primimplikanten sind $y = P_1 + P_2 + P_3 + P_4 = \overline{x}_3 x_2 x_1 + x_3\,\overline{x}_2 + x_3 \overline{x}_1 + x_3 \overline{x}_0$.
> Für das Verfahren von Quine-McCluskey exisitieren webbasierte Lösungen [Link Uni Marburg](https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/qmc/), die zum Ausprobieren einladen.
*******************************************************************
{{1-2}}
*******************************************************************
2. Formeller
**Spaltendominanzprüfung**
Die Spalten werden paarweise darauf verglichen, ob nicht eine Spalte existiert, in der die markierten Primterme eine Teilmenge der markierten Primterme der anderen Spalte sind. Ist dies der Fall, so kann die Spalte mit der Obermenge gestrichen werden, denn es müssen alle Konjunktionen erfasst werden und daher ist die Konjunktion mit der Obermenge durch Auswahl der Konjunktion mit der Teilmenge ebenfalls erfasst.
**Zeilendominanzprüfung**
Man vergleicht die Zeilen (Primterme) der Tabelle paarweise, ob nicht eine Zeile existiert, in denen die markierten Minterme eine Teilmenge der markierten Minterme der anderen Zeile sind. Ist dies der Fall, so kann der Primterm mit der Teilmenge gestrichen werden, denn man kann für jede Markierung des gestrichenen Primterms den anderen Primterm als Ersatz nehmen. Die Relation ist hier also genau umgekehrt wie bei der Spaltendominanz.
> Für das Verfahren von Quine-McCluskey exisitieren webbasierte Lösungen [Link Uni Marburg](https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/qmc/), die zum Ausprobieren einladen. Hier ist aber das Vorgehen etwas anders - die final identifizierten essentiellen Primimplikanten werden extrahiert.
*******************************************************************
## Schaltungssynthese
Expand Down

0 comments on commit 5ba8393

Please sign in to comment.