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.

Medición de las características de pulso y transición

Este ejemplo muestra cómo analizar pulsos y transiciones y calcular métricas, incluidos el tiempo de subida, el tiempo de caída, la velocidad de conmutación, el rebasamiento, la subcarga, el ancho de pulso y el ciclo de trabajo.

Señal de reloj con ruido

Primero veamos las muestras de una señal de reloj ruidoso.

load clocksig clock1 time1 Fs plot(time1, clock1) xlabel('Time (secs)') ylabel('Voltage')

Estimar los niveles de estado

Se utiliza sin argumento de salida para visualizar los niveles de estado.statelevels Los niveles de estado se estiman a través del histograma.

statelevels(clock1)

ans = 1×2

    0.0138    5.1848

El histograma calculado se divide en dos regiones de igual tamaño entre la primera y la última ubicación. El modo de cada región del histograma se devuelve como un valor de nivel de estado estimado en la ventana de comandos.

Utilice argumentos de entrada opcionales para especificar el número de bins de histograma, los límites del histograma y el método de estimación del nivel de estado.

Mida el tiempo de subida, el tiempo de caída y la tasa de subidas

Se utiliza sin argumento de salida para visualizar el tiempo de subida de los bordes de salida positiva.risetime

risetime(clock1,time1)

ans = 5×1
10-4 ×

    0.5919
    0.8344
    0.7185
    0.8970
    0.6366

Los niveles de referencia predeterminados para el tiempo de subida y el tiempo de caída de computación se establecen en el 10% y el 90% de la amplitud de la forma de onda.

Especifique los niveles de referencia y estado personalizados a través de argumentos de entrada opcionales como se muestra a continuación para una medición del tiempo de caída.

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

ans = 4×1
10-4 ×

    0.4294
    0.5727
    0.5032
    0.4762

Obtenga mediciones mediante programación llamando a funciones con uno o varios argumentos de salida. Para los datos muestreados uniformemente, puede proporcionar una frecuencia de muestreo en lugar del vector de tiempo. Se utiliza para medir la pendiente de cada arista de salida positiva o negativa.slewrate

sr = slewrate(clock1(1:100),Fs)
sr = 7.0840e+04 

Analizar rebasamiento y rebasamiento

Ahora vamos a ver los datos de un reloj con un rebasamiento significativo y sub-rebasamiento.

load clocksig clock2 time2 Fs plot(time2, clock2) xlabel('Time (secs)') ylabel('Voltage')

Las señales de reloj subamplificadas tienen rebasamientos. Los rebasamientos se expresan como un porcentaje de la diferencia entre los niveles de estado. Los rebasamientos pueden ocurrir justo después de un borde, al comienzo de la región de aberración posterior a la transición. Estos se denominan rebasamientos posteriores. Puede medirlos utilizando la función.overshoot

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

    4.9451
    2.5399

legend('Location','NorthEast')

Los rebasamientos también pueden ocurrir justo antes de un borde, al final de la región de aberración previa a la transición. Estos se denominan rebasamientos previos. Del mismo modo, puede medir las ramas inferiores en las regiones previas y posteriores a la aberración. Las ramas inferiores también se expresan como un porcentaje de la diferencia entre los niveles de estado. Utilice argumentos de entrada opcionales para especificar las regiones en las que se miden las aberraciones.

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

    3.8499
    4.9451

legend('Location','NorthEast')

Medir el ancho del pulso y el ciclo de trabajo

Utilícelo sin argumento de salida para trazar anchos de pulso resaltados.pulsewidth

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

Esto muestra pulsos de polaridad positiva. Seleccione la polaridad negativa para ver los anchos de los pulsos de polaridad negativos.

Se utiliza para calcular la relación entre el ancho del pulso y el período de pulso para cada pulso de polaridad positiva o negativa.dutycycle

d = dutycycle(clock2,time2,'Polarity','negative')
d = 3×1

    0.4979
    0.5000
    0.5000

Se utiliza para obtener los períodos de cada ciclo de la forma de onda.pulseperiod Utilice esta información para calcular otras métricas como la frecuencia media de la forma de onda o el jitter total observado.

pp = pulseperiod(clock2, time2);  avgFreq = 1./mean(pp)
avgFreq = 1.2500e+03 
totalJitter = std(pp)
totalJitter = 1.9866e-06