さて、先日の Ham Fair でも、Yaesu さんからは FT-710 AESS が発表され、HF~50MHz 帯は、ダイレクトサンプリング方式の SDR 機が Yaesu さんも ICOM さんからも、出揃いました。
これからの無線機は、やはり ダイレクトサンプリング方式が主流となっていくのでしょうか?

そんな中、一応、半導体関連の仕事をしてきた私としては、少しでもこの時流にのるべく、何か、ダイレクトサンプリングのSDRを勉強できそうな手頃の教材はないかな?とここ数年探し続けてました。

今まで候補に挙がったのは、①HackRF One, ②SDRPlay RSP2/dx, ③Blade RFx40, ④KiwiSDR 等です。

周波数レンジで言えば、

①HackRF One  100KH~6GHz
②SDRPlay        1KHz~2GHz
③BladeRF x40  300MHz~3.8GHz
④KiwiSDR         0~30MHz

という感じで、KiwiSDR 以外はGHz 帯までカバーしています。

この4つのうち、実は、②と③は既に購入して所有しています。

先ず③は、昔、インターフェース誌か何かの記事で、構造研究所の藤井氏が記事を書かれていて、Matlab を使って簡単に動かせる、というものだったと思います。ハードの構成としては、今回の KiwiSDR と似たものです。実際に自分でも動かしてみたくて、当時はかなり高かったのですが、個人用のMatlab と合わせてボードを購入。しかし、雑誌の通りに動かそうとしても、Matlab のバージョンが変わってしまったためか、うまく動作せず。結局お蔵入り。

その後、FT-DX 3000 を購入するのにあたり、今流行の Waterfall 表示がしたくて、憧れの OM である JA2WIG 氏 に真似て、②の SDRPlay RSPdx を購入。しばらく使ってましたが、結局、ATAS-120A が使いたくて Rig を FT-DX 10 に変えてしまったので、これも使わなくなりました。

買っては直ぐに使わなくなる、という無駄なことの繰り返しを続けている毎日ですが...

そして、今回辿り着いたのが、④の KiwiSDR です。


では、この KiwiSDR って、他の SDR と何が違うのでしょうか??

先ず、最初に購入した③のBlade RF ですが、Matlab で動作しなかった時点で、私にとっては、唯の箱となってしましました。勿論、このボードも、RF部の脇には 40KLE Cyclone 4 FPGA が搭載されているわけですから、その FPGA 部分の回路をいじって、SDR について実験することが可能なのでしょう。ですが、日本語で書かれたような詳しい使い方の資料がみつからず。仕事も忙しくなり、結局断念しました。

そして、次の ②SDRPlay ですが、こちらはパソコンに SDR Uno をインストールすれば、何とかハードは使えるようになりました。が、SDRPlay は単体で完成された製品なので、中身をいじって遊ぶことが出来ませんでした。

しかし、今回の Kiwi SDR は、それらとはちょっと違うのです。

先ず、Kiwi SDR は、RF+FPGA という構成の SDR Reciever であるだけでなく、基本的にはそれが BeagleBone という ARM Cortex-A8 マイコンチップが搭載されたboard に実装して使うことが前提で開発されており、このマイコンボード上のソフトが一緒に提供されています。
そして、これらの開発が、オープンソースなので、公開されているのです。

しかも、使いやすさを追求しているため、インターフェースは このマイコンボード上で動作する Web Browser 経由で制御できるようなコンセプトとなっているため、余計なソフトウェアなしでも簡単に利用できる上、ネットに公開すれば、世界中の人が、この SDR をシェアして使うことができるのです。
その使い方をサポートするサーバーが公開されているのです。

前置きはこれくらいにして、Kiwi SDR でどんなことが出来るようになるかを説明します。

KiwiSDR を設定すると、SDR.hu というサイトから、自分の SDR 受信機で受信したデータを世界中にシェアすることが出来るようになります。

Kiwi sdr 3

のように、世界に公開されているサイトの一覧が見られるのですが、PSKreporter のような世界地図上に表示することもできます。

例えば、日本の状況を見てみると、

kiwi sdf 1

という感じで、30局ぐらいがエントリーされています。ご覧の通り、中国やロシアは殆どエントリーされていません。

他も見てみると、北米やヨーロッパはこんな感じです。

kiwi sdf 2

北米に比べてヨーロッパで多くエントリーされている傾向がありますね。

こちらがオーストラリア・ニュージーランドです。

kiwi sdf 3

最後が、南米・アフリカです。
kiwi sdf 4

で、それらの各エントリーをクリックすることで、次のような画面が表示されます。

Kiwi sdr 4

どうでしょう。こちらが、私が今回購入した Kiwi SDR による我が家の現在の受信状況です。
とりあえず、アンテナについては、7MHz に同調した ATAS120A を繋いでます。

周波数は、0~30MHz となっているのは、Kiwi SDR が使用している ADC のサンプリング周波数が 65MHz であり、扱える周波数が fs/2 の max 32.5MHz 以下となることが理由かと。

この右下の制御パネルから、AM, LSB, USB, CW などの切り替えや、拡大・縮小など、設定や表示を自由に変更することが出来、自分が選んだ世界の好きな地点での受信状況が、まるで自分の受信機のような感覚で、確認することが可能です。

なんと素晴らしいことでしょうか !!!!!??

受信だけとはいえ、まるで、世界にリモートシャックを所有したような気分になれるのです。
これを可能にしているのが、単に SDR を作るだけではなく、それをマイコン基板上に実装して、Webサーバー経由でインターネットに接続する部分まで込みで開発された、という点で他のSDRと一線を画しているのだと思います。

開発者の発想が素晴らしいですよね。

では、その発想を実現したハードとソフトについて簡単に説明しましょう。

先にも触れた通り、KiwiSDR は BeagleBone というマイコンボードと合わせて使用する前提で作られています。また、GPS も接続して、位置や時間、周波数の補正も行うことができるため、そのためのGPSアンテナ、更にはケースも一緒に購入するのが良いかと思います。ちなみに私はすべて秋月電子様から購入しました。


Kiwi sdr 5

では、マイコンボードの BeagleBone (Green) の方は置いておいて、KiwiSDR の構成をみていきましょう。これから書く内容は、KiwiSDR design review に全て記載されています。それの私の理解となります。なので、誤りもあるかもしれませんがご了承下さい。

最初に、ハード全体としては、こんな感じです。

Kiwi sdr board block diagram

シンプルですよね。①VLF-HF 帯のフィルタ-Amp-ADC + 発振器 である RF 部、②GPS用の受信部+発振器 の GPS RF 部、③ FPGA、④ EEPROM、⑤ 電源用 LDO, SMPS という感じです。

 受信信号については、66MHz でいきなりAD変換して、あとは FPGA で力技で処理しているところが今風ですよね。

これを、Beaglebone の上に2つのコネクタで接続してマウントするので、Kiwi SDR の PCB ボードはこんな感じのコンセプトでレイアウトされているようです。

Kiwi sdr PCB
非常に分かり易いですね。RF部の詳細は別の機会に説明するとして、FPGA の中をみていくと、受信信号を扱うパスは、こんな感じです。
Kiwi sdr DDC Ch
65MHz でサンプルされた 14bit の 受信データは、2つに別れ、それぞれ DDS によって生成された SIN, COS の値で乗算されて I, Q 信号となり、それらが CIC フィルタによってデシメーションされて、受信信号は 8.125MHz(?) 24bit データまでのデータに落され FIFO を介してマイコンボードに渡されます。

一方、waterfall 用の方は、1 to 512 の 5stage CICVAR 後、Sampler 用の Memory へ格納しています。
受信信号の音声パスは、随時使用していきますが、water fall の方は、拡大・縮小などをした際に、何となく後から、表示に必要となるデータを Sampler Memoy から読み出して表示する、ということなのだと思われます。このあたりも、なるほど、という感じですよね。

この辺り、実際の FPGA の回路でどんな回路になっているのか、回路データがオープンソースとして公開されていると嬉しいのですが... まだ分かりません。

一方、こちらが、GPS の信号の方です。私は購入した製品が届くまで、KiwiSDR に GPS が接続できるなんて、知りませんでした。

Kiwi sdr GPS

GPSにより、周波数の補正と時間補正をやるはずなのですが、今ひとつ、こちらのモジュールでの計算がそれにどのように貢献しているのかが、まだ分かっていません。E,P,L,C の関係ってどうなっているのでしょうね?


いずれにしても、FPGA でやられているのは、ここまで。後段の処理は BeagleBone の TI 社マイコン AM3358BZCZ100 に搭載された CPU コア、ARM Cortex-A8 @1GHz がソフトウェア処理で実現することとなります。仕事の分担としては、こんな感じのようです。

Kiwi sdr Software overview
これも、分かり易いですよね。先にFPGAの方で説明した図と上下が逆となっているのだと思いますが、上が waterfall 用の 16bit データパスで、下が Audio 用の 24bit データパスだと思います。 
waterfall のための FFT や、Audio 信号の PassBand Filter 処理、AGC、復調処理などは全て BeagleBone による Software 処理で行われているのですね。

そのため、1GHz の A8 には、DSP演算用の NEON も実装されているようです。この辺りのソフトウェアもどんな感じで実装されているのか、非常に興味深いですね。

ここまで説明したら、KiwiSDR の FPGA の機能ブロック構成がどんな感じか分かると思います。
最後に、クロック系統図を示します。

Kiwi sdr FPGA clock diagram

おっと、ここで、このFPGA にも、実は、embededd CPU が搭載されていることに気付きました。

この、KiwiSDR に使用されているFPGAは、Xilinx社製の Artix-7 シリーズの XC7A35T というサイズの製品のようです。

 ロジックセル数:33,280
 DSPスライス:90
 メモリ:1,800
 GTP 6.6Gb/s:4

というスペックであり、Xilinx製の CPU である MicroBlaze が eCPU として搭載されている模様です。

最初に、KiwiSDRの構成に触れた際、EEPEOM が実装されていました。コネクタに実装される形で書いてあったので、おそらく BeagleBone の Cortex A8 用のプログラムが格納されているものと思っていたのですが、FPGA の MicroBlaze も 使用しているのだとすると、こちらのプログラムは、どこに実装されているのでしょうかね?FPGA内で、ROM化されているのでしょうか。

いずれにしても、FPGA の MicroBlaze も使っているのであれば、そのソースも覗いてみたいものです。

Kiwi sdr Github

ざっと、KiwiSDR の全体の構成は理解して頂けたでしょうか?

以前、今流行の NanoVNA についても、そのハードの構成や、オープンソースとして公開されているデータについて調べたことを書いたような気がしますが、今回も、KiwiSDRについて調べたら、世界のハッカーが協力して、こんな素晴らしい受信機を使ったシステムを仕上げてくれたことを知って、本当に人間って凄いなあ、世の中には凄い人が沢山いるのだなあ、と感動しました。

60歳を超えてしまったオジさん(おじーさん?)が理解するのは、ちょっと難しそうですが、このサイトを見て少しでも興味を持っていただけた若い方がいらっしゃいましたら、是非とも詳細のデータを覗いてみて、自らの向上に役立てて頂ければ幸いです。

ではでは 73

にほんブログ村 その他趣味ブログ アマチュア無線へ