icsoul
Junior Member
![* *](https://designers-guide.org/forum/Templates/Forum/default/starblue.gif)
Offline
Posts: 29
|
MY code:
`include "disciplines.vams" `include "constants.vams"
module period_freq_meas (clk, pout, fout);
input clk; output pout, fout; electrical clk, pout, fout; parameter real vhi = 1.2 ; parameter real vlo = 0 ; parameter real vth = (vhi+vlo)/2 ; real last_time, current_time, period, px, freq;
analog begin @(initial_step)begin last_time = 0.0; period = 0.0; end @(cross(V(clk)-vth, +1))begin current_time = $realtime; if (last_time > 0.0) period = current_time - last_time; px = period*1E9; freq = 1/px; last_time = current_time; end V(pout) <+ period*1E9; V(fout) <+ freq; @(final_step) begin $strobe("freq = %g", 1/period) ; $strobe("period = %g", period); $strobe("fx = %g", 1/px); $strobe("px = %g", px); end end endmodule
And the stimulus:
X0 clk pout fout period_freq_meas Vin clk 0 SFFM(0.6 0.6 2E8 5 2e7)
Please help to check it.
Thanks!~
|