Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Extraer características de una señal de reloj

¿Con qué intensidad se enciende y apaga una señal de encendido/apagado? ¿Con qué frecuencia y durante cuánto tiempo se activa? Determine todas esas características para la salida de un reloj.

Cargue la señal y saltela. El tiempo se mide en segundos y el nivel en voltios.

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

Se utiliza para encontrar los niveles inferior y superior de la señal mediante un histograma.statelevels Si no especifica una salida, la función traza la señal, marca los niveles y muestra el histograma.

levels = statelevels(clocksig)
levels = 1×2

    0.0138    5.1848

 statelevels(clocksig);

Determine la velocidad con la que la señal sube en cada transición. utiliza los niveles inferior y superior encontrados por .risetimestatelevels Define el tiempo de subida como el tiempo que tarda la señal en subir del 10% al 90% de la diferencia entre los niveles.

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

    0.5309    4.6677
    0.5309    4.6677

Si llama sin salidas, la función dibuja una gráfica anotada de la señal.risetime Los tiempos de subida se sombrean, se marcan los puntos de cruce y se muestran los niveles. Puede utilizar el vector de tiempo o la frecuencia de muestreo como entrada.

risetime(clocksig,Fs);

y mostrar hasta qué punto la señal se desvía de los niveles de estado en cada transición.overshootundershoot Los resultados se expresan como porcentajes de la diferencia entre los niveles. Otras salidas dan los tiempos reales y los valores de señal.

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

Determine la velocidad con la que cae la señal utilizando .falltime Puede establecer manualmente los niveles de estado y los niveles de referencia de porcentaje. Puede hacer lo mismo con .risetime

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

Encuentre el período de la señal. De forma predeterminada, el período se define como el tiempo transcurrido entre cruces ascendentes consecutivos del nivel de referencia a medio camino entre los niveles de estado. Puede cambiar la polaridad de los cruces, especificar los niveles de estado o ajustar el nivel de referencia.

per = pulseperiod(clocksig,tclock)
per = 4×1
10-3 ×

    0.4143
    0.4200
    0.4188
    0.4111

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

El ciclo de trabajo es la relación entre el ancho del pulso y el período de pulso. Determinarlo directamente o mediante una función dedicada.

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

    0.4862    0.4862
    0.4756    0.4756
    0.4871    0.4871
    0.4886    0.4886

Consulte también

| | | | | | | |

Temas relacionados