ABEL-> VHDL Übersetzung

Gast #202580
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
Gast #202581
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
Gast #202582
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
Gast #202583
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;
Gast #202585
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?
Gast #202586
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren