« 2024年5月 | メイン | 2024年7月 »

2024年6月12日 (水)

デジタルマイクコンプレッサーの製作1

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

秋月で扱っている安いdsPICを使い、安いSSBジェネレーターが実現できないか実験したところ、一応SSB信号の発生には成功したものの、出来上がった信号のスプリアスレベルが大きく、SSBジェネレーターの実験は失敗してしまいました。 しかし、せっかく、試作基板を作った事も有り、何かに活用できないか、考えていたところ、デジタルマイクコンプレッサーが出来るかもしれない。そこで、目的を変更して、実験を継続する事にしました。

無線機の平均変調度を上げて、了解度を改善する手段として、RFスピーチプロッセッサーと言うのが昔から存在します。 これは、低周波のままで、音声圧縮を行うと、どうしても、歪が増加してしまうのですが、一度、高周波のDSBに変換し、この高周波の尖頭レベルをクリップした後、フィルターを通し、元の音声信号へ復調すれば、歪の少ない圧縮された音声信号が得られるというものです。

従来は、ダブルバランスミキサーでDSBを作り、片方のサイドバンドのみをメカニカルフィルターや同等のフィルターで取り出した後、これにBFOを当て、元の音声信号に戻すという構成をアナログ回路でやっていました。 今回、これを全てデジタルで行います。

Mc_block

上のブロック図が今回実験するマイクコンプレッサーの構成図です。 オールデジタルと言っても、マイク信号をデジタル処理出来るレベルまで増幅する手段や、ADCの中で発生するエイリアシングノイズ対策及び、DAC出力に現れるサンプリイング周波数の漏れを対策する為のLPFはアナログ回路で作る必要があります。

マイクのすぐ後にあるリミッターアンプはADCが飽和しないようにレベルの先頭値を規制する為のもので、通常ALCと言われるICです。その後のオーディオLPFはOPアンプやLCで構成する3KHz以下を通すLPFです。 DSPと書かれた枠内にあるブロックが今回採用するdsPIC33FJ32GP202となります。ADCで12bitのデジタルに変換された信号は、10KHzのローカルオシレターの信号と掛け算され、キャリアの無いDSB信号となります。 その信号を16bitの最大先頭値信号から24dB低いレベルで、プラス/マイナスともクリップし、それより高いレベルは全てフラットにします。 次にクリップされたDSB信号のUSBのみをBPFで取り出し、この信号と10KHzのBFO信号を掛け算し、元の音声信号を復調します。 ただし、この復調信号には多くの帯域外ノイズが含まれいますので、3KHzのLPFを通した後、DA変換して、音声信号に戻します。 

このブロック図は原理図であり、実際の回路では、マイク感度とコンプレッサーレベルの調整の為、入力部と出力部に可変抵抗が追加され、色々なトランシーバーに接続出来るようにします。

私が作るコンプレッサーは、自作の無線機で使う事だけを条件にしますので、出力レベルは自作無線機に必ず付いているAUX端子のレベルに合わせる事にしています。

マイクコンプレッサー配線図 MIC_COMP_01.pdfをダウンロード

Mc_1khz

Mc_400hz

上の波形は、入力レベルを3VppでADCに加え、DSP内部にて、-24dBのレベルでカットした信号のDAC出力です。左が1KHz、右が400Hz。 -24dB下の波形は0.3Vppより少し低いレベルになりますので、カットされた波形は、ほとんど台形波形ですが、ごらんの通り、1KHzはほぼ正弦波に戻っており、400Hzでも、完全とはいかないにしろ、高調波歪はかなり抑えられています。

実際にマイクコンプレッサーとしてまとめるには、マイクゲイン、クリップレベル、DAC出力レベル等を、無線機の仕様に合わせる為、可変抵抗が必要になります。 特に、クリップレベルは実験しながら決める必要がありそうです。

ソースファイル

MIC_complessor.cをダウンロード

TapAUDIO127_BPF_KS.hをダウンロード

TapUSB255_BPF_KS.hをダウンロード

 

INDEXへ戻る

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へ戻る