オーダーしていたCentSDRの基板が到着しました。いつものようにElecrowに発注し、7/24発注、29日出荷で8/7に到着しました。さっそく組み立てて見ました。
今回の基板には、裏面にシルクでブロック図を描いてみました。ブロックを結ぶ各信号線に合わせて、その信号にアクセスするためのスルーホールランドを設けてあります。基板裏面を見るだけで構成が理解でき、信号をオシロを当てて実際に観測したり、実験のために信号を注入したりできることを狙っています。
I/Q信号はそれぞれ差動信号なので2本づつ。Loも2相信号なので2箇所あります。Loは50MHz以下。4xLoは〜200MHz。MCLKは8MHzの固定です。そのほかVCTCXOの制御電圧(Vadj)や、I2S, I2Cの信号です。SPIは、LCDのコネクタでアクセスできますので、ランドは設けていません。
組み立ては、段階を踏んで、以下の順序で行います。
- USBコネクタ
電源供給用のUSBコネクタを取り付け、VBUS=5Vが来ることを確認します。 - 電源周り
LiPoバッテリ用の制御回路を用意しているのですがそれは後回しにして、先にレギューレータとMOS FET、電源スイッチを付けて、3.3Vの電圧が正常に出ることを確認します。 - MCUとその周辺
電源がOKであればMCUとしてSTM32F303CBT6を付けてしまいます。書き込みにはST-Link2を使います。(DFUは外付けクリスタルが必要なので、今回の構成では最初の書き込みには使えません)
LEDがあるのでまずはLチカを確認するのがオススメです。今回はFriskSDRとほとんど同じ構成なので、そのファームをそのまま使って動作確認をしました。
ファームウェアはCDC (USB Serial)に対応しているので、正常ならばUSB経由での接続と、コマンド操作が行えるようになります。 - VCTCXOを付けて26MHzの出力をオシロで確認。Si5351aを付けて、ファームからの制御でMCLK 8MHzの出力が出ることを確認。そして4xLoの信号が出て、周波数チューニングができることを確認。
- TLV320AIC3204、そしてスピーカ用ミニジャック、周辺のコンデンサを付けます。
- 74LVC74を付けて、分周動作と2相信号が生成されていることをオシロで確認。
- アナログスイッチTS5A23157、そしてRCフィルタを付ける。ファームウェアが正常に動いていれば、スピーカを付けて、ミキサの入力端に適当にアンテナ線を繋げばAM放送を聞くことができます。
- RFアンプとSMAコネクタを付ける。
ファームウェアを流用できたこともあり、ここまではスムースに動作確認をすることができました。
最後にLCDとロータリエンコーダを取り付けます。
FriskSDRと新旧比較してみます。LCDを除けば同じアーキテクチャ、同じ部品で、基板サイズがかなり大きくなりましたのでレイアウトはスカスカです。FriskSDRは、よくあのサイズに入っていたなと我ながら驚きます。
ファームウェアですが、LCD描画のために、コードを修正していかねばなりません。NanoVNAでSPI LCDのコードがあるのと、雑誌でやったLPC-Link2受信機の画面描画のコードがあるので、これらの合わせ技で作っていきます。とはいえMCUが多少違うので調整が必要です。詳細は省きますが、I2C(DMA)との干渉で半日ハマりましたが、無事に動かすことができました。I2Sの全二重動作(DMA)と、LCDのSPI(DMA)もうまく動いています。あとは、ロータリエンコーダがスムーズに動かせるよう外部割り込みで動作するよう作り直して、各種操作ができるようコードを手直ししています。作業にはお盆の二日間を要しました。
基本的な画面構成と操作体系は、LPC-Link2で作った受信機とほとんど同じです。あちらはマルチコア、こちらはシングルコアですが、動作を見てみると、FFTの画面更新レートは結構な速さが得られているようです。音声に合わせて躍動する感じが良いです。負荷を見てみると、DSP処理には15%程度しか要しておらず、残りはFFTと描画処理に使っています。
いろいろと動作確認をしてみました。
-
上限の周波数は52MHz程度まで受信できるようです。この限界は74LVC74の動作速度のようで、分周動作の上限が200MHz程度(データシート上は225MHz)であることによります。
-
無入力でもぴょこっと0Hzの飛び出しが見えます。ADCのDCオフセットがあるようで、リジェクトするようコードを入れたいところです。
-
IQバランスは比較的良いようですが、チューニング周波数を上げていくと少し逆サイドの漏れが出てきます。こちらも係数補償でキャンセルできるはずです。
-
スプリアス。Si5351aのチューニングをダイアルでスキャンしてみると、ところどころにSpurが出てきます。スペクトラムが見えてしまうと、どうしても気になります。
-
クロックの妨害。アンテナを基板に近づけると24MHz, 48MHz付近で、スペクトラムが広がったノイズが観測できます。MCUからクロックの放射があるようです。一方、アンテナ無しでは微弱で済んでいるので、基板内の分離は良いようです。
-
USB CDCを接続状態にすると、中波帯に広くノイズが出る。配線の引き回しが長いので影響が出やすいようだ。
動画です。
操作もできるようになった pic.twitter.com/mHNs6XoTyl
— TT@北海道 (@edy555)
コードは、もう少し整理して公開したいと思っています。できればmbedあたりにしたいと思っていたのですが、既存のコードがあると、どうしてもそちらに流れてしまいます。
それからキット化も検討中です。基板が余っている分くらいは用意するつもりです。