www.mikrocontroller.net

Forum: FPGA, VHDL & Co. ABEL-> VHDL Übersetzung


Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag zusammen,

hätte mal eine Frage zu folgendem Problem, Übersetzung:

Wenn jetzt im ABEL-Code steht, zB.:

teiler:=teiler+1;
teiler.clk=takt;

Das übersetzt, in VHDL, sieht so aus:

if rising_edge(takt) then
   teiler<=teiler+1;
end if:

IST KLAR!!

Jetzt gibts aber ABEL-Programme, in denen nur eine Registerzuweisung
erfolgt und sonst nichts!
Da ist das Problem:

Wie könnte man das in VHDL übersetzen, wenn nur steht:

teiler.clk=takt;

Weiß da nicht weiter, weiß zwar das teiler taktabhängig gemacht wird,
nur wie man das in VHDL übersetzen kann, leider nicht!

Und noch etwas: (:=) bedeutet in ABEL, speichernd, gibts so etwas auch
für VHDL?

Gruß Andi

Autor: Max Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sie das ganze och mal ein wenig HW näher.

Speichernd bedeutet ein Flip-Flop.

nicht speichernd kein Flip-Flop.

Somit bedeutet:
teiler:=teiler+1

wohl was? Richtig ein oder mehrere Flipflops wo der/die Zustände am
D-Eingang die/den Zustand von den Q Ausgängen +1 gesetzt wird.

Das hast du ja auch schon in dem VHDL Prozess gemacht.

Nun zur eigentlichen Frage.
teiler.clk=takt

Was hat ein Clock eingang? -> Richtig ein Flip-Flop
Somit wird der Clockeingang des oder der FlipFlops Teiler mit dem
Signal oder Eingang Takt verbunden. Deshalb ist hier auch kein:=
sondern nur =. Ist doch eigentlich ganz einfach.

Gruß

Max

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke dir, für die kleine Aufklärung!

Habe mit ABEL nur wenig gearbeitet und da nicht intensiv und das ist
schon solange her, aber jetzt ists klar!

Aber, deine Erklärung klingt recht logisch, Danke!

Gruß Andi

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe bei dieser Sache noch immer einen  kleinen Hänger.

Die Erklärung, von dir, ist toll aber ich verstehe noch immer nicht
ganz, wie ich das in VHDL realisiere!

Auszug aus Abel-Datei:

eins:=ein;
eins.clk=takt;

Würde das stimmen?

if rising_edge(takt) then
  eins<=ein;
end if;

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt perfekt

Autor: andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke tobi!

Aber was, wenn nur ein Ausdruck steht?

-- status = 4Bit Register
-- eingang = 1Bit Node

z.B.: status.clk=eingang:

Das habe ich noch nicht ganz verkraftet oder denke ich zu kompliziert?

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss man im Zusammenhang mit dem restlichen Code sehen.
Das Flip Flop wird ja hier nur mit dem Taktsignal verbunden. Ich würde
sagen, da fehlt noch was.

signal status : std_logic;


process (eingang) is begin
  if rising_egde(eingang)  then
     -- Hier zuweisung eines Signals an status
  end if;
end process;

VHDL ist ein bisschen ander als ABEL. Hier muss man sich schon Gedanken
machen was die Synthese aus dem VHDL Code generiert. Meinetwegen schreib
dir doch ein Modul D-Flip Flop und Verbinde das Modul in deiner port map
mit den Signalen. Dann hast du ein ABEL äquivalent.

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.