www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Attribute und Aufzählungstypen


Autor: Hans-Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich möchte per Tastendruck bzw. Druck auf den Drehschalter am Spartan 3 
AN Starter Kit eine Zustandsmaschine in den nächsten Zustand schalten.
Hier die entsprechende Deklaration.
type wave_mod is (sin_wave_mod, square_wave_mod);
signal modus : wave_mod;
Und hier die Anweisung.
if modus /= wave_mod'high
then
  modus <= wave_mod'succ(modus);
else
  modus <= wave_mod'low;
end if;
Kurz gesagt: Falls noch nicht der letzte Zustand erreicht wurde dann 
wechsle in den nachfolgenden Zustand, ansonsten wechsle in den ersten 
Zustand. Das ganze sollte nur in Abhängigkeit von dem Signal modus 
definiert werden; der zugehörige Type sollte nicht in der Anweisung 
auftauchen.
modus'base'high resultiert in einer Fehlermeldung "non authorized 
access".
Was habe ich falsch verstanden ?

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise braucht's eine Klammer (modus'base)'high.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Pech: die XST-Synthese kanns nicht :-/

In der Simulation klappt alles (Bild):
architecture Behavioral of Attributes is
type wave_mod is (sin_mod, triangle_mod, trapez_mod, saw_mod, square_mod);
signal modusA : wave_mod := trapez_mod;
signal modusB : wave_mod := trapez_mod;
begin
  process begin
     wait until rising_edge(clk);
     if  (modusA /= wave_mod'high)
     then modusA <= wave_mod'succ(modusA); 
     else modusA <= wave_mod'low; 
     end if;
  end process;

  process begin
     wait until rising_edge(clk);
     if  (modusB /= wave_mod'right)
     then modusB <= wave_mod'rightof(modusB); 
     else modusB <= wave_mod'left; 
     end if;
  end process;
end Behavioral;

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Pech: die XST-Synthese kanns nicht :-/

siehe auch:

xst.pdf (9.2i) ->
Ch. 6 XST VHDL Language Support ->
VHDL Constructs Supported in XST ->
Table 6-19, “VHDL Specifications” ->
Attribute ->

Supported for some predefined attributes
only: HIGH, LOW, LEFT, RIGHT, RANGE,
REVERSE_RANGE, LENGTH, POS,
ASCENDING, EVENT, LAST_VALUE.
Otherwise, ignored.

ergo: wenn man Syntheisieren will, sollte man sich das Dokument 
(xst.pdf) immer mal wieder zu Gemüte führen.

Duke

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei die Aussage
> Otherwise, ignored.
nicht stimmt, weil es ja nicht ignoriert wird, sondern (zum Glück) zu 
einem Fehler führt.

> ergo: wenn man Syntheisieren will, sollte man sich das Dokument
> (xst.pdf) immer mal wieder zu Gemüte führen.
Daraus stammt mein Wissen um das Pech von Hans-Werner ;-)
Aber man kanns ja mal probieren, es hätte ja sein können, die Tools 
beherrschen den Syntax, nur die Doku weiß nichts davon.

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.