Zugriff auf das N-te Bit eines jeden Vector eines Arrays (VHDL)

OP #5073871
Hi Leute,
Sorry, dass ich noch mal eine neue Diskussion erstellen muss, aber ich 
komme gerade nicht weiter. Und zwar hab ich das Problem, das ich ein 
Array mit Breite A der Vektoren mit der Breite B deklariere.
1
type CxD is array (channel_count+1 downto 0)--A of std_logic_vector (data_bus_width-1 downto 0)--B;
2
signal demux_to_counter: CxD;
Beim Versuch, auf jedes n-te Bit (n liegt in B) aller A Vectoren 
zuzugreifen, was ich mit der Zeile
1
data_out => demux_to_counter(channel_count+1 downto 0)--A(j)--n,
mache, kommt ein Fehler raus
1
Index value <n> is not in Range of array <demux_to_counter<A:0>>
Könnte mir jemand einen Anstoß geben, damit ich vom Schlauch weg trete?

Falls es jemanden interessiert, der komplette Code ist angehängt.

MfG
Angehängte Dateien:
#5073970
Ich nehme an, das data_out vom Typ std_logc ist (diese Info fehlt in 
Deinem Thread).

Du hast bei Deinem Zugriff nur eine Dimension angegeben, das Tool nimmt 
also an, dass Du den ganzen std_logic_vector zuweisen willst, und nicht 
Element n. Versuchs mal so:
1
data_out <= demux_to_counter(SelectedVector)(n);
#5074011
Viktor B. schrieb:
> Und ein SelectedVector gibt es nicht. Der Zugriff muss auf alle Vektoren
> gleichzeitig passieren.

Ich denke dass dies nicht direkt in einem Aufwisch geht. Vielleicht aber 
so:
1
   for SelectedVector in 0 to A-1 loop
2
     data_out(SelectedVector) <= demux_to_counter(SelectedVector)(n);
3
   end loop;

Du musst Dir natürlich bewusst sein, dass Du damit gleich A Selektoren 
der Breite channel_count generierst.
Gast #5092829
Du definierst  einen zweiten Typ, mit vertauschten Zeilen und Spalten, 
Einem Signal dieses Typs weist Du dann das demux_to_counter-Signal 
bitweise zu. Dazu brauchst Du zwei verschachtelte GENERATE-loops. Das 
ist etwas Schreibarbeit, erzeugt aber keine zusätzliche Hardware.
Anschließend kannst Du auf die einzelnen Spaltenvektoren über den 
passenden Index zugreifen.

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.