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 pulsos y características de transición

En este ejemplo se muestra cómo analizar pulsos y transiciones y calcular las métricas, incluidos el tiempo de subida, el tiempo de caída, la velocidad de desviación, el sobremuestreo, la subtoma, el ancho del pulso y el ciclo de trabajo.

Señal de reloj con ruido

En primer lugar vamos a ver 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 estatales

Utilízalo sin argumento de salida para visualizar los niveles de estado.statelevels Los niveles de estado se estiman mediante 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, límites de histograma y el método de estimación de nivel de estado.

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

Utilízalo sin argumento de salida para visualizar el tiempo de subida de los bordes positivos.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 calcular el tiempo de subida y el tiempo de caída se establecen en 10% y 90% de la amplitud de la forma de onda.

Especifique los niveles de referencia y estado personalizados mediante argumentos de entrada opcionales, como se muestra a continuación para una medición de 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

Obtener mediciones mediante programación llamando a las 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 positiva o negativa.slewrate

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

Analice sobregrabar y Subdisparar

Ahora vamos a ver los datos de un reloj con un sobredisparo y un subíndice significativos.

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

Las señales de reloj desatendiadas tienen un exceso. Los sobregimientos se expresan como un porcentaje de la diferencia entre los niveles de estado. Los sobrebrotes 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 sobrebrotes de postshoot. Puede medirlos utilizando la función.overshoot

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

    4.9451
    2.5399

legend('Location','NorthEast')

Los sobrebrotes 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 superbrotes de Preshoot. Del mismo modo, puede medir los subbrotes en las regiones previas y posteriores a la aberración. Los brotes subyacentes 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')

Mida el ancho del pulso y el ciclo de trabajo

Utilice sin argumento de salida para trazar los anchos de pulso resaltados.pulsewidth

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

Esto muestra pulsos de polaridad positiva. Seleccione la polaridad negativa para ver las anchuras 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 de polaridad negativa.dutycycle

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

    0.4979
    0.5000
    0.5000

Se utiliza para obtener los periodos 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