Hallo zusammen,
ich habe folgendes Problem.
Ich habe drei entity, mit je einem INOUT Port u.a.
1 | entity Entity1 is
|
2 | port (
|
3 | Port1 : INOUT std_logic;
|
4 | );
|
5 | end entity Entity1;
|
6 | -------------------------------
|
7 | entity Entity2 is
|
8 | port (
|
9 | Port2 : INOUT std_logic;
|
10 | );
|
11 | end entity Entity1;
|
12 | -------------------------------
|
13 | entity Entity3 is
|
14 | port (
|
15 | Port3 : INOUT std_logic;
|
16 | );
|
17 | end entity Entity1;
|
Nun möchte ich im Topfile diese drei Entity instanziieren und mit Hilfe
eines Signals immer zwei miteinander verknüpfen. Dazu erstelle ich mir
einen Mux, der ebenfalls im Topfile instanziiert wird und die
Umschaltung regelt.
1 | entity Mux is
|
2 | port (
|
3 | signal: IN std_logic;
|
4 | Port1 : INOUT std_logic;
|
5 | Port2 : INOUT std_logic;
|
6 | Port3 : INOUT std_logic;
|
7 | );
|
8 | end entity Mux ;
|
9 | architecture rtl of Mux is
|
10 | begin
|
11 | if signal = '1' then
|
12 | Port2 <= Port1;
|
13 | else
|
14 | Port3 <= Port1;
|
15 | end if;
|
16 | end architecture rtl;
|
Da nun alle Signale bidirektional sind, gewinne ich ja durch die
Zuweisung in der if-Abfrage nichts, denn das dürfte ja immer nur in eine
Richtung funktionieren.
Wie kann ich diese bidirektionalen Signale verknüpfen, so dass sie in
beide Richtungen verknüpft sind?
Vielleicht so?
1 | if signal = '1' then
|
2 | Port2 <= Port1;
|
3 | Port1 <= Port2;
|
4 | else
|
5 | Port3 <= Port1;
|
6 | Port1 <= Port3;
|
7 | end if;
|
Oder anders gefragt:
Wie beschreibe ich eine bidirektionale 1zu1 Verbindung in VHDL?
Vielen Dank!
André