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?
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
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.
Sn60pb38cu2 schrieb: > mit einem 64kB Eprom als Statemachine Guter Tipp. Er braucht allerdings nur 8 Eingänge, nicht 16.
Bei 9 Bit kann man gleich ein ausgangsbit mit der entscheidung belegen. Ich würde das eher als Lookup bezeichnen.
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
> 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.
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
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
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. ;-)
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
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
Sn60pb38cu2 schrieb: > mit einem 64kB Eprom als Statemachine Bei acht Leitungen? Das sollte doch wohl sparsamer gehen. ;-)
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.
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
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.
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
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.
Norbert schrieb: > Meinst du evtl Meinst du evtl, du könntest nen eigenen Thread aufmachen, wenn du das besprechen möchtest?
:
Bearbeitet durch User
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.
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....
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
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
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.
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.
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?
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....
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
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 :)
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...
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
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...
Dergute W. schrieb: > [EDIT: ups, nee mein geistiges Auge hat sich verguckt, > das stimmt so nicht.] Wieso nicht?
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
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
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
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
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.
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
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.
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
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
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?
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.
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.
Michael B. schrieb: > keine Ahnung wie viele > weitere Chips. die auch alle nicht in die Simulation zu bekommen sind...
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
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.
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....
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.
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
Wenn es ein Spiel ist dann bist Du ein Cheater, hier nach der Lösung fragen ist wie Kreuzworträtsel mit googlen.
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
🍅🍅 🍅. 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.
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
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...
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
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.
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
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
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.
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.
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!
Und für die Dezimalzahl 8 brauchst du im Dualsystem wie viele Stellen?
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.
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
Kannst du nicht einfach mal ein paar Ueberholverbotsschilder auswendig lernen?
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!
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;-)
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
Sn60pb38cu2 schrieb: > mit einem 64kB Eprom als Statemachine OhOhOh ... Ein einfaches PLD macht das mit 10 Gattern.
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
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 .....
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.
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
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
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 |
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.
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
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
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...
Alexander schrieb: > Wir wollen ja aber 8 mal 1bit zu einmal 3bit zusammenfassen. Nein. Falsch. > Das geht leider nur so. Nein. Falsch.
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
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
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).
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
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.
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
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
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.
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.
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
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.
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.
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
> 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
> Conway's Game Was hat das jetzt mit der Aufgabe zu tun? https://de.wikipedia.org/wiki/Conways_Spiel_des_Lebens ist das gemeint?
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 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
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
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.
> 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.
Bradward B. schrieb: > "Warum kann ein Informatiker kein Zehn-Finger Schreibsystem?" Er hat es nur mit 10 Zeigefingern gelernt.
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 ;-))
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.
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
> 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.
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 ;-)
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)
🍅🍅 🍅. 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 ...
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
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.
🍅🍅 🍅. 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.
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.
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... :)
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
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
Hippelhaxe schrieb: > 31Bit sind auch richtig. Dann passt aber dies nicht: Hippelhaxe schrieb: > Ich war gedanklich bei 32bit Gute Nacht! Jobst
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.
> 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
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.
> 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.
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
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.
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 |
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
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.
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
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.
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.