Forum: FPGA, VHDL & Co. VHDL Knobelecke


von FPGA-User (Gast)


Lesenswert?

was macht die folgende Prozedur ?

procedure do_something
(
   signal clk  : in std_logic;
   a           : in real;
   signal y    : out real
) is
   variable x : real := 2.0  MATH_PI  a;
begin
   loop
     wait until rising_edge(clk);
     y <= sin( x * real(now / 1 ps) * 1.0e-12);
   end loop;
end do_something;

von Henrik (Gast)


Lesenswert?

Bei jede steig. Flanke gibst du den momentanen Wert der Sinusfunktion
aus (wie bei einer Abtastung), die mit der Simulationszeit läuft und
eine Periode von 1/a (Sinus ist gestaucht) in ps hat.

Wozu aber "loop.." und "wait until.."?

 if clk='1' and clk'event then
    y <= sin( x * real(now / 1 ps) * 1.0e-12);
 end if;

Hätte es doch auch getan?

Gruss Henrik

von Henrik (Gast)


Lesenswert?

Sorry, der Sinus ist natürlich nur dann gestaucht, wenn a>1 ist!

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.