0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クロック周波数設計とFFT

Last updated at Posted at 2025-03-10

ADCのサンプリング周期と入力周期の関係について

1. はじめに

アナログ-デジタル変換(ADC)において、サンプリング周波数 (F_s) と入力信号の周波数 (F_{in}) は、データの正確な変換に大きく影響を与えます。特に、FFT(高速フーリエ変換)を行う場合、FFT点数とサンプリング周期の関係を理解することが重要です。

この記事では、以下のパラメータを用いて サンプリング周期入力周期 を計算し、それらの割合を求めるPythonコードを解説します。


2. 使用するパラメータ

以下のパラメータを基に計算を行います。

パラメータ
サンプリング周波数 (F_s) 1MSPS(1,000,000 サンプル/秒)
FFT点数 2048点
入力周波数 (F_{in}) 124.511 kHz

サンプリング周波数と入力周波数はコヒーレントサンプリングの関係で求める事ができます。


3. Pythonによる計算

以下のPythonコードを使用して、サンプリング周期 (T_s)、FFT点数を掛けた時間 (T_s \times \text{FFT点数})、および入力周期 (T_{in}) を計算し、それぞれの割合を求めます。

import numpy as np

# 与えられたパラメータ
Fs = 1e6  # サンプリング周波数 (1MSPS = 1,000,000 サンプル/秒)
FFT_points = 2048  # FFT点数
Fin = 124.511e3  # 入力周波数 (124.511 kHz)

# サンプリング周期の計算
Ts = 1 / Fs  # サンプリング周期 [秒]

# サンプリング時間 (Ts × FFT点数)
sampling_time = Ts * FFT_points  

# 入力周期の計算
T_in = 1 / Fin  # 入力周期 [秒]

# 割合計算
T_in_div_sampling_time_percentage = (T_in / sampling_time) * 100
Ts_div_sampling_time_percentage = (Ts / sampling_time) * 100

# 結果を表示
print(f"サンプリング周期 Ts: {Ts:.9f}")
print(f"Ts × FFT点数: {sampling_time:.9f}")
print(f"入力周期 Tin: {T_in:.9f}")
print(f"入力周期 ÷ (Ts × FFT点数): {T_in_div_sampling_time_percentage:.2f} %")
print(f"サンプリング周期 ÷ (Ts × FFT点数): {Ts_div_sampling_time_percentage:.2f} %")

4. 計算結果と解説

このコードを実行すると、以下の結果が得られます。

サンプリング周期 Ts: 0.000001000 秒
Ts × FFT点数: 0.002048000 秒
入力周期 Tin: 0.000008033 秒
入力周期 ÷ (Ts × FFT点数): 0.39 %
サンプリング周期 ÷ (Ts × FFT点数): 0.05 %

(1) サンプリング周期 (T_s)

[
T_s = \frac{1}{F_s} = \frac{1}{10^6} = 1.000 \times 10^{-6} \text{ 秒} = 1 \text{ μs}
]
これは、1秒間に 1,000,000回 のデータ取得を行うため、各サンプルの間隔が 1μs となることを意味します。

(2) Ts × FFT点数

[
T_s \times \text{FFT点数} = 1.000 \times 10^{-6} \times 2048 = 0.002048 \text{ 秒}
]
FFTの解析対象となる信号の長さは 2.048ms です。

(3) 入力周期 (T_{in})

[
T_{in} = \frac{1}{F_{in}} = \frac{1}{124.511 \times 10^3} = 8.0328 \times 10^{-6} \text{ 秒} = 8.033 \text{ μs}
]
これは、入力信号が約 8.033μs の周期で繰り返されることを意味します。

(4) 入力周期 ÷ (Ts × FFT点数) の割合

[
\left( \frac{T_{in}}{T_s \times \text{FFT点数}} \right) \times 100
]
[
\left( \frac{8.033 \times 10^{-6}}{2.048 \times 10^{-3}} \right) \times 100 = 0.39%
]
これは、FFTの時間範囲に対して入力周期が約 0.39% の長さしかない ことを示しています。

(5) サンプリング周期 ÷ (Ts × FFT点数) の割合

[
\left( \frac{T_s}{T_s \times \text{FFT点数}} \right) \times 100
]
[
\left( \frac{1.000 \times 10^{-6}}{2.048 \times 10^{-3}} \right) \times 100 = 0.05%
]
これは、FFTの時間範囲に対してサンプリング周期が約 0.05% の長さしかない ことを示しています。


5. まとめ

この計算結果から、以下の重要なポイントが分かります。

サンプリング周期 ( T_s ) は 1μs であり、FFT点数を考慮すると 2.048ms 分のデータが取得される。
入力信号の周期 ( T_{in} ) は約 8.033μs であり、FFTの時間範囲と比べると 0.39% の長さである。
サンプリング周期は FFTの時間範囲と比べると 0.05% の長さである。

この結果を基に、FFT解析を行う際の 時間分解能や周波数分解能 を考慮しながら、適切な設定を行うことが重要です。

おまけシミュレーション時間に冗長性を持たせる場合

import numpy as np

# 与えられたパラメータ
Fs = 1e6  # サンプリング周波数 (1MSPS = 1,000,000 サンプル/秒)
FFT_points = 2048  # FFT点数
Fin = 124.511e3  # 入力周波数 (124.511 kHz)

# サンプリング周期の計算
Ts = 1 / Fs  # サンプリング周期 [秒]

# サンプリング時間 (Ts × FFT点数)
sampling_time = Ts * FFT_points  

# Ts × (FFT点数 + 2) の計算
sampling_time_plus_2 = Ts * (FFT_points + 2)

# 入力周期の計算
T_in = 1 / Fin  # 入力周期 [秒]

# 割合計算
T_in_div_sampling_time_percentage = (T_in / sampling_time) * 100
Ts_div_sampling_time_percentage = (Ts / sampling_time) * 100
T_in_div_sampling_time_plus_2_percentage = (T_in / sampling_time_plus_2) * 100
Ts_div_sampling_time_plus_2_percentage = (Ts / sampling_time_plus_2) * 100

# 結果を表示
print(f"サンプリング周期 Ts: {Ts:.9f} 秒")
print(f"Ts × FFT点数: {sampling_time:.9f} 秒")
print(f"Ts × (FFT点数 + 2): {sampling_time_plus_2:.9f} 秒")
print(f"入力周期 Tin: {T_in:.9f} 秒")
print(f"入力周期 ÷ (Ts × FFT点数): {T_in_div_sampling_time_percentage:.2f} %")
print(f"サンプリング周期 ÷ (Ts × FFT点数): {Ts_div_sampling_time_percentage:.2f} %")
print(f"入力周期 ÷ (Ts × (FFT点数 + 2)): {T_in_div_sampling_time_plus_2_percentage:.2f} %")
print(f"サンプリング周期 ÷ (Ts × (FFT点数 + 2)): {Ts_div_sampling_time_plus_2_percentage:.2f} %")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?