DDSの実験
(オーバークロック/折り返し)



 トランシーバを構成する要素のうちで、ローカルはかなり重要な位置を占めます。PLLやVXOやVFOといった確立された方法では、あるていど特性の目鼻を立てることができます。今回はDDSを用いたことと、ダブルコンバージョン(アップコンバージョンにするか、単なるダブルコンバージョンにするかは検討中)の構成によっては、周波数構成上、DDSの適応領域を大きく逸脱する可能性があるため、予備実験をすることになりました。

 トランシーバの項目の冒頭には、DDSとして、AD9850を用いて10バンド分の局発周波数生成ができるようになったバラック部分が目にとまるかと思います。これとは別にAD9851を用いた場合の周波数の上限についてチェックすることにしました。

 下図はAD9851の実装の様子です。チップコンデンサを多用して電源インピーダンスを下げるように気を使いました。エクステンション基板は細い線でパターンを引き回すために、本来なら、直付けしたいバイパスコンデンサに到るまで、結構な距離が生じてしまいます。そこで、写真からはよくわかりませんが、9851のチップ上に0.1μと0.01μを2個づつ最短アース(銅版)になるように取り付けてあります。このコンデンサのホット側からは、パターンとは別に、リード線でICピンへ直接給電しています。


AD9851DDSの実装


16F84と結合して実験する様子

 回路図を以下に示します。特段変わったところはありませんが、DDSの出力側はトリファイラコイルで差動出力を合成しています。単独のアンバランス出力では300mVp-pくらいなのが、このようにすると1Vp-p以上の出力を得ることができるので、面倒でもトランスを使ったほうがいいと思います。駆動クロックは外部のSSGから供給しています。0dBmも供給すればOKです。


 さて、周波数生成の実験ですが、
「HF-50MHzをIFが45MHzでアップコンバージョンを行う」場合を想定してみます。このとき、最高周波数は95MHz近辺です(=50+45)。もっとも、イメージ比が取れれば、45(IF)+5(ローカル)という解もあるかもしれませんが、あまり現実的ではありません。従って、95MHzといった周波数をDDSで生成するのは容易ではなさそうです。考えられる方法として、

@高いクロックの利用できるDDSで強引に作る。
Aクロック周辺に生成されるイメージ(折り返し雑音)を利用する。
Bあっさり逓倍する


 このうち、Bは9850でも実験して、30MHz近辺を厳重にBPFで帯域制限し、3逓倍すれば実現できます。実際に組んで、受信機で聞いてみましたが、なんとかいけると思っています。

 ここでは、最高クロック周波数のスペックが180MHzのAD9851を使って@をどこまでできるか、また、Aをやる上での問題について考えてみます。

 まず、クロック120MHzで30MHzの基本波を作ってみます。下図がぞれで、クロックの120MHzの下に90MHzの成分が生成されています。このレベルは基本成分に比べて-10dB程度に見えます。150MHzはこれより-5dB程度になっています。クロックの120MHzが40dBくらい減衰しているのは感心しました。60MHz(基本波×2)は-35dBc程度です。


@DDSのスペクトラム




A30MHz出力(クロック120MHz)

 30MHzの基本波のスペクトラムは以下のとおり。(0.5MHz/div  RBW=10kHz 以下全て同一条件)意外ときれいなスペクトラムです。DC-30MHzまでのスペクトラムも十分きれいなので、BPFと共用すれば局発として十分利用できます。




B45MHz出力(クロック180MHZ)

 少しキャリアの「根元」のあたりがざわつき始めました。しかし、まあ、クロック周波数は定格どおりなので問題はないと思われます。




C67.5MHz出力(クロック270MHz)

 調子にのって270MHzのクロックで動かしましたが、やっぱりサイドバンドノイズが上昇しています。この状態で使い物になるかどうかは、やってみないとわかりませんが、あまり気色のいいものではないですね。実際は290MHzまで動きましたが、この領域は単に「動いている」というだけで、実用にはならないでしょう。90MHzもの周波数生成をダイレクトに行うのはたいへん難しそうです。たとえ、9852が使えるようになっても、100MHz近辺の信号を「ピュアに生成する」のは極めて高度な技が要ると思われます。




D90MHz出力(クロック120MHzの折り返し利用)

 たかだか、120MHzのクロックで「折り返し」を使うと90MHzの信号が30MHzの基本波に比べて-10dBで得られます。ダイレクトに90MHzを「オーバークロック」で生成するより、スペクトラムはきれいです。ただし、この問題は以下のとおりです。

@HFローバンドの周波数構成が実現できない。3.5MHz用に48.5MHzのローカルは、基本波、折り返しのいずれでもやりずらい。オールバンド化にはクロック周波数の変更が必要。
A基本波が強大なレベルで存在するので、超おおげさなBPFが必要。

と考えると折り返し周波数利用も、クリーンヒット的な妙手ではなさそうです。シングルバンドの狭帯域なら可能性はありますが。


 こう考えてみると、上記案のうち、妥協でA+超BPFでいくか、あるいはB逓倍にする必要がありそうです。しかし、いろいろやってみて、実現方法については、あるていど方向性が見えてきたと思っています。


 以下は実験に使ったPIC-BASIC COMPILERのソースです。実は、ロータリーエンコーダ信号検出/DDSの制御、バンドSW検出、10バンド周波数生成、LED表示まで16F877を使ってできていますが、こんな感じで簡単に書けるという例として載せておきます。タブが消えてしまって、左寄せになって見ずらいですが、ご容赦を。


DEFINE OSC 10
'********************************************************************
'                    DDS CONTROL seri5110
'********************************************************************     
wdz var byte[6]
wdx var byte :wdxx var byte :wdxo var byte
W var byte :J var byte
'---------------------- Reset ------------------------
Pause 200
High PORTA.3:Pauseus 30:Low PORTA.3
'---------------------- SPconv -----------------------
Pauseus 10:High PORTA.1:Pauseus 10:Low PORTA.1 'モード変換 P→S
Pauseus 10:High PORTA.2:Pauseus 10:Low PORTA.2
Pauseus 10
'---------------------- data reset ----------------------
wdz[5]=%00000000:wdz[4]=%00000000:wdz[3]=%00000000
wdz[2]=%00000000:wdz[1]=%00000000
Gosub Ser_out
'---------------------- data write -----------------------
wdz[5]=%00000000:wdz[4]=%01010111:wdz[3]=%00111010
wdz[2]=%11001001:wdz[1]=%11111111
Gosub Ser_out
Stop

'+++++++++++++++++++++ serial output +++++++++++++++++++++
Ser_out:

'---------------------------------------------
For J=1 to 5
wdx=wdz[J]
'-------------------------------------
For W = 1 to 8
wdxx=wdx
wdxo=wdxx & %00000001
If wdxo=1 then
High PORTA.0 '
Else
Low PORTA.0 '
Endif
Pauseus 10
High PORTA.1 :Pauseus 10 '
Low PORTA.1 :Pauseus 10 '
wdx =wdx >> 1 'right rotation
Next W
'--------------------------------------------
Next J
High PORTA.2:Pauseus 10:Low PORTA.2:Pauseus 10 '40ビットの確定
Return
'++++++++++++++++++++++++++++++++++++++++++++++++++++
End