Hallo,
ich habe das folgende Problem und würde gerne wissen ob VHDL eine
einfache Lösung zulässt:
Ich benutze im XILINX EDK den Import Peripheral Wizard um mir den VHDL
Rahmen für eine IP erzeugen zu lassen. Ich benötige einige Register und
in dem erzeugten VHDL Code wird dann ein Internes Signal wie z.B.
1 | signal slv_reg0 : std_logic_vector(0 to C_SLV_DWIDTH-1);
|
erzeug. Dieses Signal ist in dem Fall 32 bit breit.
Jetzt möchte ich einzelne Subteile dieses Registers an unterschiedliche
in VHDL beschriebene Schaltungen weiterreichen. Die verwendeten Signale
sollen (zwecks code lesbarkeit) sinnvolle Namen erhalten. Ich würde also
zum Beispiel die folgenden beiden zusätzlichen internen Signale
definieren und die Zuweisung wie folgt machen:
1 | architecture IMP of user_logic is
|
2 | signal slv_reg0 : std_logic_vector(0 to C_SLV_DWIDTH-1);
|
3 | signal control_channels : std_logic_vector(7 downto 0);
|
4 | signal control_runmode : std_logic_vector(4 downto 0);
|
5 | begin
|
6 |
|
7 | --USER logic implementation added here
|
8 | control_channels <= slv_reg0(0 to 7);
|
9 | control_runmode <= slv_reg0(8 to 12);
|
ab jetzt kann ich in meinen weiteren VHDL Code auf control_channels und
control_runmode lesend zugreifen. Da das Signal slv_reg0 ein internes
Signal ist kann ich sowohl lesend als auch schreibend darauf zugreifen -
wie kann ich aber lesend und schreibend auf control_runmode zugreifen?
Im Prinzip habe ich ja nur für einige Bits einen neuen Namen definiert.
Ich suche also eine Signalzuweisung die das folgende macht:
1 | control_runmode <=> slv_reg0(8 to 12);
|
(Es ist mir klar das ich dies nicht so hinschreiben kann...)
Gibt es ein ähnliches Konstrukt oder muss ich mindestens noch ein
zusätzliches Read/Write Signal und getrennte Lese/Schreibsignale
einführen?
Gruß
Birk