ケーブル伝送波形の減衰と歪みは有限個の L, R, G, C から構成される一般の電子回路とはかなり違います。 (注1)
ここでは、Fourier変換による周波数領域でケーブル伝送波形を求めるための、 ケーブル周波数特性モデルの作成と、その使いかたを解説します。
まず、ケーブルの伝送特性を表すシステム関数を求めます。 (注2)
ここに、 Vi = ケーブル送端の(信号)電圧源 Zs = 信号源の内部インピーダンス (Ω) Z0 = ケーブルの特性インピーダンス (Ω) γ = ケーブルの伝搬特性 = α + j*β α = ケーブルの減衰定数 (neper/m) β = ケーブルの位相定数 (rad/m) j = sqrt(-1) l = ケーブルの長さ (m) Zr = ケーブル受端の負荷インピーダンス (Ω) Vr = ケーブル受端の電圧 (V)
1図 ケーブル伝送
1図の回路で、信号電圧に対する受信電圧の比は下記のようになります。 (注3)
Vr/Vi = Zr/(Zs+Zr)/(cosh(γ*l)+Z0/(Zs+zr)(1+Zs*Zr/Z0^2)*sinh(γ*l)) (1)
1図でケーブルを除いて、信号源と負荷を直結した場合は、
Vr/Vi = Vi*Zr/(Zs+Zr) (2)ですから、ケーブルのシステム関数は
H(f) = 1/(cosh(γ*l)+Z0/(Zs+zr)(1+Zs*Zr/Z0^2)*sinh(γ*l)) (3)です。
これは、(3) のシステム関数に入力信号 Vi を入れると出力信号 Vr が得られることを意味します。
つまり、任意の入力信号 f(t) について、 下記の手順で出力信号 g(t) が得られることになります。
ケーブルの伝搬特性は特性インピーダンスと伝搬定数で決まりますが、 高周波なら下記のモデルで表現できます。 周波数が低くなると、もっと複雑になりますが、 伝送波形を求める場合はこの近似で十分間に合います。
Z0 = 特性インピーダンス (Ω)
= sqrt(L/C)
L = 高周波に於けるケーブルのインダクダンス (H/m)
C = 高周波に於けるケーブルのきゃぱしたんす (F/m)
α = 減衰定数 (neper/m)
= Rdc + sqrt(f*Rdc)/(4*Z0)
Rdc = 直流抵抗 (Ω/m)
β = 位相定数 (rad/s)
= c*Vr + α
= 1/sqrt(L*C) + α
c = 真空中の光速 (2.99792458e8)
Vr = ケーブルの速度係数 (0 < Vr <= 1)
特性インピーダンスはケーブルを伝搬する電磁波の 磁界成分に対する電界成分の比ですから、 特性インピーダンスが大きくなると、 ケーブルの導体に流れる電流が減って、 導体中のジュール熱による損失が減り、 減衰が減ることになります。
α と β のいずれも周波数の平方根に比例する成分が出て来ますが、 これがケーブル独特の歪の原因になります。 (注4)
PE (Polyethylenie) のような高周波特性の良い絶縁材料を使っていれば、 誘電体損失は導体損失に比べて十分低いので無視できますが、 誘電体損失による減衰は
G = ω * C * tan(δ) ここに、 G = 誘電体損失による減衰 (G*m) ω = 角周波数 (rad/s) = 2 * π * f π = 3.1415.. f = 周波数 (Hz) C = ケーブルのキャパシタンス (F/m) tan(δ) = 誘電体の誘電正接ですから、減衰定数は下記のようになります。
α = 減衰定数 (neper/m)
= Rdc + sqrt(f*Rdc)/(4*Z0) + ω*C*tan(D)/2/Z0
ケーブルの周波数領域モデルがわかれば、 前記の手順で任意の入力信号に対する出力波形を計算できますが、 以下、理解しやすいように、簡単で実用的な事例をつけておきます。 手軽に実験できるように、c や c++ でなく、awk script で書いてありますが、 複素数の計算が多い場合は c++ を使うほうが楽です。
まず、通常の伝送線路では送受端のインピーダンスマッチングが取れていますから
Zs = Zr = Z0が成り立ち、この場合 (3) 式は下記のように簡略化できます。
H(f) = exp(-γ*l) (4)
= exp(-α*l)*exp(-j*β*l)
= exp(-α*l)*(cos(β*l)-j*sin(β*l))
数値計算の場合は無限時間の積分ができず、 FFT(Fast Fourier Transform)を使うのが普通で、 入力波形は周期関数に限定されますが、 ここではパルス波形の代表である方形波を考えると、 下記のように計算することができます。 (注5)
#! /bin/sh
M=9 # 2^M = 1 周期のサンプル数
len=100 # ケーブル長 (m)
Z0=110 # 特性インピーダンス (Ohm)
a0=0.201 # 直流抵抗 (Ohm/m)
a1=3.96e-6 # 高周波の減衰定数(neper/m)/sqrt(f) .. f = 周波数(Hz)
/usr/bin/awk '
BEGIN {
M = '$M'
z0 = '$Z0' # Z0
a0 = '$a0' # Rdc
a1 = '$a1' # alpha/sqrt(f)
pulse(20e-9, 20e-9, 142e-9, 326e-9, M)
exit 0
}
# パルス波形生成
# tr = 立上り時間 (s)
# tf = 立下がり時間 (s)
# pw = パルス幅 (s)
# per = 周期 (s)
# 2^M = 1 周期のサンプル数
function pulse(tr, tf, pw, per, M, i, N, N1, N2, N3, v) {
N = 2^M
N1 = int(N * tr / per + 0.5)
N2 = int(N * (tr + pw) / per + 0.5)
N3 = int(N * tf / per + 0.5) + N2
for (i = 0; i < N; i++) {
t = per * i / N
if (i < N1)
v = i / N1
else if (i <= N2)
v = 1
else if (i < N3)
v = (i - N3) / (N2 - N3)
else
v = 0
print t, v
}
}
' | /usr/local/bin/fft | /usr/bin/awk '
BEGIN {
M = '$M'
z0 = '$Z0' # Z0
a0 = '$a0' # Rdc
a1 = '$a1' # alpha/sqrt(f)
len = '$len'
}
{
# F(f)
f = $1 # 周波数
x = $2 # F(f) の実部
y = $3 # F(f) の虚部
# ケーブルの周波数モデル
b = a1 * sqrt(f) * len
if (i == 0)
a = b
else
a = b + a2 * f^a3 * len
if (NR == 0) # DC
a = z0 / (z0 + a0)
else
a = exp(-a)
# F(f)*H(f)
u = a * cos(b)
v = -a * sin(b)
w = x
x = w * u - y * v
y = w * v + y * u
print f, x, y
}' | fft -i
exit 0
この sf script で使っているfftpというコマンドは フーリエ変換と線形システムの基礎 (2) - 例題 で解説したものです。
Fourier変換については フーリエ変換と線形システムの基礎 (1) - 解説 を見てください。
この script を実行したときの ケーブル入力波形と ケーブル出力波形を付けておきます。
有限個の L, C, R, G から構成される、 一般の電子回路のステップ応答は指数関数的波形になりますが、 これは回路の方程式が常微分方程式になるためです。
一方、無限個の L, C, R, G から構成され、 回路の方程式が偏微分方程式になる伝送線路の場合は、 ステップ応答が誤差関数的波形になって、 収束が遅いため、 電子回路でお馴染みの立上り時間の定義が使えないとか、 かなり様相が異なって、 SPICEなどの回路シミュレータで解析する場合も、 工夫が要ります。
線形システムのインパルス応答 h(t) のFourier変換をシステム関数と呼びます。
∽
H(ω) = ∫h(t)*dt = exp(-α(ω)) * exp(-β(ω))
-∽
ここに、
H(ω) = システム関数
h(t) = インパルス応答
α(ω) = 減衰量 (neoer)
β(ω) = 位相遅れ (rad)
ω = 角周波数 (rad/s)
線形システムの入力波形 f(t) と出力波形 g(t) のFourier変換をそれぞれ F(ω), G(ω) とすると
G(ω) = F(ω) * H(ω)が証明できて、
∽
g(t) = 1/(2π)*∫ F(ω)*H(ω)*exp(j*ω*t)*dω
-∽
Fourier逆変換により出力波形が得られます。
伝送線路理論の基礎を見てください。
伝送線路の SPICE モデルを見てください。
インピーダンスマッチングがとれていない場は H(f) に (4) 式でなく (3)
式を使います。
注4 - ケーブル伝送の2次定数の近似式