PSoCでAMラジオ(ができるといいな)
First Touchで気をよくしたので、PSoCで何か作ろうという気になってきた。適度なアナログ段があって、取りまとまりが良さそうなものだと、ラジオかなあ。First Touch後、いきなりラジオというのは少し無謀なのかも。
ラジオにはストレート方式とスーパー方式というのがある。現在実用になっているラジオはほぼすべてスーパー方式になっている。これは、受信周波数をそのまま検波するのではなく、一旦別の周波数に変換している。この変換後の周波数を中間周波数という。受信周波数は可変だが、中間周波数は一定である。このため、周波数で変化する選択度、感度などを中間周波数で管理できることが優れているというわけだ。
スーパー方式の代表的な回路ブロックはだいたい次のようになっている。
周波数混合が1個なので、これをシングルスーパーという。AMラジオは普通シングルスーパーだ。アマ無線の受信機なんかはダブルスーパーやトリプルスーパーもある。確かTVはダブルスーパーだったと思う。
AMラジオの場合、受信周波数は531kHz〜1602kHzを9kHzステップで放送している。一般的なラジオの中間周波数は455kHzにしている。2つの周波数を混合するということは、数学的には2つの積をとっている。これは加法定理の通り。
2つの周波数を掛け合わせると、和の周波数と差の周波数が出てくる。これが中間周波数ということになる。2種類出てくるのでどちらかを選択的に使う。逆の言い方をすると、目的の中間周波数に着目すれば、受信周波数に対して、局部発振を上側にとるか、下側にとるかという設計上の選択がある。たとえばNHK 594kHzを考えてみよう。中間周波数455kHzとの関係でいうと、
594-455 = 139 kHz あるいは
594+455 = 1049 kHz
のどちらかの周波数を発振させれば良い。ところが、差の場合はラジオの帯域をカバーするために、76kHz〜1147kHzという発振範囲となる。低域の周波数が広域の1/10以下になっており、この発振回路を作るのは結構難しい。発振したとしても、相当レベルが変動すると思われる。
和で取ると、986kHz〜2057kHzとなり、2倍程度の範囲になる。発振回路の設計はこのほうが遙かに楽であるから、上側の周波数を発信させているハズだ。
ところで、中間周波数は受信時の局部発振周波数が受信帯域にかぶらないように考えられている。NHK受信時の局部発振周波数は1049kHz。AMは9kHzステップなので、この近辺は1044kHzと1053kHzに放送局があるかもしれない。1049はこのうまいことほぼ中間になるように選ばれているのだろう。
話は前後するが、AMラジオは普通バーアンテナが入っていて、外部ANT端子が無い。これは電磁型のアンテナ兼共振器で、バリコンと並列共振して選択度を高めるとともに、電圧感度を上げている。普通のAMラジオは2連型のバリコンを使って、アンテナ回路の共振周波数と、局部発振の周波数を両方動かしている。
実用性の点から考えると、バーアンテナでいくしかない。バリコンは使えないので、バリキャップで電子同調する。普通のAMラジオのバリコンは300〜400pF程度あり、通常よくあるバリキャップは30pF程度なので、これは難しいと思っていたら東光のAMラジオ用バリキャップというのがあることがわかった。おそらくディスコン品なんだろうが小売りで入手できるKV1555NTというのがある。これはVR=0.5Vのとき、C=500pF程度あるものが、VR=4VでC=20pFほどと大きく変化する。少なくともAMのアンテナは530k-1600kと3倍強の変化があるのでバリキャップの容量変化も3倍以上ほしい。なおかつ5V駆動できることもPSoC的な要件だ。バリキャップの容量はDACで与えればいい。ANT回路はこれで決まりということにしよう。
各部の設計の前に、PSoCのアナログ段がどの程度の周波数特性をもっているのか知っておく必要がある。もっともよく使うだろうPGA(Programmable Gain Amp)のf特をみると、だいたいfc=100kHzくらいではないだろうか。この特性はパワーモード(Low/Mid/High)でも異なる。もちろん、Highがもっとも広帯域になる。
このデータからすると、IFを455kHzに設定するのはかなり困難で、ましてや1MHzを超える周波数混合をPSoCでやるのも無理である。IFは設計で変更すれば良いとして、周波数混合は確実にPSoC外で行うことになる。
IFを100kHz以下にすれば、IF以降はPSoCで処理できる。IFをどの程度の周波数にすれば良いかということだが、周波数特性のグラフから見ると、フラットと見なせるのはだいたい30kHzというとこだろう。しかし、PSoCの原発が32KHzだから、それを避けるという点と、9kHzの倍数を避けるという点でまずは40kHzをIFとして選択し設計を進めることにする。
局発を上側に取れば、局発周波数(lo)は571kHz〜1642kHzを9kHzステップで可変できる必要がある。
アンテナ回路とIFの選択は前述のとおり。局部発振器をどうしようか考えていたのだけど、上の図のやりかたが一番いいんじゃないかと思えてきた。一番スタンダードなやり方はPLLで局発をつくること。ところが、この方法だとまずVCOが必要になり、これは周波数的に無理だから外部回路になる。分周回路はカウンタでOKなのでPSoC内蔵のデジタルブロックが使える。あとは位相比較をどうするかだが、PSoCでやるのは難しそうだ。この辺は標準ゲートが多用できるPLDのほうが作りやすかったりする。比較周波数を低く(1kHzくらい)して、割り込み処理で位相比較する方法もできるのではないかと考えたのだが、別案の上の回路構成が思いついたのでめんどくさそうなPLLはやめにした。
局発の周波数は571kHz〜1642kHzまで9kHzステップで可変できればいい。ここで重要なのは、周波数の精度がそんなに必要ないこと。中心周波数から数百Hzずれていてもかまわない。SSBの場合は送信周波数とのビートが音になっているので、厳密な周波数が必要となるのだが、AMの場合は、搬送波は放送波に入っているため、受信の音域に局発の周波数偏差が影響を与えない。アマ無線をちょっとでもやっている人なら、SSBは受信時のダイアル位置で音のピッチが大きく変わるのに、AMの場合は変わらないということは経験的に知っていると思う。もちろんずれると、フィルタの肩にかかって信号が弱まる。あまりずれるとフィルタの肩にかかる帯域が落ちるんだが、逆サイドバンドの周波数成分があるからあまり影響を受けない。
この局発は2つの周波数を混合している。1つは分周率が低いラインからだ。従って周波数は高いが、調整ピッチは荒い。1/2を最後に入れているのはデューティを50%にするためだ。もう片方のラインは分周率が高い。従って周波数は低くなるが、調整ピッチは細かい。これを組み合わせれば必要となる周波数に対してある程度の偏差はあるものの、すべてカバーできる。2つの分周率は目的周波数に対するテーブルのルックアップとして実装すればいいだろう。このテーブルの内容はあらかじめ誤差が最小となる組み合わせを求めておけばいいのではないか。アンテナ回路の電子チューン用DAコンバータ値もこのテーブルに入れればいい。構造体のメンバーが3つあるという感じだ。
ミキサーは単なるアナログ乗算器である。数値計算を行っているわけではないので、精度も要らない、ミキサーの後にフィルタが入っているため、線形でなくてもいい、と条件が甘いので、かんたんな方法を採用する。かんたんなのはデュアルゲートFETを使う方法だ。3SK**などのデバイスで、ゲートが2個ある。水道管にバルブを直列に2個つけて、水量をコントロールしているイメージに近い。