Schaltungsminimierung mit KV-Diagramm

hallo,

ich habe hier einen Zähler bestehend aus

4 JK-FF. Dieser zählt von 0-7,15-8 (Dualcode)

Dies ganze ist nun in 4 KV-Diagramme ein getragen, für jedes FF eins. J und K sind dabei in die KV-Diagramme mit ein gegangen, es werden auch zwei Funtkionsgleichungen(J,K) aus den Diagrammen herausgelesen.

Ich habe leider bei sowas nie richtig aufgepasst, und nun stehe ich vor dem Problem, das ich

1) aus der Wertertabelle die Werte in die KV-Diagramme eintragen muß (was ich noch so hinbekomme) 2) nichts mit der Unterscheidung von J und K inerhalb des KV-Diagramm anfangen kann (wie&wo?) 3) nicht weiß wie ich nun Zusammenfassen kann (wg. der Unterscheidung von J und K)

Diverse zufindene Vorlesungsskripte im Netz sind entweder zu knapp gehalten, beinhalten andere Verfahrensweisen (mit J und K in getrennten KV-Diagrammen), sind zu kompliziert erklärt(von den Informatikern halt).

Wer kennt's und kann helfen? Das ganze wird dann natürlich auf dem Digitaltrainer-Board aufgebaut, dementsprechend wenige Logikgatter sind vorhanden (8 AND/NAND mit 2 Input; 4 AND/NAND mit 4 Input; 4 OR/NOR mit 2 Input; 4 AND/NAND mit 4 Input;

8XOR mit 2 Input und 4 Inverter). Das heißt mit dem numerischen Verfahren kommt man nicht hin; zumindest habe ich es nicht geschafft mit ABEL (womit ich bisher immer sowas mache) mir Logik mit den nur vorhandenen Gattern zusammenzusetzen.

thx Dirk

Reply to
Dirk Bossenz
Loading thread data ...

"Dirk Bossenz" schrieb im Newsbeitrag news:cs5om9$us3$ snipped-for-privacy@news.manner.de...

Soweit, so gut.

J und K sind unabhängige Dateneingänge für die JK-FFs. Also muss für beide eine unabhängige Funktionsgleichung her. Somit sind es quasi 8 KV-Diagramme.

Im Prinzip erstmal gar nicht. Allerdings besteht der Trick darin, die Schaltung so aufzubauen, dass die JK-FF als sog. Toggle FFs laufen, will sagen J und K sind verbunden, dadurch kann ich nur noch J=K=0 oder J=K=1 anlegen, d.h. bei 0. ändert sich der FF Ausgang nicht, bei 1 wird der Ausgangspegel invertiert. Bei bestimmten Schaltungen kann man damit Logikgatter einsparen, bei anderen braucht man mehr. Welche Version nun die Beste ist, kannst du nur herausfinden, indem du für beide Varianten die Wertetabellen aufschreibst, in KV-Diagrame einträgt und entsprechend minimiert ausliest.

Naja, JK-FFs sind heute in der Praxis eher selten. "Richtige" Digitalschaltkreise (sprich CPLDs/FPGAs) haben eh nur D-FFs.

??? Wieso?

ABEL kann das schon minimieren, allerdings kann es auch nicht zaubern. Wenn man nur einfache logische Funktionen hat, braucht man eben mehr Gatter.

MfG Falk

Reply to
Falk Brunner

anhand der ziemlich sinnlosen Aufgabenstellung gehe ich davon aus, dass dies Teil einer Ausbildung ist. Um es mal drastisch auszudrücken, kein Mensch braucht heute noch Minimierungsverfahren. Die paar die wirklich noch mit TTL-Gräbern zu tun haben, können sich das so aneignen. Du kannst deinem Prof/Ausbilder sagen, er soll mal seine Hausaufgaben machen und sich an der Realität orientieren. Heutzutage ist es wichtig zu wissen, wie man den Inhalt einer Schaltbelegungstabelle in VHDL, Verilog, C, Abel usw umsetzt. Den Rest machen dann die Compiler/Synthese-Tools.

Dies hilft nun nicht mehr dir, aber vielleicht den folgenden Generationen

Bye Tom

--
Dr.-Ing. Thomas Reinemann                www.uni-magdeburg.de/reineman
IMAT                                     Public key available
Otto-von-Guericke-Universität Magdeburg
Universitätsplatz 2
39106 Magdeburg, Germany
Reply to
Thomas Reinemann

jo...das hab ich ihm schon gesagt...auch das VHDL und Abel sehr wichtig sind und er dies doch bitte stattdessen vermitteln soll. Er seines Zeichens Dozent an der Hochschule - ein Mann direkt aus der Wirtschaft, mit kleiner Atmel-Programmier-Bude - meinte dazu nur: wenn sie das begriffen haben, dann können sie auch alles andere...mein Problem: ich kann zwar alles andere, aber das nicht.

Dirk

Reply to
Dirk Bossenz

"Thomas Reinemann" schrieb im Newsbeitrag news:cs81gu$m28$ snipped-for-privacy@fuerst.cs.uni-magdeburg.de...

dies

AUA. Und das bei DER Signatur??

Wieso noch Kopfrechen wenn jeder (Depp) nen P4 zuhause hat. Ich meine, für angehene Techniker (und erst recht Ingeniere!!!) ist das Grundverständniss solcher Dinge unverzichtbar. Sonst hat man bald nur noch "Spezialisten", die auf ihrer tollen GUI rumclicken und wenn eine Schaltung zu gross/zu langsam ist sagen, tja, schlechter Chip. Wenn auch der Grossteil der logischen Schaltungsminimierung heute automatisch erledigt wird, ist doch das Hintergrundwissen von echten Spezialisten(tm) nie verkehrt, oft unverzichtbar. Bisher hat die Seuche der aufgeblasenen Software (Hello World nicht TTL-Gräbern zu tun haben, können sich das so aneignen. Du kannst deinem

Tja, warum er wohl diese Aufgabe lösen will/muss?? Vielleicht wird er in Zukunft mit Digitaltechnik zutun haben?? TTL Gräber wohl kaum, FPGAs/CPLDs sehr wohl.

der

;-))) Wenn ich schon VHDL nehme, dann sicher nicht, um irgendwelche "Schaltbelegungstabellen" umzusetzen. Das haben villeicht die Leute von 10 Jahren mit ihren GALs gemacht. VHDL entfaltet seine Möglichkeiten erst richtig bei systematischem Schaltungsentwurf der mindestens eine Ebene über "Schaltbelegungstabellen" liegt.

Aber auch die haben ihre Grenzen und sind manchmal bissel dämlich. Dort muss ein Spzialist dann schon mal nachhelfen.

MfG Falk, der auch noch KV-Diagramme durchexerziert hat.

Reply to
Falk Brunner

ja...und bei dieser Aufgabe sind sie nämlich vorhanden...da ich an die wenigen Bauteile des beliebten Digitalkoffers gebunden bin. Und mit nummerischen QC-Verfahren muß ich bei den ersten beiden FF's zuviele Gatter nutzen, bzw. noch weiter zusammenfassen. - Eine Lösung gibt es auf alle Fälle, meint ER, ich soll konsequent das KV-Diagramm anwenden und die Theoreme der Schaltalgebra.

Und zwar müßte ich - wenn jetzt alles stimmt - aus den 4x4 OR/NOR-Gattern UND-Gatter machen (durch Negieren des Ausganges) und das schafft AFAIK keine Software...oder?

ich habe jetzt 8 KV-Tafeln aufgestellt. Und konkrete Unsicherheit habe ich bei FF0:

J0

1 0 0 1 1 0 0 1 1*0 0 1 0 0 0 1

K0

0 1 1 0 0 1*0 0 0 1 1 0 0 1 1 0

Die mit dem * gekennzeichneten 1 (welche Minterme representieren) würden übrig bleiben (die anderen 2 und 4 Päckchen fallen weg), oder?

Ein weiterer Extremfall ist der J1 von FF1:

1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0

J1=(Q3 Q2 -Q1 -Q0)+(-Q3 Q2 -Q1 Q0)+(-Q3 -Q2 -Q1 Q0)

Ist es möglich NUR für diese KV-Tafel durch anordnen der "Minterme-Platzvergabe" so zu legen, das nur noch ein Minterm übrig bleibt? Oder andersweitig zu minimieren?

THX Dirk

Reply to
Dirk Bossenz

tjaa - und da muss ich ihm Recht geben! in comp.arch.fpga kommt regelmäßig die Frage warum ein WAIT FOR 10 us; nicht synthetisierbar ist ... schon minimales Vorstellungsvermögen über die Arbeit der eingesetzten Software kann das erklären!

nach 3 Jahren FPGA-Nebenjob merke ich immer deutlicher, dass meine erstellte Logik nicht wirklich optimal ist ... ausgewogene Logiklevel erreiche ich, indem einfach nach den ersten Syntheseversuchen irgendwo in den kritischen Pfaden Register reingebaut werden ... es funktioniert (super) - meint man kaum ...

wie lernt man, wie man das richtig macht?

bye, Michael

Reply to
Michael Schöberl

In article , =?iso-8859-1?Q?Michael_Sch=F6berl?= writes: |> > [...] meinte dazu nur: wenn sie das |> > begriffen haben, dann können sie auch alles andere...mein Problem: |> > ich kann zwar alles andere, aber das nicht. |> |> tjaa - und da muss ich ihm Recht geben! in |> comp.arch.fpga kommt regelmäßig die Frage warum |> ein WAIT FOR 10 us; nicht synthetisierbar ist ... |> schon minimales Vorstellungsvermögen über die |> Arbeit der eingesetzten Software kann das erklären!

Da hilft aber KV auch nicht ;-) Wo KV grad noch sinnvoll wären, wären CPLDs. Spätenstens bei den meisten FPGAs ist das dann egal und es ist nur noch die Anzahl der Eingangssignale wichtig...

Und wenn ich das Problem des OP richtig verstanden habe, ging es da noch um JK-Flipflops, das ist ja eigentlich noch grösserer Blödsinn als die KV-Spielereien. Die JKs gibts doch so gut wie nicht mehr, in CPLDs/FPGAs erst recht nicht. Irgendwann muss man sich einfach mal von der 74er-Reihe lösen. Wenn man sich seine Schaltungen nur in 74er-Logik vorstellen kann, geht einem viel ab...

|> nach 3 Jahren FPGA-Nebenjob merke ich immer |> deutlicher, dass meine erstellte Logik nicht wirklich |> optimal ist ... |> ausgewogene Logiklevel erreiche ich, indem einfach |> nach den ersten Syntheseversuchen irgendwo in den |> kritischen Pfaden Register reingebaut werden ... |> es funktioniert (super) - meint man kaum ...

Das machen die Synthesetools mit Registerbalancing doch automatisch. Man haut einfach vorne oder hinten (je nach Tool) eine Latte von Registern rein. Dumm nur, wenn die Latenz zu gross wird, dann muss man leider nachdenken ;-)

|> wie lernt man, wie man das richtig macht?

Indem man es zuerst falsch macht.

--
         Georg Acher, acher@in.tum.de
         http://wwwbode.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

Hallo,

zum Thema "Script" KV-Diagramme:

formatting link

ist zwar kein Script, aber eine Vorlesung auf Video. Man kann sich also die Grundlagen so oft ansehen, wie man möchte. Tolle Idee der Uni Tübingen:

formatting link

Besonders die Vorlesungen Technische Informatik I & II (einfach über die Suche zu finden) sind wirklich sehenswert. Half mir sehr bei meiner Digitaltechnik-Prüfung.

Gruß Matthias

Reply to
Matthias Eckel-Binder

kann ein FF auch seinen eigenen Ausgang mit als Bestandteil seiner charakteristischen Eingangsgleichung für J oder K haben??

Also ich würde bei solchen Sachen auch meine Mitstudenten oder besser noch den Dozenten fragen - meine Mitstudenten hatte ich schon gefragt, wissen es aber auch nicht richtig und der Dozent erklärt und verliert sich in seinen ver- schachtelten Nebensätzen.

Dirk

Reply to
Dirk Bossenz

Logik-Optimierung ist ein NP-Problem.

Die KV-Diagramme decken in handhabbarer Form wirklich nur die allersimpelsten Fälle ab, nämlich jene, die ein halbwegs intelligenter Mensch auch so in seinem Kopf oder auf einem Blatt Papier durchspielen kann.

Ergo: Betrachte sie wirklich als simples Spielchen, hier eine Schleife, da eine, oh, jetzt haben wir eine Minimalform entdeckt, wär hätte es gedacht ;-/

Alles andere - nämlich das, was als Logiktabelle übliche Speicherdimensionen sprengt - ist nicht trivial und - so es in einen *guten* Logikcompiler implementiert werden soll - echte Kunst. Eben so wie Integrieren, man oder Compiler "sieht" die schöne Lösung oder eben nicht.

Demzufolge schauen die Ergebnisse vieler marketinggetriebener (tm) VHDL Compiler auch sehr traurig aus.

Gruß Oliver

--
Oliver Bartels + Erding, Germany + obartels@bartels.de
http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10
Reply to
Oliver Bartels

"Dirk Bossenz" schrieb im Newsbeitrag news:csdkqh$md7$ snipped-for-privacy@news.manner.de...

Ja, natuerlich, genau deswegen gibt/gab es vorbereitende Eingaenge wie J und K.

Heute natuerlich J und K ersetzt durch D, erfordert mehr Logik aber weniger PinCount.

--
Manfred Winterhoff, reply-to invalid, use mawin at despammed.com
homepage: http://www.geocities.com/mwinterhoff/
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

gibt es ein Programm was einfach nur boolsche Ausdrücke vereinfacht? (als Extra vielleicht, jeden Minimierungs- schritt anzeigt?)

ich hab jetzt zwar im Netz gesucht, aber nix passendes gefunden. bei ABEL oder ähnliches kommt nur Schnulli raus, da immer nur auf konkrete Bausteine entwickelt wird - allgemein genommen ist dieser Digitaltechnik-Übungskoffer auch nix anderes, aber um ihn als Baustein zu definieren und bei easyABEL einzubinden bedarf es Zeit und noch mehr HowToDo, was ich nicht habe.

DAs würde mir jetzt helfen, um entweder meine Ergebnisse abzu- gleichen bzw. besser zu minimieren.

thx Dirk

PS: ich bin jetzt im 11Sem. ET an zwei unterschiedlichen FH's gewesen, an beiden wurde VHDL-Entwurf als was spezielles Seltenes abgetan - sprich nicht Bestandteil der regulären Vorlesungen - irgendwie ärgerlich. An der einen FH haben wir stattdessen alles mit dem mC gemacht bzw. fertige IC's aus dem Katalog gesucht und an der jetzigen dienen die Ing.s nur als Teamleader/Verantwortungs- träger, und bilden die Schnittstelle zwischen Facharbeitern und Managment.(alles beides ist Nachrichtentechnik/Informationstechnik bzw. Kommunikations- und Informationstechnologie)

Reply to
Dirk Bossenz

formatting link

Das mit den Schritten wird schwierig, weil es nicht auf der Gleichungsebene optimiert wird... Oft wird dabei das Verfahren von Quine-McCluskey benutzt. Such mal in google, da gibt's viel dazu, zB.:

formatting link

Eben, wozu Chips entwickeln, die kommen doch schon alle aus Taiwan oder USA...

Gute Nacht, Deutschland...

--
         Georg Acher, acher@in.tum.de
         http://wwwbode.in.tum.de/~acher
         "Oh no, not again !" The bowl of petunias
Reply to
Georg Acher

_ _ Qn+1 = KQn + JQn

Dabei ist Qn der Zustand vor und Qn+1 der nach dem Clock-Impuls.

Wenn Du jetzt ein KV-Diagramm für Qn+1 aufstellst, darfst Du keine Zusammenfassungen machen, bei denen Qn eliminiert wird. Dann lässt sich das Ergebnis durch Ausklammern von Qn bzw. Qn-Nicht in die obige Form bringen. Der Rest wird durch Koeffizientenvergleich erledigt. Der Term bei Qn invertiert ist dann die Beschaltung von K, der Term bei Qn-Nicht die Beschaltung von J.

Gruß Willi

Reply to
Willi Marquart

Vielleicht sollte ich das mal an einem Beispiel erläutern, aber bitte keine Proportionalschrift einstellen!

Ein dreistufiger Synchronzähler soll 0 1 2 3 7 6 5 4 zählen.

n | n+1 | Q2 Q1 Q0|Q2 Q1 Q0

--------+--------

0 0 0 |0 0 1 0 0 1 |0 1 0 0 1 0 |0 1 1 0 1 1 |1 1 1 1 0 0 |0 0 0 1 0 1 |1 0 0 1 1 0 |1 0 1 1 1 1 |1 1 0

KV für Q0n+1

Q0 | /Q0 +-+-+-+-+ Q1|1| |1|1| --+-+-+-+-+ /Q1| | | |1| +-+-+-+-+ /Q2| Q2|/Q2

Das Einzelschicksal oben links wird nicht über den Rand mit der

1 oben rechts zu einem Zweierpaar zusammengefasst, da wir Q0 nicht eliminieren wollen. Bleiben 2 Zweierpaare links. __ __ __ Q0n+1 = Q1Q2Q0 + Q1Q0 + Q2Q0 __ __ Q0n+1 = Q1Q2Q0 + (Q1+ Q2)Q0 _ __ Q0n+1 = KQ0 + JQ0

Der Koeffizientenvergleich ergibt

_ __ K = Q1Q2

J = (Q1+Q2)

Das gleiche für Q1 und Q2 und fertig ist der Zähler.

Gruß Willi

Reply to
Willi Marquart

ok kapiert...soweit bis auf: _ __ __ __ K = Q1Q2 ist dann K = Q1Q2 oder K = Q1+Q2 ?

thx Dirk (kann mich nicht mehr richtig konzentrieren)

Reply to
Dirk Bossenz

Nachdem beide Seiten invertiert wurden, wendest Du deMorgan auf die linke Seite an: __ K = Q1 + Q2

Gruß Willi

Reply to
Willi Marquart

Ich meinte natürlich die rechte Seite.

Reply to
Willi Marquart

ok ist hier nen Fehler drin?

wenn er 0 1 2 3 7 6 5 4 zählen soll.

Wertetabelle sollte doch so aussehen:

__n___ _n+1_

0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 0 0 0 0 0

Oder nutze ich für die Koeffizentenvgl.methode eine andere? (nach welcher Regel?)

Dirk

Reply to
Dirk Bossenz

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.