非職業的技師の覚え書き

JK1EJPの技術的検討事項を中心に記録を残します。

Home-brew SDRの調査

 背景

久しぶりに覗いたアマチュア無線用トランシーバの home-brew 用キットにも SDR 化の波が押し寄せていると感じ、先ずはアナログの郷愁を感じられる QCX キットを組み立てました。LPF を改良してスプリアスの抑制を行いましたが、ハードウェアでそれ以上の深化は非職業的技師の技量では難しそうです。

SDR であれば、機能の追加・改良の実験の大部分はソフトウェアの世界で閉じ、作業の多くはディスプレイの中で完結します。SDR は home-brewer 志向の省スペースアパマンハムに好適ではないかと考え、準備として調査に着手しました。

選定したSDR調査対象

現在までに調査した home-brew SDR は下記表に示す5件です。個人的興味と技量に合わせて選定したものであり、業界の SDR キット等を網羅した調査結果ではありません。その証拠に著名な mcHF は未調査です。QCX 等のアナログ無線機に SDR の機能を追加するといったボトムアップのアプローチを志向しています。アナログとディジタルの比較ができれば、 SDR の優劣を決し易いと思った次第です。

f:id:amat49:20210814134702p:plain

選定した home-brew SDR調査対象

上記にリストアップしたSDRは、オーディオ周波数近辺にコンバージョンした後の IQ 信号を A/D 変換するタイプの SDR です。RF 信号を直接 SDR で処理するためには、ADC も含めて高速(且つ高価な)処理系が必要になります。上記の中にも、FFTで周波数領域に変換した後にフィルタ演算などの信号処理を行うか、あるいは時間領域のまま信号処理を行うかの違いはあるようです。詳細は未調査ですが、利用可能なリソースの少ない(1)、(2)は時間領域の信号処理、リソースの多い(3)、(4)、(5)は周波数領域の信号処理でSDRを実現していると推定しています。

アナログ時代は先達が設計した回路図を見ることによって、RF 信号処理について学ぶことができました。ディジタル時代は回路図の代わりに組込プログラムのコードを見て学ぶ必要があります。そこで、ソースコードGitHub で公開されている(あるいは公開が予定されている)SDR を選定しました。なお、機能のプログラムへの実装方法や流儀は無数にあるため、コード自体を解読するのは骨が折れます。プログラムの仕様書(ソフトウェアの設計図)が存在するか、あるいはそれに匹敵するコメント文がコードに埋め込まれていれば学び易いのですが、それについては未調査です。過去の QEX 誌の解説等が SDR の Common Sense としてベースになっているのではないかと踏んでいますが、まだ推測に留まります。

(5)「T41 SDT」は開発中のためソースコードが公開されていませんが、Version 1.0開発完の暁には公開されると予想しています。なお、「T41 SDT」とは「Teensy 4.1 Software Defined Transceiver」から取られた名称と思います。上段の(4)「Teensy-ConvolutionSDR」に受信機能しかないため、その差別化として SDT と名付けたのかもしれません。

搭載SoC

最も比較し易く且つ調査し易い項目として、搭載 SoC(System on a Chip)について下記表にまとめます。SoC はマイコンと読み替えても構いませんが、(3)「sBITX」のBCM2711(ARM Cortex-A72)をマイコンと呼ぶのは抵抗があり、まとめて SoC としました。

f:id:amat49:20210814135256p:plain

搭載SoC

SoC の主な比較指標には「 Clock 周波数」、「消費電力」、「価格」等があります。コア数とメモリ容量も重要ですが、搭載すべき機能が先に決まらないと議論できません。

「価格」は、企業が大量生産する場合には重要な指標の一つですが、個人が1個の Chip あるいは1枚の Board 購入する場合に数百円と数千円の違いは選択の優先要因にはならないと考え除外しました。

「消費電力」は、移動運用に向けて重要な指標となりますが、データシートから相互に比較可能な指標として上手く抽出できませんでした。I/O アクセス等の動作によって消費電力は変わるため、同一の測定条件を見つけられませんでした。それでも、(1)の ATMEGA328P と(5)の MIMXRT1062DVJ6A は電流値が2桁は違いそうです。

「 Clock 周波数」は客観的に比較し易い指標です。これだけで処理速度が決まる訳ではありませんが、AVR から ARM まで全て RISC アーキテクチャなので処理速度の一つの目安になります。低い方から見て、(1)「uSDX」の健闘が光ります。Arduino Uno と同じ ATMEGA328P(Clockは20MHz)でE級増幅ファイナルを駆動して、SSB の SDR を実現しているのは凄いと言わざるを得ません。

処理速度を決定する重要な要素として、FPU(浮動小数点演算処理装置)の有無があります。FPU が無い場合は、ダイナミックレンジを慎重に調整した整数演算を貫くか、ソフトウェアライブラリで浮動小数点演算をエミュレーションする必要があります。初心者には後者が無難ですが、仮数部と指数部の処理等によって処理速度が低下します。FPU を搭載するのは(3)、(4)、(5) が採用する SoC になります。加えて、(4)、(5)の Teensy が採用する SoC はフィルタ演算等の信号処理に頻出する積和演算(係数とデータの積を行い過去値との和を取る演算)を高速に実行可能な DSP 拡張命令(Digital Signal Processor extension instructions)を搭載します。固定小数点の積和演算を対象にしていますが、FPUと組み合わせることで浮動小数点の積和演算を高速に実行可能なようです。(3)は GPU(VideoCore VI)を搭載しますが、ユーザが信号処理に応用できるかどうかは不明です。

組込ソフトウェアはデバックが難しいため、開発環境も重要です。(1)、(2)、(4)、(5)は Arduino IDE をサポートします。スモールスタートから始められそうです。(2)が採用する SoC Board(Raspberry Pi Pico)はデバック端子を搭載します。他の SoC Board のデバック環境は未調査です。USB print デバックが中心になると思います。

SDR入門に好適なのは?(個人的感想)

(1)「uSDX」が入門用に見えますが、少ないリソースに必要な機能を搭載するためには工学的工夫以上の芸術的工夫が必要となり、逆に初心者が手を入れるのは難いのではないかと考えています。また、SSB の送信にも QCX と同じE級増幅ファイナルを使用しているため(逆にそれが驚きですが)、実用に供するのは難しく、国内ではダミーロード実験に留まるのではないかと危惧されます。

(2)「uSDR-Pico」は(1)のブランチですが、やはりリソースが少ないのがあい路になりそうです。FPUがないため、FFT/IFFTによる周波数領域の信号処理の実装は難しそうです。時間領域中心の実装になると思います。

(3)「sBITX」のリソースは必要以上に十分と思われますが、他と比べてフットプリントが大きいことと、強力な冷却ファンが必要になりそうなことが、個人的にはあい路です。また、SoC が高級 OS 指向のためキャッシュや分岐予測等の機能を搭載しています。リアルタイム処理においては、これらの機能は、サンプリングタイムの限界が読み難い原因になるかもしれません。WDT(Watch Dog Timer)が運よく一度吠えなかったからと言っても、スペクトルの描画のような重HMI(Human Machine Interface)処理がキャッシュを占有した後にサンプリング処理を実行すると吠えるかもしれません。分岐予測のミス、キャッシュミス等の最悪ケースを想定した限界処理時間を見積もることが難しいように思えます。サンプリング処理コードだけをキャッシュアウト禁止にできると良いのですが。

(4)、(5)が採用する PJRC(Paul J Stoffregen and Robin C Coon)社の SoC Board は Teensy(非常に小さい)と称されています。

名前の通りフットプリントは小さく、QCX+ の2階にも搭載できそうです。それを実践している YouTube 動画もアップされています。残念ながら、SDR の詳細は未公開です。

創業者二人の名前からとった PJRC 社の社名からわかる通り、Teensy は米国の小規模なスタートアップが開発しているためか、日本国内での Publicity は低いようです。しかし、「Teensy SDR」で検索すると英語では多くのヒットがあり、米国を中心とした海外では人気があるようです。SoC は1コアですが、上記の通り FPU と DSP拡張命令 を搭載していることが魅力です。主に狙うマーケットはオーディオ系と推測します。その意味でも、オーディオ帯域近傍の SDR 処理に好適と思われます。日本の Distributor は登録されていないようですが、米国の SparkFun 等の Distributor 経由でスイッチサイエンスや千石電商等で扱いがあるようです。PJRC 社の直販サイトで購入することも可能なようです。

(4)「Teensy-ConvolutionSDR」は Teensy 3.6 SoC Board を利用して、周波数領域の信号処理により SDR 受信機を実現しています。

(5)「T41 SDT」は最新の Teensy 4.1 SoC Board を採用し、送信機能まで実現しているようです。まだ開発中とのことでビデオによる紹介しか資料がありませんが、将来の公開を期待させます。なお、開発者のお二人はリタイヤされたベテラン OM のご様子で、非職業的技師も奮起させられます。

以上、個人的興味による偏向した比較でしたが、心は Teensy に傾いています。QCX+ のダイレクトサンプリング IQ 信号をブランチして Teensy Board に取り込むところから着手できないかと考えています。