zählende Schaltung

Gast #1412371
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.
Gast #1412386
> 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?
Gast #1412396
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!
Gast #1412411
> 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.
Moderator (Firma: Titel) Persönliche Seite #1412413
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
                      ---   ---
Gast #1412414
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.
#1412419
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.
Moderator (Firma: Titel) Persönliche Seite #1412422
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;
#1412426
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.
Gast #1412434
>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.
Gast #1412465
>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.
Gast #1412484
...

 #   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
Gast #1412499
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?
Moderator (Firma: Titel) Persönliche Seite #1412528
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;
Gast #1412553
>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
Gast #1413332
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!
Gast #1413361
>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!!!
#1413386
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
Angehängte Dateien:
Gast #1413643
>>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
Gast #1414175
@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.
Gast #1414436
>@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.

;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.