record und alias kombinierbar

Gast #5133471
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
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
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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.