어플리케이션 노트

앨런 편차 측정

Moku 위상 계측기를 통한 앨런 편차 가이드

2023 년 9 월 10 일 업데이트

Moku 위상 계측기는 입력 신호의 위상, 진동수 및 진폭을 측정하고 이러한 양의 앨런 편차를 실시간으로 계산할 수 있습니다. 사용하시는 Moku 모델에 따라 다르지만, 반송파 진동수가 6MHz인 입력 신호에 대해 최대 300μ라디안 정밀도를 지원할 수 있습니다. 디지털 방식으로 구현된 위상 고정 루프 아키텍처를 사용하여 기존의 락인 증폭기 및 진동수 카운터 기능을 훨씬 뛰어넘는 뛰어난 동적 범위와 정밀도를 제공합니다. 이 가이드에서는 수학을 다루고 중첩 변수 τ를 사용한 앨런 편차 계산의 예를 제공합니다.

사용 설명서 다운로드

중첩된 변수 τ 추정기를 사용한 앨런 편차

앨런 편차(Allan Deviation)는 일반적으로 시계 및 기타 발진기의 안정성을 정량화하는 데 사용되는 시간에 따라 변하는 양의 안정성을 측정한 것입니다. 편차가 정량화되는 수량의 변화율 단위가 있습니다. 예를 들어, Allan 위상 편차의 단위는 다음과 같습니다. 사이클/초, 진폭은 V/s이고 빈도는 다음과 같습니다. Hz / s. 클럭 안정성을 계산하는 데 사용되는 경우 초당 초 단위를 갖습니다. 즉, 단위가 없습니다. 일부 소스에서는 Allan Deviation의 "단위 없음"을 모든 입력 계열에 대해 잘못 일반화합니다.

앨런 편차의 정의에 따르면 앨런 편차 σy는 관찰 시간 τ을 다음의 방정식에 따라 계산하는 함수입니다.

x는 앨런 편차를 계산할 이산 시계열입니다. 실제로 무한한 시간 동안의 기대값을 계산하는 것은 불가능합니다. 앨런 편차를 계산하기 위해 여러 추정기가 사용됩니다. Moku 위상 계측기는 중첩 변수 τ를 통해 앨런 편차를 계산되며 이는 다음과 같이 정의됩니다.

여기에서 τ0란 위상 계측기의 샘플링 기간이고 N이란 입력 시계열에 대해 획득된 데이터 포인트의 수입니다. n은 원하는 값을 가장 잘 추정하는 샘플링 기간의 정수 승수입니다. τ ≅ n τ0xi는 해당 시계열의 i번째 요소입니다.


Moku 위상 계측기를 사용한 앨런 편차

이 예에서는 Moku:Lab위상 계측기를 사용하여 2MHz 신호의 앨런 편차를 측정했습니다. 신호의 진동수와 위상은 122Hz에서 10분 동안 측정되었습니다. 위상에 대한 앨런 편차를 표시하려면 Moku 디스플레이 상단의 "Phase" 탭을 선택하고 플롯 영역에서 "Allan Deviation"을 선택하십시오.

"진동수" 또는 "진폭" 탭을 선택한 경우 Moku:Lab은 방정식 (2)의 입력으로 주파수 또는 진폭 시계열을 사용합니다.


파이썬 구현

cal_oadev 함수는 시계열, 샘플링 속도 및 관찰 시간 τ의 어레이를 받습니다. 방정식 (2)를 사용하여 중첩된 앨런 편차를 계산하고 nτ0σy (0)를 어레이로 리턴합니다. NumPy, math 라이브러리가 필수입니다.

#Import libraries

import numpy as np
import math

def cal_oadev(data,rate,tauArray):     tau0 = 1 / rate  # 샘플링 기간을 계산합니다.
    dataLength = data.size # N을 계산한다
    dev = np.array([]) # 출력을 저장할 빈 배열을 만듭니다.
    actualTau = np.array([])


    for
 i in tauArray:         n = math.floor(i / tau0) # 타우 값이 주어지면 n을 계산합니다.
        if n == 0:             n = 1
 # tau가 샘플링 기간보다 작으면 최소 n을 사용합니다.

    currentSum = 0
 # 합계를 초기화합니다.
    for
 j in range(0, dataLength - 2*n):
        # 합계를 제곱하여 누적합니다.
        currentSum += (data[j+2*n] - 2*data[j+n] + data[j])**2

        # 정규화 계수로 나누기
        devAtThisTau = currentSum / (2*n**2 * tau0**2 * (dataLength - 2*n))         dev = np.append(dev, np.sqrt(devAtThisTau))         actualTau = np.append(actualTau, n*tau0)

    return actualTau, dev
 #실제 타우와 중첩된 앨런 편차를 반환합니다.

 


계산 예

이 예에서는 Moku:Lab을 이용하여 과거에 획득한 시계열을 가져왔습니다. 파이선 스크립트를 사용하여 앨런 편차를 계산하는 과정입니다. 본례에서 사용된 데이터와 스크립트는 아래에서 찾으실 수 있습니다.

원시 ZIP 데이터 스크립트 다운로드

시계열은 “data.xlsx” 파일에서 확인할 수 있습니다. 첫 번째 열 "A"는 측정된 진동수(Hz)이고 두 번째 열 "B"는 측정된 위상(사이클)입니다. "CalculateAllanDeviation.py" 스크립트는 Excel 파일을 읽고 "AllanFunc.py"에 있는 cal_oadev함수를 부릅니다. 앨런 편차는 τ의 로그 스케일 함수로 나타내집니다. 앨런 편차 플롯은 Moku:Lab과 Python 스크립트 양측이 일치했습니다. 필수 라이브러리: NumPy, math, pandas, Matplotlib


참고자료

[1] Land, D. V., A. P. Levick, and J. W. Hand. “The use of the Allan deviation for the measurement of the noise and drift performance of microwave radiometers.” Measurement Science and Technology 18, no. 7 (2007): 1917.

[2] Allan, David W. “Statistics of atomic frequency standards.” Proceedings of the IEEE 54.2 (1966): 221-230.

[3] Howe, D.A., Allan, D.W., and Barnes, J.A. “Properties of signal sources and measurement methods.” Proceedings of the 35th Annual Symposium on Frequency Control (1981): TN-14 – TN-60.


질문이나 의견이 있으십니까?

문의하기