DMA受信バッファ上のデータの並び

SPORT受信DMAバッファ上のデータの並びを探る予備実験を行いました。

非ワイドFMモードでは、SPORT各チャンネルにサンプルあたり2ワードのデータが転送されます。そのため、タイミングによってはこれらがABABと受信されたりBABAと受信されたりします。これは想定できることであり、当然ですがプログラムはそれに左右されないように作らなければなりません。

一方で、口伝えで「ADSP-BF533ではSPORTのプライマリ・チャンネルとセカンダリ・チャンネルのデータがバッファ上で反転する」という話を聞いたことがあります。実際、TRX-305のデータは、データの位置に依らずデータを見るだけでプライマリ・チャンネルのデータかセカンダリ・チャンネルのデータなのかを見分けることが出来ます。つまり、両チャンネルのデータがバッファ上で入れ替わるであろうと想定しているわけです。

そこで、SPORT受信開始時のデータを観測して、データの並びを調べてみました。結果として「プライマリ・チャンネルとセカンダリ・チャンネルが判定することはない」という結論に達しました。

続きを読む

バッファ長

相変わらず細々と思考実験を繰り広げています。今回は、バッファ長について書いておきます。

TRX-305のDSPが使うバッファには3種類有ります。一つはRX-IFデータをSPORTから受取るDMAバッファ。次はAFデータをSPORTから送り出すDMAバッファ。最後がRX-IFとAFの間のジッターを吸収するFIFOです。

続きを読む

RX IFのバッファとアライメント

前回大まかに説明したように、RX IFのデータはなかなか複雑です。

  • 途中でワイドFMと非ワイドFMのギヤチェンジが入る
  • 非ワイドFMはチャンネル中で複数ワードになる
  • ワイドFMは8ワードでAF 1サンプルに対応する

こういったデータをリアルタイムに扱いながら一台の受信機として成立させるために、いくつかあらかじめ考えておくべき事があります。

続きを読む

FPGAとやりとりされるデータ

TRX-305のDSPファームウェアに関しては、ブート問題が私の手を離れたため、しばらくはDSP用フレームワークの事だけを考えればよくなりました。これでようやく落ち着いて設計出来ます。

これからしばらく私自身の考察をかねて、FPGAとDSPがやりとりするデータについて書いていきます。おおむね書き終わる頃には解決しなければいけない問題と、ソフトウェアの構造もはっきりするでしょう。プログラムもデータも、その構造は解決すべき問題の構造に従ったものになるからです。

続きを読む

ブート問題前進

TRX-305上のDSPをいじるプロジェクトですが、ようやく問題の切り分けに成功しました。理由はDSPのファームウェア・イメージではなくマイコン側でした。現在問題は私の手を離れていますが、そのうち解決されるものと思われます。

当面、プロジェクトとしてはROMからのブートを必要としないため、問題の解決が数ヶ月に及んだとしてもわたしの方は先に進むことができるようになりました。

ということで、ようやく、本当にようやくですがプロジェクトを先に進めることが出来ます。

続きを読む

巻き直し

TRX-305上でBlackfinのオブジェクトが起動しない問題が続いています。とうとう、別基板で調査することになりました。

冬休みの間、ELFLOADERやbfin-elf-ldrが生成するLDRファイルを精査したり、LDRフォーマットのドキュメントを精読したりしました。が、両者の間に差はあるものの、ドキュメントに記述されている範囲内で問題だと思えないこと、それ以前に、明らかにドキュメントに記されていない形でLDRフォーマットが使われていることから、フォーマット面について理責めしていくのは、ほぼ絶望的になりました。

一方でTRX-305は基板が高密度で、プローブをBF533の足に押しつけながら測定などとうてい出来そうに無いため、ここに来てあきらめてさらに違う基板で動作を検証することにしました。

続きを読む

ブート問題その後

TRX-305への切り込みは、停滞したままです。長めの冬休み前半戦(掃除とか修理とか買い出しとか掃除とか…)がようやく終わり、TRX-305と腰を据えて向き合う時間がようやくとれました。が、成果と言えば、これまで細切れの時間でやってきたことの追認です。

相変わらずプログラムはICEでダウンロードすると動作し、SH2からブートしても沈黙しています。

続きを読む

相変わらずDSPがブートしない

TRX-305のDSP部に関しては、その後ヘッダファイルの解析などを行いましたが、進展らしきものはありません。

(いきなりTOPPERS/JSPは難しいか?)

と思い、ベアメタルのテスト・プログラムを書きましたが、結果は同じです。つまり、ICEからロードすると元気にシリアル・ポートに文字を出力しますが、SH2からロードするとだんまりです。プログラムはこんな感じ。どこで躓けっちゅうねん。

続きを読む

TRX-305

実は数ヶ月前からTRX-305MB基板が手元にあります。

これはCQ出版社『トランジスタ技術』誌2014年11月号で取り上げられたSDR基板です。この基板はAnalog Devicesの高性能ADコンバーターを利用した基板で、RFでサンプリングされた信号をFPGAにより処理し、低周波IFに落としてDSPで復調を行うアーキテクチャになっています。

さて、この復調部分のDSPはADSP-BF533なのですが、ソースコードが公開されておらずバイナリが提供されているのみです。そこで、ここを何とかしてプログラムすれば、自分のSDRの実験に使えるじゃないかと目論んで、こそこそいじり回している次第です。

これから、時折このプロジェクトについてブログに書いていくことにします。

続きを読む

ScilabによるIIRフィルタのシミュレーション

事情があってIIRフィルタのシミュレーションの必要が生じました。ツールを探してみましたが、これが見つかりません。実はあるにはあるのです。MATLAB。MATLABは確かに安くなりましたが、個人用でもフリーではありませんし、しかもSimlinkがついてきません。SimlinkのついていないMATLABかぁ、とまだ購入はしていない状態です。

じゃぁ、Scilabを。となるわけですが、ScilabはMATLABと互換性がありません。両者に互換性があるなんてのは、私に言わせれば『C++とJavaには互換性がある』と言い放つくらい恐れを知らぬ蛮行ですよ。

ScilabのIIRシミュレーションは、Scilabに固有の多項式機能を使うため、MATLABとは全く異なる方法になります。それなりに理解できたので、ここにメモ代わりに記しておきます。

続きを読む