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


von andi (Gast)


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

von Max Müller (Gast)


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

von Andi (Gast)


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

von andi (Gast)


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;

von tobi (Gast)


Lesenswert?

stimmt perfekt

von andi (Gast)


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?

von tobi (Gast)


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.

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.