hallo. hab schon seit tagen versucht einen monoflop zu programmieren. ich habe einen hinbekommen. der fängt aber erst bei der hl-flanke an. meines wissens müsste der aber bei der lh-flanke anfangen mit zählen. so wie ich das gemacht habe, gibt er den aber eine fehler meldung aus. synchronisiert hab ich ihn mit dem tackt. wegen dem zähler. denke das ich dadurch den eingang nicht auch noch mal eine flanke abfragen kann. programmiere schon etwas länger mit vhdl. bin aber denke ich trotzdem noch anfänger. kann mir da einer bitte bei helfen. danke john-eric
Michael -----Original Message----- From: [email protected] [mailto:[email protected]]On Behalf Of John-eric Sent: Samstag, 3. April 2004 23:24 To: Subject: monoflop in vhdl
hallo. hab schon seit tagen versucht einen monoflop zu programmieren. ich habe einen hinbekommen. der fängt aber erst bei der hl-flanke an. meines wissens müsste der aber bei der lh-flanke anfangen mit zählen. so wie ich das gemacht habe, gibt er den aber eine fehler meldung aus. synchronisiert hab ich ihn mit dem tackt. wegen dem zähler. denke das ich dadurch den eingang nicht auch noch mal eine flanke abfragen kann. programmiere schon etwas länger mit vhdl. bin aber denke ich trotzdem noch anfänger. kann mir da einer bitte bei helfen. danke john-eric
Mit bonus.net bis zu 70% beim Einkauf sparen! Jetzt anmelden und kostenlos testen!
---------------------------------------------------------------------------- -- Um auf diesen Beitrag zu antworten, benutzen Sie die Antworten-Funktion Ihrer Mail-Software. Einen neuen Beitrag im Forum verfassen · Diesen Beitrag online lesen · Mailingliste abbestellen
so hab ich dir geschickt. für andere vielleicht auch mal: (hier ist meine ausgangslage) ------------------------------ architecture rtl of monoflop is
signal teiler : integer range 0 to 4000000 - 1; signal tick : boolean; begin
monoflop_prozess: process (clk, rst, teiler, tick) begin if clk='1' and clk'event then if d_in='1' then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -- end d_in end if; -- end clk
if teiler = 0 or rst ='1' then tick <= false; end if; -- end teiler
if tick then led <= '1'; else led <= '0'; end if; -- end tick
end process monoflop_prozess;
end rtl; ------------------------------ funktioniert super, bloß das, dass signal "d_in" nicht auf der lh-flanke reagiert. sondern auf die hl-flanke. john-eric
signal teiler : integer range 0 to 4000000 - 1; signal tick : boolean;
begin
monoflop_prozess: process (clk, rst, teiler, tick) begin if falling_edge(clk) then if d_in='1' then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -- end d_in
if teiler = 0 or rst ='1' then tick <= false; end if; -- end teiler
if tick then led <= '1'; else led <= '0'; end if; -- end tick
end if; -- end clk end process monoflop_prozess;
end rtl;
Sorry für die Verzögerung!
Gruesse,
Michael ----- Original Message ----- From: John-Eric To: Sent: Monday, April 05, 2004 9:49 PM Subject: Re: monoflop in vhdl
so hab ich dir geschickt. für andere vielleicht auch mal: (hier ist meine ausgangslage) ------------------------------ architecture rtl of monoflop is
signal teiler : integer range 0 to 4000000 - 1; signal tick : boolean; begin
monoflop_prozess: process (clk, rst, teiler, tick) begin if clk='1' and clk'event then if d_in='1' then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -- end d_in end if; -- end clk
if teiler = 0 or rst ='1' then tick <= false; end if; -- end teiler
if tick then led <= '1'; else led <= '0'; end if; -- end tick
end process monoflop_prozess;
end rtl; ------------------------------ funktioniert super, bloß das, dass signal "d_in" nicht auf der lh-flanke reagiert. sondern auf die hl-flanke. john-eric
Mit bonus.net bis zu 70% beim Einkauf sparen! Jetzt anmelden und kostenlos testen!
macht nichts wegen der verspätung. das ist ja fast das gleiche. ich denke das: "falling_edge(clk)" gleichbedeutend mit "clk='0' and clk'event" ist. also fallende flanke, oder? mein problem ist aber immer noch da. oder nicht? -------------------------- if d_in='1' then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -------------------------- so lange ich "d_in" auf "high" lege, wird der "teiler" bei jeder fallenden flanke mit "4000000-1" geladen. ich bräucht aber "d_in='1' and d_in'event" also die steigende flanke von d_in. ich hab das jetzt mal so geschrieben wie ich das verstehe. konnte das jetzt noch nicht ausprobieren, da ich keinen internet anschluß habe. testen werde ich das aber trotzdem morgen früh. trotzdem danke. john-eric
signal teiler : integer range 0 to 4000000 - 1; signal tick : boolean;
begin
monoflop_prozess: process (clk, rst, teiler, tick) begin if falling_edge(clk) then if (d_in='1' and teiler = 0) then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -- end d_in
if teiler = 0 or rst ='1' then tick <= false; end if; -- end teiler
if tick then led <= '1'; else led <= '0'; end if; -- end tick
end if; -- end clk end process monoflop_prozess;
end rtl;
----- Original Message ----- From: John-eric To: Sent: Sunday, April 11, 2004 7:38 PM Subject: Re: monoflop in vhdl
macht nichts wegen der verspätung. das ist ja fast das gleiche. ich denke das: "falling_edge(clk)" gleichbedeutend mit "clk='0' and clk'event" ist. also fallende flanke, oder? mein problem ist aber immer noch da. oder nicht? -------------------------- if d_in='1' then teiler <= 4000000 - 1; tick <= true; else teiler <= teiler - 1; end if; -------------------------- so lange ich "d_in" auf "high" lege, wird der "teiler" bei jeder fallenden flanke mit "4000000-1" geladen. ich bräucht aber "d_in='1' and d_in'event" also die steigende flanke von d_in. ich hab das jetzt mal so geschrieben wie ich das verstehe. konnte das jetzt noch nicht ausprobieren, da ich keinen internet anschluß habe. testen werde ich das aber trotzdem morgen früh. trotzdem danke. john-eric
Mit bonus.net bis zu 70% beim Einkauf sparen! Jetzt anmelden und kostenlos testen!