はじめに
携帯4G/5G、Wi-Fi、WiMAX、地デジなど、現在のデジタル通信にはOFDM(直交周波数分割多重)方式が採用されています。OFDMについては知っているつもりでしたが、これまで具体的に確認したことはなかったので、今回は「OFDMの基本的な仕組みについてExcelを使って確認してみる」という試みです。
このブログでは、主にベースバンド信号の変調方式に限定し、符号化された情報を変調してキャリア(搬送波)に載せる処理と、受信側で復調して情報を取り出す処理をExcel上でシミュレーションしてみます。ベースバンド信号レベルでの基本的な処理の確認なので、RF信号の処理や電波伝搬などは扱いません。
専門用語の使い方など怪しいところが多々ありそうですが、素人がやっていることなので、大目に見てください。
OFDMの仕組みをExcel上でシミュレーションして、文字列を送受信しています。
RF送信波形を見る限り、どこがデジタル通信なのって感じですが、デジタル情報を伝送することができています。例えば、Wi-Fi IEEE802.11a/gでは、1回の通信波形(シンボル長)は3.2μsecですが、その信号をリアルタイムにIFFT/FFTして変調/復調しまえという方式が実用化されていることに今更ですが驚きます。
IQ変調
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 を抽出できます。
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でも情報の伝達ができており、相当グチャグチャな時間波形でも情報の伝達ができるのが確認できました。
文字列の送信
OFDMの原型は1966年に発表
1966年のBell Labs(ベル研究所) Robert W. Changによる「多チャネルデータ伝送のための帯域制限直交信号の合成」がOFDM の原型となる“直交多重化”の原理を示した最初の論文とのことです。それから約20年後に、フランスの放送通信研究所CCETTで規格化され実用化されたという流れです。
R.E.Kalmanの現代制御の基礎となる論文、適応フィルタのLMSアルゴリズムの提案、Hough変換のアイデア、みんな1960年代ですがOFDMの原型も1966年に発表なんですねぇ。

0 件のコメント:
コメントを投稿