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; ------------------------------------------------------------------------ ---------
> 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.