オールパス・フィルタを使ったPSNのSSB発生器を作る
2006.5.19

JA1VCW

１．はじめにPSN方式のSSB発生器は今を去ること30有余年前に、真空管を使用して作ったことがあります。
その見事なサイドバンドサプレッション、キャリアサプレッションに恐れをなして、その後は手をつけなかったのですが、またぞろ興味の虫が動き始め、ちょっと触ってみようかということになりました。
そのときの記録と感想です。
２．方式
AFのPSNをどのように作るかが興味の対象になります。
いくつかの方法がありますが、オールパス・フィルタ方式にしました。
理由は、”なんとなく動作や回路が単純でとっつきやすそうだった”からです。
調整で理論値に近い値が可能であろうというのも選択の一つでした。
３．目標
一応目標として(あくまでも目標です）、サイドバンドサプレッションを-70dBとしました。
そのために必要なAFのPSNの性能は位相誤差 ： ±0．02度
振幅誤差 ： 0.003という驚くべき高性能なPSNが要求されます。
４．実現方法
オールパス方式では通過帯域と誤差を規定しますと、段数が決まってしまいます。
一組のR・Cをポールと呼ぶことにします。（正しい呼び方ではないかもしれませんが、ここではそのように呼びます）
ここでは、文献１）の定数を使用させていただきます。
どのような特性になるかを、EXCELで計算させてみました。
この定数では位相特性は90度±0.006度程度に収まっています。
ここで試みに定数を変えてみます。
pole freq.

No.

8pole ALLPATH

90.01FL(Hz)FH(Hz)

6.946122.3782

142.768

72.6233

2118.558

190.813305.533

488.3484780.169

1247

589.991996.783213.642

689.9855246.178907.88

717023.25

54843.199

8位相差（°)

90.0059089.995

01234
ＬＯＧ Freq. 1=10Hz5

位相特性 誤差 約 ±0.006度
8ポール*2=16ポールなので、90度を横切るポイントが16あります。

8pole ALLPATH
90.01

FH6 を 3213.642Hz => 3213.042Hz
約0.02%下げた場合 誤差 約 +0.005度 -0.016度

位相差（°)

90.005900.006度 => 0.016度の変化は サイドバンドサプレッションとして-85dB => -77dB 程度の悪化を起こします。
（振幅は変化しないとした場合）
0.02%などという誤差は部品の規格をはるかに越えた値ですので、ただ製作したらうまくいったなどということはまずあり得ません。

89.99589.99
89.985
89.98
01
2
34
ＬＯＧ Freq. 1=10Hz5このような誤差がいろんなポールのところで発生すると、なかなか調整するに厳しい現実があります。

1５． オールパスフィルタ方式の考え方
オールパス・フィルタは、振幅を変えずに入出力の位相差を、周波数に対して連続的に変化させます。
変化は１段では0度から180度までです。 位相差を決めると周波数が１点決まります。
実際のPSNとしては広い周波数範囲で一定の位相差を持たせるために工夫をします。
一組のオールパス・フィルタ
１） 目的の周波数で入力と出力の位相差が45度と135度ずれるような一組のオールパス・フィルタを用意します。
この場合は図のようにその目的の周波数一点で、2つのフィルタの出力の位相差が90度になります。
２） ここで入力と出力の位相差が45度になるためには、
45 = 2*arctan（X） なので、X=0.41421 となります。
位相差が90度になる周波数であるF90との比が0.41421のときに、その周波数で45度位相が推移します。
そのようなF90=1/（2πRC）をきめます。
３） 同様に入力と出力の位相差が135度の場合は、X=2.41421 となります。
このように一組のオールパス・フィルタでは１点でしか正確な90度の位相差は得られません。

45度
90度
Cin

135度

outR～

位相変化＝ 2*arctan（F/F90）： F90=1/（2πRC）

オールパス・フィルタの従属接続
帯域を広げるための方法として周波数をずらした回路を何段も直列につないで、ポール周波数をうまく加減し、最終的に目的の特性からあまりはなれないようにする方法があります。
たとえば2ポール*2段(4ポール)では次のようになります。
FH1FH245度

45度

135度

135度

FL1FL2

out A
90度

～

out B

位相特性

位相差
90.00200.00001089.9980

1001000

10000-50.0000

89.9960

位相差89.9940
89.9920

位相（°）

位相差（°）

90.0000

FU1FH1FU2
FH2-100.0000

FL1FL2-150.0000

89.9900
89.9880
350

450

550

650-200.0000

周波数（Hz)周波数（Hz)

オールパス・フィルタ各段における入出力位相特性（なぜこれでうまくいくのでしょうかね。 とても信じ難い）

out A とout B の位相差2６． 定数の決定
ポールの周波数は前記のように、文献１）の定数を使用させていただきます
ポールの周波数にたいして 1/（2πRC）を満足すればよいので計算自体は簡単です。
ポールの周波数は、厳密に管理されています。 従ってたとえば8ポール*2の定数を6ポール*2に変更する場合に、低い周波数の2つのポールの回路を取ってしまうような、無茶なことはしないこと。 6ポールの定数セットを使用する必要があります。
通常のフィルムコンデンサでは誤差5%であり、金属皮膜抵抗では1%が一般的なので、このように0.01%を問題にするような用途では調整が必要になります。
コンデンサは市売のものを使用し、それにあわせて抵抗を調節するのがよいと考えました。
容量計などで値を確認してから使用しても、0.01%などという精度はあやしくなりますので、そのまま信用しない方が良いでしょう。 容量計なども測定周波数が可変できるものは、周波数によって値がちがって表示されるものがあります。
前記に誤差0.01%などという数値が出てきました。 0.01%というと1/10000であり、1mのものさしで0.1mmの誤差を問うよ
うな割合となります。 これでは無調整というわけには行かなくなります。
オールパスでは、ひたすらこのポールの周波数にC*Rを合わせることが調整となります。
また振幅特性の誤差も重要です。 これはゲインを決める抵抗の値(Ri,Rf)が等しければそれ以上どうしようもないので、Ri,Rf には正確なものを使用します。
実際は、数多くの抵抗から値の同じものをペアにして使用します。 絶対値は問題にしません。
以前から手持ちの金属被膜抵抗で1%10kΩの精度の抵抗をペアに選別しました。
今回は0.1%程度にそろえて使用しました。 デジタル電圧計の抵抗レンジが4桁でしたので(10.00kΩ）同じ数値が表示される抵抗をそろえます。 私の持っている測定器の限界です。

RfRi
total RC
#1

#2

#3

コンデンサを切りのよい値にしたときの抵抗値です。
No.

pole freq.

コンデンサ

FL(Hz)(uF)

抵抗値（Ω）

pole freq.

コンデンサ

FH(Hz)(uF)

抵抗値(Ω)

6.9461

122912.8

1

22.37820.47

15132.0242.7680.33

3118.5580.1211276.8

2

72.62330.18

12175.1

11186.9

3

190.81

0.082

10172.04

305.533

0.047

11083.2

4

488.3480.033

9875.95780.1690.022

9272.8

51247

0.012

10635.9

6

1996.780.00829720.263213.642

0.004710537.2

75246.17

0.00339193.178907.88

0.001511911.2

817023.25

0.001

9349.3854843.199

0.0002213190.91No.

3７． 粗調整
粗調整を行います。 何しろ1mを0.1mmまであわせ込もうという酔狂ですので、一回でスマートに調整を遂行しようとするのは無理な話です。
コンデンサの誤差が±5％とすると、±50mmのイメージです。 それを±5mm程度まで、固定抵抗の増減で合わせ込みます。
1%程度の精度のコンデンサが使用できる場合や、容量計などでその程度まであわせられるときには、このような方法は無用でしょう。
方法
回路を図のように変更します。 これは2倍のアンプつきのハイパス・フィルタです。
したがって入力の周波数を調整すれば入力電圧と出力電圧が等しくなります。
CR１段によるフィルタでの周波数の計算値は Fo=1/(2*π*C*R) となり このときの減衰は1/√２となります。
このアンプは2倍なので、ゲインが1/2となる周波数を入力して、入力電圧と出力電圧が等しくなれば、実際の回路のCRの値は正しいものとし、そうなるようにCまたはRの値を調整します。
１段づつ切り離す必要波ありません。 実際のオール・パスフィルタは何段も(ここでは8段）従属に接続されていますが、この調整に限っては単に図の抵抗の接続をはずして接地するだけです。 1段づつ独立に調整できることは、調整を容易にします。
10k10k10k10kOUTOUT
ININ

CCRR

周波数の決め方は、ポールの周波数の振幅が1/√2なので、振幅が1/2になる点の周波数を入力してそれが2倍された出力が入力の電圧と等しくなればよい。 実際は1/√3の周波数を使用すれば良いことになります。
HPF特性図振幅 1/2

F?のときのベクトル
Foのときのベクトル

Fo=1/(2*π*C*R)
F?
√3/2

周波数

レベル

1/2
調整周波数表No.

pole freq.

調整周波数

FL(Hz)（Hz）

No.

pole freq.

調整周波数

FH(Hz)（Hz）

16.94614.01

122.3782

12.92242.76824.69272.6233

41.933118.558

68.453190.81110.164305.533

176.404488.348

281.955780.169

450.4351247

719.9661996.78

1152.84

63213.642

1855.4075246.17

3028.8878907.88

5142.97

817023.25

9828.38854843.199

31663.74

41/√2R粗調整時に用意するもの
発振器（1Hz分解能、下記参照）
オシロスコープ

デジタル電圧計（ACレンジのあるもの）

AC電圧計（例・菊水 Model 165）

調整方法
１）VRを中点にセットします。
２）この表の周波数を入力。 0.2V～1V程度。 必ずOPAMPの電圧バッファを使用してその出力（出力インピーダンス0Ωに近い状態）を回路に入力すること。
前述のように回路を切り離す必要はありません。調整しようと思う段の抵抗を切り離して接地するだけです。
３）電圧計（ミリバル、デジタル電圧計、オシロ）でSWの a,bの電圧が等しくなるよう抵抗を追加または値を変更します。
今回は0.5%以下程度まであわせ込みます。
50Hz以下ではオシロスコープ。（これで0.5%は無理、できる限り等しくする程度）
数kHz以下ではデジタル電圧計。
それ以上はAC電圧計。
を使用しました。
４）VRの可変範囲の大きなものを使用して電圧をあわせ、抵抗値を記録してもよいと思われます。
５）すべての段について１段づつ実施します。 今回は16ポールなので16回実施します。
６）コンデンサを交換したときには、必ずRの調整を実施すること。
７）抵抗を追加、交換したときに、ハンダを使用した場合は、抵抗が十分冷えてから測定する。
８）VRを使用して抵抗値をきめるのは良いが、そのままVRをつけておかないこと。 最終的には固定抵抗に置き換える。
９）調整が終了したら、回路をもとにもどす。
10）発振器から信号を入力して、出力をオシロスコープのX,Yにいれて円を描かせます。周波数を変化させて円が歪まないこと。 これは動作チェックであり調整ではありません。 オシロの円ではとても％オーダの誤差はわかりません。
発振器
低い周波数では発振器の1Hzが問題になるので正確な発振器が必要になります。
4Hzにおける1Hzは25%です。 とても満足行く数値ではありません。 クロックを1/100程度にして、分解能を100倍にします。
カウンタで周波数を読みながらでは、カウンタの分解能や1カウントの誤差が気になります。
ここではDDSを使用するのがよいと考えます。 周波数の絶対確度はあまり問題になりませんが、周波数の比は十分注意しないといけません。 DDSでしたら周波数の比は正確です。
（実を言えば私のところはSSGなどはなくて、秋月電子のDDSとコントローラの組み合わせが唯一の発振器です。
ただし、DDSの出力コンデンサは変更する必要があります。 値の大きいコンデンサを並列に入れておきます。）ａバッファアンプ

ｂ
V

ATT
AMP
1Vp-p程度

C
#1

#2

#3

デジタル電圧計、
ミリバルAC レンジ、
オシロスコープ

秋月DDS ICSN74HC390など

1/100
秋月DDS発振器～67.xxx MHz（DDS内蔵Xtal oｓｃ）

SN74HC390などで1/10にします。
SN74HC390は規格上では67MHzは分周できませんが私のところでは問題なく動作しました。

5８． 密調整
いろいろと試行錯誤をしましたが、決定的なものは見つかりませんでした。 今回ひたすら良い点を探す力ずくでした。
今回、ハムジャーナル（文献２）などもためしてみました。 この場合調整すべき周波数を入力し、加算アンプの出力を極小（ヌル）にするように抵抗を可変する方法です。 確かに数100Hz以上ではヌルをみつけられるのですが、特に低い周波数では検出する方法が無く、オシロなどではどこがヌルであるかよくわかりませんでした。
また、CPUスペアナやCPUスイープジェネレータの組み合わせなどもためしてみましたが、高調波が検出されたりどうもいまいちでした。
しようがないので全てを組み上げて、もう455kHzの出力にスペアナをつないでの無手勝流です。
粗調整まではしっかり行ったのですが、ここで少し腰砕けですね。
１） 発振器を1kHzにセットして、振幅バランスをとります。
２） 発振器からポールの周波数を入力して、VRをまわしてヌルをとってゆきます。
３） 10kΩと100ΩVRの組合わせですと、VRが回し切ってしまうことが起きます。 その時はそのままにしておきます。
実は私のアナログのRFのスペアナでは周波数の低いポールは、分解能が悪くてよく調整できません。
結局500Hz以上のポールしかあわせられないのです。
ダウンコンバータを使用したCPUスペアナですと、分解能が高いのでヌルをとることができるかもしれません。
私のところには発信機が2つ無いので、ダウンコンバータが使えなくてだめでした。
いずれチャレンジしてみたいと思っています。
また、帯域内全体を見ながら調整できるような方法でないと、調整周波数では確かに逆サイドバンドは小さくなってもその隣のポールではどうなっているかわからないのです。
まじめにやろうとすると何がなんだかわからなくなります。
結局入力信号をゆっくり変化させてアナログスペアナで全体的に逆サイドバンドを小さくなるように調整して終了ということにしました。 妥協もおびただしいところです。
JA9のOMが考案された、TG付アナログスペアナをダウンコンバーとした方法が良いようです。
アナログスペアナですとちょうどフィルタをスキャンした形になって、余計なスペクトラムが見えなくなると思われます。
おそらくこの方法が一番良い方法ではないかと考えます。

SPA
実験はしていません
RFIN

TGOUT

TX

LPF
MIX

MIC
SSG

RFOUT

SSGの周波数はTXのキャリアの周波数と等しく設定する一所懸命調整した結果です。
2tone 776HZ/1980Hz
1kHz/div 100Hz/RBW

キャリア
逆サイドバンド

660dB

９． バランスド・モジュレータ（バラ・モジ）

バラモジについてはべつに実験しました。

たかがバラ・モジなので、簡単に片付けましょう。（実はこれが考慮不足でした）
SWタイプの片側のバラ・モジです.
4倍以上の発振器を使うのが難点ですが、水晶１個位は奮発して、新規に購入してもばちはあたらないでしょう。
SWは74HC4053です。 4052などはよく使われますが、4053はあまり一般的ではないかもしれません。
たまたま手持ちであったので使用しました。
出力アンプはDCを扱わないので片電源としました。 特別配慮したわけではありません。

4053
100mVp-p10u

AFIX(14)1.5k X1(13)

10k
47k

0.1u

10k+12V+5VX0(12)50k

47k-5V

2kOUT

1.5k0.01u+10u※220100k
100k
0.1u

4053
10u
AFQZ(4)1.5k

SN74HC4053

0.1u

10k

※47k

10k

Z1(3)

+5V

VCC Y

Z0(5)
50k

47k

X0
X1 A B C

1.5k-5V

0.01u+10u※220※47k

X

Y1 Y0

INH VSS
Z
VEE
Z1 Z0

Y0,Y1,B,INH=>GND
VEE=>-5V
VCC=>+5V
RFI+5V
233.5782MHz

D QCｑ+5VA(11)+5V
512611D QC9RFQ

C(9)

ｑ 8

※220 要調整。
※47k オプション。
VRがまわしきったった時などに入れる。

74HC74+5V

1/2

今回はたまたまジャンクの水晶で、3.5782MHzというのがありましたので1/8として、キャリア周波数447kHzにしました。 私の送信機は周波数の読み取り精度が50kHzなのでキャリアの周波数が8kHz程度ずれても、全く問題ありません。

7

１０． 感想 (あっているか違っているかわからないことが多いので感想です。 でもそんなに大きく間違ってはいないでしょう）
１）初めてのPSNですが、いまいちでした。 サイドバンドサプレッションも約50dB強程度で手を打ちました。
２）基本的には、ポールの周波数にどの程度精度よくあわせこむことができるかということが重要です。
スペアナがあると、画面を見ながらVRをまわして部分的には調整ができたようになりますが、正しいかどうかがわかりません。 個々のVRが独立して調整できないため、順に調整して一回りすると、最初がずれていたりします。
ここは理論どおり、計算値のポール周波数にあわせるようにしないといけません。
３）粗調整として1段ごとに独立にポールの周波数をあわせる方法は有効だと考えます。
この調整だけで、今回はおよそ40dBのサイドバンドサプレッションが得られています。
この方法は各段が独立していますので容易にできます。 しかし面倒です。
４）今回8ポール*2段としましたが、現実的には6ポール＊2段=12ポールでも十分かと考えます。 その場合少々低域と高域をカットすればよいのです。 それでも普及型のフィルタタイプよりも低域が出せると思います。
低い周波数のポールは調整がむづかしいのです。
分解能の高いスペアナを持ち出すか、はたまたDDSのクロックを1/100くらいにするくらいしかおもいうかびません。
また検出もうまくできません。
ですから、思い切って少し帯域を狭めて、6ポール*2段くらいがよいと思います。
ポールの周波数が6.9Hzなどという値がでてきますが、この調整もちゃんと合っていないと上のほうの周波数にも影響が出てきます。 ちなみに一番低い周波数のポールの調整が0.1%程度ずれますと全体に対する影響はこのようになります。 ですから思い切って低い周波数をカットしてポール数を少なくして且つ調整を正しく行なうほうが、トータルの特性が良くなると考えます。
５）今回のオールパス・フィルタはHPFをもとにした形の構成です。 この他にCとRを交換したLPF形式もあります。
今回の定数粗調整の方法ですと、LPFタイプのほうが調整周波数がCRの定数の周波数よりも高くなるので、調整しやすくなるとおもわれます。 なにかとLPF系のほうが安定のように感じます。 やってみるとわかるのでしょうが元気が出ません。
バラ・モジは最初からSWタイプでとっかかりましたが、思った以上に手間がかかりました。 455kHzといえどもシールドや配線など基本的なルールを守らないと不安定です。 そして、ルールを守らなくてうまくいきませんでした。
うまく行かないとはどういうことかというと、キャリアのナルの最小値が十分でない（たとえば最小値が50dB程度等）。
ナルがとれても安定ではなく、基板を動かしたりドライバなどを近づけるだけで再びキャリア漏れが発生しました。
今回のアナログSWで且つシングル・バランスの場合、60dBのキャリアサプレッションを安定に確保するのは難しいようです。 （腕の悪いこともあるでしょうが）ひずみを気にしなければ入力を大きくすればなんとか60dBのサプレッションも可能ですが、ちょっと・・・・
フィルタタイプの15～20dBのキャリア減衰のありがたみが身にしみてわかります。
また、PSNでは2個のバラ・モジを使用します。 この1個と2個では大違いで、2個になると難しくなります。
それでも調整時には50db程度のキャリア減衰は得られますが、その状態で電源をoffして放置（1～2時間）したあと、再投入すると、40dbくらいになってしまい、ゆっくりと50dB程度になってゆきます。
温度、電源電圧、またそれらによる波形の変化、タイミングの変化などが関係しているとおもわれます。
この調査は、順次行なってゆきたいと考えます。 => 別途レポートしました。
６）マイクアンプのLPF,HPFが帯域を決めることになります。 特にLPFは特性が直接サイドバンドの帯域に影響しますのでそれなりの急峻なフィルタが必要です。 オーディオでメカフィル並みの肩特性をつくらないといけない。
これも難題のひとつ。 チェビシェフはとげとげしているイメージだし、バターワースはのんびりのろまのイメージ。
なんだい結局シャープなフィルタがいるんじゃないか、それならはじめからフィルタタイプ・・・。
=> 別途レポートしました。
７）それにしても、部品の点数の多いのはちょっと閉口です。
オペアンプを20何個も使って、これだけ素子の中を通ってくれば、信号の質も悪くなろうよ。
フィルタタイプと比べていかにも大げさ。 これで得られるものは低域の特性のみ。
低域が要らないよという人にはPSN方式を採用する理由がありません。
群遅延が少ないかというと、オーディオのLPFの特性にかかってきます。 急峻な特性は群遅延を悪くします。
今まではHPFもLPFもあまり急峻とはいえないような特性でしたので、何とかなっていたのかもしれません。
もっとも人間の耳は群遅延にたいして鈍いということも聞きます。 実際はどうなんでしょうね。
８）ダイレクトコンバージョンは別の面白さと難しさがありそうです。 現時点ではとても手と頭がまわりません。
今回は単なるPSNタイプのSSB発生器ということでいたずらしました。 ビギナーです。

8９）簡単確実なのはやはりフィルタタイプです。 よいフィルタが入手できればという条件がありますが・・・。
DSPも部品点数から見ますと簡単でしょう。 送信系ではダイナミックレンジも狭いので、DSPは良い選択です。
方法によっては群遅延をゼロにすることも可能です。
PSNは技術的にはおもしろくて、いたづらしがいがありますが、帯域の問題やS/N、安定性や不要輻射などの特性のよい電波を実現するのは相当難しいでしょう。 何台か作って経験を積む必要があります。
アマチュアということでの実用の範囲では比較的容易にできそうです。（現状です）
１０）ところで水晶フィルタ、メカニカルフィルタなどは、不要な信号は入力に戻してしまうため、戻った信号は信号源インピーダンスによって消費されて熱になります。 DSP内のフィルタで削ったり、ゲインを取るために掛け算した場合、エネルギーはどうなってしまうのでしょう。 DSP内でいろいろ加工しても最終的にアナログに直したときにうまくつじつまが合うのでしょうか。 情報理論はよく知らないのですが、どういうふうに考えるのでしょうね。

１１）FLの4番目のポール周波数305.533Hzが、0.1%ずれて 305.8385Hzになったときの全体の誤差8pole ALLPATH

8pole ALLPATH
90.01

909089.9989.99
位相差（°)

位相差（°)

90.01

89.98
89.97

8pole

89.96

89.98
89.97

89.95

89.95

89.94

89.94

89.93

8pole

89.96

89.93
02460

ＬＯＧ Freq. 1=10Hz2

ＬＯＧ Freq. 1=10Hz１２）PSNジェネレータ全体の写真です。 ちょっと大きめに作りました。
基板は秋月の73*95mmの板を4枚使用しました。 内容は見ればお分かりと思いますが、右上： MIC AMPとHPF
右下： LPF
中 ： PSN 8ポール*2段
左上： DBMとCarrier 発振器
左下： 電源タッタこれだけを作るのに1年かかりましたがいろいろと勉強させていただきました。

参考文献
Ham Journal

4No. ５９，６２，８６，８７,９１

96付） EXCELを使用した、位相計算
ポールの周波数がきまると、周波数に対する入出力の１段あたりの位相差が計算できます。
1段の位相差が計算できると、その合計が全段の位相差になります。
さらに各周波数における最終出力の位相差の計算できます。 この最終出力の位相差を、目的の周波数範囲内で90度に近づけたいわけです。
位相差の合計
1段の位相差FH1・・・・・

FH8・・・・・

FL8out A
位相差(90度）

FL1～
1段

out B

8段

この右側は次のページ

EXCELの例

10この程度の計算でしたら、BASIC や C でプログラミングしてもたいしたことではないのですが、手軽にということとグラフがすぐに描けるということで、EXCELを使用しました。
私はMicrosoftとは何の関係もありませんが、このソフトはずいぶん役に立っています。 ありがたいものです。

11MIC ampより
約0.1～0.3Vpp

48.2mH48.2mH48.2mH48.2mH

LPF： 2700Hz@-3dB

0.12uF

0.22uF

C3R2

C1
R1

0.22uF

0.22uF

C3

HPF： 150Hz@-3dB

R2HPFout

C1

C20.12uF

R1

C28pF

8pF

FH1

FH810k

10k

10k

10k

IN

ALLpath
PSN

AFI
C

C
R

FL110kR

8pF
FL810k

10k

C

10k

AFQ

C
R

R

128pF