Hallo zusammen,
ich möchte gerne Frames verarbeiten, die aus mehreren Datenfeldern
bestehen. Hierfür verwende ich Records wie z.B. hier definiert:
1 | type myRecord_t is record
|
2 | metaInfos : std_logic;
|
3 | data : std_logic_vector(1087 downto 0);
|
4 | -- data besteht aus 64 bit Header und 1024 Bit Payload
|
5 | end record;
|
6 |
|
7 | signal frame1_s : myRecord_t;
|
Nun würde ich das data Feld gerne in weitereTeile unterteilen, z.B in
Header und Payload, um folgende Zuweisungen vornehmen zu können:
1 | -- Zuweisung bestimmter Teile von frame1_s.data
|
2 | frame1_s.header <= (others => '1');
|
3 | frame1_s.payload <= (others => '0');
|
Gleichzeitig möchte ich aber auch auf frame_s.data bitweise (bzw.
Byteweise) zugreifen können.
1 | for i in frame1_s.data'range loop
|
2 | -- bitweises verarbeiten des gesamten Frames
|
3 | ...
|
4 | end loop;
|
Gibt es eine möglichkeit, einen Alias für Typen zu definieren, sodass
alle signale von diesem Typen automatisch die definierten Aliase
verwenden können? Also so was ähnliches wie dieses konstrukt:
1 | alias myRecord_t.header : std_logic_vector(63 downto 0) is myRecord_t.data(1087 downto 1024)
|
2 | alias myRecord_t.payload : std_logic_vector(10233 downto 0) is myRecord_t.data(1023 downto 0)
|
Oder seht Ihr einen alternativen Kodierungsansatz?
Ich freu mich auf Eure Anregungen