period jitter如何计算
时间: 2023-07-14 09:13:58 浏览: 142
Period jitter是指时钟信号的周期变化量,通常用来衡量时钟信号的稳定性和精度。计算period jitter的方法是:
1. 采集时钟信号的连续周期时间戳,比如在每个周期的上升沿或下降沿处记录时间戳。
2. 计算相邻两个周期之间的时间差,即T(i+1)-T(i),其中T(i)表示第i个周期的时间戳。
3. 对所有相邻两个周期之间的时间差求标准差,即period jitter。
公式为:
period jitter = sqrt(1/(N-1)*sum((T(i+1)-T(i)-mean(T))^2))
其中N为周期数,mean(T)为所有周期时间戳的平均值。
相关问题
module Duty_Period_Adjust_module ( CLK, RSTn, AddDuty_In, SubDuty_In, AddPeriod_In, SubPeriod_In, Duty, Count_P ); input CLK; input RSTn; input AddDuty_In; //Add Duty Ratio input SubDuty_In; //Subtract Duty Ratio input AddPeriod_In; //Add Period input SubPeriod_In; //Subtract Period output reg [7:0]Duty; //Duty Ratio of PWM output reg [23:0]Count_P; //period of PWM = Count_P/50_000_000 wire neg_AddDuty; wire neg_SubDuty; wire neg_AddPeriod; wire neg_SubPeriod; Jitter_Elimination_module U1 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( AddDuty_In ) , //While AdjtDuty_In from 1 to 0, neg_AddDuty = 1 .Button_Out( neg_AddDuty ) ); Jitter_Elimination_module U2 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( SubDuty_In ) , //While SubDuty_In from 1 to 0, neg_SubDuty = 1 .Button_Out( neg_SubDuty ) ); Jitter_Elimination_module U3 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( AddPeriod_In ) , //While AddPeriod_In from 1 to 0, neg_AddPeriod = 1 .Button_Out( neg_AddPeriod ) ); Jitter_Elimination_module U4 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( SubPeriod_In ) , //While SubPeriod_In from 1 to 0, neg_SubPeriod = 1 .Button_Out( neg_SubPeriod ) ); always @ ( posedge CLK or negedge RSTn ) begin if( !RSTn ) Duty <= 'd50; else if( neg_AddDuty == 1'b1 ) if( Duty == 'd100 ) Duty <= 'd0; else Duty <= Duty + 'd10; else if( neg_SubDuty == 1'b1 ) if( Duty == 'd0 ) Duty <= 'd100; else Duty <= Duty - 'd10; else Duty <= Duty; end /******************* While Count_P = 500_000, Period of PWM = 10ms, Frequency of PWM = 100HZ ; While Count_P = 250_000, Period of PWM = 5ms, Frequency of PWM = 200HZ ; While Count_P = 50_000, Period of PWM = 1ms, Frequency of PWM = 1000HZ ; *******************/ always @ ( posedge CLK or negedge RSTn ) begin if( !RSTn ) Count_P <= 'd250_000; else if( neg_AddPeriod == 1'b1 ) begin if( Count_P == 'd500_000 ) Count_P <= 'd50_000; else Count_P <= Count_P + 'd50_000; end else if( neg_SubPeriod == 1'b1 ) begin if( Count_P == 'd50_000 ) Count_P <= 'd500_000; else Count_P <= Count_P - 'd50_000; end else Count_P <= Count_P; end endmodule
这段 Verilog 代码实现了一个 Duty_Period_Adjust 模块,用于调节 PWM 的占空比和周期。在模块中,输入 AddDuty_In 和 SubDuty_In 用于增加/减少占空比,输入 AddPeriod_In 和 SubPeriod_In 用于增加/减少周期。输出 Duty 表示 PWM 的占空比,Count_P 表示 PWM 的周期。模块中还包含了 Jitter_Elimination_module 模块,用于消除抖动信号。在 always 块中,根据输入信号和当前状态更新占空比和周期的值。注意到 Count_P 的值可以控制 PWM 的频率,当 Count_P = 500000 时,频率为 100HZ,当 Count_P = 250000 时,频率为 200HZ,当 Count_P = 50000 时,频率为 1000HZ。
PLL相位噪声积分获得的jitter是RJ吗
PLL相位噪声积分获得的jitter不一定是RJ,具体取决于PLL的工作模式和环节,以及计算jitter的方法。一般来说,PLL的相位噪声会转化为时钟抖动(jitter),其中随机游走(random walk)和白噪声(white noise)是两个主要的成分。如果PLL处于锁定状态,那么随机游走成分会被抑制,此时计算得到的jitter主要是由白噪声引起的,称为RMS jitter。然而,如果PLL处于自由运行状态,随机游走成分就不能被完全抑制,此时计算得到的jitter就包括了RJ(random jitter)和PJ(period jitter)两部分。因此,需要根据实际情况选择合适的计算方法,并注意区分不同的jitter类型。
阅读全文