JI3GAB/blog

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

デジタルプリディストーションの予備実験(その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をソフトウェアに組み込みたいと考えています。

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

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



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

rtl_tcpとVirtualBoxを使ってGNURadioからRTL-SDRを使う1つの方法

2013-05-07 22:51:34 | ソフトウェアラジオ
RTL-SDR関係の情報を調べているとGNURadioを使ったソフトウェアや実験をしているページが見つかります。また、何かこれをきっかけにSDRの実験をやろうという時にGNURadioを使えると色々と助かります。

GNURadioは基本的には信号処理を行うためのライブラリ群なのですが、信号処理のユニット(例えばフィルタや発振器等)が「ブロック」として定義されていて、それらを接続してフローグラフ(flow graph)を構成することで必要な一連の信号処理を行うことができます。さらに、GNURadio Companion(GRC)というグラフィカルなツールが用意されていて、その上でブロックを繋いで行くだけで、信号処理プログラムを生成させることも出来るようになっています。

このように便利なGNURadioですが、Windows上にインストールするのは結構面倒そうです(自分でやったことは無いのですが、多分CygwinやMinGWを使ってということになるのかな)。

一方でLinux、特にDebian, Ubuntu, Fedora, Cent OSなどのメジャーなディストリビューションやそれらから派生したものでは比較的簡単にインストールすることができます。このエントリでは詳しくは述べませんが、build-gnuradioというスクリプトを走らせればほぼ自動的にやってくれます。

しかし、1台しかPCが無く、メインのOSはWindowsで無ければならないという場合にはちょっと困ってしまいます。1つはデュアルブートにするという手がありますが、GNURadioを使うために再起動するのはかなり面倒です。

そこで考えるのがVMWareやVirtualBoxといった仮想化ソフトウェアを用いてLinuxをゲストOSとしてインストールする方法です。
これは一応理屈としてはうまく行くはずなのですが、問題があります。RTL-SDRのチューナはUSB接続です。仮想化ソフトウェアにはUSBパススルーの機能があって、PCに接続したUSB機器をゲストOS(この場合はLinux)から利用するように設定することが出来ますが、実際にやってみるとどうも転送速度が出ないようで、RTLSDRのサンプリングレートを1Msps等にすると転送が追いつかず、buffer underrunと思しきエラーが起こります。
私が現在利用しているのはOracle(元はSUN)が提供しているVirtualBoxですが、メーリングリスト等を見ているとVMWare Playerでも同じような問題があるようです。

これを回避するためUSBパススルーは利用せず、ホストのWindows側でrtl_tcp.exeを起動しておき、ネットワーク経由でゲストOSから接続するというのが今回の主旨です(それだけですHi)。すでに仮想マシンやGNURadioを使った経験のある方は、もう何をするのかお分かりだと思いますが、以下簡単に手順を書いておきます。

準備としてホストOSのWindows上にVirtualBoxをインストールし、ゲストOSとしてUbuntu Linux等をインストールします。ネットワークの設定はNATでもブリッジでも利用したい形態に合わせて設定します。さらにゲストOS上で先ほど触れたbuild-gnuradioスクリプトを用いてGNURadio一式をインストールしておきます。GNURadioからRTL-SDRを利用するためのライブラリ等もデフォルトでインストールされます。

rtl_tcpはosmocomで提供されているソフトウェアで、SDR#等で利用したことのある方もいらっしゃると思います。
rtl_tcpはデフォルトではlocalhost(127.0.0.1)からの接続のみ受け付けるようなので、オプションでWindowsに割り当てられているアドレスをオプションで指定します。例えばコマンドプロンプトから

> rtl_tcp -a 192.168.0.3

等と入力して起動し、接続待ち状態にします。Windowsの使用しているIPアドレスが分からない場合はipconfigコマンドやコントロールパネル等で調べましょう。ポート番号はデフォルトの1234でとりあえず良いとおもいますが、変更したい場合は'-p'オプションで指定します。

ゲストのLinux上のGNURadio側では、信号源としてOsmoSDR Sourceを使い、デバイス名を"rtl_tcp=192.168.0.3:1234"と指定すれば、GNURadioからWindowsで起動しているrtl_tcpに接続することができます。
もしうまく接続出来ない場合は、Windowsのファイアウォールで接続が禁止されていないか等、調べてみてください。

以上説明したような方法でGNURadioを使用している時のスクリーンショットを貼っておきます。GNURadioで動かしているのはサンプルとして作ったFM放送の受信機です。GNURadioにはWBFMという名前のFM復調器のブロックがあるので、それを使えば復調できます。また、グラフィカルなFFTのブロックも用意されているのでそれを利用しています。

何か今更感がすごくてためらったのですが、せっかく書いたのでご参考まで。





コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

RTL SDRについて

2013-04-22 01:00:33 | ソフトウェアラジオ
ちょうど昨年の今頃に情報を得て、RTL2832Uを使ったワンセグチューナーをSDRとして使うということを試し、ブログのエントリを書きました。

ハードウェアの値段が安い割に楽しめる、ということだと思うのですが、多くの人が色んなことを試されてるようです。そのせいか、今だに当ブログをご覧いただくことがあるようなのですが、もう内容が古くなっている気がして申し訳ないような気持ちになったりもします。

たとえばWindowsでの利用に関してですが、今始めるならSDR#が一番楽なんではないでしょうか。最近では必要なDLLをダウンロードしてくれるインストールパッケージ的なものもありますし、これを使ったインストール方法も、たとえば suupenさんという方が日本語で解説してくださっています。

HDSDRも、一年前に紹介した時とは少し変わっていて、本体を普通にインストールした後、ハードウェアのページのRTL SDRのリンク先からExtIO_RTL.dllをダウンロードしてHDSDRのフォルダに入れれば良いようです。

他にもSDRConsoleというソフトウェアがリリースされています。これもRTL用のDLLを別途コンパイルする必要があるのですが、Michael Morgan氏がここにバイナリを置いてくれています。

いずれの場合にも、まずはZadigによるドライバのインストールを行う必要がありますが、そこはやり方自体は私の以前のエントリと同じですし、上で参照したsuupenさんの記事でも説明されています。個々のソフトウェアで必要になるライブラリは、それぞれAPIが違うために異なるものが必要ですが、いずれもosomosdrで開発、配布されたものが元になっています。

チューナ自身については、私は最初のDS-DT305の他に、E4000を使用したもの、R820Tを使用したものをいくつか購入しました。E4000は製造中止という話が出てR820Tを購入した経緯があるのですが、eBayではまだ入手可能なようです。日本で普通に入手出来るものとなると、今もDS-DT305(fc0012)、LT-DT309(fc00013)辺りでしょうか。

周波数のカバー範囲はチューナによって違いがありますが、基本的にはVHF以上になります。でもそこはやはりHFも受信したいと思う人がいるわけで、そのためにコンバータを作る人もいますし、フロントエンドのチューナチップをバイパスして直接RTL2832Uに信号を入れてダイレクトサンプリングを試している人もいます。

この辺の詳細は紹介しきれませんが、私は主に下記のブログ等から情報を得ています(日本語のページです)。すでにご存知の方も多いと思いますが、ご参考まで。

ゆうちゃんのパパさんのブログ 主にACARSなど航空無線の受信を目的とされていますが、RTL-SDRを使って各種ソフトウェアを試したり、ハードウェアを改造したりと幅広い話題満載です。

JA5FNXさんのブログ 最初に情報をやりとりして以来、参考にさせていただいてます。また、FacebookでもSDR-JAPANというグループを運営されているようですので、興味のある方は参加されてはいかがでしょうか。

@edy555さんのTumblr RTL-SDRに関しても、HF用コンバーターやソフトウェアを開発、実験をされていますが、それ以外にもGNURadioやVNAの自作など幅広い内容で刺激を受けています。

他にもあると思いますし、海外にも目を向ければこの小さなドングルで色んなことをやっている人がいるのが見つかると思います。

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ワンセグチューナーでSDR (Windows用ソフトウェアインストール編)

2012-05-21 22:16:56 | ソフトウェアラジオ
コメント欄でインストールの方法について質問がありましたので、Windows上でRTL2832U使用のワンセグチューナーをSDRとして利用するためのソフトウェアのインストールについて、ひと通り流れを説明したいと思います。基本的には元のページの内容をよく読んで理解した上で行なわれることをお薦めします。
また、私はWindows7 64bit版で動作させていますが、他の環境についても同じように行くかはわかりませんし、ここで記述する通りにやってみてうまく行かなくても責任は負えません。

今回インストールするのは、Balint Seeber氏がwiki.spench.netで配布されているものです。これはインストーラーパッケージになっていて、必要なドライバ、HDSDRなどのSDRソフトウェア、ドライバとHDSDR等を橋渡しするExtIOライブラリなど必要なソフトをすべてインストールできるようになっています。
ただ、私の感想では先にHDSDRなり、Winradなりをインストールしておいた方が間違いが少ないかなと思います(後で出てくるフォルダの指定さえ間違えなければ全部やってもらった方が楽なんですが)。

このソフトウェアに関する説明、ダウンロードのリンクは、http://wiki.spench.net/wiki/USRP_Interfaces のページにあります。最初のところにページ内の目次がありますが、そこの"7.3.2 Installer"と書かれているところにインストーラー(ExtIO_USRP+FCD+RTL2832+BorIP-BETA_Setup.zip)へのリンクがあります。ミラーとオリジナルのリンクがありますが、「ミラーを使ってくれ」と書かれているので出来るだけミラーサイトの方からダウンロードしましょう。

ダウンロードして展開すると中身は実行ファイルが1つですので、それを実行します。あとは流れに従って進めるのですが、いくつかのポイントだけ以下で説明します。チューナー自体はこの段階で接続しておけばいいと思います(通常の環境であればWindowsが新しいデバイスを検出するもののドライバーのインストールに失敗するはずで、それでOK)。このとき、デバイスマネージャで該当デバイスのところをダブルクリック、詳細->ハードウェアIDでIDをメモっておきます)。

インストーラを実行して進んでいくと最初の方でインストールするコンポーネントを選択するところがあります。ここは基本的にいじる必要はないのですが、前に書いたように先にHDSDR等をインストールしているのであれば、下の方の"Download an SDR receiver application"のところはチェックを外しておきます。



"next"を押して進むと、今度はHDSDR等のインストールされている(あるいはこれからされる)フォルダを指定するように言われます。インストーラはここで指示されたフォルダに必要なライブラリ等をインストールします。



私の場合は"E:hdsdr"という場所にHDSDRをインストールしてあるので、そこを指定しています。ご自分の環境に合わせて設定してください。

次にドライバのインストールの選択画面が出ます。ここで対象となるワンセグチューナーに対応するDeviceを選択します。何も出なければOptionsから"List all devices(だったと思う)"を選ぶとデバイスを選択できるようになるはずです。VIDとPIDを確認しましょう。また、ここに紹介する画面ではDevice名がRTL2832Uになっていますが、必ずそう表示されるのかどうかは判りません。それと、最初にインストールしたときにはVID, PIDの右にMIという欄もあった気がするのですが、そこは"00"を入力すればOKでした。そしてこれが一番重要なのですが、右のTargetのところで必ずWinUSBを選択してください。デバイスとターゲットのドライバの選択を確認したら下のInstall Driverをクリックします。



ドライバのインストールが終わるとダイアログが出ますが、closeして大丈夫なはずです。その後さらにインストールが進んで下のような画面になるとインストールは終了です。



ここでNextをクリックするとBorIP起動とドキュメント表示のチェックボックスがありますが、いずれも外して終了して結構です。ドキュメントは元々のページです。

インストールは以上で終了です。HDSDRをインストールしたディレクトリの中に、ExtIO_USRP.dllなどがインストールされていることを確認してください。もう一点、デバイスマネージャで、libusb(WinUSB)devicesの下にRTL2832Uがぶら下がっていることを確認できれば、まず間違いないと思います。

実際の使用については端折って書きます。HDSDRでしたらOptions->Select InputでUSRPを選択します。そうするとExtIOの画面が出ますので、Device HintのところにRTLと記入してCreateボタンを押してエラーが出なければ成功です。これでHDSDRをスタートさせればワンセグチューナーをHDSDRから操作し受信できるようになります。

一応ひと通り説明したつもりですが、不十分な点、間違い等もあるかも知れません。その場合はご容赦ください。お気づきの点があればご指摘いただければ幸いです。

コメント (16)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1500円のワンセグチューナーでソフトウェアラジオ(2)

2012-05-13 00:26:21 | ソフトウェアラジオ
なぜ、ワンセグチューナーが汎用のSDRのフロントエンドとして使えるのでしょうか。

今回対象となっているワンセグチューナーは、大きく分けて2つのチップ(モジュール)で構成されています。1つは、クワドラチャミキサーと発振器を用いて、入力信号をベースバンド(あるいは適当なIF)に変換する「チューナーチップ」で、もうひとつはIF信号をADCで取り込んでデジタル信号に変換し、映像の復調を行う「復調チップ」です。復調されたデータをUSB経由でPCに渡すインタフェースも復調チップに含まれているようです。

通常は復調された映像データが出力されるのですが、RTL2832Uという復調用チップには映像の復調を行わず、ADCで変換したベースバンドのI/Q信号をそのまま出力するモードがあることがわかったのです。生のI/Q信号を取り込むことが出来れば、PCの側でソフトウェアを用いて色々なモードの信号を復調することができることになります。なぜこういうモードがあるかというと、ワンセグチューナーにFM放送の受信機能を追加する際に、その復調をPC側のソフトウェアで行うためのようです。

これを最初に発見したのは、Linuxのドライバ開発者のAntti Palosaari氏だそうで、そこから色々な人がhackしてrtl-sdrやそれを活用したBalint Seeber氏のソフトウェアなどが生まれたようです。

一方チューナーチップの方も多くの種類があるようですが、今のところElonicsのE4000、FitipowerのFC0012,FC0013,FC2580が上記のソフトウェアでサポートされていて、カバー範囲もチップによって違うのですが、E4000がもっとも広い範囲を受信できるという情報があります(64-1700MHz)。ですから、これらのチューナーチップとRTL2832Uの組み合わせで構成されているワンセグチューナーであれば汎用のSDRとして利用できる可能性が高いということになりますね。今回私が試したDS-DT305はFC0012を使用しています。
下はE4000のブロック図です。


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

1500円のワンセグチューナーでソフトウェアラジオ

2012-05-12 01:21:04 | ソフトウェアラジオ


お久しぶりです。相変わらず無線のアクティビティは低いのですが、JA5FNX氏に刺激を受けて、連休中から安価なUSBスティックタイプのワンセグチューナーを使ったSDRで遊んでいます。詳細はまた別エントリで書ければいいと思うのですが、"RTL2832U sdr"のようなキーワードで検索すれば色々情報は得られます。


簡単に言いますと、RealtekのRTL2832Uというチップを採用している安価なワンセグチューナーをPCに接続し、適当なドライバやライブラリをPCにインストールすれば、60MHz-1700MHzの範囲(チューナーによって異なります)で3.2MHz/8bitのI/Q信号データをPCに取り込むことができるようになり、その後はPC上でFFTや復調といった処理が可能になるということです。ユーザの使用するソフトウェアとしては、WinradやHDSDRといったおなじみのSDRソフトを利用することができます。他にもGNU Radioを使ったり自分でプログラムを書くことによって色々な信号の復調が可能になります。
CQ誌でも紹介されたFUNCube Dongleをご存知でしたら、似たようなものだと思ってもらっても構いません。ただし、FCDが96ksps/16bitのADCを用いているのに対して、こちらのADCはサンプリングレートは3.2Mspsとそこそこ高いですが、解像度は8bitしかありません。一度に広い範囲を扱える反面ダイナミックレンジはせいぜい4~50dB程度だと思われます。


具体的にどのチューナーを使えばいいのかということですが、eBayなどで、上記と同じようなキーワードで検索すればいくつもヒットして、すでに実績のあるものが$20から$40くらいで見つかります。それを購入してもいいのですが(私も1つ注文を入れていますHi)、FNX氏の情報やWeb検索などから、日本で売られているモノのなかにも、ZOXのDS-DT305やレッドスパイスのLT-DT306という型番のチューナーがこのチップを使っているらしいということがわかりました。いずれも1500円程度で入手できます。SDRとしての利用の報告はありませんが、動くかどうか試してみようじゃないかということになりました。


今回は、チューナーはDS-DT305を使い、ソフトウェアとしては、Balint Seeber氏によるWindows用のインストールパッケージを利用しました。http://wiki.spench.net/wiki/USRP_Interfaces 内のDownloadリンクからダウンロードし、実行すればひと通り必要なソフトウェアがインストールされます。ページの説明とインストーラーの指示通りインストールしてHDSDRを起動すると…ちゃんとこのチューナーが認識されて使えました!SGを接続して簡単に調べてみると、DS-DT305では42MHzから940MHzくらいの範囲で信号を受信できるようです。上限の方は手持ちのSGの上限に近いですし、もうちょっと上まで受信できるかも知れませんが正確にはわかりません。
感度の方ですが、シングルトーンを500Hz帯域のCWモードで聞くと-130dBmくらいから聞こえます。一方で上は-80dBmあたりでサチるというか、AGCがかかってしまうのか出力のレベルというかS/Nは変わらなくなります。


実際のアンテナを繋げての受信はそれほど時間を取れていないのですが、50MHz帯のアマチュアの信号やFM放送、エアバンドのAMの通信などは確認しました。ただ、FM放送の周波数帯では、私のロケではFM横浜が強すぎて抑圧を受けているのか他の放送局の信号がうまく復調できなかったりお化けが聞こえたりしています。
どなたか追試してみませんか? また、他にもこんなチューナーで使えるよ、みたいな情報も出てくると面白いと思います。


参考となるページのURLを最後にいくつか掲載しておきます。他にもたくさんあります。


  • http://wiki.spench.net/wiki/USRP_Interfaces 今回試したソフトウェアとその説明

  • http://wiki.spench.net/wiki/RTL2832 このチップ利用に関する追加情報

  • http://www.youtube.com/watch?feature=youtu.be&v=FUQd9HOVTk8 (上記URLの解説ビデオ。いくつかあります。)

  • http://thenewtech.tv/it/dongular-deviation 上記ソフトウェアのインストールの手順についてスクリーンショットを交えた説明がある

  • http://sdr.osmocom.org/trac/wiki/rtl-sdr (ハードウェアのリストや、上記とは別のソフトウェアがある)


これらの情報、ソフトウェアを提供されている方たちに感謝します。また、きっかけをいただいたJA5FNX氏に感謝します。


ご自分で試される場合は、紹介したページの内容をある程度理解してからトライされることをお薦めします。間違ってもハードウェアを壊すことはまずないと思いますが、ソフトウェア上のトラブルにハマる可能性はあります。日本語の解説ページはなさそうなので、もう少し詳しい内容を別エントリででも書ければいいとは思うのですが…

ご質問等ありましたらコメント欄かtwitterで@sdrfun 宛に連絡いただければ、可能な範囲でお答えします。

コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

売ります SDR-1000

2011-01-02 23:45:21 | ソフトウェアラジオ
SDR-1000を手放そうと考えています。FlexRadio Systemsの最初の製品で、HF~50MHzをカバーしているトランシーバです。100Wアンプのオプションもありましたが、私のはQRPバージョンで1W出力です(ケースの半分がスカスカです)。最近のFlexの製品と違って、PC側にサウンドカードが必要です。また、周波数等の制御はパラレルポートが基本で、一応専用のUSB<->パラレルのケーブルも用意されています。ソフトウェアは同社のPowerSDRですが、この機種に正式対応するOSはXP(32bit)だけだと記憶しています。他にユーザが開発した、Linuxで動作するソフトウェアもあります(sdr-shellとかで検索してみてください)。

私のSDR-1000は2004年に基板セットを入手し、その後オプションのRFEボードやケースを追加しました。PowerSDRで動かす以外にも自分で書いたソフトウェアを試したりして遊んでいましたが、最近ではあまり出番がなくなってきたので、どなたか興味のある方に引き取っていただけると助かります。

動作は簡単にチェックしてみましたが、基本的には問題なく動作しているようです。ただ、送信出力をPowerSDRで正しく表示させることがうまく出来ませんでした。一からPowerSDRをインストールし直せば解決するかも知れませんが、この辺りは忘れてしまいました。あと、前面の4Pのマイク端子はコネクタはつけてありますが、配線はしていません。サウンドカード側のMICあるいはLINE入力にマイクの信号を入れれば問題はありません。私はそうやって使っていました。テストに用いたPowerSDRのバージョンは少し古くて1.16.1です。

この製品についての詳細は、まずは Operating Manual, Hardware Manualあたりを見てみてください。

私の感想としては、基板は組み立て済みとは言え、キット的な感覚の製品です。問題なく動く周波数では性能も悪くないですし、SDRならではの変復調音、PowerSDRによる多彩な機能などが楽しめます。ただ、50MHz帯は正直言って使い物になりませんし、DDSのスプリアスが気になる周波数がいくつかスポット的に存在します。色んな意味で日本メーカの完成品とは異なる性質のものです。また、最初に動作させるまでにはPCに関する知識もそれなりに要求されます。問題が発生したときには、英語のドキュメントを読んだり、メーリングリストで問いかけるなどしなければなりません。

本体+推奨サウンドカード(DELTA44)+USB<->パラレル変換ケーブルで、25k円程度でいかがでしょうか。最初に受信が出来るあたりまでは、メールでのサポートくらいはいたします。ただし、いつもすぐにはレスポンスできませんので、出来る範囲でということでご了承願います。

ご質問等あればお受けします。連絡先アドレスは「私のコールサイン@arrl.net」です。年末年始のお休みのあいだはお返事できない場合がありますが、その点もお許しください。

JI3GAB 井上

お譲りする方が決まりました。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

DWM誌 2007年7月号のSDRを製作

2009-11-29 22:30:07 | ソフトウェアラジオ
ここのところAPB-1などを製作をするきっかけになったのが、このFPGAを使ったソフトウェアラジオです。DWM(デザインウェーブマガジン)誌の2007年7月号はFPGAを使った回路設計の特集で、FPGA基板が付録として付いていました。

その特集記事の中にJA2SVZ 林氏による、付録基板を使ったSDRの記事が掲載されていたのです。林さんはその年のハムフェアで実際にそのラジオのデモをされていて、その場で色々と話を伺ったのがきっかけで、基板を譲っていただくことになりました。

このSDR基板の内容は、SDR-14/SDR-IQやPerseusと原理的には同じで、アンテナで拾った電波を直接ADコンバータによりサンプリングし、デジタル信号処理によってベースバンドへの周波数変換とデシメーション(サンプリング周波数を下げていく)を行い、PCで受け取れるような形式で出力するというものです。また、USBシリアルポートにより、NCOの周波数の設定を行うことが出来るようになっています。

11月初めのある土曜日の夜に組み立てを終わり、JTAGケーブルでFPGAの設定ファイルをダウンロードしましたが周波数の設定方法等がわからず、結局朝まで色々試したものの動作の確認が出来ませんでした。日曜のお昼に起きて作者の林さんにヘルプのメールを書いたところ、久しぶりのメールを出したにもかかわらず丁寧な返事をいただき、周波数の設定方法と動作確認方法、最新のVHDLコードを送って下さいました。日曜の夜に、そのアドバイスに従って新しいコードをFPGAにロードし、Ham Radio Deluxeから周波数を設定したところ、LCDの表示も出て、実際に80mのアマチュア局の声を聞くことが出来ました。

基板をいただいてから2年、ようやくの完成です。今後はFPGAのプログラミングを勉強して自分なりに色々実験したいと思っています。作者の林さんには色々と助けていただいて感謝しています。また、この基板にはQFNパッケージのADCが使われているのですが、その半田付けに挑戦したおかげでAPB-1の製作もそれほど怖がらず進めることが出来ました。QFNの半田付けの話等はまた書くかも知れません。
コメント (2)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

パワーアンプの修理

2009-05-03 00:52:00 | ソフトウェアラジオ
3月の末に虎の子の無線機の出力を調整していたら、突然パワーが出なくなってしまいました。これはファイナルを飛ばしたかなと思いましたが、とりあえずオシロで信号をトレース。ドライバ段までは問題なく働いているようです。プッシュプル構成のファイナル段の出力側を見ると半分のサイクルだけ信号が出ているので、片側は生きてそうです。
次に、ファイナルのバイアスを片方ずつ増減させてみたところ、ドレイン電流はそれぞれちゃんと変化したので、DC的には問題なし、恐らく石は生きているだろうと考えました。
ドライバとファイナルを結合しているトランスの2次側(ファイナル側)の信号がどうもおかしいので、ファイナルの入力側のどこかなのかなあというところまでは進んだのですが、それからあまり時間がなく一月近く放ったままでした。
ときどき回路図とにらめっこしながら原因を推測してみるのですが、どうやったら問題を特定できるのか、いい考えが思い浮かびません。
先週なかばにやっと時間がとれたのでもう一度オシロのプローブを当てていると、ゲート側の回路にシリーズに入っている0.1uFのチップコンデンサの両端の電圧が片側だけ大きいことに気づきました。本来ならほとんどショート状態のはずですから、このコンデンサがオープンになっているのではないかと推測して、ひとまずリード部品の0.1uFをパラに入れてみたところ、うまくパワーが出るようです。週末になってチップコンデンサをはずそうとすると、途中で割れていました。良く見ていたらクラックに気づいていたかも知れません。これを綺麗にとって、新しいチップコンデンサをハンダ付けしました。ちょっとコテを入れづらいところにあったので不器用な私は少し苦労しましたが、なんとか無事交換し、めでたく元のようにパワーが出るようになりました。ふー、良かった。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ディザによる歪みの改善

2007-12-04 23:21:09 | ソフトウェアラジオ
先のエントリで、ディザ信号の付加によるデジタル受信機の歪み特性の改善について触れました。一応簡単な実験は行っていたので、それについてすぐに書こうと思っていたのですが、自分自身がディザの効果についてうまく説明できずにいました。要するにその原理をきちんと理解していないことがあらためて分かってしまったわけですが、ここに記録として実験結果を紹介しておきたいと思います。

ADコンバータは非線形性を持つため、出力に歪みが現れます。シングルトーンを入力した場合でも、さまざまなスプリアスが観測されます。また今回のように2信号を入れた場合には、3次歪み5次歪みをはじめとして、やはりスプリアスが現れます。これらのスプリアスの主因はADコンバータのDNL(Differential nonliniarity)と呼ばれる非線形性であると言われています。

これらのスプリアスは、FFT画面上に線が立つことからもわかるように、ADの出力するコードが(本来入力には存在しない周波数の)何らかの周期性を持ってしまうことから生じると考えられます。そこで、入力にランダムノイズなどを加算してやることで入力信号に揺さぶりをかけ、周期性を薄めてしまおうというのがディザの基本的な考え方だと理解しています(ここは違っていたら是非教えてでください)。

ノイズを加えるともちろんノイズフロアは上がってしまいますが、ナイキスト帯域に一様に分布するノイズは、最終的には目的信号のS/Nに大きな影響を与えません。また、ディザ信号はランダムノイズでなくても構わないので、目的周波数から離れたところだけにエネルギーを持つような信号を用いることもできます。

さて、ちょっと冷や汗ものの前振りのあとで今回の実験結果を示します。前回のエントリの実験と同じときにディザ信号を加えたときのものです。ディザ信号は今回はQEXの記事にならって7.22MHzの正弦波にFM変調をかけたものを加えました。2信号のレベルが-50dBmのときに、ディザを加えるとどのように歪みのレベルが変化するかを表にしました。
入力: -50dBm (10.14MHzと10.15MHz)
ディザ: 7.22MHz 1kHz FM変調波 (100kHz deviation)
3次IMD: 10.13MHz

ディザのレベル    IMD
--------------------------
 -50dBm         -100dBm
 -45dBm         -112dBm
 -40dBm         -135dBm (== noise floor)
 -35dBm         -120dBm
 -30dBm         -120dBm

このように、ディザのレベルが-50dBmを超えたあたりから3次歪が減りはじめ、-40dBmになるとIMDはノイズフロアと同じになってしまいます。そのあとはまたIMDの欄の数値が上がっていますが、これは全体のノイズフロアが上がってしまったもので、原因はまだよくわかっていません。

よくわからないのは、かなり高いレベルのディザを加えないと効果が現れない点です。今回は-50dBmの2トーンの例を示しましたが、2トーンのレベルを上げるとディザの方もレベルをあげないと3次歪みを大きく軽減させることはできませんでした。QEXの実験でもADの飽和レベルの9dB下という高いレベルのディザを与えています。

ディザについてはまだ勉強、考察が必要ですが、とりあえず報告まで。
また、周波数とレベル若干違うのですが、以下に実際のSDR-14のスクリーンショットをつけておきます。2信号の周波数は10MHzと10.003MHzでレベルは約-60dBmです。ディザの信号は上記と同様のものです。


ディザ無し



ディザ -50dBm



ディザ -40dBm


コメント (4)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする