スペクトラム拡散の実験

CQエレクトロニクス・セミナ「Piラジオを使ったソフトウェア・ラジオの可能性と実装方法を学ぶ」で実演した スペクトラム拡散のVHDLとC++のソースコードを公開します。
実際に動作させるには外部ミキサが必要になるのでその情報も合わせて紹介します。



上はスペクトラム拡散動作時のPiラジオのブロック図です。
FPGA内部の赤枠で示した部分がスペクトラム拡散用に追加した回路になります。



スペクトラム拡散の信号を発生させ、それを更に復調して元の24kHzに戻す様子を表した図です。
Piラジオでは1GHz以上のRFで実演しました。

FPGA、C++プログラムファイルの入手

セミナで実演に使ったVHDLソースとラズパイのC++ソースは以下でダウンロードできます。

FPGA config用jicファイル RevC 2017/2/12更新 PiRadioセミナーで使ったスペクトラム拡散の実験に対応

C++ソース Ver 2.00 2017/4/14更新 スペクトラム拡散の実験に対応した最新版
レシーバソフトウェアはこちらから最新版をダウンロードしてください。

jicファイルでFPGAを書き換える手順は「FPGA書込方法」 を参照してください。

ミキサの接続方法

スペクトラム拡散を受信するのはPiRadio単体で可能ですが、送信は出来ないためミキサを追加してスペクトラム拡散送信部を作ります。
下の写真のように安価なミキサIC NJM2594(秋月電子で150円/個)と僅かなCRだけで製作可能です。



回路図と接続方法は以下のようになります。

PiRadioのCW出力 → ミキサ基板のキャリア入力
PiRadioのGPIO_D → ミキサ基板のベースバンド入力
PiRadioのANT入力 ← (20dB ATT) ← ミキサ基板の乗算出力
PiRadioの5V電源 ← ミキサ基板の+5V



ベースバンド入力の560Ωを5.6kΩに変更すると高価な(20dB ATT)は省略できます。
乗算出力の1pFは減衰効果を期待しています。不要な場合はf特を持たないように1000pF以上にします。

動作確認

ソフトウェアの起動方法はこれまでと同じです。

$ cd PiRadio
$ sudo ./piradio

周波数はどこでも構いませんが、ミキサの対応できる周波数にします。
NJM2594の上限300MHzより低い周波数が良いでしょう。

ソフトウェア(PiRadio Receiver Ver 2.00)は受信機の機能に加えスペクトラム拡散の制御機能を持っています。 キーボードで[p]ボタンを押すたびに擬似ノイズ「PN」機能を切り替えていきます。



[p]キーを1回押すと送信開始となります。PN TX on
もう1回押すと送信&受信がONになります。PN TX&RX on
更にもう1回押すと全てOFFになります。PN off

PN TX on の状態にすると下のようにノイズ状のスペクトラム拡散信号でフロアが盛り上がってきます。



PN TX&RX on にして復調開始しても大きな変化はありません。
この時点ではまだPN符号のタイミングがずれているため復調できない状態です。

ロータリーエンコーダをゆっくり回して復調できるポイントを探します。
この操作は受信側のPN符号を1bitづつシフトさせています。
PN符号のタイミングが一致して相関が取れると下のように24kHzの変調信号が現れます。



この状態の時、FUNCを操作してオシロ画面に切り替えると下のように24kHzの短形波が観測されます。



ロータリーエンコーダーを再度回してタイミングを外すとノイズだけになります。



このようにスペクトラム拡散信号はPN符号とそのタイミングが一致した時だけ、 ノイズの中から信号が浮かび上がってくる様子を観測できます

PN on 状態の時だけロータリーエンコーダーはPN符号のタイミング調整機能となります。 この時、周波数はロータリーエンコーダーでは可変出来なくなります。
通常の受信時などは必ずPN offの状態で使用してください。