exponenta event banner

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

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

Тактовый сигнал с шумом

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

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

См. также

| | | | | | | |