JP5231570B2 - プルーンインタリーバおよびプルーンデインタリーバの効率的なアドレス生成 - Google Patents

プルーンインタリーバおよびプルーンデインタリーバの効率的なアドレス生成 Download PDF

Info

Publication number
JP5231570B2
JP5231570B2 JP2010539758A JP2010539758A JP5231570B2 JP 5231570 B2 JP5231570 B2 JP 5231570B2 JP 2010539758 A JP2010539758 A JP 2010539758A JP 2010539758 A JP2010539758 A JP 2010539758A JP 5231570 B2 JP5231570 B2 JP 5231570B2
Authority
JP
Japan
Prior art keywords
address
determining
prune
function
invalid mappings
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010539758A
Other languages
English (en)
Other versions
JP2011508530A (ja
Inventor
マンサワー、モハマッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011508530A publication Critical patent/JP2011508530A/ja
Application granted granted Critical
Publication of JP5231570B2 publication Critical patent/JP5231570B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1647Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2725Turbo interleaver for 3rd generation partnership project 2 [3GPP2] mobile telecommunication systems, e.g. as defined in the 3GPP2 technical specifications C.S0002
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/275Interleaver wherein the permutation pattern is obtained using a congruential operation of the type y=ax+b modulo c
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/276Interleaving address generation
    • H03M13/2764Circuits therefore
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2789Interleaver providing variable interleaving, e.g. variable block sizes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Description

米国特許法第119条の下での優先権の主張
本願は、本発明の譲受人に譲渡され、特に参照によって本明細書に組み込まれている、2007年12月21日に出願した米国仮出願第61/016045号、名称「PARALLEL PRUNED INTERLEAVER METHOD AND APPARATUS」の優先権を主張するものである。
本開示は、全般的にはデータ処理に関し、より具体的にはインタリーバおよびデインタリーバに関する。
インタリーバは、入力データを受け取り、入力データをシャッフルしすなわち並べ変え、シャッフルされたデータを出力データとして供給する機能ブロックである。インタリーバは、性能に対する雑音および干渉の影響を減らすために、ほとんどの無線通信システムで使用される。たとえば、チャネルインタリービングは、一般に、雑音および干渉に起因する誤りのバーストに対して保護するのに利用される。送信機では、チャネルインタリーバは、チャネル符号器からのコードビットをシャッフルし、その結果、連続するコードビットが、インタリーブされたビット内で分離されるようにする。インタリーブされたビットのシーケンスが、誤りのバースト内で用いられる時には、これらのインタリーブされたビットは、受信器のチャネルデインタリーバによる相補的再シャッフリングの後に、分離される。したがって、インタリービングは、誤りのバーストに含まれる連続するビットの間の時間的相関を壊し、これが、性能を改善する場合がある。
インタリービングを、特定の線形アドレスのデータ値(たとえば、コードビット)を受け取ることと、線形アドレスに基づいてインタリーブされたアドレスを決定すること(determining)と、インタリーブされたアドレスにデータ値を格納することとによって実行することができる。線形アドレスからインタリーブされたアドレスへのマッピングは、ルックアップテーブルに基づくものとすることができる。複数のパケットサイズをサポートすることができ、ルックアップテーブルを、サポートされるパケットサイズごとに生成することができる。多数の異なるパケットサイズについて線形アドレスをインタリーブされたアドレスにマッピングする多数のルックアップテーブルを格納するために、大量のメモリが必要になる可能性がある。したがって、インタリーブされたアドレスを必要に応じてリアルタイムで効率的に計算することが望ましい可能性がある。
プルーンインタリーバ(pruned interleavers)およびプルーンデインタリーバ(pruned de-interleavers)のアドレスを効率的に決定する技法を、本明細書で説明する。非プルーンインタリーバ(non-pruned interleavers)および非プルーンデインタリーバ(non-pruned de-interleavers)は、2のべきのサイズを有し、その結果、0からM−1までのアドレス範囲全体が有効であり、ここで、M=2であり、nは、アドレスのビット数である。プルーンインタリーバおよびプルーンデインタリーバは、2のべきではないサイズを有し、その結果、LからM−1までの範囲内のアドレスが無効であり、ここで、Lは、プルーンインタリーバまたはプルーンデインタリーバのサイズである。
一態様では、線形アドレスに対応する無効なマッピングの総数を決定することによって、線形アドレスを、プルーンインタリーバのインタリーブされたアドレスにマッピングすることができる。無効なマッピングは、非プルーンインタリーバ関数に基づく0からL−1までの範囲内にはないインタリーブされたアドレスへの線形アドレスのマッピングである。中間アドレスを入手するために、線形アドレスと無効なマッピングの総数との合計をとることができる。次に、プルーンインタリーバのインタリーブされたアドレスを、中間アドレスの非プルーンインタリーバ関数に基づいて決定することができる。
ある設計では、プルーンインタリーバを、ビット逆転インタリーバ(bit-reversal interleaver、BRI)とすることができる。中間アドレスのビット逆転版(bit-reversed version)を、プルーンBRIのインタリーブされたアドレスとして提供することができる。もう1つの設計では、プルーンインタリーバを、2次元(2D)配列の複数の行に関するビット逆転関数および各行内の複数のエントリに関する線形合同シーケンス(linear congruential sequence、LCS)関数を含むプルーンターボインタリーバとすることができる。プルーンターボインタリーバのインタリーブされたアドレスを、中間アドレスの非プルーンターボインタリーバ関数に基づいて決定することができる。
ある設計では、無効なマッピングの総数を、反復的に、たとえば事前定義の回数の反復だけ、または無効なマッピングの同一の総数が2つの連続する反復について得られるまで、決定することができる。各反復を、下で説明するように、異なるタイプのプルーンインタリーバについて異なる形で実行することができる。
もう1つの態様では、インタリーブされたアドレスに対応する無効なマッピングの総数を決定することによって、インタリーブされたアドレスを、プルーンデインタリーバの線形アドレスにマッピングすることができる。中間アドレスを、インタリーブされたアドレスの非プルーンデインタリーバ関数に基づいて決定することができる。次に、プルーンデインタリーバの線形アドレスを得るために、無効なマッピングの総数を中間アドレスから減算することができる。
本開示のさまざまな態様および特徴を、下でさらに詳細に説明する。
基地局および端末を示すブロック図。 送信(TX)データプロセッサを示すブロック図。 ターボ符号器を示すブロック図。 受信(RX)データプロセッサを示すブロック図。 ターボ復号器を示すブロック図。 無効なマッピングの総数の反復決定を示す図。 1回の反復に関する無効なマッピングの個数の計算を示す図。 プルーンBRIのアドレスジェネレータを示すブロック図。 アドレスジェネレータ内の論理回路を示すブロック図。 ルックアヘッドプルーンBRIを示すブロック図。 プルーンインタリーバのアドレスジェネレータを示すブロック図。 プルーンデインタリーバのアドレスジェネレータを示すブロック図。 データを並べ変えるプロセスを示す図。
本明細書で説明する技法を、通信、ネットワーキング、コンピューティング、その他など、さまざまな応用例に使用することができる。たとえば、この技法を、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、周波数分割多元接続(FDMA)、直交FDMA(OFDMA)、単一キャリアFDMA(SC−FDMA)、および他のシステムなどの無線通信システムに使用することができる。用語「システム」および「ネットワーク」は、しばしば交換可能に使用される。符号分割多元接続システムは、cdma2000、Universal Terrestrial Radio Access(UTRA)、その他などのラジオテクノロジを実施することができる。cdma2000は、IS−2000標準規格、IS−95標準規格、およびIS−856標準規格を包含する。UTRAは、広帯域CDMA(WCDMA)および符号分割多元接続の他の変形を含む。TDMAシステムは、グローバル移動体通信システム(Global System for Mobile Communications:GSM)などのラジオテクノロジを実施することができる。OFDMAシステムは、ウルトラ・モービル・ブロードバンド(Ultra Mobile Broadband:UMB)、Evolved UTRA(E−UTRA)、IEEE 802.11(Wi−Fi)、IEEE 802.16(WiMAX)、IEEE 802.20、Flash−OFDM(登録商標)、その他などのラジオテクノロジを実施することができる。UTRA、E−UTRA、およびGSMは、ユニバーサル・モービル・テレコミュニケーションシステム(Universal Mobile Telecommunication System:UMTS)の一部である。3GPPロングターム・エボルーション(Long Term Evolution:LTE)は、E−UTRAを使用する、UMTSのやがて公開されるリリースである。UTRA、E−UTRA、GSM、UMTS、およびLTEは、「第3世代協力プロジェクト」(3rd Generation Partnership Project:3GPP)という名前の組織からの文書に記載されている。cdma2000およびUMBは、「第3世代協力プロジェクト2」(3rd Generation Partnership Project 2:3GPP2)という名前の組織からの文書に記載されている。明瞭にするために、本技法のいくつかの態様を、下ではUMBについて説明する。
本明細書で説明する技法を、端末ならびに基地局に使用することができる。端末を、移動局、ユーザ機器、アクセス端末、加入者ユニット、ステーションなどと称する場合もある。端末は、セル電話機、携帯情報端末(PDA)、無線通信デバイス、無線モデム、ハンドヘルドデバイス、ラップトップコンピュータ、コードレス電話機、無線ローカルループ(WLL)ステーションなどとすることができる。基地局を、Node B、evolved Node B(eNB)、アクセスポイントなどと称する場合もある。
図1に、無線通信システム内の基地局110および端末150の設計のブロック図を示す。基地局110は、T個のアンテナを備え、端末150は、R個のアンテナを備え、一般にT≧1およびR≧1である。
基地局110では、TXデータプロセッサ120が、データ送信装置112からデータを受け取り、パケットフォーマットに基づいてそのデータを処理(たとえば、符号化、インタリーブ、変調)し、データシンボルを供給する。パケットフォーマットは、パケットサイズ、変調および符号化方式(MCS)などを示すことができる。パケットフォーマットを、レート、トランスポートフォーマットなどと称する場合もある。TXマルチプルインプットマルチプルアウトプット(multiple-input multiple-output、MIMO)プロセッサ130は、データシンボルをパイロットシンボルと多重化することができ、適用可能な場合にはプリコーディング(precoding)(たとえば、ビームフォーミングのために)を実行することができる。プロセッサ130は、T個の出力シンボル流れをT個の変調器(MOD)132aから132tに供給することができる。各変調器132は、出力サンプル流れを得るために、その出力シンボル流れを処理することができる(たとえば、OFDM、SC−FDM、CDMAなどのために)。各変調器132は、さらに、その出力サンプル流れを調整(たとえば、アナログに変換、フィルタリング、増幅、アップコンバート)し、順方向リンク信号を生成することができる。変調器132aから132tからのT個の順方向リンク信号を、それぞれT個のアンテナ134aから134tから送信することができる。
端末150では、R個のアンテナ152aから152rが、順方向リンク信号を受信することができ、各アンテナ152は、受信信号をそれぞれの復調器(DEMOD)154に供給することができる。各復調器154は、サンプルを入手するためにそれが受け取った信号を処理し(たとえば、フィルタリングし、増幅し、ダウンコンバートし、ディジタル化し)、さらに、受信されたシンボルを入手するためにサンプルを処理することができる(たとえば、OFDM、SC−FDM、CDMAなどのために)。MIMO検出器160は、受信されたパイロット信号から導出されたチャネル推定値を用いて、受信されたデータシンボルに対するMIMO検出を実行することができ、データシンボル推定値を供給することができる。RXデータプロセッサ170は、データシンボル推定値をさらに処理(たとえば、復調、デインタリーブ、復号)し、復号されたデータをデータ受信装置172に供給することができる。
端末150では、データ送信装置180からのデータを、TXデータプロセッサ182によって処理し、パイロット信号と多重化し、TX MIMOプロセッサ184によって処理し、さらに、アンテナ152aから152rを介して送信できるR個の逆方向リンク信号を生成するために変調器154aから154rによって処理することができる。基地局110では、逆方向リンク信号を、T個のアンテナ134aから134tによって受信し、復調器132aから132tによって処理し、MIMO検出器136によって検出し、端末150によって送信されたデータを回復するためにRXデータプロセッサ138によってさらに処理することができる。
コントローラ/プロセッサ140および190は、それぞれ基地局110および端末150での動作を指示することができる。メモリ142および192は、それぞれ基地局110および端末150のデータおよびプログラムコードを格納することができる。
図2に、図1のTXデータプロセッサ182に使用することもできるTXデータプロセッサ120の設計のブロック図を示す。TXデータプロセッサ120内では、パーティショニングユニット210が、送信すべきデータを受け取り、このデータを選択されたパケットサイズのパケットにパーティショニングすることができる。パケットを、トランスポートブロック、コードブロック、サブパケットなどと称する場合もある。各パケットを、別々に符号化し、復号することができる。各パケットは、固定サイズまたは可変サイズを有することができる。たとえば、パケットサイズを、送信すべきデータの量、使用可能なリソースの量、その他などのさまざまな要因に基づいて、サポートされるパケットサイズのセットから選択することができる。パケットサイズは、128ビットから16384ビット(UMBの場合)の範囲またはある他の範囲内とすることができる。
巡回冗長検査(CRC)ジェネレータ220は、各パケットのCRC値を生成し、そのCRC値をパケットに付加することができる。ターボ符号器230は、ターボ符号に基づいて各パケットを符号化し、コーディングされたパケットを提供することができる。レートマッチングユニット240は、選択された符号レートに基づいて各コーディングされたパケット内のコードビットのサブセットを選択することができ、コーディングされたパケット内の残りのビットを削除することができる。チャネルインタリーバ250は、各コーディングされたパケット内の削除されなかったコードビットをインタリーブし、インタリーブされたパケットを提供することができる。インタリービングは、コードビットの時間ダイバーシティ、周波数ダイバーシティ、および/または空間ダイバーシティをもたらすことができる。シンボルマッパ260は、選択された変調方式に基づいて、インタリーブされたビットをデータシンボルにマッピングする。パケットサイズ、符号レート、および変調方式は、チャネル条件、端末機能、システムリソースの可用性などに基づいて選択できるパケットフォーマットに基づいて決定することができる。
図3に、図2のターボ符号器230の設計のブロック図を示す。ターボ符号器230は、並列連接畳込み符号(parallel concatenated convolutional code、PCCC)を実施し、2つの成分符号器(constituent encoder)310aおよび310b、ターボインタリーバ320、および多重化装置(Mux)330を含む。ターボ符号器230は、L個のデータビットのパケットを符号化し、S個のコードビットの対応するコーディングされたパケットを提供し、ここで、LおよびSは、任意の適切な値とすることができる。
ターボ符号器230内で、ターボインタリーバ320は、ターボインタリーバ関数に基づいて、パケット内のデータビット(xと表される)をインタリーブすることができる。成分符号器310aは、第1成分コードに基づいてデータビットを符号化し、第1パリティビット(yと表される)を供給することができる。同様に、成分符号器310bは、第2成分コードに基づいてターボインタリーバ320からのインタリーブされたデータビットを符号化し、第2パリティビット(zと表される)を供給することができる。成分符号器310aおよび310bは、畳込み符号とすることのできる、2つの再帰的系統的成分コードを実施することができる。多重化装置330は、データビットおよびパリティビットを成分符号器310aおよび310bから受け取り、データビットおよびパリティビットを多重化し、コーディングされたパケットのコードビットを提供することができる。コードビットは、データビットと、それに続く第1パリティビットと、それに続く第2パリティビットとを含むことができる。
ある設計では、各成分符号器310は、レート1/3拘束長4成分畳込み符号を実施することができ、ターボ符号器230は、レート1/5ターボコードを実施することができる。ターボ符号器230は、可変サイズLのパケットを受け取ることができ、コーディングされたパケットの5Lコードビットを生成することができる。ターボ符号器230を、他の符号レートおよび/または拘束長の成分畳込み符号を用いて実施することもできる。
図4に、図1のRXデータプロセッサ138にも使用できるRXデータプロセッサ170の設計のブロック図を示す。RXデータプロセッサ170内では、対数尤度比(LLR)計算ユニット410が、MIMO検出器160からデータシンボル推定値を受け取り、データシンボル推定値ごとにコードビットのLLRを計算することができる。データシンボルは、信号コンステレーション(signal constellation)内の複素数値にB個のコードビットをマッピングすることによって得ることができる。B個のLLRは、対応するデータシンボル推定値に基づいてデータシンボルのB個のコードビットについて計算することができる。各コードビットのLLRは、そのコードビットのデータシンボル推定値を与えられて、コードビットが0または1である尤度を示すことができる。チャネルデインタリーバ420は、図2のチャネルインタリーバ250によるインタリービングに相補的な形でLLRをデインタリーブすることができる。逆レートマッチング(de-rate matching)ユニット430は、図2のユニット240によるレートマッチングと相補的な形で、デインタリーブされたLLRに対して逆レートマッチングを実行することができ、入力LLRを提供することができる。ターボ復号器440は、入力LLRの各パケットを復号し、復号されたパケットを提供することができる。CRCチェッカ450は、各復号されたパケットをチェックし、そのパケットの復号状況を提供することができる。アセンブラ460は、復号されたパケットをアセンブルし、復号されたデータを提供することができる。
図5に、図4のターボ復号器440の設計のブロック図を示す。ターボ復号器440内では、逆多重化装置(Demux)510が、パケットの入力LLRを受け取り、入力LLRを、データビットxのLLR X、第1パリティビットyのLLR Y、および第2パリティビットzのLLR Zに逆多重化する。ソフト入力ソフト出力(soft-input soft-output:SISO)復号器520aは、データビットLLR Xおよび第1パリティビットLLR Yを逆多重化装置510から、ならびにデインタリーブされたデータビットLLR Xをターボデインタリーバ540から受け取ることができる。SISO復号器520aは、第1成分コードに基づいて、データビットの新しいLLR Xを導出することができる。ターボインタリーバ530は、図3のターボインタリーバ320に使用されるターボインタリーバ関数に基づいてデータビットLLR Xをインタリーブし、インタリーブされたデータビットLLR
Figure 0005231570
を提供することができる。SISO復号器520bは、データビットLLR Xおよび第2パリティビットLLR Zを逆多重化装置510から、ならびにインタリーブされたデータビットLLR
Figure 0005231570
をターボインタリーバ530から受け取ることができる。SISO復号器520bは、第2成分コードに基づいて、データビットの新しいLLR
Figure 0005231570
を導出することができる。ターボデインタリーバ540は、ターボインタリーバ関数の逆に基づいてデータビットLLR
Figure 0005231570
をデインタリーブし、デインタリーブされたデータビットLLR Xを提供することができる。
SISO復号器520aおよび520bは、BCJR MAPアルゴリズムまたはより少ない複雑さの派生物を実施することができる最大事後確率(maximum a posteriori:MAP)復号器とすることができる。SISO復号器520aおよび520bは、ソフト出力ビタビ(SOV)アルゴリズムまたは当技術分野で既知のある他の復号アルゴリズムを実施することもできる。SISO復号器520aおよび520bによる復号を、複数回、たとえば、6回、8回、10回、またはより多い回数だけ反復することができる。復号結果は、各反復の後により信頼できるものである可能性がある。すべての復号反復が完了した後に、検出器560が、SISO復号器520aから最終データビットLLRを受け取り、各LLRに対する硬判定を行い、復号されたビットを提供することができる。
図2のチャネルインタリーバ250を、ビット逆転インタリーバ(BRI)、プルーンビット逆転インタリーバ(PBRI)、その他など、さまざまな設計を用いて実施することができる。BRIは、yのnビットがxのnビットに関して逆順で現れるように、ビット逆転ルールに従って、nビット線形アドレスxをnビットのインタリーブされたアドレスyにマッピングする。nビット線形アドレスxのBRIマッピングは、次のBRI関数によって指定することができる。
Figure 0005231570
ここで、π()は、BRI関数である。アドレスxおよびyは、0からM−1までの範囲内の値を有し、ここで、M=2は、BRIのサイズであり、2のべきである。任意の線形アドレスxを、xのnビットを反転することと反転されたnビットをyとして使用することとによって、対応するインタリーブされたアドレスyに簡単にマッピングすることができる。
プルーンBRIは、L未満、ただしL<M、のnビット線形アドレスxを、ビット逆転ルールに従って、L未満のnビットのインタリーブされたアドレスyにマッピングする。しかし、プルーンBRIのサイズは、Lであるが、母インタリーバのサイズは、Mである。Lは、パケットサイズと等しくすることができ、UMBについて128から13684までの範囲内にあるものとすることができる。アドレスLからM−1までは、プルーンBRI関数によって切り詰められ、有効なマッピングとは考えられない。パラメータLを有するnビット線形アドレスxに対するプルーンBRIマッピングは、次のプルーンBRI関数によって指定することができる。
Figure 0005231570
ここで、βn,L()は、プルーンBRI関数である。アドレスxおよびyは、0からL−1までの範囲内の値を有し、Lは、プルーンBRIのサイズであり、2のべきではない。
所与のxに関するマッピングy=βn,L(x)は、i=0から開始し、途中でスキップされる無効なマッピングの個数φ(x)を維持することによって、シーケンシャルに決定することができる。φ(x)を、0に初期化することができる。i+φ(x)が、有効なインタリーブされたアドレスにマッピングされ、その結果、π(i+φ(x))<Lになる場合には、iを1つだけ増分することができる。そうではなく、i+φ(x)が無効なインタリーブされたアドレスにマッピングされる場合には、φ(x)を1つ増分することができる。この動作は、iがxに達し、π(i+φ(x))が有効になるまで繰り返すことができる。
アルゴリズム1とも称するシーケンシャルプルーンBRIアルゴリズムを、下の擬似コードを用いてインプリメントすることができる。
Figure 0005231570
アルゴリズム1は、本質的に、(i)i=0から開始してM個の線形アドレスをトラバースし、(ii)各線形アドレスiのインタリーブされたアドレスを決定することによって、M個のインタリーブされたアドレスの完全なリストを生成する。次に、この完全なリストは、L個のインタリーブされたアドレスの切り詰められたリスト(pruned list)を得るために、L以上のインタリーブされたアドレスを削除することによって切り詰められる。次に、線形アドレスxが、切り詰められたリスト内のx番目のインタリーブされたアドレスにマッピングされる。
表1に、L=19およびM=32の場合の例のBRIマッピングおよび例のプルーンBRIマッピングを与える。表1では、「10進」列は、10進表現でのアドレスを与え、「2進」列は、2進表現でのアドレスを与える。例として、線形アドレスx=7は、BRIマッピングを用いるとインタリーブされたアドレスy=28にマッピングされ、プルーンBRIマッピングを用いるとインタリーブされたアドレスy=10にマッピングされる。無効なマッピングは、最後の2つの列で「x」と表される。
Figure 0005231570
アルゴリズム1が、0からL−1までの範囲内のL個の線形アドレスを0からL−1までの範囲内のL個のインタリーブされたアドレスにマッピングするのにM−1回の反復を実行することを示すことができる。アルゴリズム1は、0からL−1までの範囲内の線形アドレスをマッピングする時に、Lの値とは独立に、範囲または0から2−1まで内のM個すべての線形アドレスをトラバースし、その過程でM−L−1個の無効なマッピングを切り詰める。したがって、プルーンBRIの複雑さは、母インタリーバMのサイズによって決定され、プルーンBRIのサイズによって決定されるのではない。
シーケンシャルプルーンBRIアルゴリズムの主な不利益は、インタリーブされたアドレスがシーケンシャルに生成されることである。具体的に言うと、線形アドレスxに対応するインタリーブされたアドレスyを決定するために、x未満のすべての線形アドレスのインタリーブされたアドレスが、まず決定される。これは、xをどこにマッピングすべきかを知るために、xの前のプルーンマッピングの回数を知らなければならないという事実から得られる。このシーケンシャルアドレス生成は、特に、たとえばUMBで使用される16キロビット(16K)サイズの、インタリービング/デインタリービングおよびターボ符号化/復号ロングパケットの時に、遅延ボトルネックを導入する可能性がある。
一態様では、多くともlog(x−1)ステップで線形アドレスxのインタリーブされたアドレスyを決定できる効率的なプルーンBRIアルゴリズムを、本明細書で説明する。効率的なプルーンBRIアルゴリズムは、基本的な論理ゲートを使用して実施できる単純なアーキテクチャを有し、さらに、短いクリティカルパス遅延を有することができる。
次の説明では、プルーンBRIのサイズLを、
Figure 0005231570
として与えることができると仮定する。式(3)の条件が満足されない場合には、プルーンBRIを、MがL以上の最小の2のべきになるように再定式化することができる。さらに、L=Mの場合に、xのすべての値についてφ(x)=0であり、βn,L(x)=π(x)である。この場合に、すべての線形アドレスが有効なマッピングを有するので、プルーンされるアドレスはない。したがって、下の説明では、式(3)で定義されたLを仮定する。
ビット逆転演算の定義および式(3)に示された条件から、π(x)≧Lの場合には、π(x+1)<Lになる。したがって、2つの連続する線形アドレスが、両方とも無効なマッピングを有することはできない。この事実を使用して、次のように、0≦x<Lについて、φ(x)の再帰的定義を得ることができる。
Figure 0005231570
さらに、i>xの場合に、φ(i)≧φ(x)である。したがって、φ()は、非減少関数である。
アルゴリズム1の複雑さは、MのオーダーすなわちO(M)である。これは、どのインタリーブされたアドレスをxにマッピングすべきかを確かめるために、x未満のすべての線形アドレスをマッピングする際に発生した無効なマッピングの個数φ(x)が、まず決定されるという事実から得られる。複雑さO(n)を有し、n=log(M)である、φ(x)を決定するアルゴリズムは、無効なマッピングのビット構造を分析することによって導出することができる。
量φ(x)は、0からxまでのすべての線形アドレスが有効なマッピングを有するように、スキップすべき無効なマッピングの最小個数を表す。同等に、φ(x)は、0からx+φ(x)までの範囲内の正確にx+1個の線形アドレスが有効なマッピングを有するように、xに加算すべき最小の数を表す。
図6に、所与の線形アドレスxのφ(x)の反復決定を示す。0からx(1)=xまでの範囲内の無効なマッピングを有する線形アドレスの個数を、σ(1)(x)=σ(x)と表すことができる。φ(x)は、必ずしもσ(1)(x)と等しくはなく、φ(x)≧σ(1)(x)として与えることができる。これは、0からxまでの範囲内の無効なマッピングを有するσ(1)(x)個の線形アドレスについて、xより大きいさらに少なくともσ(1)(x)個の線形アドレスが、有効なマッピングを有するかどうかを調べるためにチェックされなければならないという事実から得られる。
したがって、φ(x)は、少なくとも、0からx(2)=x+σ(1)(x)までの範囲内の無効なマッピングの個数と等しい。無効なマッピングを有する、0からx(2)までの範囲内の線形アドレスの個数を、σ(2)(x)=σ(x+σ(1)(x))と表すことができる。x(1)+1からx(2)までの線形アドレスは、考慮に入れなければならない無効なマッピングを有する可能性がある。したがって、φ(x)は、少なくとも、0からx(3)=x+σ(2)(x)までの範囲内の無効なマッピングの個数と等しい。x(2)+1からx(3)までの線形アドレスは、考慮に入れなければならない無効なマッピングを有する可能性がある。
一般に、0からx(k)までの範囲内の、無効なマッピングを有する線形アドレスの個数を、σ(k)(x)=σ(x+σ(k−1)(x))と表すことができ、ここで、kは反復のインデックスである。このプロセスは、
Figure 0005231570
として与えることができる、0からx(K+1)=x+σ(K)(x)までの範囲が正確にx+1個の有効なマッピングを含むまで、あるいは、同等に、
Figure 0005231570
まで、K+1回の反復だけ繰り返すことができる。式(5)または(6)の条件が満足される時に、φ(x)=σ(K+1)(x)である。K+1は、式(5)または(6)が満足されるようになる反復の最小回数であり、xの値に依存する可能性がある。
アルゴリズム2とも称する、σ(k)(x)を反復的に使用してφ(x)を計算するアルゴリズムを、下の擬似コードを用いて実施することができる。
Figure 0005231570
アルゴリズム2が、φ(x)を多くともn−1回の反復に集束でき、その結果、K<n−1になることを示すことができる。
φ(x)を決定するという問題は、反復kごとにσ(k)(x)を決定するという問題に還元され、ここで、σ(k)(x)は、0からx(k)=x+σ(k−1)(x)までの範囲内の無効なマッピングの個数である。単純にするために、次の説明では、σ(k)(x)とx(k)との両方から反復インデックスkを省略し、これらを、それぞれ単純にσ(x)およびxと表す場合がある。σ(x)は、LとM−1との間の無効なアドレスのビット表現を調査することによって決定することができる。x<2の2進表現を、次式として表すことができ、
Figure 0005231570
ここで、xn−1は、最上位ビット(MSB)であり、xは、最下位ビット(LSB)である。表記x[i:j]は、MSBからLSBへ並べられた連続するビットx,xi−1,…,xの集合を表すものとすることができる。2つのビット列x[i:j]およびx[i:j]の連結を、x[i:j]|x[i:j]として表すことができる。
LとM−1との間のアドレスを、次のようにL−1のビット表現に従ってそのMSBによってグループ化することができる。L−1のビット表現の0ビットの個数を、zと表すことができる。MSBからLSBへ並べられた、L−1のビット表現の0ビットのインデックスの集合を、I’と表すことができる。たとえば、L−1=1010100(2進数)の場合に、z=4およびI’={5,3,1,0}である。LからM−1までのアドレスまたは1010101≦x≦1111111を、次のようにz=4個のクラスにグループ化することができる。
・C’:11xxxxx: 16個の整数、
・C’:1011xxx: 8個の整数、
・C’:101011x: 2個の整数、および
・C’:1010101: 1個の整数。
この4つのクラスを定義するMSBは、L−1のビット表現を左から右へスキャンし、0ビットを探索することによって決定することができる。第1のクラスC’のMSBは、最初の0までの、最初の0を1に反転した、L−1のMSBに対応する。第2のクラスC’のMSBは、2番目の0までの、2番目の0を1に反転した、L−1のMSBに対応する。各残りのクラスのMSBは、同様の形で入手される。z個のクラスのそれぞれの最小の数を、次式として表すことができる。
Figure 0005231570
ここで、
Figure 0005231570
は、次に小さい整数値を与えるフロア演算子である。
各クラスを、その最小の数δ’によって指定することができる。L−1=1010100の上の例について、4つのクラスのそれぞれの最小の数を、δ’=1100000、δ’=1011000、δ’=1010110、およびδ’=1010101として与えることができる。
ビット逆転された時に無効になる整数の集合は、σ(x)の決定において重要である。これらの整数は、ビット逆転された順序ではあるが、上で定義されたクラスに属する。ビット逆転順での無効な整数のクラスを、δ=π(δ’)ただしi=1,2,…,zと表すことができ、対応するクラスをCと表すことができる。LSBからMSBへ並べられたπ(L−1)の0ビットのインデックスの集合を、Iと表すことができる。したがって、x∈Cの場合に、π(x)≧Lおよびx[I(i):0]≧δ[I(i):0]であり、ここで、I(i)は、集合Iの第i要素である。L−1=1010100の上で与えた例について、π(L−1)=0010101、z=4、およびI={1,3,5,6}である。ビット逆転された順序での無効な整数の4つのクラスを、次のように与えることができる。
・C:xxxxx11: δ=0000011、
・C:xxx1101: δ=0001101、
・C:x110101: δ=0110101、および
・C:1010101: δ=1010101。
0からxまでの範囲内の無効なマッピングの個数σ(x)は、各クラスC、ただしi=1,2,…,zの無効なマッピングの個数を数えることによって決定することができる。クラスCの無効なマッピングの個数を、σ(x)と表すことができ、これは、次を使用して決定することができる。
・δ
・i番目の0ビットの左までのxのMSBすなわちx[n−1:I(i)+1]、および
・i番目の0ビットを含むxの残りのLSBすなわちx[I(i):0]。
x[n−1:I(i)+1]によって与えられるxのn−I(i)−1個のMSBは、xの前に現れたCに属する整数の個数を表す。これらの整数は、δと同一であるがx[n−1:I(i)+1]|δ[I(i):0]未満のI(i)+1個のLSBを有する。x[I(i):0]によって与えられるxのI(i)+1個のLSBは、x≧x[n−1:I(i)+1]|δ[I(i):0]であるかどうか、または、これと同等に、x[I(i):0]≧δ[I(i):0]であるかどうかをチェックするのに使用することができる。これは、x自体がCに含まれる無効な整数にマッピングされるかどうか、または、xがCに含まれる最後の無効な整数より大きい整数にマッピングされるかどうかをチェックする。どちらの場合でも、σ(x)を1つ増分することができる。数学的には、σ(x)を、
Figure 0005231570
と表すことができる。
σ(x)は、z個のクラスのすべてのσ(x)の合計と等しく、
Figure 0005231570
と表すことができる。
アルゴリズム3とも称する、式(9)および(10)を使用してσ(x)を計算するアルゴリズムを、下の擬似コードを用いて実施することができる。
z=L−1のビット表現内の0ビットの個数
I=LSBからMSBへの、L−1のビット表現内の0ビットのインデックスの集合
Figure 0005231570
図7に、L−1=1010100、x=1001101、π(L−1)=0010101、z=4、およびI={1,3,5,6}の例に関するσ(x)の計算を示す。ビット逆転された順序での無効な整数の4つのクラスCからCは、上で与えられる。
i=1について、δ=0000011およびI(1)=1である。したがって、x[6:2]=10011、x[1:0]=01、およびδ[1:0]=11である。x[1:0]<δ[1:0]なので、σ(x)=x[6:2]=10011=19(10)であり、ここで、「(10)」は、10進表現を表す。
i=2について、δ=0001101およびI(2)=3である。したがって、x[6:4]=100、x[3:0]=1101、およびδ[3:0]=1101である。x[3:0]=δ[3:0]なので、σ(x)=x[6:4]+1=101=5(10)である。
i=3について、δ=0110101およびI(3)=5である。したがって、x[6]=1、x[5:0]=001101、およびδ[5:0]=110101である。x[5:0]<δ[5:0]なので、σ(x)=x[6]=1=1(10)である。
i=4について、δ=1010101およびI(4)=6である。したがって、x[6:0]=1001101およびδ[6:0]=1010101である。x[6:0]<δ[6:0]なので、σ(x)=0=0(10)である。次に、σ(x)を19+5+1+0=25(10)として計算することができる。
上で注記したように、φ(x)を反復的に決定することができる。最初の反復k=1について、σ(1)(x)を、上で説明したように線形アドレスxについて決定することができる。次の反復k=2について、x(2)を得るために、σ(1)(x)をxと合計することができる。次に、上で説明したように、x(2)についてσ(2)(x)を決定することができる。σ(K+1)(x)=σ(K)(x)になるまで、K+1回の反復を実行することができる。その後、φ(x)を、σ(K+1)(x)と等しくなるようにセットすることができる。
パラメータLを伴うプルーンBRIマッピングy=βn,L(x)に基づく線形アドレスxのインタリーブされたアドレスyを、次のように決定することができる。まず、中間アドレスvを、
Figure 0005231570
として計算することができ、ここで、φ(x)は、上で説明したように、σ(k)(x)に基づいて反復的に決定することができる。
次に、インタリーブされたアドレスyを、次のように、中間アドレスvにBRIマッピングを適用することによって決定することができる。
Figure 0005231570
図8に、n=8の場合のプルーンBRIのアドレスジェネレータ800の設計のブロック図を示す。L−1のビット表現は、最大n−1個の0ビットを含む。論理回路810は、L−1を受け取り、n−1個の出力δ[i:0]、ただしi=1,…,n−1を生成する。論理回路810は、δ[i:0]出力が有効であるか否かを示すために、δ[i:0]出力ごとにイネーブル信号enをも生成する。
n−1個の比較器812aから812gのセットが、論理回路810からのn−1個のδ[i:0]出力およびk回目の反復の線形アドレスx(k)から得られたやはりn−1個のx(k)[i:0]入力を受け取る。各比較器812は、そのx(k)[i:0]をそのδ[i:0]と比較し、x(k)[i:0]がδ[i:0]未満である場合には0(たとえば、論理ロウ)を供給し、そうでない場合には1(たとえば、論理ハイ)を供給する。
1ビット全加算器のバンク820が、線形アドレスx(k)および比較器812の出力に基づいて、反復kごとにσ(k)(x)を計算する。バンク820は、n−2個のδ[i:0]出力のためのn−2行の加算器822aから822fを含む。加算器822の各行は、x[n−1:i+1]および加算器の先行する行(存在する場合に)からの出力を受け取る。加算器822の各行は、関連する比較器812が論理ロウを供給する場合にはσ(x)=x[n−1:i+1]を、あるいは、関連する比較器812が論理ハイを供給する場合にはσ(x)=x[n−1:i+1]+1を生成する。加算器822の各行は、en信号が論理ロウの場合には先行する行からの出力を渡し、en信号が論理ハイの場合には先行する行からの出力をσ(x)と合計する。
n−2行の加算器822aから822fは、集合的に、n−2個の比較器812aから812fからの制御信号に依存して、x(k)の右シフトされたコピー(σ(x)である)を累算することによってアルゴリズム3を実施し、ここで、x(k)=x+σ(k−1)(x)が、k回目の反復について加算器の行に入力される。加算器822の各行は、en信号が論理ハイの場合に、σ(x)を加算器の先行する行からの出力と累算する。加算器の最後の行822fは、すべての反復が完了した後にφ(x)と等しくなるσ(k)(x)を供給する。
各1ビット全加算器は、線形アドレスx(k)からの第1入力ビット、上の別の加算器からの第2入力ビット、左の別の加算器からのキャリーインビット、および論理ユニット810からのen信号を受け取る。各加算器は、3つの入力ビットを合計し、下の加算器に合計ビットを、右または下の加算器にキャリーアウトビットを供給する。en信号がデアサートされている場合には、第1入力ビットがゼロにされる。
各比較器812は、x[i:0]≧δ[i:0]の場合には1、そうでない場合には0を生成する。各比較器812は、その出力をキャリーインビットとして同一行内の最初の加算器に供給する。これは、x[i:0]≧δ[i:0]の場合に選択的にσ(x)に1を加算する。最後の行824内の加算器は、δn−1(x)≧L−1の場合にσn−1(x)に1を加算することに対応する出力を生成する。δn−1(x)の最大値はL−1なので、同等比較器812gが十分である。
加算器の最後の行822fからの出力は、k回目の反復のσ(k)(x)に対応する。最初の反復について、xは、加算器バンク820に供給される。各後続の反復について、加算器の行824は、次の反復k+1の新しい線形アドレスとして供給されるx(k+1)=x+σ(k)(x)を得るために、加算器の最後の行822fからのσ(k)(x)とxを合計する。
加算器バンク820の出力を、φ(x)を読み取るためにn−1クロックサイクルおきに標本化することができる。比較器を、早期終了のためにσ(k)(x)およびσ(k+1)(x)を比較するために追加することができる(図8には図示せず)。加算器の行824は、式(11)に示されているように、加算器の最後の行822fからのφ(x)を線形アドレスxと合計し、中間アドレスvを供給する。BRIユニット826は、vを受け取り、式(12)に示されているように、プルーンBRIのインタリーブされたアドレスyとしてvのビット逆転を供給する。
図8に示された設計について、クリティカルパス遅延は、重要なnのほとんどの値について現在の集積回路(IC)プロセステクノロジによって満足できる2n−2ステージである。比較器812は、XORツリーを用いて実施することができ、無視できる遅延を導入することができる。
図9に、図8の論理回路810の設計のブロック図を示す。論理回路810内では、ビット逆転ユニット910が、L−1を受け取り、ビット逆転されたL−1を供給する。n−1個のユニット912aから912gは、ビット逆転されたL−1を受け取り、n−1個の出力δ[1:0]からδ[7:0]をそれぞれ生成する。δ[i:0]出力のためのユニット912i内では、インバータ916が、ビット逆転されたL−1の第iビットを受け取り、δ[i:0]出力のen信号を供給する。en信号は、第iビットが0の場合に論理ハイであり、そうでない場合に論理ロウである。ユニット912iは、図8の関連する比較器812へのδ[i:0]出力としてインバータ916の出力ならびにビット0からi−1までを供給する。ANDゲート918は、ビットi+1からn−1までを0にする。
図10に、アルゴリズム2に基づくルックアヘッドプルーンBRIのアドレスジェネレータ1000の設計のブロック図を示す。長さNのパケットを、長さLのP個のサブパケットに区分することができ、ここで、L、P、およびNは、それぞれ、任意の適切な整数とすることができる。各サブパケットを、独立にインタリーブすることができる。P−1個のブロック1010bから1010pは、それぞれ、サブパケット1からP−1の無効なマッピングの個数を計算する。サブパケットjのブロック1010は、φ(j・L−1)、ただしj=1,…,P−1と表される、0からj・L−1までの範囲内の無効なマッピングの個数を計算する。P−1個のコンポーネントプルーンBRI 1020bから1020pは、それぞれブロック1010bから1010pからφ(j・L−1)を受け取ることができる。コンポーネントプルーンBRI 1020aは、φ(0)の0を受け取ることができる。コンポーネントプルーンBRI 1020ごとに、φ(j・L−1)を、サブパケットjをインタリーブするためのプルーンBRIを初期化するのに使用することができる。
ある設計では、シーケンシャルプルーンBRIアルゴリズム(たとえば、アルゴリズム1)を、コンポーネントプルーンBRI 1020ごとに使用することができる。別の設計では、各コンポーネントプルーンBRI 1020は、2L個の加算器、2L個の比較器、多重化装置、および制御論理を使用して、L個の整数を並列にインタリーブすることができる。並列設計は、小さい値のL、たとえば16までのLに適切とすることができる。
図10に示された設計は、長さLのサブパケットについて、2L個の整数にまたがる範囲内に多くともL個の無効なマッピングがありえるという事実を活用するものである。したがって、第jコンポーネントプルーンBRIは、L個の整数j・Lから(j+1)・L−1を、範囲j・L+φ(j・L−1)からj・L+φ(j・L−1)+2L−1までの最初のL個の有効なインタリーブされたアドレスにマッピングする。コンポーネントプルーンBRIは、2L個の合計j・L+φ(j・L−1)からj・L+φ(j・L−1)+2L−1を計算し、それらが有効なアドレスであるかどうかを決定するためにそのビット逆転された値をN−1と比較し、有効なアドレスを多重化装置に渡す。図10のルックアヘッドプルーンBRIは、完全シーケンシャルプルーンBRIに対して、直列コンポーネントプルーンBRIを使用してP倍、並列コンポーネントプルーンBRIを使用してL倍だけ高い動作速度を有することができる。しかし、ルックアヘッドプルーンBRIの複雑さは、Lのより大きい値に関してすばやく増える。
系統的フィードバック成分畳込み符号器と共に使用される時に符号語の乱数様重みスペクトルを作るために、ターボインタリーバをターボ符号器(たとえば、図3に示された)内で使用することができる。ターボインタリーバは、第1成分符号器310aからの低重みパリティシーケンスを第2成分符号器310bからの高重みパリティシーケンスと対にすることによって、入力シーケンス内のパターンを壊す。ターボインタリーバは、線形アドレスのシーケンスを2D配列に一方の方向で(たとえば、行ごとに)書き込み、次に行エントリおよび列エントリに独立擬似乱数置換を適用し、次にシャッフルされたアドレスを他方の方向(たとえば、列ごとに)で読み取る、ブロックインタリーバに基づくものとすることができる。配列の各行内のエントリに適用される置換は、線形合同シーケンスに基づくものとすることができる。配列の各列内のエントリに適用される置換は、チャネルインタリーバで使用されるものに似たビット逆転関数に基づくものとすることができる。可変パケットサイズに対処するために、ターボインタリーバについて切り詰め(pruning)を使用することができる。
1つの設計で、ターボインタリーバを、次のように実施することができる。まず、小さい正の整数rを、ターボインタリーバのメモリバンクアーキテクチャに基づいて選択することができる。たとえば、ターボインタリーバメモリが32行について2=32個のバンクからなるようにするために、rを5と等しい(UMBと同様に)ものとすることができる。次に、最小の正の整数nを、L≦2r+nになるように決定する。これは、L個のエントリを保持できる最小サイズの2×2配列を見つけることと同等である。この配列内の行の個数は、2によって与えられ、この配列内の列の個数は、2によって与えられる。
行および2列を有する配列を、行ごとに上から下へ、0からM−1までの線形アドレスのシーケンスによって充てんすることができ、ここで、M=2・2である。次に、この配列のM個のエントリを、下で説明するようにシャッフルすることができる。次に、M個のシャッフルされたエントリを、線形アドレスのシーケンスに対応するインタリーブされたアドレスのシーケンスを得るために、列ごとに左から右に読み取ることができる。
この配列のエントリを、2個の行の順序を置換し、各行の2個のエントリに独立の置換を適用することによってシャッフルすることができる。2個の行を、ビット逆転された順序でシャッフルすることができる。行シャッフリングの結果は、インタリーブされた行のセットである。各行の2個のエントリを、行インデックスおよびnに基づくルックアップテーブル(LUT)を使用してそのパラメータを決定できる線形合同シーケンス(LCS)再帰を使用して独立にシャッフルすることができる。LCS動作の結果は、行ごとのインタリーブされた列値のセットである。LCS動作および行置換の順序を、入れ替えることもできる。最後に、線形アドレスの順序に関して反対の順序でインタリーブされた列値および行値を組み合わせることによって、インタリーブされたアドレスを得ることができる。最後のステップは、配列が充てんされた(たとえば、行ごと)のと反対の順序(たとえば、列ごと)で配列内のインタリーブされたエントリを読み取ることによって達成することができる。各インタリーブされたエントリは、インタリーブされたアドレスを含む。インタリーブされたアドレスが、L以上である場合に、そのアドレスを切り詰めることができる。
例のターボインタリーバのインタリーブされたアドレスの生成を、下で説明する。この例では、r=n=3およびM=2=64である。0から63までの6ビット線形アドレスを、表2に示されているように、2×2配列に行ごとに書き込むことができる。L=44の例に関して、有効な線形アドレス0から43までが、表2では太字のテキストで示され、無効な線形アドレス44から63までが、通常のテキストで示されている。
Figure 0005231570
この配列の8行を、ビット逆転された順序でシャッフルすることができる。表3に、行置換の後のこの配列内のエントリを示す。
Figure 0005231570
各行内のエントリを、LCS再帰に基づいてシャッフルすることができる。たとえば、8行の8 LCS再帰の法を、5、7、5、7、1、1、1、および7とすることができる。各行のLCS再帰は、下で説明するように実行することができる。表4に、LCS再帰の後の各行のシャッフルされたエントリを示す。
Figure 0005231570
次に、インタリーブされたアドレスを、列ごとに読み取ることができる。切り詰めがなければ、インタリーブされたアドレスのシーケンスを、5、39、21、55、9、41、25、63、2などとして与えることができる。L=44以上のアドレスの切り詰めを用いると、インタリーブされたアドレスのシーケンスを、5、39、21、9、41、25、2などとして与えることができる。
(r+n)ビットのインタリーブされたアドレスyへの(r+n)ビット線形アドレスxのマッピングは、次のターボインタリーバ関数によって指定することができる。
Figure 0005231570
ここで、ρr,n()は、ターボインタリーバ関数である。
切り詰めなしのターボインタリーバ関数は、
Figure 0005231570
として表すことができ、ここで、π()は、rビットBRI関数であり、LUTは、nおきの2個のLCS再帰の法を格納するルックアップテーブルである。
式(14)は、インタリーブされたアドレスを2つの部分で提供する。第1部分は、所与の行内のすべての2個のエントリに適用可能な行値を提供するビット逆転関数2・π(x mod 2)によって決定される。第2部分は、0から2−1までの範囲内の列値を提供するLCS関数によって決定される。インタリーブされたアドレスは、行値と列値との合計をとることによって得られる。
パラメータr=n=3および切り詰めなしの上で説明した例のターボインタリーバについて、線形アドレスx=010001=17(10)を、次のように式(14)のターボインタリーバ関数に基づいて、インタリーブされたアドレスyにマッピングすることができる。
Figure 0005231570
式(14)のターボインタリーバ関数を、切り詰めなしでインタリーブされたアドレスを生成するのに使用することができる。式(14)によって生成されるインタリーブされたアドレスは、切り詰めを伴うと有効でない場合があり、0からxまでの範囲内のすべての整数が、有効なマッピングを有するとは限らない。
0とxとの間のすべての線形アドレスについて有効なインタリーブされたアドレスを生成できるプルーンターボインタリーバ関数を、
Figure 0005231570
と表すことができ、ここで、λr,n(x,L)は、プルーンターボインタリーバ関数であり、vは、0からvまでの範囲が正確にx+1個の有効なマッピングを含むようになる最小の整数である。
L=2r+nの場合に、プルーンアドレスはなく、v=xおよびλr,n(x,L)=ρr,n(x)である。しかし、L<2r+nの場合には、プルーンアドレスがあり、プルーンターボインタリーバ関数を、
Figure 0005231570
と表すことができ、ここで、v=x+τr,n(x,L)およびτr,n(x,L)は、0からvまでの範囲が、ターボインタリーバ関数によってマッピングされる時に正確にx+1個の有効なアドレスを含むようになる、xに加算される無効なマッピングの最小個数である。次に、τr,n(x,L)を決定できる場合に、プルーンターボインタリーバ関数を、このターボインタリーバ関数を用いて実施することができる。
アルゴリズム4とも称するシーケンシャルプルーンターボインタリーバアルゴリズムを、下の擬似コードを用いて実施することができる。
Figure 0005231570
式(14)のターボインタリーバ関数は、ビット逆転関数とLCS関数との両方を含む。ビット逆転関数に関する無効なマッピングの個数は、プルーンBRIに関して上で説明したように決定することができる。LCS関数に関する無効なマッピングの個数は、下で説明するように決定することができる。LCS関数の結果を、τr,n(x,L)を決定するためにビット逆転関数の結果と組み合わせることができる。
線形合同シーケンスを、次の再帰によって定義することができる。
Figure 0005231570
ここで、m>0は法であり、
aは、0≦a<mの乗数であり、
cは、0≦c<mの増分であり、
は、線形合同シーケンス内のi番目の要素である。
LCSが、次の条件が満足される場合に限って、0とm−1との間のすべての整数を生成し、長さmの全周期を有することを示すことができる。
1.cおよびmが互いに素であり、
2.(a−1)が、mのすべての素因子の倍数であり、
3.mが4の倍数である場合に、(a−1)が4の倍数である。
ターボインタリーバの線形合同シーケンスは、たとえばUMBの場合のように、a=1およびm=2という固定パラメータを有することができる。増分cは、ルックアップテーブルに格納できる奇数定数とすることができる。このシーケンスの開始要素Yは、cまたはある他の値と等しくなるように選択することができる。この法m、乗数a、および増分cの選択は、上で与えた3つの条件を満足する。したがって、線形合同シーケンスは、全周期を有する。この場合に、シーケンス要素をX=s(i)によって与えることができ、ここで、s()は、次のように与えることができる。
Figure 0005231570
アドレスを、nビット加算器およびn×n符号なし乗数を使用して、式(18)に従ってハードウェアで生成することができる。
式(18)を参照すると、重要なのは、式(18)の下でのそのイメージが0とあるβ’との間にあり、α’≧0およびβ’≧0である、0とあるα’との間の整数の個数である。たとえば、α’を、x+1と等しいものとすることができ、β’を、プルーンインタリーバサイズLと等しいものとすることができる。そのような整数の個数(すなわち、無効なマッピングの個数)は、式(18)の値のシーケンスを通ってステップし、すべての0≦x≦α’についてs(i)をβ’と比較することによって、直接に数えることができる。無効なマッピングの個数を数えるこの直接法は、xに比例する複雑さを有する。log(x)に比例する複雑さを有する、無効なマッピングの個数を効率的に数えることのできるアルゴリズムを、下で説明する。
整数の集合Iを、次のように定義することができる。
Figure 0005231570
集合Iは、LCS関数に基づく0とβ’との間の有効なマッピングを有する0からα’−1までのすべての数を含む。
集合Iの要素の個数は、|I|と表すことができ、
Figure 0005231570
として与えることができる。
集合Iの要素の個数は、式(22)のS(c,m,α,β)の合計を決定することによって確かめることができる。この合計は、整数フロア関数を含み、閉形式表現を有しない。式(22)は、フロア関数の代わりに「鋸歯(saw-tooth)」関数((x))を使用して表すことができる。鋸歯関数((x))は、
Figure 0005231570
として表すことができる。
一般化されたデデキンド和(Dedekind sum)d(c,m,u)を、次のように鋸歯関数を使用して定義することができる。
Figure 0005231570
式(22)を、次のように一般化されたデデキンド和を使用して表すことができる。
Figure 0005231570
ここで、c=c+α・c−β、c=c+α・c、c=c、c=c−β、およびKは定数である。
式(27)の4つのデデキンド和の組合せを、次のように多くともlog(m)ステップで反復的に評価することができる。
Figure 0005231570
式(28)に基づいて4つのデデキンド和の組合せについてd’(c,m,c,c,c,c)を決定する効率的なアルゴリズムが、米国仮出願第61/016045号に記載されている。4つのデデキンド和の組合せを、米国仮出願第61/016045号に記載のハードウェアアーキテクチャを使用して効率的に決定することもできる。
整数の集合Jr,n(α’,β’)を、次のように定義することができる。
Figure 0005231570
集合Jr,n(α’,β’)は、無効なマッピングを有する0からα’−1までのすべての整数を含み、その結果、ρr,n(x)≧β’になる。α’およびβ’は、それぞれ、r+nビットを用いて表すことができる。集合Jr,n(α’,β’)に含まれる整数の個数を、μr,n(x,L)と表すことができる。
集合Jr,n(α’,β’)を、
Figure 0005231570
と表すことができ、ここで、Hr,n(α’,β’)は、xのr個のLSBに対するビット逆転関数π()を考慮することによって決定される無効なマッピングを有する整数の集合であり、
r,n(c,α’,β’)は、xのn個のMSBに対するLCS関数を考慮することによって決定される無効なマッピングを有する整数の集合であり、
「∪」は、和集合演算を表す。
集合Hr,n(α’,β’)を、次のように定義することができる。
Figure 0005231570
集合Hr,n(α’,β’)は、そのr個のLSBが、ビット逆転された時にβ’のr個のMSBによって形成される数より大きいrビット数を形成するα’未満の整数を含む。
集合Hr,n(α’,β’)に含まれる整数の個数は、μ’r,n(α’,β’)と表すことができ、次のように決定することができる。
Figure 0005231570
式(32)では、それぞれが
Figure 0005231570
個の無効なマッピングを有する
Figure 0005231570
個のフル列がある。最後の列は、
Figure 0005231570
個の無効なマッピングを有する。φ()は、x=(α’−1) mod 2
Figure 0005231570
およびM=2を用いて、プルーンBRIに関するφ()に関して上で説明したように決定することができる。
集合Kr,n(c,α’,β’)を、次のように定義することができる。
Figure 0005231570
集合Kr,n(c,α’,β’)は、(i)そのr個のLSBが、ビット逆転された時に、β’のr個のMSBとオーバーラップし、(ii)そのn個のMSBが、法2および適切に定義された乗数cを有するLCS関数によってマッピングされた時に、β’のn個のLSBによって形成される数以上のnビット数を形成する、α’未満の整数を含む。
集合Kr,n(c,α’,β’)に含まれる整数の個数を、
Figure 0005231570
と表すことができ、次のように決定することができる。
Figure 0005231570
S’(u,2,α”,β”)は、式(21)に示され、上で説明したように決定することができる。
集合Jr,n(α’,β’)に含まれる整数の総数は、
Figure 0005231570
と表すことができる。
nが、L≦2r+nになる最小の正の整数である、長さLのプルーンターボインタリーバについて、線形アドレスxを、次のように、インタリーブされたアドレスyにマッピングすることができる。まず、0からx(1)=xまでの範囲内の無効なマッピングの個数
Figure 0005231570
を、α’=x+1およびβ’=Lを用いて、式(38)に基づいて決定することができる。次に、切り詰められたアドレスを含めるために、範囲を
Figure 0005231570
に拡張することができる。次に、0からx(2)までの範囲内の無効なマッピングの個数を決定することができる。このプロセスを、正確にx+1個の有効なアドレスを含む最小サイズの範囲に達するまで繰り返すことができる。
(k+1)番目の反復での無効なマッピングの個数は、
Figure 0005231570
として与えることができる。すべての反復が完了した後に、
Figure 0005231570
の最後の値を、式(16)のτr,n(x,L)として提供することができる。次に、インタリーブされたアドレスyを、式(16)を使用してτr,n(x,L)に基づいて決定することができる。
アルゴリズム5とも称する、τr,n(x,L)を反復的に決定するアルゴリズムを、下の擬似コードを用いて実施することができる。
Figure 0005231570
パラメータLを用いるプルーンターボインタリーバ関数y=λr,n(x,L)に基づく線形アドレスxのインタリーブされたアドレスyは、次のように決定することができる。まず、中間アドレスvを次のように計算することができる。
Figure 0005231570
次に、インタリーブされたアドレスyを、次のように、中間アドレスvにターボインタリーバ関数ρr,n(v)を適用することによって決定することができる。
Figure 0005231570
ターボインタリーバ関数は、式(14)に示されているように、またはある他の形で実施することができる。
図11に、プルーンBRI、プルーンターボインタリーバなどとすることができるプルーンインタリーバのアドレスジェネレータ1100の設計のブロック図を示す。アドレスジェネレータ1100を、図2のチャネルインタリーバ250、図3のターボインタリーバ320、図5のターボインタリーバ530などに使用することができる。アドレスジェネレータ1100内では、ユニット1110が、線形アドレスxを受け取り、xに対応する無効なマッピングの総数(たとえば、φ(x)またはτr,n(x,L))を決定する。ユニット1110は、プルーンBRIのアルゴリズム2および3、プルーンターボインタリーバのアルゴリズム5、または他のタイプのインタリーバのある他のアルゴリズムを実施することができる。ユニット1110は、上で説明したように無効なマッピングの総数を反復的に計算することができる。
合計器1112は、線形アドレスxを無効なマッピングの総数と合計し、中間アドレスvを供給する。非プルーンインタリーバ関数1120は、中間アドレスvを受け取り、インタリーブされたアドレスyを供給する。関数1120は、ビット逆転関数を実施し、インタリーブされたアドレスyとして中間アドレスvのビット逆転された版を供給することができる。関数1120は、式(14)に示されたターボインタリーバ関数、式(17)または(18)に示されたLCS関数、あるいはある他のインタリーバ関数を実施することもできる。
図12に、プルーンビット逆転デインタリーバ、プルーンターボデインタリーバなどとすることができる、プルーンデインタリーバのアドレスジェネレータ1200の設計のブロック図を示す。アドレスジェネレータ1200を、図4のチャネルデインタリーバ420、図5のターボデインタリーバ540などに使用することができる。アドレスジェネレータ1200内では、非プルーンデインタリーバ関数1210が、インタリーブされたアドレスyを受け取り、中間アドレスvを供給する。関数1210は、ビット逆転関数を実施し、中間アドレスvとしてインタリーブされたアドレスyのビット逆転された版を供給することができる。関数1210は、ターボデインタリーバ関数、LCS関数、またはある他のデインタリーバ関数を実施することもできる。ユニット1220は、中間アドレスvを受け取り、たとえば1回の反復だけで、vに対応する無効なマッピングの総数を決定する。ユニット1220は、プルーンビット逆転デインタリーバのアルゴリズム2および3、プルーンターボデインタリーバのアルゴリズム5、または他のタイプのデインタリーバのある他のアルゴリズムを実施することができる。合計器1222が、中間アドレスvから無効なマッピングの総数を減算し、線形アドレスxを供給する。
図13に、データを並べ変えるプロセス1300の設計を示す。プロセス1300を、データ送信用の送信機、データ受信用の受話器、またはある他の実体によって実行することができる。プロセス1300を、チャネルインタリービング、ターボインタリービング、チャネルデインタリービング、ターボデインタリービングなどに使用することができる。
サイズLのプルーンインタリーバの第1のアドレスを受け取ることができる(ブロック1312)。第1のアドレスに対応する無効なマッピングの総数(たとえば、φ(x)またはτr,n(x,L))を決定することができる(ブロック1314)。次に、プルーンインタリーバの第2のアドレスを、第1のアドレスおよび無効なマッピングの総数に基づいて決定することができる(ブロック1316)。第1のアドレスおよび第2のアドレスは、それぞれbビットを備えることができ、0からL−1までの範囲内にあることができ、ここで、(M/2)<L<MおよびM=2である。bは、プルーンBRIではn、ターボインタリーバではr+nと等しいものとすることができる。データを、第1のアドレスおよび第2のアドレスに基づいて並べ変えることができる(ブロック1318)。
インタリービングについて、第1のアドレスは、線形アドレスを備えることができ、第2のアドレスは、インタリーブされたアドレスを備えることができる。ブロック1318について、線形アドレスのデータ値を、そのデータをインタリーブするためにインタリーブされたアドレスにマッピングすることができる。ある設計では、プルーンインタリーバは、プルーンビット逆転インタリーバを備えることができる。次に、インタリーブされたアドレスを、(i)中間アドレスを得るために線形アドレスを無効なマッピングの総数と合計し、(ii)中間アドレスのビット逆転された版をインタリーブされたアドレスとして供給することによって、決定することができる。別の設計では、プルーンインタリーバは、プルーンターボインタリーバを備えることができる。インタリーブされたアドレスを、(i)中間アドレスを得るために線形アドレスを無効なマッピングの総数と合計し、(ii)中間アドレスの非プルーンインタリーバ関数に基づいてインタリーブされたアドレスを決定することによって、決定することができる。非プルーンインタリーバ関数は、(i)配列の複数の行に関する第1のマッピング関数(たとえば、ビット逆転関数)および(ii)各行の複数のエントリに関する第2のマッピング関数(たとえば、LCS関数)を備えることができる。
デインタリーブについて、第1のアドレスは、インタリーブされたアドレスを備えることができ、第2のアドレスは、線形アドレスを備えることができる。ブロック1318について、インタリーブされたアドレスのデータ値を、そのデータをデインタリーブするために線形アドレスにマッピングすることができる。ある設計では、プルーンインタリーバは、プルーンビット逆転インタリーバを備えることができる。次に、線形アドレスを、(i)中間アドレスのビット逆転された版に基づいて中間アドレスを決定し、(ii)線形アドレスを得るために中間アドレスから無効なマッピングの総数を減算することによって、決定することができる。別の設計では、プルーンインタリーバは、プルーンターボインタリーバを備えることができる。線形アドレスを、(i)インタリーブされたアドレスの非プルーンデインタリーバ関数に基づいて中間アドレスを決定し、(ii)線形アドレスを得るために中間アドレスから無効なマッピングの総数を減算することによって、決定することができる。
ある設計では、無効なマッピングの総数を、反復的に、たとえば、所定の回数の反復(たとえば、n−1回の反復)で、または無効なマッピングの同一の総数が2つの連続する反復について得られるまで、決定することができる。各反復を、異なるタイプのプルーンインタリーバについて異なる形で実行することができる。
プルーンBRIおよびおそらくは他のプルーンインタリーバに適用可能とすることができる、ある設計では、反復kごとに、一時アドレス(たとえば、x(k))を、第1のアドレスと反復の初期値との合計に基づいて決定することができる。初期値は、最初の反復について0と等しく、各後続の反復について、前の反復からの無効なマッピングの個数(たとえば、σ(k−1)(x))と等しいものとすることができる。0から一時アドレス(たとえば、σ(k)(x))までの範囲内の無効なマッピングの個数を決定することができる。プルーンBRIについて、L−1のビット表現内の0ビットを識別することができる。L−1のビット表現内の各0ビットのカウント値(たとえば、σ(x))を、たとえば上で説明したように、一時アドレス、L−1のビット表現、およびL−1のビット表現内の0ビットの位置に基づいて決定することができる。L−1のビット表現内のすべての0ビットのカウント値を、たとえば式(10)に示されているように、0から一時アドレスまでの範囲内の無効なマッピングの個数を得るために合計することができる。
プルーンターボインタリーバおよびおそらくは他のプルーンインタリーバに適用可能とすることのできる、ある設計では、反復kごとに、一時アドレス(たとえば、x(k))を、第1のアドレスと反復の初期値との合計に基づいて決定することができる。初期値は、最初の反復について0と等しく、各後続の反復について、前の反復からの無効なマッピングの組み合わされた個数(たとえば、
Figure 0005231570
)と等しいものとすることができる。0から一時アドレスまでの範囲内の無効なマッピングの第1個数(たとえば、μ’r,n(α’,β’))を、たとえば式(32)に示されているように、第1のマッピング関数によって決定される第1カウント関数に基づいて決定することができる。0から一時アドレスまでの範囲内の無効なマッピングの第2個数(たとえば、
Figure 0005231570
)を、たとえば式(34)に示されているように、第2のマッピング関数によって決定される第2カウント関数に基づいて決定することができる。反復に関する無効なマッピングの組み合わされた個数(たとえば、μr,n(α’,β’))を、たとえば式(38)に示されているように、無効なマッピングの第1個数および第2個数に基づいて決定することができる。第1カウント関数は、ビット逆転関数に基づくものとすることができる。第2カウント関数は、LCS関数に基づくものとすることができ、デデキンド和の組合せを備えることができる。第1および第2のカウント関数を、他のマッピング関数について他の形で定義することもできる。
当業者は、情報および信号を、さまざまな異なるテクノロジおよび技法のいずれをも使用して表すことができることを理解するであろう。たとえば、上の説明全体を通じて参照される可能性があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップを、電圧、電流、電磁波、磁場または磁性粒子、光場または光粒子、あるいはその任意の組合せによって表すことができる。
当業者は、本明細書の開示に関連して説明されたさまざまな例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップを、電子ハードウェア、コンピュータソフトウェア、またはこの両方の組合せとして実施できることを、さらに了解するであろう。ハードウェアおよびソフトウェアのこの交換可能性を明瞭に示すために、さまざまな例示的なコンポーネント、ブロック、モジュール、回路、およびステップを、上では一般にその機能性に関して説明した。そのような機能性がハードウェアまたはソフトウェアのどちらとして実施されるかは、特定の応用例および全体的なシステムに課せられる設計制約に依存する。当業者は、説明された機能性を各特定の応用例のためにさまざまな形で実施することができるが、そのような実施判断が、本開示の範囲からの逸脱を引き起こすと解釈してはならない。
本明細書の開示に関連して説明されたさまざまな例示的な論理ブロック、モジュール、および回路を、汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブルロジックデバイス、ディスクリートゲートもしくはトランジスタロジック、ディスクリートハードウェアコンポーネント、または本明細書で説明される機能を実行するように設計されたその任意の組合せを用いて実施し、または実行することができる。汎用プロセッサは、マイクロプロセッサとすることができるが、代替案では、プロセッサを、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械とすることができる。プロセッサを、コンピューティングデバイスの組合せ、たとえば、DSPおよびマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアに関連する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実施することもできる。
本明細書の開示に関連して説明された方法またはアルゴリズムのステップを、ハードウェアで直接に、プロセッサによって実行されるソフトウェアモジュールで、またはこの2つの組合せで実施することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で既知の任意の他の形の記憶媒体に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、これに情報を書き込むことができるように、プロセッサに結合される。代替案では、記憶媒体を、プロセッサに一体とすることができる。プロセッサおよび記憶媒体が、ASICに常駐することができる。そのASICが、ユーザ端末に常駐することができる。代替案では、プロセッサおよび記憶媒体が、ユーザ端末内に別個のコンポーネントとして常駐することができる。
1つまたは複数の例示的設計では、説明された機能を、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せで実施することができる。ソフトウェアで実施される場合に、機能を、コンピュータ可読媒体上の1つまたは複数の命令またはコードとして格納し、あるいは伝送することができる。コンピュータ可読媒体は、コンピュータ記憶媒体と、ある場所から別の場所へのコンピュータプログラムの転送を容易にするすべての媒体を含む通信媒体との両方を含む。記憶媒体は、汎用コンピュータまたは特殊目的コンピュータによってアクセスできるすべての使用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは命令もしくはデータ構造の形で所望のプログラムコード手段を担持しまたは格納するのに使用でき、汎用コンピュータもしくは特殊目的コンピュータまたは汎用プロセッサもしくは特殊目的プロセッサによってアクセスできる任意の他の媒体を備えることができる。また、すべての接続を、当然、コンピュータ可読媒体と呼ぶことができる。たとえば、ソフトウェアが、ウェブサイト、サーバ、または他の遠隔ソースから同軸ケーブル、光ファイバケーブル、より対線、ディジタル加入者回線(DSL)、または赤外線、ラジオ、およびマイクロ波などの無線テクノロジを使用して伝送される場合に、同軸ケーブル、光ファイバケーブル、より対線、DSL、または赤外線、ラジオ、およびマイクロ波などの無線テクノロジは、媒体の定義に含まれる。ディスク(disk and disc)は、本明細書で使用される時に、コンパクトディスク(CD)、レーザディスク、光ディスク、ディジタル多用途ディスク(DVD)、フロッピディスク、およびblu−rayディスクを含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれなければならない。
本開示の前の説明は、すべての当業者が本開示を作るか使用することを可能にするために提供される。本開示に対するさまざまな変更は、当業者に直ちに明白になり、本明細書で定義される包括的原理は、本開示の範囲から逸脱せずに他の変形形態に適用することができる。したがって、本開示は、本明細書で説明される例および設計に限定されることを意図されてはおらず、本明細書で開示される原理および新規の特徴と一貫する最も広い範囲に従わなければならない。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
プルーンインタリーバ用の第1のアドレスを受け取ることと、
前記第1のアドレスに対応する無効なマッピングの総数を決定することと、
前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定することと、
前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えることと
を含む、データを処理する方法。
[C2]
前記第1のアドレスは、線形アドレスを含み、前記第2のアドレスは、インタリーブされたアドレスを含み、データを並べ変えることは、
前記データをインタリーブするために、前記線形アドレスにあるデータ値を前記インタリーブされたアドレスにマッピングすること
を含む、[C1]に記載の方法。
[C3]
前記プルーンインタリーバは、プルーンビット逆転インタリーバを含み、前記第2のアドレスを決定することは、
中間アドレスを得るために、前記線形アドレスを前記無効なマッピングの総数と合計することと、
前記インタリーブされたアドレスとして、前記中間アドレスのビット逆転された版を提供することと
を含む、[C2]に記載の方法。
[C4]
前記第2のアドレスを決定することは、
中間アドレスを得るために、前記線形アドレスを前記無効なマッピングの総数と合計することと、
前記中間アドレスの非プルーンインタリーバ関数に基づいて前記インタリーブされたアドレスを決定することと
を含む、[C2]に記載の方法。
[C5]
前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含む、[C4]に記載の方法。
[C6]
前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、[C4]に記載の方法。
[C7]
前記第1のアドレスは、インタリーブされたアドレスを含み、前記第2のアドレスは、線形アドレスを含み、データを並べ変えることは、
前記データをデインタリーブするために、前記インタリーブされたアドレスにあるデータ値を前記線形アドレスにマッピングすること
を含む、[C1]に記載の方法。
[C8]
前記プルーンインタリーバは、プルーンビット逆転インタリーバを含み、前記第2のアドレスを決定することは、
前記インタリーブされたアドレスのビット逆転された版に基づいて中間アドレスを決定することと、
前記線形アドレスを得るために、前記中間アドレスから前記無効なマッピングの総数を減算することと
を含む、[C7]に記載の方法。
[C9]
前記第2のアドレスを決定することは、
前記インタリーブされたアドレスの非プルーンデインタリーバ関数に基づいて中間アドレスを決定することと、
前記線形アドレスを得るために、前記中間アドレスから前記無効なマッピングの総数を減算することと
を含む、[C7]に記載の方法。
[C10]
前記無効なマッピングの総数は、反復的に決定される、[C1]に記載の方法。
[C11]
前記無効なマッピングの総数は、反復の所定の回数についてまたは無効なマッピングの同一の総数が2つの連続する反復について得られるまで決定される、[C10]に記載の方法。
[C12]
前記無効なマッピングの総数を決定することは、反復ごとに、
前記第1のアドレスと前記反復の初期値との合計に基づいて一時アドレスを決定することと、
0から前記一時アドレスまでの範囲内の無効なマッピングの個数を決定することと
を含む、[C10]に記載の方法。
[C13]
前記初期値は、最初の反復について0と等しく、各後続の反復について前の反復からの前記無効なマッピングの個数と等しい、[C12]に記載の方法。
[C14]
前記プルーンインタリーバは、Lのサイズを有し、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの個数を決定することは、
L−1のビット表現内の0ビットを識別することと、
L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定することと、
0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計することと
を含む、[C12]に記載の方法。
[C15]
前記無効なマッピングの総数を決定することは、
前記第1のマッピング関数に基づいて前記第1のアドレスの無効なマッピングの第1の個数を決定することと、
前記第2のマッピング関数に基づいて前記第1のアドレスの無効なマッピングの第2の個数を決定することと、
前記無効なマッピングの第1の個数および第2の個数に基づいて前記無効なマッピングの総数を決定することと
を含む、[C5]に記載の方法。
[C16]
前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定することは、反復ごとに、
前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定することと、
前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第1の個数を決定することと、
前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定することと、
前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定することと
を含む、[C5]に記載の方法。
[C17]
前記初期値は、最初の反復について0と等しく、各後続の反復について前の反復からの無効なマッピングの前記組み合わされた個数と等しい、[C16]に記載の方法。
[C18]
前記第1のカウント関数は、前記第1のマッピング関数のビット逆転関数に基づいて決定される、[C16]に記載の方法。
[C19]
前記第2のカウント関数は、前記第2のマッピング関数の線形合同シーケンス(LCS)関数に基づいて決定される、[C16]に記載の方法。
[C20]
前記第2のカウント関数は、デデキンド和の組合せを含む、[C16]に記載の方法。
[C21]
前記第1のアドレスおよび前記第2のアドレスは、それぞれ、bビットを含み、0からL−1までの範囲内にあり、Lは、前記プルーンインタリーバのサイズであり、(M/2)<L<MおよびM=2 である、[C1]に記載の方法。
[C22]
プルーンインタリーバ用の第1のアドレスを受け取り、前記第1のアドレスに対応する無効なマッピングの総数を決定し、前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定し、前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えるように構成された少なくとも1つのプロセッサ
を備える、データを処理する装置。
[C23]
前記少なくとも1つのプロセッサは、中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計し、前記中間アドレスのビット逆転された版を前記第2のアドレスとして提供するように構成される、[C22]に記載の装置。
[C24]
前記少なくとも1つのプロセッサは、中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計し、前記中間アドレスの非プルーンインタリーバ関数に基づいて前記第2のアドレスを決定するように構成される、[C22]に記載の装置。
[C25]
前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、[C24]に記載の装置。
[C26]
前記少なくとも1つのプロセッサは、前記無効なマッピングの総数を反復的に決定し、反復ごとに、前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定し、0から前記一時アドレスまでの範囲内の無効なマッピングの個数を決定するように構成される、[C22]に記載の装置。
[C27]
前記プルーンインタリーバは、Lのサイズを有し、反復ごとに、前記少なくとも1つのプロセッサは、L−1のビット表現内の0ビットを識別し、L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定し、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計するように構成される、[C26]に記載の装置。
[C28]
前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含み、前記少なくとも1つのプロセッサは、前記無効なマッピングの総数を反復的に決定し、反復ごとに、前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定し、前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定し、前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定し、前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定するように構成される、[C24]に記載の装置。
[C29]
前記装置は、集積回路である、[C22]に記載の装置。
[C30]
前記装置は、無線通信デバイスである、[C22]に記載の装置。
[C31]
プルーンインタリーバ用の第1のアドレスを受け取るための手段と、
前記第1のアドレスに対応する無効なマッピングの総数を決定するための手段と、
前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定するための手段と、
前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えるための手段と
を備える、データを処理する装置。
[C32]
前記第2のアドレスを決定するための手段は、
中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計するための手段と、
前記中間アドレスのビット逆転された版を前記第2のアドレスとして提供するための手段と
を備える、[C31]に記載の装置。
[C33]
前記第2のアドレスを決定するための前記手段は、
中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計するための手段と、
前記中間アドレスの非プルーンインタリーバ関数に基づいて前記第2のアドレスを決定するための手段と
を備える、[C31]に記載の装置。
[C34]
前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、[C33]に記載の装置。
[C35]
前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定するための手段は、反復ごとに、
前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定するための手段と、
0から前記一時アドレスまでの範囲内の無効なマッピングの個数を決定するための手段と
を備える、[C31]に記載の装置。
[C36]
前記プルーンインタリーバは、Lのサイズを有し、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの個数を決定するための手段は、
L−1のビット表現内の0ビットを識別するための手段と、
L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定するための手段と、
0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計するための手段と
を備える、[C35]に記載の装置。
[C37]
前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含み、前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定するための前記手段は、反復ごとに、
前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定するための手段と、
前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定するための手段と、
前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定するための手段と、
前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定するための手段と
を備える、[C33]に記載の装置。
[C38]
少なくとも1つのコンピュータにプルーンインタリーバ用の第1のアドレスを受け取らせるコードと、
前記少なくとも1つのコンピュータに前記第1のアドレスに対応する無効なマッピングの総数を決定させるコードと、
前記少なくとも1つのコンピュータに前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定させるコードと、
前記少なくとも1つのコンピュータに前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えさせるコードと
を含む、コンピュータ可読媒体
を備える、コンピュータプログラム製品。

Claims (38)

  1. プルーンインタリーバ用の第1のアドレスを受け取ることと、
    少なくとも部分的に、前記第1のアドレスと初期値との合計に基づいて一時アドレスを決定することによって、および、0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定することによって、前記第1のアドレスに対応する無効なマッピングの総数を決定することと、
    前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定することと、
    前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えることと
    を含む、データを処理する方法。
  2. 前記第1のアドレスは、線形アドレスを含み、前記第2のアドレスは、インタリーブされたアドレスを含み、データを並べ変えることは、
    前記データをインタリーブするために、前記線形アドレスにあるデータ値を前記インタリーブされたアドレスにマッピングすること
    を含む、請求項1に記載の方法。
  3. 前記プルーンインタリーバは、プルーンビット逆転インタリーバを含み、前記第2のアドレスを決定することは、
    中間アドレスを得るために、前記線形アドレスを前記無効なマッピングの総数と合計することと、
    前記インタリーブされたアドレスとして、前記中間アドレスのビット逆転された版を提供することと
    を含む、請求項2に記載の方法。
  4. 前記第2のアドレスを決定することは、
    中間アドレスを得るために、前記線形アドレスを前記無効なマッピングの総数と合計することと、
    前記中間アドレスの非プルーンインタリーバ関数に基づいて前記インタリーブされたアドレスを決定することと
    を含む、請求項2に記載の方法。
  5. 前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含む、請求項4に記載の方法。
  6. 前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、請求項4に記載の方法。
  7. 前記第1のアドレスは、インタリーブされたアドレスを含み、前記第2のアドレスは、線形アドレスを含み、データを並べ変えることは、
    前記データをデインタリーブするために、前記インタリーブされたアドレスにあるデータ値を前記線形アドレスにマッピングすること
    を含む、請求項1に記載の方法。
  8. 前記プルーンインタリーバは、プルーンビット逆転インタリーバを含み、前記第2のアドレスを決定することは、
    前記インタリーブされたアドレスのビット逆転された版に基づいて中間アドレスを決定することと、
    前記線形アドレスを得るために、前記中間アドレスから前記無効なマッピングの総数を減算することと
    を含む、請求項7に記載の方法。
  9. 前記第2のアドレスを決定することは、
    前記インタリーブされたアドレスの非プルーンデインタリーバ関数に基づいて中間アドレスを決定することと、
    前記線形アドレスを得るために、前記中間アドレスから前記無効なマッピングの総数を減算することと
    を含む、請求項7に記載の方法。
  10. 前記無効なマッピングの総数は、反復的に決定される、請求項1に記載の方法。
  11. 前記無効なマッピングの総数は、反復の所定の回数についてまたは無効なマッピングの同一の総数が2つの連続する反復について得られるまで決定される、請求項10に記載の方法。
  12. 前記初期値は、最初の反復について0と等しく、各後続の反復について前の反復からの前記無効なマッピングの第1の個数と等しい、請求項10に記載の方法。
  13. 前記プルーンインタリーバは、Lのサイズを有し、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を決定することは、
    L−1のビット表現内の0ビットを識別することと、
    L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定することと、
    0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計することと
    を含む、請求項10に記載の方法。
  14. 前記無効なマッピングの総数を決定することは、
    前記第1のマッピング関数に基づいて前記第1のアドレスの前記無効なマッピングの第1の個数を決定することと、
    前記第2のマッピング関数に基づいて前記第1のアドレスの無効なマッピングの第2の個数を決定することと、
    前記無効なマッピングの第1の個数および第2の個数に基づいて前記無効なマッピングの総数を決定することと
    さらに含む、請求項5に記載の方法。
  15. 前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定することは、反復ごとに、
    前記第1のアドレスおよび前記反復の初期値の合計に基づいて前記一時アドレスを決定することと、
    前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を決定することと、
    前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定することと、
    前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定することと
    を含む、請求項5に記載の方法。
  16. 前記初期値は、最初の反復について0と等しく、各後続の反復について前の反復からの無効なマッピングの前記組み合わされた個数と等しい、請求項15に記載の方法。
  17. 前記第1のカウント関数は、前記第1のマッピング関数のビット逆転関数に基づいて決定される、請求項15に記載の方法。
  18. 前記第2のカウント関数は、前記第2のマッピング関数の線形合同シーケンス(LCS)関数に基づいて決定される、請求項15に記載の方法。
  19. 前記第2のカウント関数は、デデキンド和の組合せを含む、請求項15に記載の方法。
  20. 前記第1のアドレスおよび前記第2のアドレスは、それぞれ、bビットを含み、0からL−1までの範囲内にあり、Lは、前記プルーンインタリーバのサイズであり、(M/2)<L<MおよびM=2である、請求項1に記載の方法。
  21. プルーンインタリーバ用の第1のアドレスを受け取り、少なくとも部分的に、前記第1のアドレスおよび初期値の合計に基づいて一時アドレスを決定することによって、および、0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定することによって、前記第1のアドレスに対応する無効なマッピングの総数を決定し、前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定し、前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えるように構成された少なくとも1つのプロセッサ
    を備える、データを処理する装置。
  22. 前記少なくとも1つのプロセッサは、中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計し、前記中間アドレスのビット逆転された版を前記第2のアドレスとして提供するようにさらに構成される、請求項21に記載の装置。
  23. 前記少なくとも1つのプロセッサは、中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計し、前記中間アドレスの非プルーンインタリーバ関数に基づいて前記第2のアドレスを決定するようにさらに構成される、請求項21に記載の装置。
  24. 前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、請求項23に記載の装置。
  25. 前記プルーンインタリーバは、Lのサイズを有し、前記無効なマッピングの総数は、反復的に決定され、反復ごとに、前記少なくとも1つのプロセッサは、L−1のビット表現内の0ビットを識別し、L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定し、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計するようにさらに構成される、請求項21に記載の装置。
  26. 前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含み、前記少なくとも1つのプロセッサは、前記無効なマッピングの総数を反復的に決定し、反復ごとに、前記第1のアドレスおよび前記反復の初期値の合計に基づいて前記一時アドレスを決定し、前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの範囲内の無効なマッピングの前記第1の個数を決定し、前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定し、前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定するように構成される、請求項23に記載の装置。
  27. 前記装置は、集積回路である、請求項21に記載の装置。
  28. 前記装置は、無線通信デバイスである、請求項21に記載の装置。
  29. プルーンインタリーバ用の第1のアドレスを受け取るための手段と、
    前記第1のアドレスに対応する無効なマッピングの総数を決定するための1つまたは複数の回路手段であって、
    前記第1のアドレスおよび初期値の合計に基づいて一時アドレスを決定するための手段と、
    0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定するための手段と
    を含む、1つまたは複数の回路手段と、
    前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定するための手段と、
    前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えるための手段と
    を備える、データを処理する装置。
  30. 前記第2のアドレスを決定するための手段は、
    中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計するための手段と、
    前記中間アドレスのビット逆転された版を前記第2のアドレスとして提供するための手段と
    を備える、請求項29に記載の装置。
  31. 前記第2のアドレスを決定するための前記手段は、
    中間アドレスを得るために、前記第1のアドレスを前記無効なマッピングの総数と合計するための手段と、
    前記中間アドレスの非プルーンインタリーバ関数に基づいて前記第2のアドレスを決定するための手段と
    を備える、請求項29に記載の装置。
  32. 前記非プルーンインタリーバ関数は、ビット逆転関数および線形合同シーケンス(LCS)関数を含む、請求項31に記載の装置。
  33. 前記プルーンインタリーバは、Lのサイズを有し、前記無効なマッピングの総数は、反復的に決定され、0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を決定するための手段は、
    L−1のビット表現内の0ビットを識別するための手段と、
    L−1の前記ビット表現内の各0ビットのカウント値を、前記一時アドレス、L−1の前記ビット表現、およびL−1の前記ビット表現内の前記0ビットの位置に基づいて決定するための手段と、
    0から前記一時アドレスまでの前記範囲内の前記無効なマッピングの第1の個数を得るために、L−1の前記ビット表現内のすべての0ビットのカウント値を合計するための手段と
    を備える、請求項29に記載の装置。
  34. 前記非プルーンインタリーバ関数は、配列の複数の行に関する第1のマッピング関数および各行内の複数のエントリに関する第2のマッピング関数を含み、前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定するための前記手段は、反復ごとに、
    前記第1のアドレスおよび前記反復の初期値の合計に基づいて一時アドレスを決定するための手段と、
    前記第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの範囲内の無効なマッピングの第1の個数を決定するための手段と、
    前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定するための手段と、
    前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定するための手段と
    を備える、請求項31に記載の装置。
  35. プルーンインタリーバ用の第1のアドレスを受け取ることを少なくとも1つのコンピュータによって実行可能な命令と、
    少なくとも部分的に、前記第1のアドレスと初期値との合計に基づいて一時アドレスを決定することによって、および、0から前記一時アドレスまでの範囲内の無効なマッピングの第1の数を決定することによって、前記第1のアドレスに対応する無効なマッピングの総数を決定することを前記少なくとも1つのコンピュータによって実行可能な命令と、
    前記第1のアドレスおよび前記無効なマッピングの総数に基づいて前記プルーンインタリーバ用の第2のアドレスを決定することを前記少なくとも1つのコンピュータによって実行可能な命令と、
    前記第1のアドレスおよび前記第2のアドレスに基づいてデータを並べ変えることを前記少なくとも1つのコンピュータによって実行可能な命令
    を含む、コンピュータ可読記憶媒体。
  36. 前記無効なマッピングの総数は、反復的に決定され、前記無効なマッピングの総数を決定することは、反復ごとに、
    前記第1のアドレスおよび前記反復の初期値の合計に基づいて前記一時アドレスを決定することと、
    第1のマッピング関数によって決定される第1のカウント関数に基づいて0から前記一時アドレスまでの範囲内の前記無効なマッピングの第1の個数を決定することと、
    前記第2のマッピング関数によって決定される第2のカウント関数に基づいて0から前記一時アドレスまでの前記範囲内の無効なマッピングの第2の個数を決定することと、なお、前記第2のカウント関数は、デデキンド和の組合せを含む、
    前記無効なマッピングの第1の個数および第2の個数に基づいて前記反復の無効なマッピングの組み合わされた個数を決定することと
    を備える、請求項1に記載の方法。
  37. 前記無効なマッピングの総数は、1つまたは複数の鋸歯関数に基づいて決定される、請求項1に記載の方法。
  38. 前記プルーンインタリーバは、プルーンサイズLと関連付けられ、さらに、非プルーンサイズM−1と関連付けられ、前記無効なマッピングの総数は、LからM−1までのマッピングを反映し、前記コンピュータ可読記憶媒体はさらに、前記LからM−1までのマッピングを複数の整数のクラスにグループ化することと、前記整数のクラスのうち1つまたは複数に、少なくとも部分的に、基づいて前記無効なマッピングの第1の個数を決定することとを前記少なくとも1つのコンピュータによって実行可能な命令をさらに備える、請求項35に記載のコンピュータ可読記憶媒体。
JP2010539758A 2007-12-21 2008-12-17 プルーンインタリーバおよびプルーンデインタリーバの効率的なアドレス生成 Active JP5231570B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US1604507P 2007-12-21 2007-12-21
US61/016,045 2007-12-21
US12/336,167 2008-12-16
US12/336,167 US8751769B2 (en) 2007-12-21 2008-12-16 Efficient address generation for pruned interleavers and de-interleavers
PCT/US2008/087276 WO2009085871A2 (en) 2007-12-21 2008-12-17 Efficient address generation for pruned interleavers and de-interleavers

Publications (2)

Publication Number Publication Date
JP2011508530A JP2011508530A (ja) 2011-03-10
JP5231570B2 true JP5231570B2 (ja) 2013-07-10

Family

ID=40790051

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010539758A Active JP5231570B2 (ja) 2007-12-21 2008-12-17 プルーンインタリーバおよびプルーンデインタリーバの効率的なアドレス生成

Country Status (7)

Country Link
US (1) US8751769B2 (ja)
EP (1) EP2238690A2 (ja)
JP (1) JP5231570B2 (ja)
KR (2) KR20130057488A (ja)
CN (1) CN101904102B (ja)
TW (1) TW200935758A (ja)
WO (1) WO2009085871A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101435830B1 (ko) * 2007-06-20 2014-08-29 엘지전자 주식회사 인터리빙 수행 방법
EP2202933B1 (en) * 2008-12-23 2016-10-26 Telefonaktiebolaget LM Ericsson (publ) Technique for generating an sc-fdma signal
EP2579468B1 (en) * 2011-10-05 2020-05-06 Telefonaktiebolaget LM Ericsson (publ) Method and device for decoding a transport block of a communication signal
US9256531B2 (en) 2012-06-19 2016-02-09 Samsung Electronics Co., Ltd. Memory system and SoC including linear addresss remapping logic
US9495291B2 (en) * 2013-09-27 2016-11-15 Qualcomm Incorporated Configurable spreading function for memory interleaving
CN106664436B (zh) 2014-06-10 2020-01-10 Lg电子株式会社 广播信号发送设备、广播信号接收设备、广播信号发送方法、以及广播信号接收方法
WO2016027965A1 (ko) * 2014-08-21 2016-02-25 엘지전자 주식회사 방송 신호 송신 장치, 방송 신호 수신 장치, 방송 신호 송신 방법, 및 방송 신호 수신 방법
CN104301069B (zh) * 2014-09-05 2017-06-30 江苏中兴微通信息科技有限公司 基于同余类交织映射序列的交织和解交织方法及装置
CN105991505A (zh) * 2015-02-26 2016-10-05 晨星半导体股份有限公司 解回旋交错器与解回旋交错方法
CN107124189B (zh) * 2017-05-10 2020-06-09 西安空间无线电技术研究所 一种tdma系统随机交织地址动态变化的方法
US10879936B2 (en) 2018-08-23 2020-12-29 Keysight Technologies, Inc. Methods, systems, and computer readable media for de-interleaving data in a communication system
CN115374022B (zh) * 2022-10-27 2023-02-07 北京象帝先计算技术有限公司 内存访问方法、装置、系统及电子设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6871303B2 (en) 1998-12-04 2005-03-22 Qualcomm Incorporated Random-access multi-directional CDMA2000 turbo code interleaver
US6304991B1 (en) 1998-12-04 2001-10-16 Qualcomm Incorporated Turbo code interleaver using linear congruential sequence
US6314534B1 (en) 1999-03-31 2001-11-06 Qualcomm Incorporated Generalized address generation for bit reversed random interleaving
JP3848858B2 (ja) 2001-05-10 2006-11-22 株式会社日立コミュニケーションテクノロジー ターボ復号器並びにターボ符号器及びターボ符号器、復号器を含む無線基地局
WO2004040774A1 (en) * 2002-10-29 2004-05-13 Samsung Electronics Co., Ltd. Method and apparatus for deinterleaving interleaved data stream in a communication system
KR20040037624A (ko) 2002-10-29 2004-05-07 삼성전자주식회사 인터리빙된 데이터 열의 디인터리빙 방법 및 장치
US8599764B2 (en) * 2003-09-02 2013-12-03 Qualcomm Incorporated Transmission of overhead information for reception of multiple data streams
KR100877536B1 (ko) 2003-10-24 2009-01-07 콸콤 인코포레이티드 다수의 데이터 스트림들의 수신을 위한 오버헤드 정보의전송
US7437650B2 (en) * 2005-04-12 2008-10-14 Agere Systems Inc. Pre-emptive interleaver address generator for turbo decoders

Also Published As

Publication number Publication date
CN101904102B (zh) 2013-09-11
JP2011508530A (ja) 2011-03-10
KR101331516B1 (ko) 2013-11-21
CN101904102A (zh) 2010-12-01
TW200935758A (en) 2009-08-16
WO2009085871A3 (en) 2010-02-25
US8751769B2 (en) 2014-06-10
US20090164748A1 (en) 2009-06-25
EP2238690A2 (en) 2010-10-13
KR20130057488A (ko) 2013-05-31
WO2009085871A2 (en) 2009-07-09
KR20100105729A (ko) 2010-09-29

Similar Documents

Publication Publication Date Title
JP5231570B2 (ja) プルーンインタリーバおよびプルーンデインタリーバの効率的なアドレス生成
US7949926B2 (en) Method and apparatus for encoding and decoding data
US7873893B2 (en) Method and apparatus for encoding and decoding data
US7925956B2 (en) Method and apparatus for encoding and decoding data
KR100955305B1 (ko) 큐피피 인터리브를 갖는 병렬 터보 디코딩을 위한 공식적플렉서블 충돌 방지 메모리 억세싱
US20100318878A1 (en) Communications channel parallel interleaver and de-interleaver
US7640462B2 (en) Interleaver and de-interleaver
JP2018042035A (ja) 符号化装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120221

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120521

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120723

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130321

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250