Измерение импульсных и переходных характеристик

Этот пример показывает, как проанализировать импульсы и переходы и вычислить метрики включая время нарастания, время спада, скорость нарастания, перерегулирование, отклонение от номинала, ширину импульса и рабочий цикл.

Синхросигнал с шумом

Сначала посмотрим выборки из шумного синхросигнала.

load clocksig clock1 time1 Fs

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

Figure contains an axes. The axes contains an object of type line.

Оценка уровней состояния

Использование statelevels без выходного аргумента для визуализации уровней состояний. Уровни состояния оцениваются с помощью гистограммы.

statelevels(clock1)

Figure State Level Information contains 2 axes. Axes 1 with title Histogram of signal levels (100 bins) contains an object of type line. Axes 2 with title Signal contains 3 objects of type line.

ans = 1×2

    0.0138    5.1848

Вычисленная гистограмма разделена на две области равных размеров между первым и последним интервалом. Режим каждой области гистограммы возвращается как расчетное значение уровня состояния в командном окне.

Используйте необязательные входные параметры, чтобы задать количество интервалов гистограммы, границы гистограммы и метод оценки уровня состояния.

Время нарастания измерений, Времени спада и Скорости нарастания

Использование risetime без выходного аргумента, чтобы визуализировать время нарастания положительных ребер.

risetime(clock1,time1)

Figure Rise Time Plot contains an axes. The axes contains 12 objects of type patch, line. These objects represent rise time, signal, upper cross, lower cross, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

ans = 5×1
10-4 ×

    0.5919
    0.8344
    0.7185
    0.8970
    0.6366

Уровни ссылки по умолчанию для вычисления времени нарастания и времени спада заданы на уровне 10% и 90% от амплитуды формы волны.

Задайте пользовательские ссылки и состояния с помощью необязательных входных параметров, как показано ниже для измерения времени спада.

falltime(clock1,time1,'PercentReferenceLevels',[20 80],'StateLevels',[0 5])

Figure Fall Time Plot contains an axes. The axes contains 12 objects of type patch, line. These objects represent fall time, signal, upper cross, lower cross, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

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')

Figure Fall Time Plot contains an axes. The axes contains an object of type line.

Заниженные тактовые сигналы имеют перерегулирования. Перерегулирования выражаются в процентах от различия между уровнями состояния. Перерегулирования могут происходить сразу после ребра, в начале области аберрации после перехода. Они называются постшут- перерегулированиями. Можно измерить их с помощью overshoot функция.

overshoot(clock2(95:270),Fs)
ans = 2×1

    4.9451
    2.5399

legend('Location','NorthEast')

Figure Overshoot Plot contains an axes. The axes contains 12 objects of type line. These objects represent signal, upper cross, lower cross, post-overshoot, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

Перерегулирования могут также происходить непосредственно перед ребром в конце области аберрации перед переходом. Они называются preshoot overshoots. Точно так же можно измерить подколы в областях до и после аберрации. Недопуски также выражаются в процентах от различия между уровнями состояния. Используйте необязательные входные параметры, чтобы задать области, в которых можно измерить аберрации.

undershoot(clock2(95:270),Fs,'Region','Postshoot')
ans = 2×1

    3.8499
    4.9451

legend('Location','NorthEast')

Figure Undershoot Plot contains an axes. The axes contains 12 objects of type line. These objects represent signal, upper cross, lower cross, post-undershoot, upper boundary, upper state, lower boundary, upper reference, lower reference, lower state.

Измерение ширины импульса и коэффициента заполнения

Использование pulsewidth без выходного аргумента для построения подсвеченных ширин импульса.

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

Figure Pulse Width Plot contains an axes. The axes contains 10 objects of type patch, line. These objects represent pulse width, signal, mid cross, upper boundary, upper state, lower boundary, mid reference, lower state.

Это отображает импульсы положительной полярности. Выберите отрицательную полярность, чтобы увидеть ширины отрицательных полярных импульсов.

Использование 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

См. также

| | | | | | | |