LTspiceでOFDM信号を処理してみる

OFDM (直交周波数分割多重方式, Orthogonal Frequency-Division Multiplexing)信号をLTspiceで取り扱うのは簡単ではありません。

ここではベースバンドのOFDM信号をエクセルで作成し、PWL波としてLTspiceに取り込んだ後に、搬送波にOFDM信号を乗せて、受信後にOFDM復調までLTspiceの機能だけで処理してみます。但し、OFDM信号についての詳細は省略します。

ベースバンドのOFDM信号としては

 ①キャリアスペーシング 100Hz(信号長10ms)

 ②サブキャリア本数 24本(100Hz、200Hz、・・・・、2.4KHz)

 ③1シンボル(10ms)を1024サンプルで構成

 ④ガードインターバルを25%(2.5ms)

 ⑤一次変調はQPSK

 ⑥搬送波は100Hzの整数倍に設定

この条件でOFDM波をエクセルで作成します。私の場合、ランダムなQPSK、24本をIFFTしてOFDM波を作成しました。同様にしてこのQPSKを90°シフトした波形も作ります。送信波形にするにはプリフィックス波形を25%先頭にコピーするので12.5ms(1280サンプル)のデータが2種類できます。これらをcsv形式で時間と波形データの組合せで、PWLファイルとして作成します。


今回の搬送波周波数の定義としては、200KHzの搬送波とした場合、OFDM波が200.1KHz~202.4KHzになる周波数を搬送波と定義します。 

取り込んだ2個のPWLファイルをビヘイビア電源を利用してsin、cosの搬送波と乗算してその結果を加算して出力します。このTX1が送信波形になります。

復調は搬送波同期ができている前提で送信波形とcosの搬送波の乗算で求めます。LTspiceのそれぞれの波形は以下の様になり、ofdm_cos波形とdemod波形は完全に一致し、復調できていることがわかります。


次に、OFDMの復調ですが、LTspiceのFFT機能を使うことにより実現できます。ここではFFT演算区間を2.5ms~12.5ms(プリフィックス部分を削除)に設定して行います。

真ん中のグラフでは200KHzに送信波形が見えていますが、拡大しても平坦なOFDM波形が確認できます。但し、今回の条件では搬送波が100Hzの整数倍でなかったり、99MHz以上だとFFTの性能制限で平坦にはなりませんでしたが、正しく復調はされました。


また、FFTの精度を出すために回路図に書かれているように過渡解析の設定を少し変更してください。


次にOFDMを実際にデータ復調してみます。復調するには「.four」コマンドで振幅と位相を求めます。回路図のように設定すると「基本波100Hz、高調波は24倍まで、最後の1周期分のFFT」を計算してくれます。結果はSPICE Error logに書き出されます。


「Fourier Component」と「Phase」に結果が出てきますが、今回はQPSKなので「Phase」だけが必要です。ofdm_cosとdemodの位相はほぼ一致して復調できていることが確認できます。

因みにQPSKは±45°、±135°の4値を取りますが、結果と一致しています。


このlogファイルはエクセルでcsvデータとして読み取れますが、少し意地悪されていて読み取ったままではデータ処理できません。そこで以下の処理をしてください。

①数字の前後に半角スペースが入っているのでこのスペースをすべてのセルで「置換」処理でをしてすべて削除

②位相セルの最後尾に「-」が付加されているので、例としてセル番地がJ4とした場合ですが、「=VALUE(LEFT(J4,LEN(J4)-1))」で削除

これで数値データとしていろいろ確認することができるようになります。


LTspiceも使い方次第で色々と楽しめます。そこでLTspiceだけでデジタル変復調の基礎学習ができる記事を『ここ』で書いてみました。ページ数が多く有料の記事になってしまいますが、デジタル変復調の動作が理解できるようにLTspiceの回路図も添付してあるので直ぐに使えると思います。

「note.com」はブログと違ってファイルをアップロードできるので、こういうマニュアル本を書きやすい場所ですね。