Найти в Дзене

MATLAB. Цифровая обработка сигналов \ 6. Исследование тактовых сигналов

Как резко включается и выключается сигнал включения/выключения? Как часто и на какое время он активируется? Определите все эти характеристики для выхода тактового генератора. Загрузите сигнал и постройте график. Время измеряется в секундах, а уровень - в вольтах. load('clock.mat') plot(tclock,clocksig) xlabel('Time (s)') ylabel('Level (V)') Используйте statelevels, чтобы найти нижний и верхний уровни сигнала с помощью гистограммы. Если вы не указываете выход, функция строит график сигнала, отмечает уровни и выводит гистограмму. levels = statelevels(clocksig) statelevels(clocksig); Определите скорость нарастания сигнала при каждом переходе. Время нарастания использует нижний и верхний уровни, найденные с помощью statelevels. Он определяет время нарастания как время, необходимое сигналу, чтобы подняться с 10 % до 90 % разницы между уровнями. [Rise,LoTime,HiTime,LoLev,HiLev] = risetime(clocksig,tclock); Levels = [LoLev HiLev; (levels(2)-levels(1))*[0.1 0.9]+levels(1)] Если вы вызываете ri

Как резко включается и выключается сигнал включения/выключения? Как часто и на какое время он активируется? Определите все эти характеристики для выхода тактового генератора.

Загрузите сигнал и постройте график. Время измеряется в секундах, а уровень - в вольтах.

load('clock.mat')
plot(tclock,clocksig)
xlabel('Time (s)')
ylabel('Level (V)')

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

levels = statelevels(clocksig)
statelevels(clocksig);
-2
-3

Определите скорость нарастания сигнала при каждом переходе. Время нарастания использует нижний и верхний уровни, найденные с помощью statelevels. Он определяет время нарастания как время, необходимое сигналу, чтобы подняться с 10 % до 90 % разницы между уровнями.

[Rise,LoTime,HiTime,LoLev,HiLev] = risetime(clocksig,tclock);
Levels = [LoLev HiLev; (levels(2)-levels(1))*[0.1 0.9]+levels(1)]

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

risetime(clocksig,Fs);
-4

overshoot и undershoot показывают, насколько сигнал отклоняется от уровней состояния при каждом переходе. Результаты выражаются в процентах от разницы между уровнями. Дальнейшие выходы показывают фактическое время и значения сигнала.

overshoot(clocksig,Fs);
[pctgs,values,times] = undershoot(clocksig,Fs);
hold on
text(1.1e-3,2,' Undershoot','Background','w','Edge','k')
plot([times;1.17e-3],[values;2],'^m','HandleVisibility','off')
hold off
-5

Определите скорость падения сигнала с помощью falltime. Уровни состояния и процентные опорные уровни можно установить вручную. То же самое можно сделать и со временем падения.

falltime(clocksig,tclock, ...
'PercentReferenceLevels',[30 80],'StateLevels',[0 5]);
-6

Найдите период сигнала. По умолчанию период определяется как время, прошедшее между последовательными восходящими пересечениями опорного уровня на полпути между уровнями состояния. Вы можете изменить полярность пересечений, задать уровни состояния или настроить опорный уровень.

per = pulseperiod(clocksig,tclock)
pulseperiod(clocksig,Fs,'Polarity','negative','MidPct',25);

-7

Рабочий цикл - это отношение ширины импульса к его периоду. Определите его напрямую или с помощью специальной функции.

dut = dutycycle(clocksig,Fs);
wdt = pulsewidth(clocksig,Fs);
compare = [wdt./per dut]