2019年9月13日金曜日

OFDM/QAM

 最近複素数で遊んでるので、ついでにOFDMやQAMでも遊んでみた。



 24kSPS、2048ポイントの設定。
 およそ4.6kHzから6.4kHzの間の128本にQAM16を入れて、いくつかのサブキャリアに位相識別用の固定位相も入れている。
 適当な乱数でノイズを模擬している。
 前後にガードインターバルを挿入し、あえてズレた位置を切り出してFFTを行った。

 左上の図はズレたFFTの結果から得たコンステレーション。周方向に拡散しているのがわかる。
 右上の図は位相認識用の位相と、ある程度の範囲のタイミングエラーとの位相のエラーで、-15あたりでエラーが最小値になっている(実際、FFT切り出しは-15のオフセットを加えている)。ノイズを加えているのでエラーはゼロとはならない。
 上中央の図は位相エラーをオフセットしたコンステレーション。周方向の誤差は完全にキャンセルできている。ホワイトノイズの分、広がりがある。X0.5, Y0の塊は位相認識用の部分。
 中段の波形はIFFT後のアナログ波形。
 下段の波形はFFT後の波形。

 エラー値は非線形なので、総当たりで(少なくとも0.25ポイントくらいの周期で)スキャンする必要がありそう(最終的には0.05くらいまで収束させる必要がある)。
 位相値から計算的に処理できそうな気もするけど。

 あとは、タイミングの同期か。どうやってやるかなぁ。
 実際の仕様とかを読んでみると、OFDM数十シンボルで1フレームを構成して、1フレーム内に拡散符号を埋め込んで、それの相関処理で位置決めをやっているらしい。ただ、そこまでキッチリ相関でピーク出るのかなぁ、というのが気になるところ。あとから補正できるとはいえ、50ポイント以下くらいには合わせる必要があるので、シンボル長の2%程度まで同期する必要がある。
 相関処理のコストだって馬鹿にならないし。
 マイコンから送信してPCで処理するなら、相関処理のコストはさほどじゃないし、エンコードだけならFFT1回通してゴチャゴチャ処理して、位なので計算コストは大したことないけど、デコードしようとすると結構大変なので、マイコンでデコードするのは厳しそうだなぁ。主に搭載メモリの問題で。


 今の所、24kSPS/2048pointで、1シンボル85.333...msecくらいの長さになる。ガードインターバルを加えて2400ポイント/100msec、となる予定。16QAMなのでサブキャリア1本あたり4bit、サブキャリア128本なので1シンボルあたり512bit/symbol、1秒に8シンボル送ったとして4096bit/sec、512byte/sec、位のデータレートになる。
 現代の感覚からすれば恐ろしく低速だけど、缶サットのテレメに使うならなんとかなるかな、という気がする。画像伝送とかやるには足りないけど。でもまぁ、衛星で使うと想定すれば、4096bpsでもウインドウ1回で150KiBくらい下ろせるので、小さいJPEG1枚くらいなら十分に転送できるはず。


 とりあえず、1シンボルのエンコードはうまく動いているようだし、複数シンボルを連結したり、そこから同期したり、という部分を作り込んでみようっと。実際にテレメとかで使うなら誤り訂正とかが必要になってくるけど、流石に大変だよなぁ。
 近距離で使うならSNRは十分稼げるだろう、という前提で、誤り検出だけCRCとかチェックサムでやって、あとは転送頻度でカバーかなぁ。どうせ缶サットとかで使うならテレメ画面なんて見てる暇ないし。

***
追記

 拡散符号を重ねて、2シンボル分に対して相関処理をしてみた。



 右が全期間、左が拡大。前方ガードと後方ガードには符号を載せていないので、前方ガード分の128にピークが出ている。1シンボルあたり2400ポイントなので、2シンボル目は2528ポイントにピークが出ている。
 拡散符号はN=23を使っている。バーカーコードで調べるとN=13は1個で、N=13より長いコードはないらしいんだけど、総当たりで相関してみると結構大量に出てくる。バーカーコードの要件って何だろう? 自己相関の絶対値が1になる符号ってかなり大量にある。
 サイドローブもそこそこの大きさがあるけど、メインローブ比で3分の1未満なので、まぁなんとかなるだろう。シンボルを連続して送信すれば、2シンボル分のFFTを行って同期すれば、以降はFFT後のオフセット検出で細かく同期できる。1シンボル2400ポイントだと、4096ポイントのFFTで相関処理できそう。
 メインローブの幅は100ポイントくらいなので、これくらいならFFT後の位相を総当りでスキャンするのも可能そう。




 FFT波形。3kHzを拡散しているので、3kHzを中心としたスペクトルが出ている。
 QAMは128シンボルだけど、192シンボル分くらいは使えそうな気もする。AF帯域の特性がどのくらいあるのかわからないので、どこまで通せるか不明だけど。


0 件のコメント:

コメントを投稿