Hallo zusammen,
ich habe gerade einen Knoten im Kopf und hoffe, dass ich ihn mit Eurer
Hilfe lösen kann.
Im Bild kann man sehen, was ich in etwa vorhabe:
Ich habe 12 Eingangspins, die jeweils eine doppelte Funktion haben. Die
Funktion kann mit einem mode-Bit (der 13. Pin) umgeschaltet werden. Ziel
ist es, mit diesem Mode-Pin Teile zu überbrücken.
Ich gebe also entweder alle 12 bit an Instanz 0, oder eben zwei 6bit
Werte an Instanz 1.
Nun stehe ich irgendwie auf dem Schlauch, wie ich das lösen kann O_o
1 | entity XYZ is
|
2 | port (
|
3 | CLK : in std_logic;
|
4 | NRES : in std_logic;
|
5 | INPUT : in std_logic_vector (11 downto 0;
|
6 | MODE : in std_logic;
|
7 | OUTPUT : out std_logic
|
8 | );
|
9 | end entity XYZ;
|
10 |
|
11 | ...
|
12 |
|
13 | i0 : instanz0
|
14 | port map (
|
15 | INPUT => input_i0,
|
16 | OUTPUT1 => output1_i0,
|
17 | OUTPUT2 => output2_i0
|
18 | );
|
19 |
|
20 | i0 : instanz1
|
21 | port map (
|
22 | INPUT1 => input1_i1,
|
23 | INPUT2 => input2_i1,
|
24 | OUTPUT => output_i1
|
25 | );
|
26 |
|
27 | -- Signale umswitchen
|
28 | bypass : process
|
29 | begin
|
30 |
|
31 | if MODE = '1' then
|
32 | input_i0 <= INPUT;
|
33 | input1_i1 <= output1_i0;
|
34 | input2_i1 <= output2_i0;
|
35 | else
|
36 | input1_i1 <= INPUT(11 downto 6);
|
37 | input2_i1 <= INPUT( 5 downto 0);
|
38 | end if;
|
39 |
|
40 | OUTPUT <= output_i1;
|
41 | end process;
|
42 |
|
43 | ...
|
Irgendwie habe ich das Gefühl, dass es bei dieser Methode noch ein
Hacken gibt bzw. man die ganze Sache noch etwas einfacher/eleganter
lösen kann.
Leider habe ich gerade kein ISE da zum Ausprobieren und Testen.
Ich wäre für Hinweise sehr dankbar!
Phil