Hallo Forumsleute :)
Benötige für eine Relais-Sicherheitsabschaltung eine Logik mit 5-6x
Input XOR.
Leider finde ich nur Chips mit max. drei Eingängen, was mir ja nicht
wirklich was bringt.
Damals...vor unendlich langer Zeit konnte ich sowas mal mathematisch
kürzen usw. - Kann mich aber leider nicht mehr erinnern wie das alles
war.
Bevor ich nun wieder nen kleinen µC implementiere wäre eine
Gatter-Lösung schon schön.
GAL Programmer habe ich keinen mehr und CPLD nie was mit gemacht.
Evtl. hat ja jemand eine Idee.
Danke Euch im Voraus!
Hallo ennen,
als Funktionsgleichung aus der Wahrheitstabelle abgeleitet.
F E D C B A X
0 0 0 0 0 0 0 /F & /E & /D & /C & /B & /A
0 0 0 0 0 1 1
0 0 0 0 1 0 1
. . . . . . 1
1 1 1 1 0 1 1
1 1 1 1 1 0 1
1 1 1 1 1 1 0 F & E & D & C & B & A
/X = (/F & /E & /D & /C & /B & /A) ODER (F & E & D & C & B & A)
X = /((/F & /E & /D & /C & /B & /A) ODER (F & E & D & C & B & A))
Zwei UND-Gatter mit je sechs Eingängen, dem einen Gatter werden alle
Eingänge invertiert zugeführt, dem Anderen direkt. Die Ausgänge der
UND-Gatter über ein NOR-Gatter, mit zwei Eingängen, verknüpft ergiebt
die gewünschte antivalente Funktion.
Gruß. Tom
@Georg: 3 Eingänge habe ich gefunden, mehr nicht.
@Tom: Die Wahrheitstabelle müsste glaub ich invertiert sein. Es darf ja
nur was am Ausgang anliegen, wenn auch explizit NUR EIN Eingang gesetzt
wurde.
Nett von Dir das so detailliert auf zu schreiben :)
Hallo enen,
die Exclusiv-Oder Verknüpfung oder auch Antivalenz, liefert eine "1" am
Ausgang, wenn die Eingänge unterschiedliche Zustände haben. In meiner
Gleichung (X= /((....)ODER(....)) wird der Ausgang durch die
NOR-Verknüfung invertiert.
Sollte der Ausgang nur dann gesetzt sein, wenn nur ein Eingang gesetzt
ist, wäre das eine andere Funktion als XOR. Aber auch das läßt sich über
die Wahrheitstabelle als Funktionsgleichung ausdrücken.
Gruß. Tom
Hallo Roland L.
tatsächlich, die Aufgaben sind alle ähnlich. Die Motorsteuerung kannte
ich noch nicht. :)
Die Lösung der Aufgaben ist im Prinzip ganz einfach, macht euch mit dem
Thema "Synthese logischer Schaltnetze" vertraut. Weitere Stichworte
könnten auch UND-Normalform bzw ODER-Normalform sein, um im Netz auf die
gewünschten Grundlagen zu stoßen. Werde selbst mal nachforschen, die
theoretischen Grundlagen zu finden.
Gruß. Tom
Schon das googeln nach "Synthese logischer Schaltnetze" führte zu einer
Fülle von brauchbaren Resultaten. Ich habe es nur kurz überflogen, aber
das hier scheint mir recht umfangreich und verständlich:
https://www.fbi.h-da.de/fileadmin/personal/e.komar/public_html/DGT-Skript-Teil1.PDF
Wer ein logisches Schaltnetz, mit digitalen Bausteinen, konstruieren
möchte, sollte das mal durchsehen.
Viel Erfolg. Tom
Die Eingänge zweier priority encoder (z.B. CD4532 oder MC14532) in
umgekehrter Reihenfolge beschalten. Wenn alle codierten Ausgänge (Q0-Q2)
ungleich sind, dann ist tatsächlich nur ein Eingang = 1.
ennen schrieb:> Benötige für eine Relais-Sicherheitsabschaltung eine Logik mit 5-6x> Input XOR.Georg schrieb:> So etwas gibt es nicht. Es gibt nur XOR-Gatter mit 2 Eingängen.
@ennen
Deine Bezeichnung scheint etwas unüblich zu sein. Zeige einfach mal die
Logiktabelle für deine benötigte Sicherheitsabschaltung.
ennen schrieb:> GAL Programmer habe ich keinen mehr und CPLD nie was mit gemacht.
Kannst auch einen kleinen EPROM nehmen, 6 Inputs ergeben ja nur 64
Kombinationen.
Ansonsten eben einen Parity-Generator wie 74180, 74280, oder in CMOS
40101 oder 4531.
@Tom: Dann habe ich da was falsch verstanden. Die Beispiele der
XOR-Verknüpfung zielen immer auf zwei Eingänge ab, da würde es auch
passen. Habe es aber gerade mal simuliert mit drei Eingängen - dann
passt es nicht mehr... das war mir gar nicht klar, evtl. war es auch
schon zu spät gestern Nacht.
@all: Echt interessant was es noch so für Logik-ICs gibt über die ich
noch nie gefallen bin. Es ist keine Hausaufgabe. Ich muss in einem
Projekt sicherstellen, dass explizit nur mit einem aktiven Eingang das
Relais geschaltet wird. Wenn mehrere plötzlich aktiv werden, soll kein
Relais geschaltet werden.
Echt witzig, dass es tatsächlich noch zwei Threads zu der gleichen Zeit
gibt.
Beitrag "Re: 3 Eingänge - Ausgang "1" wenn genau 1 Eingang aktiv ist"
Aber nein, bin ich nicht.
Komisch das ich diesen aber gestern nicht entdeckt habe.
Werde mir mal alles durchlesen, aber wie ich gesehen habe gibt es ja
schon einige gute Lösungen.
Danke Euch auf jeden Fall einmal.
Und vor allem Allen einen schönen Sonntag!
Hallo ennen,
meist du folgende Wahrheitstabelle? Ich habe nur die Werte die zur "1"
am Ausgang führen eingetragen, alle anderen Werte sind "0".
F E D C B A X
0 0 0 0 0 1 1 X1 = /F & /E & /D & /C & /B & A
0 0 0 0 1 0 1 X2 = /F & /E & /D & /C & B & /A
0 0 0 1 0 0 1 X3 =
0 0 1 0 0 0 1 X4 =
0 1 0 0 0 0 1 X5 =
1 0 0 0 0 0 1 X6 =
Hinter den ersten beiden Zeilen steht bereits die Lösung, die
Funktionsgleichungen für die restlichen Zeilen sollten kein Problem
sein. Hier verwende ich die UND-Normalform, das bedeutet UND in den
Zwischenfunktionen (Xx) und ODER in der Ausgangsfunktion (X). Wenn du
die Gleichungen löst, kannst du direkt ein Gatternetz aufbauen, das den
Gleichungen entspricht und wie gewünscht funktioniert. Man kann
anschließend noch eine optimierung durchführen, um die Anzahl der Gatter
zu reduzieren, an der grundsätzlichen verändert das optimieren nichts.
Der / kennzeichnet die Invertierung. /F & bedeutet: Eingang F wird
invertiert auf den Eingang eines UND-Gatter gelegt. Die ganze Gleichung
lautet:
X = X1 | X2 | X3 | X4 | X5 | X6
/ Invertierung, & UND-Verknüpfung, | ODER-Verknüpfung
Gatter:
6 Inverter mit je 1 Eingang
6 UND mit je 6 Eingängen
1 ODER mit 6 Eingängen
Die Lösung ist relativ Aufwändig, aber sie ist klar strukturiert und
nachvollziehbar. Vor allem läßt sie sich auch rückwärts analysieren -
Vom Schaltnetz zur Wahrheitstabelle, falls die Pläne in einigen Jahren
von CD nicht mehr lesbar sind ;)
Schönen Sonntag und viel Erfolg. Tom
Ja, genau so meinte ich.
Sorry dass ich verwirrt hatte mit dem XOR.
Das waren noch Zeiten als ich da öfter mit zu tun hatte.
Ich kann mich noch leise an einen Getränke-Automaten in der Richtung
entsinnen :D
Es ist schon interessant, wieviele unterschiedliche Interpretationen es
für eine XOR-Verknüpfung mit n Eingängen gibt:
1. Entweder-Oder (entweder X1 oder X2 oder ... oder Xn)
2. Ungerade Parität (Anzahl der High-Eingänge ist ungerade)
3. Antivalenz (mindestens zwei der Eingangssignale sind verschieden)
Da bei zwei Eingängen alle drei Alternativen äquivalent sind, werden
diese Bezeichnungen oft synonym verwendet. Bei mehr als zwei Eingängen
sind sie jedoch völlig verschieden, weswegen man in diesem Fall auf die
richtige Wortwahl achten sollte.
Von der Namensgebeung her (XOR = exclusive or = ausschließendes Oder)
würde ich ganz klar (1) als die richtige Interpretation sehen. So sehen
das offensichtlich auch die Eröffner der drei Threads zu diesem Thema.
@ennen:
Ohne die Verwendung programmierbarer Bausteine wird man für ein XOR mit
5 oder 6 Eingängen wohl mindestens 3 Digital-ICs benötigen. Alternativ
gibt es noch die analoge Lösung mit einem Doppelkomparator und einer
Handvoll Widerstände (wobei ich aber kein großer Freund von analogen
Lösungen für digitale Probleme bin, da darunter oft die Störsicherheit
reduziert wird):
Beitrag "Re: 3 Eingänge - Ausgang "1" wenn genau 1 Eingang aktiv ist"
Mit der Realisierung der XOR-Funktion ist es aber wahrscheinlich nicht
getan, so dass mindestens noch ein weiteres IC dazukommt, d.h man
braucht insgesamt mindestens 4 Digital-ICs. Je nachdem, wie die
Gesamtfunktion aussieht, lässt sich aber evtl. die Funktion des vierten
ICs durch die drei anderen miterschlagen, so dass der Aufwand wenigstens
ein Bisschen reduziert würde.
Deswegen meine Fragen:
Wieviele Relais gibt es, und was soll mit diesen genau passieren?
Sind es 6 Relais, und jedes soll mit einem der Eingangssignale
geschaltet werden (aber eben nur dann, wenn nicht mehrere gleichzeitig
aktiv sind)?
Müssen die Ein- und Ausgänge der Logikschaltung high-aktiv oder dürfen
sie auch low-aktiv sein?
Yalu X. schrieb:> wieviele unterschiedliche Interpretationen es> für eine XOR-Verknüpfung mit n Eingängen gibt:>> 1. Entweder-Oder (entweder X1 oder X2 oder ... oder Xn)> 2. Ungerade Parität (Anzahl der High-Eingänge ist ungerade)> 3. Antivalenz (mindestens zwei der Eingangssignale sind verschieden)
Es gibt noch weitere Interpretationen bzw. Anwendungen.
4. Programmierbarer Inverter: in CPLDs hängt ein XOR am Ausgang der
Verknüpfung. Wenn der Eingang B auf 0 konfiguriert ist, wird der Ausgang
nicht invertiert, mit B=1 wird invertiert. So kann die DMF oder KMF
realisiert werden und in beiden Fällen ist die Laufzeit gleich.
5. Symmetrische Verschlüsselung, weil A XOR B = Y aber auch Y XOR A = B
und Y XOR B = A gilt (Auch bei RAID5 genutzt)
6. Binäre Addition 0+0=0, 0+1=1, 1+0=1, 1+1=0 (Übertrag 1, den macht
UND)
ennen schrieb:> Bevor ich nun wieder nen kleinen µC implementiere wäre eine> Gatter-Lösung schon schön.
Vielleicht könnte man ja auch eine "analoge" Lösung finden.
2 Komparatoren auf die man die Summe der Eingänge gibt.
Der Eine schaltet bei mindestens einem Eingang nach Plus (1),
der Andere bei mindestens zwei Eingängen.
Die möglichen Ausgänge wären
- 00 für keinen Eingang
- 10 für einen Eingang
- 11 für mehr als einen
Das könnte man man dann entweder mit einem einfachen XOR
weiter auswerten oder sogar direkt für eine Ansteuerung eines
Relais nutzen wenn dieses zwischen die Ausgänge geschaltet wird.
Yalu X. schrieb:> Bernhard Spitzer schrieb:>> Es gibt noch weitere Interpretationen bzw. Anwendungen.>> 4. ...>> 5. ...>> 6. ...>> Oh ja, das macht die Sache nicht einfacher :)>
IMO sind diese bereits abgedeckt.
4. Ist eine Anwendung des 2 Input XOR
5. Parität,
6. ist equivalent zur Parität.
In den Hardwarebeschreibungsprachen Verilog und VHDL 2008 gibt es
übrigens einen unären XOR Operator, angewandt auf einen Vektor ist sein
Ergebnis die ungerade Parität.
Wahrheitstabelle
F E D C B A X
0 0 0 0 0 1 1
0 0 0 0 1 0 1
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 1 0 0 0 0 1
1 0 0 0 0 0 1
Für alle anderen Kombinationen X=0.
Im Anhang die Lösung mit 2 Multiplexern und einem EXOR.
Yalu X. schrieb:> Ganz so einfach ist es leider nicht:>> Was passiert bspw für A=B=C=D=1 und E=F=0?
Danke,
ja dann war das keine Lösung. Schade, sah so einfach aus. :-)
Dann wird das doch ein Gattergrab oder man macht die analoge
DAC/Komparator-Lösung.
Lattice User schrieb:> Scheitert auch an Yalu's Beispiel.
Ups, hast recht.
So auf die Schnelle:
Ein dreifach-NOR (74HC10) von 9,10,11 des ersten an 1,14,15 des zweiten.
Man kann die beiden Multiplexer schon benutzen, braucht aber dann noch
ein 3-fach-OR, um für einen von beiden die Fälle A+B+C=0 und A+B+C>1 zu
unterscheiden.
Edit:
Peter Dannegger schrieb:> Ein dreifach-NOR (74HC10) von 9,10,11 des ersten an 1,14,15 des zweiten.
Ja, so ungefährr sollte es gehen, auch wenn ich's jetzt nicht
durchgespielt habe.
Peter Dannegger schrieb:> Lattice User schrieb:>> Scheitert auch an Yalu's Beispiel.>> Ups, hast recht.> So auf die Schnelle:> Ein dreifach-NOR (74HC10) von 9,10,11 des ersten an 1,14,15 des zweiten.
Sieht so aus, als ob das funktioniert (ohne Schiessprügel)
Hallo ennen,
mal abgesehen von der ja durchaus interessanten XOR-Diskussion,
wenn ich Dich richtig verstanden habe, dann suchst Du eine Schaltung,
welche nur dann ein bestimmtes Ausgangssignal liefert, wenn alle
Eingänge einen bestimmten Zustand aufweisen.
Warum benutzt Du dann denn nicht einfach je nach gewünschtem
Ausgangssignal eine AND (Ausgang nur dann 1, wenn auch alle Eingänge 1)
oder OR (Ausgang nur dann 0, wenn auch alle Eingänge 0) Verknüpfung? Die
Verhalten der Eingänge kannst Du dann jeweils durch Invertierung an die
Anforderung anpassen. Wenn Sicherheitsaspekte eine Rolle spielen, musst
Du eh die Pegel mitberücksichtigen. Unterbrechungen bedeuten in der
Regel Fehler.
Wenn es dann auch noch auf die Anzahl der Bauteile ankommt, kannst Du ja
immer noch versuchen, zu minimieren. Stichworte hier Disjunktive
Normalform (DNF) und KV-Diagramm.
Mit besten Grüßen
Murmelchen
Jetzt aber die Lösung.
Wahrheitstabelle
F E D C B A X
0 0 0 0 0 1 1
0 0 0 0 1 0 1
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 1 0 0 0 0 1
1 0 0 0 0 0 1
Für alle anderen Kombinationen X=0.
Warum will denn niemand die "klassische" DNF nutzen??
Die Funktion hat halt nur wenige 1-Stellen, also lässt sie sich mit
einer disjunktiven Minimalform beschreiben (die mit KVD leider nicht
minimierbar ist):
1
Y = a/b/c/d/e/f v /ab/c/d/e/f v /a/bc/d/e/f
2
v /a/b/cd/e/f v /a/b/c/de/f v /a/b/c/d/ef
Zunächst mal schaut das nach reichlich UND-Gattern aus. Mit dem
Entwicklungssatz der Schaltalgebra kommt das Ergebnis von Helmut raus.
Leider sind das 3 ICs pro Relais (außer es gibt "Querverbindungen", so
dass man mit Bündelminimierung weiter kommt). Typischer Fall für ein
PLD. Statt 3 ICs pro Ausgang hat man nur 1 IC für 8-10 Ausgänge. Wenn es
am Programmiergerät scheitern sollte, es gibt auch die ispGAL und die
alten ispLSI1016, die man auch über eine Kabel am Parallel-Port
programmieren kann.
Die Software von Lattice braucht man aber immer noch (inklusive
Obsolete-Pack für die alten Bausteine). Schicke mir die gewünschte
Pinbelegung für einen Lattice-Baustein und ich schicke Dir die
JED-Datei.
> Typischer Fall für ein PLD.
Allerdings wir die Lösung mit PLD teurer. Zusätzlich muss auch noch die
Software archiviert werden und man muss einen "life time buy" im
Hinterkopf haben.
Dagegen wird es die Standard-ICs 74xx151 und 74xx02 auch die nächsten 20
Jahre in irgend einer Technologie geben.
Irgendwie vergisst Du noch die Kosten für Leiterplattenfläche und
Bestückung. Wir könnten ja auch zurück auf Diodenlogik. Da reduziert
sich die Lagerhaltung auf einen Widerstand und eine Diode. Ok, für
saubere Signale noch ein Schmitt-Trigger-Baustein.
Die billigste Lösung in dem Fall dürfte (auch incl. Entwicklungskosten)
ein Mikrocontroller sein. 20-Pinner AVR oder AT89, kostenlose
Entwicklungsumgebung, Programmierung über serielle Schnittstelle und ein
Primitiv-C-Programm (das ein fortgeschrittener Anfänger in wenigen
Minuten hinbekommen sollte).
Bei Abkündigung nimmt man den nächst größeren Controller und lässt das
Programm nochmal durch den Compiler.
Yalu X. schrieb:> Es ist schon interessant, wieviele unterschiedliche> Interpretationen es für eine XOR-Verknüpfung mit> n Eingängen gibt:>> 1. Entweder-Oder (entweder X1 oder X2 oder ... oder Xn)> 2. Ungerade Parität (Anzahl der High-Eingänge ist ungerade)> 3. Antivalenz (mindestens zwei der Eingangssignale sind verschieden)>> [...]>> Von der Namensgebeung her (XOR = exclusive or = ausschließendes> Oder) würde ich ganz klar (1) als die richtige Interpretation> sehen.
Das ist aber meines Wissens nicht die Standard-Interpretation.
> So sehen das offensichtlich auch die Eröffner der drei Threads> zu diesem Thema.
Nun ja. :-)
Soweit ich mich erinnere, wird die Antivalenz (XOR) als binäre
Operation definiert, die u.a. assoziativ ist. Das bedeutet:
(A xor B) xor C = A xor (B xor C)
Für A=B=C=1 ergibt sowohl die linke als auch die rechte Seite
den Wert 1; das entspricht der ungeraden Parität.
In der Standard-Interpretation kann man die Antivalenz von n
binären Variablen rekursiv auf das oben definierte zweistellige
XOR zurückführen.
"Eure" Interpretation dagegen müsste im Beispiel oben den Wert 0
liefern.
Bernhard Spitzer schrieb:> Typischer Fall für ein> PLD.
Bloß nicht, die sind am aussterben.
Atmel ist der Letzte, der noch 16V8 und 22V10 anbietet (aber wie lange
noch).
Außerdem teuer und Stromfresser.
Bernhard Spitzer schrieb:> es gibt auch die ispGAL und die> alten ispLSI1016, die man auch über eine Kabel am Parallel-Port> programmieren kann.
Was ist "Parallel-Port", ein Relikt aus dem vorigen Jahrtausend?
Alle meine PCs haben 0 LPT Anschlüsse.
Wenn schon programmieren, dann einen MC. Der kann auch mit
Pin-Change-Interrupt aufwachen und sonst schlafen (<1µA).
Peter Dannegger schrieb:> Alle meine PCs haben 0 LPT Anschlüsse.
Das ist ja Werbung mit schlechter Ausstattung.
Für mich ist sowas ein nicht kaufen Grund.
Peter Dannegger schrieb:> Außerdem teuer und Stromfresser.
Von Philips gab's mal die Cool-Runner. Mittlerweile bei Xilinx gelandet.
Ein CPLD ist halt immer noch um Größenordnungen schneller als jeder
Controller / jede CPU und gibt mehrere Signale zeitgleich mit bekanntem
Delay aus.
> Was ist "Parallel-Port", ein Relikt aus dem vorigen Jahrtausend?
leider. Aber mit einer passenden IO-Karte bekommt man den auch wieder
:-)
> Alle meine PCs haben 0 LPT Anschlüsse.
Extern. Und intern? Diverse aktuelle Bretter haben noch einen LPT auf
(leider teils unbestückten) Pinleisten. Einige POS-Boards oder Barebones
(z.B. von Shuttle) haben neben echten RS-232 (und bei den Shuttles
teilweise umschaltbar auf RS-485) noch Spanungsversorgung auf den
D-SUB-9 (Handscanner etc.)
Bin mal auf den ersten Programmer für Thunderbolt gespannt...
Bernhard Spitzer schrieb:> Von Philips gab's mal die Cool-Runner. Mittlerweile bei Xilinx gelandet.
Aber mit viel Ärger. Erst wurden die 5V Typen eingestampft, da mußte wir
ein Redesign machen. Die 3,3V Typen waren wenigsten noch 5V tolerant,
brauchten also nur nen zusätzlichen Spannungsregler.
Inzwischen sind die auch nur noch zu Mondpreisen zu haben.
Den Übergang auf 1,8V machen wir aber nicht mehr mit, aus neuen
Entwicklungen fliegen die raus. Ich hab die ständigen Redesigns satt.
Bernhard Spitzer schrieb:> Aber mit einer passenden IO-Karte bekommt man den auch wieder> :-)
Witz komm raus, Du bist umzingelt.
Ich hab mir extra ne LPT-Karte einbauen lassen, unter W7/64Bit stürzt
das Xilinx LPT-Tool gnadenlos ab.
Unter XP/32Bit lief es auch nur auf IO-Karten mit den originalen
LPT-Adressen (378H, 278H).
Wir haben dann notgedrungen das Platform Cable USB II gekauft, das läßt
sich Xilinx aber fürstlich bezahlen (RS: 334,75 €).
Ärgerlich war auch, daß ich beim Übergang vom PZ5064 auf XC5064 das
Design nicht mehr gefittet bekam.
Grund war, das der Philips Product term sharing konnte, der Xilinx aber
nicht. Wir mußten dann auf den XC5128 wechseln, der blöderweise aber
nicht pinkompatibel war. Das war das erste PCB-Redesign.
Noch ne Story, die Xilinx Fitter für den Coolrunner waren zu Anfang
grottenschlecht.
Ich hatte damals nen Pentium 166MHz, das war der schnellste PC in der
ganzen Firma.
Ich hab den Fitter Freitag abend angeschmissen und ihn dann Montag früh
abbrechen müssen. Ich hab dann die Pins manuell zugewiesen, damit er
überhaupt zu Potte kam.