www.mikrocontroller.net

Forum: FPGA, VHDL & Co. HILFE! Problem mit VHDL-Projekt


Autor: JUMH (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, liebe Mikrocontrolercommunity! Ich hocke jetzt mehrere Stunden über 
einem Projekt für die Uni und bin so langsam recht ratlos, weil das 
letzte mal VHDL bei mir schon über ein Semester her ist.

"Erstellen Sie ein Projekt mit einem RS-Latch, einem D-Latch und einem 
D-Flipflop
und implementieren sie alle als VHDL-Entities und testen Sie ihre 
Entities mittels Simulator
in einer gemeinsamen VHDL-Datei."

Mir fehlt jetzt jeglicher Ansatz, wie ich das zusammen vermatschen (bzw 
ein projekt draus machen) soll und hoffe jetzt einfach mal, dass ihr mir 
dabei vielleicht weiter helfen könnt.
Arbeiten tu ich mit quartus.




------------------------------------------------------------------------ 
---------

library ieee;
use ieee.std_logic_1164.all;

entity dlatch is port(                     -- d latch
clk,d: in std_logic;
q: out std_logic);
end dlatch;

architecture beh_dlatch of dlatch is
begin
  process(clk)
  begin
     if(clk'event and clk='1') then
         q <= d;
       end if;
     end process;
end beh_dlatch;


library ieee;
use ieee.std_logic_1164.all;

entity z_dff is port(                        -- d flipflop
   clk,d: in std_logic;
   q: buffer std_logic);
 end z_dff;

 architecture beh_dff of z_dff is
 begin
    process (clk,d)
 begin
        if(clk='1') then
        q <= d;
        end if;
    end process;
 end beh_dff;


 library ieee;
use ieee.std_logic_1164.all;

entity rsl is                -- rs latch
  port (s,r: in std_ulogic;
    q, qm: buffer std_ulogic);
end entity rsl;

architecture dataflow of rsl is
begin
q  <= '1' when r = '0' else
      '0' when s = '0' else q;
qm <= '1' when s = '0' else
      '0' when r = '0' else qm;
end architecture dataflow;

------------------------------------------------------------------------ 
---------

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mir fehlt jetzt jeglicher Ansatz, wie ich das zusammen vermatschen (bzw
> ein projekt draus machen) soll und hoffe jetzt einfach mal, dass ihr mir
> dabei vielleicht weiter helfen könnt.
> Arbeiten tu ich mit quartus.

Der Ansatz als 3 getrennte Entities für DFF/DL/RSL ist schon mal gut. 
Besser kann man es bei einer solch dehnbaren Aufgabenstellung wie "ein 
Projekt mit..." kaum machen ;)

Bzgl D-Latch und D-Flipflop: Sind prinzipiell richtig aber vertauscht. 
Soll heißen, wo bei dir "D-FF" dransteht ist ein D-Latch drin und 
umgekehrt.

SR-Latch: Hat einen Fehler und vielleicht einen zweiten. Der erste 
Fehler ist, dass deine Implementierung zwar bei S=1,R=0 setzt und bei 
S=0,R=1 zurücksetzt. Aber: Halten tut sie bei S=1,R=1, was aber S=0,R=0 
sein sollte. Hier könnte allerdings auch das Problem vorliegen, dass 
sowohl Eingänge als auch Ausgänge als Active-Low gemeint sind, soll 
heißen S=0,R=1 bedeutet "Setzen auf 0" und S=1,R=1 bedeutet weder Setzen 
noch Zurücksetzen.

Das Zweite Problem ist, dass es ein SR-Latch nur ungenau modelliert: Die 
vierte Eingabemöglichkeit, "setzen und zurücksetzen" (die verboten aber 
natürlich möglich ist), wird nicht nachgebildet. Kann aber sein, dass 
das nicht verlangt ist.

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch etwas: Mit als "buffer" deklarierten Ausgängen begibt man sich IIRC 
auf dünnes Eis was die Synthese angeht. Dass man Ausgabesignale in VHDL 
nicht verwenden kann ist doof, aber nicht zu ändern. Statt "buffer" 
benutze lieber ein internes Hilfssignal, welches du dann lesen und 
schreiben kannst und dem entsprechenden Ausgang direkt zuweist.

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.