Hallo Zusammen,
Ich möchte Schaltunktionen (f8,f4,f2,f1) entwerfen und dann einen
Codierer mit einem DigitalSimulator realisieren. Ich habe nun eine
Wertetabelle aufgestellt:
1-aus-10-Code BCD
9 8 7 6 5 4 3 2 1 0 8 4 2 1
f8 0 1 0 0 0 0 0 0 0 0 1 0 0 0
f4 0 0 0 0 0 1 0 0 0 0 0 1 0 0
f2 0 0 0 0 0 0 0 1 0 0 0 0 1 0
f1 0 0 0 0 0 0 0 0 1 0 0 0 0 1
Nun wollte ich per Disjunkter Normalform auf einen Ausdruck kommen, um
die Schaltung zu realisieren. Die Werte 9,8,7,6,... bitte als
Eingangsvariablen denken, somit 10 Eingangsvariablen mit Belegung 0,1
und 4 Ausgangsvariablen mit Belegung 0,1.
Für die 8,4,2,1 habe ich folgende Ausdrücke: (n = negiert)
f8(9,8,7,6,5,4,3,2,1,0) = n9*8*n7*n6*n5*n4*n3*n2*n1*n0
f4(9,8,7,6,5,4,3,2,1,0) = n9*n8*n7*n6*n5*4*n3*n2*n1*n0
f2(9,8,7,6,5,4,3,2,1,0) = n9*n8*n7*n6*n5*n4*n3*2*n1*n0
f1(9,8,7,6,5,4,3,2,1,0) = n9*n8*n7*n6*n5*n4*n3*n2*1*n0
Stimmen diese Ausdrücke?
Auf mehr komme ich nicht. Wie kann ich denn diese Schaltfunktionen
(UND-Gatter) realisieren?
Besten Dank
Michael H. schrieb:
> Auf mehr komme ich nicht. Wie kann ich denn diese Schaltfunktionen> (UND-Gatter) realisieren?
Das kommt zb auch drauf an, welche UND Gatter deine SImulation dir
anbietet (ANzahl der Eingänge).
1
a * b * c = ( a * b ) * c
anstelle eines UND Gatters mit 3 Eingängen kann man also auch 2 UND
Gatter mit je 2 Eingängen benutzen, wenn man den Ausgang des ersten
Gatters auf einen Eingang des zweiten legt.
Ansonsten gibt es dann auch noch den De Morgan
1
na * nb = n ( a + b )
Durch 'Hinschauen' kann man in deinem Beispiel zb erkennen, dass man aus
den Signalen 9, 7, 6, 5, 3 und 0 ein 'Hilfssignal' bauen könnte, welches
1 ist, wenn irgendeines dieser Signale auf 1 steht. Da in diesem Fall
weder f8, f4, f2 noch f1 jemals auf 1 sein können, kann dann diese 1
dafür sorgen, dass die f Ausgänge in diesem Fall auf jeden Fall 0 sind.
Damit bist du dann schon mal 6 von deinen Eingangsleitungen zugunsten
eines einzigen zusätzlichen Signals in deinem f-Ausdrücken los, was die
Ausdrücke enorm vereinfacht.
(amthematisch betrachtet, ist es einfach nur das Herausheben von n9, n7,
n6 etc aus jeder einzelnen Gleichung und dem erkennen, dass dieser
herausgehobene Faktor in allen 3 Gleichungen identisch ist)
Michael H. schrieb:
> Stimmen diese Ausdrücke?
Nur für die 4 Zustände, die Du oben genannt hast.
In der Regel decodiert ein 1 aus 10 Decoder aber 11 Zustände.
Und dabei gibt es noch unterschiedliche Decodierungen der restlichen
1013 Zustände:
- egal (sind verboten)
- Priorität (höchster)
- Fehlercode (z.B. 0)
Peter
Michael H. schrieb:
> 1-aus-10-Code BCD> 9 8 7 6 5 4 3 2 1 0 8 4 2 1> f8 0 1 0 0 0 0 0 0 0 0 1 0 0 0> f4 0 0 0 0 0 1 0 0 0 0 0 1 0 0> f2 0 0 0 0 0 0 0 1 0 0 0 0 1 0> f1 0 0 0 0 0 0 0 0 1 0 0 0 0 1
Gibt es nur diese Zustände? Oder noch mehr?
Wenn ersterer, ist doch garkeine Logik notwendig.
Einfach die vier 1-aus-10 Eingänge an den BDC-Ausgang verdrahten.
Ich gehe aber mal davon aus, dass es 10-Eingangszustände (bzw 11, wenn
der Zustand ALLES-0 existiert) gibt.
In der Zeile mit dem Wert 5 ist ein Fehler. Das Ergebnis muss 0101
statt 0100 sein.
Ich muss leider gestehen, dass ich das Problem nicht verstanden habe.
Was ich verstanden habe. Du sollt eine Schaltung mit diskreten Gattern
aufbauen bzw. einen entsprechenden Term aufstellen.
Was ich nicht verstanden habe ist, was passieren soll, wenn nicht genau
1 Eingang gesetzt wurde und, ob du bei der Wahl der Operationen
eingeschränkt bist z.B nur Nands ?
mfg
SH
Michael H. schrieb:
> Ich habe nun die Funktion für f8, f4, f2 und f1 soweit fertig und> funktioniert auch.
Gut
> Die Zustände 9,7,6,5,3,0 sind ODER-verknüpft, der Ausgang negiert. Diese> Zusatzsignal (Hilftsignale) habe ich dann UND-verknüpft mit den> Funktionen f8, f4, f2, f1.
klingt doch gut
> Wie kann ich denn den ganzen Codierer realisieren?
Wie meinst du das jetzt?
Du hast doch jetzt alles was du brauchst!
Der Rest ist nur noch Bausteine im Simulationsprogramm eingeben,
miteinander verdrahten, testen und fertig.
Oder meinst du real Aufbauen?
(Einen BCD Decoder baut man nicht aus Gattern. Den kauft man fertig)
> Oder meinst du real Aufbauen?> (Einen BCD Decoder baut man nicht aus Gattern. Den kauft man fertig)
Ist zwar kein De- sondern ein En-coder, aber trotzdem gibt es so was
fertig - z.B. 74147.
Dieter Werner schrieb:
> Ist zwar kein De- sondern ein En-coder, aber trotzdem gibt es so was> fertig - z.B. 74147.
Ich glaube, es geht nicht darum, sowas aufzubauen, sondern es zu
entwickeln.
Außerdem ist es immer gut, zu wissen, wie solch ein Dekoder
funktioniert.
Wärend meiner Ausbildung (Lehre und Studium) haben wir oft solche
Schaltungen entwickelt. Damit lernt man doch so einiger. Außerdem ist
das auch sehr hilfreich, wenn man FPGAs programmieren möchte (obwohl man
dort auch mit fertigen Modulen arbeiten kann).
Nein nicht real aufbauen. Diese Schaltung soll nur simuliert werden.
Also ich kann nun aus dieser bestehenden Schaltung, also alle weiteren
aufbauen für zum Beispiel 7? Dazu müssten 3 von 4 Anzeigen aufleuchten.
Was allerdings passieren soll, wenn mehrere Eingänge gesetzt sind, ist
nicht angegeben. Somit würde ich einfach annehmen, es darf immer nur
einer gesetzt sein.
> Ich glaube, es geht nicht darum, sowas aufzubauen, sondern es zu> entwickeln.> Außerdem ist es immer gut, zu wissen, wie solch ein Dekoder> funktioniert.
Dem stimme ich vorbehaltlos zu, mein Beitrag war eher als Kommentar zu
dem vorhergehenden Post von Karl Heinz gedacht.
Zudem lässt sich in manchen Datenblättern auch ein wenig spicken wenn
die innere Schaltung mit angegeben ist (hier National Semi 74HC Logic
Family).
Michael H. schrieb:
> Nein nicht real aufbauen. Diese Schaltung soll nur simuliert werden.>> Also ich kann nun aus dieser bestehenden Schaltung, also alle weiteren> aufbauen für zum Beispiel 7?
Äh nein.
Die Schaltung, die du gepostet hast, ist ja dein Spezialencoder, der
sich um die F8, F4, F2, F1 kümmert.
Für einen richtigen, kompletten 1-aus-10 zu BCD Encoder, geht dassselbe
Spielchen wieder von vorne los.
Du hast deine Tabelle, daraus entwickelst du die Gleichungen,
vereinfachst diese und wenn du denkst, das ist einfach genug bzw. du mit
Vereinfachen nicht mehr weiter kommst, dann baust du das in der
Simulation auf.
Sinn der Übung ist bei solchen Sachen ja normalerweise nicht die
Simulation an sich, sondern der Vorgang des Vereinfachens. Das ist der
Knackpunkt und das muss man üben, um Praxis zu bekommen.
Das ist wie Mathe. Im Prinzip ist Gleichungen mit 1 Variable lösen ganz
einfach und trotzdem muss man das immer wieder üben, weil man am Anfang
ständig Vorzeichenfehler macht.
Also rann an die Bulleten:
Gleichungen aufstellen: Wann muss das Lämpchen für die Nummer 1
leuchten? Welche Bedingungen gelten da.
Selbiges für 2, 4, und 8
Du hast dann 4 Gleichungen. Die versuchst du mit De'Morgan zu
vereinfachen. Vielleicht finden sich auch Teile in den 4 Gleichungen,
die identisch sind und herausgezogen werden können. Vielleicht muss man
auch einen Teil einer Gleichung erst mal mit einem De'Morgan umformen,
bis sich gemeinsame Teile ergeben etc.
Wenn man nicht übt entwickelt man keinen Blick dafür, in welche Richtung
das Umformen einer Gleichung sinnvoll ist und in welche nicht. Genauso
wie in Mathe.
Hallo,
ich hab das Ganze nun so realisiert: (n = negiert)
Gleichungen mit Vereinfachung
f8 = n(7+6+5+4+3+2+1+0)*(n9*8+9*n8)
f4 = n(9+8+5+4+3+2+1+0)*(7*n6+n7*6) + n(9+8+7+6+3+2+1+0)*(5*n4+n5*4)
f2 = n(9+8+5+4+3+2+1+0)*(7*n6+n7*6) + n(9+8+7+6+5+4+1+0)*(3*n2+n3*2)
f1 = n(8+6+4+2+0)*(9+7+5+3+1)
Bei f4 und f2 sind die beien Glieder:
n(9+8+5+4+3+2+1+0)*(7*n6+n7*6) gleich, somit spart man sich eines.
Habe diese Schaltung nun mal umgesetzt und getestet, soweit funktioniert
es.
Kann man dies noch weiter vereinfachen?