Multiplexer 5x2 in VHDL

OP #6101008
Lesenswert?

Hallo!

Ich versuche schon seit längerem diesen Multiplexer in VHDL umzusetzen. 
Da ich Anfänger bin, stehe ich da vor einem echten Problem. Ich möchte 
die beiden Ausgänge Y1 und Y2 jeweils mit unterschiedlichen Signalen 
ansteuern. S0 bis S2 sind dabei  meine Steuereingänge für den Mux.

Für die einzelnen Funktionen ergeben sich folgende Zusammenhänge:

S0 (Switch0 or Switch1)
S1 (Switch10 or Switch11)
S2 (Switch15)


Wie kann ich das in VHDL umsetzen? Ich bekomme das einfach nicht auf die 
Kette.

Danke für das Feedback!

Gruß
Angehängte Dateien:
Gast #6101354
Lesenswert?

Solche selbsterklärenden Dinge müssen beim Lesen klar sein. Wer da schon 
ein Problem hat, der sollte die Finger von Digitaltechnik lassen, denn 
der hat ein Denkproblem und kriegt es wohl auch nicht hin, seinen 
Hamburg-Besuch zu planen:

Hagenbeck_Zoo <= summer and (not raining) and enough_money

Hagenbeck_Aquarium <= ((not summer) or (summer and raining)) and 
enough_money

Planten_un_Blomen <= (not raining) and (not enough_money)

Europa_Passage <= raining and (not enough_money)
Moderator (Firma: Titel) Persönliche Seite #6101501
Lesenswert?

Stefan M. schrieb:
> Wie kann ich das in VHDL umsetzen?
Das sind effektiv 2 nebenläufige "when else" Zuweisungen.

> Ich bekomme das einfach nicht auf die Kette.
Was hast du denn schon? Und wo genau klemmt es?

Stefan M. schrieb:
> S0 (Switch0 or Switch1)
> S1 (Switch10 or Switch11)
> S2 (Switch15)
Also etwa so?:
S(0) <= Switch0 or Switch1;
S(1) <= Switch10 or Switch11;
S(2) <= Switch15;

> S0 bis S2 sind dabei  meine Steuereingänge für den Mux.
Wenn du es schlau angelegt hast, dann hast du diese Select-Eingänge 
genauso wie den Eingangsvektor a als std_logic_vector(2[bzw 4] downto 0) 
angelegt. Dann kannst du das z.B. so zuweisen:
1
   Y1 <= a(0) when s="001" else
2
         a(2) when s="010" else
3
         a(4) when s="100" else
4
         '0'                   -- alle anderen Kombinationen von s
5

6
   Y2 <= a(1) when s="001" else
7
         a(3) when s="010" else
8
         a(4) when s="100" else
9
         '0'                   -- alle anderen Kombinationen von s
OP #6103291
Lesenswert?

Ich habe das Programm zum Testen entsprechend
1
signal SEL: STD_LOGIC_VECTOR (0 to 2);
2
signal a: STD_LOGIC_VECTOR (2 downto 0);
3
signal Y1, Y2: STD_LOGIC;
4
.
5
.
6

7
 a(0) <= '1' when (BLINK_TASTEN_LINKS = '1') else '0';
8
 a(1) <= '1' when (BLINK_TASTEN_RECHTS = '1') else '0';
9
 a(2) <= '1' when (WBA = '1') else '0';
10

11
 SEL(0) <= Sw0;
12
 SEL(1) <= Sw10;
13
 SEL(2) <= Sw15;
14
    
15

16
with SEL select
17

18
    
19
 Y1 <=  a(0) when "100",
20
        a(1) when "010",
21
        a(2) when "111",  
22

23
'0' when others;                  
24
    
25

26

27
Y2 <=  a(2) when "111",  
28

29
'0' when others;
30

31

32
           
33
LED1 <= Y1;
34
LED2 <= Y2;

mittels nebenläufigen Anweisungen aufgebaut,allerdings ist nun das 
Problem, dass ich nur Y1 oder Y2 zum Schalten verwenden kann, beide 
zusammen funktionieren nicht.Da bekomme ich Errors in Zeile Y2: type 
'boolean' does not match with a string literal.Syntax error near 
"others". Das ist eigentlich Quatsch, da Y2 ohne Y1 funktioniert.
Was könnte das Problem sein?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren