Forum: Mikrocontroller und Digitale Elektronik 8 mal 1bit zu einmal 3bit zusammenfassen


von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

Moin,

ich habe 8 Leitungen, die an oder aus sein können. Ich möchte die Anzahl 
der Leitungen wissen, die "an" sind.

Bisher mache ich das mit Volladdieren, 2 erfassen die ersten 6 
Leitungen. Die beiden gehen in einen 3bittigen Volladierer, an dessen 
Carry In bit 0 geht Leitung sieben, dann noch einen 3bittigen VA, in den 
geht der vorherige 3bit VA und ins 0bit geht noch die 8te Leitung.

Geht das mit weniger Gattern?

von Nemopuk (nemopuk)


Lesenswert?

J. T. schrieb:
> Geht das mit weniger Gattern?

Mit einem Mikrocontroller, sagt der Praktiker.

Ist das eine Hausaufgabe oder soll ein echtes "Problem" gelöst werden?

: Bearbeitet durch User
von Sn60pb38cu2 (sn60pb38cu2)


Lesenswert?

mit einem 64kB Eprom als Statemachine

von J. T. (chaoskind)


Lesenswert?

Ich meinte schon einzelne Gatter.

Zum Hintergrund:
Es geht um ein Logiksimulationsspiel, dort hat man einzelne Logikgatter 
als Bausteine.
Ich versuche gerade, meine "Game of Life"-Zelle kompakter zu bekommen.

von Nemopuk (nemopuk)


Lesenswert?

Sn60pb38cu2 schrieb:
> mit einem 64kB Eprom als Statemachine

Guter Tipp. Er braucht allerdings nur 8 Eingänge, nicht 16.

von J. R. (yoc)


Lesenswert?

Bei 9 Bit kann man gleich ein ausgangsbit mit der entscheidung belegen.

Ich würde das eher als Lookup bezeichnen.

von J. T. (chaoskind)


Lesenswert?

Nemopuk schrieb:
> Guter Tipp. Er braucht allerdings nur 8 Eingänge, nicht 16.

richtig, aber darum soll es hier nicht gehen. Es ist kein Ersatz 
gesucht.

Die Frage ist, geht es mit weniger Gattern, wenn man keine Tabelle ausm 
Speicher befragen will, sondern es tatsächlich mit einzelnen Gattern 
machen möchte.

J. R. schrieb:
> Bei 9 Bit kann man gleich ein ausgangsbit mit der entscheidung belegen.
> Ich würde das eher als Lookup bezeichnen.

Ich hab aber nur 8 Nachbarzellen.

J. R. schrieb:
> Ich würde das eher als Lookup bezeichnen.

Und darum soll es gar nicht gehen. Hier sind gatterorientierte Lösungen 
gefragt ;-)

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

> 8 mal 1bit zu einmal 3bit zusammenfassen

J. T. schrieb:
> ich habe 8 Leitungen, die an oder aus sein können. Ich möchte die Anzahl
> der Leitungen wissen, die "an" sind.

Das wären neun mögliche Zustände, 0…8.
Es würde mich außerordentlich überraschen, wenn man das mit 3Bit 
darstellen könnte.

von J. T. (chaoskind)


Lesenswert?

Nemopuk schrieb:
> Ist das eine Hausaufgabe oder soll ein echtes "Problem" gelöst werden?

dein Beitrag ist mir irgendwie durchgerutscht, sorry.

Es soll das "echte "Problem"" "ein Gattersammelsorium nimmt Volumen x 
ein, gewünscht ist aber Volumen 0,y*x" gelöst werden.

Das geht natürlich am besten, wenn man die Anzahl der Gatter selbst, die 
das Gattersammelsorium bilden, kleiner macht.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Norbert schrieb:
>> 8 mal 1bit zu einmal 3bit zusammenfassen
>
> J. T. schrieb:
>> ich habe 8 Leitungen, die an oder aus sein können. Ich möchte die Anzahl
>> der Leitungen wissen, die "an" sind.
>
> Das wären neun mögliche Zustände, 0…8.
> Es würde mich außerordentlich überraschen, wenn man das mit 3Bit

ja sorry, ich hab das Carrybit vom letzten Volladdierer in der Kette 
vergessen....

Aber das sollte ja schon im Schaltbildchen ersichtlich werden.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

J. T. schrieb:
> Aber das sollte ja schon im Schaltbildchen ersichtlich werden.

Mag sein. Aber wenn der Text schon nicht schlüssig ist,
spart man sich gerne mal das Betrachten der Bildchen. ;-)

von Nemopuk (nemopuk)


Lesenswert?

J. T. schrieb:
> Es soll das "echte "Problem"" "ein Gattersammelsorium nimmt Volumen x
> ein, gewünscht ist aber Volumen 0,y*x" gelöst werden.

Ein Mikrocontroller nimmt echt weniger Volumen ein, als so viele 
Logikgatter.

Ich habe allerdings heraus gelesen, dass es doch kein echtes Problem 
ist, sondern eine theoretische Aufgabe als Gehirnjogging.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Nemopuk schrieb:
> Ein Mikrocontroller

ist in dieser Spielwelt nicht verfügbar, ausser du baust ihn dir aus 
Gattern auf. Und das wird sicherlich nicht kleiner.

Nemopuk schrieb:
> Ich habe allerdings heraus gelesen, dass es doch kein echtes Problem
> ist, sondern eine theoretische Aufgabe als Gehirnjogging.

so ist es. darum das "echt" noch in extra Anführungszeichen.

J. T. schrieb:
> Zum Hintergrund:
> Es geht um ein Logiksimulationsspiel, dort hat man einzelne Logikgatter
> als Bausteine

Ganz "einfache Frage", ohne Notwendigkeit auf Hinweise auf völlig andere 
Lösungsmöglichkeiten.

Kann ich 8 Eingänge mit weniger als 8 Volladdierern, bzw genauer 8 
ODER-, 16 UND- und 16 XOR- Gattern aufbauen?

Auf Gatterebene betrachtet verbraucht dein Mikrocontroller viel vieeel 
viiiieeeel mehr Platz, als die paar Addierer.

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Sn60pb38cu2 schrieb:
> mit einem 64kB Eprom als Statemachine

Bei acht Leitungen? Das sollte doch wohl sparsamer gehen. ;-)

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

3 Gedanken:

Grundsätzlich ist das eine Addition. D.h. Addierer sind grundsätzlich 
die richtigen Bausteine. Du kannst die Addierer baumartig anordnen, dann 
kommst du zumindest am Anfang mit Halbaddierern aus, zusätzlich ist die 
Wortbreite weiter unten im Baum kleiner.

Der 2. Gedanke: ein grundsätzliches Hilfsmittel für solche Logik-Fragen 
ist das https://de.wikipedia.org/wiki/Karnaugh-Veitch-Diagramm.

3. Ein weiterer Google-Begriff für diese Aufgabe dürfte der Begriff 
"Hamming-Gewicht" sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

J. T. schrieb:
> ich habe 8 Leitungen, die an oder aus sein können. Ich möchte die Anzahl
> der Leitungen wissen, die "an" sind.
"an" und "aus" sind so richtig elektrische Pegel.

Sn60pb38cu2 schrieb:
> Statemachine
Wozu eine FSM? Ein Addierer ist vollständig kombinatorisch, da braucht 
es keinen Speicher oder Takt. Also sind auch 8 Addierer reine 
Kombinatorik und brauchen keinen Takt.
Also reicht ein simples EPROM mit 8 Adressleitungen, das mit dem 
passenden Bitmuster gefüllt wird.
Beginnend ab Adresse 0 sind das die Werte: 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 
2, 3, 2, 3, 3, 4, 1, usw...

BTW: Es würde ein 2kByte EPROM (256×8) reichen, und selbst davon werden 
nur 3/8 zum "Rechnen" verwendet.

: Bearbeitet durch Moderator
von J. T. (chaoskind)


Lesenswert?

Tilo R. schrieb:
> 3 Gedanken:

Danke für den ersten hilfreichen Beitrag.

Noch eine kleine Hürde, die mir im Eingangspost entfallen ist:

Es gibt kein ODER-Gatter im Spiel. Man kann Ausgänge zwar nicht direkt 
zusammenschalten, aber auf einem "Pin" zusammenführen, dann sind sie 
quasi wired-Or.

Im Bildchen sind die ODER nur, weils Falstad anderd ist.

Ein Volladdierer ist also ein bischen kleiner, als er sein sollte.

8 Eingänge mit 4 Halbaddierern zusammenfassen. Die dann mit 2 2bittigen 
VA zusammenfassen, die dann in nem 3bittigen VA zusammenführen.
Vier HA entsprechen etwa 2 VA (wegen dem gesparten ODER wegen wired-or), 
dann 4 VA für 2 2bittige und dann 3 VA für den dreibittigen. Sind 9 VA.

Ich brauch bis jetzt 8....

Tilo R. schrieb:
> Der 2. Gedanke

ist bekannt, ich war aber nie sonderlich gut darin, die Logik 
zusammenzukomprimieren. Wenn dies dann das in Logik umsetzen kein 
Problem, das dann knackig kompakt zu bekommen, lag mir nie so... daher 
ja auch die Nachfrage hier.

Tilo R. schrieb:
> Ein weiterer Google-Begriff für diese Aufgabe dürfte der Begriff
> "Hamming-Gewicht" sein.

kommt das aus der selben Gegend wie die Hamming-Distanz? Das Gewicht ist 
mir zumindest nicht hängengeblieben, schau ich mir mal an.

Nochmals danke für die hilfreichen Hinweise, wenigstens versuchst du 
Hilfestellung zu geben, statt nen Mikrocontroller oder EPROM zu 
empfehlen.

von J. T. (chaoskind)


Lesenswert?

Lothar M. schrieb:
> "an" und "aus" sind so richtig elektrische Pegel.

ich kann mein Multimeter schlecht in ein Computerspiel halten. Es geht 
um die Logik, die ist völlig unabhängig vom exakten Wert der jeweiligen 
Logikpegel.

Lothar M. schrieb:
> Wozu eine FSM? Ein Addierer ist vollständig kombinatorisch, da braucht
> es keinen Speicher oder Takt. Also sind auch 8 Addierer reine
> Kombinatorik und brauchen keinen Takt.
> Also reicht ein simples EPROM mit 8 Adressleitingen, das mit dem
> passenden Bitmuster gefüllt wird.
> BTW: Es würde ein 2kByte EPROM (256×8) reichen, und selbst davon werden
> nur 3/8 zum "Rechnen" verwendet.

Ich habe mehrmals gesagt, dass das hier keine Möglichkeit ist. Warum 
fängt jetzt sogar ein Moderator an, mit darum zu diskutieren, statt die 
Diskussion in diebgewünschte Richtung zu lenken?

Manmanman, ich weiß schon, warum ich nur noch so selten Fragen stelle...

Lothar M. schrieb:
> BTW: Es würde ein 2kByte EPROM (256×8) reichen, und selbst davon werden
> nur 3/8 zum "Rechnen" verwendet.

BTW selbst das wurde schon erwähnt.... was ist aus lesem vorm posten 
geworden?

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

Lothar M. schrieb:
> BTW: Es würde ein 2kByte EPROM (256×8) reichen, und selbst davon werden
> nur 3/8 zum "Rechnen" verwendet.

Meinst du evtl ⅛ eines 2KiB EPROM?
MMN reicht doch ¼KiB aus. Wovon die oberen 4Bit auch noch brachliegen.

von J. T. (chaoskind)


Lesenswert?

Norbert schrieb:
> Meinst du evtl

Meinst du evtl, du könntest nen eigenen Thread aufmachen, wenn du das 
besprechen möchtest?

: Bearbeitet durch User
von Norbert (der_norbert)


Lesenswert?

J. T. schrieb:
> Meinst du, du könntest nen eigenen Thread aufmachen, wenn du das
> besprechen möchtest?

Tendenziell eher nicht. Aber danke für den für µC-net eher befremdlichen 
Gedanken.

von J. T. (chaoskind)


Lesenswert?

ich glaub, der erste 3bittige VA sollte 2bittig ausreichen. mit dem 
Carry sinds ja 3 bit, das reicht um die maximal 2mal 3, also 6, 
zusammenzufassen, die an den ersten beiden 1 bittigen VA hängen....

von Björn W. (bwieck)


Lesenswert?

J. T. schrieb:
> Ich habe mehrmals gesagt, dass das hier keine Möglichkeit ist. Warum
> fängt jetzt sogar ein Moderator an, mit darum zu diskutieren, statt die
> Diskussion in diebgewünschte Richtung zu lenken?

DU hast gefragt ob das mit weniger Gatter geht.
Die Antworten daraufhin haben Lösungen mit weniger bis keine Gatter 
aufgezeigt.

DU hast direkt am Anfang vergessen zu erwähnen das es bei einer 
"Gatterlösung" bleiben soll.
Also fass dir an die eigene Nase.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Das hoert sich fuer mich so an, als haetten sich die Herren Veitch, 
Karnaugh, Quine und McCluskey mit sowas schon vor Jahren beschaeftigt: 
Also der Vereinfachung von Logikfunktionen...
Ich glaub', dieses Rad muss nicht nochmal erfunden werden, nur 
verstanden.

Gruss
WK

von Nemopuk (nemopuk)


Lesenswert?

Man könnte das auch analog lösen: die 8 Spannungen addieren und auf 
einem Voltmeter anzeigen (oder mit einem D/A Wandler wieder 
digitalisieren). Aber  auch das wäre nicht im Sinne des TO.

von Helmut H. (helmuth)


Lesenswert?

J. T. schrieb:
> Ich versuche gerade, meine "Game of Life"-Zelle kompakter zu bekommen.

d.h man muss doch nur 2 und 3 Nachbarn dekodieren:
Zelle lebt:  2 oder 3 Nachbarn bleibt, sonst stirbt sie.
Zelle leer:  bei 3 Nachbarn neue geboren.

von J. T. (chaoskind)


Lesenswert?

Björn W. schrieb:
> DU hast gefragt ob das mit weniger Gatter geht.
> Die Antworten daraufhin haben Lösungen mit weniger bis keine Gatter
> aufgezeigt.

Wenn wir ne Speicherzelle mal als Gatter im weitesten Sinne definieren, 
nein.

Ein Hinweis wurde gegeben, der zu einer Lösung mit mehr Gattern führte.

Björn W. schrieb:
> DU hast direkt am Anfang vergessen zu erwähnen das es bei einer
> "Gatterlösung" bleiben soll.
> Also fass dir an die eigene Nase.

Habe die Gatter aber direkt erwähnt und noch ein Bildchen dazugeliefert, 
so dass eigentlich relativ klar sein sollte, wprum es geht.
Und im Nachgang dann noch mehrmals ziemlich unmissverständlich gesagt, 
worum es geht. Aber es wird um PROMS und uCs lamentiert.

Dergute W. schrieb:
> Moin,
>
> Ich glaub', dieses Rad muss nicht nochmal erfunden werden, nur
> verstanden.
>
> Gruss
> WK

Und hast dus verstanden und kannst eine Lösungit weniger Gatterm zeigen 
oder bist du mal wieder nur am dummrumschwätzen?

von J. T. (chaoskind)


Lesenswert?

Helmut H. schrieb:
> d.h man muss doch nur 2 und 3 Nachbarn dekodieren:
> Zelle lebt:  2 oder 3 Nachbarn bleibt, sonst stirbt sie.
> Zelle leer:  bei 3 Nachbarn neue geboren.

ich hab beide Versionen implementiert. Fest verdrahtetes 
Originalregelwerk und per Schalter wählbar ob nichts passiert, lebt oder 
stirbt bei 0 bis 8 Nachbarn.
Also für jeweils für 0 lebt, stirbt, bleibt wie es ist, und für 1 usw.

Nemopuk schrieb:
> Man könnte das auch analog lösen: die 8 Spannungen addieren und auf
> einem Voltmeter anzeigen (oder mit einem D/A Wandler wieder
> digitalisieren). Aber  auch das wäre nicht im Sinne des TO.

eben, den ich kann immer noch kein MM in ein Computerspiel stecken....

von Jörg R. (solar77)


Lesenswert?

J. T. schrieb:
> Dergute W. schrieb:
>> Moin,
>>
>> Ich glaub', dieses Rad muss nicht nochmal erfunden werden, nur
>> verstanden.

> Und hast dus verstanden und kannst eine Lösungit weniger Gatterm zeigen
> oder bist du mal wieder nur am dummrumschwätzen?

Ja, genau so etwas wollen die Helfenden hören, da ist man doch gleich 
viel motivierter.

Ich glaube du schaffst das schon alleine. Ist ja eh ein Gedankenspiel, 
also nicht zeitkritisch. Da kannst du mal schön Google benutzen, oder 
eine KI. Die gibt dir wenigstens keine Widerworte.


J. T. schrieb:
> Ich habe mehrmals gesagt, dass das hier keine Möglichkeit ist. Warum
> fängt jetzt sogar ein Moderator an, mit darum zu diskutieren, statt die
> Diskussion in diebgewünschte Richtung zu lenken?
>
> Manmanman, ich weiß schon, warum ich nur noch so selten Fragen stelle...

Und weiß weshalb ich mir bei solchen Threads keine Mühe gebe. Die 
Lustlosigkeit beginnt schon bei dem „Schaltplan“ aus dem Eingangspost.

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Ich komme auf 4 VA und 3 HA.

Das Zeichnen der Schaltung erspare ich mir, denn das hast du bereits
getan. Du musst in deiner Schaltung nur alle ungenutzten Leitungen und
alle Gatter ohne Funktion löschen :)

von Hippelhaxe (hippelhaxe)


Lesenswert?

Dergute W. schrieb:

> Das hoert sich fuer mich so an, als haetten sich die
> Herren Veitch, Karnaugh, Quine und McCluskey mit sowas
> schon vor Jahren beschaeftigt:
> Also der Vereinfachung von Logikfunktionen...

Sicher -- unter der Voraussetzung eines ZWEISTUFIGEN
Schaltnetzwerkes.


> Ich glaub', dieses Rad muss nicht nochmal erfunden
> werden, nur verstanden.

Ich vermute, im vorliegenden Fall ist eine Baumstruktur
günstig(er), und die ist gerade nicht zweistufig...

von Dergute W. (derguteweka)


Lesenswert?

Moin,

J. T. schrieb:
> Und hast dus verstanden und kannst eine Lösungit weniger Gatterm zeigen
> oder bist du mal wieder nur am dummrumschwätzen?

Ja, ich denke schon, dass ich das verstanden habe. Vor meinem geistigen 
Auge zeigt sich fuer das LSB deiner Addition ein KV-Diagramm mit 
"Schachbrett"muster - unschoen zu vereinfachen :-)
[EDIT: ups, nee mein geistiges Auge hat sich verguckt, das stimmt so 
nicht.]

Nein, ich weiss so aus'm Bauch raus nicht, wieviele Gatter das dann 
insgesamt braucht.
Ich weiss ja nichtmal, was du fuer Gatter meinst, also zaehlt ein XOR 
als "ein Gatter", wieviele Eingaenge darf "ein Gatter" bei dir haben?
Aber da du schon so nett nachfragst, zieh' ich es doch vor, hier nur 
wieder dumm rumzuschwaetzen.

Gruss
WK

: Bearbeitet durch User
von Hippelhaxe (hippelhaxe)


Lesenswert?

Yalu X. schrieb:

> Ich komme auf 4 VA und 3 HA.
>
> Das Zeichnen der Schaltung erspare ich mir,

Sehr schade.

Naja.

Bit0 des Ergebnisses ist m.E. gerade die Parität;
das läuft auf ein XOR über alle Bits hinaus. Kann
man mit einem 4/2/1-Baum aus 2er XOR-Gattern machen.

Bit3 ist ein AND über alle Eingänge; das kann man
mit einem 4/2/1-Baum aus 2er AND-Gattern machen.

Bit1 ist die Parität über die Paare gesetzter
Eingänge; zu den Paaren, die die unterste Stufe des
AND-Baumes direkt anzeigt, kommen aber noch die hinzu,
die aus zwei einzelnen Eingängen in zwei benachbarten
Zweiergruppen bestehen.
Letzere kann man aus der untersten Stufe des XOR-Baumes
ablesen.

Wie Bit2 zu bilden ist, überlege ich mir, wenn ich vom
Spazierengehen und Einkaufen wieder zu Hause bin und
eine Skizze gemacht habe...

von Hippelhaxe (hippelhaxe)


Lesenswert?

Dergute W. schrieb:

> [EDIT: ups, nee mein geistiges Auge hat sich verguckt,
> das stimmt so nicht.]

Wieso nicht?

von J. T. (chaoskind)


Lesenswert?

Jörg R. schrieb:
> Ja, genau so etwas wollen die Helfenden hören, da ist man doch gleich
> viel motivierter.

zu denen gehört der gute Weka hier aber nicht....
oder inwieweit gehört man zu den Helfenden, wenn man explizit 
ausgeschlossenes vorschlägt?
Gut, das war jetzt nicht des Wekas Makel....




Yalu X. schrieb:
> Ich komme auf 4 VA und 3 HA.

yup danke, hab ich nun auch gefunden.


Den paar wenigen helfenden nochmals herzlichen Dank für die 
richtungsweisenden Stubse.


Nun dürft ihr euch nach herzenslust darüber auslassen, ob man das ganze 
besser mit nicht existierenden EPROMs oder nicht existierenden uCs 
macht.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Hippelhaxe schrieb:
> Dergute W. schrieb:
>
>> [EDIT: ups, nee mein geistiges Auge hat sich verguckt,
>> das stimmt so nicht.]
>
> Wieso nicht?

Hast recht, kommt doch ein Schachbrett fuers LSB raus. Da kannste mal 
sehen, was ich fuer ein Dummschwaetzer bin :-)

Gruss
WK

von Dergute W. (derguteweka)


Lesenswert?

J. T. schrieb:
> zu denen gehört der gute Weka hier aber nicht....
> oder inwieweit gehört man zu den Helfenden, wenn man explizit
> ausgeschlossenes vorschlägt?
> Gut, das war jetzt nicht des Wekas Makel....

Aeeeeh, das klingt jetzt aber doch arg verwirrt.
Wenn du mich einfach so nicht leiden kannst, ist das OK, du musst das 
nicht versuchen zu begruenden.

scnr,
WK

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

J. T. schrieb:
> Yalu X. schrieb:
>> Ich komme auf 4 VA und 3 HA.
>
> yup danke, hab ich nun auch gefunden.

Ah ne doch nicht, da hab ich nur noch 6 Eingänge....

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Hippelhaxe schrieb:
> Wie Bit2 zu bilden ist, überlege ich mir, wenn ich vom
> Spazierengehen und Einkaufen wieder zu Hause bin und
> eine Skizze gemacht habe...

Ich bin gespannt!

Dergute W. schrieb:
> Aeeeeh, das klingt jetzt aber doch arg verwirrt.
> Wenn du mich einfach so nicht leiden kannst, ist das OK, du musst das
> nicht versuchen zu begruenden.

Das ich dich nicht so recht leiden kann, ist schon richtig. Da du 
diesmal aber nicht "nicht-gewünschtes" "gesagt" hast, sondern einfach 
Allgemeinplätze aus der Logik aufgezählt hast, unterlagst du halt nicht 
dem über das ich mich beschwerte. Dinge vorschlagen, die ausgeschlossen 
sind.

Und da ich mich darüber beschwerte, dass das getan (EPROMs, uCs 
vorgeschlagen, obwohl nicht verfügbar bspw) wurde, und auch an dir 
rummäkelte, musste ich dich von der Mäkelei ja ausnehmen.

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

Ich komm jetzt auf 5 VA und 2 HA

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

Yalu X. schrieb:
> Das Zeichnen der Schaltung erspare ich mir, ...

Da ich KiCad gerade noch offen hatte, habe ich die Schaltung doch noch
aufgemalt.

PS: Da ist eine Leitung nicht richtig verbunden. Es sollte aber trotzdem
klar sein, wo sie hingehört.

: Bearbeitet durch Moderator
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

OK, da wird wieder mal das Forumsniveau nach unten ausgelotet ...

Also es ist schlicht unmöglich die möglichen 9 Zuständer der 8 
Eingangsleitungen mit 3 bit abuibilden, da braucht es einen Outputvektor 
von 4 bit.

Statt Volladder und so was konnte man aus der 74xxx Familie gleich einen 
kleinen PROM (471 glaube ich) oder  binär decimal encoder (147 oder so 
verwenden. Letzteres findet man nicht selten als CS-Adressdecoder auf 
SBC.

Bei FPGA's vielleicht was aus der 6-LUT ecke mit aktivierten Mux und 
Mux8 und bei Cologne-chip GateMate hat es doch 8 LUT's.

Abgesehen davon, das man diese Frage so bei jedem Vorstellungsinterview 
als Digitaldesigner gestellt bekommt.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

J. T. schrieb:
> sondern einfach
> Allgemeinplätze aus der Logik aufgezählt hast,

Aeeehm - das sind nicht Allgemeinplaetze aus der Logik, sondern die 
Namen der Entwickler von Verfahren, die genau deine Problemstellung 
loesen.
Aber nachdem du schon im Eingangspost munter zwischen Halb/Volladdierern 
und Gattern hin- und herspringst - wie sollte ich da eine Anzahl von 
Gattern angeben koennen, wenn du nicht definierst, was fuer dich ein 
Gatter ist?

In deinem Fall hast du ein Schaltnetz mit 8 Eingaengen und 4 Ausgaengen 
(weil du die Ergebnisse 0,1,2,3,4,5,6,7,8 darstellen koennen musst.
Das LSB dieses 4bit Ausgangs ist ein XOR-Gatter mit 8 Eingaengen, wie 
ich mich mit mir und Hippelhaxe einig werden konnte.
Das MSB dieses 4bit Ausgangs ist ein AND-Gatter mit 8 Eingaengen.

Zaehlt das jetzt als 2 Gatter oder doch irgendwie nicht?

Die 2 restlichen Bit des Ausgangsworts darfst du selber loesen, wenn dir 
was dran liegt.

Gruss
WK

von J. T. (chaoskind)


Lesenswert?

ach der unten rechts langt auch als HA

von Rainer W. (rawi)


Lesenswert?

J. T. schrieb:
> Ich hab aber nur 8 Nachbarzellen

Wenn es aber darum geht, den neuen Zustand der Zentralzelle zu 
bestimmen, musst du auch ihren alten Zustand mit berücksichtigen, also 9 
Eingänge.

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

J. T. schrieb:
> ach der unten rechts langt auch als HA

Da geht 1 Signal hinein, und 1 Signal kommt heraus. Das Ausgangssignal
ist gleich dem Eingangssignal. Wie nennt man noch einmal die komplexe
Schaltung, die diese Funktion realisiert?

von J. T. (chaoskind)


Lesenswert?

Bradward B. schrieb:
> OK, da wird wieder mal das Forumsniveau nach unten ausgelotet ..

und du trägst munter mit zu bei, indem alles erwähnst, was 
ausgeschlossen wurde :D, ein richtiger Braddy ma wieder......

Mal wieder nicht lesen können, das es um simuliertes geht?

Bradward B. schrieb:
> Also es ist schlicht unmöglich die möglichen 9 Zuständer der 8
> Eingangsleitungen mit 3 bit abuibilden, da braucht es einen Outputvektor
> von 4 bit.

Wir hier hatten schon festgestellt, dass ein 3bittiger Volladdierer ein 
Carrybit mitbringt =)

Bradward B. schrieb:
> Statt Volladder und so was konnte man aus der 74xxx Familie gleich einen
> kleinen PROM (471 glaube ich) oder  binär decimal encoder (147 oder so
> verwenden. Letzteres findet man nicht selten als CS-Adressdecoder auf
> SBC.

Ebenso wie ich kein Multimeter in die Sumilation halten kann, kann ich 
kein Chips, welcher Logikfamilie auch immer, in die Simu schmeißen.




Dergute W. schrieb:
> Halb/Volladdierern

In der simulierten Welt besteht ein Halbaddierer aus einem UND- und 
einem XOR-Gatter. Der Volladdierer aus 2 Halbaddierern, da dass Oder 
wired umgesetzt wird. Der eine Platz dafür ist also mehr oder weniger 
umsonst.

Falls es dich interessiert, das Spiel heißt Logic World, Es gibt UND mit 
2-4 Eingängen, XOR mit 2 Eingängen, D-FlipFlop, Relais, Buffer, und n 
paar Taster und Anzeigen... gabs mal fürn Appel und Ei auf Steam.

von Michael B. (laberkopp)


Lesenswert?

J. T. schrieb:
> Geht das mit weniger Gattern?

https://www.righto.com/2016/01/counting-bits-in-hardware-reverse.html

https://asicdigitaldesign.wordpress.com/2007/05/23/aclp-2-solution/

Ein 16V8 GAL ? Ein 256x4 (E)PROM ?

Ein 8:! Multiplexer (74xx151) , ein 3 bit Zähler der diesen Multiplexer 
steuert und bei 8 anhält, ein weiterer 3 bit Zähler (74XX393) der pro 
Takt nur inkrementiert wenn der Multiplexer eine 1 liefert, aber dazu 
muss Steuerungslogik, eine Taktsignalquelle, keine Ahnung wie viele 
weitere Chips.

von J. T. (chaoskind)


Lesenswert?

Michael B. schrieb:
> keine Ahnung wie viele
> weitere Chips.

die auch alle nicht in die Simulation zu bekommen sind...

von J. T. (chaoskind)


Angehängte Dateien:

Lesenswert?

Yalu X. schrieb:
> Da geht 1 Signal hinein, und 1 Signal kommt heraus. Das Ausgangssignal
> ist gleich dem Eingangssignal. Wie nennt man noch einmal die komplexe
> Schaltung, die diese Funktion realisiert?

da hatte noch die Carryverbindung gefehlt, so siehts nu fertig aus, 
bischn andere Anordnung als bei dir, aber es kommt das gewünschte raus.

P.S. LSB ist oben, aber das sollte wohl klar sein

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

J. T. schrieb:

> Falls es dich interessiert, das Spiel heißt Logic World, Es gibt UND mit
> 2-4 Eingängen, XOR mit 2 Eingängen, D-FlipFlop

Diese Information hätte in's OT gehört, um diesem irgendeinen Sinn zu 
geben.

So war's nur deine übliche Trollerei. Wenigstens passte der Wochentag 
diesmal.

von J. T. (chaoskind)


Lesenswert?

Ob S. schrieb:
> Diese Information hätte in's OT gehört, um diesem irgendeinen Sinn zu
> geben.

Fiel mir dann auch relativ kurz nachm absenden auf und ich hab ja 
nachgeliefert. Das es um ein Spiel geht, sagte ich in meinem 2ten oder 
dritten Post...

Ob S. schrieb:
> So war's nur deine übliche Trollerei.

Oder mich hats wirklich interessiert und der übliche Mob wollte einem 
wieder was aufdrücken, was gar nicht zur Lösung passt. Den guten Weka 
mal explizit ausgenommen, der ist beim Thema geblieben.

Ich wollte halt mal eben schnell nachfragen, da gehen einem die 
wichtigen Details manchmal flöten, immerhin hab ich nen Schaltplan 
gemalt, direkt Opening....

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

J. T. schrieb:

> Das es um ein Spiel geht, sagte ich in meinem 2ten oder
> dritten Post...

Aber nicht, welche "Gatter" verfügbar sind. Und das ist natürlich nach 
den Gesetzen der Logik der entscheidende Knackpunkt, wenn das Ziel ist, 
die Zahl eben dieser "Gatter" zum minimieren.

von Jobst M. (jobstens-de)


Angehängte Dateien:

Lesenswert?

Anzahl Gatter = 0.
Vermutlich aber auch nicht nach den Spielregeln.

Die Eingänge müssen auf H (5V) oder L (0V) getrieben werden. Offene 
Eingänge sind nicht zugelassen.

Gruß
Jobst

von Alexander (alecxs)


Lesenswert?

Wenn es ein Spiel ist dann bist Du ein Cheater, hier nach der Lösung 
fragen ist wie Kreuzworträtsel mit googlen.

von Marci W. (marci_w)


Lesenswert?

Hallo Leute, hallo J. T.,

also ich würde stur eine Wahrheitstabelle aufstellen und dann z.B. mit 
Quine Mc Clusky minimieren, oder was man heute so nimmt. Vermutlich gibt 
es dafür tausende Tools. Da bin ich dann sicher, dass ich den minimalen 
Aufwand an Gattern etc. habe. Oder ich bastel ein riesiges KV-Diagramm, 
aber das wird eher unübersichtlich ;-)
Oder muss die Lösung "kreativ" gefunden/erarbeitet werden?

ciao

Marci

von 🍅🍅 🍅. (tomate)


Lesenswert?

256x3bit LUT...

von Nemopuk (nemopuk)


Lesenswert?

🍅🍅 🍅. schrieb:
> 256x3bit LUT...

Ja super, ganz neuer Vorschlag.

Ubd dennoch falsch, denn mit 3 Bits kann man immer noch nicht von 0 bis 
8 zählen.

von 🍅🍅 🍅. (tomate)


Lesenswert?

Ja und, im FPGA wird daraus 256x8 ROM oder ähnlich im SRAM, quasi null 
Resourcen in halbwegs modernem FPGA und mit 1cycl Latenz, schneller geht 
fast nicht.

Ansonsten lahm und zig LUTs verbastelt

Und wenn immer noch zu viel, dann halt in 2x 16x8 LUT aufteilen für  2x 
4 Datenleitungen und nachher addieren.

: Bearbeitet durch User
von Hippelhaxe (hippelhaxe)


Lesenswert?

Marci W. schrieb:

> also ich würde stur eine Wahrheitstabelle aufstellen und
> dann z.B. mit Quine Mc Clusky minimieren, oder was man
> heute so nimmt. Vermutlich gibt es dafür tausende Tools.
> Da bin ich dann sicher, dass ich den minimalen Aufwand
> an Gattern etc. habe.

NEIN !

<Gebetsmühle>

Quine/McClusky, Karnaugh/Veitch etc. liefern minimalen
Aufwand für zweistufige Schaltnetzwerke !

Wenn man mehr Stufen (=längere Signalpfade, längere
Laufzeit) zulässt, kann es immer noch Lösungen mit
geringerem Aufwand an Gattern geben.

</Gebetsmühle>


Es ist Deiner Aufmerksamkeit sicher nicht entgangen,
dass die Lösungen von Yalu oder J.T. mehr als zwei
Stufen enthalten...

von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> Und dennoch falsch, denn mit 3 Bits kann man immer noch nicht von 0 bis
> 8 zählen.

Es sind aber nur 8 Leitungen.

J. T. schrieb:
> 8 mal 1bit zu einmal 3bit zusammenfassen

von R. L. (roland123)


Lesenswert?

Hippelhaxe schrieb:
> Es ist Deiner Aufmerksamkeit sicher nicht entgangen,
> dass die Lösungen von Yalu oder J.T. mehr als zwei
> Stufen enthalten...

gibt es für mehrstufige Netzwerke eine Software zum optimieren?

Alexander schrieb:
> Es sind aber nur 8 Leitungen.

und das gibt nun mal 9 Möglichkeiten, wie viele Leitungen eingeschaltet 
sein können.

von Nemopuk (nemopuk)


Lesenswert?

Alexander schrieb:
> Es sind aber nur 8 Leitungen.

Eben. Er will die Anzahl der HIGH Pegel zählen. Also eine Zahl im 
Bereich 0 bis 8. Das erfordert 4 bits.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> Also eine Zahl im Bereich 0 bis 8

sind 9 Bits. Im Betreff steht 8 mal 1bit

von Jobst M. (jobstens-de)


Lesenswert?

Alexander schrieb:
> sind 9 Bits

Wieviel Leitungen benötigst Du für 0 Bit?
(Welches ja schon die erste Lösung von neun darstellt.)

Gruß
Jobst

von Hippelhaxe (hippelhaxe)


Lesenswert?

Alexander schrieb:

> Nemopuk schrieb:
>> Also eine Zahl im Bereich 0 bis 8
>
> sind 9 Bits.

Könntest Du diese schwachsinnige Streiterei bitte
unterlassen?

9Bit sind 0..511.

9 verschiedene Zustände sind 3.17bit; es sind also
vier Leitungen notwendig.


> Im Betreff steht 8 mal 1bit

Natürlich -- weil es acht Leitungen mit je einem Bit
(=zwei Zustände) sind.

von Hippelhaxe (hippelhaxe)


Lesenswert?

R. L. schrieb:

> Hippelhaxe schrieb:
>> Es ist Deiner Aufmerksamkeit sicher nicht entgangen,
>> dass die Lösungen von Yalu oder J.T. mehr als zwei
>> Stufen enthalten...
>
> gibt es für mehrstufige Netzwerke eine Software zum
> optimieren?

Gibt es sicher -- kann ich aber nicht weiterhelfen.

von Alexander (alecxs)


Lesenswert?

Aber wenn es doch nur 8 Leitungen sind, und er die Anzahl der HIGH Pegel 
zählen will, können das nur 8 HIGH Pegel sein. Ich gebe zu, Logik war 
noch nie meine Stärke. Mein HIGH Pegel ist jedenfalls nicht höher als 
Acht. Bitte ein Bit!

von Gustl B. (gustl_b)


Lesenswert?

Und für die Dezimalzahl 8 brauchst du im Dualsystem wie viele Stellen?

von Klaus (feelfree)


Lesenswert?

Alexander schrieb:
> Ich gebe zu, Logik war noch nie meine Stärke.

Untertreibung des Tages.

> Mein HIGH Pegel ist jedenfalls nicht höher als Acht.

Du bist noch nie über eine Null hinausgekommen.

von Nemopuk (nemopuk)


Lesenswert?

Alexander schrieb:
> Aber wenn es doch nur 8 Leitungen sind, und er die Anzahl der HIGH Pegel
> zählen will, können das nur 8 HIGH Pegel sein.

8 ist binär 1000

Das sind 4 Bits

von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> 8 ist binär 1000
1
000
2
001
3
010
4
011
5
100
6
101
7
110
8
111

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Kannst du nicht einfach mal ein paar Ueberholverbotsschilder auswendig 
lernen?

von Mario M. (thelonging)


Lesenswert?

Alexander schrieb:
> 111

Sind erst sieben Einsen! Und was passiert bei der achten?

von Alexander (alecxs)


Lesenswert?

Ich zähle nur drei.

von Jörg R. (solar77)


Lesenswert?

Alexander schrieb:
> Ich zähle nur drei.

Stellst du dich jetzt extra dumm an?🤔

von Nemopuk (nemopuk)


Lesenswert?

Wenn du 8 Schalter hast, kann die Anzahl der eingeschalteten Schalter 0 
bis 8 sein, da wir uns doch einig, oder?

Dezimal = Binär
===============
0 = 000
1 = 001
2 = 010
3 = 011
4 = 010
5 = 011
6 = 110
7 = 111
8 = 1000  <- da brauchst du ein Bit mehr!

von Jörg R. (solar77)


Lesenswert?

Mario M. schrieb:
> Alexander schrieb:
>> 111
>
> Sind erst sieben Einsen! Und was passiert bei der achten?


Dergute W. schrieb:
> Kannst du nicht einfach mal ein paar Ueberholverbotsschilder
> auswendig lernen?

Dann glaubt er vermutlich dass nur rote Autos nicht überholen dürfen;-)

von Nemopuk (nemopuk)


Lesenswert?

Jörg R. schrieb:
> Stellst du dich jetzt extra dumm an?

Er will mir auch nicht glauben, dass Windows versteckte Dat(ei)en auf 
Laufwerk C speichert, die man im Explorer nicht sehen kann. Obwohl sein 
eigener Screenshot das ebenso so belegt, wie meiner.
Beitrag "Re: Windows 11: Ganze Partition in Verzeichnis kopieren"

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?


von J. S. (engineer) Benutzerseite


Lesenswert?

Sn60pb38cu2 schrieb:
> mit einem 64kB Eprom als Statemachine
OhOhOh ...

Ein einfaches PLD macht das mit 10 Gattern.

von Jörg R. (solar77)


Lesenswert?

Alexander schrieb:
> https://www.youtube..

Klicke ich nicht an.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Jörg R. schrieb:
> Dann glaubt er vermutlich dass nur rote Autos nicht überholen dürfen

das Schild auch falsch verstanden, nur rote Autos dürfen links fahren, 
deswegen waren früher meine Autos immer rot.

: Bearbeitet durch User
von Klaus (feelfree)


Lesenswert?

Jörg R. schrieb:
> Alexander schrieb:
>> Ich zähle nur drei.
>
> Stellst du dich jetzt extra dumm an?🤔

Der stellt sich nicht so an, der ist wirklich so .....

von Jörg R. (solar77)


Lesenswert?

Joachim B. schrieb:
> Jörg R. schrieb:
>> Dann glaubt er vermutlich dass nur rote Autos nicht überholen dürfen
>
> das Schild auch falsch verstanden, nur rote Autos dürfen links fahren,
> deswegen waren früher meine Autos immer rot.

Meinen Kommentar nicht verstanden, aber dafür schön verstümmelt;-(

Und das du ständig links gefahren bist und den Verkehr aufgehalten hast 
musst du nicht extra betonen.

von Marci W. (marci_w)


Lesenswert?

Hallo Hippelhaxe,

Hippelhaxe schrieb:
> NEIN !
>
> <Gebetsmühle>
>
> Quine/McClusky, Karnaugh/Veitch etc. liefern minimalen
> Aufwand für zweistufige Schaltnetzwerke !

OK, kann ja sein, dass ich da nicht komplett alle Details berücksichtigt 
habe. Aber warum "Gebetsmühle"? Habe hier im Forum das Thema noch 
nirgends gesehen. Links? Also ich bitte um Vergebung! ;-)

Verstehen tu ich es dennoch nicht: Ich kann doch, wenn mir die (realen) 
Laufzeiten und damit verbundene "Fehler" egal sind, aus jeder 
kombinatorischen Aufgabe eine Wahrheitstabelle erstellen, und diese dann 
minimieren?! Wie viele Stufen das Netzwerk dann letztendlich hat, hängt 
ja von der Realisierung ab. Kannst Du mir Links zum Thema geben?

Viele Grüße

Marci

von Joachim B. (jar)


Lesenswert?

Jörg R. schrieb:
> Und das du ständig links gefahren bist und den Verkehr aufgehalten hast
> musst du nicht extra betonen.

ne Porsche o.ä. welche deutlich schneller sind habe ich immer 
vorbeigelassen, man ist ja kein Rüpel.

Heute sind deutlich mehr Verkehrserzieher unterwegs die links konstant 
130 km/h fahren.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Nemopuk schrieb:
> Wenn du 8 Schalter hast, kann die Anzahl der eingeschalteten Schalter 0
> bis 8 sein, da wir uns doch einig, oder?

Ja.

Wir wollen ja aber 8 mal 1bit zu einmal 3bit zusammenfassen. Das geht 
leider nur so.
1
1   000
2
1   001
3
1   010
4
1   011
5
1   100
6
1   101
7
1   110
8
1   111
1
8    3

von Klaus (feelfree)


Lesenswert?

Alexander schrieb:
> Nemopuk schrieb:
>> Wenn du 8 Schalter hast, kann die Anzahl der eingeschalteten Schalter 0
>> bis 8 sein, da wir uns doch einig, oder?
>
> Ja.
>
> Wir wollen ja aber 8 mal 1bit zu einmal 3bit zusammenfassen. Das geht
> leider nur so.1   000
> 1   001
> 1   010
> 1   011
> 1   100
> 1   101
> 1   110
> 1   111
> 8    3

Klaus schrieb:
> Der stellt sich nicht so an, der ist wirklich so .....

Ich korrigiere mich: der ist noch viel dümmer als ich gedacht habe.

von Alexander (alecxs)


Lesenswert?

Haltet euch bitte an die Aufgabenstellung!

von Jobst M. (jobstens-de)


Angehängte Dateien:

Lesenswert?

Klaus schrieb:
> Ich korrigiere mich: der ist noch viel dümmer als ich gedacht habe.

Ja, absolut geouted.

Für Leute mit fortgeschritten eingeschränkter Auffassungsgabe habe ich 
mal ein pdf gemacht.

Gruß
Jobst

von Nemopuk (nemopuk)


Lesenswert?

Alexander schrieb:
> Wir wollen ja aber 8 mal 1bit zu einmal 3bit zusammenfassen.

Nein, der TO will zählen, wie viele der 8 Eingänge eingeschaltet sind. 
Um das zu verstehen, muss man schon etwas mehr lesen, als nur die 
Titelzeile.

: Bearbeitet durch User
von Hippelhaxe (hippelhaxe)


Lesenswert?

Marci W. schrieb:

>> <Gebetsmühle>
>>
>> Quine/McClusky, Karnaugh/Veitch etc. liefern minimalen
>> Aufwand für zweistufige Schaltnetzwerke !
>
> OK, kann ja sein, dass ich da nicht komplett alle Details
> berücksichtigt habe. Aber warum "Gebetsmühle"?

Ein paar Beiträge weiter oben hatte ich den guten
WeKa auch schon daran erinnert, dass die üblichen
Verfahren nur bei zweistufigen Netzwerken
funktionieren...


> Also ich bitte um Vergebung! ;-)

Alles gut... war nicht böse gemeint, die "Gebetsmühle".


> Verstehen tu ich es dennoch nicht: Ich kann doch, wenn
> mir die (realen) Laufzeiten und damit verbundene
> "Fehler" egal sind, aus jeder kombinatorischen Aufgabe
> eine Wahrheitstabelle erstellen,

Natürlich, ja.

Wahrheitswertetabelle wird häufig der erste Schritt beim
Entwurf sein.


> und diese dann minimieren?!

Jein...nein: Vereinfachungen durch "Don't care", die sich
aus der Anwendung selbst ergeben, die berücksichtigt man
ja schon beim Aufstellen der WW-Tabelle.
Das ist aber nur ein (kleiner) Teil des Problems.


> Wie viele Stufen das Netzwerk dann letztendlich hat,
> hängt ja von der Realisierung ab.

Nee, umgekehrt: Für eine vernünftige Optimierung (Minimierung)
musst Du beim Entwurf schon wissen, welche Gatter Dir in der
realen Schaltung zur Verfügung stehen.

Triviales Beispiel: Du sollst irgend eine logische Funktion
mit drei Variablen realisieren; es sei bekannt, dass nur
8-auf-1-Multiplexer als Grundbausteine zur Verfügung stehen.
Dann bist Du mit dem Erfassen der WW-Tabelle bereits fertig;
weitere Optimierung unnötig: Ein 8-auf-1-Multiplexer kann
JEDE boolsche Funktion mit 3 Variablen darstellen, und es
ist immer EXAKT derselbe Aufwand notwendig...

Nichttriviales Beispiel: Gefordert wird ein 64bit-Paritäts-
prüfer.
Der Gatteraufwand hängt DRAMATISCH davon ab, welche Grund-
gatter erlaubt sind und wieviele Schaltungsstufen zulässig
sind. Überdies wird die WW-Tabelle astronomisch groß, wenn
man keine Tricks anwendet.

Als zweistufige NAND-NAND-Kombinatorik ist ein 64bit-Paritäts-
generator praktisch nicht auführbar, weil man Unmengen von
Gattern mit 64 Eingängen bräuchte.

Hat man nur XOR-Gatter mit zwei Eingängen, kommt man mit
63 Stück zum Ziel, die man zur Minimierung der Laufzeit
als Baum anordnet. Diese Baumstruktur sieht man aber
nicht aus der WW-Tabelle, das muss man WISSEN.

Hat man nur NAND mit zwei Eingängen, kommt man auch zum
Ziel, indem man erstmal ein paar NAND und Inverter zu
XOR kombiniert und dann die Baumstruktur von oben ver-
wendet. Diese kann man u.U. anschließend noch optimieren.


> Kannst Du mir Links zum Thema geben?

Leider nicht... aber frag' doch im VHDL-Unterforum...

von Hippelhaxe (hippelhaxe)


Lesenswert?

Alexander schrieb:

> Wir wollen ja aber 8 mal 1bit zu einmal 3bit zusammenfassen.

Nein. Falsch.


> Das geht leider nur so.

Nein. Falsch.

von Marci W. (marci_w)


Lesenswert?

Hippelhaxe schrieb:
> Nichttriviales Beispiel: Gefordert wird ein 64bit-Paritäts-
> prüfer.
> Der Gatteraufwand hängt DRAMATISCH davon ab, welche Grund-
> gatter erlaubt sind und wieviele Schaltungsstufen zulässig
> sind. Überdies wird die WW-Tabelle astronomisch groß, wenn
> man keine Tricks anwendet.

Da stimme ich Dir natürlich zu. Aber bei "Paritätsprüfer" denkt man ja 
sofort an XOR. Überdies würde ich bei 64 Bit gar nicht erst anfangen, 
mit einer Tabelle zu arbeiten. ;-) Wäre aber mal interessant, das ganze 
für eine realistische Anzahl von Bits, z.B. 8, mit QMC zu exerzieren. 
Ich habe das nämlich noch nie gemacht. Für die üblichen Logikschaltungen 
reichte mir immer einfache boolsche Algebra, und mit FPGAs habe ich noch 
nichts gemacht.

Ciao

Marci

von 🍅🍅 🍅. (tomate)


Lesenswert?

Marci W. schrieb:
> Überdies würde ich bei 64 Bit gar nicht erst anfangen,
> mit einer Tabelle zu arbeiten. ;-)

Wieso? 8x 8=>256x1 LUTs, Ergebnis nochmal in 8=>256x1 LUT, Parität 
fertig

: Bearbeitet durch User
von Marci W. (marci_w)


Lesenswert?

🍅🍅 🍅. schrieb:
> Wieso? 8x 8=>256x1 LUTs, Ergebnis nochmal in 8=>256x1 LUT,

???

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Angehängte Dateien:

Lesenswert?

Nach zwei Tagen immer noch nicht fertig mit Auskaspern ?!

Anbei ein Lehrbuchauszug (ISBN 0-13-082599-9) mit 'ner Implementierung 
für 32 Eingangsleitungen.

Daraus sollte man eine Variante  für acht Eingänge ableiten können.
Mit diskreten NAND/XOR/ Gattergräben macht man sowas schon seit 50 
Jahren nicht mehr, schliesslich hat die 74xxx serie (eingeführt 1966 !) 
auch Fulladder (x80) und 2Bit-adder (x82) und 4 bit adder (x83) oder 
auch 256x4bit PROM (x188).

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Nochmal die ursprüngliche Aufgabe:

"ich habe 8 Leitungen, die an oder aus sein können. Ich möchte die 
Anzahl der Leitungen wissen, die "an" sind."

Acht Leitungen können 256 Zustände einnehmen. Die darf man 
durchnummerieren von 0 bis 255 oder von 1 bis 256, es bleiben immer 256 
Zustände.

Aber von 8 Leitungen können 0 bis 8 high sein, das sind neun mögliche 
Fälle. Die gesuchte "Anzahl" lässt sich nicht mit einer 3-Bit-Zahl 
angeben, sondern muss 4 Bit haben.

Die Fragestellung der Überschrift ist also nicht lösbar.

Eine 4-Bit-Lösung wäre möglich, dazu kann man z.B. vier KV-Diagramme 
zeichnen, für jedes Bit eines.

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Bradward B. schrieb:
> Mit diskreten NAND/XOR/ Gattergräben macht man sowas schon seit 50
> Jahren nicht mehr,

Erzähl das den Programmierern des Spiels. Es geht immer noch nicht 
darum, irgendwas in der ReLität umzusetzen. Einfach nur Spielkrams....

Bradward B. schrieb:
> Nach zwei Tagen immer noch nicht fertig mit Auskaspern ?!

Ist doch schon seit 2 Tagen fertig.... Seit wann plenkst du?

Christoph db1uq K. schrieb:
> Die Fragestellung der Überschrift ist also nicht lösbar.

Wurde doch auch schon am Anfang geklärt, das es mit 3bittigem 
Volladdierer geht. Und der bringt ja praktischwerweise ein viertes Bit 
in Form des Carry Bits mit.



Aber haut euch ruhig weiter die Köppe drüber ein, ob man die LUTs besser 
FPGAt oder EPROMt, das mögen in der Raelität ja alles feine Lösungen 
sein, aufgrund mangelnder Existenz in dieser Spielwelt aber leider nicht 
umsetzbar.

von Jörg R. (solar77)


Lesenswert?

J. T. schrieb:
> Christoph db1uq K. schrieb:
>> Die Fragestellung der Überschrift ist also nicht lösbar.
>
> Wurde doch auch schon am Anfang geklärt, das es mit 3bittigem
> Volladdierer geht. Und der bringt ja praktischwerweise ein viertes Bit
> in Form des Carry Bits mit.

Du brauchst 4 Bit um binär eine 8 (die Zahl 8, nicht 8 Zustände) 
darzustellen, egal wie du es nennst.


> Erzähl das den Programmierern des Spiels. Es geht immer noch nicht
> darum, irgendwas in der ReLität umzusetzen. Einfach nur Spielkrams....

Wenn du unbedingt Logikgatter nehmen musst..bitteschön. Ich würde es 
tatsächlich mit einem uC plus Display lösen oder sogar mit einem Eprom, 
einem 4028 und LEDs bzw. einem 4511 und einem 7-Segment-Display für die 
Anzeige.

Na, du wirst uns deine Gatter-Lösung schon präsentieren, obwohl ich 
nicht glaube dass es dazu kommt.

Jedenfalls glaube ich nicht dass du hier noch große Unterstützung 
bekommst..für ein quasi Hirngespinst.

> Aber haut euch ruhig weiter die Köppe drüber ein,

Bestimmt nicht wegen dir.

PS: Dein „Plan“ im Eröffnungspost ist eine Frechheit, sowohl was das 
Gezeichnete angeht als auch die Farbgestaltung.

PS2: Außer deinem Wimmelbild und anderer Kritzeleien erkenne ich auch 
keine weitere Eigeninitiative deinerseits.

: Bearbeitet durch User
von 🍅🍅 🍅. (tomate)


Lesenswert?

Eigentlich ists ja nich so kompliziert, Wiki-Artikel mit Look-Ahead 
Adder etc lesen und verstehen.

Im Prinzip nur Adder von 8x1bit.
Letzte Stelle XOR/Parität (bit 7-0)
2. Stelle XOR/Parität  (AND(bit0-1), AND(bit3-2), AND(bit5-4), 
AND(bit7-6)), Quasi XOR/Parität  vom Übertrag/AND von je 2 bits
3. Stelle, die AND(bit0-1), AND(bit3-2), AND(bit5-4), AND(bit7-6) 
Ergebnisse nochmal paar weise verANDen und XOR/Parität davon
....etc....

: Bearbeitet durch User
von Klaus (feelfree)


Lesenswert?

Jörg R. schrieb:
> Wenn du unbedingt Logikgatter nehmen musst..bitteschön.

Dass du es auch nach zig Beiträgen nicht verstanden hast, dass er für 
seine Aufgabenstellung nichts anderes als eben Logikgatter zur Verfügung 
hat, spricht nicht gerade für dein Leseverständnis.

von Jörg R. (solar77)


Lesenswert?

Klaus schrieb:
> Jörg R. schrieb:
>> Wenn du unbedingt Logikgatter nehmen musst..bitteschön.
>
> Dass du es auch nach zig Beiträgen nicht verstanden hast, dass er für
> seine Aufgabenstellung nichts anderes als eben Logikgatter zur Verfügung
> hat, spricht nicht gerade für dein Leseverständnis.

Mir fehlt hier ein ganz anderes Verständnis.

von Klaus (feelfree)


Lesenswert?

Jörg R. schrieb:
> Mir fehlt hier ein ganz anderes Verständnis.

Offensichtlich.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Klaus schrieb:
> Jörg R. schrieb:
>> Wenn du unbedingt Logikgatter nehmen musst..bitteschön.
>
> Dass du es auch nach zig Beiträgen nicht verstanden hast, dass er für
> seine Aufgabenstellung nichts anderes als eben Logikgatter zur Verfügung
> hat, spricht nicht gerade für dein Leseverständnis.

Genau genommen wird hier vom TO nicht von "Aufgabe" sondern von "Spiel" 
geschrieben und dann sind die Gatter wohl auch eher "Spielsteine". Dann 
gehört das wohl eher in die (nichtvorhandene) Rubrik "Zocken und Gaming" 
oder in die vorhandene "Offtopic".

Und wenn Studenten aus dem Studierzimmer ins Kasino wechseln gibt es 
meistens Prügel ;-) Jedenfalls zeigt Hollywood das so: 
https://youtu.be/0CHdkyMPp_M?t=22

von Jörg R. (solar77)


Lesenswert?

Klaus schrieb:
> Jörg R. schrieb:
>> Mir fehlt hier ein ganz anderes Verständnis.
>
> Offensichtlich.

Vermutlich fehlt es dir allerdings an Leseverständnis, denn der TO macht 
nur ein Gedankenspiel. Daher spielt es überhaupt keine Rolle welche 
Chips er hat und welche nicht.

Das Vorschläge kommen die von der Vorstellung eines TO abweichen ist 
übrigens nicht verwerflich sondern normal.

von Alexander (alecxs)


Angehängte Dateien:

Lesenswert?

Es fehlt ein Bit.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Ich würde als klassischen Lösungsweg immer noch die Erstellung von vier 
KV-Diagrammen versuchen.
Dass plötzlich noch ein viertes Bit aus dem Hut gezaubert wird 
entspricht dem Nicknamen chaoskind. Wo wir sind herrscht Chaos, aber wir 
können nicht überall sein.

Dann die vier Diagramme zusammenfassen, da lässt sich sicher vieles 
wegstreichen.
Das ergibt erst mal eine einstufige Lösung, ob tatsächlich die 
mehrstufige Version einfacher wird möchte ich bezweifeln.

von Jörg R. (solar77)


Lesenswert?

Christoph db1uq K. schrieb:
> (..)
> Dass plötzlich noch ein viertes Bit aus dem Hut gezaubert wird
> entspricht dem Nicknamen chaoskind.

Das Chaos beginnt schon mit der Titelzeile, die hätte der TO auch 
sinnvoller bzw. aussagekräftiger verfassen können.

Die Titelzeile offeriert aber dass der TO sein eigenes Problem nicht 
verstanden hat.

: Bearbeitet durch User
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Angehängte Dateien:

Lesenswert?

> Die Titelzeile offeriert aber dass der TO sein eigenes Problem nicht
> verstanden hat.

"Sei helle, mach Tabelle" (siehe Anhang aus WP)

Mit der simplen Darstellung der zugrundeliegenden Regel von Conway's 
Game of Life in einer Tabelle wird sofort klar, das hier 9 Fälle 
durchzunummieren sind und damit ein dreistellige Binär-Index (n = 2³ = 
8) nicht ausreichend ist.

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

> Conway's Game
Was hat das jetzt mit der Aufgabe zu tun?
https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens
ist das gemeint?

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Christoph db1uq K. schrieb:
>> Conway's Game
> Was hat das jetzt mit der Aufgabe zu tun?
> https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens
> ist das gemeint?

Ja, das schreibt der der TO in 
Beitrag "Re: 8 mal 1bit zu einmal 3bit zusammenfassen". 
OK, ist wahrscheinlich nicht das Einzige "Game of Life" - aber aus dem 
Context eine schlüssige Intepretation.

Acht Leitungen - acht Nachbarn; entweder an oder aus - Nachbarzelle lebt 
oder lebt nicht. Anzahl der Nachbarzellen bestimmt Zustand im nächsten 
Zyklus (tot oder lebendig). Hm, zu meinen Studentenzeiten war 
"Zellulärer Automat" resp. "Systolisches array" beliebtes Modell resp. 
Studienobjekt.

Das war "Standard" wie das Schbrettproblem oder "Türme von Hanoi"
* https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life#Notable_programs
* https://de.wikipedia.org/wiki/T%C3%BCrme_von_Hanoi
* https://de.wikipedia.org/wiki/Zellul%C3%A4rer_Automat
* https://en.wikipedia.org/wiki/Systolic_array#Detailed_description
* https://en.wikipedia.org/wiki/Swarm_behaviour

Kommt sicher auch wieder als Hype wenn es um AI ruhiger geworden ist, 
siehe auch Schwarm-technologie.


Erinnert mich an folgendes Dialog-snippet:

"Warum kann ein Informatiker kein Zehn-Finger Schreibsystem?" - 
Schulterzuck
"Weil er nur neun Finger hat!" - "Wieso das?"
Na er zählt seine Finger so ab: (Zeigt mit den Händen) : Kleiner Finger 
Links - 0, Ringfinger links - 1, Mittelfinger links - 2, ..." ;-)

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Von Conways Game of life habe ich zuerst in "Der gute Kamerad: Ein 
Jahrbuch für Jungen. Band 72" (1964) gelesen, also lange vor der 
Heimcomputerzeit.
https://www.zvab.com/gute-Kamerad-Jahrbuch-Jungen-Band-72/30784785947/bd
Mit Foto von Conway, wenn ich noch recht weiß. Ich finde es nicht mehr, 
das hat wohl jemand mal entsorgt. "Das neue Universum" aus zwei Jahren 
habe ich noch.
Die Bücher hat anscheinend noch niemand eingescannt.

https://conwaylife.com/
eine Website, dem Spiel gewidmet, mit Literatur (494 Seiten) als PDF und 
einer Lifeversion im Browser.

: Bearbeitet durch User
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

Christoph db1uq K. schrieb:
> Von Conways Game of life habe ich zuerst in "Der gute Kamerad: Ein
> Jahrbuch für Jungen. Band 72" (1964) gelesen, also lange vor der
> Heimcomputerzeit.


Hm, aus den Sechszigern sind mir eher Bücher über Radiobau und so 
untergekommen, auch Raumfahrt, Computer(-kunst) und mathematische 
Spielereien war IMHO in den Achtzigern groß, da gabs wohl Sonderhefte in 
"Spektrum der Wissenschaft". Und es sei an dieser Stelle an den 
Spiegel-Bestseller von 1985 "Gödel, Escher, Bach" erinnert, da dreht 
sich alles um Zelluläre Automaten und ähnliche 
Mathematik-/Logik-"spiele".

https://de.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach

von Helmut H. (helmuth)


Angehängte Dateien:

Lesenswert?

Bradward B. schrieb:
> Mit der simplen Darstellung der zugrundeliegenden Regel von Conway's
> Game of Life in einer Tabelle wird sofort klar, das hier 9 Fälle
> durchzunummieren sind und damit ein dreistellige Binär-Index (n = 2³ =
> 8) nicht ausreichend ist.

So?
TO wollte aber nicht nur Originalregeln.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

> So?
> TO wollte aber nicht nur Originalregeln.

Hm, also sequentiel hat er nicht erwähnt, nur (reine) Kombinatorik, 
keine FF oder sonstige Speicherelemente in der Summierung. In dem 
"Schaltplan" des TO sieht man nur Logik, keine Taktung.

von Alexander (alecxs)


Lesenswert?

Bradward B. schrieb:
> "Warum kann ein Informatiker kein Zehn-Finger Schreibsystem?"

Er hat es nur mit 10 Zeigefingern gelernt.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Angehängte Dateien:

Lesenswert?

BTW, in https://www.mikrocontroller.net/attachment/677622/Acht2.png 
sollte man m.E. den Eingang 'z' mit "Carry_in" bezeichnen. Da ja schon 
am Ausgang ein C für Carry_out" vorkommt und nicht S[umme](0) und 
S[umme](1).

Mathematisch gesehen ist es wurscht aber schaltungstechnisch hat man für 
Carry-lines gerne eigene routing sourcen weil das eben oft der längste 
und damit der kritische Pfad ist.

> Er hat es nur mit 10 Zeigefingern gelernt.

Hehe, b10 -> da muss ich gleich mal Robert J. Widlar zitieren (siehe 
Anhang) (auch wenns bei dem der Mittelfinger ist, der zählt ;-))

von Yalu X. (yalu) (Moderator)


Lesenswert?

Tilo R. schrieb:
> Der 2. Gedanke: ein grundsätzliches Hilfsmittel für solche Logik-Fragen
> ist das https://de.wikipedia.org/wiki/Karnaugh-Veitch-Diagramm.

Christoph db1uq K. schrieb:
> Ich würde als klassischen Lösungsweg immer noch die Erstellung von vier
> KV-Diagrammen versuchen.

Macht mal, das möchte ich sehen ;-)

Mal abgesehen davon, dass die KV-Diagramme für sich gesehen noch nicht
zu einer einfachen Lösung führen (s. Beiträge von Hippelhaxe), ist ein
16×16-KV-Diagramm wohl kaum fehlerfrei aufzustellen und auszuwerten.

Ein 2×2-Diagramm (mit 2 Signalen) ist easy-peasy, bei einem 4×4-Diagramm
(4 Signale) muss man schon etwas tricksen, geht aber noch problemlos.
Bei 8×8 (6 Signale) wird es schon sehr unübersichtlich, da die Bereiche
von 2 der 6 Signale nicht mehr zusammenhängend (auch nicht über die
Ränder des Diagramms hinweg) sind.

Bei 16×16 (8 Signale) belegen die beiden neu hinzugekommenen Signale
sogar jeweils 4 nicht zusammenhängende Bereiche. Da fällt es extrem
schwer, Gruppen von Einsen zusammenzufassen.

Warte, es geht vielleicht doch:

Man muss das Diagramm ja nicht unbedingt auf ein zweidimensionales
Papier zeichnen. Zeichnet man es stattdessen im vierdimensionalen Raum
als 4×4×4×4-Würfel, geht die Auswertung fast so leicht wie bei 4
Signalen im 4×4-Quadrat. Noch leichter geht es, wenn man das Diagramm
auf die (vierdimensionale) Oberfläche eines fünfdimensionalen Torus
zeichnet, weil dann die Bereiche für jedes Signal wirklich
zusammenhängend sind und nicht wie beim 4×4×4×4-Würfel oder beim
4×4-Quadrat über die Ränder fortgesetzt werden müssen.

Ich muss mal schauen, ob es inzwischen für meinen 3D-Drucker ein
Erweiterungsmodul für eine oder zwei zusätzliche Dimensionen gibt.
Oder ich besorge mir gleich eine 8D-Drucker, denn dann hat das
KV-Diagramm nur noch 2 Felder pro Dimension, so dass sogar blutige
KV-Anfänger damit zurechtkommen.

Falls ich fündig werden, werde ich das Ergebnis hier posten.

In der Zwischenzeit könnt ihr auch schon mal am zweidimensionalen
Diagramm die Zähne ausbeißen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Gibt's denn keine Vereinfachen aufgrund der Symmetrie?  Man kann die 
Eingangswerte ja beliebig permutieren, ohne dass sich das Ergebnis 
ändert.

Zum Beispiel:

Bit0 = XOR (x0, ..., x7)
Bit3 = AND (x0, ..., x7)

: Bearbeitet durch User
von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Angehängte Dateien:

Lesenswert?

> Mal abgesehen davon, dass die KV-Diagramme für sich gesehen noch nicht
> zu einer einfachen Lösung führen (s. Beiträge von Hippelhaxe), ist ein
> 16×16-KV-Diagramm wohl kaum fehlerfrei aufzustellen und auszuwerten.

Excel? https://www.excelvorlage.de/karnaugh-diagramm/

Und fürs LSb und MSb der Summe ist es reichlich einfach, MSB ist ein AND 
über alles (also 8 Eingängen) und Lsb ist ein Parity (XOR-Kaskade) über 
alles.

Gibt auch fertige Programme:
https://sevcikdaniel.github.io/karnaugh-studio/index.html
oder man schreibt sich was  in python.

Anbei mal ein Karnough für eine andere Funktion mit fanin von acht, so 
gross ist das nicht.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Johann L. schrieb:
> Gibt's denn keine Vereinfachen aufgrund der Symmetrie?  Man kann die
> Eingangswerte ja beliebig permutieren, ohne dass sich das Ergebnis
> ändert.

Hmm, Symmetrie, Permutationen ...

da könnte vielleicht ein Mathematiker weiterhelfen ;-)

von Hippelhaxe (hippelhaxe)


Lesenswert?

Marci W. schrieb:

> Aber bei "Paritätsprüfer" denkt man ja sofort an XOR.

Ist ja mathematisch auch richtig -- aber es kann halt
sein, dass das technisch nicht 1:1 umsetzbar ist.

Wenn man aus irgendwelchen Gründen gezwungen sein sollte,
den Paritätsgenerator mit einem PAL oder GAL umzusetzen,
dann ist dadurch die zweistufige AND-OR-Logik schon fest
vorgegeben...


> Überdies würde ich bei 64 Bit gar nicht erst anfangen,
> mit einer Tabelle zu arbeiten. ;-)

Das sagt sich leicht.
Ausreichend große Systeme will man nur mit Unterstützung
durch den Computer entwickeln -- und wie teilst Du dem
Computer mit, welches Soll-Verhalten Du von der Schaltung
forderst? In den meisten Fällen wird das wohl eine Art
Wahrheitswertetabelle sein müssen...
Der Paritätsgenerator ist da die Ausnahme von der Regel,
bei dem kann man die boolesche Gleichung direkt hin-
schreiben -- aber das geht halt nur selten.


> Wäre aber mal interessant, das ganze für eine realistische
> Anzahl von Bits, z.B. 8, mit QMC zu exerzieren.

Unbedingt.
Man erkennt erst bei der Handrechnung, wo die Problempunkte
beim Logikentwurf liegen.


> Ich habe das nämlich noch nie gemacht.

Na dann los :)
Erwähnte ich schon, dass ich den Plan für einen Sieben-
Segment-Decoder gebrauchen könnte, der A-F korrekt
decodiert und anzeigt? :o)

von Hippelhaxe (hippelhaxe)


Lesenswert?

🍅🍅 🍅. schrieb:

> Marci W. schrieb:
>> Überdies würde ich bei 64 Bit gar nicht erst anfangen,
>> mit einer Tabelle zu arbeiten. ;-)
>
> Wieso?

Weil die Tabelle zwei Milliarden Zeilen hat.


> 8x 8=>256x1 LUTs, Ergebnis nochmal in 8=>256x1 LUT,
> Parität fertig

Das sind neun (gleichartige) Tabellen, nicht eine ...

von 🍅🍅 🍅. (tomate)


Lesenswert?

Hippelhaxe schrieb:
> Weil die Tabelle zwei Milliarden Zeilen hat.

64bit sind irgendwas 10^19 Zeilen, bisschen mehr als 2Mia.
Läuft aber alles auf even/odd parity raus, also 2^64=>2^1, nur die 
Anzahl 0/1 sind interessant, Position und Verteilung egal, daher kannst 
quasi beliebig in kleinere LUTs aufteilen.
Wenns eine 2^64=>2^64 Funktion wäre, wärs nicht möglich, mit auf 
kleinere LUTs aufbrechen, wenn quasi jede 2^64 Adresse ihren rein 
zufälligen 0/1 Wert hätte.

: Bearbeitet durch User
von Hippelhaxe (hippelhaxe)


Lesenswert?

Christoph db1uq K. schrieb:

> Ich würde als klassischen Lösungsweg immer noch die
> Erstellung von vier KV-Diagrammen versuchen.

Viel Spaß :-)

Die Arbeit kannst Du Dir aber weitgehend sparen.
Mehreren Leuten sind nämlich bereits folgende
Dinge aufgefallen:

1.
Das höchstwertige Ergebnis-Bit wird dann und nur
dann "1", wenn ALLE acht Eingangsbits gesetzt sind.
Das zugehörige KV-Diagramm ist fast leer -- bis auf
diese eine einzige "1".
Die Umsetzung in eine Gatterschaltung ist trivial --
das ist ein AND-Gatter mit acht Eingängen. Fertig.

2.
Das niederwertigste Ergebnis-Bit entspricht gerade
der Parität des Eingangsvektors; das ist als Formel
((((((E0 xor E1) xor E2) xor... )
Die zugehörige KV-Tafel enthält ein Schachbrettmuster,
d.h. 128 isolierte Einsen. Nix mit zusammenfassen.
Die Gatterschaltung benötigt neben ein paar Invertern
und OR-Gattern 128 AND-Gatter.

Bit0 und Bit3 vom Ergebnis sind damit erledigt; nur
die KV-Tafeln für Bit1 und Bit2 müssten jetzt noch
gezeichnet werden.


> Dann die vier Diagramme zusammenfassen, da lässt
> sich sicher vieles wegstreichen.

Unwahrscheinlich.

Ergebnis-Bit0 muss gesetzt werden, wenn der Eingangs-
vektor 1, 3, 5, oder 7 Einsen enthält.

Ergebnis-Bit1 muss gesetzt werden, wenn der Eingangs-
vektor 2, 3, 6 oder 7 Einsen enthält. Vektoren mit
zwei Einsen gibt es 28 verschiedene; 8-stellige
Vektoren mit sechs Einsen sind gerade Vektoren mit
zwei Nullen, also gibt es davon auch 28, zusammen
also 56.
"2" und "6" sind gerade Zahlen, also wird -- anders
als bei "3" und "7" -- das Ergebnis-Bit0 NICHT
auf "1" gesetzt.
Es handelt sich somit um Eingangsvektoren, die NICHT
mit solchen identisch sein können, die für Ergebnis-Bit0
schon betrachtet wurden. Die 56 AND-Gatter sind somit
zusätzlich notwendig.

Auf Ergebnis-Bit2 habe ich jetzt keine Lust mehr.

...

Hmm. Ich denke, ich bin gerade dabei, eine 256x4-LUT
zu erfinden. JUHUUU!
In der AND-Stufe werden alle 256 möglichen Eingangs-
belegungen ausdecodiert; in den OR-Stufen werden die
Ausgangs-Bitmuster für jede Belegung definiert.


> Das ergibt erst mal eine einstufige Lösung, ob
> tatsächlich die mehrstufige Version einfacher wird
> möchte ich bezweifeln.

Ich bin sehr sicher, dass die einfacher wird.

von Hippelhaxe (hippelhaxe)


Lesenswert?

🍅🍅 🍅. schrieb:

> Hippelhaxe schrieb:
>> Weil die Tabelle zwei Milliarden Zeilen hat.
>
> 64bit sind irgendwas 10^19 Zeilen, bisschen
> mehr als 2Mia.

Mea culpa.
Ich war gedanklich bei 32bit... es sind also
4 Trillionen Zeilen.


> Läuft aber alles auf even/odd parity raus, also
> 2^64=>2^1, nur die Anzahl 0/1 sind interessant,
> Position und Verteilung egal, daher kannst
> quasi beliebig in kleinere LUTs aufteilen.

Sachlich richtig -- für meine Unterhaltung mit Marci
nicht relevant.

von Michael H. (mha1)


Lesenswert?

Dafür gibt es etwas in der 74er Reihe: 74HC148 und im Datenblatt sieht 
man die Schaltung dazu. Hätte nicht gedacht, dass man den noch kaufen 
kann. Aber Mouser hat die am Lager.

Sonst einen einfachen MCU.

von Hippelhaxe (hippelhaxe)


Lesenswert?

Johann L. schrieb:

> Gibt's denn keine Vereinfachen aufgrund der Symmetrie?

Doch, klar.

Wenn ein Teilvektor Gewicht A hat und der Rest Gewicht B,
dann hat der ganze Vektor Gewicht (A+B).
Wie heißt das? Linearität?

Führt jedenfalls auf eine Art Baumstruktur.

Nebenbei bemerkt: Der Vorschlag von (u.a.) Yalu ist schon
die vereinfachte Variante... :)

von Jobst M. (jobstens-de)


Lesenswert?

Hippelhaxe schrieb:
> Mea culpa.
> Ich war gedanklich bei 32bit... es sind also
> 4 Trillionen Zeilen.

Auch falsch.
Und die 2 Mrd waren auch falsch - das wären 31 Bit.
Nun bist Du bei 62 Bit.

Dabei ist es so einfach:
Jede 10 Bit sind 1k (1024)

60 Bit also 1k^6 ((2^10)^6)
4 Bit sind 16 (2^4)

Also 16 * 1k^6 - sind 16 Trillionen bzw. 16 Exa


Gruß
Jobst

von Hippelhaxe (hippelhaxe)


Lesenswert?

Jobst M. schrieb:

> Hippelhaxe schrieb:
>> Mea culpa.
>> Ich war gedanklich bei 32bit... es sind also
>> 4 Trillionen Zeilen.
>
> Auch falsch.

Nicht "auch".
Die 4 Trillionen sind falsch. Punkt.


> Und die 2 Mrd waren auch falsch - das wären 31 Bit.

Nein, die 2Mrd sind richtig, und 31Bit sind auch
richtig.
Es müssen nämlich nur die Minterme mit ungerader
Parität erkannt werden -- das ist genau die Hälfte.
Bei 32bit Wortlänge also 2 Mrd.


> Nun bist Du bei 62 Bit.

Sehr guter Einwand. Danke.
Es sind also 8 Trillionen. Die anderen 8 Trillionen
mit gerader Parität sind nicht relevant.


> Dabei ist es so einfach:

Wohl doch nicht ganz...

: Bearbeitet durch User
von Jobst M. (jobstens-de)


Lesenswert?

Hippelhaxe schrieb:
> 31Bit sind auch richtig.

Dann passt aber dies nicht:

Hippelhaxe schrieb:
> Ich war gedanklich bei 32bit

Gute Nacht!
Jobst

von Hippelhaxe (hippelhaxe)


Lesenswert?

Jobst M. schrieb:

> Hippelhaxe schrieb:
>> 31Bit sind auch richtig.
>
> Dann passt aber dies nicht:
>
> Hippelhaxe schrieb:
>> Ich war gedanklich bei 32bit

Kruzitür ...

31bit ist nicht richtig.
2Mrd ist aber richtig.
32bit ist auch richtig.

Die Eingangsvektoren sind 32bit lang; da aber nur jeder
zweite erkannt werden muss (=ungerade Parität), ergeben
sich trotz der 32bit Vektorlänge nur 2Mrd Zeilen in
der WW-Tabelle.


Weitere Einwände? :o)


> Gute Nacht!

Gleichfalls.

von Bradward B. (Firma: Starfleet) (ltjg_boimler)


Lesenswert?

> Das sind neun (gleichartige) Tabellen, nicht eine ...
Es sind vier LUTs a 8 Input und 1 output die man hier braucht,

Acht Leitungen gehen rein, vier gehen raus. Für ner Achter-LUT braucht 
man 2⁸ Speicherstellen also 256 bit, das wurde oben schon mehrmals 
vorgerechnet.

Auf einem Blatt A4 kariert mit genormten 210x297 mm sind bei einem 5 mm 
Raster grob überschlagen (20cm*30cm*4❌ pro cm²) 2400 Kästchen, da kriegt 
man die 4 LUT's locker auf ein Blatt. BTDT

Aber für die Optimierung (von bspw. 32 bit) braucht man nicht unbeding 
die vollen Tabellen, dafür gibt es den Quine McClusky- Algo.
Der ist mit ner Handvoll Codelines runtergeschrieben: 
https://en.wikipedia.org/wiki/Quine%E2%80%93McCluskey_algorithm#Algorithm 
Das geht schneller als 2d lang in einem Internetforum darüber zu 
debattieren.

Marci W. schrieb:

> Aber bei "Paritätsprüfer" denkt man ja sofort an XOR.

> Ist ja mathematisch auch richtig -- aber es kann halt
> sein, dass das technisch nicht 1:1 umsetzbar ist.

> Wenn man aus irgendwelchen Gründen gezwungen sein sollte,
> den Paritätsgenerator mit einem PAL oder GAL umzusetzen,
> dann ist dadurch die zweistufige AND-OR-Logik schon fest
> vorgegeben
in einem PLA sind aber  die AND recht breit, meint die haben viele 
Inputs bspw. 13, das MSb wäre also mit einer Zeile erschlagen.

(siehe Blockbild AMD 22V10 -> 
https://en.wikipedia.org/wiki/Programmable_Array_Logic#/media/File:22V10_Block_Diagram.jpg)

Aber ja, XOR ist was besonders, das ist nicht gut optimierbar (wegen der 
"diagonal Patterns of '1's in the Karnaugh map") da ist es praktisch ein 
paar davon (bspw 74x84 -> 4xXOR2) diskret  vor dem PLA zu setzen. Oder 
man bricht die parallele Komplexität mit einer kleinen statemachine und 
Muxing des Eingangsvectors auf. Oder eben Fulladder mit schnellen 
Carry-lines. Oder schieberegister mit hochsynthetisierten Clock. da gibt 
es schon seit Jahrzehnten AppNotes dazu: 
https://www.cs.york.ac.uk/rts/docs/Xilinx-datasource-2003-q1/appnotes/xapp220.pdf
Und wie gesagt, die hier erforderlichen kleinen PROM's für Lookuptables 
gibt es bereits in der 74xxx Serie als gering integriert. Bei 16 input 
Leitungen ist dann eben ein 64 kb ROM, das war schon beim C64 vor 40 
Jahren kein Problem. Und parity macht ein UART-Chip wie der uralte 16550 
nebenher bitweise. Da das parity am schluss gesendet wird ist die 
zyklenweise Berechnung auch kein Problem.


> aber es kann halt
> sein, dass das technisch nicht 1:1 umsetzbar ist.

Ja, klar wenn man sich unbedingt ins Knie schiessen will, bitte! Aber 
man sollte nicht erwarten, das ein Anderer die Pistole hält und die 
Verantwortung dafür übernimmt. Man verwendet die Technik, die sinnvoll 
ist, da muss man sich eben durchsetzen - "So kann ich nicht arbeiten".

: Bearbeitet durch User
von J. T. (chaoskind)


Lesenswert?

Jörg R. schrieb:
> Vermutlich fehlt es dir allerdings an Leseverständnis, denn der TO macht
> nur ein Gedankenspiel. Daher spielt es überhaupt keine Rolle welche
> Chips er hat und welche nicht.

Immer noch nicht verstanden? Es ist ein "Problem" aus einer virtuellen 
Welt. Und diese Welt gibt halt vor, welche Chips ich habe.

Das Problem war ja auch schon gelöst, als ich die Frage stellte, denn 
die Frage war ja "geht es mit weniger Gattern?" und nicht "wie kann ich 
das Problem überhaupt lösen?".

Jörg R. schrieb:
> Die Titelzeile offeriert aber dass der TO sein eigenes Problem nicht
> verstanden hat.

Das eigene Problem war nicht nur verstanden, es war sogar gelöst. Und es 
wurde nun auchehrfach erklärt, das die "3er Verwirrung" vom Carrybit 
kam...

Bradward B. schrieb:
> In dem "Schaltplan" des TO sieht man nur Logik, keine Taktung.

Die Taktung findet an anderer Stelle statt. Die Auswertung, wie viele 
Nachbarzellen lebendig/tot sind, ist ja nur ein Teil einer Game of Life 
Zelle.

Christoph db1uq K. schrieb:
> Was hat das jetzt mit der Aufgabe zu tun?

Weil die (selbstegestellte) "Aufgabe" lautet: Baue eine Zelle des Game 
of Life aus Logikgattern und vervielfältige sie zu einem Spielfeld.

von Sean G. (atmega318)


Lesenswert?

> Weil die (selbstegestellte) "Aufgabe" lautet: Baue eine Zelle des Game
> of Life aus Logikgattern und vervielfältige sie zu einem Spielfeld.

Analog wäre auch interessant. Mit 2 Komparatoren (VCC * 3/8 und VCC * 
2/8) müsste man eigentlich eine Zelle auswerten können, indem man die 
umliegenden Zellen über Widerstände verbindet.

von J. T. (chaoskind)


Lesenswert?

Sean G. schrieb:
> Analog wäre auch interessant.

Sicher, aber diese virtuelle Spielwelt stellt nur an und aus als Pegel 
zur Verfügung.

Und hinterm Komp wärs ja auch irgendwie wieder digital.
Dann lieber mit OpAmps die Zellen aufaddieren.

Wie gesagt, in der echten Welt sind die Möglichkeiten sicher vielfältig, 
in dieser speziellen simulierten Welt geht das alles aber nicht....

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Michael H. schrieb:
> 74HC148

An Prioritätsdencoder hatte ich auch gedacht, aber die zählen nicht die

J. T. schrieb:
> Anzahl der Leitungen, die "an" sind

sondern geben nur die höchstwertige Position an.

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Hier das ganze auf einem AT89C2051 in Assembler:
1
        mov     dptr, #table
2
main:
3
        mov     a, p1
4
        movc    a, @a+dptr
5
        mov     p3, a
6
        jmp     main
7
table:
8
        val     set 0
9
rept    256
10
        sum     set 0
11
        bval    set val
12
rept    8
13
        sum     set sum + (bval and 1)
14
        bval    set bval shr 1
15
endm
16
        db      sum
17
        val     set val + 1
18
endm
19
end

von J. T. (chaoskind)


Lesenswert?

Peter D. schrieb:
> Hier das ganze auf einem AT89C2051 in Assembler:

Vielen Dank für deine (hier vergebliche) Mühe. Aber in der simulierten 
Welt in der ich mich mit dem Problem befasste, müsstest du dir deinen 
AT89C2051 auch ersteinmal aus einzelnen Gattern erstellen.

Und das Programm müsstest du per Hand direkt in den Speicher des selbst 
erstellten uCs einklicken. Du könntest den Speicher abweichend vom 
Original natürlich auch als Festwertspeicher ausführen :D

von Peter D. (peda)


Lesenswert?

Ich wollte nur mal probieren, ob man direkt im Quelltext eine Tabelle 
erzeugen lassen kann.
Ich wollte erst einen AVR nehmen, der kennt aber keine Repeat-Macros. 
Und in C gibt es das auch nicht.
Man kann es wohl nur ganz von hinten durch die Brust ins Auge, z.B. über 
Excel ein Include-File erzeugen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Peter D. schrieb:
> Ich wollte erst einen AVR nehmen, der kennt aber keine Repeat-Macros.

Natürlich kennt ein AVR keine Makros.  Der richtige AVR-Assembler (GNU) 
aber schon!

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Peter D. schrieb:

> Ich wollte erst einen AVR nehmen, der kennt aber keine Repeat-Macros.

Kann man ihm schon beibringen, allerdings nicht für unbegrenzte N (die 
maximale Rekursionstiefe der Macro-Engine begrenzt das).

Und bei höheren N dauert so ein Assemblerlauf dann auch schnell mal ein 
paar Minuten, selbst wenn der Body des Repeats noch leer ist.

Da muss man sich erst mal dran gewöhnen...

Die Gewohnheit des Normalfalls ist ja, dass die Übersetzung durch den 
Assembler nach menschlichem Zeitempfinden nahezu instantan erfolgt. 
Deswegen glaubt man zunächst, dass der Assembler abgestürzt wäre.

von Hippelhaxe (hippelhaxe)


Lesenswert?

Peter D. schrieb:

> Ich wollte nur mal probieren, ob man direkt im Quelltext
> eine Tabelle erzeugen lassen kann.

Gerade "popcount" (=Hamming-Gewicht) geht recht elegant ohne
Tabelle.

https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel

von Jobst M. (jobstens-de)


Lesenswert?

Hippelhaxe schrieb:
> Weitere Einwände? :o)

Nö ;-)

J. T. schrieb:
> in der simulierten
> Welt in der ich mich mit dem Problem befasste

Zu welchem Zeitpunkt (in unserer Welt) wurde eigentlich gar keine Lösung 
mehr gesucht?


Gruß
Jobst

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ob S. schrieb:
> Peter D. schrieb:
>
>> Ich wollte erst einen AVR nehmen, der kennt aber keine Repeat-Macros.
>
> Kann man ihm schon beibringen, allerdings nicht für unbegrenzte N (die
> maximale Rekursionstiefe der Macro-Engine begrenzt das).

Rekursives .macro ist eine Möglichkeit, geht aber auch anders:
1
#define B(b) (1 & \x >> b)
2
3
.macro popcount x
4
    .byte B(0) + B(1) + B(2) + B(3) + B(4) + B(5) + B(6) + B(7)
5
.endm
6
7
.text
8
.global look
9
.type look,"object"
10
look:
11
    ..N = 0
12
    .rept 0x100
13
        popcount ..N
14
        ..N = 1 + ..N
15
    .endr
16
.size look, . - look
1
$ avr-gcc -c popcount.sx && avr-objdump -d popcount.o
2
3
Disassembly of section .text:
4
5
00000000 <look>:
6
   0:  00 01 01 02 01 02 02 03 01 02 02 03 02 03 03 04     ................
7
  10:  01 02 02 03 02 03 03 04 02 03 03 04 03 04 04 05     ................
8
  20:  01 02 02 03 02 03 03 04 02 03 03 04 03 04 04 05     ................
9
  30:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
10
  40:  01 02 02 03 02 03 03 04 02 03 03 04 03 04 04 05     ................
11
  50:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
12
  60:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
13
  70:  03 04 04 05 04 05 05 06 04 05 05 06 05 06 06 07     ................
14
  80:  01 02 02 03 02 03 03 04 02 03 03 04 03 04 04 05     ................
15
  90:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
16
  a0:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
17
  b0:  03 04 04 05 04 05 05 06 04 05 05 06 05 06 06 07     ................
18
  c0:  02 03 03 04 03 04 04 05 03 04 04 05 04 05 05 06     ................
19
  d0:  03 04 04 05 04 05 05 06 04 05 05 06 05 06 06 07     ................
20
  e0:  03 04 04 05 04 05 05 06 04 05 05 06 05 06 06 07     ................
21
  f0:  04 05 05 06 05 06 06 07 05 06 06 07 06 07 07 08     ................

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.