Capture int-State mit Logikgattern und anderen einfachen Funktionen

OP (Firma: Logic) #4164552
Lesenswert?
• ▲
▼
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
#4164740
Lesenswert?
• ▲
▼
@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.
Gast #4164919
Lesenswert?
• ▲
▼
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.
Gast #4164966
Lesenswert?
• ▲
▼
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!
#4165010
Lesenswert?
• ▲
▼
@ 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.
Gast #4165026
Lesenswert?
• ▲
▼
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).
#4165043
Lesenswert?
• ▲
▼
@ 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.
Gast #4165097
Lesenswert?
• ▲
▼
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.
#4165124
Lesenswert?
• ▲
▼
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.
OP (Firma: Logic) #4165249
Lesenswert?
• ▲
▼
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
#4165408
Lesenswert?
• ▲
▼
@ 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.
Gast #4166224
Lesenswert?
• ▲
▼
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
Angehängte Dateien:
Gast #4166390
Lesenswert?
• ▲
▼
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...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.