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.
Hallo, die komplette Liste sieht, die ich aufgestellt habe sieht so aus: Deziamlzahl 1-aus-10-Code BCD-Code 9 8 7 6 5 4 3 2 1 0 8 4 2 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 1 0 3 0 0 0 0 0 0 1 0 0 0 0 0 1 1 4 0 0 0 0 0 1 0 0 0 0 0 1 0 0 5 0 0 0 0 1 0 0 0 0 0 0 1 0 0 6 0 0 0 1 0 0 0 0 0 0 0 1 1 0 7 0 0 1 0 0 0 0 0 0 0 0 1 1 1 8 0 1 0 0 0 0 0 0 0 0 1 0 0 0 9 1 0 0 0 0 0 0 0 0 0 1 0 0 1 Nun soll daraus ein Codierer entstehen, der den 1-aus-10-Code in den BCD-Code umwandelt. Zudem soll ich die Schaltfunktionen f8,f4,f2 und f1 entwerfen. Ich habe nun die Funktion für f8, f4, f2 und f1 soweit fertig und funktioniert auch. 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. Ich habe ein Bild meiner Schaltung angehängt. Ich entschuldige mich schon im voraus für die Unübersichtlichkeit. Wie kann ich denn den ganzen Codierer realisieren? Bedankt.
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.
1-aus-10 bedeutet ja auch, dass nur einer von 10 gesetzt ist. Ansonsten müsste es anders heißen.
> 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?
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.