Hallo,
wie koennte ich folgenden VHDL code verkuerzt schreiben?
Das Ganze soll ein 96zu1 Multiplexer mal werden.
1 | with S select
|
2 | Y <= E(0) when "0000000",
|
3 | E(1) when "0000001",
|
4 | ...
|
5 | E(96) when "1100000"
|
Und gleich noch die Frage nach der Testbench. Koennte ich da eleganter
Weise auch diese in kuerzerer Form schreiben?
1 | E1 <= "0000...96Nullen...0000",
|
2 | "0000...95Nullen...0001" after 480ns,
|
3 | usw...
|
4 |
|
5 | S1 <= "0000000",
|
6 | "0000001" after 5ns,
|
7 | usw...
|
Ich habe mir zur Grundlage den 4X1 Multiplexer aus dem
Reichardt-Schwarz-Buch gemacht. Die Funktionsweise ist mir klar, ich
habe das Beispiel auch schon erweitert und getestet.
Aber nun wollte ich 96 parallele Eignagssignale serialisieren und da
komme ich mit dieser Schreibweise nicht weiter. Das wird eifach zu viel
und ich bekomme eine Knoten im Kopf. Selbst mit copy+paste ist das
muehsame Tipparbeit, selbst wenn die Funktion klar ist.
Und hier noch der VHDL code fuer den 4X1 Multiplexer.
1 | library IEEE;
|
2 |
|
3 | use IEEE.std_logic_1164.all;
|
4 |
|
5 | entity MUX4X1 is
|
6 |
|
7 | port( S : in bit_vector(1 downto 0);
|
8 | E : in bit_vector(3 downto 0);
|
9 | Y : out bit);
|
10 |
|
11 | end mux4x1;
|
12 |
|
13 | architecture behavior of MUX4X1 is
|
14 |
|
15 | begin
|
16 |
|
17 | with S select
|
18 | Y <= E(0) when "00",
|
19 | E(1) when "01",
|
20 | E(2) when "10",
|
21 | E(3) when "11";
|
22 |
|
23 | end behavior;
|
Gruss,
Mark