|
always @(posedge SYS_CLK )
begin
clk1<=Sync_CLK;
clk2<=clk1;
clk3<=clk2;
if((clk3&clk2&(~clk1))==0) //周期下降沿检测
begin
SyncPoint=SyncPoint+1; //电网周期记数
end
else //周期下降沿检测,周期到
begin
SyncPeriodVal=SyncPoint; //存储周期值
alfa_0Deg=0; //0
alfa_180Deg=SyncPeriodVal>>1; //计算180度
alfa_90Deg=SyncPeriodVal>>2; //90
alfa_30Deg=alfa_90Deg/3; //30
alfa_60Deg=alfa_30Deg<<1; //60
alfa_120Deg=alfa_60Deg<<1; //120
alfa_150Deg=alfa_30Deg+alfa_120Deg; //150
alfa_210Deg=alfa_180Deg+alfa_30Deg; //210
alfa_240Deg=alfa_120Deg<<1; //240
alfa_270Deg=alfa_240Deg+alfa_30Deg; //270
alfa_300Deg=alfa_270Deg+alfa_30Deg; //300
alfa_330Deg=alfa_300Deg+alfa_30Deg; //330
SyncPoint=0; //电网周期记数清0
end
程序是想电网下降沿计算出周期,30度,60度等,非下降沿电网周期+1;疑问有1.这种不停赋值计算移位或者除是否可行,2.周期计算是否正确.3.周期下降沿检测是否正确?
希望各位高手赐教.谢谢 |
|