record und alias kombinierbar

Gast #5133471
Lesenswert?

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
Gast #5133502
Lesenswert?

Ich würde mir dafür Funktionen bauen, die aus dem verschachtelten Record 
einen breiten Bitvector machen (und umgekehrt).
Damit kann man solche Records z.B. auch durch generische FIFOs schicken.

Zusätzlich machst Du Dir noch eine Funktion, die aus dem Vector ein Byte 
ausschneidet.

Ich weiß nicht, was die Tools dazu sagen, wenn Du einen Alias mit 
Records kombinierst und umgekehrt.

Duke
Gast #5133529
Lesenswert?

Duke Scarring schrieb:
> Ich würde mir dafür Funktionen bauen, die aus dem verschachtelten Record
> einen breiten Bitvector machen (und umgekehrt).
Vielen Dank für die Antwort, ich werde mal schauen, ob mir der Ansatz 
weiterhilft.

Sigi schrieb:
> Warum teilst du dein Record nicht gleich entsprechend
> auf (kostet dich damit natürlich zwei Schleifen etc.)?
Leider besteht mein Record nicht nur aus 2 Feldern, sodass ich beim 
senden etc. jeweils ca 16 Schleifen hätte. Deswegen kam mir der Gedanke 
mit dem Alias.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren