OSQZSS

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

PocketSDRの動作確認

2021-08-31 08:14:54 | ソフトウェア受信機
高須さんのMAX2771基板であるPocketSDRでもGPS信号の受信が確認できました.
RFのラインにアクティブアンテナ用のDCが供給されてないのは,ちょと不便かも.
Configuration registersの計算がとても面倒なので,なんとかしたい.







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

MAX2771でGPS信号受信

2021-08-30 13:29:13 | ソフトウェア受信機
Slave FIFOの問題は解決したので,MAX2771でGPS信号受信を試みます.
高須さんからお借りしているMAX2771基板でSLWSとSLRDの信号を入れ替える前に,
MAX2771の評価基板に接続してみました.



EP6INのFIFOをひたすら読みだすStreamerのアプリケーションでI/QデータをPCに保存.
16.368MHzのIFCLKでも,取りこぼしなく転送できているようです.

その後,ソフトウェアGPS受信機でGPS信号の受信が確認できました.







これで,フロントエンド側のファームウェアから,ホスト側のアプリケーションまで
一通りのツールがそろいました.アプリケーションを作り込んで,MAX2771を自由に
操作できるようにしよう.

P.S. サクッとジャンパを改修.

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

メーカ不明のFX2LP基板

2021-08-30 11:19:32 | ソフトウェア受信機
Slave FIFOのファームウェアがどうしても動作せず,納得がいかないので
高須さんからお借りしているメーカ不明のFX2LP基板のヘッダピンの結線を
ひとつひとつチェックしてみました.



そうしたら,バスの読み書きの方向を指定するRDY1/SLWRとRDY0/SLRDの
シルクが逆になっていることが判明.バスからFIFOへの書き込みのために
SLWRをアクティブにしているつもりが,その逆方向のSLRDをアクティブに
していました.

正しくSLWRをlowに,SLRDをhighに設定したところ,無事にslave FIFOの
動作が確認できました.こんなことで日曜日を丸一日溶かすことになろうとは.



FX2LP基板単体の動作チェックでは,IFCLKに内部クロックを指定していますが,
これをMAX2771からのCLKOUTに切り替えればI/Qデータが取り込めるはず.
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MAX2771のクロック分周

2021-08-29 09:46:57 | ソフトウェア受信機
高須さんにクロック分周回路を介すとCLKOUTの信号レベルが改善されると情報をいただいた.
試しに周波数を1/2にしてみると,もともと1.17VppだったCLKOUTが2.0Vppに変化する.
納得いかない仕様だけれど,これならFX2LPのIFCLKをドライブできそう.



しかし,MAX2771のADCは,CLKの立ち上がりでサンプリングして,立ち下りでValidとなる.
一方,FX2LPのsynchronous slave FIFOは,IFCLKの立ち上がりでバスのデータを読み込むので,
やはりMAX2771のCLKOUTはインバータに入力して信号レベルと一緒に極性も反転した方が
良いかもしれない.

P.S. IFCLKの極性は,IFCFG.4で選べるのね.

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

Throughputの改善

2021-08-28 10:38:40 | ソフトウェア受信機
FX2LPのbulk転送のthroughputを改善するために,Cypressが提供するStreamerを参考に,
C#でコンソールアプリを書いてみた.



CypressのStreamerには劣るものの,36MB/sを達成.
これなら,余裕をもってGNSS信号のI/Qデータが転送できそう.

P.S. 受信データをファイルに書き込んで保存することもできるようになった.
Data returned by FinishDataXfer() in a host application using the cyusb3 driver
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

FX2LPのthroughput

2021-08-27 21:36:02 | ソフトウェア受信機
Cypressが提供するbulkloopのhost applicationを参考に,C#でコンソールアプリを書いてみた.
bulkloopのファームウエアで動作が確認できたけれど,throughputを計算してみるととても遅い.



bulkloopのファームウエアで,EP6INのデータをEP2OUTに毎回コピーしているのが原因だろうと,
TD_Pollで単にFIFOをEmpty/Fullにするように改修.



これで,INもOUTも8MB/sのthroughputが達成できたけれど,まだ遅い.



試しに,同じファームウェアをCypressが提供するStremerで計測してみると,なんと43MB/sも出る.



Host applicationの作り方次第で,throughputはかなり改善できそう.
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VS2019でHost Application

2021-08-26 23:42:06 | ソフトウェア受信機
Cypressが提供しているFX3/FX2LPのhost applicationのサンプルは,どれも古いVisual Studioで
開発されているため,Visual Studio 2019でbuildするとエラーばかり出てしまう.

C++で開発しようとすると,ちょっと面倒だったので,備忘録.
参考にした記事はこちらです.
https://community.cypress.com/t5/USB-Superspeed-Peripherals/CyAPI-Suite-source/td-p/99619
https://stackoverflow.com/questions/16732789/system-a-namespace-with-this-name-does-not-exist

まず,Visual Studio Installerで「C++によるデスクトップ開発」のオプションとして
「ビルドツール用C++/CLIサポート」を追加.



C++/CLIは,.NETクラスをC++プログラミングで使えるようにするためのものらしい.

Host applicationのサンプルは,EZ-USB FX3 Software Development Kitでインストール
されたものを使う.ここでは,Visual Studio 2019でstreamerのソリューションを開いてみる.

C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\cpp\streamer\Streamer_VS2015.sln

まず,先ほど追加したC++/CLIを使うために,「Configuration Properties -> General」から
「Common Language Runtime Support」を「Common Language Runtime Support (/clr)」に変更する.



次に,CyAPI.libを使うために,「Configuration Properties -> Linker -> Input」の
「Additional Dependencies」のパスを「..\..\..\library\cpp\lib\x86\CyAPI.lib」に修正.



これでエラーも警告もなく,streamerのアプリケーションがbuildできるようになります.

正直なところ,.NET Frameworkを使うのであれば,大人しくC#で開発するのが楽かもしれない.

P.S. AN70983のソリューションもVS2019で素直にbuildできた.
AN70983: Designing a Bulk Transfer Host Application for EZ-USB FX2LP/FX3

P.P.S. C#のコンソールアプリケーションのサンプルを発見.
How to Create Console Application of the CyControl Centre


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

MAX2771の設定レジスタ

2021-08-24 13:57:17 | ソフトウェア受信機
FX2LPのVendor Requestを使って,MAX2771の設定レジスタの読み書きができるようになった.
halfduplexのSPIは,bit bangingで実装している.



そろそろホストアプリケーションにも手を付けないといけない.
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

MAX2771のCLKOUT

2021-08-23 12:11:13 | ソフトウェア受信機
MAX2771のデータシートではCLKOUTはADC出力と同じデジタル出力と書かれているけれど,
オシロスコープで確認してみるとDC結合したTCXOの波形と同じものが出力されている.
これはCLKOUT_SELでADCのサンプリングクロックを選択しても同じで,LVCMOSレベルの
デジタル出力にすることができない.



このCLKOUTでは,EZ-USB FX2LPのslave FIFOのIFCLKを直接ドライブできない気がする.
FPGAを挟んでクロック入力ピンで受けてからFX2LPとインターフェイスする必要がある?

P.S. 基板の空スペースにインバータを載せるか.
Inverter feedback when converting clipped sine oscillator signal to square wave
コメント (1)
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

USB2.0も使いこなしたい

2021-08-20 15:45:57 | ソフトウェア受信機
高須さんからMAX2771+FX2LPの基板をお借りしました.
http://gpspp.sakura.ne.jp/diary201904.htm



そんなわけで,FX2LPもお勉強中.
本家のアプリケーションノートに加えて,このあたりがとても参考になりました.

平坂久門ただいま失業中(EZ-USB FX2LP INDEX)
米国で働く技術系サラリーマンのボヤキ on はてブロ

I/Qサンプルの取り込みは,bulkloopのサンプルのslave FIFOをIFCLKで動かせばいいのかな?

MAX2771の設定用インターフェイスであるhalfduplexのSPIは,
8051からbit-bangsで直接GPIOを叩けばいけるだろう.

AN14558: Implementing an SPI Master on EZ-USB FX2LP

P.S. MAX2771の設定用レジスタの書き込みや読み出しは,EP0のVendor Requestで行えばいいのね.
アプリケーションノートにI2CでのEEPROMのwrite/readのサンプルがあるので,それを使おう.

AN45471: Create Your Own USB Vendor Commands Using FX2LP
コメント
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする