Forum: FPGA, VHDL & Co. VHDL Modell auf algorithmischer und register transfer ebene


von Sebastian F. (bastel_vhdl)


Lesenswert?

Hey ho,

da ich zur Zeit vollkommen verwirrt bin und kein Stück weiter komme 
stell ich jetz einfach hier meine Frage.

Ich muss in meine VHDL Projektarbeit zwei Modelle mit einfliessen 
lassen.
Das Modell auf algorithmischer oder abstrakter Ebene und zum zweiten auf 
der Register Transfer Ebene.

Nun kenne ich folgende Def. dazu:
Algorithmische Ebene = Beschreibung durch parallel ablaufende 
Algorithmen, kein Bezug zur späteren Realisierung, keine Takt- u. 
Reset-Signale

Register Transfer Ebene = detailliertes Datenstrukturmodell mit 
optimiertem Datenfluß und minimiertem Steuerfluß wird dargestellt, 
zeitlich parallel ablaufende Aktivitäten werden folgerichtig in ein 
Zeitraster
eingeordnet, d. h. Einführung von Takt und Reset-Signalen

Soweit so gut. Nun habe ich hier vor mir einen vollständigen 
Mealy-Automatengraphen auf Blatt Papier und will diesen mittels beider 
Modelle umsetzen. Ich komme nur immer wieder zu dem Schluss das ich 
gedanklich auf Register Transfer Ebene arbeite. Wie soll ich den Ablauf 
des Automaten auf algorithmischer Ebene darstellen.
Auf Registertransferebene würde ich folgendermaßen vorgehen:

architecture arch of automat is
  type state_type is (z0, z1, z2, z3);
  signal state : state_type;
begin
process (clk)
begin
  if (clk'event and clk = '1') then
    case state is
      when z0 =>
                                if ... then
                                   ...
                                else
                                   state <= z1;
                                end if;
      when z1 =>
        ..........
      when z2 =>
        ..........
      when z3 =>
        ..........
    end case;
  end if;
end process;
end arch;

Es kann ja aber nicht das Ziel sein einen Mealy Automaten mittels 
parallelen Anweisungen darzustellen (wie das das algorithmische Modell 
vorgibt).

Hat jemand von euch einen vernünftigen Ansatz für das abstrakte Modell?

mfg bastel

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Sebastian Schwabe schrieb:
> Das Modell auf algorithmischer oder abstrakter Ebene
.
.
> Nun habe ich hier vor mir einen vollständigen
> Mealy-Automatengraphen auf Blatt Papier
Dann bist du doch fertig, du hast das ganze auf einer abstrakter Ebene 
Dargestellt.

Algorithmisch bezieht sich vermutlich auch auf sowas wie:
a = (b + c) * x / 8.9;
in RTL mußt du dieses ggf in mehrere Schritte/Teilprobleme zerlegen 
(add/mult/div, ausreichende registerbreiten, float darstellung etc...)

Ansonsten würde ich auch eine Beschreibung in Funktionaler Manier (wie 
z.B. in C üblich) als 'Algorithmisch' bezeichnen.

von Sebastian F. (bastel_vhdl)


Lesenswert?

Ok. Ich hätte vlt. dazu schreiben sollen das zu beiden Modellen in 
ModelSim eine Testbench erstellt werden soll.
D.h. ich muss diesen Mealy Automaten irgendwie auf zwei arten 
darstellen. Und das so das ModelSim damit arbeiten kann.
Momentan erstelle ich meine Dateien mittels Quartus und teste diese mit 
ModelSim. Naja nur das abstrakte Modell bereitet mir regelrechte 
Kopfschmerzen.

von dito (Gast)


Lesenswert?

Dein Code für die State-Machine ist aber auf Verhaltensabene beschrieben 
(wenn mich nicht alles täuscht).

von Klaus F. (kfalser)


Lesenswert?

Es ist nicht immer leicht, die beiden Modell-Varianten zu trennen.

Ich weiss nicht genau, was deine FSM machen soll, aber falls z.B. die 
FSM dazu dient, aufgrund eines Start-Signals bestimmte Signale mit 
definierter Verzögerung auszulösen, dann wäre eine algorithmisches 
Modell z.B. so ähnlich :

process
  wait for Start = '1';
  Read_Enanble <= '1' after 100 ns, '0' after 200 ns
  Output_Enable <= '1' after 50 ns, '0' after 300 ns;
end process;

Eine Umsetzung dieses Verhaltens auf RTL ist dann deine FSM, der Takt 
irgendein Bruchteil von 50 ns, und die States machen das Timing.

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.