FPGAで定義されたATTを追加

PiRadioでは復調信号をRaspberriPiのGPIOへパラレルで渡すためデータ幅を10bitに制限しています。 そのため理論的なダイナミックレンジが60dBしかありません。 微弱な信号である-120dBmを下限とすると上限は-60dBm程度となり、それ以上の信号が入ると飽和してしまいます。
近傍などの強電界は-60dBmを越えるため通常はフロントエンドに可変ATT回路を置きます。 しかしPiRadioの設計思想はフロントエンドなどアナログ部分を可能な限りシンプルにして再定義の幅を広げる事にあるため、 LNAの歪特性を良くして、あえてフィルタもATTも置いていません。そこで今回、PiRadioではFPGAにATT機能を追加する事にしました。

10bit ADCの出力はFPGA内部のCICフィルタの働きで10bit以上に増殖しますが、PiRadioでは微弱な信号範囲の10bitだけを抽出して 強い信号レベルは破棄しています。今回はその抽出する範囲を切り替えられるようにして 12dB のATTとして利用出来るようにしました。 そのため実測で-45dBm程度(145MHz帯)まで飽和せずに復調できるようになりました。これはADCの飽和レベルと同じになります。

画面上の変更点

右下にATTが追加されています。0dB/12dBを切り替えます。



ATT設定を0dBから12dBに変更するとフロアノイズレベルが数dB上がる事で確認できます。
Span=50MHzまたはFPGA Rev.Cかそれ以前の場合はATTは切り替えてもフロアノイズの変化は起こりません。

FPGAのJICファイルをダウンロード

ATT機能に対応したFPGAのConfigデータ(JICファイル)ダウンロードはこちら


ダウンロードしたJICファイルは < FPGA書込方法 > を参照してConfig ROMに書き込んでください。

ソフトウェアのダウンロードとコンパイル方法

ATT機能に対応したレシーバソフトウェアはこちらから最新版をダウンロードしてください。

ダウンロードしたソースコードをPiRadio ディレクトリの下に置きます。

ソースコードのコンパイル方法

$ cd PiRadio
$ g++ -I/usr/include/X11 -L/usr/X11 -o piradio piradio.cpp -lX11 -lasound -lm

コンパイル時間は数秒です。エラーやワーニングが出なければ正常終了です。

動作確認

FPGAの書き込みが完了したら一旦電源を落として再投入します。
下の写真のように赤いLEDのD2とD3(基板左上のLED左端2個)が点灯していれば無事Rev.Dにアップデートされています。



PiRadio Receiver V2.20をラズパイで起動し、ATT切り替えでフロアノイズが変化する事を確認します。

ATTの動作説明

下はFPGA内部のCICフィルタのブロック図です。
今回新たにCIC Gain=0dB(青)を追加して切り替える事でATT=12dBを作っています。



下がこのブロック図のVHDLです。
m => 15 と m => 17 は抽出するビット位置を指定しています。 このように2bitずらす事でゲイン4倍つまり12dBのゲインを変えています。