(57)【要約】先読みデルタ・シグマ変調器は、量子化出力値を生成するための演算処理を軽減、簡素化する。重ね合わせが、該変調器のループフィルタ応答に適用され、それによって、各出力候補ベクトルに対する完全なループフィルタ応答が、強制パターン応答とナチュラル入力信号応答との間の差に等しくなる。ループフィルタの強制パターン応答は、ゼロに設定された入力信号およびゼロに初期設定されたループフィルタの状態変数を踏まえ、各出力候補ベクトルに対する応答から決定され得る。ループフィルタのナチュラル入力信号応答は、ゼロに設定されたフィードバックデータを踏まえ、各入力信号ベクトルに対する応答から決定され得る。強制パターン応答は出力信号データに依存せず、全ての入力ベクトルｘｔに対して一度に決定され、ナチュラル入力信号応答はフィードバックデータに依存せず、各出力データ値に対し一回のみ決定すればよい。
2007518377.tif 000002
【特許請求の範囲】
【請求項１】
ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理する方法であって、
ベクトルのセットに対する該先読みデルタ・シグマ変調器のループフィルタの強制パターン応答のセットを決定するステップと、
入力データ信号サンプルのセットに対する該先読みデルタ・シグマ変調器の該ループフィルタのナチュラル応答を決定するステップと、
各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するステップと、
を包含する方法。
【請求項２】
前記最適なマッチングを決定するために前記所定の決定要件を適用することは、前記強制パターン応答のうちの１つと前記ナチュラル応答との間の差の最低パワーを決定することを包含し、
前記最適なマッチングを決定するために使用された前記パターン応答に関連する前記出力候補ベクトルからの出力データを選択することは、該最低パワーの差に関連する前記出力候補ベクトルを選択することを包含する、
請求項１に記載の方法。
【請求項３】
前記強制パターン応答のうちの１つと前記ナチュラル応答との間の最低パワーのマッチングを決定することは、各強制パターン応答と前記ナチュラル応答とのドット積を決定することを包含する、請求項２に記載の方法。
【請求項４】
前記最適なマッチングを決定するために前記所定の決定要件を適用することは、前記強制パターン応答であって、前記パターン応答の少なくとも１つの要素が前記強制パターン応答の任意のその他の要素と異なる重みに加重された、強制パターン応答のうちの１つと、前記ナチュラル応答との間の最低パワーのマッチングを決定することを包含し、
前記最適なマッチングを決定するために使用された前記強制パターン応答に関連する前記出力候補ベクトルからの出力データを選択することは、該最低パワーのマッチングに関連する前記出力候補ベクトルを選択することを包含する、
請求項１に記載の方法。
【請求項５】
パターン応答の前記セットは、重複する最適なマッチングの決定を提供するパターン応答を除外する、請求項１に記載の方法。
【請求項６】
前記先読みデルタ・シグマ変調器の前記ループフィルタの強制パターン応答の前記セットを決定するステップは、各入力信号データサンプルを量子化することに先立って、強制パターン応答の前記セットを前演算することをさらに包含する、請求項１に記載の方法。
【請求項７】
引き続いて各入力信号データサンプルを量子化することにおいて使用するために、強制パターン応答の前記前演算されたセットをメモリに蓄えることをさらに包含する、
請求項６に記載の方法。
【請求項８】
各フィルタ処理された入力信号データサンプルの量子化のために、前記ナチュラル応答を一度だけ演算するステップをさらに包含する、
請求項１に記載の方法。
【請求項９】
前記ループフィルタの前記ナチュラル応答を決定するために使用された入力データ信号サンプルの前記セットがＮと等しい、請求項１に記載の方法。
【請求項１０】
候補ベクトルの前記セットが量子化精度を低下させることなく２Ｎ未満に削減される、請求項１に記載の方法。
【請求項１１】
前記入力信号データサンプルは音声入力信号データを備える、請求項１に記載の方法。
【請求項１２】
量子化された入力信号データを貯蔵媒体に記録するステップをさらに包含する、
請求項１に記載の方法。
【請求項１３】
実質的に加算オペレーションのみを使用して、各強制パターン応答と前記ナチュラル応答とのドット積を各ｔ時毎に決定するステップをさらに包含する、
請求項１に記載の方法。
【請求項１４】
強制パターン応答の前記セットを決定するために使用されるベクトルの前記セットは、前記強制パターン応答に関連する出力候補ベクトルが選択される出力候補ベクトルのセットを含む、請求項１に記載の方法。
【請求項１５】
各強制パターン応答は、ゼロに設定された初期ループフィルタ状態変数を使用して決定される、請求項１に記載の方法。
【請求項１６】
前記ループフィルタのパターン応答のセットを決定するステップは、前記デルタ・シグマ変調器に対する信号入力データを少なくともおよそゼロに設定すること、および出力候補ベクトルのセットをフィルタリングすることによって、前記ループフィルタのパターン応答のセットを決定することを含む、請求項１に記載の方法。
【請求項１７】
入力データ信号サンプルのセットに対する前記先読みデルタ・シグマ変調器の前記ループフィルタのナチュラル応答を決定するステップは、前記ループフィルタに対するフィードバックデータを少なくともおよそゼロに設定することと、入力データ信号サンプルの前記セットをフィルタリングすることを含む、請求項１に記載の方法。
【請求項１８】
先読みデルタ・シグマ変調器を備える信号処理システムであって、該先読みデルタ・シグマ変調器は、
ループフィルタと、
ベクトルのセットに対する該ループフィルタの強制パターン応答のセットを決定するための、該ループフィルタに結合されたパターン応答生成器と、
入力データ信号サンプルのセットに対する該ループフィルタのナチュラル応答を決定するための、ナチュラル応答生成器と、
該ループフィルタからの出力データおよび該パターン応答のセットを受け取るための量子化器であって、各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するための関数生成器を含む量子化器と、
を備える、
信号処理システム。
【請求項１９】
強制パターン応答の前記セットを決定するために使用されたベクトルの前記セットは、前記強制パターン応答に関連する前記出力候補ベクトルが選択される出力候補ベクトルのセットを含む、請求項１８に記載の信号処理システム。
【請求項２０】
前記パターン生成器は、前記ループフィルタに対する信号入力を少なくともおよそゼロに設定することと、ベクトルの前記セットをフィルタリングすることによって、得られたベクトルのセットに対する前記ループフィルタの強制パターン応答の前記セットを決定する、請求項１８に記載の信号処理システム。
【請求項２１】
前記ナチュラル応答生成器は、前記ループフィルタに対するフィードバックデータを少なくともおよそゼロに設定することと、入力データ信号サンプルの前記セットをフィルタリングすることによって、入力データ信号サンプルのセットに対する前記ナチュラル応答を決定する、請求項１８に記載の信号処理システム。
【請求項２２】
各出力候補ベクトルに対する前記ループフィルタのパターン応答の前記決定されたセットを蓄えるために、前記ループフィルタに結合されたメモリをさらに備える、
請求項１８に記載の信号処理システム。
【請求項２３】
前記最適なマッチングを決定するために前記所定の決定要件を適用することは、前記強制パターン応答のうちの１つと前記ナチュラル応答との間の最低パワーのマッチングを決定することを包含し、
前記最適なマッチングを決定するために使用された前記パターン応答に関連する前記出力候補ベクトルからの出力データを選択することは、該最低パワーのマッチングに関連する前記出力候補ベクトルを選択することを包含する、
請求項１８に記載の信号処理システム。
【請求項２４】
前記強制パターン応答のうちの１つと前記ナチュラル応答との間の最低パワーのマッチングを決定することは、各強制パターン応答と前記ナチュラル応答とのドット積を決定することを包含する、請求項２３に記載の信号処理システム。
【請求項２５】
前記最適なマッチングを決定するために前記所定の決定要件を適用することは、前記強制パターン応答であって、前記パターン応答の少なくとも１つの要素が前記強制パターン応答の任意のその他の要素と異なる重みに加重された、強制パターン応答のうちの１つと、前記ナチュラル応答との間の最低パワーのマッチングを決定することを包含し、
前記最適なマッチングを決定するために使用された前記強制パターン応答に関連する前記出力候補ベクトルからの出力データを選択することは、該最低パワーのマッチングに関連する前記出力候補ベクトルを選択することを包含する、
請求項１８に記載の信号処理システム。
【請求項２６】
強制パターン応答の前記セットは、重複する最適なマッチングの決定を提供するいかなる応答パターンをも除外する、請求項１８に記載の信号処理システム。
【請求項２７】
前記先読みデルタ・シグマ変調器の前記ループフィルタの強制パターン応答の前記セットを決定するために、前記ナチュラル応答生成器は、各入力信号データサンプルを量子化することに先立って前記強制パターン応答セットを前演算するためのコンポーネントを含む、請求項１８に記載の信号処理システム。
【請求項２８】
前記ナチュラル応答生成器は、各フィルタ処理された入力信号データサンプルの量子化のために、前記ナチュラル応答を一度だけ生成する、請求項１８に記載の信号処理システム。
【請求項２９】
前記ループフィルタの前記ナチュラル応答を決定するために使用されたデータ信号サンプルの前記セットがＮと等しく、ここでＮは先読み深さであり、かつ２以上である、請求項１８に記載の信号処理システム。
【請求項３０】
出力候補ベクトルの前記セットが量子化精度を低下させることなく２Ｎ未満に削減され、ここでＮは先読み深さであり、かつ２以上である、請求項１８に記載の信号処理システム。
【請求項３１】
前記入力信号データサンプルは音声入力信号データを備える、請求項１８に記載の信号処理システム。
【請求項３２】
前記量子化器からの出力データを処理し、該処理された出力データを貯蔵媒体に記録するための、信号処理および記録設備をさらに備える、
請求項１８に記載の信号処理システム。
【請求項３３】
前記量子化器は、実質的に加算オペレーションのみを使用して各強制パターン応答を前記ナチュラル応答と組み合わせ、組み合わせを比較し、前記出力データを選択するための、加算／比較／選択システムをさらに備える、
請求項１８に記載の信号処理システム。
【請求項３４】
ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理するための装置であって、
ベクトルのセットに対する該先読みデルタ・シグマ変調器のループフィルタの強制パターン応答のセットを決定する手段と、
入力データ信号サンプルのセットに対する該先読みデルタ・シグマ変調器の該ループフィルタのナチュラル応答を決定する手段と、
各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化する手段と、
を備える装置。
【請求項３５】
前記ベクトルのセットは出力候補ベクトルのセットを備える、請求項３４に記載の装置。
【請求項３６】
ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理する方法であって、
Ｎ入力データ信号サンプルのセットに対するループフィルタのナチュラル応答、およびベクトルのセットに対する該ループフィルタの強制パターン応答とから該先読みデルタ・シグマ変調器のループフィルタの応答を決定するステップと、
各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するステップと、
を包含する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の参照）
（１）本出願は、３５Ｕ．Ｓ．Ｃ．§１１９（ｅ）の下で、（ｉ）米国特許仮出願第６０／５３７，２８５号（２００４年１月１６日出願）、名称「Ｌｏｏｋ−Ａｈｅａｄ  Ｄｅｌｔａ−ｓｉｇｍａ  Ｍｏｄｕｌａｔｏｒｓ」、（ｉｉ）米国特許仮出願第６０／５３９，１３２号（２００４年１月２６日出願）、名称「Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ  ｗｉｔｈ  Ｌｏｏｋ−Ａｈｅａｄ  Ｄｅｌｔａ−ｓｉｇｍａ  Ｍｏｄｕｌａｔｏｒｓ」、および（ｉｉｉ）米国特許仮出願第６０／５８８，９５１号（２００４年７月１９日出願）、名称「Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ  ｗｉｔｈ  Ｌｏｏｋ−Ａｈｅａｄ  Ｄｅｌｔａ−Ｓｉｇｍａ  Ｍｏｄｕｌａｔｏｒｓ」、の利益を主張する。仮出願（ｉ）〜（ｉｉｉ）は、例示的なシステムおよび方法を含み、その全てが参考として援用される。  
【０００２】
（技術分野）
（２）本発明は概して信号処理の分野に関するものであり、より具体的には、信号データの量子化を目的としてナチュラルおよびパターンループフィルタ応答を使用するためのシステムおよび方法に関する。
【背景技術】
【０００３】
（３）長期的な誤差を最小化することによって入力／出力信号の優れた信頼性を得るための努力として、少数の信号処理システムは先読み（ｌｏｏｋ−ａｈｅａｄ）デルタ・シグマ変調器を実行している。「デルタ・シグマ変調器」はまた、「シグマ・デルタ変調器」、「デルタ・シグマ変換器」、「シグマ・デルタ変換器」および「ノイズシェーパー」といった代替可能なその他の用語を用いて言及されることも多い。
【０００４】
（４）先読み変調器についての従来の研究には、主に二つの流れがある。第１の流れは、Ｈｉｒｏｓｈｉ  Ｋａｔｏによる「Ｔｒｅｌｌｉｓ  Ｎｏｉｓｅ−Ｓｈａｐｉｎｇ  Ｃｏｎｖｅｒｔｅｒｓ  ａｎｄ  １−ｂｉｔ  Ｄｉｇｉｔａｌ  Ａｕｄｉｏ」、ＡＥＳ  １１２ｔｈ  Ｃｏｎｖｅｎｔｉｏｎ、２００２年５月１０日〜１３日、Ｍｕｎｉｃｈ、および加藤  寛、日本国特許庁公開特許公報，２００３−１２４８１２Ａ号であり、さらに詳細な研究が、Ｈａｒｐｅ，Ｐ．、Ｒｅｅｆｍａｎ  Ｄ．、Ｊａｎｓｓｅｎ  Ｅ．による「Ｅｆｆｉｃｉｅｎｔ  Ｔｒｅｌｌｉｓ−ｔｙｐｅ  Ｓｉｇｍａ  Ｄｅｌｔａ  Ｍｏｄｕｌａｔｏｒ」、ＡＥＳ  １１４ｔｈ  Ｃｏｎｖｅｎｔｉｏｎ、２００３年５月２２日〜２５日、Ａｍｓｔｅｒｄａｍ（以下「Ｈａｒｐｅ」という）、Ｊａｍｅｓ  Ａ．Ｓ．Ａｎｇｕｓによる「Ｔｒｅｅ  Ｂａｓｅｄ  Ｌｏｏｋ−ａｈｅａｄ  Ｓｉｇｍａ  Ｄｅｌｔａ  Ｍｏｄｕｌａｔｏｒｓ」、ＡＥＳ  １１４ｔｈ  Ｃｏｎｖｅｎｔｉｏｎ、２００３年５月２２日〜２５日、Ａｍｓｔｅｒｄａｍ、Ｊａｍｅｓ  Ａ．Ｓ．Ａｎｇｕｓによる「Ｅｆｆｉｃｉｅｎｔ  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒＬｏｏｋ−Ａｈｅａｄ  Ｓｉｇｍａ−Ｄｅｌｔａ  Ｍｏｄｕｌａｔｏｒｓ」、ＡＥＳ  １５５ｔｈ  Ｃｏｎｖｅｎｔｉｏｎ、２００３年１０月１０日〜１３日、Ｎｅｗ  Ｙｏｒｋ、Ｊａｎｓｓｅｎ  Ｅ.、Ｒｅｅｆｍａｎ  Ｄ．による「Ａｄｖａｎｃｅｓ  ｉｎ  Ｔｒｅｌｌｉｓ  ｂａｓｅｄ  ＳＤＭ  ｓｔｒｕｃｔｕｒｅｓ」、ＡＥＳ  １１５ｔｈ  Ｃｏｎｖｅｎｔｉｏｎ、２００３年１０月１０日〜１３日、Ｎｅｗ  Ｙｏｒｋ、に述べられている。この研究は、パルス符号変調「ＰＣＭ」に関連する急勾配のアンチエイリアス（ａｎｔｉ−ａｌｉａｓ）フィルタを使用することなく、貯蔵用のオーディオデータの１ビットエンコーディングの問題を解決することを目的としている。適度なオーバーサンプリング率（３２または６４）を持つスーパーオーディオＣＤ「ＳＡＣＤ」のオーディオ貯蔵の到来によって、この研究は動機付けられたものである。
【０００５】
（５）図１は、先読みデルタ・シグマ変調器１０２を有する従来技術による信号処理システム１００を示すものである。信号源１０２は、入力信号を前処理コンポーネント１０４に提供する。前処理コンポーネント１０４には、アナログ・デジタル変換器（「ＡＤＣ」）およびｋビットのデジタル入力信号ｘ（ｎ）を生成するオーバーサンプリングコンポーネントが含まれる。オーディオアプリケーションに対しては、ｘ（ｎ）は一般的に、６４：１といったオーバーサンプリング率に対して４４．１ｋＨｚでサンプリングされた信号を示す。先読み変調器１０６は、入力信号ｘ（ｎ）を量子化し、大部分の量子化ノイズが、例えばオーディオアプリケーション用の約０−２０ｋＨｚといった、関連のある信号帯域から外に移動できるように量子化ノイズを形作る。各出力信号ｙ（ｎ）（以下「出力値」としても表される）は、一般的に、ｙ（ｎ）の最大スイング幅を表す「Δ」を有する｛＋Δ／２，−Δ／２｝のセットから選択される２つの値のうちの１つを有する（便宜上、Δ／２は＋１として表し、−Δ／２は−１として表す。）。出力信号ｙ（ｎ）はさらに処理され、例えばオーディオサウンドシステムを動かすために使用され、または貯蔵媒体に直接記録され得る。
【０００６】
（６）図２は、先読み深さＭを有する従来の先読みデルタ・シグマ変調器１０６の概略図を表す。表１は、図２で使用される符号の実施形態を説明するものである。
【０００７】
【表１】
2007518377.tif 000003
（７）先読み深さＭは、出力信号ｙ（ｎ）を決定するために使用される各遅延出力候補ベクトルＹＤｉの次元を表す。ｔ時に関して、マイナス値である遅延出力候補ベクトル−ＹＤｉ，ｉ□｛０，１，２，．．．，Ｎ−１｝および入力ベクトルＸｔが、ノイズシェーピングフィルタ２０２（ｉ）に入力される。先読み深さＭおよびｙ（ｎ）＝｛−１，＋１｝に対して、出力候補をプルーニング（ｐｒｕｎｉｎｇ）することなく、Ｎ遅延出力候補ベクトルはそれぞれ独自の要素のセットを有している。先読みデルタ・シグマ変調器１０６の各ノイズシェーピングフィルタ２０２（ｉ）は、関連するコスト値ベクトルＣｉの計算の間は、ｔ時に対するフィルタ状態変数の共通のセットを使用する。フィルタ２０２は、各ｙ（ｎ）計算中に使用される実際のフィルタ状態変数を保持する。状態変数は、選択されたｙ（ｎ）出力値で更新される。ループフィルタ２０２はＸｉおよび−Ｙｉを処理して誤差値を生成し、それは本実施形態においてはコスト値ベクトルＣｉとして表される。コスト値ベクトルＣｉ、およびそれ故にコスト値ベクトルＣｉの各要素は、周波数加重された誤差値となっている。先読みデルタ・シグマ変調器１０６の一部の実施形態においては、入力信号ベクトルｘｔおよび遅延出力候補ベクトルＹＤｉはまた、フィルタ２０２（ｉ）への直接入力としても用いられる。
【０００８】
（８）量子化器誤差および出力生成器２０３には、ｙ（ｎ）を決定するための２つのモジュールが含まれる。コスト関数最小検索モジュール２０４は、式１に従って各コスト値ベクトルＣｉのコスト値パワーＣｉ（２）を計算し、ｔ時における最小コスト値パワーを決定する。
【０００９】
【数１】
2007518377.tif 000004
「ｃｔ」は、ｔ＝１〜Ｍまでのｔ時に対する、コストベクトルＣｉの中のコスト値を表す。このため、量子化器２０３のコスト関数最小検索モジュール２０４は、ループフィルタ２０２からのエネルギーを最小化しようとするものである。ループフィルタ２０２からのエネルギーを効果的に最小化することは、入力Ｃｉの値を小さくし、その結果、先読みデルタ・シグマ変調器１０６に、比較的高いループゲインを効果的にもたらし、それ故に、望ましくない方法でノイズシェーピング伝達関数を修正することとなる。
【００１０】
（９）ｙ（ｎ）セレクタモジュール２０６は、ｙ（ｎ）をＹｉの先頭ビット（ｌｅａｄｉｎｇ  ｂｉｔ）として選択し、そこではＣｉ（２）ｍｉｎは最小コスト値パワーを表す。
【００１１】
（１０）例えば、Ｍ＝２およびｙ∈｛−１，＋１｝である場合、Ｎ＝４，ｉ□｛０，１，２，３｝となり、表２は各Ｙ出力候補ベクトルおよびＸｔを表す。
【００１２】
【表２】
2007518377.tif 000005
（１１）Ｃ３（２）が最小コスト値パワーを表す場合、出力候補ベクトルＹ３（Ｃ３（２）に関連する出力候補ベクトル）における先頭ビットが１に等しいため、セレクタモジュール２０６はｙ（ｎ）＝１を選択する。Ｃ１（２）が最小コスト値パワーを表す場合、出力候補ベクトルＹ１（Ｃ１（２）に関連する出力候補ベクトル）における先頭ビットが０に等しいため、セレクタモジュール２０６はｙ（ｎ）＝０を選択する。
【００１３】
（１２）先読み変調器の研究の２番目の主要な流れには、デジタルＰＷＭ変調段階と組み合わされたデルタ・シグマ変調器に基づくパルス幅変調（「ＰＷＭ」）増幅器が含まれる。主な研究者はＰｅｔｅｒ  ＣｒａｖｅｎおよびＪｏｈｎ  Ｌ．  Ｍｅｌａｎｓｏｎである。本明細書においてその全体が参考として援用される、発明者Ｐｅｔｅｒ  Ｃｒａｖｅｎ  （「Ｃｒａｖｅｎ」）による米国特許第５、７８４，０１７号、名称  「Ａｎａｌｏｇｕｅ  ａｎｄ  Ｄｉｇｉｔａｌ  Ｃｏｎｖｅｒｔｅｒｓ  Ｕｓｉｎｇ  Ｐｕｌｓｅ  Ｅｄｇｅ  Ｍｏｄｕｌａｔｉｏｎｓ  ｗｉｔｈ  Ｎｏｎ−Ｌｉｎｅａｒ  Ｃｏｒｒｅｃｔｉｏｎ」において、Ｃｒａｖｅｎはデルタ・シグマ変調器における先読みの使用について述べている。Ｃｒａｖｅｎの目的は、本質的に安定が困難な変調である、エッジ交替（ａｌｔｅｒｎａｔｉｎｇ  ｅｄｇｅ）変調における安定性を確保することであった。ＰＷＭの場合においては、デルタ・シグマ変調器は低いオーバーサンプリング率（一般的に４−１６）で稼動しており、量子化ノイズは特別な問題である。
【００１４】
（１３）図３は、量子化器１０６およびノイズシェーピングループフィルタ２０２を示すものである。フィルタ２０２は、ノイズ伝達関数（「ＮＴＦ」）および個別の信号伝達関数（「ＳＴＦ」）を有するものとみなすことができ、これは同一人に譲渡された米国特許出願連番第１０／９００，８７７号（２００４年７月２８日出願）、名称「Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｗｉｔｈ  Ｌｏｏｋａｈｅａｄ  Ｍｏｄｕｌａｔｏｒ  Ｎｏｉｓｅ  Ｑｕａｎｔｉｚａｔｉｏｎ  Ｍｉｎｉｍｉｚａｔｉｏｎ」、発明者Ｊｏｈｎ  Ｌ．  Ｍｅｌａｎｓｏｎ（以下「Ｍｅｌａｎｓｏｎ  Ｉ  Ｐａｔｅｎｔ」とする）、およびＮｏｒｓｗｏｒｔｈｙその他著、「Ｄｅｌｔａ  Ｓｉｇｍａ  Ｄａｔａ  Ｃｏｎｖｅｒｔｅｒｓ−Ｔｈｅｏｒｙ，  Ｄｅｓｉｇｎ，  ａｎｄ  Ｓｉｍｕｌａｔｉｏｎ」（１９９７年発行）、ＩＳＢＮ  Ｏ−７８０３−１０４５−４の第４章に述べられているとおりである。ノイズ伝達関数（「ＮＴＦ」）は１／［１＋ｚ−ｌ＊Ｈ２（ｚ）］と等しいものとする。フィルタ２０２は、信号伝達関数Ｈ１（ｚ）、フィードバック信号伝達関数Ｈ２（ｚ）、および量子化ノイズ３０２を表すためにモデル化されている。信号伝達関数（「ＳＴＦ」）はＨ１（ｚ）／［１＋ｚ−ｌ＊Ｈ２（ｚ）］と等しいものとする。一部の実施例においてＨ１とＨ２が同一である場合もあるが、一般的にはＨ１とＨ２は異なるものである。
【００１５】
（１４）図４Ａは、４段階のノイズシェーピングループフィルタ４０２、量子化器４０４、およびユニット遅延を有するフィードバックループ４０６を有するデルタ・シグマ変調器４００Ａを表すものであり、これはノイズシェーピングループフィルタ２０２の一実施形態を表す。定数ｋ０、ｋ１、ｋ２およびｋ３はフィルタ３００のＮＴＦにおけるポールを設定するために選定される。Ｇ１はＮＴＦにおいてゼロ（０）となり、これは通常、信号通過帯域の高い周波数端に近い値で設定される。フィルタ３００にはまた、０Ｈｚにおいて二重のゼロが含まれる。ＳＴＦは純遅延でカスケードされた純ポール応答を有する。
【００１６】
（１５）図４Ｂは、遅延ｚ−１を有する３段階の無限インパルス応答フィルタ４００Ｂ、フィードバック係数Ｃ０、Ｃ１、およびＣ２、および状態変数ｓｖ０、ｓｖ１、およびｓｖ２を表す。無限インパルス応答（「ＩＩＲ」）フィルタでは、１つまたはそれ以上の状態変数が、１つまたはそれ以上の次の状態変数を修正するために、各ステップの間にフィードバックされる。これにより、先読みアプリケーションに対するフィルタ出力の将来値を計算することが困難になる。先読みは、デルタ・シグマ変調の場合において特別な関心事であり、そこにおいてフィードバックは比較的少数のレベルに量子化され、また、任意の所与の時点においても１つよりも多い可能なフィードバック値を観測するいう大きな利点がある。
【００１７】
（１６）先読みオペレーションに適用されるＩＩＲフィルタを実行するための手法の１つが、図４ＣのＩＩＲフィルタプロセス４００Ｃに表されており、これは全ての状態変数を保存し、将来値を見つけるためにシステムクロックをアドバンスし、次いで状態変数の状態を再貯蔵するものである。オペレーション４２０は状態変数を一時的なメモリに複写し、オペレーション４２２において望まれるフィードバックＮ回（Ｎ＝２ｍおよびｍ＝先読み深さ）だけ状態をアドバンスし、オペレーション４２４において望まれる出力候補ベクトル要素を用いて状態変数を計算し、オペレーション４２６において状態変数を貯蔵し、オペレーション４２８において状態を１回アドバンスするものである。３段階のＩＩＲフィルタ４００Ｂは先読み深さ４、現在出力、および２個の将来出力を有する。別のアプローチとしては、状態変数の複写を複数有するというものがあり、各複写はそれぞれ、様々なアドバンス状態または様々なフィードバックの可能性に対する状態変数を表している。これにより計算が複雑化し、状態変数メモリの容量が増加し、一部の場合には先読み深さの指数関数的に増加する。全ての場合において、将来の出力を計算するために入力の将来値を計算することが必要となる。フィルタ４００Ｂに対する状態変数メモリオペレーション４００Ｄおよび入力におけるｚ＾−３遅延が、図４Ｄに表されている。
【００１８】
（１７）トレリス（Ｔｒｅｌｌｉｓ）変調器では、出力候補ベクトルＹｉ（「パターン」ともいう）はＭサンプル期間にわたり、量子化出力の候補として試される。フィルタからのパワーである信号Ｃｉは、各出力候補ベクトルＹｉ毎に合計され、出力候補ベクトルに関連する最も低いパワーが選定される。選定された出力候補ベクトルＹｉの先頭ビットは、次の出力値ｙ（ｎ）として選定され、その反復が次の入力ベクトルＸｔ＋１に対して繰り返される。
【００１９】
（１８）従来の先読みデルタ・シグマ変調器には、膨大な演算および状態貯蔵が必要である。先読み深さが８ビットの場合、最も簡素化された場合でもデルタ・シグマ変調器の２５６の複写が必要となる。多くの研究は、検索をプルーニングすることによって演算を簡素化することを目的として行われてきており、その結果として、２Ｍ個のケースの適切な一部分のみが計算される。従来技術では、プルーニングしなければ検索のための２Ｍ個の考えられる合理的な組み合わせがあり、１分間の間の出力信号Ｙ［ｎ］の長さが６０＊４４１００＊６４（すなわち、６０秒、４４．１ｋＨｚサンプリング周波数、および６４：１のオーバーサンプリング率）であるとして直接的に与えられる時間ｔ毎に対して、最も近いマッチング出力信号のセットを見つける合理的な手段が提案されていない。トレリス検索、ツリー検索、およびプルーニングは全て計算量を削減するための解決法として提案されてきた。
【発明の開示】
【課題を解決するための手段】
【００２０】
（１９）本発明の一実施形態において、ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理する方法には、ベクトルのセットに対する先読みデルタ・シグマ変調器のループフィルタの強制パターン応答セットを決定するステップが含まれる。この方法にはまた、入力データ信号サンプルのセットに対する先読みデルタ・シグマ変調器のループフィルタのナチュラル応答を決定するステップが含まれる。この方法にはさらに、各強制パターン応答とナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するステップが含まれる。
【００２１】
（２０）本発明の別の実施形態においては、信号処理システムには、先読みデルタ・シグマ変調器が含まれる。先読みデルタ・シグマ変調器には、ループフィルタと、ループフィルタに結合され、ベクトルのセットに対するループフィルタの強制パターン応答のセットを決定するパターン応答生成器が含まれる。先読みデルタ・シグマ変調器にはさらに、入力データ信号サンプルのセットに対するループフィルタのナチュラル応答を決定するナチュラル応答生成器、および、ループフィルタからの出力データおよび該パターン応答のセットを受信するための量子化器であって、各強制パターン応答とナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、最適なマッチングを決定するために使用された強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するための関数生成器、を含む量子化器が含まれる。
【００２２】
（２１）本発明の別の実施形態においては、ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理するための装置には、ベクトルのセットに対する該先読みデルタ・シグマ変調器のループフィルタの強制パターン応答のセットを決定するための手段が含まれる。該装置にはさらに、入力データ信号サンプルのセットに対する先読みデルタ・シグマ変調器のループフィルタのナチュラル応答を決定するための手段、および、各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、最適なマッチングを決定するために使用された強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するための手段、が含まれる。
【００２３】
（２２）本発明の別の実施形態においては、ナチュラルおよびパターンループフィルタ応答を用いる、Ｎが２以上である深さＮの先読みデルタ・シグマ変調器を用いて入力信号データを処理する方法には、Ｎ入力データ信号のサンプルセットに対する該ループフィルタのナチュラル応答およびベクトルのセットに対する該ループフィルタの強制パターン応答から、該先読みデルタ・シグマ変調器のループフィルタの応答を決定するステップが含まれる。この方法にはまた、各強制パターン応答と該ナチュラル応答との間の最適なマッチングを決定するために所定の決定要件を適用することと、該最適なマッチングを決定するために使用された該強制パターン応答に関連する出力候補ベクトルからの出力データを選択することによって、各入力信号データサンプルを量子化するステップが含まれる。
【００２４】
（２３）本発明は添付の図面を参照することによってより良く理解され得、その多くの目的、特徴、および利点が当業者に対して明らかになる。複数の図において同じ参照番号が使用されているが、これは同様のまたは類似の要素を示す。
【発明を実施するための最良の形態】
【００２５】
（４０）別段の指示の無い限り、下記説明において使用されている用語は、上記の背景技術のセクションにおいて使用されているものと同様である。
【００２６】
（４１）本明細書で説明されている信号処理システムの先読みデルタ・シグマ変調器は、量子化出力値を生成するために使用される計算を簡素化することによって、処理量を削減するものである。プルーニングとの対照において、先読みデルタ・シグマ変調器の正確性を損なうことなく、量子化出力データを決定するために行われる計算回数は削減が可能である。重ね合わせは、先読みデルタ・シグマ変調器のループフィルタ応答に適用可能である。重ね合わせによって、ベクトルのセットの各ベクトルに対する完全なループフィルタ応答は、強制パターン応答とナチュラル入力信号応答との間の差と等しい。一実施形態においては、強制パターン応答を決定するために使用されるベクトルのセットは、出力候補ベクトルのセットと同一である。別の実施形態においては、強制パターン応答を決定するために使用されるベクトルのセットは、許容可能な結果をもたらす出力候補ベクトルのセットに対する近似値を表す。ループフィルタの強制パターン応答は、各ベクトルに対する応答から、少なくともおよそゼロ（０）に設定された入力信号、および少なくともおよそゼロに設定されたループフィルタの初期状態変数を用いて、各ベクトルのループフィルタを決定するに先立ち、決定することができる。「少なくともおよそゼロ」には、ゼロ（０）および所望の正確さでのフィルタの応答を適切に決定することができる程度に小さい値が含まれる。ループフィルタのパターン応答はまた、ベクトルのセットとしてに対するループフィルタの強制パターン応答としても表される。ループフィルタのナチュラル入力信号応答は、少なくともおよそゼロに設定されたフィードバックデータと共に、各入力信号ベクトルに対する応答から決定することができる。強制パターン応答は入力信号データに非依存であるため、全ての入力信号ベクトルＸｔに対して一度に決定することができる。ナチュラル入力信号応答は、フィードバックデータに非依存であるため、各出力データ値に対して一度だけ決定される必要がある。演算の回数はさらに、各パターンに対するコスト値を決定する際に重複する演算をなくすこと、および、ナチュラルと強制パターン応答との間の所定の「最適なマッチング」要件を満たすことができない結果をもたらす強制パターン応答をなくすことによって、削減することができる。
【００２７】
（４２）図５は、入力信号ナチュラル応答ＳＮＡＴを強制パターン応答ＳＰＡＴから分離するために重ね合わせの概念を利用する、先読みデルタ・シグマ変調器５００を表す。フィルタ出力ベクトルＣｉは、ループフィルタ５０４の応答を表し、入力信号ナチュラル応答ＳＮＡＴから、出力候補ベクトルＹｉに対する強制パターン応答ＳＰＡＴを差し引いたものと等しい。出力候補ベクトルＹｉに近似する他のベクトルを代替案として使用して、強制パターン応答ＳＰＡＴを決定することもできる。合計におけるマイナス記号は、ＳＰＡＴパターンはフィードバック候補ベクトルを正符号を用いてフィルタ入力に適用する結果であり、またフィルタは操作構造において負符号を利用すると想定する、本明細書において用いられる取り決めによるものである。この取り決めにより、検索はＳＮＡＴとＳＰＡＴのセットとの間の最短距離の１つであるとみなされる。「ＳＰＡＴ」はｉ番目の出力候補ベクトルＹｉの強制パターン応答を表すベクトルであり、ＳＮＡＴｔは入力信号Ｘｔに対するループフィルタナチュラル応答である。少なくとも一実施形態において、ループフィルタ５０４はノイズシェーピング伝達関数を最適化するように選ばれ、ノイズシェーピングループフィルタ２０２はその一例である。
【００２８】
（４３）各出力サンプルに対して、量子化器５０２はフィルタ出力ベクトルＣｉのセットを用いて、入力信号ベクトルＸｔを量子化し、そのサンプルの出力データｙ（ｎ）を決定する。最適マッチング生成器５０６は、入力信号ナチュラル応答ＳＮＡＴｔと強制パターン応答ＳＰＡＴとの間の最適なマッチングを検索し、出力選択モジュール５０８は、出力データｙ（ｎ）の値を選択する。「最適」は、対象となる信号帯域において最も近いマッチングとして定義することができる。「最も近いマッチング」は、例えば、パワー的な意味（最低距離）、加重距離的な意味、最小／最大値的な意味、心理音響的に加重されたという意味、またはその他の所望の意味において、あらかじめ定義することが可能である。「対象となる信号帯域」は、例えば、対象となるデータを有する信号を含む周波帯域である。例えば、対象となるオーディオ信号帯域は、およそ０Ｈｚから２５ｋＨｚである。このため、一実施形態においては、「最適」な出力信号パターンＹ［ｎ］は、ループフィルタ出力応答Ｃｉが最低パワーを有するパターンＹ［ｎ］である。最低信号パワーＣｉ  ｍｉｎを有するループフィルタ出力応答を決定すること、および出力データｙ（ｎ）を選定することは、例示的にＭｅｌａｎｓｏｎ  Ｉ  Ｐａｔｅｎｔ、および同一人に譲渡された米国特許出願連番第１０／８７５，９２０号（２００４年６月２２日出願）、名称「Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｉｎｇ  ｗｉｔｈ  ａ  Ｌｏｏｋ−ａｈｅａｄ  Ｍｏｄｕｌａｔｏｒ  Ｈａｖｉｎｇ  Ｔｉｍｅ  Ｗｅｉｇｈｔｅｄ  Ｅｒｒｏｒ  Ｖａｌｕｅｓ」、発明者Ｊｏｈｎ  Ｌ．  Ｍｅｌａｎｓｏｎ（以下「Ｍｅｌａｎｓｏｎ  ＩＩ  Ｐａｔｅｎｔ」とする）、においてさらに詳細に説明されている。本明細書において説明されている信号処理システムは、最適な最も近似のマッチングの出力信号パターンを様々な制約の下で決定するために適用することが可能であり、本明細書で定義される「最適」および「最も近いマッチング」に限られるものではなく、むしろ制約は望ましい目標値を達成するために規定されるものである。さらには、検索毎に１つのサンプルに対する出力を選択するのみとは限らず、２個またはそれ以上のサンプルが選択されてよく、フィルタはサンプル数に対して適切にアドバンスされる。
【００２９】
（４４）図６は、各出力候補ベクトルＹｉおよび各入力信号Ｘｔに対するループフィルタ応答Ｃｉ６０２の重ね合わせ６００を表す。一実施形態においては、全ての強制パターン応答ＳＰＡＴ６０４のセットは、各出力候補ベクトルＹｉに対する全てのループフィルタ５０４の応答のセットを表す。一実施形態においては、ｉ＝｛０，１，．．．，Ｎ−１｝である。以下でさらに詳細に説明されている通り、強制パターン応答の一部の計算が、出力データｙ（ｎ）を決定する際に重複した計算を生み出す。重複した計算をなくすことは可能である。さらには、一部の強制パターン応答は、ナチュラルと強制パターン応答との間の所定の「最適」の決定要件を満たすことがない結果となりえず、故に、これはまた考慮の必要はない。従って、ｉはセット｛０，１，．．．，Ｎ−１｝のサブセットの要素になりえる。各出力候補ベクトルＹｉに対する強制パターン応答は、入力信号をゼロ（０）に設定し、ループフィルタ５０４の初期状態変数をゼロ（０）に設定し、ループフィルタ強制パターン応答ＳＰＡＴｉを決定することによって決定することができる。強制パターン応答は入力信号データ値に非依存であるため、強制パターン応答ＳＰＡＴは、あらかじめ一度計算し、出力値ｙ（ｎ）を決定する際の継続的な使用のために貯蔵することができる。強制パターン応答を一度あらかじめ計算し、あらかじめ計算された応答を再利用することにより、ｙ（ｎ）を決定するために使用される計算回数を削減できる。回路の実行においては、あらかじめ計算された応答をメモリに貯蔵することで、入力信号Ｘｔを量子化するために必要とされる回路網の量を削減できる。
【００３０】
（４５）ループフィルタ応答Ｃｉ６０２の重ね合わせ６００にはまた、全ての操作時間Ｔにおいて、各入力信号ベクトルＸｔ，ｔ＝｛０，１，．．．，Ｔ−１｝に対するループフィルタ５０４のナチュラル応答が含まれる。入力信号ナチュラル応答ＳＮＡＴｔは、ループフィルタ５０４のフィードバックをゼロ（０）に設定することと、入力信号ベクトルＸｔに対する応答を決定することによって、各入力信号ベクトルＸｔに対して量子化器５００によって一度に決定される。
【００３１】
（４６）図６Ａは、先読み深さ４を有する、３段階の先読みデルタ・シグマ変調器６１８を表す。ＩＩＲフィルタ６２０は、将来の状態変数の計算を目的とした低計算、低メモリシステムの一実施形態を示すものである。フィルタ６２０は６つの状態のうちの最も小さな（ｍｏｄｅｓｔ）状態変数貯蔵を用い、一実施形態においては、状態または状態変数の複数の複写を保存しない。一実施形態においては、状態変数ｓｖ０、ｓｖ１、ｓｖ２は、異なる係数を用いて、図４Ｂの方法と同様の方法で更新される。状態変数ｓｖ３、ｓｖ４、ｓｖ５は、ｓｖ２からの単純遅延ラインを形成し、フィードバック修正を追加される。ｓｖ５の値は図４Ｂのｓｖ０における値と同じである。言い換えれば、フィードバック係数は、同じ伝達関数を形成するような方法で計算される。ｓｖ４は、次のフィードバック値が０であることを想定した、フィルタの出力である。同様に、ｓｖ３は２回のステップだけアドバンスされ、ｓｖ２は３回のステップだけアドバンスされる。
【００３２】
（４７）先読みフィルタで使用されるフィードバック係数は、図６Ｂにおいて表されている単純算術によって、プロトタイプフィルタから導くことが可能である。修正されたフィルタは０にリセットされ、０入力で表される。フィードバックは、ベクトル｛１，０，．．．，０｝で促進されて状態をアドバンスし、そこにおいてはベクトルの長さの合計は先読み深さとなる。状態変数ｓｖ０、ｓｖ１、．．．における結果値は、新たなフィードバック係数ｃ０’、ｃ１’、ｃ２’、．．．に対して使用される値となる。再び、この値は予め計算され、図６Ｃに示されるランタイム計算は必要とされない。
【００３３】
（４８）図６Ｄにおけるフィルタ６３０は、フィルタ変換（ｆｉｌｔｅｒ  ｔｒａｎｓｆｏｒｍａｔｉｏｎ）の例を表す。フィルタ６３０は、全ポールＳＴＦを用い、２段階のデルタ・シグマ変調器において使用できる。Ｈｘ（ｚ）は、入力端子に対するフィルタ６３０の応答を表し、Ｈｆｂ（ｚ）は、フィードバック端子に対するフィルタ６３０の応答を表す。図６Ｅは、フィルタ６３０と同じ応答Ｈｆｂ（ｚ）を用いるフィルタ６３２を表すが、出力１および出力２の他の２つの出力を有するという利点がある。出力１は、現在のサンプルに対するフィードバックが０であることを想定した、フィルタ６３２からの次の出力である。同様に、出力２は２回のステップだけアドバンスされる。フィルタ６３２のＳＴＦは、ｚ＾−２または２の遅延だけ、フィルタ６３０のＳＴＦとは異なる。この遅延は、多くの場合無視することができ（実際の信号遅延は多くの場合重要ではない）るか、または入力は２つのサンプルだけアドバンスすることができる。図６Ｆは、深さ２を有する先読みデルタ・シグマ変調器におけるフィルタ６３２の使用を表す。信号入力における補償アドバンスはｚ＾２として示されている。
【００３４】
（４９）図６Ｇは、フィルタ６３２の新たな係数の生成を表す。フィルタ６３０の端に追加遅延が挿入され、インパルスがフィードバック端子に適用される。時間は、（１＋先読み深さ）サイクルだけアドバンスされ、最終状態変数値は、新たなフィルタフィードバック係数として記録される。結果のフィルタは、フィルタ６３０のフィードバック伝達関数と同じフィードバック伝達関数を有し、将来の出力値が利用可能となる。ｃ１＝１およびｃ２＝２の場合、フィルタ６３２は、（１−ｚ＾−１）＾２のＮＴＦを有する２段階のデルタ・シグマ変調器に対するフィードバックフィルタを表す。マップされた係数は｛−１，−４，−３，−２｝となる。
【００３５】
（５０）図６Ａ〜図６Ｇにおいて説明され表されている設計および実行の原理は、任意の深さＭを有する先読みデルタ・シグマ変調器フィルタにまでその範囲を広げることができる。
【００３６】
（５１）図７は、入力信号Ｘを量子化するパターンおよびナチュラル応答を使用する、先読みデルタ・シグマ変調器の量子化プロセス７００を例示的に表す。量子化プロセス７００は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアのマッチングにおいて実行することができる。プロセス７００は、上記のとおり、各出力候補ベクトルＹｉに対する強制パターン応答ＳＰＡＴを決定する。操作７０２において示される一実施形態においては、強制パターン応答は、各Ｙｉ、ｉ＝｛１，２，．．．，Ｎ−１｝に対して計算される。別の実施形態では、一部の強制パターン応答が重複する結果を生み出す。操作７０４は、強制パターン応答における余分な情報は貯蔵の必要がないことを示す。例として、｛＋１，＋１，−１，−１｝に対する応答は、｛−１，−１，＋１，＋１｝に対する応答の算術的逆数である。さらには、｛＋１，＋１，−１，−１｝および｛＋１，＋１，−１，＋１｝に対する応答は、同じ最初の３つの値を有する。操作７０６は、全ての入力信号ベクトルＸｔに関し継続的な利用のために、あらかじめ計算された強制パターン応答を貯蔵する。
【００３７】
（５２）操作７０８は、入力信号ベクトルＸｔに対するナチュラル応答ＳＮＡＴｔを決定する。例えば、Ｍｅｌａｎｓｏｎ  ＩＩ  Ｐａｔｅｎｔに説明されている通り、オプションの操作７０９は重み付けベクトルをループフィルタ応答Ｃｉに加える。他の処理には、Ｍｅｌａｎｓｏｎ  Ｉ  Ｐａｔｅｎｔに説明されている通り、量子化ノイズの最小化が含まれる。
【００３８】
（５３）操作７１０は、強制パターン応答のセットとＸｔに対するループフィルタ入力信号ナチュラル応答との間の各入力信号ベクトルＸｔに対する最適なマッチングを決定する。
【００３９】
（５４）「最適なマッチング」が、各入力信号ベクトルＸｔに対するループフィルタ出力応答の最小パワーを示すためにあらかじめ定義されている場合、各ベクトルＣｉのパワーは、各入力信号ベクトルＸｔに対して決定される。Ｃｉのパワーは、Ｃｉ２＝（ＳＮＡＴｔ−ＳＰＡＴｉ）２＝ＳＮＡＴｉ２−２・ＳＮＡＴｔ・ＳＰＡＴｉ−ＳＰＡＴ２である。
【００４０】
（５５）１ビットの先読みデルタ・シグマ変調器に関しては、操作７１２において、量子化出力データｙ（ｎ）が、そこから最小フィルタ応答Ｃｉ  ｍｉｎが生成された出力候補ベクトルＹｉの先頭ビットから選択される。少なくとも一実施形態においては、出力データｙ（ｎ）は、そこから「最適なマッチング」であるフィルタ応答Ｃｉ  ｍｉｎが生成された出力候補ベクトルＹｉの先頭ビットである。別の実施形態においては、出力候補ベクトルＹｉに近似するベクトルＶが最小フィルタ応答Ｃｉ  ｍｉｎを決定するために使用される場合、近似した出力候補ベクトルＹｉは、ベクトルＶの強制パターン応答に関連づけられ、出力データｙ（ｎ）は出力候補ベクトルＹｉの先頭ビットとして選択される。
【００４１】
（５６）操作７１４は、量子化プロセス７００をアドバンスし、例えば操作７０８におけるｔ＝ｔ＋１のように、次の入力信号Ｘｔを量子化する。操作７０８に対するリターンパス７１６は、一実施形態において、強制パターン応答ＳＰＡＴが一度だけ計算される必要があることを示している。
【００４２】
（５７）バイナリシステムにおいては、深さＭに対する固有の出力候補ベクトルの数は２Ｎである。ナチュラル応答と強制パターン応答との間の最適なマッチングを決定する際、最適組合わせ生成器５０６によって考慮される強制パターン応答の数は、削減することができ、そこから出力値が選択される重複した結果をもたらす強制パターン応答を考慮から外すことができる。例えば、ループフィルタはリニアシステムであるため、−ｘに対する応答はｘに対する応答の負の値となる。これは、パターン応答削減７０４によって全てのパターン応答の半分をなくすために用いることができる。例えば、深さＭ＝４である場合、出力候補ベクトルの２つはＹ０＝［−１，−１，−１，−１］およびＹ１５＝［＋１，＋１，＋１，＋１］となる。出力候補ベクトルＹ０に対するループフィルタ応答に対応するＳＰＡＴ０、および、出力候補ベクトルＹ１５に対するループフィルタ応答に対応するＳＰＡＴ１５は、算術的に逆数（ｉｎｖｅｒｓｅ）である。
【００４３】
（５８）ループフィルタ入力信号ナチュラル応答ＳＮＡＴｔとループフィルタパターン応答ＳＰＡＴとの間の最適なマッチングを決定する際に何の影響も持たない計算をなくすことによって、量子化計算をさらに簡素化することが可能である。この削減は、算術的な同一性に基づくものである。あらかじめ決定された最適なマッチングの要件が、最小ループフィルタ応答出力パワーＣｉ２ｍｉｎ＝［（ＳＮＡＴｔ−ＳＰＡＴｉ）２＝ＳＮＡＴｔ２−２・ＳＮＡＴｔ・ＳＰＡＴｉ−ＳＰＡＴｉ２］ｍｉｎ，を認識している場合、ＳＮＡＴｔ２は全てのＣｉに対して定数となり、このため、Ｃｉ２ｍｉｎの決定には何の影響ももたず、最小パワーの計算からなくすことができる。さらに、ＳＰＡＴｉ２は、各パターン応答に対して定数となり、このために、あらかじめ計算され、メモリに貯蔵され、パワー計算のためにリコールされる。ＳＮＡＴｔ・ＳＰＡＴｉを２倍とすることはＣｉ２ｍｉｎの決定に何の影響ももたないため（あらかじめ計算されたＳＰＡＴｉ２値は１／２でスケールされるが）、「２・ＳＮＡＴｔ・ＳＰＡＴｉ」における「２」倍をパワー計算に含むことは必要ではない。このため、Ｃｉ２ｍｉｎに影響を与えない計算をなくすことにより、Ｃｉ２の計算は、かなり簡素化することができる。これにより、演算はベクトルドット積（積の合計）と定数の和から構成されることとなる。
【００４４】
（５９）図８は、先読みデルタ・シグマ変調器における出力値を選択するために使用される計算回数を削減する、計算削減のスキーム８００を概略的に表す。削減されなければ繰り返し行われる計算を一度だけ行うことによって、量子化計算をさらに削減することができる。全てのＳＰＡＴｉのセットに関して、第１の要素に対して２つの値のみ、第２の要素に対して４つの値、などがある。ＳＰＡＴｉベクトルの第１の要素（−１，＋１）に対して可能な値は２つしかないため、つまり可能なフィルタ応答は２つしかないため、この見解は単純明快な形で示すことが可能である。同様に、フィードバックの最初の２つの要素に対して可能な値は４つしかない。これらの乗算は、合計計算の全ての１／２、１／４、などにわたって共有できるものである。この共有により、計算を１／２に削減することができる。合計パターンの−／＋非対称性を用いることで、計算を因数４によって削減することができる。また繰り返される加算を共有することで、計算回数をさらに削減することができる。削減のスキームは、深さ４に対する計算削減が、図８に表されているものと同じパターンを用いて、先読み深さＭに対して容易に拡張することが可能であることを、示している。
【００４５】
（６０）計算削減スキーム８００には、「○の中の×の記号」で表される乗算器および「○の中の＋の記号」で表される加算器が含まれる。ＣＸ０、ＣＸ１、ＣＸ２、およびＣＸ３は、時間「ｔ」におけるベクトルＳＮＡＴｔで表されるフィルタ５０４の出力である。ＳＰＡＴ０〜ＳＰＡＴ７は、それぞれＹ０〜Ｙ７の８つの出力候補ベクトルの出力値である。ＳＰＡＴ０〜ＳＰＡＴ７は、全て反対称（ａｎｔｉ−ｓｙｍｍｅｔｒｙ）の対応値を有し、このために、出力値を計算する必要はない。さらには、本実施形態には表されていないが、ＳＰＡＴｉを修正する計算には、定数および変数を含めることができる。一実施形態では、ＳＰＡＴ０はＹ０＝｛−ｌ，−１，−１，−１｝に対するフィルタされた応答であり、ＳＰＡＴ１はＹ１＝｛−１，−１，−１，＋１｝に対するフィルタされた応答であり、ＳＰＡＴ２はＹ２＝｛−１，−１，＋１，−１｝のフィルタされた応答、などであり、ＳＰＡＴ７はＹ７＝｛−１，＋１，＋１，＋１｝に対するフィルタされた応答を表す。計算削減スキームは、ＳＮＡＴおよびＳＰＡＴ０のドット積を計算し、結果を合計する。ＳＮＡＴおよびＳＰＡＴ１のドット積に関して、最初の３回の積算および加算、すなわちＣＸ０×ＣＹ０＋ＣＸ１×ＣＹ１＋ＣＸ２×ＣＹ２など、はＳＮＡＴおよびＳＰＡＴ０とも同じであり、故に、繰り返されない。ＳＮＡＴおよびＳＰＡＴ２のドット積に関して、２回の積算および加算、すなわちＣＸ０×ＣＹ０＋ＣＸ１×ＣＹ１など、はＳＮＡＴおよびＳＰＡＴ０とも同じであり、故に、繰り返されない、などとなる。このように、一般的には、余分な積算を行わないこと、および繰り返し使用される合計計算結果を貯蔵することによって、量子化器出力を決定するために使用される計算の数を大幅に削減することが可能である。演算削減スキーム８００は、例えば、メモリリコール操作を削減するために一部の繰り返される計算を保持するなどの、任意のいくつかの方法で修正することが可能である。
【００４６】
（６１）先読みデルタ・シグマ変調器１０００によって表される機能の一実施形態を実施するＣ＋＋コードの一実施形態は、以下のとおりである。
【００４７】
／／
／／主な先読みデルタ・シグマ変調器−浮動小数点
／／最適ウィンドウ表示された量子化誤差の先読みによる
／／
ｃｌａｓｓ  ｓｄ９｛
／／９段階のフィードバックタイプ変調器
ｄｏｕｂｌｅ  ｓｖ［３２］，ａｈｅａｄｃｏｅｆ［３２］；
ｓｔａｔｉｃ  ｄｏｕｂｌｅ  ｃｏｅｆ［９］，ｇｌ［４］；
／／フィルタを表す係数
ｓｔａｔｉｃ  ｉｎｔ  ｓｕｍｓｑ［３２７６８］；
／／先読みパターンを表す前計算済みテーブル
ｓｔａｔｉｃ  ｄｏｕｂｌｅ  ｉｍｐｕｌｓｅ［１６］［１６］；
ｓｔａｔｉｃ  ｄｏｕｂｌｅ  ｗｅｉｇｈｔ［１２］［１２］；
／／窓関数
ｉｎｔ  ｎｐａｔ，ｌｅｆｔｂｉｔ；
／／２＾ｄｅｐｔｈ、２＾（ｄｅｐｔｈ−１）
ｉｎｔ  ｄｅｐｔｈｍ４；
／／オーバーフローピークをどこまで検索するか
ｉｎｔ  ｏｒｄｅｒ，ｌａｓｔｓｖ；
ｄｏｕｂｌｅ  ｉｍ［１０］，ｉｓｃａｌｅ；
／／積分器の最大値のモニター（診断）
ｄｏｕｂｌｅ  ｔａｒｇｅｔ；
／／統一のループ利得ターゲットに１つを設定
ｉｎｔ  ｐｒｅｖ；
／／ローカル機能
ｉｎｌｉｎｅ  ｉｎｔ  ｓｄ９：：ｑｕａｎｔｔｒ（ｖｏｉｄ）；
／／ここに先読みコードあり
ｉｎｌｉｎｅ  ｉｎｔ  ｓｄ９：：ｑｕａｎｔｔｒ１６（ｖｏｉｄ）；
／／同上、１６による因数分解を使用
ｉｎｌｉｎｅ  ｖｏｉｄ  ｃｒａｎｋ（ｉｎｔ  ｑ）；
ｉｎｌｉｎｅ  ｖｏｉｄ  ｃｒａｎｋ（ｄｏｕｂｌｅ  ｉｎ，ｉｎｔ  ｑ）；
ｐｕｂｌｉｃ：
ｖｏｉｄ  ｓｄｒｅｓｅｔ  （ｖｏｉｄ）；
／／変調器のスタートアップを表す
ｖｏｉｄ  ｐｒｍａｘ  （ｖｏｉｄ）；
／／積分器最大値のプリントアウト
ｖｏｉｄ  ｓｄ（ｄｏｕｂｌｅ  ｉｎ，ｄｏｕｂｌｅ＊ｏｕｔ）；
／／実際の変調器
ｖｏｉｄ  ｐｒｓｔａｔ（ｖｏｉｄ）；
ｉｎｔ  ｓｔａｔｓ［４０９６］［２］；
｝；
ｄｏｕｂｌｅ  ｓｄ９：：ｃｏｅｆ［９］＝
／／６５ｋ
｛１．８６１８４９１４１５２６７６１３ｅ−８，７．６７６２２６８９９６２５６８８ｅ−７，０．００００１７２１１４２１１４８１９４０６，０．０００２２８３４７６０９２０１４１１８，０．００２３０８０２９６１７８６２６６７，０．０１６４４６１２３３５９９９１２９４，０．０８８８８６３２７４８９７２２４７，０．３３７３９８８３８８２７５８０１５，０．８２８６６５２３３２９８５０４９｝；
／／ローカル共振器ゲイン
ｄｏｕｂｌｅ  ｓｄ９：：ｇｌ［４］＝｛−．０００２３，−．０００８５，−．００１５，−．００２０｝；
／／時間サンプルにおいて近くと後方の徐々に減らされた重み付けを表す
ｄｏｕｂｌｅ  ｓｄ９：：ｗｅｉｇｈｔ［１２］［１２］＝｛
｛１．０，０．０，０．０，０．０，０．０，０．０，０．０，０．０，０．０，
０．０，０．０，０．０｝，
｛２．０，１．０，０．０，０．０，０．０，０．０，０．０，０．０，０．０，
０．０，０．０，０．０｝，
｛２．０，２．０，１．０，０．０，０．０，０．０，０．０，０．０，０．０，
０．０，０．０，０．０｝，／／３
｛２．０，２．０，２．０，１．０，０．０，０．０，０．０，０．０，０．０，
０．０，０．０，０．０｝，／／４
｛４．０，４．０，３．０，２．０，１．０，０．０，０．０，０．０，０．０，
０．０，０．０，０．０｝，／／５
｛１．０，１．０，１．０，１．０，１．０，１．０，１．０，１．０，０．０，
０．０，０．０，０．０｝，／／６
｛４．５，４．５，４．５，４．０，３．０，２．０，１．０，０．０，０．０，
０．０，０．０，０．０｝，／／７
｛５．０，５．０，５．０，５．０，４．０，３．５，２．５，１．２，０．０，
０．０，０．０，０．０｝，／／８
｛７．０，７．０，７．０，６．０，５．０，４．０，３．０，２．０，１．０，
０．０，０．０，０．０｝，／／９
｛５．０，５．０，５．０，５．０，５．０，４．６，４．０，３．５，２．６，
１．２，０．０，０．０｝，／／１０
｛７．０，７．０，７．０，７．０，７．０，６．０，５．０，４．０，３．０，
２．０，１．０，０．０｝，／／１１
｛５．０，５．０，５．０，５．０，５．０，５．０，５．０，４．５，４．０，
３．５，２．５，１．５｝｝；／／１２
ｄｏｕｂｌｅ  ｓｄ９：：ｉｍｐｕｌｓｅ［１６］［１６］；
ｉｎｔ  ｓｄ９：：ｓｕｍｓｑ［３２７６８］；
／／上記の二乗の加重和
／／フィルタ内でタイムクランクワンステップをクランクターンさせる
／／
／／このバージョンが現在および未来の出力を同時に演算する
／／
ｉｎｌｉｎｅ  ｖｏｉｄ  ｓｄ９：：ｃｒａｎｋ（ｄｏｕｂｌｅ  ｉｎ，ｉｎｔ  ｑ）｛
ｆｏｒ（ｉｎｔ  ｉ＝ｌａｓｔｓｖ；ｉ＞＝ｏｒｄｅｒ；ｉ−−）ｓｖ［ｉ］＝ｓ
ｖ［ｉ−１］；
ｓｖ［８］＋＝ｓｖ［７］；
ｓｖ［７］＋＝ｓｖ［６］＋ｓｖ［８］＊ｇｌ［３］；
ｓｖ［６］＋＝ｓｖ［５］；
ｓｖ［５］＋＝ｓｖ［４］＋ｓｖ［６］＊ｇｌ［２］；
ｓｖ［４］＋＝ｓｖ［３］；
ｓｖ［３］＋＝ｓｖ［２］＋ｓｖ［４］＊ｇｌ［１］；
ｓｖ［２］＋＝ｓｖ［ｌ］；
ｓｖ［１］＋＝ｓｖ［０］＋ｓｖ［２］＊ｇｌ［０］；
ｓｖ［０］＋＝ｉｎ；
ｉｆ（ｑ＞０）ｆｏｒ（ｉ＝０；ｉ＜＝ｌａｓｔｓｖ；ｉ＋＋）ｓｖ［ｉ］＋＝ａｈｅａｄｃｏｅｆ［ｉ］；ｅｌｓｅ  ｆｏｒ（ｉ＝０；ｉ＜＝ｌａｓｔｓｖ；ｉ＋＋）ｓｖ［ｉ］−＝ａｈｅａｄｃｏｅｆ［ｉ］；
｝；
／／このバージョンは元のプロトタイプフィルタのように作用し
／／定数の演算にのみ使用される
ｉｎｌｉｎｅ  ｖｏｉｄ  ｓｄ９：：ｃｒａｎｋ（ｉｎｔ  ｑ）｛
ｓｖ［８］＋＝ｓｖ［７］−ｃｏｅｆ［８］＊ｑ；
ｓｖ［７］＋＝ｓｖ［６］−ｃｏｅｆ［７］＊ｑ＋ｓｖ［８］＊ｇｌ［３］；
ｓｖ［６］＋＝ｓｖ［５］−ｃｏｅｆ［６］＊ｑ；
ｓｖ［５］＋＝ｓｖ［４］−ｃｏｅｆ［５］＊ｑ＋ｓｖ［６］＊ｇｌ［２］；
ｓｖ［４］＋＝ｓｖ［３］−ｃｏｅｆ［４］＊ｑ；
ｓｖ［３］＋＝ｓｖ［２］−ｃｏｅｆ［３］＊ｑ＋ｓｖ［４］＊ｇ１［１］；
ｓｖ［２］＋＝ｓｖ［１］−ｃｏｅｆ［２］＊ｑ；
ｓｖ［１］＋＝ｓｖ［０］−ｃｏｅｆ［１］＊ｑ＋ｓｖ［２］＊ｇｌ［０］；
ｓｖ［０］＋＝−ｃｏｅｆ［０］＊ｑ；
｝；
ｖｏｉｄ  ｓｄ９：：ｓｄｒｅｓｅｔ（ｖｏｉｄ）｛
ｉｎｔ  ｉ，ｊ，ｐａｔ，ｑ；
ｉｓｃａｌｅ＝ｃｏｅｆ［０］＊．５；
ｏｒｄｅｒ＝９；ｌａｓｔｓｖ＝ｏｒｄｅｒ−２＋ｄｅｐｔｈ；ｄｅｐｔｈｍ４＝
ｄｅｐｔｈ−４；
ｆｏｒ（ｉ＝０；ｉ＜１０；ｉ＋＋）ｉｍ［ｉ］＝０；
ｎｐａｔ＝１＜＜ｄｅｐｔｈ；ｌｅｆｔｂｉｔ＝ｎｐａｔ／２；
ｔａｒｇｅｔ＝１．；ｐｒｅｖ＝０；
／／
／／２＾ｄｅｐｔｈのパターン応答を前演算する
／／考えられる各パターンについて
／／すべての状態変数を０に設定する
／／０を入力し、パターンをフィードバックとして入力する。フィルタ出力を記録す
／／る
／／
ｆｏｒ（ｐａｔ＝０；ｐａｔ＜ｎｐａｔ；ｐａｔ＋＋）｛
ｆｏｒ（ｉ＝０；ｉ＜＝ｌａｓｔｓｖ；ｉ＋＋）ｓｖ［ｉ］＝０；
ｓｕｍｓｑ［ｐａｔ］＝０；
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｑ＝（ｐａｔ＆（１＜＜（ｄｅｐｔｈ−１−ｉ）））？−１：１；
／／
／／ｗ（ｘ−ｙ）＾２＝ｗｘ＾２−２ｗｘｙ＋ｗｙ＾２という事実を使用する
／／最小値を求める場合、除外してよい定数はｗｘ＾２である
／／２ｗｙは（パターン毎の）ベクトルｐａｔｓ［ｐａｔ］に貯蔵されている
／／ｗｙ＾２はすべてｓｃａｌｅｒ  ｓｕｍｓｑ［ｐａｔ］内に合計される
／／
／／
ｐａｔｓ［ｐａｔ］［ｉ］＝（ｉ８−ｔａｒｇｅｔ＊ｑ）＊２＊ｗｅｉｇｈｔ［ｄｅ
ｐｔｈ−１］［ｉ］＊２５６；
ｓｕｍｓｑ［ｐａｔ］＋＝ｉｎｔ（ｆｌｏｏｒ（（ｓｖ［８］−ｔａｒｇｅｔ＊
ｑ）＊（ｓｖ［８］−ｔａｒｇｅｔ＊ｑ）＊ｗｅｉｇｈｔ［ｄｅｐｔｈ−１］［ｉ］
＊２５６））；
ｃｒａｎｋ（ｑ）；
｝
ｆｐｒｉｎｔｆ（ｏｓ，”％３Ｘ”，ｐａｔ）；ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔ
ｈ；ｉ＋＋）ｆｐｒｉｎｔｆ（ｏｓ，”％８．３ｆ”，ｐａｔｓ［ｐａｔ］
［ｉ］）；ｆｐｒｉｎｔｆ（ｏｓ，”＼ｎ”）；
｝
／／
／／この反復によりインパルス応答を作成し、
／／前進係数の配列を確立し、これがフィルタを実行中の先読みへ
／／マッピングする
／／
ｆｏｒ（ｉ＝０；ｉ＜＝ｌａｓｔｓｖ；ｉ＋＋）ｓｖ［ｉ］＝０；
ｑ＝ｌ；
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｆｏｒ（ｊ＝ｌａｓｔｓｖ；ｊ＞＝ｏｒｄｅｒ；ｊ−−）ｓｖ［ｊ］＝ｓｖ［ｊ
−１］；
ｃｒａｎｋ（ｑ）；
ｑ＝０；
｝
ｆｏｒ（ｉ＝０；ｉ＜＝ｌａｓｔｓｖ；ｉ＋＋）ａｈｅａｄｃｏｅｆ［ｉ］＝ｓｖ
［ｉ］；
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｆｏｒ（ｊ＝０；ｊ＜ｄｅｐｔｈ；ｊ＋＋）｛
ｉｍｐｕｌｓｅ［ｉ］［ｊ］＝０；
ｉｆ（ｊ＝＝ｉ）ｉｍｐｕｌｓｅ［ｉ］［ｊ］＝−ｔａｒｇｅｔ＊ｗｅｉｇｈｔ
［ｄｅｐｔｈ−１］［ｊ］＊２＊２５６；
ｉｆ（ｊ＞ｉ）ｉｍｐｕｌｓｅ［ｉ］［ｊ］＝ｓｖ［ｏｒｄｅｒ−１＋ｉ＋ｄｅ
ｐｔｈ−ｊ］＊ｗｅｉｇｈｔ［ｄｅｐｔｈ−１］［ｊ］＊２＊２５６；
｝
｝
ｆｏｒ（ｉ＝０；ｉ＜２０；ｉ＋＋）ｆｐｒｉｎｔｆ（ｏｓ，”％３ｄ％８．５ｆ
＼ｎ”，ｉ，ｓｖ［ｉ］）；
ｆｏｒ（ｉ＝０；ｉ＜３２；ｉ＋＋）ｓｖ［ｉ］＝０；
｝
／／
／／量子化器において、２つの簡素化を使用する。
／／対象性が呼び出され、パターンの前半のみが
／／（パターン＋１＋１−１＋１が、ｓｕｎｓｑが同じ場合に、−１−１＋１−１の／／マイナスであるパットベクトルを有する）ことを考察する
／／
／／さらに、フィードバックが一致する場合、パットは初期の出力のための同じ乗算／／を有する
／／相関におけるツリー構造はこの事実を利用する
／／
ｉｎｔ  ｓｄ９：：ｑｕａｎｔｔｒ（ｖｏｉｄ）｛
ｉｎｔ  ｉｍｐｃｏｒ［４０９６］；
ｉｎｔ  ｉｍｐｄｏｔ［１２］；
ｉｎｔ  ｉ，ｊ；
ｉｎｔ  ｑｔ；
ｉｎｔ  ｓｔｒｉｄｅ；
ｉｎｔ  ｑ＝ｉ８＞０？１：−１；／／古い型の比較（非先読み）
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｉｍｐｄｏｔ［ｉ］＝０；
ｆｏｒ（ｊ＝ｉ；ｊ＜ｄｅｐｔｈ；ｊ＋＋）ｉｍｐｄｏｔ［ｉ］＋＝ｉｎｔ（ｆ
ｌｏｏｒ（．５＋ｓｖ［ｌａｓｔｓｖ−ｊ］＊ｉｍｐｕｌｓｅ［ｉ］［ｊ］））；
｝
ｉｍｐｃｏｒ［０］＝ｉｍｐｄｏｔ［０］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］；
ｉｍｐｃｏｒ［１］＝ｉｍｐｄｏｔ［０］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］；
ｉｎｔ＊ｐｌ＝ｉｍｐｃｏｒ＋２，＊ｐ２；
ｆｏｒ（ｓｔｒｉｄｅ＝２，ｉ＝ｄｅｐｔｈ−２；ｉ＞０；ｓｔｒｉｄｅ＜＜＝ｌ，
ｉ−−）｛
ｉｎｔ  ｔｄｏｔ＝ｉｍｐｄｏｔ［ｉ］；
ｆｏｒ（ｊ＝０，ｐ２＝ｉｍｐｃｏｒ；ｊ＜ｓｔｒｉｄｅ；ｊ＋＋）｛
＊ｐ１＋＋＝＊ｐ２−ｔｄｏｔ；
＊ｐ２＋＋＋＝ｔｄｏｔ；
｝
｝
／／ここで検索する
ｉｎｔ  ｂｅｓｔ＝９９９９９９；
ｐ１＝ｉｍｐｃｏｒ；ｐ２＝ｓｕｍｓｑ；
ｆｏｒ（ｉ＝０；ｉ＜ｌｅｆｔｂｉｔ；ｉ＋＋）｛
ｉｆ（＊ｐｌ＞０）｛
ｉｎｔ  ｔ＝＊ｐ２＋＋−＊ｐｌ＋＋；
ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝
｝ｅｌｓｅ｛
ｉｎｔ  ｔ＝＊ｐ２＋＋＋＊ｐｌ＋＋；
ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝
｝
｝
ｒｅｔｕｒｎ  ｑｔ；
｝
ｖｏｉｄ  ｓｄ９：：ｓｄ（ｄｏｕｂｌｅ  ｉｎ，ｄｏｕｂｌｅ＊ｏｕｔ）｛
ｉｎｔ  ｑ；
／＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊
符号化すべき次のサンプルにおける
主なデルタ・シグマ・ループ‐ｆｐは
＋−２がある出力配列を示す。
これはＳＡＣＤスケーリング定義に一致しており、
ここで５０％ＭＩをフルスケールと見なす。
＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊＊／
ｉｎｔ  ｉ；
ｑ＝ｑｕａｎｔｔｒ（）；
／／アナログ部分を行う
＊ｏｕｔ＋＋＝ｑ＊２；
ｃｒａｎｋ（ｉｎ＊ｉｓｃａｌｅ，ｑ）；
｝；
／／
／／加算の最後のマトリクス因数分解を使用して演算を行う量子化器
／／同じ結果、大きな深さに対してより少ない加算
ｉｎｔ  ｓｄ９：：ｑｕａｎｔｔｒｌ６（ｖｏｉｄ）｛
／／ｄｅｐｔｈ＞＝６の場合のみ成り立つ
ｉｎｔ  ｉｍｐｃｏｒ［４０９６］；
ｉｎｔ  ｉｍｐｄｏｔ［１２］；
ｉｎｔ  ｉ，ｊ；
ｉｎｔ  ｑｔ；
ｉｎｔ  ｓｔｒｉｄｅ；
ｉｎｔ  ｑ＝ｉ８＞０？１：−ｌ；
／／古い型の比較（非先読み）
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｉｍｐｄｏｔ［ｉ］＝０；
ｆｏｒ（ｊ＝ｉ；ｊ＜ｄｅｐｔｈ；ｊ＋＋）ｉｍｐｄｏｔ［ｉ］＋＝ｉｎｔ（ｆ
ｌｏｏｒ（．５＋ｓｖ［ｌａｓｔｓｖ−ｊ］＊ｉｍｐｕｌｓｅ［ｉ］［ｊ］））；
｝
ｉｍｐｃｏｒ［０］＝ｉｍｐｄｏｔ［０］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−５］；
ｉｍｐｃｏｒ［１］＝ｉｍｐｄｏｔ［０］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−５］；
ｉｎｔ＊ｐｌ＝ｉｍｐｃｏｒ＋２，＊ｐ２；
ｆｏｒ（ｓｔｒｉｄｅ＝２，ｉ＝ｄｅｐｔｈ−６；ｉ＞０；ｓｔｒｉｄｅ＜＜＝ｌ，
ｉ−−）｛
ｉｎｔ  ｔｄｏｔ＝ｉｍｐｄｏｔ［ｉ］；
ｆｏｒ（ｊ＝０，ｐ２＝ｉｍｐｃｏｒ；ｊ＜ｓｔｒｉｄｅ；ｊ＋＋）｛
＊ｐ１＋＋＝＊ｐ２−ｔｄｏｔ；
＊ｐ２＋＋＋＝ｔｄｏｔ；
｝
｝
ｉｎｔ  ｃｏｒ０＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ１＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ２＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ３＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−ｌ］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ４＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ５＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ６＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ７＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−ｌ］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ８＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒ９＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒａ＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−ｌ］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒｂ＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒｃ＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒｄ＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］＋ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒｅ＝＋ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
ｉｎｔ  ｃｏｒｆ＝−ｉｍｐｄｏｔ［ｄｅｐｔｈ−１］−ｉｍｐｄｏｔ［ｄｅｐｔ
ｈ−２］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−３］−ｉｍｐｄｏｔ［ｄｅｐｔｈ−４］；
／／ここで検索する
ｉｎｔ  ｂｅｓｔ＝９９９９９９；ｉｎｔ  ｔ；
ｐ１＝ｉｍｐｃｏｒ；ｐ２＝ｓｕｍｓｑ；
ｆｏｒ（ｉ＝０；ｉ＜（ｌｅｆｔｂｉｔ＞＞４）；ｉ＋＋）｛
ｔ＝＊ｐ１＋ｃｏｒ０；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐｌ＋ｃｏｒｌ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ２；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐｌ＋ｃｏｒ３；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ４；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐｌ＋ｃｏｒ５；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ６；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ７；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ８；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒ９；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒａ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒｂ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐｌ＋ｃｏｒｃ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐｌ＋ｃｏｒｄ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒｅ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｔ＝＊ｐ１＋ｃｏｒｆ；ｉｆ（ｔ＞０）｛ｔ＝＊ｐ２＋＋−ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝−１；｝｝ｅｌｓｅ｛ｔ＝＊ｐ２＋＋＋ｔ；ｉｆ（ｔ＜ｂｅｓｔ）｛ｂｅｓｔ＝ｔ；ｑｔ＝＋１；｝｝
ｐ１＋＋；
｝
ｒｅｔｕｒｎ  ｑｔ；
｝
（６２）上述の計算削減技術を使用するＳＮＡＴｔ・ＳＰＡＴｉ計算の代替手法は、図１０に示される先読みデルタ・シグマ変調器１０００などの実行において、図９に示されるネットワーク９００のような加算／比較／選択（ＡＣＳ）ネットワークを使用することである。先読みデルタ・シグマ変調器１０００は、先読みデルタ・シグマ変調器５００の１つの実施形態を表す。約２Ｍ−１のＡＣＳ９００ネットワークは、ツリーに配置されており、先読みデルタ・シグマ変調器１０００を実行することができる。
【００４８】
（６３）以下はＡＣＳネットワークの概念を示す例である。オペレーションは以下の通りに理解できる。先読み深さは４（Ｍ＝４）と仮定する。
ｅ０＝｛１，０，０，０｝に対するフィルタ応答
ｅ１＝｛０，１，０，０｝に対するフィルタ応答
ｅ２＝｛０，０，１，０｝に対するフィルタ応答
ｅ３＝｛０，０，０，１｝に対するフィルタ応答
（６４）フィルタはリニアシステムであるため、ＳＰＡＴ０＝｛−１，−１，−１，−１｝に対するフィルタ応答＝−ｅ０−ｅ１−ｅ２−ｅ３となる。以下のように定義する。
ｆ０＝ｅ０・ＳＮＡＴ
ｆ１＝ｅ１・ＳＮＡＴ
ｆ２＝ｅ２・ＳＮＡＴ
ｆ３＝ｅ３・ＳＮＡＴ
さらに、
ＳＮＡＴ・ＳＰＡＴ０＝−ｆ０−ｆｌ−ｆ２−ｆ３であり、
いかなる「ｉ」のＳＮＡＴ・ＳＰＡＴｉも、関連するｆの値の単純な和／差として演算することができる。
【００４９】
（６５）このオペレーションは、計算の数の観点でみると加算よりも「高価」である乗算の計算を劇的に削減する。すべてのコスト値は以下の形式で示される。
ｃｏｓｔ０＝ｋ０−ｆ０−ｆ１−ｆ２−ｆ３
ｃｏｓｔ１＝ｋ１−ｆ０−ｆ１−ｆ２＋ｆ３
ｃｏｓｔ２＝ｋ２−ｆ０−ｆ１＋ｆ２−ｆ３
ｃｏｓｔ３＝ｋ３−ｆ０−ｆ１＋ｆ２＋ｆ３
ｃｏｓｔ４＝ｋ４−ｆ０＋ｆ１−ｆ２−ｆ３
ｃｏｓｔ５＝ｋ５−ｆ０＋ｆ１−ｆ２＋ｆ３
ｃｏｓｔ６＝ｋ６−ｆ０＋ｆ１＋ｆ２−ｆ３
ｃｏｓｔ７＝ｋ７−ｆ０＋ｆ１＋ｆ２＋ｆ３
ｃｏｓｔ８＝ｋ８＋ｆ０−ｆ１−ｆ２−ｆ３
ｃｏｓｔ９＝ｋ９＋ｆ０−ｆ１−ｆ２＋ｆ３
ｃｏｓｔ１０＝ｋ１０＋ｆ０−ｆ１＋ｆ２−ｆ３
ｃｏｓｔ１１＝ｋ１１＋ｆ０−ｆ１＋ｆ２＋ｆ３
ｃｏｓｔ１２＝ｋ１２＋ｆ０＋ｆ１−ｆ２−ｆ３
ｃｏｓｔ１３＝ｋ１３＋ｆ０＋ｆｌ−ｆ２＋ｆ３
ｃｏｓｔ１４＝ｋ１４＋ｆ０＋ｆ１＋ｆ２−ｆ３
ｃｏｓｔ１５＝ｋ１５＋ｆ０＋ｆ１＋ｆ２＋ｆ３
（６６）最小値を見つけることだけに注意すればよいために、各コストにｆ０＋ｆ１＋ｆ２＋ｆ３が追加された場合でも結果に変化はない。したがって、
ｃｏｓｔ０＝ｋ０
ｃｏｓｔ１＝ｋｌ＋２＊ｆ３
ｃｏｓｔ２＝ｋ２＋２＊＋ｆ２
ｃｏｓｔ３＝ｋ３＋２＊＋ｆ２＋２＊ｆ３
などが得られる。
【００５０】
（６７）ｆ０、ｆ１、またはｆ２の値にかかわらず、最小値候補としてｃｏｓｔ０およびｃｏｓｔ１の選択を見つけることができる。同様に、ｃｏｓｔ２とｃｏｓｔ３との間の最適候補は、ｆ２は両方において定数であるため、ｆ０、ｆ１、またはｆ２を知らなくても見つけることができる。そこで、ｋの値およびｆ３のみを使用して、候補数を半減することができる。図９のＡＣＳブロックはこの機能を行う。
【００５１】
（６８）ｆ２および上記計算の結果のみを使用して、ＡＣＳ要素の別の段階でも候補の数を５０％削減することができる。同様に、唯一の候補つまり最適なマッチングが選択されるまで、このツリーを繰り返すことができる。
【００５２】
（６９）距離計算に重み付けの値を含むことによって、重み付けされた先読み変調器は上記と同じ構造で構成される。Ｋの値、およびｅの値の計算において使用される乗算定数は、重み付けにより修正され、これが使用される唯一の修正となりうる。
【００５３】
（７０）ＡＣＳ機能を行うためのＣ＋＋コードの一実施形態は、以下の通りである。
／／
／／検索のために逆ツリーを使用およびＡＣＳ（加算／比較／選択）する
／／
ｉｎｔ  ｓｄ９：：ｑｕａｎｔａｃｓ（ｖｏｉｄ）｛
ｉｎｔ  ａｃｓ［３２７６８］；
ｉｎｔ  ｉｍｐｄｏｔ［１６］；
ｉｎｔ  ｉ，ｊ，ｑｔ；
／／
／／まず、深さインパルス応答相関を計算する
／／
ｆｏｒ（ｉ＝０；ｉ＜ｄｅｐｔｈ；ｉ＋＋）｛
ｉｍｐｄｏｔ［ｉ］＝０；
ｆｏｒ（ｊ＝ｉ；ｊ＜ｄｅｐｔｈ；ｊ＋＋）ｉｍｐｄｏｔ［ｉ］＋＝ｉｎｔ（ｆ
ｌｏｏｒ（．５＋ｓｖ［ｌａｓｔｓｖ−ｊ］＊ｉｍｐｕｌｓｅ［ｉ］［ｊ］））；
｝
／／
／／ここで、ＡＣＳの（ｄｅｐｔｈ−１）段階を行う。第１段階は、
／／２＾（ｄｅｐｔｈ−１）ＡＣＳ要素を有し、
／／最終は２を有する
／／
／／第１段階を終えると、ほとんどの場合、最終ａｃｓに量子化器の出力を決定させ／／る
／／
ｉｎｔ  ｌｅｎｔａｂ；ｉｎｔ＊ｐ２＝ｓｕｍｓｑ；
ｆｏｒ（ｉ＝ｄｅｐｔｈ−ｌ，ｌｅｎｔａｂ＝ｌｅｆｔｂｉｔ；ｉ＞０；ｌ
ｅｎｔａｂ＞＞＝１，ｉ−−）｛
ｉｎｔ＊ｐｌ＝ａｃｓ；
ｉｎｔ  ｄｏｔ＝ｉｍｐｄｏｔ［ｉ］＜＜ｌ；
ｆｏｒ（ｊ＝０；ｊ＜ｌｅｎｔａｂ；ｊ＋＋）｛
ｉｎｔ  ｔｌ＝＊ｐ２＋＋；
ｉｎｔ  ｔ２＝＊ｐ２＋＋−ｄｏｔ；
＊ｐ１＋＋＝＿ｍｉｎ（ｔ１，ｔ２）；
｝
ｐ２＝ａｃｓ；
}
／／最終段階は、最終結果を制御するｍｕｘ出力を持つ、単一のａｃｓである
ｑｔ＝（ａｃｓ［０］）＞＝（ａｃｓ［１］−（ｉｍｐｄｏｔ［０］＜＜１））？−
１：１；
ｒｅｔｕｒｎ  ｑｔ；
｝
（７１）図１１を参照すると、信号処理システム１１００は、先読み変調器５００を含む信号処理システムの一実施形態を示している。信号処理システム１１００は、特にスーパーオーディオコンパクトディスク（「ＳＡＣＤ」）のレコーディングアプリケーションなどのハイエンドオーディオアプリケーションに有用である。信号処理システム１１００は、出力信号ソース１１０３によって生成される出力信号１１０４を処理する。出力信号１１０４はデジタルでもアナログでもよく、レコーディング／ミキシングプロセスの一部として生成される信号を含む任意の信号ソースまたはその他のハイエンドオーディオソースからのもの、もしくはコンパクトディスクプレーヤー、ＭＰ３プレーヤー、オーディオ／ビデオシステム、オーディオテーププレーヤー、またはその他の信号レコーディングおよび／または再生デバイスなどのよりローエンドのソースからのものであってもよい。
【００５４】
（７２）入力信号１１０４は、オーディオ信号、ビデオ信号、オーディオとビデオ信号、および／またはその他の種類の信号であってよい。一般に、入力信号１１０４は先読み変調器１１０２によって変調される前に、何らかの前処理１１０６を受ける。例えば、前処理１１０６は、デジタル入力信号１２０４を周知の方法でオーバーサンプリングするための補間フィルタを含み得る。前処理１１０６は、アナログ入力信号１１０４をデジタル信号に変換するためのアナログ・デジタル変換器を含み得る。前処理１１０６はまた、ミキシング、反響、等化、編集、帯域外雑音フィルタリング、およびその他のフィルタリング操作を含み得る。
【００５５】
（７３）デジタル領域において、前処理１１０６は先読み変調器１１０２に離散入力信号Ｘ［ｎ］を提供する。各離散入力信号ｘ［ｎ］はＫビット信号であり、ここでＫは１よりも大きい。より詳細に前述したとおり、先読み変調器５００は入力信号Ｘ［ｎ］および候補Ｙ［ｎ］を処理し、出力信号１１０７を決定する。出力信号１１０７は、例えば１ビット出力値の集合である。したがって出力信号１１０７は、入力信号１１０４の符号化されたバージョンとなる。
【００５６】
（７４）図１１および１２を参照すると、信号処理システム１１００は一般に、先読み変調器５００の出力信号１１０７を後処理するための後処理１１０８を含む。後処理１１０８は、無損失データ処理１２０２を含み得る。ＳＡＣＤオーディオマスタリングに対しては、無損失データ圧縮段階１２０４、およびこれに続く、マスター貯蔵媒体１２０８に焼き付けられる実際のピットを生成するレコーディングプロセス１２０６がある。マスター貯蔵媒体１２０８は次いで機械的に複製され、広範囲に配布される利用可能なディスク（またはその他の貯蔵媒体）１２１２が製造される。例えば、ディスク１２１２は、デジタル汎用ディスク、コンパクトディスク、テープ、またはスーパーオーディオコンパクトディスクなど任意の種類のものである。再生／出力デバイス１１１０はディスク１２１２からデータを読み取り、ユーザに認知できるフォーマットで信号出力を提供する。プレイバック／出力デバイス１１１０は、出力信号１１０７を利用できる任意の出力デバイスであり得る。したがって、貯蔵媒体１２０８および１２１２は、先読み変調器５００を使用して実現される信号変調プロセスを使用して符号化されたデータを含む。
【００５７】
（７５）本発明について詳細に説明したが、添付の特許請求の範囲によって定義される本発明の精神および範囲を逸脱することなく、本発明に対して様々な変更、代用および改変がなされ得ることを理解すべきである。例えば、量子化プロセス７００は従来のプルーニング手法と併せて使用してもよく、これにより出力データの信頼性は削減されるが、計算をさらに簡単にすることができる。
【図面の簡単な説明】
【００５８】
【図１】（２４）図１（従来技術と表記されている）は、先読みデルタ・シグマ変調器を有する信号処理システムを表す。
【図２】（２５）図２（従来技術と表記されている）は、従来型の先読みデルタ・シグマ変調器の概略図を表す。
【図３】（２６）図３（従来技術と表記されている）は、量子化器およびノイズシェーピングループフィルタを表す。
【図４Ａ】（２７）図４Ａ（従来技術と表記されている）は、４段階のノイズシェーピングループフィルタを有するデルタ・シグマ変調器を表す。
【図４Ｂ】（２８）図４Ｂ（従来技術と表記されている）は、３段階の無限インパルス応答（ＩＩＲ）フィルタを表す。
【図４Ｃ】（２９）図４Ｃ（従来技術と表記されている）は、先読み操作に適用されるＩＩＲフィルタを実行する手法を表す。
【図４Ｄ】（３０）図４Ｄ（従来技術と表記されている）は、図４ＢのＩＩＲフィルタに対する状態変数メモリ操作を表す。
【図５】（３１）図５は、入力信号ナチュラル応答ＳＮＡＴを強制パターン応答ＳＰＡＴから分離する重ね合わせの概念を利用する先読みデルタ・シグマ変調器を表す。
【図６】（３２）図６は、ループフィルタ応答の重ね合わせを表す。
【図６Ａ】（３３）図６Ａは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｂ】（３３）図６Ｂは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｃ】（３３）図６Ｃは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｄ】（３３）図６Ｄは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｅ】（３３）図６Ｅは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｆ】（３３）図６Ｆは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図６Ｇ】（３３）図６Ｇは、先読みデルタ・シグマ変調器に対する無限インパルス応答フィルタの設計と実行を表す。
【図７】（３４）図７は、先読みデルタ・シグマ変調器の量子化プロセスを表す。
【図８】（３５）図８は、計算量削減のスキームを表す。
【図９】（３６）図９は、加算／比較／選択ネットワークを表す。
【図１０】（３７）図１０は、図９の加算／比較／選択ネットワークを使用および実行する先読みデルタ・シグマ変調器を表す。
【図１１】（３８）図１１は、先読み変調器、出力デバイスおよびプロセス、および出力媒体を含む、信号処理システムを表す。
【図１２】（３９）図１２は、図１１の信号処理システムの実施形態における後処理操作を表す。
【図１】
2007518377.tif 000006
【図２】
2007518377.tif 000007
【図３】
2007518377.tif 000008
【図４Ａ】
2007518377.tif 000009
【図４Ｂ】
2007518377.tif 000010
【図４Ｃ】
2007518377.tif 000011
【図４Ｄ】
2007518377.tif 000012
【図５】
2007518377.tif 000013
【図６】
2007518377.tif 000014
【図６Ａ】
2007518377.tif 000015
【図６Ｂ】
2007518377.tif 000016
【図６Ｃ】
2007518377.tif 000017
【図６Ｄ】
2007518377.tif 000018
【図６Ｅ】
2007518377.tif 000019
【図６Ｆ】
2007518377.tif 000020
【図６Ｇ】
2007518377.tif 000021
【図７】
2007518377.tif 000022
【図８】
2007518377.tif 000023
【図９】
2007518377.tif 000024
【図１０】
2007518377.tif 000025
【図１１】
2007518377.tif 000026
【図１２】
2007518377.tif 000027
【国際調査報告】
2007518377.tif 000028
2007518377.tif 000029
2007518377.tif 000030