« FIRデジタルフィルター係数 発生ソフト | メイン | デジタルマイクコンプレッサーの製作1 »

2024年6月 3日 (月)

ローコストSSBジェネレーターの実験

カテゴリ<SDR> [ 自作  dsPIC]

dsPICを使ってSSBジェネレーターを製作し、7MHzトランシーバーや160mバンド用SSB送信機を作成、実用しております。 秋月で取り扱うdsPICも最近の仕入れのものは、かなり価格を上昇しておりますが、昔から置いてある部品は価格据え置きで販売されております。 その中で、特に安いと思われるdsPIC33FJ32GP202というDIP 28pinのdsPICマイコンが有ります。現在の価格は180円で、本命のdsPIC33FJ64GP802と比べて大きな差があります。 機能的には、内臓16bit DACが無くなり、ROMもRAMもサイズダウンしていますが、DSPエンジンは同じものが使われています。

このGP202と外付けのDACを使い、安いSSBジェネレーターが出来ないかの実験記です。

Shema_gp202_ssb_generator

上が、今回実験に使うSSBジェネレーターの回路図です。 dsPICとDACを合わせて280円です。

仕様はLSB USB AM CWの送受信機能付きです。もちろん、送信機のみ、或いは受信機のみとしても使う事ができます。 GP802タイプのdsPICに比べてRAM容量が2KBしかなく、ジェネレーターとして必要なFIRのTAP数に大幅な制限がでますが、そこは音質(音声帯域幅)を了解度が落ちない程度に抑えて、新スプリアス対応可能なものを目指します。 この条件で設定したDSPの基本仕様は以下のようにしました。

Dsp_block2_2

RAMの容量制限対策の為、AUDIO BPF部分のTAP数は127、IF BPF部分のTAP数は255とします。いずれも専用のリングメモリーをRAM上に確保しなければなりませんが、リングメモリーとして、X data 領域及びY data 領域上に確保出来るサイズは2のn乗でなければならず、2KBのサイズの中に、ふたつのリングメモリーとそれぞれ用のTAP係数データもこのX及びY領域に配置する必要があります。 これは、DSP命令のアドレッシングモードがX,Y RAM領域しか機能しない為です。(リングメモリーのサイズは2のN乗という制限が付きますが、TAP数はこのサイズ以下の奇数なら何でも良い) Float形式のTAP係数はconst指定で、プログラム領域に読出し専用データとして、保存して置き、dsPICが立ち上がる都度必要なFloatデータを符号付整数に変換してX及びYのRAM領域にコピーする事で、RAM使用量を80%以下に抑えています。

DACが内蔵されていないので、外付けのDACが必要になりますが、ちょうど、秋月にて、16bit 2chのラダー抵抗タイプのDAC PT8211が100円で販売されており、これを採用する事にします。このDACはオーディオ用として作らており、符号付整数にて、DA変換を行いますので、便利です。

これらを踏まえた上で、とりあえず、送信モードのみ動作するプログラムを作成し、基本機能の確認を行いました。

Out_1khz_2Out_10khz_2

Out_16khz

In_16khz

40KHzのサンプリング周波数で10KHz(右上の波形)を出力していますので、理屈的には、このような波形になる事は判るのですが、オリジナルのGP802を使った時は、このような波形にはならず、少なくとも確認した12KHzの信号でもきれいな正弦波でした。

100円のDACがおかしいのかもと、Microchipの330円のDACに換えてみましたが、波形は同じです。 どうもGP802の中で使われているDACが特殊なDACなのかも知れないと調べてみると、デルタシグマ変調タイプのDACである事がわかりました。 ΔΣ変調型DACというのはかなり高次のオーバーサンプリングを行い、1bitデジタルデータに変換した後、これをフィルターで元のアナログ信号に戻しているもので、サンプリング周期内のレベル補間がスムースに行われる事が特徴であり、最近のデジタルオーディオは、ほとんどΔΣ型らしい。 今回使ったのはラダー抵抗型というもので、DACとしては、一番簡単なICです。そして、これがミキサーを通してUSBやLSB信号になったとき、どうなるかは判りません。

10KHzキャリアと1KHz信号をミキサーにかけ、後段のBPFを通った、LSBとUSBのスペクトルを見てみました。

1khzlsb

1khzusb

案の定、余計なスプリアスが出ていました。異常スプリアスと示したスペクトルがそれです。 ただし、スプリアスが有っても、許容値以内なら問題ないのですが、一番大きいもので基準より-44dBくらいしか減衰していません。 これはHFの場合、50dB以上、50MHzの場合、60dB以上低くなければならず、NGです。

オーディオ発振器をスィープさせ、それをオーディオスペアナでピークホールドしてフィルター全体のスプリアスを見てみました。

Lsb

Usb

正弦波単体の時と同じ傾向を示し、NGです。

使ったDACが100円も330円もラダー型でしたので、これでは送信機としては不適合になってしまい、免許は降りません。

これを解決する為に、ΔΣ型DACをさがすと、秋月で240円のICが見つかりますが、dsPICとのインターフェースは不可能ではないが、面倒です。 結局、870円のdsPIC33FJ64GP802の方が簡単という結論になってしまいます。

下のファイルは実験途中のもので、送信モードしか動作しません。 FIRフィルター係数のファイル名がBLとなっていますが、中身は全てKaiser窓です。

SSB_generator_CD0.cをダウンロード

TapAM255_BPF_BL.hをダウンロード

TapAUDIO127_BPF_BL.hをダウンロード

TapAUDIOCW127_BPF_BL.hをダウンロード

TapCW255_BPF_BL.hをダウンロード

TapLSB255_BPF_BL.hをダウンロード

TapUSB255_BPF_BL.hをダウンロード

 

SSBジェネレーターは諦めましたが、マイクコンプレッサーが作れるかも知れないと実験を始めました。

 

INDEXへ戻る