verilog程序时序问题
always @(posedge sys_clk0 ) begins1 <= clk_init;//CLK_pwm
s2 <= s1; //0
end
assign pose_sclk=!s2&s1; //
always @(posedge sys_clk0 or negedge rst_n)
if(~rst_n) begin
rst_n<=1'b1;
clk_100m<=1'b0;
state_d<=WAIT;
end
else begin if(pose_sclk) // 上升沿
state_d<=A;
else case(state_d)//0
A:begin
clk_100m<=1'b1;
state_d<=B;
end
B:begin
clk_100m<=1'b0;
state_d<=WAIT;
end
WAIT:begin
clk_100m<=1'b0;
end
default: state_d <= F;
endcase
end
50Mhz晶振,sys_clk0 倍频100Mhz,clk_init作为输入脉冲信号1Khz-100Khz。在clk_init上升沿输出clk_100m高低变化一次。发现clk_100m有抖动。
其实一直只有一个脉宽,clk_100m信号周期一直在变化。两个clk_100m脉宽周期变化就是运行频率100Mhz.不知道什么原理 PLL倍频出来本身就不稳定吧? 可以让其它稳定地输出下测测看。 也可能是输入信号有毛刺,可以把内部的 s1 输出一下。
页:
[1]