概要
CPU1はCPU2からの指示で、8KHz毎に入力アナログ信号をデジタルへ変換し、3KHzのデジタルローパスフィルターを経て、90度位相変換し、CPU2へ伝送します。
CPU2は8KHZサンプリングの信号Iと90度位相変換された信号QをCPU1から取得し、内部で発生させるキャリアI、90度変換されたキャリアQとの演算を行いLSBを生成します(またはUSB)。
生成されたLSBをデジタルフィルターを通してDAコンバータへ伝送します。
詳細
CPU2はfilter1.cというプログラム名になっています。
160KHz毎にサイン波とコサイン波の10分割(36度)の値と、8KHz毎にCPU1から取得したオーディオ信号のIQとの演算を行います。
演算によって16KHzのLSB、USBが生成できますが、音声の特性を考えてLSBに固定しています。(USBは周波数変換時にLSBから反転させます)
CW、FMはオーディオ信号を1000Hzに固定してキャリアを生成します。
生成された信号はサンプリング160KHzの8次連立チェビシェフフィルターを通します。
設計時の通過帯域は13KHzから15.9KHz、リップル0.5、阻止域の減衰量は45dBです。
CPU1はSSB_generator.cがプログラムです。元来このCPU1個ですべてを処理していたのですが、フィルターの特性を良くするに従い処理能力が足りなくなって分割しました。
オーディオ信号は8KHz毎にサンプリングされ、250次のFIRフィルターを通ります。
250次のFIRフィルターは100Hzから2890Hz、20Hz以下・3KHz以上は-84dBで設計しています。
周波数特性は-6dB幅 80Hz〜2930Hzになります。
90度位相変換は250次のヒルベルト変換です。
周波数特性は50Hz〜3950Hzで偏差0.02です。
PTTをONにした時TXスイッチをONにしますが、音声は5mS遅らせて出力します。頭切れ防止です。
PTTをOFFにした時は5mS後にTXスイッチをOFFにします。
455KHzに周波数変換した後、XTALフィルターを通していますが、この時高域の特性が若干悪くなっていましたので、プリエンファシスで補正するようにしています。
プログラムソース
下記にリンクを張りました。
これだけではコンパイルできません。
近いうちに足りないソースを整理してリンクを張るようにします。
|