Guten Tag! Leider habe ich nicht die Erfahrung, die ich zum Lösen meines Problems brauchen würde, noch kann ich mit der boolschen Algebra rechnen. Also: Ich habe eine Schaltung mit drei sich zeitlich ändernden Digitalsignalen. Nennen wir sie X, Y und Z. Links X, in der Mitte Y und rechts Z. X und Z können nie gemeinsam auftreten, also entweder X=1 oder Z=1 oder beide Null. Y und Z können ebensowenig gemeinsam auftreten. Y kann entweder alleine sein oder in Verbindung mit X auftreten. X bedingt automatisch Y, aber nicht umgekehrt. Nun sollen aus diesen Signalen zwei weitere erzeugt werden, nämlich L und R, also Links und Rechts. Wenn diese einige Zeit einwirken, so kann sich der Zustand von X,Y,Z nämlich ändern. Die Zeit, die eine Zustandsänderung braucht, ist nicht vorhersehbar. Hier die Vollständigen Änderungen von (x,y,z) unter Einwirkung von R (Rechts). (1,1,0): Die am meisten Linke Position. (0,1,0): Nach Einwirkung von R (0,0,0): Wieder etwas später unter R-Einfluss (0,0,1): Die am meisten rechte Position Mit L geht das analog, also (0,0,1)->(0,0,0)->(0,1,0)->(1,1,0) Hier sieht man auch schön die möglichen Zustände von X, Y und Z. Es sollen per Definition keine Anderen als diese vier Zustände möglich sein. So weit so gut und überschaubar. Jetzt die Problematik: Nach Einschalten kann (x,y,z) jeden möglichen Wert aus diesen vier Zuständen annehmen. Ziel der gesuchten Schaltung ist es nun aus diesem "zufälligem" Startwert, die Signale L und R so zu generieren, daß der Endzustand "möglichst weit rechts", also (0,0,1), erreicht wird. Eigentlich auch noch leicht. Allerdings sind folgende geforderte Klippen zu umschiffen: 1.) Beim Startzustand (0,0,0) soll nichts getan werden. 2.) Beim "zweitmöglich linkem Zustand" (0,1,0) soll erst das Signal L bis zum Erreichen des Zustandes (1,1,0) generiert werden. Erst dann soll wie bei einem Startzustand (1,1,0) nach rechts bis zum gewünschten Endzustand (0,0,1) gefahren werden. Problem: Irgendwie muss ich mir ja merken, daß das Signal L schon ausgeführt wurde, wenn der Übergang von (1,1,0) -> (0,1,0) beim "rechtsfahren" erreicht wird. Sonst würde ich mich ja immer in einer Pendelbewegung zwischen Zustand [R: (1,1,0) -> (0,1,0)] und Zustand [L: (0,1,0) -> (1,1,0)] bewegen und der Endzustand (0,0,1) wird nie erreicht. Das ganze soll ohne Verwendung programmierbarer Bauteile wie einem uC oder einem uP realisiert werden. Die Schaltung ist ausserdem ungetaktet. Allerdings habe ich keine Ahnung, welche und wieviele Gatter ich mindestens einsetzen muß, um das gewünschte Schaltverhalten zu erreichen. Das "Merkbauteil" ist ebenfalls ein großes Hindernis für mich. Eventuell geht das ja mit einem Zähler und einem PROM. Das ganze soll möglichst klein und einfach werden. Das ganze klingt wohl etwas verwirrend, daher habe ich noch eine Illustration angeführt, die eventuell zur besseren Verständlichkeit beitragen sollte. Vielen Dank, Iwan
Ich würds mit ner sequentiellen Steuerung (Flip-Flops) machen... Wäre für mich die beste Methode... obs die einfachtse is weiß ich nich :) Lg
@ Иван S. (ivan) >So weit so gut und überschaubar. Jetzt die Problematik: Nach Einschalten >kann (x,y,z) jeden möglichen Wert aus diesen vier Zuständen annehmen. >Ziel der gesuchten Schaltung ist es nun aus diesem "zufälligem" >Startwert, die Signale L und R so zu generieren, daß der Endzustand >"möglichst weit rechts", also (0,0,1), erreicht wird. Alles trivial, nennt man State Machine. Ein Blatt kariertes Papier, ein Bleistift und bissel Grundlagen reichen für eine Lösung. >Das ganze soll ohne Verwendung programmierbarer Bauteile wie einem uC >oder einem uP realisiert werden. Na dann halt old school mit CMOS ICs. >Die Schaltung ist ausserdem ungetaktet. Aha, das legt der Ivan einfach mal fest, damit es nicht zu einfach wird, was? So ein Schmarn. Ja, es gibt asynchrone Logik, die SAUBER funktioniert. Aber ist unglecih aufwändiger und bringt real keine nennenswerten Vorteile. >Allerdings habe ich keine Ahnung, welche und wieviele Gatter ich >mindestens einsetzen muß, um das gewünschte Schaltverhalten zu >erreichen. Ich sach mal ein Dutzend IC reicht. >Das "Merkbauteil" ist ebenfalls ein großes Hindernis für mich. Nennt sich FlipFlop. >Das ganze klingt wohl etwas verwirrend, daher habe ich noch eine >Illustration angeführt, die eventuell zur besseren Verständlichkeit >beitragen sollte. Als kleines Beispiel: Beitrag "Re: pulse direction signal zu encoder a b?" MfG Falk
@Ivan: Hat das wieder was mit deinem Ladegerät zu tun? ;-)
Falk Brunner schrieb: > Alles trivial, nennt man State Machine. Ein Blatt kariertes Papier, ein > Bleistift und bissel Grundlagen reichen für eine Lösung. Mag wohl sein, daß es mit diesen Grundlagen trivial ist. Allerdings habe ich nicht soo viel Ahnung, daß ich eben dieses KV-Diagramm erstellen könnte, hapert es bei mir doch schon mit der Normalform. >>Das ganze soll ohne Verwendung programmierbarer Bauteile wie einem uC >>oder einem uP realisiert werden. > Na dann halt old school mit CMOS ICs. Genau so war's auch gedacht, am liebsten würde ich dabei mit möglichst wenigen Bauteilen auskommen. >>Die Schaltung ist ausserdem ungetaktet. > > Aha, das legt der Ivan einfach mal fest, damit es nicht zu einfach wird, > was? So ein Schmarn. Ja, es gibt asynchrone Logik, die SAUBER > funktioniert. Aber ist unglecih aufwändiger und bringt real keine > nennenswerten Vorteile. Bis dato hat die Schaltung eben keinen Takt. Wenn es ohne nicht geht (oder nur unverhältnismäßig schwer zu realisieren ist) werde ich Dir wohl glauben und muß wohl einen zusätzlichen Taktbaustein einbauen (den ich eigentlich vermeiden wollte, da demgegenüber ein uC dann immer sinnvoller wird). >>Allerdings habe ich keine Ahnung, welche und wieviele Gatter ich >>mindestens einsetzen muß, um das gewünschte Schaltverhalten zu >>erreichen. > Ich sach mal ein Dutzend IC reicht. Ein Dutzends ICs? Ich hätte eher an etwas wie ein 8-fach NAND oder sowas in die Richtung gehofft. Ein Dutzend ICs geht sich schon flächenmässig nicht aus. >>Das "Merkbauteil" ist ebenfalls ein großes Hindernis für mich. > Nennt sich FlipFlop. Hmm, hat MichiR auch gewschrieben, scheint wohl was d'ran zu sein ;-) Wann und wie setzen? Beim Übergang (0,1,0) nach (1,1,0)? Nur wie? Wenn der Zustand (1,1,0) erreicht worden ist, gibt es ja den Zustand (0,1,0) nicht mehr. Also beim Zustand (1,1,0) setzen? Aber wie setzen? Da liegt mein größtes Problem. Geht folgendes?: IF (0,1,0) !FLIPFLOP OUPUT L IF (1,1,0) OUTPUT R SET FLIPFLOP IF (0,0,0) FLIPFLOP OUTPUT R IF (0,0,0) !FLIPFLOP OUTPUT NIL IF (0,0,1) FLIPFLOP OUTPUT NIL RESET FLIPFLOP IF (0,0,1) !FLIPFLOP OUTPUT NIL Bleiben also nur noch zwei Probleme: Wie die Setz- und Reset-Impule für das Flipflop generieren und obiges Programm (hoffe das ist so richtig) ind die entsprechende Hardware umsetzen. Was ist da am Besten? NAND, NOR, AND? Oder besser mehrere verschiedene Gatter? Ich will hier nicht, daß jemand meine Hausaufgaben macht, aber bei der Umsetzung in die Hardware drück der Schuh am meisten. Wahrscheinlich brauch' ich den Takt für die Flipflop-(re)setimpulse. Auf jeden Fall soll das ganze möglichst wenige ICs brauchen, klein und billig sein. > MfG > Falk Freundlicher Gruß zurück, Iwan
>Auf jeden Fall >soll das ganze möglichst wenige ICs brauchen, klein und billig sein. ATiny13. Der ist billiger als das IC Grab was du sonst dazu brauchst. Und da du nicht sagst "stromsparend" könnte man das auch mit einem GAL machen. >Das ganze soll ohne Verwendung programmierbarer Bauteile wie einem uC Ok den GAL muss man programmieren, ist aber kein uC;) >Eventuell geht das ja mit einem Zähler und einem PROM. PROMs muss man auch programmieren.
@ Иван S. (ivan) >Mag wohl sein, daß es mit diesen Grundlagen trivial ist. Allerdings habe >ich nicht soo viel Ahnung, daß ich eben dieses KV-Diagramm erstellen >könnte, hapert es bei mir doch schon mit der Normalform. Leute wie du, die über die beste CPU-Architektur philosophieren, scheitern auf der Ebene? Komisch . . . >Genau so war's auch gedacht, am liebsten würde ich dabei mit möglichst >wenigen Bauteilen auskommen. Wer will das nicht? >Bis dato hat die Schaltung eben keinen Takt. Wenn es ohne nicht geht >(oder nur unverhältnismäßig schwer zu realisieren ist) werde ich Dir >wohl glauben und muß wohl einen zusätzlichen Taktbaustein einbauen (den >ich eigentlich vermeiden wollte, da demgegenüber ein uC dann immer >sinnvoller wird). 1/6 eines 74HC14 reicht. >Ein Dutzends ICs? Ich hätte eher an etwas wie ein 8-fach NAND oder sowas >in die Richtung gehofft. Nicht hoffen, KV Diagramm erstellen. > Ein Dutzend ICs geht sich schon flächenmässig nicht aus. Dann nimm einen uC, ein 8-Pinner reicht. >Wann und wie setzen? Beim Übergang (0,1,0) nach (1,1,0)? Nur wie? Mit dem von dir ungeliebten Takt. > Wenn >der Zustand (1,1,0) erreicht worden ist, gibt es ja den Zustand (0,1,0) >nicht mehr. Also beim Zustand (1,1,0) setzen? Aber wie setzen? Da liegt >mein größtes Problem. Ja, Grundlagen halt. Sind nur durch nich mehr Grundlagen zu ersetzen. >Bleiben also nur noch zwei Probleme: Wie die Setz- und Reset-Impule für >das Flipflop generieren und obiges Programm (hoffe das ist so richtig) Deine Hoffnung muss unerfüllt bleiben. >ind die entsprechende Hardware umsetzen. Was ist da am Besten? NAND, >NOR, AND? Das was einfach und preiswert verfügbar ist. >Ich will hier nicht, daß jemand meine Hausaufgaben macht, aber bei der >Umsetzung in die Hardware drück der Schuh am meisten. Du hast ja noch nicht mal eine echte Wahrheitstabelle, nur eine umgangssprachlihe Beschreibung. Das ist noch WEIT weg von jeglicher Hardware. > Wahrscheinlich >brauch' ich den Takt für die Flipflop-(re)setimpulse. nöö, einen Grundkusrs in Digitaltechnik. Stichwort FSM, Finite State Machine. http://de.wikipedia.org/wiki/Finite_State_Machine > Auf jeden Fall >soll das ganze möglichst wenige ICs brauchen, klein und billig sein. Wieviel Millionen willst du davon bauen? Was macht es für einen Unterschied ob die Lösung 5 oder 10 EUR kostet? MfG Falk
Иван S. schrieb: > Mag wohl sein, daß es mit diesen Grundlagen trivial ist. Allerdings habe > ich nicht soo viel Ahnung, daß ich eben dieses KV-Diagramm erstellen > könnte, hapert es bei mir doch schon mit der Normalform. Was du erstmal brauchst ist eine Logik Tabelle mit allen Eingangssignalen nd allen Ausgangssignalen, KV kann man machen ist aber nur zum minimieren nötig außerdem gibt es da auch Rechner für ;)
holger schrieb: > ATiny13. Der ist billiger als das IC Grab was du sonst > dazu brauchst. Kleiner uC ginge natürlich immer, nur hab' ich bei dem Projekt keine Muße oder Lust zu programmieren. > Und da du nicht sagst "stromsparend" könnte man das auch > mit einem GAL machen. Stromsparend muß es absolut nicht sein. >> Eventuell geht das ja mit einem Zähler und einem PROM. > PROMs muss man auch programmieren. Klar, ich meinte eher "ohne Verwendung einer Programmiersprache". Falk Brunner schrieb: > @ Иван S. (ivan) >>Bis dato hat die Schaltung eben keinen Takt. [...] > 1/6 eines 74HC14 reicht. Ok, werde ich mir anschauen. Dazu sollte es im Weltnetz ja Beispiele genug geben. >>Ein Dutzends ICs? Ich hätte eher an etwas wie ein 8-fach NAND oder sowas >>in die Richtung gehofft. > Nicht hoffen, KV Diagramm erstellen. Wie gesagt, das kann ich nicht. Ich bin kein begnadeter Informatiker. >> Ein Dutzend ICs geht sich schon flächenmässig nicht aus. > Dann nimm einen uC, ein 8-Pinner reicht. Klar, aber siehe oben. >>Wann und wie setzen? Beim Übergang (0,1,0) nach (1,1,0)? Nur wie? > Mit dem von dir ungeliebten Takt. Ok, es kommt Takt rein. >> Wenn (1,1,0) erreicht worden ist, gibt es ja den Zustand (0,1,0) >> nicht mehr. Also beim Zustand (1,1,0) setzen? Aber wie setzen? Da liegt >> mein größtes Problem. > Ja, Grundlagen halt. Sind nur durch nich mehr Grundlagen zu ersetzen. Die Grundlagen werde ich nicht auf die Schnelle herzaubern können. Ich werde einfach immer den Takt anwerfen, "irgendwie" setzen, wenn X gesetzt ist und resetten, wenn Y gesetzt ist. >> Bleiben also nur noch zwei Probleme: Wie die Setz- und Reset-Impule für >> das Flipflop generieren und obiges Programm (hoffe das ist so richtig) > Deine Hoffnung muss unerfüllt bleiben. Wiso? Ich kann keinen Fehler erkennen. > Du hast ja noch nicht mal eine echte Wahrheitstabelle, nur eine > umgangssprachlihe Beschreibung. Das ist noch WEIT weg von jeglicher > Hardware. Ok, dann schreib' ich 'mal zusammen was ich so hab: XYZ FF OUTPUT 110 SET R 010 1 R 010 0 L 000 1 R 000 0 0 001 RESET 0 Daraus folgt: X=Set, Z=Reset R == (X=1) AND (FF=1) L == (Y=1) AND (FF=0) 0 == (Y=0) AND (FF=0) >> Was ist da am Besten? NAND, NOR, AND? > Das was einfach und preiswert verfügbar ist. Ok, schaun' mehr mal. NAND wär' wohl am gscheit'ern, weil ich für das FF sowiso zwei NANDs brauch'. Andererseits lieber ein kleines Einzelgatter nehmen, als selbiges mit 5 NANDs emulieren. >> Wahrscheinlich brauch' ich den Takt für die Flipflop-(re)setimpulse. > nöö, einen Grundkusrs in Digitaltechnik. Stichwort FSM, Finite State > Machine. Ja, wennst ihn mir bezahlst! Ich kann mir jedenfalls keinen leisten. Also wozu ist der Takt, wenn nicht für's Flipflop? > Wieviel Millionen willst du davon bauen? Was macht es für einen > Unterschied ob die Lösung 5 oder 10 EUR kostet? Mindestens vierzehn Stück. Einzelstücke, ned Millionen ;-)
@ Иван S. (ivan) >Kleiner uC ginge natürlich immer, nur hab' ich bei dem Projekt keine >Muße oder Lust zu programmieren. Dann lass das Projekt sein. >> Nicht hoffen, KV Diagramm erstellen. >Wie gesagt, das kann ich nicht. Ich bin kein begnadeter Informatiker. Dazu muss man weder begnadet noch Informatiker sein, das können sogar mittelmässige 10-Klässler. >Die Grundlagen werde ich nicht auf die Schnelle herzaubern können. >Ich werde einfach immer den Takt anwerfen, "irgendwie" setzen, wenn X >gesetzt ist und resetten, wenn Y gesetzt ist. "Irgendwie" ist immer ein schlechter Ansatz. >> Deine Hoffnung muss unerfüllt bleiben. >Wiso? Ich kann keinen Fehler erkennen. Siehe oben. ;-) >Ok, dann schreib' ich 'mal zusammen was ich so hab: >XYZ FF OUTPUT >110 SET R >010 1 R >010 0 L >000 1 R >000 0 0 >001 RESET 0 >Daraus folgt: X=Set, Z=Reset > R == (X=1) AND (FF=1) > L == (Y=1) AND (FF=0) > 0 == (Y=0) AND (FF=0) Du würfelst Zustandsvariablen X,Y, und Z mit Ausgangssignalen durcheinander. Oder deine Beschreibung war schon konfus. >Ok, schaun' mehr mal. NAND wär' wohl am gscheit'ern, weil ich für das FF >sowiso zwei NANDs brauch'. Falsch. FlipFlops nimmt man fertig aus der Kiste, 74HC74 & Co. >> nöö, einen Grundkusrs in Digitaltechnik. Stichwort FSM, Finite State >> Machine. >Ja, wennst ihn mir bezahlst! Ich kann mir jedenfalls keinen leisten. Wer redet denn von einem bezahlten Kurs. Selbststudium ist das Zauberwort. >Also wozu ist der Takt, wenn nicht für's Flipflop? Er ist für das FlipFlop, sehr richtig. >Mindestens vierzehn Stück. Und was wird das Ganze? MfG Falk
>Nun sollen aus diesen Signalen zwei weitere erzeugt werden, nämlich L >und R, also Links und Rechts. Wenn diese einige Zeit einwirken, so kann >sich der Zustand von X,Y,Z nämlich ändern. Da wird dir diese Tabelle: >Ok, dann schreib' ich 'mal zusammen was ich so hab: > >XYZ FF OUTPUT >110 SET R >010 1 R >010 0 L >000 1 R >000 0 0 >001 RESET 0 nicht viel nützen. Es handelt sich um ein rückgekoppeltes Netzwerk. Du musst also L und R auch in die Eingangsmatrix übernehmen. Mit allen Kombinationen versteht sich.
Falk Brunner schrieb: >>Die Grundlagen werde ich nicht auf die Schnelle herzaubern können. >>Ich werde einfach immer den Takt anwerfen, "irgendwie" setzen, wenn X >>gesetzt ist und resetten, wenn Y gesetzt ist. > > "Irgendwie" ist immer ein schlechter Ansatz. > >>Ok, schaun' mehr mal. NAND wär' wohl am gscheit'ern, weil ich für das FF >>sowiso zwei NANDs brauch'. > > Falsch. FlipFlops nimmt man fertig aus der Kiste, 74HC74 & Co. Najo, ein NAND-Flipflop käme mir halt ziemlich einfach vor, (X NAND TAKT) an den SET-Eingang, (Y NAND TAKT) an RESET, und fertig ist die Chose. Muß ich morgen 'mal simulieren. Wenn das ganze fertig ist, kann ich endlich gEDA/pcb anwerfen, das macht mir mehr Spaß als der Logikkram :-) >>Ok, dann schreib' ich 'mal zusammen was ich so hab: > >>XYZ FF OUTPUT >>110 SET R >>010 1 R >>010 0 L >>000 1 R >>000 0 0 >>001 RESET 0 > >>Daraus folgt: X=Set, Z=Reset >> R == (X=1) AND (FF=1) >> L == (Y=1) AND (FF=0) >> 0 == (Y=0) AND (FF=0) > > Du würfelst Zustandsvariablen X,Y, und Z mit Ausgangssignalen > durcheinander. Oder deine Beschreibung war schon konfus. Wiso konfus, wo hab' ich mich undeutlich ausgedrückt? Kann auch sein, daß ich ob meiner Euphorie dem ersehntem Ziel endlich näher zu kommen einen massiven Denkfehler habe, den ich dadurch übersehe. >>Mindestens vierzehn Stück. > > Und was wird das Ganze? Möchte ich (noch) nicht sagen, sonst heißt es sowiso wieder, daß das Blödsinn sei. holger schrieb: > Da wird dir diese Tabelle [...] > nicht viel nützen. Es handelt sich um ein rückgekoppeltes > Netzwerk. Du musst also L und R auch in die Eingangsmatrix > übernehmen. Mit allen Kombinationen versteht sich. Ich hoffe, Du irrst. Wenn dem wirklich so ist würde das für mich einen wesentlich höheren Aufwand bedeuten. Dann käme ich wahrscheinlich um ein "neumodisches" programmierbares IC kaum herum :-( Iwan
Einen Takt braucht man nicht. Allerdings entspricht der Text nicht der Zeichnung. Laut Text gibt es nur den ersten Links-Pfeil. Ohne MC oder GAL braucht man aber mehrere TTL-ICs, schätze etwa 3. Peter
Hier mal für nen GAL16V8 in CUPL:
1 | L = !X & Y & !Z & !R; |
2 | R = X & Y & !Z |
3 | # R & !(!X & !Y & Z); |
Peter
Hallo nochmal, habe heute das ganze in LogicSim aufgebaut und simuliert, funktioniert alles wie gewünscht. Anbei die Prinzipschaltung und die Ausführung mit acht NAND-Gattern. Danke an Alle, die sich beteiligt haben. Gruß, Iwan
Und inzwischen entlädt und lädt er auch wie gewünscht den Kondensator, zumindest in der Simulation. Jetzt hätte ich nur noch gerne ein Modell eines Akkus für LTSpice, würde gerne sehen, wie er in diesem Bereich performt. Hat jemand eine Idee, wie man einen Akku halbwegs genau modellieren könnte? Cap mit Serienwiederstand und Parallelwiderstand ist mir eindeutig zu wenig, gerne darf es etwas umfangreicher sein, nur zuviel Mathematik sollte es nicht "kosten". Gruß, Iwan [Beitrag gelöscht und neu eingestellt, da Bild vergessen]
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.