Forum: Mikrocontroller und Digitale Elektronik Codierer, 1-aus-10-Code zu BCD


von Michael H. (itse)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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)

von Peter D. (peda)


Lesenswert?

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

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

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.

von Michael H. (itse)


Angehängte Dateien:

Lesenswert?

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.

von brumbaer (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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)

von Dieter W. (dds5)


Lesenswert?

> 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.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

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).

von Michael H. (itse)


Lesenswert?

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.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

1-aus-10 bedeutet ja auch, dass nur einer von 10 gesetzt ist. Ansonsten 
müsste es anders heißen.

von Dieter W. (dds5)


Lesenswert?

> 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).

von Karl H. (kbuchegg)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?


von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Pst, musst Du doch nicht verraten :-o

von Michael H. (itse)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.