Hallo Leute, ich habe eine begrenzte Anzahl von Funktionen zur Verfügung und möchte speichern (in Bool) wenn ein bestimmter State (1-15) durchlaufen wurde. Dieser bestimmte State wird als UINT bereitgestellt. Mir steht nur der State Index als Infomation zur Verfügung. Nach der Erfassung eines States soll ein boolsches Signal solange anliegen bis ich dieses mit einem weiteren boolschen Signal zurücksetze (Defaultwert des Reset Signals kann 1 oder 0 sein). Wichtig dabei ist: Wenn der gefragte State schon anliegt und dann ein Reset durchgeführt wird soll dieser erst beim nächsten Eintreffen des States erfasst werden! Ich kann Komparatoren, Multiplexer, AND,NAND,OR,NOR etc. (2 Eingänge, 1 Ausgang) -Gatter und Bitshift-Funktionen in Kombination mit Bitmasken nutzen. Das Mittel der Wahl waren bisher Komparatoren mit ein einer nachgeschalteten Logik. Allerdings habe ich dabei zwei Komparatoren und 7 Gatter verbraucht. Die Anzahl der Funktionen würde ich gerne reduzieren, allerdings habe ich noch keine Idee für die Optimierung. Für gute Ideen bin ich Dankbar! Gruß LogicNor
Danke für den Ratschlag, aber das System ist fest. (Anwendung auf einem Servoumrichter). Wie gesagt, es funktioniert, aber ich suche nach einer optimierten Lösung.
Walter schrieb im Beitrag #4164579:
> ich kann dir dazu raten ein FPGA zu verwenden.
Wäre das in dem Fall nicht ein bisschen Overkill und 42000 Nummern zu
groß?
@Log Ic: Was meinst Du mit "Das System ist fest"?
@Log Ic (Firma: Logic) (logicnor) >Danke für den Ratschlag, aber das System ist fest. (Anwendung auf einem >Servoumrichter). Wie gesagt, es funktioniert, aber ich suche nach einer >optimierten Lösung. Dazu bräuchte man wenigsten mal eine etwas verständliche Problembeschreibung. Aus deiner reichlich abstrakten Beschreibung würde ich herauslesen, dass du eine simple Statemachine hast, welche du mittels einfacher Logikgatter aufbauen willst. Kann man machen, und es gibt diverse Programme, die dabei die Minimirung/Optimierung der Logikgatter unterstützen. Aus technischer Sicht würde man sowas heute einfach in einen CPLD packen und fertig. Wenn die Statemachine nicht mit allzu hohem Takt läuft (kleiner 10kHz), reicht auch ein kleiner uC. FPGA ist eher Overkill.
Log Ic schrieb: > ich habe eine begrenzte Anzahl von Funktionen zur Verfügung und möchte > speichern (in Bool) wenn ein bestimmter State (1-15) durchlaufen wurde. > Dieser bestimmte State wird als UINT bereitgestellt. > Mir steht nur der State Index als Infomation zur Verfügung. Nach der > Erfassung eines States soll ein boolsches Signal solange anliegen bis > ich dieses mit einem weiteren boolschen Signal zurücksetze (Defaultwert > des Reset Signals kann 1 oder 0 sein). Wichtig dabei ist: Wenn der > gefragte State schon anliegt und dann ein Reset durchgeführt wird > soll dieser erst beim nächsten Eintreffen des States erfasst werden! > > Ich kann Komparatoren, Multiplexer, AND,NAND,OR,NOR etc. (2 Eingänge, 1 > Ausgang) -Gatter und Bitshift-Funktionen in Kombination mit Bitmasken > nutzen. > > Das Mittel der Wahl waren bisher Komparatoren mit ein einer > nachgeschalteten Logik. Allerdings habe ich dabei zwei Komparatoren und > 7 Gatter verbraucht. > Die Anzahl der Funktionen würde ich gerne reduzieren, allerdings habe > ich noch keine Idee für die Optimierung. Kompletter Labersülz vom Feinsten. Wenn du das Problem nicht verständlich aufbereiten kannst, hast du es mit sehr hoher Wahrscheinlichkeit selber nicht richtig verstanden. Also gehe in dich und versuche es noch einmal zu durchdenken. Und dann lieferst du eine Logiktabelle oder einen PAP oder irgendeine andere logisch konsistente Darstellung des Problems. Wenn dich das überfordert, bist du krass unfähig und mußt entweder dazulernen oder dumm sterben. So einfach ist das in der Welt der formalen Logik.
Das System auf dem die Abarbeitung erfolgt kann ich nicht ändern. Die Statemachine läuft auf dem System Es gibt nur eine begrenzte Anzahl von Logikbausteinen etc.. Ich komme auf Applikationsebene nur an den Index der Statemachine. Ich will nur eine Zahl vorgeben und wenn der Index gleich dieser Zahl ist soll dies gespeichert werden. Dieses Signal soll solange anstehen bis ich es zurücksetze. Wenn nach einem Reset schon Index=Zahl vorliegt, soll dies noch nicht erfasst werden. Erst wenn vorher einmal Index<>Zahl vorliegt. Sorry, hab gerade nur das Handy zum schreiben. Eine Pap kann ich später nachliefern. Gruß und schönen Dank!
@ LogicNor (Gast) >Das System auf dem die Abarbeitung erfolgt kann ich nicht ändern. >Die Statemachine läuft auf dem System Es gibt nur eine begrenzte Anzahl >von Logikbausteinen etc.. Rde doch mal Klartext! Das klingt nach einer SPS oder ähnlichem. Was für eine Hard- und Software hast du? > Ich komme auf Applikationsebene nur an den >Index der Statemachine. Ich will nur eine Zahl vorgeben und wenn der >Index gleich dieser Zahl ist soll dies gespeichert werden. Dieses Signal >soll solange anstehen bis ich es zurücksetze. Klingt sehr nach Software. Also musst du eine weitere State machine schreiben, welche exakt diese tut.
Hallo, ich schrieb oben, dass es sich um eine Anwendung auf einem Servoumrichter handelt. (B&R Acopos). Dort kann man diese Bausteine tabellarisch mit Pointern verknüpfen. Die kommunikation zur sps findet über read/write funktionen statt. (status und reset).
@ LogicNor (Gast) >ich schrieb oben, dass es sich um eine Anwendung auf einem >Servoumrichter handelt. (B&R Acopos). Dort kann man diese Bausteine >tabellarisch mit Pointern verknüpfen. Die kommunikation zur sps findet >über read/write funktionen statt. (status und reset). Schön, aber weder können noch müssen wir hellsehen! Lies mal was zum Thema Netiquette! Danke.
Ich verstehe immer nur Bahnhof. Versuche mal die Aufgabe Deiner Frau zu erklären und dann schreibt das hier genauso hin.
Ich würde ihr sagen. Ich zeige dir nun fortlaufen Zahlen. Ich suche die Zahl z.B. 8. Wenn du einen Wechsel auf genau diese erkennst, dann hebe die Hand . Die Hand darfst du erst senken, wenn ich sage "senken". :). Ich denke ich mache morgen mal ne Zeichnung.
Wo liegt denn das Problem? Ein Prozess in deiner Software hat eine Variable, welche den Zustand einer Statemachine darstellt. Du willst diesen Zustand überwachen, ob irgendwann mal Zustand X erreicht wird. Nach eigenen Angaben kannst du in der Software an anderer Stelle diesen Zustand auslesen. Und genau DORT kannst du die gewünschte Funktion umsetzen. Das geht auch in Digitallogik, sogar in unechter, welche in Software realisiert wird. Man braucht nichts weiter als einen N-Bit Komparator und ein RS-FlipFlop. Der Komparator vergleicht den State mit dem gesuchten State und setzt bei Gleicheit das RS-FlipFlop. Mit dem Reset-Eingang des RS FlipFlops kann man es dann bei Bedarf zurücksetzen.
Ich stimme dir zu, allerdings gab es noch eine weitere Bedingung. Nach einem Reset muss zunächst ein Zustandswechsel erfolgen bis die Erfassung greift. Das heisst z.B.. 1. Ich suche den State 8. 2. State 8 liegt gerade an. 3. Ich führe einen Reset durch 4. State 8 liegt immer noch an. => Es darf noch keine Erfassung erfolgen (kein Zustandswechsel) 5. Es folgen andere States... 6. Dann kommst wieder State 8 7. State 8 soll erfasst werden. Weiterhin würde ich halt mit möglichst wenigen Logikelementen auskommen. Gruß LogicNor
@ Log Ic (Firma: Logic) (logicnor) >Nach einem Reset muss zunächst ein Zustandswechsel erfolgen bis die >Erfassung greift. Das heisst z.B.. >Weiterhin würde ich halt mit möglichst wenigen Logikelementen auskommen. Dann muss den Wechsel von "nicht erfasst" zu "erfasst" dekodieren (synchrone Flankenerkennung). Das macht man ganz einfach durch die Verzögerung des SET-Signals mit einem normalen D-FlipFlop. Nur wenn das Signal vor dem FlipFlop aktiv ist und nach dem FlipFlop inaktiv (steigende Flanke), dann wird das RS-FlipFlop gesetzt.
Ja das stimmmt. Meine bisherige Lösung war folgende (siehe Anhang). Komparatoren habe ich genug aber Logic-Gatter nur wenige....klingt komisch, ist aber so. Somit habe ich in dieser Variante 5 Gatter verbraucht... Ist es möglich mit weniger auszukommen? Gruß LogicNor
Ups Fehlerteufel. (1>2) ist falsch... (1!=2) ist richtig
Falk Brunner schrieb: > Wo liegt denn das Problem? Hast du das wirklich nicht erkennen können? Ich beneide dich für deine grenzenlose Langmut. Du mußt gelernter Lehrer oder irgend was in der Art sein, normale Menschen können mit dieser geballten Idiotie, wie sie der TO geliefert hat, einfach nicht derart ruhig umgehen. Aber bedenke: Es gibt nicht wenige Lehrer, die genau deswegen irgendwann in der Klapse landen. Opfer ihres Berufes...
@C-hater: Wenn ich mir deine gesammelten Werke hier im Forum anschaue, musst du ein sehr zufriedener Mensch sein. :)
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.
