OFDMの基本的な仕組みについてExcelで確認してみる

2026年2月6日金曜日

t f B! P L

 


現在編集中です・・・・

はじめに

携帯4G/5G、Wi-Fi、WiMAX、地デジなど、現在のデジタル通信にはOFDM(直交周波数分割多重)方式が採用されています。OFDMについては知っているつもりでしたが、これまで具体的に確認したことはなかったので、今回は「OFDMの基本的な仕組みについてExcelを使って確認してみる」という試みです。

このブログでは、主にベースバンド信号の変調方式に限定し、符号化された情報を変調してキャリア(搬送波)に載せる処理と、受信側で復調して情報を取り出す処理をExcel上でシミュレーションしてみます。ベースバンド信号レベルでの基本的な処理の確認なので、RF信号の処理や電波伝搬などは扱いません。

専門用語の使い方など怪しいところが多々ありそうですが、素人がやっていることなので、大目に見てください。

ファイルのダウンロード

今回のExcelファイルはこちらからダウンロードできます。 → リンク
ファイル名は、OFDM.xlsm です。
Excelに実装されたFFTを使っているため、分析ツールをインストールしておく必要があります。(ファイル→オプション→アドイン→設定 で【分析ツール】と【分析ツール-VBA】にチェック)

OFDMの仕組みをExcel上でシミュレーションして、文字列を送受信しています。
RF送信波形を見る限り、どこがデジタル通信なのって感じですが、デジタル情報を伝送することができています。例えば、Wi-Fi IEEE802.11a/gでは、1回の通信波形(シンボル長)は3.2μsecですが、その信号をリアルタイムにIFFT/FFTして変調/復調しまえという方式が実用化されていることに今更ですが驚きます。

IQ変調

さて、携帯やWi-Fi、地デジなどの無線通信はデジタル通信になっています。情報をデジタル化して伝えるわけですが、現在広く使われているのが位相変調です。情報を信号の位相に変換し送信します。

例えば、QPSK方式では、2bitの情報の伝達に位相が 90度(π/2)異なる ±cosと±sin の4種類の信号が使われます。更に、±cosと±sin の信号を1つのキャリア(搬送波)に載せて送受信するのがIQ変調方式です。

IQ変調は、 Iチャンネルに±cosの信号(位相情報)、Qチャンネルに±sinの信号(位相情報)を載せ、両方の変調波を1つのキャリア(搬送波)に載せて送受信します。

90度位相が異なる信号(直交成分)は、合わせて送信しても受信側で同じ位相のキャリア信号を乗算すれば復調できるという原理により、受信側でIチャンネルとQチャンネルの位相情報をそれぞれ抽出できます。

IQ変調の原理とは

送信処理

Iチャンネルのキャリアを cos(ωt) 、 Qチャンネルは位相が90度進んだ –sin(ωt) をキャリアにします。Iチャンネル、 Qチャンネルに載せる情報をK1、K2とすると

    Iチャンネル:K1*cos(ωt)
 Qチャンネル:-K2*sin(ωt) 

K1、K2の値は 1 または -1 であり、合わせた信号 

 K1*cos(ωt) - K2*sin(ωt)

を送信信号として送ります。

受信処理

受信側では、 Iチャンネル と Qチャンネル を分離(復調)するために同じ位相のキャリア信号を乗算します。

 Iチャンネルの復調: 
cos(ωt)*( K1*cos(ωt)-K2*sin(ωt) ) = K1*cos(ωt)^2-K2*cos(ωt)*sin(ωt)
= 1/2*(K1*cos(2ωt)+ K1*cos(ωt-ωt)) - 1/2*K2*sin(2ωt)
= 1/2*K1 + 1/2*K1*cos(2ωt) - 1/2*K2*sin(2ωt)

1/2*K1*cos(2ωt)とsin(2ωt)はキャリア信号の2倍の周波数であり、LPFでカットすると情報としては直流成分である 1/2*K1 のみを抽出することができます。

 Qチャンネルの復調: 
-sin(ωt)*( K1*cos(ωt)-K2*sin(ωt) )

Iチャンネルと同様に、2倍の周波数の成分をLPFでカットすると情報としては直流成分である 1/2*K2 のみを抽出することができます。

IQ変調を確認してみる

ということで、 IQ変調で本当に復調できるのかを確認してみるところから始めてみます。
Excelファイルの【IQmodulation】シートになります。

上部のセル【D4】【D5】にIチャンネル、 Qチャンネルに載せる情報K1、K2があります。
K1、K2の値は 1 または -1 です。

K1、K2の情報は、 Iチャンネル、 Qチャンネルのキャリアの位相に反映され、2つのキャリアを合成したRF信号として受信側に渡されます。

受信側では、復調処理として受信したRF信号に、Iチャンネルの抽出には cos(ωt) 、 Qチャンネルの抽出には –sin(ωt) を掛け、信号の分離が行われます。
分離した信号には、キャリアの2倍の周波数を含みますが、LPF(今回は平均値)で取り除くとIチャンネル、 Qチャンネルでそれぞれ直流成分である ±0.5 を抽出できます。

K1、K2の値を変更(1 or -1)してみると情報が伝達できるのが分かります。

【FFT】ボタンがありますが、Excelに実装されたFFT(分析ツールのフーリエ解析)は複素FFTです。複素FFTでは、sinとcosが混合した信号を扱えるため、【FFT】ボタンを押せば、復調処理せずにRF信号から直接、IチャンネルとQチャンネルの情報を抽出できます。

OFDMは更に複雑で、 RF信号にキャリア信号を掛けてIチャンネルとQチャンネルを分離した後にFFTで情報を抽出します。

ということで、次はOFDMについて説明します。

OFDM(直交周波数分割多重)方式

OFDMでは、通信帯域を複数のサブキャリアに分割し、各サブキャリアごとに、例えばQPSK方式でIQ変調します。具体的な例として、Wi-Fi  IEEE 802.11a/g では、20MHzの帯域を312.5kHzごとに64本のサブキャリアに分割しています。 

OFDMはFFTを使うため、帯域とサブキャリア数が決まればサンプリングレート20MHz、サンプルポイント64も決まります。実際にはガードバンドもあるので、サブキャリア64本のうち52本がデータ送受信に使われます。

直交周波数分割多重で確認したいこと ~その1

312.5kHzごとのサブキャリア52本が同時にデータ送信して問題ないのでしょうか?

IQ変調での直交性は、 90度位相が異なる信号(cosと-sin)によるものでしたが、OFDMでは、直交周波数分割多重方式ということで、サブキャリアの間隔をΔfとして、 

 m番目のサブキャリア:s(t)=e^(j2π(f0+mΔf)t)

 n番目のサブキャリア:s(t)=e^(j2π(f0+nΔf)t)

OFDMでもIQ変調と同じように、各サブキャリアにcosとsin信号を載せるので、
オイラーの公式  \[ e^{j\theta}=\cos \theta + j\sin \theta \]より、各サブキャリアの信号を  \( e^{j\theta} \)  で表現します。
T=1/Δf として、1周期の積の積分を求めてみると
\[\int _{0}^{T} e^{j2π(f0+mΔf)t}\cdot e^{-j2π(f0+nΔf)t}\,dt = \int _{0}^{T} e^{j2π(m-n)Δft)}\,dt = \int _{0}^{T} (\cos (2π(m-n)Δft)+j\sin (2π(m-n)Δft) )\,dt\](m-n)周期cosとsinを積分した結果は0なので、各サブキャリアの周波数は直交性があるということみたいです。
各サブキャリアは直交しているといっても、全部のサブキャリアを重畳した時間波形は相当グチャグチャになりそうです。
フーリエ変換を信じないわけではないですが、本当に情報の伝達ができるのか確認したくなります。

直交周波数分割多重で確認したいこと ~その2

例えば、Wi-Fi  IEEE 802.11a/gでは、64本の中の52本のサブキャリアを使って送受信します。サンプリングレート20MHz、サンプルポイント64点でIFFT/FFTして変調・復調します。

でも、 64本のサブキャリアの周波数をサンプルポイント64点でFFTすると、サンプリング定理から32本のサブキャリアの情報しか分析できないのでは?と思ったりしますが、複素FFTでは、サンプルポイント64点でも64本のサブキャリアの周波数を扱えるらしいです。

サブキャリア1とサブキャリア63の信号を見てみると

 サブキャリア1: s1(n)=e^(j2πn/64) =\cos (2πn/64)+j\sin (2πn/64)

 サブキャリア63: s63(n)=e^(j2π(63n/64)) = e^(j2π((64-1)n/64))

= e^(j2πn) \cdot e^(-j2πn/64) = e^(-j2πn/64) 

=\cos (2πn/64)-j\sin (2πn/64)

サブキャリア63はサブキャリア1に対し、回転方向が逆(負の周波数)になっています。ベースバンド処理では、実際に 33~63番目のサブキャリアは負の周波数として扱っており、複素FFTでは負の周波数を独立に扱うことができます。

とはいうものの、サブキャリア63で本当に情報の伝達ができるのか確認したくなります。

サブキャリア 1と63による情報伝送

サブキャリア1と63の伝達情報をそれぞれ X1 , X63、 \( \theta = 2\pi n/64 \) とすると、\[s(n)=X1\cdot e^{jθ}+X63\cdot e^{-jθ}= X1\cdot (\cosθ+j\sinθ)+X63\cdot (\cosθ-j\sinθ)\]各サブキャリアはQPSKとし、2bitの情報を載せます。
サブキャリア1にk1,k2、サブキャリア63にk3,k4 とし、
 X1=k1+jk2、X63=k3+jk4 (各knは1または-1)
とすると、送信データは
 s(n)=(k1+jk2)*(cosθ+jsinθ)+(k3+jk4)*(cosθ-jsinθ)
    =k1\cdot cosθ+jk1\cdot sinθ+jk2\cdot cosθ-k2\cdot sinθ
    + k3\cdot cosθ-jk3\cdot sinθ+jk4\cdot cosθ+k4\cdot sinθ
   =k1\cdot cosθ-k2\cdot sinθ+k3\cdot cosθ+k4\cdot sinθ
    + j(k1\cdot sinθ+k2\cdot cosθ-k3\cdot sinθ+k4\cdot cosθ)
   =(k1+k3)\cdot cosθ + (k4-k2)\cdot sinθ + j((k2+k4)\cdot cosθ + (k1-k3)\cdot sinθ)

になります。さらに、実数部と虚数部をIQ変調して、Iチャンネル(cos)とQチャンネル(-sin)で送信します。

IQ変調の周波数は、ベースバンドの周波数よりも高い周波数で、周波数情報を φ とすると送信信号は
cosφ((k1+k3)\cdot cosθ + (k4-k2)\cdot sinθ) - sinφ((k2+k4)\cdot cosθ + (k1-k3)\cdot sinθ)
になります。
IQ変調で説明したように、受信側では、この信号にIチャンネルはcosφを掛け、Qチャンネルは-sinφを掛けて情報を抽出します。

送信信号の式を見ると、こんなに混ざってしまって、本当に受信側でk1/k2/k3/k4の情報を抽出できるのだろうかと思ってしまいます。

OFDMの確認

OFDMで本当に復調できるのかを確認してみます。

Excelファイルの【OFDM】シートになります。【OFDM】シートでは、サブキャリア 1と63、2と62、3と61を使って、12bitの情報をOFDMで送信してみます。

送信処理

送信データは、【 C4 】 セルの文字を8bitのコードに変換したものと、文字コードの上位4bitと下位4bitを加算した結果の下位4bitをチェックサム値として送信します。

k1~k12が送信コードです。\( \theta = 2\pi n/64 \)とすると送信信号は

サブキャリア 1と63

 Ich:  cosφ((k1+k3)\cdot cosθ + (k4-k2)\cdot sinθ) 

 Qch: - sinφ((k2+k4)\cdot cosθ + (k1-k3)\cdot sinθ)

サブキャリア 2と62

 Ich:  cosφ((k5+k7)\cdot cos2θ + (k8-k6)\cdot sin2θ) 

 Qch: - sinφ((k6+k8)\cdot cos2θ + (k5-k7)\cdot sin2θ)

サブキャリア 3と61

 Ich:  cosφ((k9+k11)\cdot cos3θ + (k12-k10)\cdot sin3θ) 

 Qch: - sinφ((k10+k12)\cdot cos3θ + (k9-k11)\cdot sin3θ)

RF送信信号は、上記の6本のサブキャリアを足し合わせた信号で、波形は中央のグラフの赤のラインです。

デジタル通信の波形ですって言われても見た感じは、どこがデジタルなの?というような波形です。

IQ変調のキャリアの周波数(角速度φ)は、ベースバンドの周波数の4倍にしています。

【 J21 】セルの値を変えるとキャリアの周波数を変更できますが、 IQ変調のキャリアの周波数(角速度φ)はサブキャリアの周波数(角速度θ)よりも高い必要があるので4~28の間で設定可能です。

実際のOFDMでは、各サブキャリア信号の生成はIFFT(逆フーリエ変換)で行われ、DACでアナログ化した後、IQミキサ(直交ミキサ)回路でキャリア周波数の cosφ と –sinφ が乗算され、合成して RF信号になりますが、このブログではOFDMの基本原理を確認するため、全てExcel上で計算しています。



受信処理

受信側では、 RF送信信号にIチャンネルはcosφを掛け、Qチャンネルは-sinφを掛けて分離します。中央のグラフの赤の青破線、緑破線が受信側で分離したIチャンネルとQチャンネルの波形です。
実際のOFDMでは、受信したRF信号に対して、ダウンコンバータ回路でキャリア周波数の cosφ と –sinφ が乗算され、ADCでデジタル信号化されます。このブログではOFDMの基本原理を確認するため全てExcel上で計算しています。

次に、【FFT & Decode】ボタンを押してFFTを実行することで送信情報を抽出し、Ich/Qchの実数値と虚数値の組み合わせから送信コードやCS値に変換しています。¥

Excel【OFDM】シートでは、受信した文字コードを文字に変換。また、受信した文字コードから算出したチェックサム値と、受信したチェックサム値を比較し情報が正確に伝達できたか確認しています。

チェックサム値を比較し情報が正確に伝達できたか確認

サブキャリア63でも情報の伝達ができており、相当グチャグチャな時間波形でも情報の伝達ができるのが確認できました。

文字列の送信

1文字の送受信ができたので、次は文字列の送受信をやってみたくなります。
ワークシート【Check with String】では、ボタン【Check with String】を押すと、送信文字のセルに格納した文字を、セル【C5】の文字数だけ順次送信していきます。

RF送信波形を見る限りデジタル通信っぽさが全く感じられませんが、デジタル情報を伝送することができています。リアルタイムにIFFT/FFTして、変調/復調しまえという方式が実用化され、こんなにも日常的に使われていることに今更ですが驚きます。
一方で、通信技術は技術開発、権利化、規格(標準)化の競争でロビー活動にも巻き込まれ、さらに市場での覇権争いとかかわると大変そうです。

OFDMの原型は1966年に発表

1966年のBell Labs(ベル研究所) Robert W. Changによる「多チャネルデータ伝送のための帯域制限直交信号の合成」がOFDM の原型となる“直交多重化”の原理を示した最初の論文とのことです。それから約20年後に、フランスの放送通信研究所CCETTで規格化され実用化されたという流れです。

R.E.Kalmanの現代制御の基礎となる論文、適応フィルタのLMSアルゴリズムの提案、Hough変換のアイデア、みんな1960年代ですがOFDMの原型も1966年に発表なんですねぇ。

最後までお読みいただきありがとうございました。浅学ゆえ間違いにお気付きの方は末尾のコメント欄からご指摘いただけると幸いです。

QooQ