www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Frage zu VHDL Code


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.)

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Euch!

Autor: FPGA Spezialist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ?

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.


process(clk_i,rst_i)  --sensetiivizy list (Takt, async. reset)
 if rst_i = '1'  then --synchroner reset
  stat_reg(4)<='0'
 elsif rising_edge(clk_i) then
 --dein code
  if XA_4 = '1' then 
   stat_reg(4)<='1'; 
  else 
   stat_reg(4)<='0'; 
  end if;
 --ende dein code
 end if;
end process;

Autor: Fpga Kuechle (fpgakuechle) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein kommantar ist falsch, der reset ist asnynchron :-(

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.