OSQZSS

オープンソース準天頂衛星(QZSS)受信機

PlutoSDRの改造

2022-07-19 16:42:37 | SDR
PlutoSDRに搭載されている発振器は、周波数安定度が25ppmといまひとつ。
そこで、これをTCXOに換装することにしました。

オリジナルのRAKON製のRXO3225Mとピン配置が同じで、周波数は40MHz、
供給電圧が1.8VのTCXOを探してみると、丁度良いものを発見。
周波数安定度も0.5ppmと十分です。

Mouser: TG2520SMN 40.0000M-ECGNNM3 (EPSON)

ただし、RXO3225MのEnable/DisableピンがTG2520SMNではNCになるため、
外部クロック入力との切り替えができなくなります。そのため、外部クロック
入力はあきらめて、不要となるR67とC157も念のために取り外しておきます。

また、TG2520SMNはRXO3225Mよりもひとまわり小さなパッケージですが、
パッドのサイズ的には問題ありません。



PlutoSDRのケースを開けたついでに、こちらの動画を参考に、2チャンネル目の
TXとRXも外部に引き出しました。

YouTube: Enable Dual Receive and Dual Transmit for the new revision of Pluto



ちなみに、SMA-U.FL変換ケーブルには、こちらを使っています。

RSコンポーネンツ: RS PRO 同軸ケーブル, SMA U.FL, 150mm

P.S. Analog DevicesのWikiの手順に従って2 RX+2 TXのモードに設定しても、
なぜかリブートするともとの1 RX+1 TXに戻ってしまう。

wiki.analog.com: Customizing the Pluto configuration

つい数日前にリリースされた最新版のファームウェアのv0.35にアップデートしたら、
何事もなかったかのように解決。

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

PocketSDRの組み立て

2022-07-06 19:28:24 | ソフトウェア受信機
電源の改修が完了したので、PocketSDRを組み立てていきます。



ジェンガ!

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

PocketSDRのLDOレギュレータ

2022-06-24 15:07:45 | ソフトウェア受信機
GitHubのissueにも挙がっていますが、PocketSDRのパーツリストで
U5のLDOレギュレータの選定に問題がありました。

現行の設計では、SOT23-5のLDOレギュレータの4番ピンがオープンになっていますが、
パーツリストで指定されているRP111N33D-TR-FEでは、4番ピンが出力電圧調整のための
フィードバックピンとなっています。3.3Vの出力電圧固定で使用するためには、
このピンを出力ピンである5番ピンに接続しなければなりません。



とりあえず、手元にあった1608の0オーム抵抗でジャンパしました。
これで正常に3.3Vの出力電圧を得ることができます。

P.S. 今回のバッチは頑張ってジャンパするとして、次のバッチは4番ピンがNCの
LDOレギュレータを実装したい。Digi-Keyで検索してみると、半導体不足の影響か、
電流出力が500mAの製品は在庫なしが目立つ。300mAでも問題ないようなので、
このあたりかな。

RP102N331D-TR-FE / RP102N331B-TR-FE
コメント (2)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PocketSDRのケース

2022-06-18 09:05:15 | ソフトウェア受信機
PocketSDRをセミナで使ってもらうとなると、基板のままでは不安です。
ケースは必須ということで、淡々と金属加工。
外寸15mm×25mm、厚さ1.5mmのアルミ角パイプから切り出します。

amazon.co.jp:光モール アルミ角パイプ 554 1000X15X25



端面のパネルは、DMM.makeの3Dプリントサービスを試してみました。
オリジナルのデザインに、ナットの抜け止めを追加しています。



素材には、強度的にも寸法精度的にも実用に耐えられるMJFを選択。
マットな仕上がりで、ちょっとユニークな質感です。



P.S. ケースの加工図面とパネルのSTLファイルをGitHubにアップしました。
PocketSDRの製作にご活用ください。

GitHub: osqzss / PocketSDR / HW / pocket_sdr_case
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PocketSDRの量産

2022-06-14 12:59:36 | ソフトウェア受信機
夏のセミナに向けて、PocketSDRの準備が着々と進んでいます。



基板は4層化してRFラインのインピーダンスを50オームに調整するなど、
細かな改善をしています。

さすがに何十台も自前のオーブンでリフローするのは無謀なので、
基板製造や部品実装を外注しています。完成品の品質はとても良い感じ。

ケースも準備したいけれど、金属加工などを外注すると、どうしても
高価になってしまいます。どうしようか悩むところ。

P.S. タカチの新製品である小型IoTプラスチックケースのSICシリーズは、
サイズ的に良い感じ。基板の穴位置やサイズをちょっと変更しないといけないけれど、
次のバッチで試してみたい。とりあえずサンプルを入手しよう。

TAKACHI:小型IoTプラスチックケース SICシリーズ

P.P.S. 早速、SICシリーズのサンプルをゲット。良いサイズ感だけれども、やっぱりデカい。
追加工の手間を考えると、3Dプリンタで出力できるケースを設計した方が、安く仕上がるかも。

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

No-OSのIIOドライバ

2022-04-05 12:00:09 | SDR
IIOドライバをサポートしたNo-OSをビルドしてみたのですが、
IIODサーバの初期化に失敗しているようで、起動しません。

ADI EngineerZoneで検索してみると、丁度同じタイミングで
同じトラブルが報告されていました。

ez.analog.com: No-os IIO initialization

どうやら、リリース版の2019_R2のブランチのbugのようです。
また、ZedBoardのUSBシリアルでは、115200 baud以上の通信で不具合があるようです。

ADIからの回答通りに、masterブランチのソースコードを使い、
parameters.hのUART_BAUDRATEを115200に変更してビルドします。

これで、無事にIIODサーバの起動が確認できました。



シリアル経由でIIOデバイスとして認識されています。



P.S. ついでに、IIO Oscilloscopeもインストールしてみました。

wiki.analog.com: FMCOMMS1 IIO OSCILLOSCOPE

手順通りに「sudo make install」をしたのですが、IIO Oscilloscopeを起動すると
エラーが出てしまいます。

$ osc
osc: error while loading shared libraries: libosc.so.0: cannot open shared object file: No such file or directory

ldconfigをすることで、無事にIIO Oscilloscopeを起動することができました。

$ sudo ldconfig
$ osc



IIO OscilloscopeでもIIOデバイスとして認識されています。



ただし、115200 baudのシリアル通信は、I/Qのサンプリングデータを取り込むには遅すぎて、
あまり実用的ではありません。

No-OSでもEthernet経由での通信をサポートしてくれないかな。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Building HDL / No-OS on Windows

2022-04-04 08:36:00 | SDR
WindowsでもHDLとNo-OSが正常にビルドできるようになったので、備忘録。
ポイントは、HDLのビルドはCygwinですが、No-OSはコマンドプロンプトを使う事。

まずはこちらを参考にCygwinでHDLのビルドから。

wiki.analog.com: Building HDL

レポジトリはmasterブランチのまま。Vivadoは2021.1を使います。

$ export PATH=$PATH:/cygdrive/c/xilinx/Vivado/2021.1/bin
$ make

ビルドが完了すると、.sdkフォルダの下にxsaファイルが生成されます。



次にこちらを参考にNo-OSをビルドします。

wiki.analog.com: NO-OS Project Build Guide

No-OSのビルドは、Cygwinではなく、管理者権限で起動したコマンドプロンプトで実行します。
ビルドのためのツールは、Vitis 2021.1を使います。

> C:\Xilinx\Vitis\2021.1\settings64.bat

HDLのビルドで生成されたxsaファイルをNo-OSのプロジェクトフォルダにコピーしてmake。



いくつか警告はでるものの、無事にelfが生成できました。

しかし、とにかくCygwinでのビルドが遅い。結局、Ubuntuを使うことになりそう。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

UbuntuにMatlabをインストール

2022-04-03 11:11:13 | SDR
MatlabとZynq+AD9361でHardware-Software Co-Designを試してみたいけれど、
どうしてもWindows 10+Cygwinの環境では、Analog Devicesが提供する
サンプルコードが正常にビルドできません。

仕方がないので、UbuntuにMatlabをインストールすることにしました。
それなりにknown issuesがあったので、備忘録。

まずは、Matlabのインストーラをダウンロードしてunzip.

$ unzip matlab_R2022a_glnxa64.zip

インストールの際に、インストール先のフォルダがないとエラーがでるようなので、
こちらを参考にフォルダを作成しておきます。

MATLAB Answers: LINUX OS(Ubuntu) のインスール時のフォルダー指定について

$ sudo mkdir -p /usr/local/MATLAB/R2022a
$ sudo chmod 777 /usr/local/MATLAB/R2022a

ついでに、シンボリックリンクも作成できるよに、/usr/local/binのアクセス権限も
変更しておきます。

$ sudo chmod 777 /usr/loca/bin

これでもまだインストール先のフォルダに書き込みができないとエラーがでるので、
こちらを参考にroot権限でインストーラを起動できるようにしました。

MATLAB Answers: Matlab unable to install R2021b: "unable to write to selected folder" in Ubuntu 20.04

これでやっと準備完了。無事にMatlabがインストールできました。

$ sudo ./install

Matlabを起動すると、Failed to load module "canberra-gtk-module"というエラーがでます。
とりあえず何の影響もないようなので、放置します。

Bug Reports: MATLAB prints message about "canberra-gtk-module" and/or "pk-gtk-module" on startup

まだまだこれでStep 1。先は長い。

Help Center: Installation for Hardware-Software Co-Design

P.S Matlabのアドオンのインストールで、ユーザのアクセス権だとエラーが出てしまう。
それなのにsudo matlabで起動するとMatlabがクラッシュする。どうすればいいの?

MATLAB Answers: Matlab 2021b crashed when running with sudo / root
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PlutoSDRにJTAGでアクセス

2022-03-24 14:45:14 | SDR
PlutoSDRにオリジナルの回路やソフトウェアを書き込めるよう、
こちらを参考にJTAGでアクセスしてみます。

wiki.analog.com: Accessing Pluto's FPGA Over JTAG

まずは、1.27mmピッチのヘッダピンをJTAGポートに半田付け。



ADALM-UARTJTAG+JTAG-HS3で接続。



問題なくPlutoSDRが認識されました。



まずはLEDを点滅させるHDLでも書いて、動かしてみよう。
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Building No-OS Project

2022-03-21 14:59:16 | SDR
Zedboard+FMCOMMS3をターゲットに、No-OSのファームウェアをビルドしてみます。

HDLは、PlutoSDRと同じ手順で「fmcomms2/zed」のプロジェクトをビルドします。
ビルドが完了すると、SDKでのNo-OSのビルドに必要な「system_top.hdf」が
「fmcomms2_zed.sdk」フォルダの下に作られます。



次に、適当なフォルダにNo-OSのレポジトリをクローンします。

$ git clone --recursive https://github.com/analogdevicesinc/no-OS

HDLと同じリリースバージョンとなるよう、ブランチを切り替えます。

$ cd no-OS
$ git checkout 2019_R2

「ad9361」のプロジェクトに移動し、「system_top.hdf」をコピーします。
後は、ビルドに使うSDKのツールを指定して、makeするだけです。

$ source /tools/Xilinx/SDK/2019.1/settings64.sh
$ make

ビルドが完了すると、「build」フォルダの下に「ad9361.elf」が生成されます。



Zedboardに「ad9361.elf」を書き込むために、boot設定のジャンパをJTAGに切り替えます。



書き込みのためのUSBケーブルをPROGポートに、コンソールのUSBケーブルをUARTポートに接続します。
Zedboardの電源をONにすると、PROGポートは「/dev/ttyUSB0」、UARTポートは「/dev/ttyACM0」として
マウントされます。



プログラマのドライバが正常にインストールされていることを確認したら、「make run」で
ファームウェアを書き込みます。



書き込みが完了すると、No-OSのデモプルグラムが実行されます。



デモプログラムは、AD9361を初期化してCWを出力するだけの簡単なものですが、
動作が確認できました。

P.S. 2019_R2以降は、No-OSでも、コンソール経由での制御にIIOドライバが使われるようになっているようです。
IIOドライバをサポートしたNo-OSをビルドは、こちらを参照。

wiki.analog.com: no-OS IIO
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする