2025년 10월 1일 업데이트됨

모쿠 위상 계측기 1kHz에서 2GHz 사이에서 진동하는 입력 신호에 대해 최대 6µRadian 정밀도로 위상을 측정합니다. 디지털 방식으로 구현된 위상 고정 루프(PLL) 아키텍처를 사용하여 기존 록인 증폭기(Lock-in Amplifier) ​​및 주파수 카운터의 성능을 훨씬 능가하는 탁월한 동적 범위와 정밀도를 제공합니다. Phasemeter는 앨런 편차를 계산하고 그래프로 표시합니다. 앨런 편차는 단위가 없는 안정성 측정값으로, 일반적으로 클록 및 기타 발진기의 안정성을 정량화하는 데 사용됩니다. 이 가이드에서는 수학적 계산을 다루고, 중첩 변수 \(\tau\) 추정기를 사용한 앨런 편차 계산의 예를 제공합니다.

Allan 편차 및 위상 측정에 대해 자세히 알아보려면 현대 시계와 발진기를 정량화하는 방법에 대한 웨비나를 시청해 보세요.

이 애플리케이션 노트를 다운로드하려면 클릭하세요. 여기에서 확인하세요.


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

앨런 편차는 안정성을 측정하는 척도로, 일반적으로 시계 및 기타 발진기의 안정성을 정량화하는 데 사용됩니다. 주파수 y의 앨런 편차 sigmay는 다음 방정식을 사용하여 관측 시간 τ의 함수로 계산됩니다.

\(\sigma^2_y(\tau) = \frac{1}{2}\langle \left( \bar{y}_{n+1} – \bar{y}_n \right) \rangle\)

또는 위상 측정값 \(x\)를 사용하여 앨런 편차를 측정할 수 있습니다. 위상과 주파수는 다음과 같습니다. 위상은 주파수 \(x = \int{y \ dt}\)의 적분값이며, 식은 다음과 같습니다.

\(\sigma^2_y(\tau) = \frac{1}{2\tau^2}\langle \left( x_{n+2} – 2x_{n+1} + x_n\right) \rangle \)

여기서 \(x\)는 시간에 따라 측정된 위상입니다. 실제로 무한 시간에 대한 기대값을 계산하는 것은 불가능합니다. 유한한 샘플링 속도와 시간을 갖는 하드웨어를 사용하는 경우, 이 방정식을 이산화해야 합니다. Moku 위상계는 중첩 변수 \(\tau\) 방법을 사용하여 앨런 편차를 계산하며, 이는 다음과 같이 정의됩니다.

\(\sigma^2_y(n\tau_0, N) = \frac{1}{2n^2 t_0^2 (N-2n)} \sum^{N-2n-1}_{i=0}{ \left( x_{i+2n}-2x_{i+n}+x_i \right)^2} \)

여기서 \(\tau_0\)은 Phasemeter의 샘플링 주기이고 \(N\)은 입력 시계열에 대해 수집된 데이터 포인트 수입니다. \(n\)은 원하는 \(\tau \simeq n \tau_0\)을 가장 잘 추정하는 샘플링 주기의 정수 배수입니다. \(x_i\)는 다음을 나타냅니다. i시계열의 요소.


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

이 예에서 우리는 1MHz 신호의 Allan 편차를 측정했습니다. Moku:Pro 위상계. 신호 주파수는 150Hz에서 10분 동안 측정되었습니다. 앨런 편차를 표시하려면 Moku 디스플레이 상단의 "주파수" 탭을 선택하고 플롯 영역에서 "앨런 편차"를 선택하세요.

Moku Phasemeter는 위에 표시된 위상 정보를 사용하여 주파수의 앨런 편차만 계산합니다. "위상" 또는 "진폭" 탭을 선택하더라도 앨런 편차 플롯은 변경되지 않습니다.

그림 1: 위상계 켜짐 Moku:Pro 1MHz 신호의 앨런 편차를 표시합니다. 


파이썬 구현

우리는 파이썬에서 동일한 계산을 수행하여 위상계의 정확도를 검증할 것입니다. 함수 cal_oadev 위상 정보, 샘플링 속도, 그리고 관측 시간 배열인 시계열 \(\tau\)을 입력으로 받습니다. 위 방정식을 사용하여 중첩된 앨런 편차를 계산하고 \(n\tau_0\)과 \(\sigma_y (n \tau_0)\)을 배열로 반환합니다.

이 함수를 사용하려면 NumPy와 수학 라이브러리가 필요합니다.

#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([])


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

        currentSum = 0
 # 합계를 초기화합니다.
        을 통한 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에서 수집한 시계열을 가져와 Python 스크립트를 사용하여 Allan Deviation을 계산했습니다. 모든 원시 데이터와 스크립트는 여기에서 확인하실 수 있습니다. 여기에서 확인하세요..

시계열은 "data.csv" 파일에서 확인할 수 있습니다. 이 데이터는 내장된 데이터 로거 Phasemeter에서 첫 번째 열은 측정된 시간(초)이고, 네 번째 열은 측정된 위상(사이클)입니다. "CalculateAllanDeviation.py" 스크립트는 Excel 파일을 읽고 cal_oadev "AllanFunc.py" 함수에서 앨런 편차를 로그 스케일로 \(\tau\)의 함수로 표시합니다. 앨런 편차 그래프는 Moku:Pro와 Python 스크립트 간에 잘 일치했습니다.

이 분석을 실행하려면 matplotlib 및 pandas 라이브러리가 필요합니다.

그림 2: 기록된 위상 정보를 바탕으로 파이썬을 사용하여 계산한 앨런 편차. 


참고자료

[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.


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

문의하기


데모 모드에서 Moku를 사용해 보세요

macOS 및 Windows용 Moku 앱을 다운로드할 수 있습니다. 여기에서 확인하세요..


FAQ에 대한 답변을 받으세요

장치 및 계측기에 대한 질문과 답변을 찾아보세요. 기술 자료.


Moku 사용자와 연결

또한 사용자 포럼 새로운 기능을 요청하고, 지원 팁을 공유하고, 글로벌 사용자 커뮤니티와 소통하세요.

기타 권장 어플리케이션 노트

모든 애플리케이션 노트로 돌아가기