以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
以下に説明する符号化装置では、インターリーブによりデータ位置が並べ替えられた後のデータ列に対して、逆方向に畳み込み符号化を行なう符号化器を用いる。このような逆方向に畳み込み符号化を行なう符号化器と順方向に畳み込み符号化を行なう符号化器とを用いれば、先頭からの順方向の畳み込み符号化と最後尾からの逆方向の畳み込み符号化とを並行して実行し、符号化時間を短縮することができる。この場合、順方向にのみ畳み込み符号化を実行する場合と比較して、少なくとも符号化時間が1/2に短縮される。また後述するように、インターリーブが終了する前に先頭からの順方向の畳み込み符号化と最後尾からの逆方向の畳み込み符号化とを前倒しで開始するようにすれば、更に符号化処理の完了時間を早めることができる。
図1は、畳み込み符号化を行なう符号化器の一般化した構成を示す図である。D1乃至Dnは、クロックに同期して1ビットの入力を取り込み保持するレジスタであり、縦続接続されることによりシフトレジスタを構成する。レジスタD1乃至Dnの各々は、1クロックの遅延素子として機能する。AND回路10は、一方の入力であるパラメータβと他方の入力との論理和を演算する。複数のXOR回路11は、AND回路10の出力間の排他的論理和を演算することにより、出力データOUTを生成する。この符号化器のフィードフォワード多項式は、
g1(D) = β01 + β1D + β2D2 +・・・+βn Dn
となる。またAND回路12は、一方の入力であるパラメータαと他方の入力との論理和を演算する。複数のXOR回路13は、AND回路12の出力間の排他的論理和を演算することにより、フィードバックデータを生成する。このフィードバックデータを計算するフィードバック多項式は、
g0(D) = α01 + α1D + α2D2 +・・・+αn Dn
となる。なおここで、n次の再帰型畳み込み符号化器の定義として、n次の項のフィードバック計数であるαnは1である。
図1に示す再帰的畳み込み符号化を行なう符号化器は、入力データ列に対して先頭から順方向に畳み込み符号化を行ない、符号化データ列を生成する。この符号化器が生成する符号化データ列と同一のデータ列を生成する符号化器であって、上記入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器を、以下のようにして設計する。逆向きの符号化を実現するためには、時刻t+1のレジスタの値から時刻tのレジスタの値が再現できる回路を求めればよい。
まず図1に示す順方向のシフトレジスタのレジスタD2乃至Dnのうち、任意のレジスタDi+1(i=1〜n−1)の時刻t+1の値Di+1(t+1)は、以下の式(1)で表わされる。
ここでD
i(t)は、レジスタDiの時刻tの値である。この式は、シフトレジスタ中の着目レジスタの値が、1つ前に接続されるレジスタの1時刻前の値に等しいことを示している。またレジスタからのフィードバックデータと時刻tの入力データIN(t)との排他的論理和が入力されるシフトレジスタD1の時刻t+1の値D
1(t+1)は、以下の式(2)で表わされる。
式(1)から、逆方向に畳み込み符号化を行なう符号化器においても、レジスタD1乃至Dn−1のうちの任意のレジスタDi(i=1〜n−1)の時刻tの値Di(t)は、時刻t+1のレジスタDi+1の値と等しければよいことが分かる。ここで、逆方向の畳み込み符号化であるから、データに着目すると、同期クロックが1つ進行すると時刻が1つ前に戻ることになる。従って、レジスタD1乃至Dnでシフトレジスタを構成し、同期クロックと共にDnからD1に向かってデータが逆方向にシフトする構成とすればよい。
更に、レジスタDnの値については、以下のように計算できる。前述のようにαnは1であり、上記式(2)に式(1)を代入すると、以下の式が得られる。
1ビットの排他的論理和演算は+も−も同一演算となることを考慮して、上式を移項によりDn(t)を表わす式に変形すると、以下の式(3)が得られる。
図2は、逆方向に畳み込み符号化を行なう符号化器の一般化した構成を示す図である。図2に示す符号化器は、上記の式(1)に相当する逆方向のシフトレジスタと、上記の式(3)に相当する演算を行なうことにより、各レジスタD1乃至Dnの値を決定する構成となっている。AND回路17は、一方の入力であるパラメータαと他方の入力との論理和を演算する。複数のXOR回路18は、AND回路17の出力間の排他的論理和を演算することにより、式(3)に相当する演算を実行する。なおレジスタD1の出力を一方の入力として受け取るAND回路17の他方の入力は、式(3)の右辺の最後の項に対応して係数値1である。
図2において、AND回路15は、一方の入力であるパラメータγと他方の入力との論理和を演算する。複数のXOR回路16は、AND回路15の出力間の排他的論理和を演算することにより、出力データOUTを生成する。この出力データOUTを計算する多項式は、以下のようにして計算できる。図1の符号化器における出力OUTの値は、
OUT=β0(α01+α1D+α2D2+・・・+αnDn)+β1D+β2D2+・・・+βnDn (4)
である。上式から、Di(i=1〜n)の項の係数値は、β0αi + βiと求められる。従って、図2に示されるパラメータγiは以下の値となる。
γ0=β0α0
γi=β0αi + βi (i=1〜n) (5)
以上のようにして、図2に示す逆方向の畳み込み符号化器の一般化した構成において、各パラメータの値が求められる。図2に示す符号化器は、図1の符号化器が生成する符号化データ列と同一のデータ列を生成する符号化器であって、入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器である。但し、図2の逆方向符号化器の初期内部状態(レジスタD1乃至Dnの初期値)をどのような値にしておくべきなのか、不明である。そこで初期内部状態の全ての組み合わせについて逆方向の畳み込み符号化を別個に行い、複数の符号化データ列を各々別個に生成する。そして、全ての入力データ列の符号化を終了した段階で、複数の場合の各々について内部状態をチェックする。この終了時の内部状態が全てゼロ(レジスタD1乃至Dnの値が全て0)となるような逆方向符号化演算の結果を、順方向符号化演算と同一の符号化データ列を生成するものとして選択すればよい。何故なら、順方向符号化演算は、初期内部状態が全てゼロの状態から開始されるからである。なお、順方向符号化と逆方向符号化とを例えば全データ列の前半分と後半分とのそれぞれについて実行する場合、中間点において、順方向符号化演算の内部状態と一致する内部状態となる逆方向符号化演算結果を選択すればよい。また、順方向符号化と逆方向符号化とが出会う位置は、中間点に限らず、例えば前段のインターリーブの並べ替えにより最後に位置が決定されるデータの位置であってもよい。
図3は、順方向の畳み込み符号化器の構成の一例を示す図である。図3に示す符号化器において、D1乃至D3は、クロックに同期して1ビットの入力を取り込み保持するレジスタであり、縦続接続されることによりシフトレジスタを構成する。レジスタD1乃至D3の各々は、1クロックの遅延素子として機能する。レジスタ20には入力データ列が格納されており、クロックに同期して、データ列の先頭から順方向に順番にデータが供給される。複数のXOR回路21は、フィードバック経路及びフィードフォワード経路において排他的論理和を演算する。符号化器のフィードフォワード多項式は、
g1(D) = 1 + D + D3
となる。またフィードバックデータを計算するフィードバック多項式は、
g0(D) = 1 + D2 + D3
となる。この場合、パラメータα0,α2,α3が1であり、それ以外のαは0である。この符号化器における出力OUTの値は以下の多項式により求められる。
OUT= 1 + D2 + D3 + D + D3
= 1 + D + D2
上式は、前述の式(4)に対応する。この式からパラメータγ0,γ1,γ2が1であり、それ以外のγは0であることが分かる。
図4は、図3の順方向の符号化器に対する逆方向の符号化器の構成の一例を示す図である。図2に示す逆方向の符号化器の一般化された構成において、上記のようにして求めたα及びγのパラメータ値を用いることにより、図3の構成が得られる。図4において、図3に示される構成要素に対応する構成要素は同一の番号で参照される。レジスタD1乃至D3でシフトレジスタを構成し、同期クロックと共にD3からD1に向かってデータが逆方向にシフトする構成となっている。レジスタ20には入力データ列が格納されており、クロックに同期して、データ列の最後尾から逆方向に順番にデータが供給される。複数のXOR回路21は排他的論理和を演算する。図4に示す符号化器は、図3に示す符号化器が生成する符号化データ列OUTと同一のデータ列を生成する符号化器であって、上記入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器となる。
図5は、順方向の畳み込み符号化器の構成の別の一例を示す図である。図5において、図3に示す構成要素に対応する構成要素は同一の番号で参照される。D1乃至D4は、クロックに同期して1ビットの入力を取り込み保持するレジスタであり、縦続接続されることによりシフトレジスタを構成する。クロックに同期して、レジスタ20のデータ列の先頭から順方向に順番にデータが供給される。この符号化器のフィードフォワード多項式は、
g1(D) = 1 + D + D4
となる。またフィードバックデータを計算するフィードバック多項式は、
g0(D) = 1 + D2 + D3 + D4
となる。この場合、パラメータα0,α2,α3,α4が1であり、それ以外のαは0である。この符号化器における出力OUTの値は以下の多項式により求められる。
OUT= 1 + D2 + D3 + D4 + D + D4
= 1 + D + D2 + D3
上式は、前述の式(4)に対応する。この式からパラメータγ0,γ1,γ2,γ3が1であり、それ以外のγは0であることが分かる。
図6は、図5の順方向の符号化器に対する逆方向の符号化器の構成の一例を示す図である。図2に示す逆方向の符号化器の一般化された構成において、上記のようにして求めたα及びγのパラメータ値を用いることにより、図6の構成が得られる。図6において、図5に示される構成要素に対応する構成要素は同一の番号で参照される。レジスタD1乃至D4でシフトレジスタを構成し、同期クロックと共にD4からD1に向かってデータが逆方向にシフトする構成となっている。クロックに同期して、レジスタ20のデータ列の最後尾から逆方向に順番にデータが供給される。複数のXOR回路21は排他的論理和を演算する。図6に示す符号化器は、図5に示す符号化器が生成する符号化データ列OUTと同一のデータ列を生成する符号化器であって、上記入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器となる。
図7は、順方向の畳み込み符号化器の構成の別の一例を示す図である。図7において、図3に示す構成要素に対応する構成要素は同一の番号で参照される。D1乃至D5は、クロックに同期して1ビットの入力を取り込み保持するレジスタであり、縦続接続されることによりシフトレジスタを構成する。クロックに同期して、レジスタ20のデータ列の先頭から順方向に順番にデータが供給される。この符号化器のフィードフォワード多項式は、
g1(D) = 1 + D + D5
となる。またフィードバックデータを計算するフィードバック多項式は、
g0(D) = 1 + D3 + D5
となる。この場合、パラメータα0,α3,α5が1であり、それ以外のαは0である。この符号化器における出力OUTの値は以下の多項式により求められる。
OUT= 1 + D3 + D5 + D + D5
= 1 + D + D3
上式は、前述の式(4)に対応する。この式からパラメータγ0,γ1,γ3が1であり、それ以外のγは0であることが分かる。
図8は、図7の順方向の符号化器に対する逆方向の符号化器の構成の一例を示す図である。図2に示す逆方向の符号化器の一般化された構成において、上記のようにして求めたα及びγのパラメータ値を用いることにより、図8の構成が得られる。図8において、図7に示される構成要素に対応する構成要素は同一の番号で参照される。レジスタD1乃至D5でシフトレジスタを構成し、同期クロックと共にD5からD1に向かってデータが逆方向にシフトする構成となっている。クロックに同期して、レジスタ20のデータ列の最後尾から逆方向に順番にデータが供給される。複数のXOR回路21は排他的論理和を演算する。図8に示す符号化器は、図7に示す符号化器が生成する符号化データ列OUTと同一のデータ列を生成する符号化器であって、上記入力データ列に対して最後尾から逆方向に畳み込み符号化を行なう符号化器となる。
図9は、符号化装置の構成の一例を示す図である。図9に示す符号化装置30は、CPU31、メモリ32、動作設定用レジスタ33、CRC処理回路34、コードブロック分割回路35、符号化器36乃至38、サブブロックRAM39乃至41、アドレス生成部42、及び結果選択部43を含む。符号化装置30は更に、アドレス制御部44及びインターリーブRAM(ILRAM)45を含む。符号化装置30は、例えば携帯電話機器に内蔵されるものであってよい。以下の説明においては、符号化装置30が携帯電話機器に内蔵され、通信のための送信データを符号化する場合について説明する。但し、符号化装置30の応用分野は通信分野に限られるものではない。
符号化器36及び38は、例えば3GPP(3rd Generation Partnership Project)の規格に定められる符号化器であり、図3に示す構成を有してよい。符号化器37は、8つ並列に設けられており、順方向の畳み込み符号化を行なう符号化器36及び38に対して逆方向の畳み込み符号化を行なう符号化器である。8つの符号化器37の各々は、図4に示す構成を有してよい。
符号化装置30が携帯電話機器に内蔵されている場合、携帯電話機器が基地局と通信して、種々の通信パラメータを決定する。この決定された通信パラメータが、CPU31により動作設定用レジスタ33に格納される。この通信パラメータには、CRC処理のサイズやコードブロック分割のサイズ等が含まれる。まず送信データである符号化対象データが、CPU31からメモリ32に格納される。このメモリ32から読み出された符号化対象データに対して、CRC処理回路34が、CRC(Cyclic Redundancy Check)演算により誤り検出ビットを付加する。この演算は通常ビット単位の処理であり1ビットずつ処理される。CRC処理後の符号化対象データは、次に、コードブロック分割回路35に供給される。コードブロック分割回路35は、コードブロック分割を実行し、ターボ符号化の単位に合わせて符号化対象データを分割する。このコードブロック分割されたブロックの大きさは、例えば、最小で40ビット、最大で6144ビットである。コードブロック分割処理は、符号化対象データの先頭から順番に実行されるので、CRC処理の終了したビットから順次処理することができる。
図9に示す符号化処理はターボ符号化であり、符号化対象データそのものと、符号化対象データを符号化した符号化データと、符号化対象データをインターリーブした後に符号化した符号化データとを生成する。まずコードブロック分割回路35から出力される符号化対象データのブロックは、そのままサブブロックRAM39に供給され格納される。またコードブロック分割回路35から出力される符号化対象データのブロックは、符号化器36に供給され、ここでの符号化により生成された符号化データがサブブロックRAM40に格納される。この符号化処理は、コードブロック分割回路35から出力されるデータブロック中のビットを順次処理することにより実行できる。
更にコードブロック分割回路35から出力される符号化対象データのブロックはインターリーブRAM45に格納される。この書き込み動作の際に、アドレス制御部44が書き込みアドレスを制御することにより、符号化対象データのブロックを構成するデータ列中のデータ順序が並び替えられ、並び替え後のデータ列がインターリーブRAM45の連続するアドレスに格納される。これによりインターリーブ処理が実現される。インターリーブRAM45に格納されるデータブロックの並び替え後のデータ列は、先頭から順方向に順番に符号化器38に供給され、符号化器38が順方向の畳み込み符号化を実行する。またインターリーブRAM45に格納されるデータブロックの並び替え後のデータ列は、最後尾から逆方向に順番に複数の符号化器37に供給され、複数の符号化器37が逆方向の畳み込み符号化を並列に実行する。この際、複数の符号化器37の初期状態は異なる8つの組み合わせ(図4のD1乃至D3の初期値の異なる組み合わせ)にそれぞれ設定されている。
符号化器38による順方向の符号化及び符号化器37による逆方向の符号化は、インターリーブ処理が終了した後(即ちデータブロック中の全てのデータが書き込まれ終わった後)に開始されてよい。この場合、順方向の符号化及び逆方向の符号化は、例えば、それぞれ並び替え後のデータ列の前半分と後半分とを処理して符号化データ列を出力してよい。この際、インターリーブRAM45からのデータ読み出しを2ポートにして、前半分のデータと後半分のデータとを同時に読み出すことにより、順方向の符号化及び逆方向の符号化を同時に並行して実行するようにしてよい。或いは、インターリーブRAM45を2つのRAMで構成し、一方のRAMにデータ列の前半分のデータを格納し、他方のRAMにデータ列の後半分のデータを格納すれば、前半分のデータと後半分のデータとを同時に読み出すことができる。
或いは、符号化器38による順方向の符号化及び符号化器37による逆方向の符号化は、インターリーブ処理の終了前に前倒しで実行を開始してよい。即ち、順方向の符号化器38は、インターリーブRAM45中のデータ列の先頭データが並べ替えにより定まると、インターリーブ処理の終了を待つことなく畳み込み符号化を前倒しで開始してよい。また逆方向の符号化器37は、インターリーブRAM45中のデータ列の最後尾データが並べ替えにより定まると、インターリーブ処理の終了を待つことなく畳み込み符号化を前倒しで開始してよい。この際、インターリーブRAM45からのデータ読み出しを2ポートにして、順方向の符号化及び逆方向の符号化を同時に並行して実行するようにしてよい。或いは、インターリーブRAM45からのデータ読み出しを1ポートにして、各時刻において順方向の符号化及び逆方向の符号化の何れか一方を適宜選択して実行するようにしてもよい。
図10は、インターリーブ処理の終了を待つことなく畳み込み符号化を前倒しで開始する場合のアドレス制御部44の構成の一例を示す図である。図10に示すインターリーブRAM45以外の部分が、アドレス制御部44の構成である。アドレス制御部44は、インターリーブテーブル50、ライトアドレス制御部51、履歴レジスタ52及び53、リード可能アドレスカウンタ54及び55、セレクタ56乃至58、及びアドレス比較部59を含む。インターリーブテーブル50には、動作設定用レジスタ33に設定されたブロックサイズ等の情報に応じたテーブルが格納されている。このテーブルには、各入力データ番号に対する並び替え後の書き込みアドレスが格納されていてよい。例えば、ブロックサイズが40の場合、テーブルには40個のエントリがあり、各エントリが、入力データ番号とそれに対応する並び替え後の書き込みアドレスとからなるデータ対であってよい。例えば、1〜40番のうちの12番目のデータを0〜39のアドレスのうち28に格納するという場合、12と28とが対応するデータ対として格納されていてよい。ライトアドレス制御部51は、インターリーブテーブル50から各データ番号に対応する書き込みアドレスを受け取り、インターリーブRAM45中のその書き込みアドレスに、コードブロック分割回路35から供給されるデータを書き込む。これによりインターリーブ処理が実現される。
履歴レジスタ52は、データ列の前半分のデータ(ブロックサイズが40の場合は20個のデータ)の各々について、インターリーブRAM45に書き込みが終了したか否かを記録するレジスタである。履歴レジスタ52には20ビットのデータが格納されており、インターリーブRAM45に書き込みが終了したデータのアドレス位置に対応するビット位置のビット値が“0”から“1”になる。履歴レジスタ53は、並び替え後のデータ列の後半分のデータ(ブロックサイズが40の場合は20個のデータ)の各々について、インターリーブRAM45に書き込みが終了したか否かを記録するレジスタである。履歴レジスタ53には20ビットのデータが格納されており、インターリーブRAM45に書き込みが終了したデータのアドレス位置に対応するビット位置のビット値が“0”から“1”になる。リード可能アドレスカウンタ54は、並び替え後のデータ列の前半分のデータを先頭から順番に読み出すためのリードアドレスを、1つずつ増加させながら出力する。リード可能アドレスカウンタ55は、並び替え後のデータ列の後半分のデータを最後尾から順番に読み出すためのリードアドレスを、1つずつ減少させながら出力する。
セレクタ57は、リード可能アドレスカウンタ54が示すインターリーブRAM45中の読出しアドレスに対応する履歴レジスタ52の出力中のビット位置のビット値を選択する。セレクタ57の出力は、リード可能アドレスカウンタ54が示すインターリーブRAM45中の読出しアドレスにデータが書き込まれると“0”から“1”になる。セレクタ58は、リード可能アドレスカウンタ55が示すインターリーブRAM45中の読出しアドレスに対応する履歴レジスタ53の出力中のビット位置のビット値を選択する。セレクタ58の出力は、リード可能アドレスカウンタ55が示すインターリーブRAM45中の読出しアドレスにデータが書き込まれると“0”から“1”になる。セレクタ56は、セレクタ57又は58のいずれかの出力(可能フラグ)が“1”になると、対応するアドレスを選択してインターリーブRAM45に供給する。これにより、インターリーブRAM45に書き込みが終了したデータを出力データとして読み出すことができる。なおセレクタ57とセレクタ58とは、出力が同時に“1”とならないように制御されているものとする。例えば、図10に示すようにセレクタ57の出力が、セレクタディスエーブル信号SDとしてセレクタ58に供給され、セレクタディスエーブル信号SDが“1”のときにはセレクタ58の出力は強制的に“0”となるように制御されてよい。またインターリーブRAM45は、読み出し動作と書き込み動作とが同時に実行できる構成のメモリであるとする。
リード可能アドレスカウンタ54は、セレクタ57の出力する可能フラグが“1”になると、アドレスを1つ増加させる。即ち、自らが出力している読出しアドレスのデータが読み出されると、アドレスを1つ増加させる。リード可能アドレスカウンタ55は、セレクタ58の出力する可能フラグが“1”になると、アドレスを1つ減少させる。即ち、自らが出力している読出しアドレスのデータが読み出されると、アドレスを1つ減少させる。セレクタ57の出力は、符号化器38の符号化動作を1クロック進めるように指示するイネーブル信号として符号化器38に供給される。セレクタ58の出力は、符号化器37の符号化動作を1クロック進めるように指示するイネーブル信号として符号化器37に供給される。
図11は、図10に示すアドレス制御部44の動作の一例を示す図である。まず逆方向の符号化のための読み出し動作について説明する。最初の状態(図10の時刻0の状態)において、リード可能アドレスカウンタ55の出力する可能アドレスは、データ列の最後尾(この例ではデータ列全体で40ビットのデータなので39)を指している。この時、履歴レジスタ53の20番目のビット(履歴レジスタ52と合わせた全体では40番目のビット)が“0”であるので、セレクタ58の出力である可能フラグ(リードイネーブルと同一)は“0”である。時刻が経過し、時刻24で25番目の入力データD24がインターリーブRAM45の該当箇所(ライトアドレス39)に書き込まれると、履歴レジスタ53の20番目のビット(履歴レジスタ52と合わせた全体では40番目のビット)が“1”になる。これによりセレクタ58の出力である可能フラグ(リードイネーブルと同一)が“1”になり、これに応答してリード可能アドレスカウンタ55はカウントダウンして、次の時刻の出力が38となる。またリードイネーブルが“1”となることに応答して、インターリーブRAM45の対応するアドレス(カウントダウン前のアドレス)からデータが読み出される。次のサイクルで履歴レジスタ53の19番目のビット(履歴レジスタ52と合わせた全体では39番目のビット)が“1”だったら更に同様の動作でデータを読み出す。図11の例では、次のサイクル(時刻25)で履歴レジスタ53の19番目のビットが“0”であるので、可能フラグが“0”となり、履歴レジスタ53の19番目のビットが“1”になるのを待つことになる。
順方向の符号化のための読み出し動作についても同様である。最初の状態(図10の時刻0の状態)において、リード可能アドレスカウンタ54の出力する可能アドレスは、データ列の先頭0を指している。この時、履歴レジスタ52の1番目のビットが“0”であるので、セレクタ57の出力である可能フラグ(リードイネーブルと同一)は“0”である。時刻が経過し、時刻1で2番目の入力データD1がインターリーブRAM45の該当箇所(ライトアドレス0)に書き込まれると、履歴レジスタ52の1番目のビットが“1”になる。これによりセレクタ57の出力である可能フラグ(リードイネーブルと同一)が“1”になり、これに応答してリード可能アドレスカウンタ54はカウントアップして、次の時刻の出力が1となる。またリードイネーブルが“1”となることに応答して、インターリーブRAM45の対応するアドレス(カウントアップ前のアドレス)からデータが読み出される。次のサイクルで履歴レジスタ52の2番目のビットが“1”だったら更に同様の動作でデータを読み出す。図11の例では、次のサイクル(時刻2)で履歴レジスタ52の2番目のビットが“0”であるので、可能フラグが“0”となり、履歴レジスタ52の2番目のビットが“1”になるのを待つことになる。
このようにして、順方向の符号化器38と逆方向の符号化器37とは、データ列中の符号化対象のデータが定まっている場合には、順次畳み込み符号化を進めることになる。また、データ列中の符号化対象のデータが定まっていない場合には、符号化器は、符号化対象のデータが並べ替え(インターリーブ処理)により定まるまで、畳み込み符号化の実行を待つことになる。
図10を再び参照し、アドレス比較部59は、リード可能アドレスカウンタ54が出力する読み出しアドレスとリード可能アドレスカウンタ55が出力する読み出しアドレスとが一致すると、終了信号を送出する。終了信号に応答して、リード可能アドレスカウンタ54及び55はカウント動作を停止し、セレクタ57及び58は可能フラグを“0”にする。即ち、順方向の符号化器38がデータ列中のある位置まで順方向に畳み込み符号化を実行し、逆方向の符号化器37がデータ列中の当該位置まで逆方向に畳み込み符号化を実行し、両符号化演算が当該位置で出会い終了することになる。
図12は、図9に示す符号化器37及び38、サブブロックRAM41、アドレス生成部42、及び結果選択部43の部分の詳細な構成を示す図である。図12において、図9と同一の構成要素は同一の番号で参照し、その説明は省略する。アドレスカウンタ60、アドレスカウンタ62、及びアドレス反転部63が、図9のアドレス生成部42に対応する。比較部61、セレクタ64、セレクタ65、及び比較部66が、図9の結果選択部43に対応する。
符号化器37又は38は、イネーブル信号(図10のセレクタ57及び58の出力)が“1”になると、符号化動作を実行する。またアドレスカウンタ60は、符号化器38のイネーブル信号が“1”の場合にクロックに同期してカウントアップをする。アドレスカウンタ60のカウント値を書き込みアドレスとして、対応するRAM41に符号化器38が出力する符号化データが格納される。図10のアドレス比較部59からの終了信号が到来すると、アドレスカウンタ60はカウントアップ動作を停止する。アドレスカウンタ62は、符号化器37のイネーブル信号が“1”の場合にクロックに同期してカウントアップをする。アドレスカウンタ62のカウント値をアドレス反転部63により反転した値を書き込みアドレスとして、対応するRAM41に符号化器37が出力する符号化データが格納される。ここで例えばブロックサイズが40の場合、アドレスカウンタ62のカウント値が0ならアドレス反転部63の出力は40、アドレスカウンタ62のカウント値が1ならアドレス反転部63の出力は39、等となる。これにより、RAM41への書き込み時に、逆方向符号化により得られた符号化データを前後逆になるように並べ替えている。図10のアドレス比較部59からの終了信号が到来すると、アドレスカウンタ62はカウントアップ動作を停止する。
比較部61は、図10のアドレス比較部59からの終了信号が到来すると、順方向の符号化器38の内部状態と、複数の逆方向の符号化器37の内部状態とを比較する。比較部61は、順方向の符号化器38の内部状態に一致する内部状態を有する1つの逆方向の符号化器37を特定し、特定した逆方向の符号化器37を指し示す信号をセレクタ64に供給する。セレクタ64は、比較部61からの信号に応じて、特定された符号化器37に対応するRAM41の読み出しデータを選択して、セレクタ65に供給する。即ち、両符号化演算が出会った位置における順方向の符号化器38の内部状態に一致する逆方向の符号化器37の内部状態を特定し、複数の符号化データ列のうちで特定した内部状態に対応する1つのデータ列を選択する。これにより、並行して計算された複数の逆方向の符号化演算の結果のうちで、順方向の符号化演算結果に対応する1つの逆方向の符号化演算の結果を選択することができる。
符号化装置の次段のモジュールからデータ読み出しアドレスが供給されると、比較部66は、読み出しアドレスとアドレスカウンタ60の保持しているカウント値(順方向の符号化結果の最後の書き込みアドレス)とを比較し、比較結果を示す信号をセレクタ65に供給する。この比較結果を示す信号に応じて、セレクタ65は、読み出しアドレスが順方向の符号化結果の最後の書き込みアドレスに到達するまでは、符号化器38に対応するRAM41からの読み出しデータを選択し、それ以降はセレクタ64の出力を選択する。これにより、順方向の符号化により求められたデータ列と逆方向の符号化により求められたデータ列とをつなげて1つの符号化データ列として出力することができる。
図13は、逆方向の符号化演算の結果を選択する様子を模式的に示す図である。図13において、横軸は入力データ列の先頭(図中の一番左の位置)から最後尾(図中の一番右の位置)までに対応し、縦軸は符号化器の内部状態に対応する。ここで内部状態とは、符号化器のレジスタD1乃至D3の値のことである。状態0は、レジスタD1乃至D3が全て0の状態に相当し、状態7は、レジスタD1乃至D3が全て1である状態に相当する。曲線70は、状態0から開始されて順方向の符号化を行なう符号化器の内部状態の推移を示している。曲線71乃至74は、それぞれの内部状態から開始されて逆方向の符号化を行なう符号化器の内部状態の推移を示している。レジスタの数が3つであれば本来は8本の曲線が描けるが、図の見やすさを考慮して4本のみを示してある。位置P1は、順方向の符号化と逆方向の符号化とが出会う位置である。位置P1(例えば14.5)の左側のデータ(1番〜14番)は全て順方向の符号化器により符号化されている。また位置P1(例えば14.5)の右側のデータ(15番〜40番)は全て逆方向の符号化器により符号化されている。位置P1における順方向の符号化の内部状態と位置P1における逆方向の符号化の内部状態が一致するのは、曲線71が示す逆方向の符号化演算である。従って、この曲線71が示す逆方向の符号化演算の演算結果が選択される。
図14は、インターリーブ処理の終了を待つことなく畳み込み符号化を前倒しで開始する場合のアドレス制御部44の構成の別の一例を示す図である。図14において、図10と同一の構成要素は同一の番号で参照し、その説明は省略する。図14に示す構成では、順方向の符号化演算をデータ列の前半分に対して実行させ、逆方向の符号化演算をデータ列の後半分に対して実行させるように、データ読み出し及びイネーブル信号の生成を行なう。
図14の構成においては、図10のリード可能アドレスカウンタ54及び55の代りに、リード可能アドレスカウンタ54A及び55Aが設けられている。リード可能アドレスカウンタ54Aは、データ列の前半分の最後のアドレスに到達するとカウントを停止し、終了信号を送出する。リード可能アドレスカウンタ55Aは、データ列の後半分の先頭のアドレスに到達するとカウントを停止し、終了信号を送出する。インターリーブRAM45Aは、図10のインターリーブRAM45と異なり、2ポートの読み出しが可能なメモリであり、順方向の符号化に提供するデータと逆方向の符号化に提供するデータとを同時に読み出すことができる。インターリーブRAM45Aが2ポートの読み出し可能であるので、セレクタ58Aは、セレクタ58と異なり、セレクタディスエーブル信号により制御される必要はない。
図15は、図14の構成に対応する図9の符号化器37及び38、サブブロックRAM41、アドレス生成部42、及び結果選択部43の部分の詳細な構成を示す図である。図15において、図12と同一の構成要素は同一の番号で参照し、その説明は省略する。図15に示す構成は、図12に示す構成に加え、AND回路67が設けられている。AND回路67は、図14のリード可能アドレスカウンタ54Aからの終了信号とリード可能アドレスカウンタ55Aからの終了信号との論理和をとり、両方の終了信号がアサートされたときに出力信号である終了トリガをアサートする。終了トリガがアサートされると、アドレスカウンタ60及び62がカウントアップ動作を停止する。また比較部61は、終了トリガがアサートされると、順方向の符号化器38の内部状態と、複数の逆方向の符号化器37の内部状態とを比較する。比較部61は、順方向の符号化器38の内部状態に一致する内部状態を有する1つの逆方向の符号化器37を特定し、特定した逆方向の符号化器37を指し示す信号をセレクタ64に供給する。それ以外の動作は、図12に示す構成の場合と同様である。
ここまでの説明においては、順方向の符号化演算と逆方向の符号化演算とを行なう構成について説明した。前述のように、LTEの場合、最後のデータの並び替え後の位置を計算してみると、平均的に7割以上の場合において、全体のデータ列のうちの前半分の範囲に並び替え後の位置がくる。このような場合には、逆方向の符号化演算のみを実行しても、インターリーブ処理が終了する前に符号化演算を前倒しで行なえば、インターリーブ終了時には7割以上の確率で半分以上の符号化演算が終了していることになり、符号化演算前倒しの効果が大きい。
図16は、符号化装置の構成の別の一例を示す図である。図16において、図9と同一の構成要素は同一の番号で参照し、その説明は省略する。図16に示す符号化装置30Aにおいては、図9の構成と比較して順方向の符号化器38が取り除かれている。これに対応して、サブブロックRAM41Aが8個のRAMとなるとともに、アドレス制御部44A、アドレス生成部42A、結果選択部43Aの構成が図9の対応する部分から若干変更されている。その他の構成については、図16の符号化装置30Aと図9の符号化装置30とは同一である。
コードブロック分割回路35から出力される符号化対象データのブロックはインターリーブRAM45に格納される。この書き込み動作の際に、アドレス制御部44が書き込みアドレスを制御することにより、符号化対象データのブロックを構成するデータ列中のデータ順序が並び替えられ、並び替え後のデータ列がインターリーブRAM45の連続するアドレスに格納される。インターリーブRAM45に格納されるデータブロックの並び替え後のデータ列は、最後尾から逆方向に順番に複数の符号化器37に供給され、複数の符号化器37が逆方向の畳み込み符号化を並列に実行する。この際、複数の符号化器37の初期状態は異なる8つの組み合わせ(図4のD1乃至D3の初期値の異なる組み合わせ)にそれぞれ設定されている。
符号化器37による逆方向の符号化は、インターリーブ処理の終了前に前倒しで実行を開始する。即ち、逆方向の符号化器37は、インターリーブRAM45中のデータ列の最後尾データが並べ替えにより定まると、インターリーブ処理の終了を待つことなく畳み込み符号化を前倒しで開始する。
図17は、インターリーブ処理の終了を待つことなく逆方向の畳み込み符号化を前倒しで開始するアドレス制御部44Aの構成の一例を示す図である。図17に示すインターリーブRAM45以外の部分が、アドレス制御部44Aの構成である。図17において、図10と同一の構成要素は同一の番号で参照し、その説明は省略する。
履歴レジスタ53Bは、並び替え後のデータ列の全体のデータ(ブロックサイズが40の場合は40個のデータ)の各々について、インターリーブRAM45に書き込みが終了したか否かを記録するレジスタである。履歴レジスタ53Bには40ビットのデータが格納されており、インターリーブRAM45に書き込みが終了したデータのアドレス位置に対応するビット位置のビット値が“0”から“1”になる。リード可能アドレスカウンタ55Bは、並び替え後のデータ列のデータを最後尾から順番に読み出すためのリードアドレスを、1つずつ減少させながら出力する。
セレクタ58Bは、リード可能アドレスカウンタ55Bが示すインターリーブRAM45中の読出しアドレスに対応する履歴レジスタ53Bの出力中のビット位置のビット値を選択する。セレクタ58Bの出力は、リード可能アドレスカウンタ55Bが示すインターリーブRAM45中の読出しアドレスにデータが書き込まれると“0”から“1”になる。リード可能アドレスカウンタ55Bの出力する読み出しアドレスと、セレクタ58Bの出力する可能フラグ(イネーブル信号)とは、インターリーブRAM45に供給される。セレクタ58Bの出力(イネーブル信号)が“1”になると、インターリーブRAM45から、指定読み出しアドレスのデータが読み出される。これにより、インターリーブRAM45に書き込みが終了したデータを出力データとして読み出すことができる。
リード可能アドレスカウンタ55Bは、セレクタ58Bの出力する可能フラグが“1”になると、アドレスを1つ減少させる。即ち、自らが出力している読出しアドレスのデータが読み出されると、アドレスを1つ減少させる。セレクタ58Bの出力は、符号化器37の符号化動作を1クロック進めるように指示するイネーブル信号として符号化器37に供給される。リード可能アドレスカウンタ55Bは更に、アドレスが減少していき0になると、次のサイクルで終了信号を送出する。
図18は、図17に示すアドレス制御部44Aの動作の一例を示す図である。最初の状態(図10の時刻0の状態)において、リード可能アドレスカウンタ55Bの出力する可能アドレス(読み出しアドレス)は、データ列の最後尾(この例ではデータ列全体で40ビットのデータなので39)を指している。この時、履歴レジスタ53Bの40番目のビットが“0”であるので、セレクタ58Bの出力である可能フラグ(リードイネーブルと同一)は“0”である。時刻が経過し、時刻24で25番目の入力データD24がインターリーブRAM45の該当箇所(ライトアドレス39)に書き込まれると、履歴レジスタ53Bの40番目のビットが“1”になる。これによりセレクタ58Bの出力である可能フラグ(リードイネーブルと同一)が“1”になり、これに応答してリード可能アドレスカウンタ55Bはカウントダウンして、次の時刻の出力が38となる。またリードイネーブルが“1”となることに応答して、インターリーブRAM45の対応するアドレス(カウントダウン前のアドレス)からデータが読み出される。次のサイクルで履歴レジスタ53Bの39番目のビットが“1”だったら更に同様の動作でデータを読み出す。図18の例では、次のサイクル(時刻25)で履歴レジスタ53Bの39番目のビットが“0”であるので、可能フラグが“0”となり、履歴レジスタ53Bの39番目のビットが“1”になるのを待つことになる。
図19は、図16に示す符号化器37、サブブロックRAM41A、アドレス生成部42A、及び結果選択部43Aの部分の詳細な構成を示す図である。図19において、図12と同一の構成要素は同一の番号で参照し、その説明は省略する。図17のリード可能アドレスカウンタ55Bからの終了信号が到来すると、アドレスカウンタ62はカウントアップ動作を停止する。特定部61Bは、図17のリード可能アドレスカウンタ55Bからの終了信号が到来すると、複数の逆方向の符号化器37のうちで、内部状態が全てゼロのものを特定し、特定した逆方向の符号化器37を指し示す信号をセレクタ64に供給する。セレクタ64は、特定部61Bからの信号に応じて、特定された符号化器37に対応するRAM41Aの読み出しデータを選択して、出力データとして次段に供給する。これにより、並行して計算された複数の逆方向の符号化演算の結果のうちで、時刻0での初期状態が0になる正しい逆方向符号化演算結果を選択することができる。
ここまでの説明において、順方向の符号化器及び逆方向の符号化器は、1ビットずつ符号化演算を行なう構成としたが、これに限られるものではない。通常の順方向の符号化器として複数ビット同時に処理する構成のものが知られている。これと同様に、複数ビット同時に処理する逆方向の符号化器は、1ビット単位で処理する逆方向符号化器の構成が分かっていれば、容易に構成することができる。
図20は、図4に示す1ビット単位で処理する逆方向符号化器と同一の演算を4ビット単位で行なう逆方向符号化器の構成の一例である。図21は、4ビット纏めた入力INと4ビット纏めた出力OUTとの論理関係を示したテーブルである。図21のテーブルは、図4の逆方向符号化器が行なう論理演算を、順次入力される入力INの4つのビットX0乃至X3それぞれについて示したものであり、図4の構成から容易に導くことができる。図20に示す4ビット単位の逆方向符号化器は、図21のテーブルの演算をそのまま実現する論理回路を構成すればよい。
図22は、符号化装置を備えた通信装置の構成の一例を示す図である。図22の通信装置100は、RF回路101、AD変換&DA変換部102、及びデジタル信号処理部103を含む。デジタル信号処理部103は、物理層部PHYとメディアアクセス制御部MACとを含む。物理層部PHYには、同期部、復調部、変調部、誤り訂正部、符号化部などが含まれる。この符号化部に、図9や図16で説明した符号化装置を適用することができる。符号化部は、送信データ列を符号化して符号化データ列を生成する。変調部は、符号化データ列を変調して変調信号を生成する。AD変換&DA変換部102により変調信号をデジタルからアナログへ変換した後に、RF回路101が、変調信号をRF信号に変換する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
なお本願は以下の内容を含むものである。
(付記1)
第1データ列中のデータの位置を並べ替えて第2データ列を生成するインターリーバと、
前記第2データ列に対して先頭から順方向に畳み込み符号化を行ない第3データ列を生成する第1の符号化器と、
前記第2データ列に対して最後尾から逆方向に畳み込み符号化を行ない第4データ列を生成する第2の符号化器と、
前記第3データ列と第4データ列とをつなげて符号化データ列として出力する出力回路と
を含むことを特徴とする符号化装置。
(付記2)
前記第1の符号化器は、前記第2データ列の先頭データが前記並べ替えにより定まると前記インターリーバの処理の終了を待つことなく畳み込み符号化を開始し、前記第2の符号化器は、前記第2データ列の最後尾データが前記並べ替えにより定まると前記インターリーバの処理の終了を待つことなく畳み込み符号化を開始することを特徴とする付記1記載の符号化装置。
(付記3)
前記第1の符号化器は前記第2データ列中のある1つの位置まで順方向に畳み込み符号化を実行し、前記第2の符号化器は前記第2データ列中の前記ある1つの位置まで逆方向に畳み込み符号化を実行することを特徴とする付記1又は2記載の符号化装置。
(付記4)
前記第2の符号化器は逆方向符号化の初期内部状態の全ての組み合わせについて逆方向の畳み込み符号化を行い複数の第5データ列を生成し、前記出力回路は、前記ある1つの位置における前記第1の符号化器の内部状態に一致する前記第2の符号化器の内部状態を特定し、前記複数の第5データ列のうちで該特定した内部状態に対応する1つのデータ列を前記第4データ列として選択することを特徴とする付記3記載の符号化装置。
(付記5)
前記ある1つの位置は前記第2データ列を前半分と後半分とに分ける中間位置であることを特徴とする付記4記載の符号化装置。
(付記6)
前記第1の符号化器と前記第2の符号化器とは、前記第2データ列中の符号化対象のデータが定まっている場合には畳み込み符号化を進め、前記第2データ列中の符号化対象のデータが定まっていない場合には該符号化対象のデータが前記並べ替えにより定まるまで畳み込み符号化の実行を待ち、前記ある1つの位置は、前記第1の符号化器による順方向の畳み込み符号化と前記第2の符号化器による逆方向の畳み込み符号化とが出会う位置であることを特徴とする付記4記載の符号化装置。
(付記7)
前記第1の符号化器及び前記第2の符号化器は、前記第3データ列及び前記第4データ列をメモリに格納し、前記出力回路は、前記メモリに格納された前記第3データ列及び前記第4データ列の何れかを前記メモリから選択的に読み出すことで前記符号化データ列を出力することを特徴とする付記1乃至6何れか一項記載の符号化装置。
(付記8)
第1データ列を符号化して符号化データ列を生成する符号化装置と、
前記符号化データ列を変調して変調信号を生成する変調部と、
前記変調信号をRF信号に変換するRF回路と
を含み、前記符号化装置は、
前記第1データ列中のデータの位置を並べ替えて第2データ列を生成するインターリーバと、
前記第2データ列に対して先頭から順方向に畳み込み符号化を行ない第3データ列を生成する第1の符号化器と、
前記第2データ列に対して最後尾から逆方向に畳み込み符号化を行ない第4データ列を生成する第2の符号化器と、
前記第3データ列と第4データ列とをつなげて前記符号化データ列として出力する出力回路と
を含むことを特徴とする無線通信装置。
(付記9)
前記第1の符号化器は、前記第2データ列の先頭データが前記並べ替えにより定まると前記インターリーバの処理の終了を待つことなく畳み込み符号化を開始し、前記第2の符号化器は、前記第2データ列の最後尾データが前記並べ替えにより定まると前記インターリーバの処理の終了を待つことなく畳み込み符号化を開始することを特徴とする付記1記載の無線通信装置。
(付記10)
第1データ列中のデータの位置を並べ替えて第2データ列を生成するインターリーバと、
前記第2データ列に対して最後尾から逆方向に畳み込み符号化を行ない第3データ列を生成する符号化器と、
前記第3データ列を前後逆になるように並べ替えて符号化データ列として出力する出力回路と
を含むことを特徴とする符号化装置。