JI3GAB/blog

ラジオに関する話題を中心につらつらと

HPSDR ワークショップ in Friedrichshafen の映像が公開されました

2014-07-15 22:39:07 | ソフトウェアラジオ
Apache Labs.のANANシリーズの元となったHermes(DDC/DUC方式のSDRトランシーバボード)や、それらのハードウェアを用いてプリディストーションを実現するOpenHPSDR版PowerSDR(FlexRadioのオリジナルから派生したバージョン)を開発しているのは、アマチュア無線家たちによるHPSDR(High Performance Software Defined Radio)というプロジェクトです。6月の末にドイツの Friedrichshafen で開催されるハムの祭典は、ヨーロッパでも最大規模のものだそうですが、そこで今年、HPSDRのワークショップが開かれました。

"HPSDR Workshop - Highlights and Perspectives in Advanced SDR-Technology" と題されたワークショップのプログラムはこちらにありますが、そのうちのほとんどの講演のビデオが公開されています。

プログラムのタイトル(内容のわかるものは日本語のごく短い記述を加えました)と動画へのリンクをここに書きますが、詳しい内容は上記のリンク先の説明を読んでください。発表はすべて英語で行われています。

なお、下にリンクを張った動画は、hamsdr.comにアップロードされたもので、容量の関係からかなり圧縮されていて画質はそれほど良くありません。ただ、いくつか見た限りはそれほど支障はないと思います。現在は高画質のものもOpenHPSDRのサイトで提供されています(その分ファイルサイズは大きいです)。

1. WDSP -- a new DSP - core for SDRs by Dr. Warren C. Pratt, NR0V
現在のOpenHPSDR版PowerSDRのコアとなっている信号処理ライブラリ (動画)

2. Android HPSDR by John Melton, G0ORX/N6LYT
Android上で動くHPSDR用アプリ (動画)

3. Chirp -- an advanced beacon project using weak signal detection by Phil Harman, VK6PH (動画)

4. Digital Predistortion linearizes RF amplifiers by Dr. Warren C. Pratt, NR0V
デジタルプリディストーションの概要と課題 (動画)

5. CuSDR-- Synopsis and new Developments by Dr. Hermann von Hasseln, DL3HVH
GPU(ビデオカード用のプロセッサ)を使って信号処理を行うHPSDR用ソフトウェア (動画)

6. ORION -- a new DDC/DUC board by Abhi Abhiarunoday
ANAN-200DのコアとなるSDRプラットフォーム"ORION"について

7. Future prospectives of HPSDR by Phil Harman, VK6PH
HPSDRプロジェクトの今後(動画1動画2)

私がこれまで見たのは主に 1.WDSP、4.プリディストーション、と7.HPSDRプロジェクトの今後、のビデオです。WDSPは、最近のHPSDR版PowerSDRのコアになっている信号処理ライブラリで、従来用いられてきたDttSPライブラリを置き換えるものになっています。

最近話題を集め始めたプリディストーションの説明は、かなり分かりやすいものだと思いますし、memory effectの問題など残された課題にも触れています。また、最後のところで聴衆(恐らくLeif Asbrink氏?)から、「高次の歪はむしろ増えているようだが…」という質問が出て来るのも興味深いところです(残念ながら圧縮版ではPratt氏の回答の部分が切れてしまっています。気になる方は高解像度版をどうぞ)。余談ですが、Pratt氏の話は意識的にか、少しゆっくりめの速度で話されていてありがたいですHi

また、HPSDRプロジェクトの今後に関する講演では、前半では主に通信プロトコルとハードウェアの話、後半で将来的なアーキテクチャについて話しています。後半の内容はざっくり言うと、例えば受信であればADCで取り込んだデータをほぼそのまま(FPGAによるデシメーション等を行わずに)高速なインタフェースでサーバに送り、サーバ上ではGPUによる並列処理で高速な信号処理を行い、クライアントからの要求に応じて結果を送信するというようなものです(多少とり違えているところもあるかも知れませんが、なかなか刺激的な内容でした)。

こういう講演を生で聞いてみたいものだなあと思ったりしました。なかなか付いて行くのが大変そうですけれど。
コメント

"Radio Receiver" Chromeアプリ 1.09リリース

2014-06-03 23:45:14 | ソフトウェアラジオ
R820T/RTL2832Uを使用するワンセグチューナーでFM放送を受信できるChromeアプリ "Radio Receiver" のVersion 1.09がリリースされました。

前のエントリの時点(1.08)では、「R820Tを搭載していてかつ、vendor IDが"0x0bda"、 product IDが"0x2838"のドングルのみ」利用可能で、同じチップを搭載していても、product ID が"0x2832"となっている一部のドングルでは利用できないという問題がありました。

それに対して、JA5FNXさんが作者のJacoboさんにリクエストされて、product ID が"0x2832" のドングルでも利用できるように対応したバージョン1.09がリリースされました。すでにChromeアプリをインストールされた方は自動的にバージョンアップされているはずです(TNX Jacobo es JA5FNX)。

JA5FNXさんのブログエントリを読んでいただければ充分なのですが、こちらでもアプリを紹介しましたので、追加情報としてお伝えした次第です。
コメント

ワンセグチューナーでFM放送を受信するChromeアプリ "Radio Receiver"

2014-06-02 01:00:29 | ソフトウェアラジオ
もうご存知の方も多いかと思いますが、ここのところ試していたもので、なかなか面白いと思ったので紹介します。主にtwitterで @JA5FNXさんや @edy555さんから情報をいただきました。

SDRとして使えるワンセグチューナーはすっかりポピュラーになって、HDSDRやSDR#等をはじめ、様々なソフトウェアで利用出来るようになっていますが、今回紹介するのは、ブラウザのみでワンセグチューナーをFMラジオとして使えるというものです(作者はJacobo Tarrio氏)。

Google ChromeのAPIを利用し、Chromeアプリとしてリリースされているので、Chromeブラウザが必要です。また、対応しているチューナーも、RTL2832U搭載のもののうち、チューナーチップとしてR820Tを仕様しているもののみが対象です。もっと細かくいうと、現状では、vendor IDが"0x0bda"で product IDが"0x2838"のドングルのみで、R820Tを利用していてもproduct IDが異なるものも存在するようなので、そのままでは使えません(詳しくはFNXさんのブログ記事を参照してください)。

インストールは、Chromeブラウザで、ChromeウェブストアのRadio Receiverのページにアクセスし、「CHROMEに追加」ボタンを押すだけです。

ブラウザのみでと書きましたが、Chromeアプリとして実現されているので、ブラウザとは別に次のような独自のウィンドウが開きます。



画面はシンプルで、パワーON、チューニング、スキャン、それに周波数メモリ関係のボタンが見えます。右上にスパナのようなボタンがありますが、そこを押すと設定画面が出てきます。"Region"で"Japan"を選ぶと日本のFM放送周波数の範囲で使えるようになります。最近のバージョンでは、周波数の(半自動?)補正機能やゲインコントロールの方法が選択出来たりします。また、図の中で周波数の右側の表示は上から、ステレオ/モノラルの選択、音量で、クリックすると状態を変更することが出来ます。

最初にこのアプリをJA5FNXさんから教えてもらったときはバージョン1.04で、その時は私のところや @edy555さんはじめ、動作しないというレポートがあったのですが、1.06でその大きなバグは解消されました。これにあたっては @edy555さんが作者と協力されたということです。リリース、バグ、機能等に関する情報交換は、Googleグループで行われています。

シンプルなものではありますが、ブラウザとその拡張機能だけでワンセグチューナーがSDRとして使えるのは面白いですね。なお、他のアプリと同様、該当するワンセグチューナーを利用するためには、Zadigによるドライバの入れ替えは必要です。また、先に触れたように、R820T使用でも現状では動作しないチューナーがありますので、ご注意ください。

追記: product ID が "0x2832" のチューナーで動作しない件は新しいリリース1.09で対応されました(次エントリ参照)。
コメント

HiQSDRでもプリディストーションの実装が始まったようです

2014-02-12 00:37:37 | ソフトウェアラジオ
この数週間、OpenHPSDRやapache-labs 関連のMLはプリディストーションに関する話題で持ちきりですが、そんな中、HiQSDRでもプリディストーションの実装を進めているという話が出てきました。
HiQSDRというのは、元々はN2ADR, Ahlstrom氏が米QEX誌に発表したDDC/DUC方式のSDRトランシーバで、それを主にヨーロッパのアマチュアが基板を販売、配布しているものです。私も一度ある方のご好意で使わせていただいのですが、基本的にはOpenHPSDRのHermesと同じような構成で、ソフトウェアもN2ADRご本人がリリースしているQuiskを初めとしていくつかのものが開発されています。

今回、プリディストーションを実装して実験しているのは、DL2STG氏で、氏が開発している、HiQSDR用のGNU Radioのブロックの中で実現しているようです。また、このプリディストーションもアダプティブなもので、そのためにFPGAのイメージも変更を加えたそうです。リンク先のページの2 tone testのスペクトラムを見る限り、こちらもかなりの効果が期待できそうです。

HiQSDRは最近まで、基板(組み立て済みもあり)のみの提供でしたが、最近では、エキサイタと10Wのアンプを収められるケース、HiQTRX-10も販売されているようで、これからも注目したいと思います。

詳しい情報は上記のリンク先や、Yahoo GroupsのN2ADR-SDR groupを参照してください。

今年はプリディストーションという言葉やその技術が一気にアマチュアに広がるのではないかという予感がします。


コメント (2)

OpenHPSDR Pure Signal Predistortionを試してみた

2014-01-26 02:12:43 | ソフトウェアラジオ
先のエントリで紹介したデジタルプリディストーション対応のPowerSDRとそのためのファームウェアを早速、手元のHermes/ANAN-100にインストールしてみました。OpenHPSDRのプリディストーション機能は"Pure Signal"と名付けられているようです。

まずはツートーンテストを行ってみました。下に14MHzでのスクリーンショットを貼っておきます。かなりうまく働いていると思います。
今後は、実際の音声信号に対してアダプティブプリディストーションがどのくらいうまく働くのか調べてみたいと思っています。

しかし、やはりアダプティブ(適応的)なのは非常にいいですね。私もそのうちアダプティブプリディストーションを実装してみたいと考えています。いやー、やられたなあ。


IMD @ 14MHz/30W PEP without predistortion



IMD @ 14MHz/30W PEP with predistortion



IMD @ 14MHz/80W PEP without predistortion



IMD @ 14MHz/80W PEP with predistortion



コメント

OpenHPSDR版PowerSDRにアダプティブプリディストーションが組み込まれたらしい

2014-01-25 13:55:22 | ソフトウェアラジオ
今年もよろしくおねがいします。

今年最初のニュースです。私もプリディストーションの実験を拙いながら少しずつ行ってきましたが、NR0V, Warren氏らが開発を進め、以前からテストを重ねていたHPSDR版のプリディストーションがHPSDR版PowerSDRに組み込まれたようです。

何より、私のものと違うのは適応的(adaptive)にプリディストーションのパラメータを更新するので、マニュアルキャリブレーションが必要なく、送信中に負荷や熱の状況が変わっても追随するという点で、これは大きいです。

私もまだダウンロードしてきただけなのですが、追ってレポートを書ければと思っています。なお、プリディストーション機能を利用するにはHermesのファームウェアの更新も必要ですし、それなりのセットアップも必要になります。

OpenHPSDR PowerSDR-mRX PS (3.2.7)に関するリリースコメントは、

http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/2014-January/021992.html

ファームウェアに関しては

http://lists.openhpsdr.org/pipermail/hpsdr-openhpsdr.org/2014-January/021991.html

です。

PowerSDRについてはまだそれほど「枯れていない」そうで、プリディストーションが必要でない場合には前のバージョン、3.2.1の方が良いだろうとのことです。

以上
コメント

デジタルプリディストーションをPowerSDRに組み込んでみた

2013-09-21 00:31:29 | ソフトウェアラジオ
またしばらく更新が滞っていました。ハムフェアに行ったりはしましたが、無線のアクティビティは上がらずプリディストーションの実験もあまり進んでいませんでした。

色々やりたいことはあったのですが、GNURadioで実験しているだけでなく、実際に運用できるようなソフトウェアにするということにまずはトライすることにしました。1からSDRのソフトウェアを書くのはハードルが高過ぎるので、既存のものにDPDのコードを入れるということになります。

既存のソフトウェアといってもたくさんあるのですが、まずはHermes/ANANで動くものということで、その中でも最も一般的に使用されているHPSDR版のPowerSDRをターゲットに決めました。PowerSDRは今となってはそれなりに大きなプログラムで、コアの信号処理やハードのコントロールはCのライブラリで、それ以外の処理や画面の部分はC#で書かれています。最初はCのライブラリ(DttSP)に手を入れるのかなと思っていましたが、ソースコードを読んでいるとC#の部分で出来そうなことがわかりました。慣れないC#を読んだり書いたりして1週間くらいでキャリブレーションのルーチンが動き、今日、実際にDPDを有効にして送信する部分が出来ました。

画面はこんな感じです。スペクトラムのディスプレイの下、右の方の囲みの中にDCalというボタンとDPDというボタンがあるのが見えると思います。それぞれ、DPDキャリブレーション(プリディストーションのテーブルを作成する)用と送信時にDPDを有効にするボタンです。DCalっていう名前は略称としてどうかと思うのでそのうち差し替えます。他にも多分色々本質的な問題はあると思うのですが、とりあえず動いたということで。

2-tone @ 14MHz/80W pep without predistortion


2-tone @ 14MHz/80W pep with predistortion

コメント (12)

デジタルプリディストーションの実験(その3)

2013-07-13 02:18:20 | ソフトウェアラジオ
引き続きDPD(デジタルプリディストーション)の実験をやっています。
先のエントリでかなり端折って書いているので、数名の方から「2-toneのグラフはシミレーション結果ですか」という質問をいただきましたが、あれは実データです。実際にプリディストーションをかけた場合と素の状態で送信して、それをモニタした結果です。
もう一つ、「100分割だと40dBの範囲になるが、それで大丈夫なのか」という質問もいただきました。特性を取ってLUTに反映したのは40dBの範囲になるのですが、それ以下のレベルの場合にはゲイン/位相はほとんど変化しないということにして扱っています(大雑把に言うと補正しない)。実際、前のPAの特性のグラフを見ていただくと、特にANAN-100の場合にはレベルが低いところでは変化が少なくなっているのがわかると思います。本当はもうちょっと低いところまで一度厳密にデータを取ってみるべきだとは思いますが。

さて、2-toneだけでテストしていてもつまらないので、実際に音声信号にプリディストーションをかけてみたらどうなるかやってみました。GNURadioで簡単なSSBジェネレータのプログラムを作成し、そこにプリディストーションをかけた音声信号を入力してみました。

本当は動画でも投稿すればいいのでしょうが、数十秒の音声信号を入れてモニターしてピークホールドしたものを下に貼っておきます。青い線がリアルタイムの信号で緑の線がピークホールドしたものです。青い線の方もなるべくレベルの高いところをキャプチャしたかったのですが、なかなかタイミングがうまく合わず適当なところになっています。出力はピークで25Wから30W程度です。

14MHz USB 音声信号 25W DPD無し


14MHz USB 音声信号 25W DPD有り


近接のIMDはなかなかいい感じに抑えられてますよね。一方で2-toneの時と同じように裾は若干広がってしまいます。実際にオンエアしたらどちらがいいのでしょうね。モニター音を聞いている限りは帯域内の音はDPD有りの方がすっきりしているように感じますが、周囲の局への妨害は…。
というわけで、音声信号を入れてSSB変調した時もそれなりに効果はあるということはわかりました。
実は最初やってみたらDPDをかけたときに、モニターするとひどい音で「これはダメなのか」と思ったのですが、次の日の夜に電車に乗っている時にバグに気づいて直したら何とかまともな信号になったようです。

本当は実験の構成とかを先にもう少し詳しく書くべきだと思ったのですが、それは週末中にでもぼちぼち書くと思います(多分)。

あと、最近まったく更新していなかった手書きHTMLのホームページの方にDPD実験の記事の英語版を作ってみました(恥ずかしいけど)。そちらの方にはsetupの図なんかも載せてます。
コメント

デジタルプリディストーションの予備実験(その2)

2013-06-30 20:39:51 | ソフトウェアラジオ
1つ前のエントリでご紹介したように、最初の実験は思ったよりうまく行ったというのが正直な実感で、特に3次、5次等のIMDが大きく下がったことから「これは行けそうだ」と思いました。そこで、他の機器でも試してみようと考えたわけです。

私の部屋にはANANの他にもう1つ、USRP1とヤエス FT-450のPA部を組み合わせたものがあります。
USRPシリーズはGNURadioプロジェクトから生まれたハードウェアで、アマチュア無線用というよりは汎用のプラットフォームで学術機関等でも多く使われているようです。中身は64MHz/12bitのADC2つと128MHz/14bitのDACが2つとFPGAによるDUC(Digital Up Converter)・DDC(Digital Down Converter)で構成されています。

一方FT-450は安価なIF DSPトランシーバでお馴染みですが、これのパワーアンプはANANと同様、三菱のFETを使っています。具体的にはRD06HHF1→RD16HHF1x2→RD100HHF1x2という構成です。USRP1の出力は約0dBm弱で、これをFT450のプリドライバに入力すると大体レベル的に合うようです。
ちなみにANANの場合はPA部にRD06のプリドライバの部分は無く、代わりにHermesのボード側にOPA2674によるアンプが入っています。

今回も実験は3.5MHzを中心に行いました。まず先のエントリと同じようにPAの特性を取ったものを下の図に示します。

AM-AM characteristics of the FT-450's PA @3.5MHz(Max Pout=100W)


AM-AM characteristics of the FT-450's PA @3.5MHz(Max Pout=100W)


これを元に2-tone信号にプリディストーションをかけてIMDを測定したのが次の図になります。前回と同じように30W出力(DPD無し、有り)、100W出力(DPD無し、有り)の順になります。前回と違って各トーンは700Hzと1900Hzと狭くなっていますが、特に意味はありません。他の幅でも調べましたが結果に大きな差は無かったです。

IMD @ 3.5MHz/30W pep without predistortion


IMD @ 3.5MHz/30W pep with predistortion


IMD @ 3.5MHz/100W pep without predistortion


IMD @ 3.5MHz/100W pep with predistortion


1つ前のエントリでの結果と比べると、ぱっと見て変化が少ないですよね。よく見ると、3次の歪はむしろ増えている部分があって、5次より上に関しては若干減っているが、いいところでも5〜10dBというところ。
周波数を変えて試しましたが、傾向としては同じです。今回グラフはありませんが、出力が10Wくらいのところでは、3次歪も含めて良くなるポイントがあったくらいです。
また、USRPを使ったことで何か見落としていることがあるかも知れないと思い、Hermesの出力をFT-450のPAに入れて前回と同じプログラムでやったりもしましたが、その結果も変わらず。
また、前回もそうですが、2-toneのFFTのグラフはエキサイタ(HermesやUSRP1)をfull-duplexで動作させて表示したものですが、他の受信機でもモニターして大きな差が無いことは確認しています。

ドライバ、ファイナルに関してデバイスとしては同じものを使っているので、似たような結果が出るかと思ったのですが、予想は裏切られました。もう少し実験を行いながら原因についても調べてみたいと思っています。

実際にはANANが来たのは最近で、準備はUSRP1+FT-450でやっていたわけで、こっちの結果だけ見てたらエントリも書かなかったかも知れません。
他のPAも試してみたいところですが、手元には他に無いのが残念です。
コメント (4)

デジタルプリディストーションの予備実験(その1)

2013-06-29 13:39:12 | ソフトウェアラジオ
以前このブログでもデジタルプリディストーション(DPD, digital predistortion)という技術を紹介したことがあります。デジタルプリディストーションはパワーアンプの直線性を改善する方法の1つで、携帯電話基地局等では広く使われている技術です。最近では、短波帯のSSB送信機においても製品化された例が報告されています。

この技術の説明をここで簡単に繰り返すと「PAに歪みがあるならば、それと逆方向にあらかじめ歪ませたものをPAに入力することによって歪みをキャンセルする」ということになります。

アマチュア無線の世界でもその可能性について何度か言及されてはいましたが、実際に行なっている例はなかなか出て来ませんでした。私自身もずっとその実験をしようと思いながら、果たせずにいました。
ところが最近、OpenHPSDRプロジェクト関連の情報を調べていたら、実装して試しているという人たち(NR0V, Pratt氏ら)がいることを知りました。そのような刺激を受けたこともあって、ここのところ少しずつ始めていて、以下はその報告です。

実験にはDUC/DDC方式のSDRトランシーバANAN-100(OpenHPSDR Hermesと三菱 RD100HHF1プッシュプルが終段のPAで構成され最大出力100W)を用いています。ANAN-100自体については改めて紹介したいと思いますが、今回の実験のために内部の接続を一部変更しています。
また、実験にはGNURadioのツールを利用し、Hermesを制御するブロックの部分はN5EG, McDermott氏の実装によります。

DPDでまず必要なことは、対象とするPA(パワーアンプ)の特性を知ることです。具体的には、入力の振幅に対するゲインの変化(AM-AM)特性と位相の変化(AM-PM)です。理想的な直線増幅器では、これらは一定であるはずですが、実際のアンプでは振幅によって変化が起こります。ゲインの変化についてはみなさんも通常経験されているとおもいます。

今回実際に測定したPAの特性の例を示します。PAの特性と書きましたが、実際にはDACからファイナルまでのアンプ、受信用のADCまでを含めた総合特性になります。周波数は3.5MHzです。入力データの振幅(電圧)は最大値を1として100分割して0.01ステップで与えています。グラフは横軸が入力の振幅の相対値で対数を取ってdB表示にしています。右端、最大入力の時に出力100Wが得られます。縦軸はそれぞれゲインと位相の変化です。

AM-AM characteristics of the ANAN-100's PA @3.5MHz(Max Pout=100W)


AM-PM characteristics of the ANAN-100's PA @3.5MHz(Max Pout=100W)


DPDには色々な方式があるようですが、私が試しているのは単純なルックアップテーブル(LUT, LookUp Table)を用いる方法です。
あらかじめ調べた特性を元に、振幅に対するゲイン、位相のずれの情報をテーブルに保持しておきます。送信時には入力される信号のデータ(サンプル)の振幅をインデクスとしてテーブルを引き、得られた情報を元にサンプルの振幅と位相を補正し、補正されたデータを用いて送信します。

果たしてその結果はどうなるのか。今のところ得られている2トーンテストの結果を示します。変調信号は700Hzと3.2kHzと広くとっていますが、単純に見やすさのためで適当な値です。
グラフは順に30W(プリディストーション無し、有り)、100W(プリディストーション無し、有り)です。最初に掲載していたグラフが14MHzのデータだったことに気付いたので3.5MHzのデータに差し替えました。14MHzの方が効果は大きかったようです。後のエントリで再掲したいと思います。

IMD @ 3.5MHz/30W pep without predistortion
">

IMD @ 3.5MHz/30W pep with predistortion


IMD @ 3.5MHz/100W pep without predistortion


IMD @ 3.5MHz/100W pep with predistortion


これを見ると3次、5次等の低次の歪は10〜20dB下がっています。逆に高次の歪は増えているようです。また、左右非対称になっている部分も見受けられます。14MHz、21MHzにおいても実験を行いましたが同様の結果が得られました。
最初の実験としては、期待の持てる結果だと感じています。まずはもう少し色々データを取り、その次に実際のSSBの送信に使えるようにpredistorterをソフトウェアに組み込みたいと考えています。

今回の報告も詳細は端折っていますが、追々補足エントリを書ければと思います。

と、ここまでは内心「思ったよりうまく行ったなあ」と思っていたのですが…多分続く



コメント