Achim S. schrieb:
> Tob Ias schrieb:
>> Ich möchte einen Multiplexer
>> erstellen, der abhängig von einer beliebigen Anzahl an Eingängen ist.
>
> du wolltest wahrscheinlich schreiben:
> for i in n-1 downto 0 generate...
>
> funktionieren würde stattdessen:
>
> Generic(n : Integer := 8);
> Port (
> eingaenge: in std_logic_vector(n-1 downto 0);
> ....
Vielen Dank für deine Antwort. Ich hab nun versucht einen Multiplexer zu
erstellen. Mit der von dir angegebenen Portmap (ohne Umweg über eine
for-loop) gibt's auch keine Probleme, wenn ich den Syntax durch die IDE
checken lassen will.
Aber in der Architecture des Multiplexers gibt es ein Problem. Hier hat
dies wohl wieder irgendwie mit den verwendeten Vektoren zu tun.
Die Fehlermeldung lautet: "AND can not have such operands in this
context."
Hier noch mein VHDL-Code:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.NUMERIC_STD.ALL;
|
4 |
|
5 | entity multiplexer is
|
6 |
|
7 | Generic(n : Integer := 8);
|
8 | Port( inputs_A : in STD_LOGIC_VECTOR (n-1 downto 0);
|
9 | inputs_B : in STD_LOGIC_VECTOR (n-1 downto 0);
|
10 | SEL : in BIT;
|
11 | nE : in BIT;
|
12 | C_out : in STD_LOGIC_VECTOR (n-1 downto 0));
|
13 |
|
14 | end multiplexer;
|
15 |
|
16 |
|
17 |
|
18 | architecture Behavioral of multiplexer is
|
19 |
|
20 | begin
|
21 |
|
22 | --unbedingte Signalzuweisung für Multiplexer
|
23 | C_out <= (inputs_A AND NOT(SEL)) OR (inputs_B AND SEL) or nE;
|
24 |
|
25 | end Behavioral;
|
Was muss ich an dieser unbedingten Signalzuweisung ändern, dass der
Multiplexer korrekt erstellt wird? Ein einfaches
1 | std_logic_vector(unsigned(inputs_A))
|
, wie in der Frage vorher, tut's jedenfalls nicht. Da bekomme ich gleich
noch mehr Fehler: "AND can not have such operands in this context." und
"type conversion std_logic_vector is not an array index prefix.".
Vielleicht kann mir ja nochmal jemand weiterhelfen! Danke!