Hallo Ich möchte in einem STD_LOGIC_VECTOR(37 downto 0) gezielt Bits setzen und rücksetzen. Habe dafür folgendes gewählt: if XA_4 = '1' then stat_reg(4)<='1'; else stat_reg(4)<='0'; end if; Wenn ich mir die ganze Sache nun in Modelsim betrachte werden jedoch die Bit's nur in einen undefinierten Zustand gehoben (X) --> jedoch nicht '1' Woran kann das liegen? Ist der Ausdruck stat_reg(4)<='1' falsch? (Was auch möglich wäre, wäre das stat_reg mittels einer Maske logisch oder zu verknüpfen. So könnten die Bits auch gesetzt / rückgesetzt werden.)
Das muss gehen. Es hört sich aber so an, als ob der Vektor noch woanders gesetzt wird und damit ein Kollision auftritt. Ist sichergestellt, daß es keine teizliche Überlappung der Zuweisungen gibt? Wird der Vektir irgendwo genullt ?
if Konstrukt heisst üblicherweise process heisst sensitivity list. Ist die unvollständig? sind die signale in der list gesetzt? Also dein codeschnipsel ist OK, der Fehler liegt in den anderen zeilen.
1 | process(clk_i,rst_i) --sensetiivizy list (Takt, async. reset) |
2 | if rst_i = '1' then --synchroner reset |
3 | stat_reg(4)<='0' |
4 | elsif rising_edge(clk_i) then |
5 | --dein code
|
6 | if XA_4 = '1' then |
7 | stat_reg(4)<='1'; |
8 | else
|
9 | stat_reg(4)<='0'; |
10 | end if; |
11 | --ende dein code
|
12 | end if; |
13 | end process; |
ok danke. hab gerade nicht die möglichkeit den fehler weiter zu suchen. aber ich denke auch, dass da ein kollision auftritt. benutze das signal in 2 prozessen... ich schau mal, wenn es wieder möglich ist. danke"!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.