Forum: FPGA, VHDL & Co. Jedes n-te bit im vektor setzen


von MiniBob (Gast)


Lesenswert?

Hi, Leute.

Erstmal möchte ich sagen, dass ich nicht wirklich viel Erfahrung mit 
VHDL und Co habe, arbeite damit seit ca. 3 Monaten.

Nun zur meiner Frage. Ich habe ein std_logic_vector(0 to 1024) und eine 
Zahl n. Ich möchte nun jedes n-te bit im Vektor auf 1 setzen. Dazu habe 
ich folgenden Code:

p : process (go_bit) --go_bit wird einen clock lang auf 1 gesetzt als 
startsignal
begin

if go_bit = '1' then
  for i in 0 to (1024-n)/n
    my_vector(n + (i*n)) <= '1';
  end loop;
end if;
end process;

Danach folgt noch einiges, was hier eher unwichtig ist, nur so viel: ich 
gebe am Ende den Vektor Stück für Stück über jtag aus (die Ausgabe 
funktioniert auch bei anderen Bausteinen, da ist also der Fehler 
ausgeschlossen). Nun, bei der Ausgabe kriege ich 1024 x 0. Meine Frage 
daher, was mache ich falsch? Ist es überhaupt möglich so etwas zu 
machen? Irgendwie stehe ich da voll auf dem Schlauch.

Helft mir, schlaue Menschen. Danke schon mal im Vorraus ;-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

MiniBob schrieb:
> Ich habe ein std_logic_vector(0 to 1024) und eine Zahl n.
Also hat der Vektor eine Länge von 1025 Bits. Du gibst aber nur 1024 
Bits aus:
> Nun, bei der Ausgabe kriege ich 1024 x 0.
Seis drum.

> Ich habe ein std_logic_vector(0 to 1024) und eine Zahl n.
Woher kommt die "n"? Ist die Zahl zur Laufzeit veränderbar?

> ich gebe am Ende den Vektor Stück für Stück über jtag aus
Wie gibst du den über JTAG aus? Das FPGA ist wohl eher ein JTAG Slave 
und kann von sich aus nichts ausgeben. Irgendwer muss den Vektor also 
abholen...

> die Ausgabe funktioniert auch bei anderen Bausteinen
Welchen Baustein verwendest du?
Und bei welchen "anderen" funktioniert es?

> Dazu habe ich folgenden Code
Dieser Code ist mit Verlaub ein Krampf, denn er beschreibt 
schlimmstenfalls 1025 Latches.

> Meine Frage daher, was mache ich falsch?
Du beschreibst nicht dein Problem, sondern deinen Lösungsansatz. Du 
gibst nur Bruchteile der nötigen Information, die zudem in sich 
inkonsistent sind. Lies einfach deine Frage nochmal so durch, als ob du 
dein Problem nicht kennen würdest. Wird dir klar, was dein Problem ist? 
Nein? Ebenso geht es allen anderen...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.