矩形脉冲波形的占空比及脉冲和瞬态特征的测量

目录

矩形脉冲波形的占空        

脉冲和瞬态特征的测量

含噪时钟信号

估计状态电平

测量上升时间、下降时间和压摆率

 分析过冲和下冲

测量脉冲宽度和占空比


矩形脉冲波形的占空        

        示例说明如何创建矩形脉冲波形并测量其占空比。可以将矩形脉冲波形想象成一系列的开启和关闭状态。一个脉冲周期是一个开启和关闭状态的总持续时间。脉冲宽度是开启状态的持续时间。占空比是脉冲宽度与脉冲周期的比率。矩形脉冲的占空比描述脉冲处于开启状态的时间占一个脉冲周期的比率。

        创建一个以 1 千兆赫采样的矩形脉冲。脉冲处于开启状态(即等于 1),持续时间为 1 微秒。如果脉冲处于关闭状态(即等于 0),持续时间为 3 微秒。脉冲周期为 4 微秒。绘制波形。

Fs = 1e9;
t = 0:1/Fs:(10*4e-6);

pulsewidth = 1e-6;
pulseperiods = [0:10]*4e-6;

x = pulstran(t,pulseperiods,@rectpuls,pulsewidth);

plot(t,x)
axis([0 4e-5 -0.5 1.5])

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第1张图片

        使用 dutycycle 确定波形的占空比。输入脉冲波形和采样率以输出占空比。dutycycle 为每个检测到的脉冲输出占空比值。

D = dutycycle(x,Fs)


D = 1×9

    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500    0.2500

        在此示例中,每个检测到的脉冲的占空比是相同的,都等于 0.25。这是预期的占空比,因为脉冲在每 4 微秒的周期内开启 1 微秒,关闭 3 微秒。因此,脉冲在每个周期的 1/4 内处于开启状态。以百分比表示,这等于 25% 的占空比。

        不带输出参数调用 dutycycle 会生成标记了所有检测到的脉冲宽度的绘图。

dutycycle(x,Fs);

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第2张图片

        使用相同的采样率和脉冲周期,以循环方式将脉冲开启时间(脉冲宽度)从 1 微秒更改到 3 微秒,并计算占空比。绘制循环中每步的脉冲波形,并在绘图标题中显示占空比值。占空比随着脉冲宽度的增加从 0.25 (1/4) 增加到 0.75 (3/4)。 

nwid = 3;

for nn = 1:nwid
    x = pulstran(t,pulseperiods,@rectpuls,nn*pulsewidth);
    
    subplot(nwid,1,nn)
    plot(t,x)
    axis([0 4e-5 -0.5 1.5])
    
    D = dutycycle(x,Fs);
    title(['Duty cycle is ' num2str(mean(D))])
end

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第3张图片

脉冲和瞬态特征的测量

        此示例说明如何分析脉冲和瞬态,以及如何计算上升时间、下降时间、压摆率、过冲、下冲、脉冲宽度、占空比和脉冲周期等指标。

含噪时钟信号

        首先查看来自含噪时钟信号的采样。

load clocksig clock1 time1 Fs

plot(time1,clock1)
xlabel('Time (seconds)')
ylabel('Voltage')

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第4张图片

估计状态电平

        不带输出参数调用 statelevels 来可视化状态电平。直方图方法用于通过以下步骤估计状态电平:

  1. 确定数据的最小和最大幅值。

  2. 对于指定数量的直方图 bin,确定 bin 宽度,即幅值范围与 bin 数量之比。使用可选输入参数指定直方图 bin 的数量和直方图边界。

  3. 将数据值划分到直方图 bin 中。

  4. 标识具有非零计数的最低和最高索引直方图 bin。

  5. 将直方图分成两个子直方图。

  6. 通过确定上直方图和下直方图的众数或均值来计算状态电平。

statelevels(clock1)

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第5张图片

ans = 1×2

    0.0138    5.1848

        计算的直方图在第一个和最后一个 bin 之间分成两个大小相等的区域。直方图的每个区域的模式在命令行窗口中以估计的状态电平值形式返回。

测量上升时间、下降时间和压摆率

        上升时间是每个脉冲的上升过渡从穿过下参考电平到穿过上参考电平的两个时刻之间的持续时间。下降时间是每个脉冲的下降过渡从穿过上参考电平到穿过下参考电平的两个时刻之间的持续时间。用来计算上升时间和下降时间的默认参考电平设置为波形幅值的 10% 和 90%。

        不带输出参数调用 risetime 来可视化正向边沿的上升时间。然后,不带输出参数调用 falltime 来可视化负向边沿的下降时间。将参考电平指定为 [20 80],将状态电平指定为 [0 5]。

risetime(clock1,time1)

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第6张图片

ans = 5×1

10-4 ×

    0.5919
    0.8344
    0.7185
    0.8970
    0.6366
falltime(clock1,time1,'PercentReferenceLevels',[20 80],'StateLevels',[0 5])

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第7张图片

ans = 4×1

10-4 ×

    0.4294
    0.5727
    0.5032
    0.4762

         带一个或多个输出参数调用函数,以编程方式获取测量值。对于均匀采样的数据,可以提供采样率来代替时间向量。使用 slewrate 测量每个正向或负向边沿的斜率。      

sr = slewrate(clock1(1:100),Fs)

sr = 7.0840e+04

 分析过冲和下冲

        现在查看来自时钟的具有明显过冲和下冲的数据。

load clocksig clock2 time2 Fs

plot(time2,clock2)
xlabel('Time (seconds)')
ylabel('Voltage')

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第8张图片

        欠阻尼时钟信号有过冲。过冲表示为状态电平之间差的百分比。过冲可能发生在紧跟某个边沿后、后瞬态像差区域的开始处。使用 overshoot 函数来测量这些后冲过冲。 

overshoot(clock2(95:270),Fs)

ans = 2×1

    4.9451
    2.5399
legend('Location','NorthEast')

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第9张图片

        过冲也可能发生在紧挨某个边沿之前、前瞬态像差区域的结束处。这些称为前冲过冲。

        同样,可以测量像差前和像差后区域的下冲。下冲也表示为状态电平之间差的百分比。使用可选输入参数指定测量像差的区域。

undershoot(clock2(95:270),Fs,'Region','Postshoot')

ans = 2×1

    3.8499
    4.9451
legend('Location','NorthEast')

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第10张图片

测量脉冲宽度和占空比

        宽度是每个脉冲的第一个过渡和第二个过渡穿过中参考电平之间的持续时间。不带输出参数调用 pulsewidth 绘制突出显示的脉冲宽度。指定正极性。 

pulsewidth(clock2, time2,'Polarity','Positive');

        如图所示:

矩形脉冲波形的占空比及脉冲和瞬态特征的测量_第11张图片

        使用 dutycycle 计算每个负极性脉冲的脉冲宽度与脉冲周期的比率。 

d = dutycycle(clock2,time2,'Polarity','negative')

d = 3×1

    0.4979
    0.5000
    0.5000

        使用 pulseperiod 获取波形每个周期的时间长度。周期是当前脉冲的第一个过渡和下一个脉冲的第一个过渡之间的持续时间。使用此信息计算其他指标,如波形的平均频率或观测到的总抖动。

pp = pulseperiod(clock2, time2);
avgFreq = 1./mean(pp)

avgFreq = 1.2500e+03

%%
totalJitter = std(pp)

totalJitter = 1.9866e-06

你可能感兴趣的:(滤波器,matlab)