Hallo allseits, Irgendwie stehe ich völlig auf dem Schlauch. Ich habe ein Problem und weiß nichtmal, wie ich es ansatzweise lösen könnte. Ich habe 5 Eingangssignale und benötige ein High Ausgangssignal, wenn höchstens 3 dieser Signale High sind. Bei 4 oder 5 Leitungen auf High soll der Ausgang also auf LOW liegen. Die Schaltung müsste also die Anzahl der aktiven Signale zählen können. Wie kann man dieses Problem mit diskreten oder TTL/CMOS Bausteinen lösen? Ich würde ja einen uC benutzen, der kommt aber auf Grund eines Vetos nicht in Frage.
> Ich würde ja einen uC benutzen, der kommt aber auf Grund eines Vetos > nicht in Frage. Von wem kam dieses Veto und warum? Von Deinem Lehrer?
> Ich würde ja einen uC benutzen, der kommt aber auf Grund eines Vetos > nicht in Frage. Ein CPLD wäre der Baustein meiner Wahl.
So auf die Schnelle kommt mir nur eine analoge Lösung in den Sinn, z.B. zwei OP's, einen als Addierer und den anderen als Komparator beschalten. Bin mal gespannt, was dir hier epfohlen wird!
> Wie kann man dieses Problem mit diskreten oder TTL/CMOS Bausteinen
lösen?
Der Lehrer möchst sicherlich die stumpe Methode, Gleichungen
aufstellungen, minimieren, Schaltung mit AND/OR/NOT aufbauen,
damit du zeiugen kannst, daß du Quine-McCluskey verstanden hast.
Oder nur 1 Komparator, und den Addierer als Dioden-Widerstands-Netzwerk.
1 | ___ |
2 | ->|--|___|--. |
3 | | Vcc |
4 | ___ | | |
5 | ->|--|___|--o .-. |
6 | | | | |
7 | ___ | | | |
8 | ->|--|___|--o '-' |
9 | | | |
10 | ___ | | |
11 | ->|--|___|--o | |\| |
12 | o-----)---|-\ |
13 | ___ | | | >- |
14 | ->|--|___|--o o---|+/ |
15 | | | |/| |
16 | | | |
17 | .-. .-. |
18 | | | | | |
19 | | | | | |
20 | '-' '-' |
21 | | | |
22 | --- --- |
Warum zählen? Einfache Logik löst das Problem doch auch. Wertetabelle erstellen und Gleichung ableiten. Vereinfachen und dann lässt es sich sicher mit Grundgattern realisieren.
uro schrieb: > Warum zählen? Einfache Logik löst das Problem doch auch. Wertetabelle > erstellen und Gleichung ableiten. Vereinfachen und dann lässt es sich > sicher mit Grundgattern realisieren. Daran dachte ich zuerst auch. Aber es könnten ja quasi alle Leitungen High werden. Aber immer nur max. 3 auf einmal. edit Hab mich sicher blöd ausgedrückt :D Egal ich denke logisch geht da nix.
So sieht die Lösung in VHDL aus ;-)
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | |
4 | entity Comparator is |
5 | Port ( inp : in STD_LOGIC_VECTOR (4 downto 0); |
6 | outp : out STD_LOGIC); |
7 | end Comparator; |
8 | |
9 | architecture Behavioral of Comparator is |
10 | begin
|
11 | process (inp) |
12 | variable cnt : integer; |
13 | begin
|
14 | cnt := 0; |
15 | for i in 0 to 4 loop |
16 | if (inp(i)='1') then cnt := cnt+1; end if; |
17 | end loop; |
18 | if(cnt>3) then outp<='1'; |
19 | else outp<='0'; |
20 | end if; |
21 | end process; |
22 | end Behavioral; |
5 Eingangtssignale macht 32 mögliche Zustande. Mit einem 32 aus 5 Dekoder (notfalls aus kleineren Einheiten zusammensetzen), lässt du dir das in die 32 möglichen Ausgänge aufdröseln und führst alle gültigen Ausgangskombinationen mit ODER wieder zusammen.
>5 Eingangtssignale macht 32 mögliche Zustande. Mit einem 32 aus 5 >Dekoder (notfalls aus kleineren Einheiten zusammensetzen), lässt du dir >das in die 32 möglichen Ausgänge aufdröseln und führst alle gültigen >Ausgangskombinationen mit ODER wieder zusammen. Oder klassisch: Karnaugh-Tafel.
Das EPROM von früher wäre auch 'ne Möglichkeit. Da könnte dann auch festgelegt werden, wass passieren soll, wenn alle Eingänge 0 sind. Michael
>Da könnte dann auch >festgelegt werden, wass passieren soll, wenn alle Eingänge 0 sind. Das ist doch festgelegt: >>Ich habe 5 Eingangssignale und benötige ein High Ausgangssignal, wenn >>höchstens 3 dieser Signale High sind.
karadur schrieb: > Hallo > > was ist denn wenn nur 2 Eingänge H sind? Anofrderung lesen > benötige ein High Ausgangssignal, wenn höchstens 3 dieser > Signale High sind höchstens. 2 high -> Ausgang ebenfalls high.
karadur schrieb: > was ist denn wenn nur 2 Eingänge H sind? Aus dem OP: >>> ein High Ausgangssignal, wenn höchstens 3 dieser Signale High sind. Hmmm... EDIT: Pech, Zweiter, dafür aber ohne Typo ;-) > Anofrderung
... # EDCBA | Y # EDCBA | Y =============================================== 0 00000 | 1 16 10000 | 1 1 00001 | 1 17 10001 | 1 2 00010 | 1 18 10010 | 1 3 00011 | 1 19 10011 | 1 ----------------------------------------------- 4 00100 | 1 20 10100 | 1 5 00101 | 1 21 10101 | 1 6 00110 | 1 22 10110 | 1 7 00111 | 0 23 10111 | 0 ----------------------------------------------- 8 01000 | 1 24 11000 | 1 9 01001 | 1 25 11001 | 1 10 01010 | 1 26 11010 | 1 11 01011 | 1 27 11011 | 0 ----------------------------------------------- 12 01100 | 1 28 11100 | 1 13 01101 | 1 29 11101 | 0 14 01110 | 1 30 11110 | 0 15 01111 | 0 31 11111 | 0
Hallo 3 mal H ist aber noch erlaubt. Erst ab 4 mal H soll der Ausgang low sein.
Der Ausgang soll null werden wenn 4 oder 5 Signale '1' sind, richtig? a b c d e | q 0 1 1 1 1 | 0 1 0 1 1 1 | 0 1 1 0 1 1 | 0 1 1 1 0 1 | 0 1 1 1 1 0 | 0 1 1 1 1 1 | 0 Sonst ist q immer '1'. Das ergibt als die Gleichung: \(\a*b*c*d*e + a*\b*c*d*e + a*b*\c*d*e + a*b*c*\d*e + a*b*c*\d*e + a*b*c*d*\e + a*b*c*d*e) \ = not * = and + = or Das wäre doch mit diskreten Gattern einfach aufzubauen. Hab ich irgendwo einen denkfehler?
Peter Bünger schrieb:
> Die unterste Zeile ist überflüssig.
Aber nur, wenn die Gleichung umgestellt wird:
\(b*c*d*e + a*c*d*e + a*b*d*e + a*b*c*e + a*b*c*d)
EDIT:
Der war/ist doppelt: a*b*c*\d*e
4530 (MC14530) - Majority logic gate. Schaltet bei 3 aus 5, müsste mit doch auf 4 aus 5 zu erweitern sein?
Einen VHDL-Code hätt ich noch ;-)
1 | library IEEE; |
2 | use IEEE.STD_LOGIC_1164.ALL; |
3 | |
4 | entity Comparator is |
5 | Port ( inp : in STD_LOGIC_VECTOR (4 downto 0); |
6 | outp : out STD_LOGIC); |
7 | end Comparator; |
8 | |
9 | architecture Behavioral of Comparator is |
10 | begin
|
11 | outp <= '0' when inp = "1111-" or |
12 | inp = "111-1" or |
13 | inp = "11-11" or |
14 | inp = "1-111" or |
15 | inp = "-1111" |
16 | else '1'; |
17 | |
18 | end Behavioral; |
Hazeh Zimmerer schrieb: > 4530 (MC14530) - Majority logic gate. > Schaltet bei 3 aus 5, müsste doch auf 4 aus 5 zu erweitern sein? Inverter davor?
>High Ausgangssignal, wenn höchstens 3 dieser Signale High sind.
bedeutet doch auch:
High-Ausgang, wenn mindestens zwei Eingangs-Signale LOW sind.
Ein NOR-Gatter mit zwei Eingängen /(a+b) geht nur auf High
wenn beide Eingänge LOW sind.
also prüfen wir alle 10 Kombinationen
und verODERn die Ergebnisse der NORs:
/(a+b) + /(a+c) + /(a+d) + /(a+e)
+ /(b+c) + /(b+d) + /(b+e)
+ /(c+d) + /(c+e)
+ /(d+e)
Dazu bräuchte man zehn NOR und
zehn Dioden für ein Wired-OR mit 10 Eingängen.
Mfg Willi
\ = not
* = and
+ = or
WOW! Ich bin ja völlig erschlagen von eurer Kompetenz und Hilfsbereitschaft. Ihr habt mit sehr weiter geholfen. Es ging nicht darum einen Lehrer zu befriedigen sondern in eine bestehende Applikation eine Zusatzfunktion einzufügen. Ich werde es diskret anhand der Logiktabelle aufbauen, das passt am besten zu dem bisher Bestehenden. Ohne euch hätte ich da gar nicht ernsthaft drüber nachgedacht, da ich der Meinung war, dass ich dafür mindestens hundert Gatter brauchen würde. Nochmal danke, dass ihr mir auf die Sprünge geholfen habt!! Tolles Forum!
>Ich werde es diskret anhand der Logiktabelle aufbauen, Also bevor Du dir eine riesen Leiterplatte mit diskreter Logik vollstopfst würde ich die Lösung mit einem Komperator von Lothar Miller vorziehen. Ansonsten wäre ein CPLD oder ein kleiner uC das vernünftigste, VETO hin oder her!!!
Peter schrieb: > Ansonsten wäre ein CPLD ... das vernünftigste, VETO hin oder her!!! ACK, denn in dieses CPLD könnte noch einiges an zusätzlicher Logik (die jetzt noch drumrum aufgebaut ist) hineingepackt werden...
Peter schrieb: > Also bevor Du dir eine riesen Leiterplatte mit diskreter Logik > vollstopfst würde ich die Lösung mit einem Komperator von Lothar Miller > vorziehen. Übertreib mal nicht so. Anbei die Schaltung mit nur 3 TTL-ICs. Peter
>Anbei die Schaltung mit nur 3 TTL-ICs.
Das Ergebnis müsste noch mal invertiert werden, oder ?
Gast schrieb: > Das Ergebnis müsste noch mal invertiert werden, oder ? Ja, ich hab den falschen IC gegriffen. IC1 muß natürlich ein 74HC86 (EXOR) sein! Peter
>>Anbei die Schaltung mit nur 3 TTL-ICs. >Das Ergebnis müsste noch mal invertiert werden, oder ? Das sehe ich auch so, da wären wir also doch wieder bei 4 TTL-ICs gegenüber einem Komperator im SO-8 Gehäse
So, jetzt die richtige Schaltung. Der IC1B macht die Invertierung. Hab ja schon ewig nichts mehr mit TTL gemacht, daher die Verwechslung 74HC86 mit 74HC32. Peter
@Matthias Lipinsky was ist da mit Y in der Tabelle los bei #7? > die Anzahl der aktiven Signale zählen können Bei 5 mal L darf kein H gemeldet werden.
>@Matthias Lipinsky >was ist da mit Y in der Tabelle los bei #7? Das war der eingebaute Fehler, ob aufgepasst wird. Eins mit Bienchen. Setzen. ;-)
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.