(57)【特許請求の範囲】
【請求項１】
正準符号桁数字係数によりデータタップ値を処理するための有限インパルス応答フィルタであって、
少なくとも一つのデータタップ値および少なくとも一つの正準符号桁数字係数と関連するシフトグループであって、各シフトグループが複数の並列経路を含み、各並列経路が前記係数のビット対と関連し、前記データタップ値を前記ビット対に従ってシフトすることで重み付けされた積を生成するシフトグループと、
前記各シフトグループからの前記重み付けされた積を結合するための加算器と、
を備え、
各並列経路が、
前記データタップ値を前記ビット対の第一のビットの前記係数内の位置に対応する所定の数の桁だけシフトするためのシフトユニットと、
前記シフトユニットの出力に結合され、前記ビット対の第二のビットが非零である場合、前記データタップ値をさらにシフトする加算器入力ユニットと、
有する、ことを特徴とする有限インパルス応答フィルタ。
【請求項２】
前記フィルタの中央タップから離れたシフトグループが前記並列経路の全ては利用しないことを特徴とする請求項１記載の有限インパルス応答フィルタ。
【請求項３】
正準符号桁数字係数によりデータタップ値を処理するための方法であって、
デジタルフィルタタップ値を複製することで複製されたタップ値を生成するステップと、
前記各複製されたタップ値を前記正準符号桁数字係数のビット対に従ってシフトするステップと、
前記データタップ値を前記ビット対の第一のビットの前記係数内の位置に対応する所定の数の桁だけシフトするステップと、
重み付けされた積を生成するため、前記ビット対の第２ビットが非零である場合には前記データタップ値をさらにシフトするステップと、
前記重み付けされた積を加算するステップと、
を含むことを特徴とする方法。
【請求項４】
前記シフトグループは、前記ビット対の最上位ビットが非零である場合には前記データタップ値をシフトし、前記ビット対の最上位ビットが零である場合には前記データタップ値を変更せずに通過させるよう構成される、請求項１記載の有限インパルス応答フィルタ。
【請求項５】
前記シフトは、前記ビット対の最上位ビットが非零である場合に前記データタップ値をシフトする、請求項１記載の有限インパルス応答フィルタ。
【発明の詳細な説明】
【０００１】
発明の背景
本発明は、一般的には、デジタルフィルタ、より詳細には、異なるセットの正準符号桁数字係数に対して再構成可能な有限インパルス応答フィルタに関する。
【０００２】
有限インパルス応答(以下、FIRとも云う)フィルタを実現するための一つの技法に正準符号桁数字（canonical sign digit、以下、CSDとも云う）表現がある。この技法は、デジタルフィルタリング動作を遂行するために要求される最も大きくかつ最も高価な要素である乗算器の必要性が排除できるために、FIRフィルタのハードウエア実現にはかなり有利である。代わりに、CSD表現では全てのフィルタ係数内の非零のビットの総数をフィルタ性能を許容できるレベルに維持しながら最小化することが許される。
【０００３】
CSD表現のフィルタ内の各タップに対して、データタップ値が、そのタップに対する係数内の各非零のビットの位置に対応する数のビット位置だけシフトされる。結果としてのシフトされたデータタップ値が次に加算される。これがフィルタ内の各係数に対して行なわれる。このやり方のでは、従来のFIRフィルタを実現するやり方と比較して、より大きな加算器（つまり、より多くのデータ入力を持つ加算器）が必要となる。ただし、このやり方は、それでも、乗算器を用いる必要がないために望ましい。乗算器のハードウエア費用が非常に高いために、CSD実現は、非常に長いデジタルフィルタに対しては、とりわけ魅力的である。このような非常に長いデジタルフィルタは、しばしば、例えば、通信システムにおいて、特に、デジタルデータ信号の復調のために必要とされる。
【０００４】
CSDフィルタにおいては、各係数（の処理）は、関連するデータタップ値を係数のビット位置だけシフトし、これらを加算することで実現される。データタップ値のシフティングは、通常はデータバスのハードワイヤド機能（hard-wired function）であるために、CSDフィルタは、もっぱら特定のセットの係数に対して設計され、このため、異なる係数に対して再構成あるいはプログラムすることはできない。これとは対象的に、従来のFIRフィルタでは、単に各係数にデータタップ値が乗じられる。このようなFIRフィルタは、各データタップ乗算器の係数入力の所にプログラマブルレジスタを設けた場合は、容易に再構成が可能であり、このため、個々の係数を任意の所望の値に、単にその値をレジスタ内にプログラミングすることで再構成することができる。
【０００５】
発明の概要
本発明は、正準符号桁数字フォーマットを用いて表現された係数を用いる再構成あるいはプログラミング可能な有限インパルス応答フィルタに関する。本発明によると、FIRフィルタは、任意の時点において、係数に対して異なる値を指定する（つまり、プログラミングする）ことで再構成することができ、この指定はフィルタ長に対する最大値およびデータと係数の精度に関する制約によってのみ制限される。
【０００６】
本発明によるFIRフィルタは、少なくとも一つのデータタップ値および少なくとも一つのCSD係数と関連するシフトグループを備える。各シフトグループは複数の並列経路を含む。各並列経路は、データタップ値を、係数のビット対に従ってシフトすることで、重み付けされた積を生成する。各シフトグループからの重み付けされた積を結合するための加算器も設けられる。
【０００７】
各並列経路は、さらに、データタップ値を、ビット対の第一のビットの係数内の位置に対応する所定の数の桁だけシフトするためのシフトユニットを備える。各並列経路は、さらに、シフトユニットの出力に結合された加算器入力ユニットを備える。加算器入力ユニットは、前記ビット対の第二のビットが非零である場合は、データタップ値をさらにシフトし、前記ビット対の第二のビットが零である場合は、シフトユニットからのデータタップ値を、変更せずに、加算器にパスし、前記ビット対の両方が零である場合は、前記シフトユニットからのデータタップ値を強制的に零にする。加算器入力ユニットは、さらに、前記ビット対の一方のビットが負である場合は、前記シフトユニットからのデータタップ値を反転する。
【０００８】
本発明は、正準符号桁数字（CSD）係数にてデータタップ値を処理するための方法にも関する。この方法は、デジタルフィルタタップ値を複製することで複製されたタップ値を生成するステップを含む。この方法は、さらに、各複製されたタップ値をCSD係数のビット対に従ってシフトすることで重み付けされた積を生成し、次に、重み付けされた積を加算するステップを含む。
【０００９】
以下に、本発明を図面を用いて説明するが、図面中、類似の参照符号は類似のパーツを示す。
【００１０】
発明の実施の形態
従来のFIRフィルタにおけるセルの数は、フィルタの長さ（つまり、データタップの数）と同数である。各セルは、メモリレジスタ、第二のレジスタ、および乗算器から成る。メモリレジスタはフィルタによって処理されている信号のデジタルサンプルであるデータタップ値を格納し、第二のレジスタは特定のタップに対するフィルタ係数を格納し、乗算器は２つのレジスタの内容の積を生成する。この後者の積は、セルの出力を与え、全てのセルの出力を加えることで、FIRフィルタの出力を構成する重み付けされた総和が生成される。
【００１１】
図１は、FIRフィルタ係数に対するCSD表現の一例を示す。図から分かるように、個々の係数ビットは、０、＋１、あるいは−１のみの値を持つ。これとは対象的に、従来の二進表現においては、０と＋１のビット値のみが許される。CSD表現においてはもう一つの制約として２つの非零のビットは隣接することができない。
【００１２】
図２はCSD係数を用いて実現されるFIRフィルタの構造を示す。図から分かるように、フィルタ２は、データタップ値を格納するデータタップレジスタ４−１〜４−Ｎ、およびフィルタ出力を生成するための加算器８を備える。ただし、CSD 表現においては、乗算器の代わりに、シフトグループ６−１〜６−Ｎを用いて重み付けされた積が生成され、こうして生成された積を加算器８によって結合することで、フィルタの出力が生成される。これら各重み付けされた積は、非零の各係数ビットにて重み付けされた各データタップ値の総和として表される。データタップ値の重み付けは、データタップ値を、問題の非零のCSDビットのCSD係数内の位置に従ってシフトすることで遂行される。例えば、非零のCSDビットが第二のビット位置にあるときは、データタップ値は１桁(place)だけシフトされる。
【００１３】
ただし、もしそのCSD係数ビットが−１であるときは、データタップ値は減算される。この動作として、本当であれば符号付きの２の補数の減算が遂行されるべきであるが、１の補数表現の方が単にデータ値のビット毎の反転で済むために実現が遥かに簡単である。このため、正しい値と、係数位置だけシフトされるために１の最下位ビット（one least significant bit）の定数だけ異なる１の補数が、その後補償される。
【００１４】
CSD係数を用いて実現されるFIRフィルタにおいては、各フィルタタップに対して、加算すべきデータ値の数は、従来のFIRフィルタにおいては単一の値が生成されるのとは対照的に、CSD係数内の非零のビットの数に等しい。その後、上述 のように、個々のフィルタ係数内の各負のCSD係数ビットに対して要求される１の補数の補償が加えられ、単一の数値が生成されるが、これはCSDフィルタするグローバル補償定数（global compensation constant）と呼ばれる。このグローバル補償定数が、次に、データ加算器８への一つの追加の入力としてフィルタ総和に加えられる。
【００１５】
CSD実現の長所は、乗算器が除去できることである。ただし、CSD実現においては、データ加算器８への入力の数が増加する。このために、CSDフィルタの設計における基本的な方針として、フィルタ性能要件を満たすという制約の下で、非零の係数ビットを最小化することが求められる。
【００１６】
CSDフィルタ構造は、乗算器に対する必要性が除去されるために、明らかに、従来のFIR構造と比較して、特定のフィルタをハードウエアにて実現するには（特に、非常に長いフィルタの場合は）を効率的である。ただし、CSD構造は、そのままでは、任意の所望の係数をプログラムすることができる再構成可能な実現は与えない。この理由は、各CSD係数に対して、データタップ当たりのデータ加算器入力の数が、係数内の非零のビットの数と等しくなり、このため、フィルタの構造が係数値に依存するためである。
【００１７】
さらに、CSD構造をハードウエアにてより効率的に実現するためには、各係数ビットに対して要求されるデータタップ値のシフトを、データバスのハードワイヤドシフト（hard-wired shift）として実現する必要がある。このため、タップ値のシフトも係数値に依存することとなる。このため、CSD実現は、厳密に指定されており、変更する必要がない係数を持つ長いフィルタに対しては有効であるが、これら条件が保障できない用途に対しては現実的なオプションとはいえない。
【００１８】
以下に、10-ビット係数精度を持つ１００−タップフィルタを用いて、再構成可能なCSDフィルタ構造の実現に伴う困難さについて解説するが、この議論は他のフィルタ一般にも適用するものである。典型的なCSDフィルタは、平均的に、フィルタタップの数に係数当たりのビット数を掛けた値の２倍より少し多くの数のデータ加算器入力を持つ。説明の例においては、このことは、加算器入力の数は、２００より極端に多くはない（例えば、最大で２５０程度である）ことに対応する。CSD係数ビットに関する制約がない場合は、このフィルタは、最大で１０００のデータ加算器入力を持つところである（１００タップ従って１００の係数の各々に対して、１０ビット従って１０個の入力）。加えて、データタップ値がシフトされた位置の数を調節する問題も残される。
【００１９】
ただし、CSD表現においては、２つの非零のCSD係数ビットは、隣接するビット位置を占拠することはできないという制約を課される。これは、最大で、全CSDビットの半分が非零の値を持ち得ることを意味する。上の例では、これは、５００ビットに等しい。こうして、データ加算器入力の最大数は、２の因数だけ低減される。これは、典型的な数よりも２の因数だけ多く、従ってまだ非常に大きいが、それでもかなりの改善である。これは、CSDフィルタを、最大フィルタ長および係数ビット精度の制約内で、全てのフィルタ係数の任意の再構成が許されるように設計する場合は、特にそうである。
【００２０】
図３は、本発明による再構成可能CSD係数フィルタの一つの実施例を示す。図から分かるように、再構成可能CSD係数フィルタ１０もデータタップ値を格納するデータタップレジスタ４−１〜４−Ｎ、および重み付けされた積を結合することでフィルタ出力を生成するの加算器８を備える。ただし、再構成可能CSD係数フィルタ１０においては、重み付けされた積は、異なるセットのCSD係数に対して再構成することが可能なシフトグループ１２−１〜１２−Ｎによって生成される。
【００２１】
換言すれば、シフトグループ１２−１〜１２−Ｎは、データタップ値に対応するCSD係数に従って重みを付けする。シフトグループ１２−１〜１２−Ｎは、この機能を、２つの非零のCSD係数ビットは隣接位置を占拠することができないという制約を利用して遂行する。この制約は、係数がビット対に分割された場合、各ビット対内の非零のビットは、最大で１ビットであること（つまり、２ビットの一方は＋１あるいは−１であり得るが、他方は０であるべきこと）を含蓄する。こうして、係数の各ビット対は、たった２つの可能な位置値の一方だけシフトされた１つのデータタップ値によって表される。つまり、反転あるいは非反転、もしくは零である。つまり、全てのケースに対して、たった一つの加算器入力にて、２ビットの任意の許される値に対する２つのCSD係数ビット位置を実現することが可能となる。
【００２２】
上述のスキームを実現するために、各シフトグループ１２−１〜１２−Ｎは、対応するデータタップ値を複製するための並列構造を含む。各並列経路は、複製された各データタップ値を処理するためのシフトユニット１４および加算器入力ユニット１６を備える。各シフト経路は、各係数内の異なる隣接ビット対にも対応する。値Ｋは各係数内のビットの数に等しいために、各シフトグループは、通常、Ｋ／２個の並列経路を含む。
【００２３】
動作においては、各シフトユニット１４−１〜１４−Ｋ／２は、対応するデータタップ値を所定の数のビット位置だけシフトする。本発明によると、この所定の数は、対応するビット対内の一方のビットの係数内の位置に等しい。説明の実施例においては、この一方のビットは対応するビット対の最下位ビット（least significant bit）とされる。こうして、シフトユニット１４−１は、メモリレジスタ４−１からのデータタップ値を、"０"場所だけシフトし、シフトユニット１４−２はデータタップ値を"２"場所だけシフトし、シフトユニット１４−３はデータタップ値を"４"場所だけシフトする。本発明によると、シフトユニット１４−１〜１４−Ｋ／２は、好ましくは、データバスのハードワイヤドシフトにて実現される。
【００２４】
さらに、加算器入力ユニット１６−１〜１６−Ｋ／２は、シフティングユニット１４−１〜１４−Ｋ／２から受信されるデータタップ値に関して対応するビット対の構成に従ってさらなる論理動作（演算）を遂行する。図から分かるように、各加算器入力ユニット１６−１〜１６−Ｋ／２は３つの制御入力を持つ。本発明によると、好ましくは、各制御ユニットは、ビット対の異なる構成に対応する単一のビットとされる。これら制御ビットは、異なるセットの係数に対して、オフラインにて生成される必要がある。ただし、これを行なう方法については当業者においては周知である。
【００２５】
前述のように、各シフトユニット１４−１〜１４−Ｋ／２は、データタップ値を対応するビット対の最下位ビット（least significant bit）の係数内の位置に従ってシフトする。第一の制御ビットが、そのビット対の最上位ビット（most significant bit）が零であることを示す場合は、加算器ユニットユニット１６−１〜１６−Ｋ／２は、単に、シフトユニット１４−１〜１４−Ｋ／２から受信されるデータタップ値を変更することなく、加算器８にパスする。第一の制御ビットが、そのビット対の最上位ビットが非零であることを示す場合は、加算器入力ユニット１６−１〜１６−Ｋ／２は対応するデータタップ値をもう１桁だけシフトする。
【００２６】
さらに、第二の制御ビットが、そのビット対の両ビットともに零であることを示す場合は、加算器入力ユニット１６−１〜１６−Ｋ／２は、対応するデータタップ値を強制的に零にする。第三の制御ビットが、そのビット対の非零のビットが負であることを示す場合は、加算器入力ユニット１６−１〜１６−Ｋ／２は、対応するデータタップ値を反転することで、１の補数を実現する。加算器入力ユニット１６−１〜１６−Ｋ／２の上述の動作は、対応するビット対の構成に従って遂行される。これによって、本発明によるCSDフィルタを異なるセットの係数に対して再構成することが可能となる。
【００２７】
シフトグループの一つの動作の例を示すと以下の通りである。図から分かるように、シフトユニット１４−２および加算器入力ユニット１６−２は、CSD係数１のビット2／3に対応する。最初に、データタップレジスタ４−１からのデータタップ値は、シフトユニット１４−２によって、このビット対の最下位ビット（least significant bit）の位置に対応する２桁だけシフトされる。このビット対の最下位ビット、つまり、ビット２が、非零の場合は、加算器入力ユニット１６−２は、単に、シフトユニット１４−２からのデータタップ値を変更することなく、加算器８にパスする。これは、このデータタップ値が、ビット２が非零であることに対応して、既に幾つかの場所だけシフトされているためである。このビット対の最上位ビット（most significant bit）、つまり、ビット３が非零である場合は、加算器入力ユニット１６−２は対応するデータタップ値をもう１桁だけシフトする。こうして、このデータタップ値は、ビット３が非零であることに対応して、全部で３桁だけシフトされる。
【００２８】
さらに、このビット対の両ビットとも零である場合は、加算器入力ユニット１６−２は、対応するデータタップ値を強制的に零にする。このビット対の非零のビットが負であるときは、加算器入力ユニット１６−１〜１６−Ｋ／２は、対応するデータタップ値を反転することで１の補数を実現する。これによって、ビット2／3のいずれかが負である場合は、対応するデータタップ値を減算することが可能となる。全てのシフトユニットおよび加算器入力ユニットも同様に機能し、加算器８に重み付けされた積を供給する。次に、加算器８は、これら全ての重み付けされた積を結合することで、フィルタ出力を生成する。
【００２９】
図４は、本発明による再構成可能CSD係数フィルタのもう一つの実施例を示す。この実施例１８は、図３の実施例と類似するが、シフトグループ２０−１〜２０−Ｎが異なる。この実施例１８においては、シフトユニット２２−１〜２２−Ｋ／２は、対応するデータタップ値を、各ビット対の最上位ビット（most significant bit）の係数内のビット位置に従ってシフトする。従って、シフトユニット２２−１はメモリレジスタ４−１からのデータタップ値を"１"桁だけシフトし、シフトユニット２２−２は、データタップ値を"３"桁だけシフトし、シフトユニット２２−３は、データタップ値を"５"桁だけシフトする。
【００３０】
さらに、加算器入力ユニット２４−１〜２４−Ｋ／２も、シフトユニット２２−１〜２２−Ｋ／２から受信されるデータタップ値に関して、対応するビット対の構成に従ってさらなる論理動作を遂行する。ただし、この実施例においては、対応するビット対の最上位ビット（most significant bit）が非零の場合は、加算器入力ユニット２４−１〜２４−Ｋ／２は、シフトユニット２２−１〜２２−Ｋ／２からの対応するデータタップ値を、変更することなく、加算器８にパスする。そのビット対の最下位ビット（least significant bit）が非零である場合は、加算器入力ユニット２４−１〜２４−Ｋ／２は、対応するデータタップ値を１位置だけシフトする。この場合は、データタップ値は、最下位ビットに向ってシフトする必要がある。今までは、全てのシフトは、最上位ビットに向ってであるものと仮定されていた。
【００３１】
図５は図３の加算器入力ユニットの一例を示す。各加算器入力ユニット１６内に含まれる論理ゲートが破線ボックスによって囲まれている。説明の目的で、この図には、図３のデータタップレジスタの一つが示される。より具体的には、データタップレジスタ４と加算器入力ユニット１６との間の接続が示される。ただし、データタップレジスタ４は加算器入力ユニット１６の部分は構成しないことに注意する。
【００３２】
各加算器入力ユニット１６は、データタップ値に関して、上述のように、３つの制御入力に従って論理動作を遂行する論理を備える。
【００３３】
加算器入力ユニット１６においては、一つの対の係数ビットに対して許される２つのデータシフトは、２入力マルチプレクサ３０を用いて実現され、第一の制御ビットが、非零のCSDビット位置を選択するために用いられる。選択されたビットの符号（の決定）は、ビットワイズ排他的ORゲート３２を用いて実現され、この排他的ORゲート３２は第三の制御ビットによって制御される。この第三の制御ビットは、CSDビットが−１であり、データの反転が要求される場合に出現する（アサートされる）。最後に、両方のCSDビットが零の場合は、ビットワイズANDゲート３４を用いて実現（処理）され、ANDゲート３４は、第二の制御ビットによって不能にされた場合は、（第一の２ビットの値とは関係なく）全データビットを強制的に零にする。説明の特定の実現は、単に、要求される論理を解説するためのものであり、ユニークなあるいは好ましい実現を指定するものではなく、この論理は幾つかの周知の論理削減技法を用いて最適化することが可能である。
【００３４】
図６は、図３の加算器入力ユニットのよりハードウエア的に最適な実施例を示す。図からわかるように、ここでも加算器入力ユニット１６は破線のブロックによって囲まれており、データタップレジスタ４の一つがこれら２つの間の接続を示すために含まれる。この実施例においても、加算器入力ユニット１６は図５との関連で説明したのと同一の論理動作を遂行する。ただし、この実施例では、加算器入力ユニット１６は、４入力マルチプレクサ３８−１〜３８−Ｔの並列配列に単純化される。ここで、Ｔは、各データタップ値内のビットの数に対応する。図７は、このような４入力マルチプレクサ３８の標準的に論理実現を示す。
【００３５】
図８は、図６の４入力マルチプレクサ３８のカスタム回路実現を示す。この実施例においては、各４入力マルチプレクサ３８は、示されるように、トランジスタの並列配列４０を含む。ただし、全トランジスタの並列配列４０に対して、たった１セットの論理ゲート４２のみが要求される。こうして、このセットの論理ゲート４２は、全マルチプレクサ３８に共通とされる。従って、このカスタム回路実現は、必要とされる論理ゲートの数が少なくて済み、このために、図７の標準の論理実現より、ハードウエアにて実現するのにより効率的である。
【００３６】
図９は、本発明による再構成可能CSD係数フィルタのもう一つの実施例を示す。図から分かるように、この図面では、参照符号は、文字"ｐ"、"ｑ"、および"ｒ"を含む。文字"ｐ"はフィルタの中央タップから遠く離れたデバイスを表し、"ｑ"は中央タップにより近いデバイスを表し、"ｒ"は、中央タップの所あるいはこれに非常に近いデバイスを表す。この実施例４６においては、中央タップから遠く離れたシフトグループ１２−ｐおよび中央タップにより近いシフトグループ１２−ｑは各ビット対と関連する並列経路の全ては利用しないように構成される。
【００３７】
図から分かるように、シフトグループ１２−ｐにおいては、ビット0／1と関連する並列経路のみが利用され、シフトグループ１２−ｑにおいては、ビット0／1および2／3と関連する並列経路のみが用いられる。この構成のために、この実施例４６では、要求されるシフトユニットおよび加算器入力ユニットは、さらに少なくなる。従って、この実施例４６では、要求されるハードウエアの量は前の幾つかの実施例より少なくなる。
【００３８】
図９の実現は、以下のように正当化できる。再構成可能CSDフィルタを実現するためには、各データ加算器入力に対して追加の論理が要求されることに加えて、これら入力の数も、固定係数フィルタに対して要求されるようもかなり多くなる（このため、要求されるデータ論理回路の数も影響を受ける）。これらペナルティの内の第一のペナルティは除去することはできないが、第二のペナルティは、実際のFIRフィルタの特性を考慮することで大幅に低減することができる。
【００３９】
サンプリング速度を変換するために、幾つかのポリフェーズフィルタ（多相フィルタ）が用いられていることを除いて、大きな長さを持つ事実上全てのデジタルフィルタは、全ての大きな係数がフィルタの中央タップに非常に接近して配置されるという特性を持つ。このことは、フィルタの長さが増加するほど言える。CSD実現は、主として非常に長いフィルタを対象とするために、これは重要な点である。原則として、あるタップが中央から遠く離れていればいるほど、その係数の規模は小さくなる。CSD係数の場合は、このことは、ある与えられた係数の最大レンジより大きな規模に対応するビットは、常に零であることを意味する。このことが少なくとも２つの高次ビット（high-order bits）に対して言える場合は、CSD表現内の全てのこのようなビット対は、零なるデータ加算器入力値を与え、このため、入力も、この入力に対する関連する論理も不要となる。
【００４０】
さらに、ある与えられた最大フィルタ長およびビット精度に対して、各CSD係数の最大の実際的なレンジは、中央タップからのタップ距離の関数として決定することができる。従って、このレンジを越える規模に対応する全てのビット対は、全て除去することができる。この結果、加算器入力の数は、同一の長さと精度の典型的な固定係数フィルタに対する平均値よりそれほど大きくない値に低減される。残される唯一のペナルティは、各入力に対してデータ論理が要求されることであるが、これと引き替えに、利益として、再構成できる能力とプログラミングできる能力が獲得される。図９に示すCSDフィルタの実施例は、実際のフィルタの上述の特性を利用する。つまり、係数内に含まれるフィルタの中央タップの所あるいはこれに隣接するビット対と関連するハードウエアを排除する。
【００４１】
特定のフィルタがもっぱら少数の特定の用途（例えば、幾つかの変調標準のみをサポートするデジタル復調器）に対してのみ使用されることが保障されており、この特定のフィルタのみをサポートすることが必要とされる場合は、ハードウエアのさらなる削減を達成することができる。この場合は、図９の再構成可能なCSDフィルタ構造は、要求されるフィルタの少なくとも一つ内で用いられる係数ビット対をサポートするのみで済む。任意のフィルタ内で必要とされないビット対は、それらのデータ加算器入力と関連する論理ともに、その係数内のそれらの位置あるいはフィルタ自身内の係数の位置とは関係なく、省くことができる。全ての要求されるフィルタのCSD係数の設計を、任意のフィルタによって使用される係数ビット対の総数を最小にするという追加の基準に従って設計した場合は、フィルタハードウエアのさらなる大幅な削減が可能となる。
【００４２】
図１０は、本発明による再構成可能なCSD係数フィルタのもう一つの実施例を示す。この実施例４８においては、要求されるハードウエアをさらに削減するために、資源を共有する技法が用いられる。資源の共有は、一つあるいは複数のデータタップ値に、１つのデータサンプリング期間の間、同数の処理（クロック）サイクルを通じて関連する係数を乗算する過程と、結果を累積する過程を伴う。一つの再構成可能CSDフィルタにおいては、資源の共有を利用することで、データ加算器入力の数が低減される。
【００４３】
図１０から分かるように、各巡回シフトグループ５０−１〜５０−Ｎ／ＭがＭ個のデータタップレジスタ４−１〜４−Ｍと関連する。各シフトグループ５０−１〜５０−Ｎ／Ｍは、図３のシフトグループと同一に動作するように構成される。ただし、この実施例４８においては、各巡回シフトグループ５０−１〜５０−Ｎ／Ｍは、たった一つではなく、Ｍ個のCSD係数と関連付けられる。こうすることで、各シフトグループ５０−１〜５０−Ｎ／ＭがＭ個の係数の各々を通じて回転し、Ｍ個のサイクルを通じて各グループのデータタップレジスタ４−１〜４−Ｍからのデータを処理できるようにされる。加算器８の出力の所には、Ｍ個のサイクルを通じて結果を累積・加算するためのアキュムレータ５２が設けられる。
【００４４】
ある与えられたグループの資源共有タップ内の係数の共有は、そのグループ内の各係数に対して、CSD表現を通じて巡回的に"回転（rotating）"することで実現される。これがフィルタ内の全ての資源共有グループに対して行なわれ、結果がデータ加算器の出力の所で累積される。通常行なわれるように、資源の共有は、非常に長いフィルタの場合に、最も効果的である。共有は隣接するデータタップ間で遂行され、これら隣接するデータタップは定義から中央タップから概ね同一距離にあるために、各々の共有される係数のレンジは本質的に等しく、このため、資源の共有を使用するCSDフィルタには、さらに、係数のレンジを中央タッ プからの距離の関数として制限することでデータ加算器入力を低減する上述の技法も適用できる。
【００４５】
本発明による再構成可能なフィルタは集積回路上に効率良く実現できる。本発明は、結果としてハードウエア乗算器を排除できるフィルタ係数のCSD表現を再構成およびプログラミング可能なFIRフィルタ内に用いることができる点でFIRフィルタの分野における進歩である。
【００４６】
本発明の上述の説明は、単に解説の目的で示されたものであり、本発明を開示された形態に厳密に制限することを意図するものではない。上述の教示を考慮すれば、多くの修正および変形が可能であり、従って、本発明の範囲は上述の詳細な説明によって制限されるものではない。
【００４７】
本発明の一つの特定な実施例においては、第一のビットは、ビット対の最下位ビット（least significant bit）から成る。
【００４８】
本発明の一つの特定な実施例においては、第一のビットは、ビット対の最上位ビット（most significant bit）から成る。
【００４９】
本発明の一つの特定な実施例においては、第二のビットは、ビット対の最上位ビットから成る。
【００５０】
本発明の一つの特定な実施例においては、第二のビットは、ビット対の最下位ビットから成る。
【図面の簡単な説明】
【図１】  FIRフィルタ係数の正準符号桁数字（CSD）表現の一例を示す図。
【図２】  CSD係数を用いる従来のFIRフィルタを示す線図である。
【図３】  本発明による再構成可能なCSD係数フィルタの一つの実施例を示す線図である。
【図４】  本発明による再構成可能なCSD係数フィルタのもう一つの実施例を示す線図である。
【図５】  本発明による図３の加算器入力ユニットの一例を示す線図である。
【図６】  本発明による図３の加算器入力ユニットのよりハードウエア化に適する実施例を示す線図である。
【図７】  図５に示す４入力マルチプレクサの実施例を示す線図である。
【図８】  図５に示す４入力マルチプレクサの実施例を示す線図である。
【図９】  本発明による再構成可能なCSD係数フィルタのもう一つの実施例を示す線図である。
【図１０】  本発明による再構成可能なCSD係数フィルタのもう一つの実施例を示す線図である。
【符号の説明】
４  データタップレジスタ
６  シフトグループ
８  加算器
１２  シフトグループ
１４  シフトユニット
１６  加算器入力ユニット
３０  ２入力マルチプレクサ
３２  ビットワイズ排他的ORゲート
３８  ４入力マルチプレクサ
４０  トランジスタの並列配列
４２  論理ゲート
５０  巡回シフトグループ
５２  アキュムレータ
【図１】
0004704646.tif 000002
【図２】
0004704646.tif 000003
【図３】
0004704646.tif 000004
【図４】
0004704646.tif 000005
【図５】
0004704646.tif 000006
【図６】
0004704646.tif 000007
【図７】
0004704646.tif 000008
【図８】
0004704646.tif 000009
【図９】
0004704646.tif 000010
【図１０】
0004704646.tif 000011