以下、本開示の実施の形態について図面を参照して詳細に説明する。
11ay規格では、LDPC(Low Density Parity Check)符号化が用いられ、レートマッチング(コードワードサイズの調整)は行われない。このため、11ay規格では、1送信ビットあたりの符号化及び復号処理の計算量(計算の複雑さ及び回路規模)を一定に保つことができ、回路規模又は消費電力を小さくすることができる。
一方で、11ay規格では、OFDMシンボルに含まれるビット数とLDPC符号化されたビット数(コードワードのサイズ)とが倍数又は約数の関係にない。このため、コードワードが分断されて異なるOFDMシンボルに含まれる場合があり、インターリーブ方法によっては性能(通信品質)が劣化する場合がある。
また、11ay規格では、広帯域(例えば最大8.64GHz)のため、1OFDMシンボル内のサブキャリア数及びビット数が多い一方で、符号化及び復号化の計算量を小さくするため、LDPC符号化されたビット数は少ない(コードワードサイズが小さい)。したがって、11ay規格では、サイズの小さいコードワードが分断され、帯域内でコードワードを広い範囲で分散できないことによる性能劣化の問題が発生しやすくなる。
なお、別の規格、例えばLTEでは、100MHzなど、帯域幅が小さく、6144ビットなど、コードワードサイズが大きい。このため、LTEでは、コードワードが分断されても、帯域内で十分に広い範囲でコードワードデータを分散させることができる。また、LTEでは、ターボ符号を用い、OFDMシンボルサイズにコードワードサイズが適合するように、あるいはコードワードが分散するように、レートマッチ(パンクチャリング)を行うことができるため、上述したような11ay規格と同様の問題は発生しない。ただし、パンクチャリング(送信機側で破棄)は、送信しないビットに対しても符号化及び復号を行うため、回路規模及び消費電力が増大する。
また、他の規格、例えば11ad規格では、コードワードサイズは、OFDMシンボルに含むことができるビット数の約数であるため、コードワードの分断は発生しない。
そこで、本開示では、11ay規格のように、コードワードが複数のOFDMシンボルに分断される場合でも、広い周波数領域に分散してコードワードを配置し、通信品質を向上させることができるインターリーブ方法について説明する。
(実施の形態1)
[通信装置の構成]
図1は、通信装置の構成の一例を示す図である。通信装置100は、MAC(Medium Access Control)制御回路101、FEC(Forward Error Correction)符号化回路102、変調回路103、インターリーバ104、OFDM変調回路105、送信RF回路106、送信アンテナアレイ107、受信アンテナアレイ111、受信RF回路112、同期回路113、DFT(Discrete Fourier Transform、離散フーリエ変換)回路114、等化回路115、デインターリーバ116、復調回路117、FEC復号回路118、チャネル推定回路119を含む構成である。
なお、通信装置100において、MAC制御回路101、FEC符号化回路102、変調回路103、インターリーバ104、OFDM変調回路105、送信RF回路106、送信アンテナアレイ107は、例えば、送信装置を構成し、受信アンテナアレイ111、受信RF回路112、同期回路113、DFT回路114、等化回路115、デインターリーバ116、復調回路117、FEC復号回路118、チャネル推定回路119は、例えば、受信装置を構成する。
MAC制御回路101は、アプリケーションプロセッサ(図示しない)から入力されたデータに基づき送信データを生成し、FEC符号化回路102へ入力する。また、MAC制御回路101は、送信パラメータ(例えば、使用する無線チャネル、送信データサイズ、チャネルボンディング数、LDPC符号化方式、アンテナ指向性等)を決定し、決定した送信パラメータに基づいて、FEC符号化回路102、変調回路103、インターリーバ104、OFDM変調回路105、送信RF回路106、送信アンテナアレイ107の制御を行う(図示省略)。
また、MAC制御回路101は、受信パラメータ(例えば、使用する無線チャネル、チャネルボンディング数、受信電力閾値、アンテナ指向性等)を決定し、決定した受信パラメータに基づいて、受信アンテナアレイ111、受信RF回路112、同期回路113、DFT回路114、等化回路115、デインターリーバ116、復調回路117、FEC復号回路118、チャネル推定回路119の制御を行う(図示省略)。MAC制御回路101は、受信データをFEC復号回路118から受信し、アプリケーションプロセッサ(図示しない)へ出力する。
FEC符号化回路102は、送信データに対して、誤り検出符号の付加、ビットスクランブル及び誤り訂正符号化を行う。誤り検出符号には、一例として、CRC(Cyclic Redundancy Check)符号を用いる。ビットスクランブルでは、FEC符号化回路102は、一例として、擬似ランダム系列、M系列、又はGold系列を生成し、送信データにXOR(排他的論理和)を行う。誤り訂正符号では、一例として、LDPC符号、ターボ符号、又はリードソロモン符号が用いられる。
変調回路103は、FEC符号化回路102が出力するデータ(ビット系列)をデータ変調し、データシンボルに変換する。変調方式として、例えば、BPSK(Binary Phase Shift Keying)、QPSK(Quadrature Phase Shift Keying)、SQPSK(Spread QPSK)、16QAM(16値Quadrature Amplitude Modulation)、64QAM(64値QAM)、64NUC(64値Non-Uniform Constellation)が用いられる。
インターリーバ104は、複数のデータシンボルを含むデータシンボルのブロック(コードワードなど)において、データシンボルの順序を一定の規則に従い並び替える。インターリーバ104の詳細は後述する。
OFDM変調回路105は、インターリーバ104においてインターリーブされたコードワードをOFDM信号に変換する。具体的には、OFDM変調回路105は、インターリーバ104が出力する並び替えられたデータシンボルのブロックに対し、パイロットシンボルを挿入し、各データシンボル及びパイロットシンボルを送信する周波数(サブキャリアという)を決定し、各データシンボル及びパイロットシンボルをサブキャリアに配置し(サブキャリアマッピングという)、IDFT(Inverse Discrete Fourier Transform、逆離散フーリエ変換)を行い、時間領域信号系列(OFDMシンボルという)を生成する。
また、OFDM変調回路105は、OFDMシンボルの後半のデータをコピーしてOFDMシンボルの前に付加する(CP(Cyclic Prefix)付加という)。また、OFDM変調回路105は、CP付加を行ったOFDMシンボルの先頭及び終端付近の振幅調整及びフィルタの適用(窓関数という)を行う。なお、CPは、GI(Guard Interval)と呼ぶ場合がある。
なお、通信装置100は、OFDM変調回路105が生成する時間領域信号系列に加え、プリアンブル、ヘッダ、及びビームフォーミングトレーニング系列に関する時間領域信号系列を生成するプリアンブル生成回路(図示しない)、ヘッダ信号生成回路(図示しない)、ビームフォーミングトレーニング系列信号生成回路(図示しない)を備えても良い。なお、プリアンブル、ヘッダ、及びビームフォーミングトレーニング系列は、データシンボルのブロックと同様にOFDM変調回路105に入力され、サブキャリアマッピング、IDFTが行われ、OFDMシンボルが生成されてもよい。
また、通信装置100は、OFDM変調回路105が生成する時間領域信号系列、及びプリアンブル、ヘッダ、ビームフォーミングトレーニング系列に関する時間領域信号系列を結合し、PHYフレームを生成する、PHYフレーム生成回路(図示しない)をOFDM変調回路105の後段に備えても良い。
送信RF回路106は、OFDM変調回路105及びPHYフレーム生成回路(図示しない)が出力する時間領域信号系列をD/Aコンバータを用いてアナログ信号に変換し、無線領域信号(例えば60GHz帯信号)に変調し(アップコンバートという)、電力の増幅を行う。
送信アンテナアレイ107は、1以上のアンテナ素子を備え、送信RF回路106が出力する信号を無線信号として送信する。送信アンテナアレイ107は、一例として、フェーズドアレイアンテナである。
受信アンテナアレイ111は、1以上のアンテナ素子を備え、無線信号を受信する。受信アンテナアレイ111は、一例として、フェーズドアレイアンテナである。
受信RF回路112は、受信アンテナアレイ111が受信した無線信号の増幅を行い(AGC、Automatic Gain Control、ゲインの自動調整が行われる)、無線領域信号からベースバンド信号に復調し(ダウンコンバートという)、A/Dコンバータを用いてデジタル信号へ変換し、同期回路113へ入力する。
同期回路113は、受信RF回路112が出力する信号に対して、プリアンブル信号検出、シンボルタイミング検出、キャリア周波数オフセット補正を行う。
DFT回路114は、OFDMシンボル(OFDM信号)から、インターリーブされた複数のコードワードを抽出する。具体的には、DFT回路114は、同期回路113が出力する信号に対して、CPの除去を行い、受信OFDMシンボルデータを抽出する。また、DFT回路114は、受信OFDMシンボルデータに対しDFTを行い、周波数領域受信信号へ変換する。
等化回路115は、周波数領域受信信号に含まれる受信パイロットシンボル信号、及び、チャネル推定回路119(後述)が出力するチャネル情報(チャネル推定行列という)を用いて、周波数領域受信信号に含まれる受信データサブキャリア信号の周波数特性の補正を行う。
なお、等化回路115は、受信ダイバーシチ合成、最大比合成、MIMO(Multi-Input Multi-Output)信号分離処理を行ってもよい。
等化回路115は、一例として、ZF(Zero-Forcing)方式、MMSE(Minimum Mean Square Error)方式、MLD(Maximum Likelihood Detection)方式、MRC(Maximum Ratio Combining)方式、MMSE-IRC(MMSE Interference Rejection Combining)方式を用いても良い。
デインターリーバ116は、等化回路115が出力する周波数補正後の受信データサブキャリア信号の並び換え(デインターリーブ)を行う。デインターリーバ116が用いる並び換えの規則としては、インターリーバ104が用いる並び換えの規則とは逆の規則を用いても良い。デインターリーバ116は、インターリーバ104が並び替えたデータシンボルを元の順序に並び替える処理を行ってもよい。デインターリーバ116の詳細は後述する。
復調回路117は、例えば、BPSK、QPSK、SQPSK、16QAM、64QAM、64NUCの変調信号を復調し、ビットデータ系列に変換する。
FEC復号回路118は、ビットデータ系列に対して、誤り訂正復号(一例として、LDPC復号器、ターボ復号器を用いる)、デスクランブル(逆スクランブル)処理を行う。FEC復号回路118は、誤り訂正復号、及びデスクランブルを行い得られたデータをMAC制御回路101に出力する。
チャネル推定回路119は、受信したプリアンブル信号及びパイロットサブキャリア信号を用いて、チャネル推定行列を算出する。
なお、通信装置100は、ヘッダ信号を受信し、等化、復調及びFEC復号を行う、ヘッダ受信回路(図示しない)を備えても良い。
[インターリーバの動作]
<動作例1>
図2を用いて、インターリーバ104の動作について説明する。一例として、LDPCコードワードサイズ(「LCW」と表す)が672ビット、変調方式が16QAM、1シンボルあたりのビット数(「NCBPS」と表す)は4、データサブキャリア数(「NSD」と表す)が336サブキャリアの場合について説明する。
1コードワードあたりのデータシンボル数は、LCW/NCBPSにより算出され、図2の例では、168シンボルである。すなわち、図2では、データサブキャリア数(NSD=336)は、コードワードあたりのデータシンボル数(LCW/NCBPS=168)の倍数(2倍)である。従って、インターリーバ104は、2つのコードワードに対応するデータシンボル(合計336シンボル)が入力される毎に、データの並び換えを行い、336サブキャリアのデータ(1つのOFDMシンボルに相当する)を出力する。
図2において、インターリーバ104は、次のようにデータシンボルの並び換えを行う。まず、インターリーバ104は、第1のコードワード(コードワード1という。以下同様)の先頭のデータシンボルを、第1のサブキャリア(例えば、周波数が最も低いデータサブキャリア)に配置する。次に、インターリーバ104は、第2のコードワード(コードワード2という。以下同様)の先頭のデータシンボルを、第2のサブキャリア(例えば、第1のサブキャリアの次に周波数が低いデータサブキャリア)に配置する。
コードワード1のデータシンボルをd(0)〜d(167)と表し、コードワード2のデータシンボルをd(168)〜d(335)と表すと、インターリーバ104は、データシンボルd(idx(k))を、サブキャリア番号kに配置する。idx(k)は、式1により算出される。
式1において、第1項の「mod」は剰余演算を表し、第2項はフロア関数(式1の第2項は、フロア関数:floor(x)と表記することもでき、xを超えない最大の整数を求める)を表す。
なお、図2では、データサブキャリア数(N
SD)が1コードワードあたりのデータシンボル数(L
CW/N
CBPS)の2倍である場合について説明したが、図2と同様に、データサブキャリア数(N
SD)が1コードワードあたりのデータシンボル数(L
CW/N
CBPS)の倍数である場合、インターリーバ104は、データシンボルd(idx(k))を、サブキャリア番号kに配置する。idx(k)は、式2により算出される。
式2は、変数N
x、N
yを用いて式3のように表される。なお、変数N
x、N
yは式4、式5により定められる。
また、図2及び式1、式2、式3において、インターリーバ104は、コードワード毎に1データシンボルずつ取り出してサブキャリアの先頭(idx(k)=0)から配置する場合について説明した。しかし、インターリーバ104は、コードワード毎にNSデータシンボル(データシンボルグループという)ずつ取り出してサブキャリアの先頭(idx(k)=0)から配置しても良い(NSシンボルずつ処理する、という)。NSは、例えば8であってもよく、他の値でもよい。
なお、インターリーバ104は、インターリーブ処理前後において、データシンボルグループ内でのデータシンボルの順序を保持するようにしても良い。また、インターリーバ104は、インターリーブ処理前後において、データシンボルグループ内でのデータシンボルの順序を一定の規則により並び替えても良い。
インターリーバ104がN
Sシンボルずつ処理する場合、インターリーバ104は、データシンボルd(idx(k))をサブキャリア番号kに配置する。idx(k)は、式6、式7、式8、式9により算出される。
式7と式3との相違点は、式7で用いるNyの値は、式3で用いるNyに比べ、NS分の一になっている(式9を参照)。式6を用いる場合、インターリーバ104は、NS個のデータシンボルをまとめて転送(例えば、メモリへの書き込み)すればよい。また、式6を用いる場合、インターリーバ104は、NS個のデータシンボル毎に1つのインターリーブアドレスを算出すればよい。また、式6を用いる場合、Nx及びNyの値が小さいため、式6の計算が容易になるため、回路規模を削減し、回路の処理速度(スループット)を高めることができる。
なお、式6は、変数i及びjを用いて、式10のように表しても良い。式11は、i,j及びkの関係を表す。
<動作例2>
図3は、インターリーバ104の動作を表す別の例を示す。図3において、LDPCコードワードサイズ(LCWと表す)が672ビット、変調方式が16QAM、1シンボルあたりのビット数(NCBPSと表す)は4、データサブキャリア数(NSDと表す)が728サブキャリア、処理単位(NS)は8シンボルである。また、CWはコードワード(Code Word)を表す。
なお、NS個のデータシンボルを「データシンボルグループ」と呼び、NS個のサブキャリアを「サブキャリアグループ」という。図3において、1コードワードは168(=LCW/NCBPS)個のデータシンボルを含む。このため、1コードワードは21(=LCW/NCBPS/NS)個のデータシンボルグループを含む。また、図3において、1OFDMシンボルは728(=NSD)個のデータサブキャリアを含む。このため、1OFDMシンボルは91(=NSD/NS)個のサブキャリアグループを含む。
図3においては、図2と異なり、データサブキャリア数はコードワードあたりのシンボル数の倍数ではない。この場合、インターリーバ104は、式8の代わりに、式12を用いてN
xを算出する。
式12の右辺は、シーリング関数(式12の右辺は、シーリング関数:ceiling(x)と表記することもでき、x以上の最小の整数を求める)を表す。
式12は式8に比べ、シーリング関数が追加されているため、NSDがLCW/NCBPSで割り切れない場合も、Nxが整数になる。
図4A、図4B、図4Cは、インターリーバ104が本実施の形態に係るインターリーブを行う手順を示すフローチャートの例である。インターリーブの手順は、2次元配列を用いて模式的に説明される(後述)。
図4Aは、2次元配列を用いた手順を直接的に具現化する方法である。また、図4Bは、図4Aの手順を変形し、2次元配列の代わりに、1次元のメモリ(例えば、RAM)を用いて具現化するのに適した方法である。図4Cは、図4Bにおけるインターリーブアドレスを事前に計算し、回路規模を削減する方法である。
図4Aは、インターリーバ104が式12、式9を用いて算出したNx及びNyを用いてインターリーブを行う動作の手順を示すフローチャートである。また、図5A、図5Bは、図4Aのインターリーバ104の動作を模式的に説明する図である。
なお、図5A及び図5Bにおいて、d(k)はk番目のデータシンボルグループ(kは0以上LSD/NS-1以下の整数)を表す。h番目のデータシンボルをc(h)と表す場合(hは0以上NSD-1以下の整数)、d(k)で表されるデータシンボルの系列は、{c(k×NS), c(k×NS+1), c(k×NS+2), ..., c(k×NS+NS-2), c(k×NS+NS-1)}を含む。
図4AのステップS1001において、インターリーバ104は、式12及び式9を用いて、Nx及びNyの値を算出(決定)する。図5A及び図5Bは、Nx行Ny列の2次元配列を用いて図4Aのインターリーバ104の動作を説明する。そのため、Nxを2次元配列の「行数」、Nyを2次元配列の「列数」と呼ぶ。インターリーバ104は、2次元配列を、メモリ又はレジスタ配列を用いて実装しても良い。すなわち、インターリーバ104は、Nx×Nyのメモリサイズを有する。
ステップS1002において、インターリーバ104は、2次元配列の行方向にデータシンボルグループd(k)を書き込む(図5Aを参照)。インターリーバ104は、Ny個のデータシンボルグループd(0)からd(Ny-1)を2次元配列の行番号0に書き込み、Ny個のデータシンボルグループd(Ny)からd(2Ny-1)を2次元配列の行番号1に書き込む。インターリーバ104は、同様に各行への書き込みを行い、行番号Nx-1(最終行。図5Aでは行番号4)には、Ny個以下のデータシンボルグループd((Nx-1)×Ny)からd(NSD/NS-1)を書き込む。
ステップS1003において、インターリーバ104は、最終行の残りの要素に、ダミーデータを書き込む。例えば、データシンボルが8ビットの2進数である場合、1000_0000(10進数で-128)のように、負の最小値をダミーデータとしても良い。なお、インターリーバ104は、ダミーデータの書き込みを行う代わりに、最終行の残りの要素を空きとしておいてもよい。
ステップS1004において、インターリーバ104は、ダミーデータの破棄、および、2次元配列の列方向へのデータシンボルグループd(k)の読み出しを行う。図5Bでは、インターリーバ104が読み出すデータシンボルグループの列は、一例として、{d(0), d(21), d(42), d(63), d(84), d(1), d(22), d(43), d(64), d(85), d(2), ..., d(81), d(19), d(40), d(61), d(82), d(20), d(41), d(62), d(83)}のようになる。
図4Bは、インターリーバ104が図3においてインターリーブを行う別の手順を示すフローチャートである。図4Bは図4Aと異なる手順を用いるが、同様のデータシンボル系列が出力される。なお、図4Bにおいて、図4Aと同じ動作には、同じ符号を付与する。
図4BのステップS1001において、インターリーバ104は、図4AのステップS1001と同様に、式12及び式9を用いて、行数Nx及び列数Nyを算出(決定)する。
ステップS1101において、インターリーバ104は、式13Aを用いてブロックインターリーブアドレスidx0(i)(iは0以上N
x×N
y-1以下の整数)を算出する。
式13Aは、式7と同様の計算式であるが、インデックスiの値の範囲が異なり、0以上NSD/NS-1以下の代わりに、0以上Nx×Ny-1以下である。
ステップS1102において、インターリーバ104は、ステップS1101において算出したブロックインターリーブアドレスの系列{idx0(0),idx0(1), ..., idx0(Nx×Ny-2), idx0(Nx×Ny-1)}から、データシンボルグループ数(NSD/NS)以上の値(すなわち、インデックスi=NSD/NS以上のブロックインターリーブアドレスidx0(i))を取り除き、インターリーブアドレスの系列{idx1(0),idx1(1), ..., idx1(NSD/NS-2), idx1(NSD/NS-1)}を生成する。
ステップS1103において、インターリーバ104は、データシンボルグループd(k)を、昇順アドレスを用いて、メモリ(図示しない)へ書き込む。インターリーバ104は、データシンボルグループd(k)を、メモリ内のアドレスkに書き込む。
ステップS1104において、インターリーバ104は、ステップS1102で生成したインターリーブアドレスidx1(k)を用いて、データシンボルグループをメモリから読み出す。例えば、インターリーバ104は、読み出しアドレスをidx1(0)の値に設定してメモリからデータシンボルグループを読み出し、サブキャリアグループの先頭データとする。つまり、サブキャリアグループ番号kの位置には、メモリ内のアドレスidx1(k)に格納されているデータシンボルグループ(d(idx1(k))が配置される。
図4Bでは、インターリーバ104が読み出すデータシンボルグループの列は、一例として、{d(idx1(0)), d(idx1(1)), d(idx1(2)), ..., d(idx1(k)), ..., d(idx1(NSD/NS-2)), d(idx1(NSD/NS-1))}のようになる。
図4Cは、インターリーバ104が図3においてインターリーブを行う別の手順を示すフローチャートである。図4Cは、図4A及び図4Bと異なる手順を用いるが、同様のデータシンボル系列が出力される。なお、図4Cにおいて、図4Bと同じ動作には、同じ符号を付与する。
ステップS1202において、インターリーバ104は、データサブキャリア数NSD及びコードワードサイズLCWより、インターリーブアドレスidx1(k)を算出する。インターリーバ104は、図4BのステップS1001からステップS1102と同様の手順を用いて、インターリーブアドレスidx1(k)を算出しても良い。
また、インターリーバ104は、データサブキャリア数NSD及びコードワードサイズLCWの組み合わせ毎に、インターリーブアドレスidx1(k)を予め算出しておき、テーブルとして格納しても良い(「アドレステーブル」と呼ぶ)。アドレステーブルは、ROM(Read Only Memory)、RAM(Random Access Memory)、レジスタ等に格納しても良い。
図5Cは、アドレステーブルの一例を示す表である。図5Cのアドレステーブルは、データシンボルグループ数NSD/NSが91、コードワードサイズLCWが672の場合に用いられる。
図5Cのアドレステーブルによれば、一例として、kの値が0の場合idx1(k)の値は0、kの値が1の場合idx1(k)の値は21である。
図4Cにおいて、ステップS1103及びステップS1104は図4Bと同様である。
図4Cにおいて、インターリーバ104が読み出すデータシンボルグループの列は、一例として、{d(idx1(0)), d(idx1(1)), d(idx1(2)), ..., d(idx1(NSD/NS-2)), d(idx1(NSD/NS-1))}のようになる。ここで、図5Cのアドレステーブルによれば、idx1(0)からidx1(NSD/NS-1)の値が定まるため、インターリーバ104が読み出すデータシンボルグループの列は、一例として、{d(0), d(21), d(42), ..., d(62), d(83))}のようになる。つまり、図4Aの手順で得られるデータシンボルグループの系列と同様である。
図6Aは、図3のOFDMシンボル番号0(OFDMシンボル0)に対応するデータシンボルグループをインターリーブする場合における、図5A及び図5Bの2次元配列(書き込みと読み出し)と、コードワード(CW)との関係を示す図である。
図6Aにおいて、コードワード1(CW1)のデータシンボルグループは、2次元配列の0行に配置される。同様に、コードワードj+1(jは0以上Nx-1以下の整数)のデータシンボルグループは、2次元配列の行番号jに配置される。最終行(行番号Nx-1)には、行全体にデータシンボルグループが配置されない場合がある。コードワードNx(図6Aにおけるコードワード5(CW5))の一部のデータシンボルグループは、OFDMシンボル0の最終行に含めて、コードワード5(CW5)の残りのデータシンボルグループは、次のOFDMシンボル1の先頭行に含めても良い。OFDMシンボル1におけるデータの配置方法は後述する(図7Aを参照)。
図6Aにおいて、行毎に異なるコードワードのデータシンボルグループを配置するようにしたため、インターリーバ104は、列方向にデータを読み出す場合(図5B、図4AのステップS1004、図4B、図4CのステップS1104を参照)、連続する2つのデータシンボルグループは異なるコードワードに含まれるデータシンボルグループである。
従って、例えば通信路におけるマルチパスにより連続する周波数帯域(送信帯域より狭い一定の周波数範囲)において信号品質の劣化が発生した場合、品質が劣化したデータシンボルグループは複数のコードワードに分散される。このため、コードワード間の品質を均一にすることができ、パケットエラーレートの劣化を防ぐことができる。つまり、インターリーバ104は、特定のコードワードに含まれるデータシンボルグループに品質劣化が集中することを防ぐことができるため、誤り訂正後のエラーレートを改善することができる。
また、図6Aの配置及び図5Cのアドレステーブルによれば、コードワード1のデータシンボルグループは、読み出し後の順位(k)が0,5,10,15,20,25,30,35,39,43,47,51,55,59,63,67,71,75,79,83,87である。なお、k=0は、周波数が低いデータサブキャリアに対応し、k=90は周波数が高いデータサブキャリアに対応する。
図6Bは、OFDMシンボル番号0(OFDMシンボル0)における各コードワードのデータシンボルの周波数領域における分布を示す図である。インターリーバ104は、図6Aの配置の場合、コードワード1、コードワード2、コードワード3、コードワード4のデータシンボルを、低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
以上のように、インターリーバ104は、各コードワードが含むデータシンボルグループを低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。これにより、例えば通信路のマルチパスにより周波数毎に受信品質のばらつきがある場合に、特定のコードワードに含まれるデータシンボルグループに品質劣化が集中することを防ぐことができるため、誤り訂正後のエラーレートを改善することができる。
次に、図7Aは、図3のOFDMシンボル番号1(OFDMシンボル1)に対応するデータシンボグループをインターリーブする場合における、図5A及び図5Bの2次元配列(書き込みと読み出し)と、コードワード(CW)との関係を示す図である。
図7Aにおいて、インターリーバ104は、コードワード5(CW5)のうち、OFDMシンボル0に含まれなかった残りのデータシンボルグループを行番号0に配置する。行番号0に配置されたCW5のデータシンボルグループが行番号0のサイズ(列数Ny)より小さい場合、インターリーバ104は、行番号0の残りの要素(図7Aのd(14)からd(20))に、CW6のデータシンボルグループをCWの先頭から順に配置する。インターリーバ104は、CW6のうち、行番号0に書き込まなかった残りのデータシンボルグループを、行番号1の先頭から書き込む。
同様に、インターリーバ104は、コードワード毎に、データシンボルグループを行の途中(例えば列番号14、つまりd(14)がある列)から書き込みを始め、次の行に移り、書き込みを始めた列の1つ前の列(例えば列番号13)まで書き込みを行う。図7Aでは、インターリーバ104は、最終行の1つ前の行及び最終行においてコードワード(例えばCW9)前半の14データシンボルグループを書き込み、残りの後半7データシンボルグループを次のOFDMシンボル(例えばOFDMシンボル2)に書き込む。
図7Bは、OFDMシンボル1における各コードワードのデータシンボルの周波数領域における分布を示す図である。インターリーバ104は、図7Aのd(0)から読み出しを開始するため、コードワード6、コードワード7、コードワード8のデータシンボルを、低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
以上のように、インターリーバ104は、各コードワードが含むデータシンボルグループを低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。これにより、例えば通信路のマルチパスにより周波数毎に受信品質のばらつきがある場合に、特定のコードワードに含まれるデータシンボルグループに品質劣化が集中することを防ぐことができるため、誤り訂正後のエラーレートを改善することができる。
次に、図8Aは、図3のOFDMシンボル番号2(OFDMシンボル2)に対応するデータシンボルグループをインターリーブする場合における、図5A及び図5Bの2次元配列(書き込みと読み出し)と、コードワード(CW)との関係を示す図である。
図8Aにおいて、インターリーバ104は、図7Aと同様に、前のOFDMシンボル(OFDMシンボル1)に含まれる最終コードワード(CW9)の残りの後半7データシンボルグループから書き込みを始め、コードワードを順次書き込みを行う。このため、インターリーバ104は、各コードワードが含むデータシンボルグループを低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
なお、図7A(OFDMシンボル1)において、各コードワードの先頭のデータシンボルグループは列番号14に配置されている。これは、前のOFDMシンボル(OFDMシンボル0)における最終コードワード(CW5)の残りのデータシンボルグループ数が14であるためである。また、図8A(OFDMシンボル2)において、各コードワードの先頭のデータシンボルグループは列番号7に配置されている。これは、前のOFDMシンボル(OFDMシンボル1)における最終コードワード(CW9)の残りのデータシンボルグループ数が7であるためである。また、図6A(OFDMシンボル0)において、各コードワードの先頭のデータシンボルグループは列番号0に配置されている。これは、前のOFDMシンボル(図示せず)における最終コードワードの残りのデータシンボルグループ数が0であるためである。
図8Bは、OFDMシンボル2における各コードワードのデータシンボルの周波数領域における分布を示す図である。インターリーバ104は、図8Aのd(0)から読み出しを開始するため、コードワード10、コードワード11、コードワード12、コードワード13のデータシンボルを、低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
以上のように、OFDMシンボル毎に各コードワードの先頭のデータシンボルグループが配置される列番号が異なるが、インターリーバ104は、各コードワードのデータシンボルグループを列番号に関して巡回して書き込むため(つまり書き込み位置が最終位置に達した場合、先頭列に戻り書き込みを継続するため)、各コードワードが含むデータシンボルグループを低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。これにより、例えば通信路のマルチパスにより周波数毎に受信品質のばらつきがある場合に、特定のコードワードに含まれるデータシンボルグループに品質劣化が集中することを防ぐことができるため、誤り訂正後のエラーレートを改善することができる。
<動作例3>
図9A、図9B、図9Cは、インターリーバ104がインターリーブを行う別の手順を示すフローチャートである。図9A、図9B、図9Cにおいて、図4A、図4B、図4Cと同じ処理ステップには同一の符号を付与し、その説明を省略する。図9A、図9B、図9Cと図4A、図4B、図4Cとの差異は、OFDMシンボル毎に読み出し開始位置を変更する点である。
図9AのステップS2003において、インターリーバ104は、コードワードの先頭シンボルの位置を算出し、読み出し開始位置として設定する。
例えば、インターリーバ104は、OFDMシンボル0のインターリーブを行う場合、コードワード1の先頭シンボルの位置が行番号0、列番号0(図6Aのd(0)の位置)であるから、行番号0、列番号0を読み出し開始位置として設定する。つまり、インターリーバ104は、OFDMシンボル0においては、図5Bと同じ読み出し開始位置を設定する。
また、例えば、インターリーバ104は、OFDMシンボル1のインターリーブを行う場合、コードワード6の先頭シンボルの位置が行番号0、列番号14(図7Aのd(14)の位置)であるから、行番号0、列番号14を読み出し開始位置として設定する。つまり、インターリーバ104は、OFDMシンボル1においては、図5Bと異なる読み出し開始位置を設定する。
ここで、コードワード5の先頭シンボルは、OFDMシンボル0(図6A)に含まれ、OFDMシンボル1(図7A)には含まれない。そのため、インターリーバ104は、OFDMシンボル1のインターリーブを行う場合、コードワード5(例えば、図7Aのd(0)の位置)ではなく、コードワード6の先頭シンボル位置(図7Aのd(14)の位置)を算出して、読み出し開始位置に設定する。
すなわち、図10Aに示すように、OFDMシンボル1に含まれる第1から第Nのコードワード(図10Aのコードワード5〜コードワード9)において、コードワード5に含まれるデータシンボル数は、コードワード6に含まれるデータシンボル数よりも少ない場合、インターリーバ104は、コードワード5から昇順に書き込みを開始し、コードワード6から読み出しを開始する。なお、図10Aに示すように、OFDMシンボル1において、少なくとも、読み出し開始位置を含むコードワード6に含まれるデータシンボル数(21シンボル)は、インターリーバ104のNx×NyのメモリサイズのNy(つまり、列数)に等しい。
また、インターリーバ104は、OFDMシンボル1のインターリーブを行う場合、コードワード6の先頭シンボル位置を算出して、読み出し開始位置に設定し、各コードワードの先頭のデータ(例えばd(14)、d(35)、d(56)、d(77))が始めに読み出されるようにしても良い。
言い換えると、インターリーバ104は、各OFDMシンボルにおいて、先頭のデータシンボルを含み、最初に入力されるコードワードを選択して、読み出し開始位置を設定しても良い。
これにより、OFDMシンボルに含まれる各コードワード内のデータシンボルは、書き込まれた順序と同一順序で読み出される。すなわち、インターリーブ前後において、各コードワード内のデータシンボルの順序が保持される。このため、インターリーバ104及びデインターリーバ116の前段及び後段の処理が容易になり、回路規模を削減することができる。
例えば、デインターリーバ116の前段の等化回路115は、サブキャリアの順序に従い等化処理を行ってもよい。この場合、デインターリーバ116の出力に含まれる各コードワードは、コードワード先頭のデータシンボルが先に出力され、コードワード内のデータシンボルの順序に従い出力される。これにより、デインターリーバ116の後段の復調回路117及びFEC復号回路118は、コードワードを容易に分割することができる。例えば、コードワード番号毎に分割して別のメモリにデータシンボル及び復調データを保持し、コードワード毎にLDPC復号を行うことが容易となり、回路規模及び処理遅延を削減することができる。
また、例えば、インターリーバ104は、OFDMシンボル2のインターリーブを行う場合、コードワード10の先頭シンボルの位置が行番号0、列番号7(図8Aのd(7)の位置)であるから、行番号0、列番号7を読み出し開始位置として設定する。つまり、インターリーバ104は、OFDMシンボル2においては、図5Bと異なる読み出し開始位置を設定する。
図9AのステップS2004において、インターリーバ104は、ステップS2003で設定した読み出し開始位置を始点とし、ダミーデータの破棄、列方向へのデータの読み出しを行う。
図10Aは、S2004の処理の一例として、インターリーバ104がOFDMシンボル1のインターリーブを行う場合の読み出し処理を模式的に示す図である。
図10Aにおいて、インターリーバ104は、ステップS2003で設定した読み出し開始位置(d(14)の位置)から開始して列方向に読み出しを行う。読み出し位置が最終列の最終行(d(83)の位置。ダミーデータを除く)に達した場合、インターリーバ104は、行番号0、列番号0に読み出し位置を移動し、列方向の読み出しを継続する。
インターリーバ104は、読み出し開始位置に戻る1つ前の位置(d(76)の位置)を読み出し最終位置と定め、読み出し位置が読み出し最終位置に達したとき、ステップS2004の読み出し処理を完了する。
図10Bは、インターリーバ104が図9Aの手順を用いてインターリーブを行った場合の、OFDMシンボル1に含まれる各コードワードのデータシンボルの周波数領域における分布を示す図である。
図10Bでは、図7Bと同様に、インターリーバ104は、コードワード6、コードワード7、コードワード8のデータシンボルを、低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
また、図10Bでは、図7Bと異なり、コードワード5のデータシンボル(後半14データシンボルグループ)は、高周波数のサブキャリアに分布し、コードワード9のデータシンボル(前半14データシンボルグループ)は、低周波数のサブキャリアに分布する。
すなわち、インターリーバ104は、図9A、図9B、図9Cの手順を用いる場合、コードワード5の前半7データシンボルグループをOFDMシンボル0に含め、図6Bに示すとおり、低周波数のサブキャリアに配置し、コードワード5の後半14データシンボルグループをOFDMシンボル1に含め、図10Bに示すとおり、高周波数のサブキャリアに配置する。
従って、コードワード5のデータシンボルグループは、OFDMシンボル0において低周波数のサブキャリアに配置され、OFDMシンボル1において高周波数のサブキャリアに配置される。つまり、コードワード5のデータシンボルグループは、他のコードワードと異なり、複数のOFDMシンボルにまたがり配置されるが、他のコードワードと同様に、周波数領域で低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散されて配置される。
なお、インターリーバ104は、図10Aに示したようにステップS2003において読み出し開始位置をOFDMシンボル番号に応じて変更する代わりに、ステップS1002においてデータ書き込み開始位置をOFDMシンボル番号に応じて変更しても良い。
図11Aは、インターリーバ104が、データ書き込み開始位置をOFDMシンボル番号に応じて変更して書き込みを行う手順について、説明する図である。
図11Aにおいて、インターリーバ104は、図5Aと同様に行方向にデータシンボルグループの書き込みを行うが、書き込みを開始する列番号を7と定める。これにより、図11Aにおいて、CW6、CW7、CW8、CW9の先頭データシンボルグループが、列番号0に配置される。
なお、図11Aにおいて、インターリーバ104は、CW6の先頭シンボルが列番号0に配置されるように書き込み開始列番号を定めた。しかし、インターリーバ104は、代わりに、CW6の先頭シンボルが列番号0に配置されるように、行番号0におけるCW5の前に(列番号0から列番号6までに)、ダミーデータを書き込むようにしても良い。
図11Bは、インターリーバ104が図11Aに示す方法で書き込みを行った後に、データシンボルグループを読み出す方法を示す図である。インターリーバ104は、図11Aにおいてデータの書き込みを行わなかった要素(または、ダミーデータを書き込んだ要素)を読み飛ばし、列方向にデータシンボルグループの読出しを行う。すなわち、図11Bでは、インターリーバ104は、行番号1、列番号0(d(14)の位置)を読み出し開始位置として、列方向にデータシンボルグループを読み出す。
インターリーバ104が図11A及び図11Bの方法で出力するデータシンボルグループの系列は、図10Aの方法で出力される系列と同じである。従って、図11A及び図11Bの方法により得られる効果は図10Aの方法と同様である。本実施の形態において、以下で説明する方法は、同様に、図11A及び図11Bのように変形してもよいが、効果が同一であるため、説明を省略する。
図12は、S2004の処理の一例として、インターリーバ104がOFDMシンボル2のインターリーブを行う場合の読み出し処理を示す図である。
図12において、インターリーバ104は、ステップS2003で設定した読み出し開始位置(d(7)の位置)から開始し、図10Aと同様に、列方向に読み出しを行う。
図12に示すように、OFDMシンボル2に含まれる第1から第Nのコードワード(図12のコードワード9〜コードワード13)において、コードワード9に含まれるデータシンボル数は、コードワード10に含まれるデータシンボル数よりも少ない。この場合、インターリーバ104は、コードワード9から昇順に書き込みを開始し、コードワード10から読み出しを開始する。
図13は、インターリーバ104が図9Aの手順を用いてインターリーブを行った場合の、OFDMシンボル2に含まれる各コードワードのデータシンボルの周波数領域における分布を示す図である。
図13では、図8Bと同様に、インターリーバ104は、コードワード10、コードワード11、コードワード12、コードワード13のデータシンボルを、低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散させて配置することができる。
また、図13では、図7Bと異なり、コードワード9のデータシンボルは、高周波数のサブキャリアに分布する。
インターリーバ104は、図9A、図9B、図9Cの手順を用いる場合、コードワード9の前半14データシンボルグループをOFDMシンボル2に含め、図10Bに示すとおり、低周波数のサブキャリアに配置し、コードワード9の後半7データシンボルグループをOFDMシンボル3に含め、図13に示すとおり、高周波数のサブキャリアに配置する。
従って、コードワード9のデータシンボルグループは、OFDMシンボル0において低周波数のサブキャリアに配置され、OFDMシンボル1において高周波数のサブキャリアに配置される。つまり、コードワード9のデータシンボルグループは、他のコードワードと異なり複数のOFDMシンボルにまたがり配置されるが、他のコードワードと同様に、周波数領域で低い周波数のデータサブキャリアから高い周波数のデータサブキャリアに渡って広く分散されて配置される。
なお、インターリーバ104がステップS2004の処理を用いてOFDMシンボル0のインターリーブを行う場合の読み出し処理は、図4AのステップS1004の処理と同様である(図5Bを参照)。
図9Bは、インターリーバ104が図3においてインターリーブを行う別の手順を示すフローチャートである。図9Bは図9Aと異なる手順を用いるが、同様のデータシンボル系列が出力される。図9Bにおいて、図4Bと同様の処理は同一の番号を付与し、説明を省略する。
ステップS1001において、インターリーバ104は、式12及び式9の代わりに、式13B及び式13Cを用いてN
x及びN
yを算出しても良い。
インターリーバ104は、式12及び式9により算出したNx,Nyが整数とならない場合(後述)に、式13B及び式13Cを用いてNx,Nyを算出しても良い。
図9BのステップS2103において、インターリーバ104は、ステップS2003(図9A)と同様に、OFDMシンボル内の先頭シンボルの位置を算出し、読み出し開始位置(n_offset)として設定する。
n_offsetの値の算出方法について詳細に説明する。インターリーバ104は、式14を用いて、k
(q) offsetの値を算出する。
k(q) offsetは、OFDMシンボル番号(q)(qは0以上の整数、例えばOFDMシンボル0はq=0に相当)において、前のOFDMシンボル(OFDMシンボルq-1)に含まれる最終コードワードのうち、前のOFDMシンボルに含めず、現在のOFDMシンボル(OFDMシンボルq)に含まれるシンボル数を表す。
例えば、図6AのOFDMシンボル0(q=0)では、k
(0) offsetは、式15として示すことができる。
また、図7AのOFDMシンボル1(q=1)では、k
(1) offsetは、式16として示すことができる。
また、図8AのOFDMシンボル2(q=2)では、k
(2) offsetは、式17として示すことができる。
なお、インターリーバ104は、式14の代わりに、式18を用いてk
(q) offsetの値を算出しても良い。
式18は漸化式であり、式14と比べて乗除算の数が少ないため、インターリーバ104は計算量を削減し回路規模及び消費電力を削減することができる。
次に、インターリーバ104は、式19を用いて、N
Lの値を算出する。
式19のNLは、2次元配列の最終行に含まれるデータシンボルグループ数を表す。例えば、図6Aでは、最終行にd(84)からd(90)の7データシンボルグループを含むため、NLの値は7である。式19では、図6AのOFDMシンボル0の最終行の長さ(NLに相当)は、行の長さ(Ny)から、図7AのOFDMシンボル1(q=1)の行番号0に含まれるコードワード5のシンボルグループ数(floor(k(1) offset/NS)に相当)を差し引いた値であることを利用し、NLの値を算出する。
インターリーバ104は、式20Aを用いて、読み出し開始位置(n_offset)の値を算出する。なお、n_offsetの値は、OFDMシンボル番号(q)に依存するため、n
(q) offset又はn_offset(q)と表記する場合がある。
n_offset(q)の値は、2次元配列において、読み出し開始位置を含む列より前の列に含まれるデータシンボルグループ数を表す。例えば、図10Aでは、読み出し開始位置を含む行(d(14)を含む行)より前の行(d(0)からd(13)を含む行)に含まれるデータシンボルグループ数は63個であるから、n_offset(1)の値は63である。
また、式20Aにおいて、floor(k(q) offset/NS)の値がNL以下か、NLを超えるかによって、第1式と第2式を選択する。第1式(floor(k(q) offset/NS)の値がNL以下の場合)は、図10B及び図12のように、読み出し開始位置を含む列が、最終行にデータシンボルグループを含まない行(図10B及び図12において、d(84)からd(90)の何れも含まない列)である場合に用いる。
また、第2式(floor(k(q) offset/NS)の値がNLを超える場合)は、読み出し開始位置を含む列が、最終行にデータシンボルグループを含む列(図10B及び図12において、d(84)からd(90)の何れかを含む列)である場合に用いる(図示しない)。
以上、ステップS2103において、インターリーバ104が、式14から式20Aを用いて、読み出し開始位置を算出する方法を示した。
なお、図9Aにおいて、インターリーバ104が読み出し開始位置を算出する方法を説明したが、ステップS2003において算出される読み出し開始位置である行番号0を、j
(q) offset列と定め、j
(q) offsetの値を、式20Bを用いて算出しても良い。
式15、式16、式17を用いて算出したk(0) offset、k(1) offset、k(2) offsetの値を用いると、j(0) offset、j(1) offset、j(2) offsetの値は、それぞれ0、14、7と算出される。この値は、図6A(OFDMシンボル0)、図10A(OFDMシンボル1)、図12(OFDMシンボル2)における読み出し開始位置が列番号0,14,7であることを意味する。
図9BのステップS2104では、インターリーバ104は、n_offset(q)を用いてインターリーブアドレスidx1を巡回シフトしたアドレスidx2を用いて、メモリから読み出しを行う。idx2は、式21により算出される。
すなわち、インターリーバ104は、インターリーブサイズに応じて生成したインターリーブアドレスを、前のOFDMシンボルにも含まれるコードワード(例えば、図10Aではコードワード5)に含まれるデータシンボル数に応じてシフトしたアドレスを用いて、読み出し開始位置を含むコードワード6を読み出す。
図9Cは、インターリーバ104が図3においてインターリーブを行う別の手順を示すフローチャートである。図9Cは図9A及び図9Bと異なる手順を用いるが、同様のデータシンボル系列が出力される。図9Cにおいて、図9B及び図4Cと同様の処理は同一の番号を付与し、説明を省略する。
図4Cにおいて図4Bのアドレス計算をアドレステーブル引きに置き換えた場合と同様に、図9Cにおいて、図4Bのアドレス計算(ステップS1001、S1101、S1102)をアドレステーブル引きに置き換えても良い(図4CのステップS1202の説明を参照)。
図9Cにおいて、データシンボルグループの読み出し手順は、図9Bと同様である(ステップS2103、S2104)。
なお、インターリーバ104は、図9CのステップS2104において、idx2の値は、式21を用いて計算を行う代わりに、idx1のアドレステーブル(一例として、図5C)を用いて算出しても良い。例えば、図10Aにおいて、nが87、n_offset(1)が63の場合、idx2(87,1)の値は、式22により、13と算出される。
これは、図10Aにおいて、シンボルブロックグループd(13)が、87番目に読み出されることを表す。このように、インターリーバ104は、OFDMシンボル番号qにおいてn番目に読み出すデータを、d(idx2(n,q))と定める。
図14は、OFDMシンボル1(q=1)における、idx2(n,1)の値の例を示す表である。
以上のように、インターリーバ104は、図4A、図4B及び図4Cの手順を用いる場合、コードワード5の前半のデータシンボルグループをOFDMシンボル0に含め、図6Bに示すとおり、低周波数のサブキャリアに配置し、コードワード5の後半のデータシンボルグループをOFDMシンボル1に含め、図6Bに示すとおり、低周波数のサブキャリアに配置される。
従って、コードワード5のデータシンボルグループは、OFDMシンボル0においてもOFDMシンボル1においても低周波数のサブキャリアに配置されるため、分布に偏りが生じる。これにより、例えば、低周波数のサブキャリアの信号品質の劣化が高周波のサブキャリアに比べて大きい場合、コードワード5のエラーレートは、他のコードワードに比べ増加する。
一方、インターリーバ104は、図9A、図9B、図9Cの手順を用いる場合、コードワード5の前半のデータシンボルグループをOFDMシンボル0に含め、図6Bに示すとおり、低周波数のサブキャリアに配置し、コードワード5の後半のデータシンボルグループをOFDMシンボル1に含め、図10Bに示すとおり、高周波数のサブキャリアに配置することができる。
従って、コードワード5のデータシンボルグループは、OFDMシンボル0において低周波数のサブキャリア、OFDMシンボル1において高周波数のサブキャリアに配置される。他のコードワードと異なり複数のOFDMシンボルにまたがり配置されるが、他のコードワードと同様に、周波数領域で広く分散されて配置される。
これにより、通信装置100は、データサブキャリア数がコードワードあたりのシンボル数の倍数ではない場合であっても、コードワード毎のエラーレートを均一化し、パケットエラーレートを低減し、データスループットを高めることができる。
これは、例えば、OFDMシンボル長が短い(例えば291ナノ秒)ためにOFDMシンボル間でのチャネル変動が小さい、ミリ波高速通信(11ad規格、11ay規格を含む)において有効である。
例えば、低周波数のサブキャリアの信号品質の劣化が高周波のサブキャリアに比べて大きい場合、OFDMシンボル0の低周波数側に分布するコードワード5のデータシンボルグループでは品質劣化の影響が大きいが、OFDMシンボル1の高周波数のサブキャリアに分布するコードワード5のデータシンボルグループでは品質劣化の影響が小さい。受信装置のFEC復号回路118において、OFDMシンボル0のコードワード5のデータシンボルグループとOFDMシンボル1のコードワード5のデータシンボルグループとを合わせて誤り訂正復号を行うことにより、低周波数のサブキャリアの信号品質劣化の影響を低減し、エラーレートを低減することができる。
図15は、インターリーバ104の構成の一例(インターリーバ104a)を示す図である。インターリーバ104aは、図9Bの手順に基づきインターリーブを行う。
インターリーバ104aは、メモリ1040、アドレスカウンタ1041、Nx,Ny算出回路1042、OFDMシンボル数カウンタ1043、シフト量算出回路1044、ブロックインターリーブアドレスidx0生成回路1045、インターリーブアドレスidx1生成回路1046、アドレスシフト回路1047を備える。
MAC制御回路101は、例えば、チャネルボンディング数(NCB)、データサブキャリア数(NSD)、LDPCコードワードサイズ(LCW)、シンボル当りビット数(NCBPS)のパラメータをインターリーバ104aへ入力する。
変調回路103は、データ変調(例えば16QAM)を行ったデータシンボルを、データシンボルグループ毎(NSシンボル毎)にインターリーバ104aへ入力する。
インターリーバ104aのメモリ1040は、例えば、RAM、または、レジスタアレイで構成される。
インターリーバ104aのアドレスカウンタ1041は、例えば昇順アドレスを用いて、メモリ1040へデータシンボルグループのデータを書き込むためのアドレスを生成する。例えば、アドレスカウンタ1041は、データシンボルグループd(n,q)をアドレスnへ書き込むように、アドレスを生成する(図9BのステップS1103に相当)。
インターリーバ104aのNx,Ny算出回路1042は、式13B及び式13Cを用いて、2次元配列の行数Nxと列数Nyを算出し、シフト量算出回路1044及びブロックインターリーブアドレスidx0生成回路1045へ入力する(図9BのステップS1001に相当)。
インターリーバ104aのOFDMシンボル数カウンタ1043は、変調回路103から入力されたシンボル数(図示せず)に応じ、OFDMシンボル番号(q)の値を決定し、シフト量算出回路1044へ入力する。
インターリーバ104aのシフト量算出回路1044は、式14、式19、式20Aを用いて、n_offset(q)の値を算出する(図9BのステップS2103に相当)。
インターリーバ104aのブロックインターリーブアドレスidx0生成回路1045は、式13Aを用いて、idx0(i)を算出する(図9BのステップS1101に相当)。
インターリーバ104aのインターリーブアドレスidx1生成回路1046は、図9Bのステップ1102の手順を用いて、idx1(n)を算出する。
インターリーバ104aのアドレスシフト回路1047は、式21を用いて、idx2(n,q)を算出する(図9BのステップS2104に相当)。インターリーバ104aは、アドレスシフト回路1047が生成したidx2(n,q)を読み出しアドレスとして、メモリ1040からデータシンボルグループを読み出し、OFDM変調回路105へ出力する。
なお、デインターリーバ116は、インターリーバ104aにおいて、アドレスシフト回路1047の出力(idx2(n,q))を書き込みアドレスとし、アドレスカウンタ1041の出力を読み出しアドレスとすることにより構成しても良い。
図16は、インターリーバ104の構成の別の例(インターリーバ104b)を示す図である。図16において、図15と同じ構成要素には同じ符号を付与し、説明を省略する。図15のインターリーバ104aは、書き込みアドレスにデータシンボルグループ番号(n)を用い、読み出しアドレスにインターリーブ方式に応じたアドレスを用いることによりインターリーブ処理を行う。これに対して、図16のインターリーバ104bは、書き込みアドレスにインターリーブ方式に応じたアドレスを用い、読み出しアドレスにデータシンボルグループ番号(n)を用いることによりインターリーブ処理を行う。
図16のインターリーバ104bは、図15インターリーバ104aと構成が異なるが、同じインターリーブ結果を得ることができる。後述するように、デインターリーブアドレステーブルメモリ1048は、変調回路103からのデータシンボルグループの入力に応じて対応するインターリーブアドレスを逐次生成すればよく、アドレスシフト回路1047aは加算とモジュロ処理により行うことができるため、回路構成が簡易であり、消費電力を削減することができる。
アドレスカウンタ1041aは、変調回路103の出力に応じ、データシンボルグループ番号(n)を生成する。
デインターリーブアドレスメモリ1048は、デインターリーブアドレスidx3(n)を、idx3(n)が式23を満たすように算出する。
なお、式23を満たすidx3(n)は、式24を満たす。
式23及び式24より、idx3(n,q)は、idx1(n,q)の逆引きアドレスである。
デインターリーブアドレスメモリ1048は、idx3(n)を算出するアドレステーブルを、例えば、ROM、または、RAMに格納して、idx3(n)を算出してもよい。
アドレスシフト回路1047aは、式25を用いて、読み出し初期値調整済みのインターリーブアドレスidx4(n,q)を算出する。
インターリーバ104は、図10Aにおいて、読み出し位置をn_offset(q)だけ進めることに対応し、式25は、書き込み位置をn_offset(q)だけ遅らせることを意味し、両者は同じ効果が得られる。
アドレスシフト回路1047aが生成するidx4(n,q)は、式26及び式27を満たす。idx4(n,q)は、idx2(n,q)の逆引きアドレスである。
図17は、図14に示したidx1(n)の値の例に対応するidx3(n)及びidx4(n,1)の値の例を示す。図14において、例えば、idx1(4)の値は84であった。これに対応して、idx3(84)の値は4である。また、図14において、例えば、idx2(6,1)の値は57であった。これに対応して、idx4(57,1)の値は6である。
アドレスカウンタ1041aは、データシンボルグループ番号(n)を生成する。アドレスカウンタ1041aは、一例として、昇順アドレス(n=0,1,...,floor(NSD/NS)-1)を生成する。
インターリーバ104bは、アドレスシフト回路1047aが生成するアドレス(idx4(n,q))を用いてデータシンボルグループをメモリへ書き込み、アドレスカウンタ1041aが生成するアドレスを用いてデータシンボルグループをメモリから読み出すことにより、インターリーブを行う。
図16のインターリーバ104bと、図10Aとの対応について説明する。インターリーバ104bは、始めに読み出すデータがアドレス0、次に読み出すデータがアドレス1、のように、読み出し順を考慮し、インターリーブ手順(図9A、図9B、図9C)に応じてデータシンボルグループを書き込む位置を制御することにより、インターリーブを実現する。
例えば、図10Aにおいて、データシンボルグループd(14)を始めに読み出すため、d(14)をアドレス0に書き込む。つまり、インターリーバ104bは、idx4(14,1)=0であるように、書き込みアドレスの計算を行う。
図18は、インターリーバ104の構成の別の例(インターリーバ104c)を示す図である。図18は、OFDM変調回路105の構成の一例(OFDM変調回路105a)を含む。図18において、図15及び図16と同じ構成要素には同じ符号を付与し、説明を省略する。
インターリーバ104cは、インターリーバ104bと異なり、アドレスシフト回路1047aが算出したアドレスidx4(n,q)を、OFDM変調回路105aへ入力する。また、インターリーバ104cは、メモリ1040及びアドレスカウンタ1041aを持たなくても良い。
また、変調回路103は、データシンボルグループをインターリーバ104cの代わりにOFDM変調回路105aへ入力しても良い。通信装置100は、インターリーバ104cが算出した書き込みアドレスを用いることで、実質的に、OFDM変調回路105aがインターリーブ処理を行う。
OFDM変調回路105aは、データサブキャリアアドレス算出回路1051、メモリ1052、パイロット及びガードサブキャリア挿入回路1053、アドレス生成回路1054、IDFT回路1055、CP付加及び窓関数回路1056を含む。
OFDM変調回路105aのデータサブキャリアアドレス算出回路1051は、インターリーブ後のデータサブキャリア順位(r)に応じたサブキャリア番号(k)を算出する。インターリーブ後のデータサブキャリア順位(r)とは、例えば、図5B、図10A、図12におけるデータの読み出し順位を意味する。
例えば、図10Aにおいて、データシンボルグループd(14)に含まれるデータシンボルのデータサブキャリア順位は0からNS-1であり、データシンボルグループd(35)に含まれるデータシンボルのデータサブキャリア順位はNSから2NS-1である。インターリーバ104cは、データシンボルグループd(n)のデータサブキャリア順位を、idx4(n,q)×NSからidx4(n,q)×NS+NS-1であると定める。
図19は、データサブキャリア順位(r)とサブキャリア番号(k)との対応(サブキャリアマッピングという)の一例を示す。サブキャリアマッピングは、チャネルボンディング数(NCB)、DFT点数(NDFT)、データサブキャリア数(NSD)、チャネル番号(ch)に応じて異なる値をとってもよい。図19は、NCB=2、NDFT=1024、NSD=728、チャネル番号が9の場合の例である。
サブキャリア番号kの値の範囲は、-NDFT/2以上NDFT/2-1以下(図19の例では、-512以上511以下)である。図19において、kが-383未満及び383を超えるサブキャリアは、ガードバンド又はガードサブキャリアという。ガードサブキャリアのシンボルの値は0と定める。図19において、kの値が-1,0,1のサブキャリアは、DCサブキャリアという。DCサブキャリアのシンボルの値は0と定める。
また、ガードサブキャリア及びDCサブキャリア以外、かつ図19に記載が無いkの値は、パイロットサブキャリアという。パイロットサブキャリアのサブキャリア番号kは、一例として、{ -372, -350, -328, -306, -284, -262, -240, -218, -196, -174, -152, -130, -108, -86, -64, -42, -20, -3, 7, 24, 46, 68, 90, 112, 134, 156, 178, 200, 222, 244, 266, 288, 310, 332, 354, 376}である。
データサブキャリアアドレス算出回路1051は、データサブキャリア順位(r)から算出したサブキャリア番号(k)に応じて、データシンボルc(h,q)をメモリ1052へ書き込む。ここで、c(h,q)はOFDMシンボル番号qにおけるh番目(hは0以上N
SD未満の整数)のデータシンボルを表す。データシンボルc(h,q)が含まれるデータシンボルグループd(n,q)の番号kは、式28により算出される。
データサブキャリアアドレス算出回路1051は、例えば、サブキャリアkのデータをメモリ1052のアドレスk+NDFT/2へ書き込む。
通信装置100において、インターリーバ104cは、データシンボルc(h,q)が含まれるデータシンボルグループd(k,q)に関するインターリーブアドレスidx4(n,q)を算出する。OFDM変調回路105aは、データシンボルグループd(k,q)に含まれるデータシンボルのデータ順位(idx4(n,q)×NSからidx4(n,q)×NS+NS-1)に基づきサブキャリア番号kを算出し、メモリ1052の、サブキャリア番号に応じたアドレスにデータシンボルを書き込む。
パイロット及びガードサブキャリア挿入回路1053は、ガードサブキャリア、DCサブキャリアの位置を算出し、シンボルの値を0としてメモリ1052へ書き込む。また、パイロット及びガードサブキャリア挿入回路1053は、パイロットサブキャリアのサブキャリア番号を算出し、予め定められたパイロットシンボルの値をメモリ1052へ書き込む。
アドレス生成回路1054は、IDFT回路1055がIDFTを行うために、メモリ1052からサブキャリアデータ(データサブキャリア、DCサブキャリア、パイロットサブキャリア、ガードサブキャリアを含んでも良い)を読み出すアドレスを生成する。アドレス生成回路1054は、IDFT回路1055の回路構成に応じ、昇順アドレスを生成してもよく、ビット逆順アドレスを生成しても良い。
IDFT回路1055は、アドレス生成回路1054が生成したアドレスから読み出したサブキャリアデータに対して逆離散フーリエ変換を行い、サブキャリアデータを時間領域信号へ変換する。CP付加及び窓関数回路1056は、時間領域信号にCPを付加し、窓関数を適用する。
以上のように、図18のインターリーバ104cは、図16のインターリーバ104bと比べ、メモリ1040が不要であるから、回路規模及び消費電力を削減し、処理遅延を減らすことができる。
<動作例4>
図20、図21は、インターリーバ104がインターリーブを行う別の例を示す図である。図20、図21において、コードワードあたりのシンボル数(LCW/NCBPS)がデータシンボルグループあたりのシンボル数(NS)の倍数でないために、データシンボルグループに複数のコードワードのデータシンボルが混在する場合について説明する。ここでは、インターリーバ104が図9Aの手順を用いる場合について説明するが、図9B及び図9Cを用いる場合も同様の効果が得られる。
図20は、一例として、NSDが728、LCWが624、NCBPSが4の場合に、インターリーバ104がOFDMシンボル0(q=0)のインターリーブを行う例を示す。インターリーバ104は、図5Aと同様に行毎の書き込みを行うが、図20では、書き込み順序を示す矢印を省略する。また、インターリーバ104は、図5B、図10A、図12と同様に行毎の書き込みを行う。図20において、読み出し順序を示す矢印は、読み出し位置を明記するために始めの2列分を記載するが、残りの列番号に関して省略する。
ステップS1001において、インターリーバ104は式13B及び式13Cを用いてNx及びNyの値を算出する。一例として、Nyは20、Nxは5である。
図20において、コードワードあたりのデータシンボルグループ数(LCW/NCBPS/NS)は、19.5であり、インターリーバ104が算出したNyの値(=20)と異なる。式13Bにより、Nyの値は、コードワードあたりのデータシンボルグループ数(LCW/NCBPS/NS)を切り上げ(ceiling)した値である。このため、行番号0の最終列のシンボル(d(19))には、コードワード1の最終4シンボルとコードワード2の先頭4シンボルが混在する。つまり、2次元配列の行とコードワードとの対応関係にずれが生じる。行番号0では、コードワード1と異なるシンボルが4シンボル含まれるため、ずれ量が4シンボルである。
また、行毎にずれ量が累積し、行番号1のずれ量は8シンボル、すなわち1データシンボルグループに相当する。そのため、行番号1の最終列(d(39))を除く列(d(20)からd(38))はコードワード2のデータシンボルグループを含むが、行番号1の最終列(d(39))はコードワード3のデータシンボルグループを含む。
また、行番号2のずれ量は12シンボル、すなわち1.5データシンボルグループに相当する。そのため、行番号1の最終2列(d(58),d(59))を除く列(d(40)からd(57))はコードワード3のデータシンボルグループを含み、d(58)には、コードワード3とコードワード4のデータシンボルが混在し、最終列(d(59)はコードワード4のデータシンボルグループを含む。
図21は、図20と同じパラメータ(例えば、NSD=728、LCW=624、NCBPS=4)を用いる場合に、インターリーバ104がOFDMシンボル1(q=1)のインターリーブを行う例を示す。図21において、図20と同様に、読み出し開始位置を含む2列の読み出し順序を示す矢印を記載し、書き込み及び残りの列の読み出しに関する矢印の記載を省略する。
図21の各行番号において、読み出し開始位置(d(7))を含む列のコードワードのデータシンボルグループが、読み出し開始位置を含む列より前の列に含まれる場合、そのデータシンボル数をずれ量とみなす。
例えば、図21では、行番号0においては、読み出し開始位置がd(7)であるため、コードワード6は先頭のデータシンボルグループから読み出されるが、コードワード7は、2番目のデータシンボルグループであるd(27)から読み出される。
このため、コードワード6では、読み出し開始位置を含む列(d(7))より前の列(d(6)を含む列)にCW6の4シンボル(先頭4シンボル)が含まれるため、ずれ量は4シンボルである。コードワード7では、読み出し開始位置を含む列(d(27))より前の列(d(26)を含む列)にCW7のシンボルが8シンボル含まれるため、ずれ量は8シンボルである。コードワード8では、読み出し開始位置を含む列(d(47)を含む列)より前の列(d(45)、d(46))にCW8のシンボルが4シンボルと8シンボル含まれるため、ずれ量は12シンボルである。コードワード9では、読み出し開始位置を含む列(d(67)を含む列)より前の列(d(65)、d(66))にCW9のシンボルが8シンボルと8シンボル含まれるため、ずれ量は16シンボルである。コードワード10では、読み出し開始位置を含む列(d(87)を含む列)より前の列(d(84)、d(85)、d(86))にCW10のシンボルが、4シンボル、8シンボル、8シンボル含まれるため、ずれ量は20シンボルである。
図22、図23は、インターリーバ104が図20、21のOFDMシンボル0,1のインターリーブを行う場合の、コードワードのデータシンボルの周波数領域における分布を示す図である。
インターリーバ104は、図9A、図9BのステップS1001において、列数Nyをコードワード当りのシンボル数に基づき定める。このため、コードワード1,2,3,4,6,7,8,9は、OFDMシンボルの低い周波数のサブキャリアから高い周波数のサブキャリアに広く分散されて配置される。
また、インターリーバ104は、図9AのステップS2003及び図9BのステップS2103において、読み出し開始位置をOFDMシンボルのデータサブキャリア数(NSD)及びコードワード当りのシンボル数(LCW/NCBPS)に応じて定める。このため、コードワードを複数のOFDMシンボルに分けて配置する場合、コードワード内の周波数の重複を少なくし、OFDMシンボルの低い周波数のサブキャリアから高い周波数のサブキャリアに広く分散されて配置することができる。
なお、図22及び図23において、コードワード5は、高い周波数のサブキャリアにおいて、ずれ量に応じてデータシンボルの分布の重複が発生する。しかしながら、インターリーバ104は、ずれ量がOFDMシンボル毎に累積しないように読み出し初期値を定める(例えば式14、式19、式20Aを参照)。このため、ずれ量は、OFDMシンボルのサブキャリア数に比べ小さな値とすることができ、データシンボルの分布の重複による性能劣化を低減することができる。
また、図22及び図23において、インターリーバ104は、各コードワードのデータシンボルを、ずれ量に応じた先頭部分を除き、コードワード内のデータシンボルの順序を保ってOFDMシンボルのサブキャリアに配置する。
これにより、通信装置100が図22及び図23を受信する場合、デインターリーバ116は、各コードワードのデータシンボルの順序を保ってデータを出力することが容易であるため、後段の復調回路117及びFEC復号回路118の回路構成を簡易化することができる。また、通信装置100は、コードワード毎に並列処理を行うことが容易となるため、データスループットを高めることができる。
<動作例5>
図24、図25は、インターリーバ104がインターリーブを行う別の例を示す図である。図24、図25において、図20、図21と同様に、コードワードあたりのシンボル数(LCW/NCBPS)がデータシンボルグループあたりのシンボル数(NS)の倍数でないために、データシンボルグループに複数のコードワードのデータシンボルが混在する場合について説明する。インターリーバ104が図9Aの手順を用いる場合について説明するが、図9B及び図9Cを用いる場合も同様の効果が得られる。
図24は、一例として、NSD=728、LCW=624、NCBPS=4の場合に、インターリーバ104がOFDMシンボル0(q=0)のインターリーブを行う例を示す。インターリーバ104は、図5Aと同様に行毎の書き込みを行うが、図20において書き込み順序を示す矢印を省略する。また、インターリーバ104は、図5B、図10A、図12と同様に行毎の書き込みを行う。図20において、読み出し順序を示す矢印は、読み出し位置を明記するために始めの2列分を記載するが、残りの列に関して省略する。
ステップS1001において、インターリーバ104は、式29、式30に従ってN
x及びN
yの値を算出する。
式29は、式13Bと異なり、ceiling関数の代わりにfloor関数を用いる。式30は式13Cと同様であるが、式29で算出したNyの値を用いる。一例として、Nyは19、Nxは5である。
図24において、コードワードあたりのデータシンボルグループ数(LCW/NCBPS/NS)は、19.5であり、インターリーバ104が算出したNy(=19)の値と異なる。式29により、Nyの値は、コードワードあたりのデータシンボルグループ数(LCW/NCBPS/NS)を切り捨て(floor)した値である。このため、行番号1、列番号0のシンボル(d(19))には、コードワード1の最終4シンボルとコードワード2の先頭4シンボルとが混在する。つまり、行とコードワードとの対応関係のずれが、読み出し開始位置の列において発生する。
図25は、図24と同じパラメータ(例えば、NSD=728、LCW=624、NCBPS=4)を用いる場合に、インターリーバ104がOFDMシンボル1(q=1)のインターリーブを行う例を示す。図24と同様に、読み出し開始位置を含む2列の読み出し順序を示す矢印を記載し、書き込み及び残りの列の読み出しに関する矢印の記載を省略する。
図25では、インターリーバ104は、図21と異なり、CW6のデータシンボルを1つ以上含むデータシンボルグループの位置を読み出し開始位置に定める(例えばd(10)の位置)。すなわち、インターリーバ104は、図21では、別のCW(例えばCW5)のデータシンボルを含む場合(例えば図21のd(6))、読み出し開始位置として選択しないが、図25では、別のCW(例えばCW5)のデータシンボルを含む場合であっても、CW6のデータシンボルを含む場合、読み出し開始位置として選択する。
インターリーバ104は、図25に示す読み出しを行う場合、図9BのステップS2103において、式14の代わりに式31を用いる。
インターリーバ104は、式14においてceiling関数を用いるのに比べ、式31では、floor関数を用いる。
図26、図27は、インターリーバ104が図24、25のOFDMシンボル0,1のインターリーブを行う場合の、コードワードのデータシンボルの周波数領域における分布を示す図である。
インターリーバ104は、図9A、図9BのステップS1001において、列数Nyをコードワード当りのシンボル数に基づき定める。このため、コードワード1,2,3,4,6,7,8は、OFDMシンボルの低い周波数のサブキャリアから高い周波数のサブキャリアに広く分散されて配置される。
また、インターリーバ104は、図9AのステップS2003及び図9BのステップS2103において、読み出し開始位置をOFDMシンボルのデータサブキャリア数(NSD)及びコードワード当りのシンボル数(LCW/NCBPS)に応じて定める。このため、コードワードを複数のOFDMシンボルに分けて配置する場合、コードワード内の周波数の重複を少なくし、OFDMシンボルの低い周波数のサブキャリアから高い周波数のサブキャリアに広く分散されて配置することができる。
なお、図26及び図27において、コードワード5は、一部の周波数のサブキャリアにおいて、ずれ量に応じてデータシンボルの分布の重複が発生する。しかしながら、インターリーバ104は、ずれ量がOFDMシンボル毎に累積しないように読み出し初期値を定める(例えば式31、式19、式20Aを参照)。このため、ずれ量は、OFDMシンボルのサブキャリア数に比べ小さな値とすることができ、データシンボルの分布の重複による性能劣化を低減することができる。
また、図26及び図27において、インターリーバ104は、各コードワードのデータシンボルグループを、コードワードの最終部分を除き、コードワード内のデータシンボルグループの順序を保ってOFDMシンボルのサブキャリアに配置する。
例えば、図25では、コードワード6において、コードワード6の最後部分(d(29))が、d(11)からd(28)よりも先に読みだされ、コードワード7では、コードワード7の最後部分d(48)が、d(30)からd(47)よりも先に読みだされる。このため、図27において、コードワード6は、d(11)からd(28)に該当するデータシンボルグループの順序が保たれ、コードワード7は、d(30)からd(47)に該当するデータシンボルグループの順序が保たれる。
これにより、通信装置100が図26及び図27を受信する場合、デインターリーバ116は、各コードワードのデータシンボルの順序を保ってデータを出力することが容易であるため、後段の復調回路117及びFEC復号回路118の回路構成を簡易化することができる。また、通信装置100は、コードワード毎に並列処理を行うことが容易となるため、データスループットを高めることができる。
<動作例6>
図28、図29は、インターリーバ104がインターリーブを行う別の例を示す図である。図28、図29において、図20、図21と同様に、コードワードあたりのシンボル数(LCW/NCBPS)がデータシンボルグループあたりのシンボル数(NS)の倍数でない場合について説明する。インターリーバ104が図9Aの手順を用いる場合について説明するが、図9B及び図9Cを用いる場合も同様の効果が得られる。
図28は、一例として、NSD=728、LCWが=624、NCBPS=4の場合に、インターリーバ104がOFDMシンボル0(q=0)のインターリーブを行う例を示す。図28では、図21と同様に、書き込み順序を示す矢印を省略し、読み出し順序を示す矢印は、読み出し位置を明記するために始めの2列分を記載するが、残りの列に関して省略する。
ステップS1001において、インターリーバ104は、式13B用いて、列数N
yを算出する。また、式32を用いて、パディングシンボル数N
ydを算出する。
ステップS1002において、インターリーバ104は、行方向にデータシンボルグループの書き込みを行う。なお、インターリーバ104は、最終列において、パディングシンボルの追加、行方向の書き込み、を行う。例えば、NSが8、Nydが4である場合、インターリーバ104は、最終列のデータシンボルグループ(例えばd(19)、d(39)、d(59)、d(79))に、NS-Nydデータシンボル(例えば4データシンボル)を含め、残りの4シンボルに、例えば空き、ダミーシンボル、パディングシンボルを含めても良い。
これにより、各コードワードの先頭データシンボルグループが列番号0に配置される。
図29は、図24と同じパラメータ(例えば、NSD=728、LCW=624、NCBPS=4)を用いる場合に、インターリーバ104がOFDMシンボル1(q=1)のインターリーブを行う例を示す。図28と同様に、読み出し開始位置を含む2列の読み出し順序を示す矢印を記載し、書き込み及び残りの列の読み出しに関する矢印の記載を省略する。
ステップS1002において、インターリーバ104は、行方向にデータシンボルグループの書き込みを行う。インターリーバ104は、読み出し開始位置を含む列の前の列(読み出し開始位置が先頭列であれば、最終列)のデータシンボルグループ(例えば、d(6)、d(26)、d(46)、d(66)、d(86))において、パディングシンボルの追加、行方向の書き込み、を行う。これにより、各コードワードの先頭データシンボルグループが読み出し開始位置を含む列に配置される。
図28、図29において、インターリーバ104は、式14の代わりに、式33を用いて読み出し開始位置を算出する。
なお、図28、図29において、インターリーバ104は、式33の代わりに、式18を変形した式34を用いても良い。
式34は、式18におけるLCW/NCBPS(コードワード当りのシンボル数に相当)をLCW/NCBPS+Nyd(ダミーシンボルを含めたコードワード当りのシンボル数に相当)に置き換えた式である。
OFDMシンボルに含まれるダミーシンボルの総数は(Nx-1)×Nydであるから、式33は、式14におけるNSDをNSD+(Nx-1)×Nydに置き換えた式である。
図28、図29の方法では、インターリーバ104は、図10A、図11Aの方法と同様に、各コードワードのデータシンボルをOFDMシンボルの低い周波数のサブキャリアから高い周波数のサブキャリアに広く分散して配置することができ、通信品質を向上させることができる。
また、図28、図29の方法では、インターリーバ104は、図10A、図11Aの方法と同様に、各コードワードのデータシンボルを、コードワード内の順序を保持してサブキャリアに配置する。このため、通信装置100がパケットの受信を行う場合、デインターリーバ116の後段の処理(例えば復調回路117、FEC復号回路118)の構成を簡易化し、並列処理を容易にするため、回路規模を削減し、データスループットを向上させることができる。
(実施の形態1の変形例)
図30は、通信装置100のインターリーバ104が、インターリーブ処理を行う、図9A、図9B、図9Cとは別の方法を示すフローチャートである。インターリーバ104は、図9Bの手順においてインターリーブアドレス(idx1(n))にオフセット(noffset (q))を加算して読み出しアドレスを算出したのに比べ、図30の手順においては、図4Bと同様にオフセットを加算しないインターリーブを行い、オフセット(noffset (q))の値に応じて、インターリーブ後のデータの巡回シフトを行う。
図9Bのようにアドレス算出時にオフセットを加算することは、データをオフセットの値に応じて巡回シフトすることに相当する。そのため、通信装置100のインターリーバ104は、図9A、図9B、図9C、図30の何れの方法を用いても、出力されるデータシンボルの順序は同様である。
図30のステップS1001において、インターリーバ104は、図9BのステップS1001と同様に、式9及び式12を用いて、インターリーバの列数(N
y)及び行数(N
x)を算出する。なお、データシンボルグループのサイズ(Ns)が1である場合、インターリーバ104は、式9及び式12の代わりに式35及び式36を用いてもよい。
図30のステップS1101において、インターリーバ104は、図4BのステップS1101と同様に、式13Aを用いて、ブロックインターリーブアドレスidx0を算出する。
インターリーバ104は、式13Aの代わりに式37を用いてもよい。
図30のステップS1102において、インターリーバ104は、図4BのステップS1102と同様に、ブロックインターリーブアドレスidx0から、入力データシンボル数(NSD)以上の値を除去し、インターリーブアドレスidx1(0),idx1(1),...,idx1(NSD-1)を算出する。
図30のステップS1103において、インターリーバ104は、図4BのステップS1103と同様に、入力データd(k)を昇順アドレスを用いてメモリに書き込む。
図30のステップS1104において、インターリーバ104は、図4BのステップS1104と同様に、入力データd(k)をidx1(n)を用いてメモリから読み出す。
図30のステップS3101において、インターリーバ104は、図9BのステップS2103と同様に、式14を用いてkoffset (q)の値を算出し、式19を用いてNLの値を算出し、式20Aを用いてnoffset (q)の値をシフト量(n_shift)として算出する。
なお、インターリーバ104は、データシンボルグループのサイズ(Ns)が1である場合、式19の代わりに式38を用いてN
Lの値を算出しても良い。
また、インターリーバ104は、データシンボルグループのサイズ(Ns)が1である場合、式20Aの代わりに式39を用いてn
offset (q)の値を算出しても良い。
また、インターリーバ104は、式20Aの代わりに式40を用いてn
offset (q)の値を算出しても良い。
式40において、idx
-1(k)はidx(k)の逆関数を表し、式41を満たす。
また、インターリーバ104は、データシンボルグループのサイズ(Ns)が1である場合、式40の代わりに式42を用いてn
offset (q)の値を算出しても良い。
式40及び式42の意味を、図10Aを参照して説明する。floor(koffset (q)/NS)は、読み出し開始位置の列番号(例えば14)を表す。行番号0(floor(koffset (q)/NS))列のデータシンボルグループは、ステップS1103において、floor(koffset (q)/NS)番目に書き込まれるデータシンボルグループd(floor(koffset (q)/NS))である。インターリーバ104は、データシンボルd(k)をidx-1(k)番目に読み出すので、データシンボルグループd(floor(koffset (q)/NS))はidx-1(floor(koffset (q)/NS))番目に読み出される。つまり、式40及び式42が得られる。
図30のステップS3102において、インターリーバ104は、ステップS1104において読み出したデータシンボルグループの配列を、n_shift(=noffset (q))データシンボルグループ分左方向(インデックスが0の方向)へ巡回シフトする。
図31は、ステップS3102における巡回シフトの一例を示す図である。巡回シフト前のデータシンボル系列は、例えば図5Bにおける読み出し結果と同様に、d(0)(つまりd(idx(0)))が先頭シンボルである。インターリーバ104が巡回シフトを行うと、読み出し開始位置に相当するシンボル(例えばd(14)、つまりd(idx(noffset (q))))がデータシンボル系列の先頭に移動する。
noffset (q)の値は、図10A、図11Aにおける読み出し開始位置に相当する。図30のステップS1001からステップS1104においては、図4Bの手順と同様に読み出し開始位置の調整(図9Bのステップ2104に相当)を行わない。この場合、図10A、図11Aにおける読み出し開始位置に相当するデータシンボルグループは、ステップS1104においてnoffset (q)+1番目に読み出される。
インターリーバ104は、ステップS3102において、noffset (q)シンボルの巡回シフトを行うことにより、読み出し開始位置に相当するデータシンボルグループがインターリーバの出力の先頭に位置するようにでき、図9Bの手順と同様のインターリーブ結果を得ることができる。
以下、図30の手順を、数式により説明する。OFDMシンボル番号q(qは非負の整数)におけるインターリーバ104への入力データシンボル系列(d
in (q))を、式43により表す。
ステップS1104における出力データシンボル系列(d
interleave (q))は、式44により求める。
式43において、idx(n)は、式45により求める。
ステップS3102における出力データシンボル系列(d
out (q))は、式46により求める。
式46において、mod(x)は、x mod NSDを表す。
式46において、1行目は、図30のステップS3102で説明したとおり、ステップS1104における出力データシンボル系列(dinterleave (q))をnoffset (q)シンボルシフトした場合に相当する。式46において、2行目は、1行目に式42及び式44を代入することで得られる。また、式46において、3行目は、図9Bの手順を用いた場合、つまりアドレス(idx)算出の際にオフセットを加算する場合に相当する。
インターリーバ104は、式46の1行目、2行目、3行目の何れを用いて出力データ系列を生成しても良い。
なお、インターリーバ104は、図30のステップS3102において、データシンボル系列を巡回シフトする代わりに、データシンボル系列の順序を反転しても良い。式47に、出力データシンボル系列(d
out (q))の算出式の一例を示す。
図32は、インターリーバ104が式47を用いてインターリーブを行った場合のコードワード毎のデータシンボルの周波数領域における分布を表す図である。式47を用いることにより、図7Bに比べデータシンボルの分布が左右反転され、コードワード5のデータシンボルの分布が高周波数側に配置される。このため、前のOFDMシンボル(OFDMシンボル0)におけるコードワード5のデータシンボルの分布(図6B)との重複が少なくなり、マルチパス環境における通信品質を向上させることができる。
以上のように、実施の形態1の変形例では、インターリーバ104は、メモリから読み出したデータに巡回シフトを行い、コードワードの先頭のデータシンボルグループを先頭のサブキャリアに配置する。このため、複数のOFDMシンボルに渡って配置されるコードワードのデータシンボルの周波数分布の重複が少なくなり、マルチパス環境における通信品質を向上させることができる。
(実施の形態2)
図33は、実施の形態2の通信装置100aの構成を示すブロック図である。実施の形態1の通信装置100と比べ、復調回路117aとデインターリーバ116aとの順序が異なる。すなわち、通信装置100aでは、等化回路115の出力が復調回路117aに接続され、復調回路117aの出力がデインターリーバ116aに接続され、デインターリーバ116aの出力がFEC復号回路118へ出力される。
図33のデインターリーバ116aは、例えば図4A、図4B、図4C、図9A、図9B、図9C、図30の手順によりインターリーブされたデータをデインターリーブする回路である。
復調回路117aは、入力されたデータシンボル毎に、NCBPS個の尤度情報(例えばLLR、Log Likelihood Ratio)を出力する。例えば、復調回路117aは、データシンボルd(n)から、NCBPS個のLLRの系列e(n×NCBPS),e(n×NCBPS+1),...,e(n×NCBPS+NCBPS-1)を生成する。
デインターリーバ116aは、NCBPS個のLLRを1個のデータシンボルとみなして、デインターリーブを行う。例えば、NSD×NCBPS個のLLRの系列e(idx(0+noffset (q))),e(idx(0+noffset (q))+1),...,e(idx(0+noffset (q))+NCBPS-1),e(idx(1+noffset (q))),e(idx(1+noffset (q))+1),...,e(idx(1+noffset (q))+NCBPS-1),...,e(idx(NSD-1+noffset (q))),e(idx(NSD-1+noffset (q))+1),...,e(idx(NSD-1+noffset (q))+NCBPS-1)を並び換え、e(0),e(1),...,e(NSD×NCBPS-1)を出力する。なお、ここでは、modの記載を省略し、idx((x+k)mod NSD)を単に「idx(x+k)」と記載する。
また、idx(k)の逆関数idx-1(k)を用いて記載すると、デインターリーバ116aは、LLRの系列e(0),e(1),...,e(i×NCBPS+j),...,e(NSD×NCBPS-1)を並び換え、i×NCBPS+j番目のLLR(e(i×NCBPS+j))を、idx-1(mod(i+koffset (q),NSD))×NCBPS+j番目の位置へ移動して出力する。
図34は、デインターリーバ116aの回路構成を示す一例を示す図である。デインターリーバ116aは、Nx,Ny算出回路1161、OFDMシンボル数カウンタ1162、シフト量算出回路1163、行カウンタ1164、列カウンタ1165、デマルチプレクサ1166を含む。
Nx,Ny算出回路1161は、式9及び式12、式13B及び式13C、式35及び式36を用いて、2次元配列の行数Nxと列数Nyを算出し、シフト量算出回路1163へ入力する(図30のステップS1001に相当)。
OFDMシンボル数カウンタ1162は、復調回路117aから入力されたLLR数に応じ、OFDMシンボル番号(q)の値を決定し、シフト量算出回路1163へ入力する。
シフト量算出回路1163は、式19及び式38を用いてNLの値を算出し、式20A、式40、式42を用いてシフト量(n_shift=noffset (q))の値を算出する(図30のステップS3101に相当)。
行カウンタ1164及び列カウンタ1165は、復調回路117aから入力されるLLRに対応するインターリーバ行列上の行番号及び列番号を算出する。例えば、図10Aは、インターリーバの出力順序を表し、デインターリーバの入力順序を表す。例えば、時刻0にd(14)がデインターリーバ116aに入力される場合、時刻0の行番号は0、列番号は14である。また、例えば、時刻1にd(35)がデインターリーバ116aに入力される場合、時刻1の行番号は1、列番号は14である。
図35は、行カウンタ1164及び列カウンタ1165の動作の一例を示すタイミングチャートである。一例として、OFDMシンボルカウンタの値(q)が1である場合について説明する。
時刻0,1,2,3において、復調回路117aから入力されるデータシンボルグループがそれぞれd(14),d(35),d(56),d(77)である場合、図10Aを参照し、列番号は14である。また、行番号は、時刻0,1,2,3において、それぞれ0,1,2,3である。
行カウンタ1164は、復調回路117aから入力されるデータシンボルグループに対応するコードワード番号(CW番号)を出力する。例えば、qが1の場合のOFDMシンボルは、コードワード5,6,7,8,9を含むため、それぞれに対しCW番号0,1,2,3,4を対応付けてもよい。例えば、図7Aで説明したように、データシンボルグループd(14)は、コードワード6のデータであるから、時刻0において、行カウンタ1164は、CW番号1を出力する。
列カウンタの値がfloor(koffset (q)/NS)を超える場合、CW番号は行カウンタの値に1を加算した値である。また、列カウンタの値がfloor(koffset (q)/NS)以下の場合、CW番号は行カウンタの値と等しい。
このように、デインターリーバ116aの行カウンタ1164は、行カウンタの値、列カウンタの値、及びkoffset (q)の値から、CW番号を容易に特定することができる。これは、通信装置100のインターリーバ104が、列数(Ny)をコードワードサイズ(LCW)に基づき定め、インターリーブアドレスにオフセット(noffset (q))を加算してインターリーブを行うことにより、コードワード6の先頭データシンボルグループがサブキャリアの先頭に配置されるようにしたことにより得られる効果である。
また、列カウンタ1165は、復調回路117aから入力されるデータシンボルグループに対応するコードワード内順位(CW内順位)を算出する。例えば、データシンボルグループd(14)は、コードワード6内の先頭のデータであるため、CW内順位は0である。また、例えば、データシンボルグループd(15)は、コードワード6内においてd(14)の次のデータグループであるため、CW内順位は1である。
列カウンタ1165は、式48によりCW内順位(n
CW)を算出しても良い。
このように、デインターリーバ116aの列カウンタ1165は、列カウンタの値及びkoffset (q)の値から、CW内順位を容易に特定することができる。これは、通信装置100のインターリーバ104が、列数(Ny)をコードワードサイズ(LCW)に基づき定め、インターリーブアドレスにオフセット(noffset (q))を加算してインターリーブを行うことにより、コードワード6の先頭データシンボルグループがサブキャリアの先頭に配置されるようにしたことにより得られる効果である。
デマルチプレクサ1166は、行カウンタ1164が算出したCW番号に基づき出力ポート0から出力ポート5のいずれかを選択し、復調回路117aから入力されるLLRを選択した出力ポートに出力する。例えば、データシンボルグループd(14)のCW番号は1(コードワード6に相当)であるから、出力ポート1に出力する。
FEC復号回路118は、出力ポート0から出力ポート5の何れのポートから出力されたデータであるか、及び、列カウンタ1165が出力するCW内順位に基づき、デインターリーバ116aから出力されたLLRをLDPC復号用バッファメモリ(図示しない)に格納する。
このように、デインターリーバ116aは、デインターリーブ用メモリを備えることなく、デインターリーブを行うことができる。
なお、デインターリーバ116aは、デマルチプレクサ1166を備える代わりに、CW番号をFEC復号回路118に出力しても良い。FEC復号回路118は、デインターリーバ116a又は復調回路117aから入力されるLLRを、CW番号及びCW内順位の情報を用いて、LDPC復号用バッファメモリ(図示しない)に格納してもよい。
以上のように、デインターリーバ116aは、例えば図4A、図4B、図4C、図9A、図9B、図9C、図30の手順によりインターリーブされたデータに対応する、CW番号及びCW内順位を算出してFEC復号回路に出力する。このため、通信装置100aは、簡易な構成でデインターリーブを行うことができ、処理遅延を削減し、回路規模及び消費電力を削減することができる。
実施の形態のまとめ
本開示の一態様に係る送信装置は、第1から第Nのコードワードをインターリーブするインターリーバ回路と、前記インターリーブされた第1から第NのコードワードをOFDM信号に変換するOFDM変調回路と、前記OFDM信号を送信する送信回路と、を具備し、前記第1のコードワードに含まれるデータシンボル数は、前記第2のコードワードに含まれるデータシンボル数よりも少なく、前記インターリーバ回路は、前記第1のコードワードから前記第Nのコードワードまで昇順に書き込み、前記第2のコードワードから読み出しを開始する。
本開示の一態様に係る送信装置において、前記インターリーバ回路は、Nx×Nyのメモリサイズを有し、Nyは、前記第2のコードワードに含まれるデータシンボル数に等しい。
本開示の一態様に係る送信装置において、前記インターリーバ回路は、インターリーブサイズに応じて生成したインターリーブアドレスを、前記第1のコードワードに含まれるデータシンボル数に応じてシフトしたアドレスを用いて、前記第2のコードワードを読み出す。
本開示の一態様に係る受信装置は、送信装置においてインターリーブされた第1から第Nのコードワードを含むOFDM信号を受信する受信回路と、前記OFDM信号から、前記インターリーブされた第1から第Nのコードワードを抽出するDFT回路と、前記インターリーブされた第1から第Nのコードワードをデインターリーブするデインターリーバ回路と、を具備し、前記第1のコードワードに含まれるデータシンボル数は、前記第2のコードワードに含まれるデータシンボル数よりも少なく、前記インターリーブされた第1から第Nのコードワードは、前記送信装置のインターリーバ回路において、前記第1のコードワードから前記第Nのコードワードまで昇順に書き込まれ、前記第2のコードワードから読み出しが開始されて生成される。
本開示の一態様に係る受信装置において、前記デインターリーバは、Nx×Nyのメモリサイズを有し、Nyは、前記第2のコードワードに含まれるデータシンボル数に等しい。
本開示の一態様に係る受信装置において、前記インターリーバ回路は、インターリーブサイズに応じて生成したインターリーブアドレスを、前記第1のコードワードに含まれるデータシンボル数に応じてシフトしたアドレスを用いて、前記第2のコードワードを読み出す。
本開示の一態様に係る送信方法は、第1から第Nのコードワードをインターリーブし、前記インターリーブされた第1から第NのコードワードをOFDM信号に変換し、前記OFDM信号を送信し、前記第1のコードワードに含まれるデータシンボル数は、前記第2のコードワードに含まれるデータシンボル数よりも少なく、前記第1のコードワードから前記第Nのコードワードまで昇順に書き込み、前記第2のコードワードから読み出しが開始される。
本開示の一態様に係る受信方法は、送信装置においてインターリーブされた第1から第Nのコードワードを含むOFDM信号を受信し、前記OFDM信号から、前記インターリーブされた第1から第Nのコードワードを抽出し、前記インターリーブされた第1から第Nのコードワードをデインターリーブし、前記第1のコードワードに含まれるデータシンボル数は、前記第2のコードワードに含まれるデータシンボル数よりも少なく、前記インターリーブされた第1から第Nのコードワードは、前記送信装置のインターリーバ回路において、前記第1のコードワードから前記第Nのコードワードまで昇順に書き込まれ、前記第2のコードワードから読み出しが開始されて生成される。
なお、本開示はソフトウェア、ハードウェア、又は、ハードウェアと連携したソフトウェアで実現することが可能である。上記実施の形態の説明に用いた各機能ブロックは、部分的に又は全体的に、集積回路であるLSIとして実現され、上記実施の形態で説明した各プロセスは、部分的に又は全体的に、一つのLSI又はLSIの組み合わせによって制御されてもよい。LSIは個々のチップから構成されてもよいし、機能ブロックの一部又は全てを含むように一つのチップから構成されてもよい。LSIはデータの入力と出力を備えてもよい。LSIは、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。集積回路化の手法はLSIに限るものではなく、専用回路、汎用プロセッサ又は専用プロセッサで実現してもよい。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。本開示は、デジタル処理又はアナログ処理として実現されてもよい。さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。