(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-09
(45)【発行日】2024-05-17
(54)【発明の名称】デジタル信号プロセッサ及び動作方法
(51)【国際特許分類】
H03H 17/04 20060101AFI20240510BHJP
H03H 17/06 20060101ALI20240510BHJP
【FI】
H03H17/04 633Z
H03H17/06 633Z
(21)【出願番号】P 2020571393
(86)(22)【出願日】2019-06-19
(86)【国際出願番号】 EP2019066249
(87)【国際公開番号】W WO2019243443
(87)【国際公開日】2019-12-26
【審査請求日】2022-05-09
(32)【優先日】2018-06-22
(33)【優先権主張国・地域又は機関】EP
(73)【特許権者】
【識別番号】517232028
【氏名又は名称】マンタ
(74)【代理人】
【識別番号】110001173
【氏名又は名称】弁理士法人川口國際特許事務所
(72)【発明者】
【氏名】プチオム,ステファーヌ
【審査官】石田 昌敏
(56)【参考文献】
【文献】米国特許第07248646(US,B1)
【文献】特開2001-339279(JP,A)
【文献】特開2001-265709(JP,A)
【文献】米国特許第6407694(US,B1)
【文献】欧州特許出願公開第1120708(EP,A2)
(58)【調査した分野】(Int.Cl.,DB名)
H03H 17/00-17/08
(57)【特許請求の範囲】
【請求項1】
プログラム可能なデジタル信号プロセッサであって、デジタルフィルタと、シフトレジスタルックアップテーブルと、フィルタメモリとを含み、前記シフトレジスタルックアップテーブルは、第1の動作モードで前記デジタルフィルタに入力データを提供するように結合され、及び前記フィルタメモリは、前記第1の動作モードで前記デジタルフィルタにフィルタ係数を提供するように結合され、前記フィルタメモリ及び前記シフトレジスタルックアップテーブルの出力は、所望のフィルタ構成を一緒に実装する対応するフィルタ係数及び入力データを生成するように同期され、
前記プログラム可能なデジタル信号プロセッサが、ステートマシンであって、前記シフトレジスタルックアップテーブル及び前記フィルタメモリにアドレス値を提供するステートマシンをさらに含み、
前記アドレス値は、前記シフトレジスタルックアップテーブル及び前記フィルタメモリの単一のアドレスを含み、それにより、前記シフトレジスタルックアップテーブル及び前記フィルタメモリに格納された前記アドレス値は、前記単一のアドレスが前記第1の動作モードで前記デジタルフィルタの前記対応する係数及び入力データを参照するように構築される、プログラム可能なデジタル信号プロセッサ。
【請求項2】
前記シフトレジスタルックアップテーブルは、シフトレジスタを含み、前記シフトレジスタは、単一の連続的なシフトレジスタとして又は複数の独立して動作可能なシフトレジスタとしてのいずれかで動作可能であるように構成される、請求項1に記載のプログラム可能なデジタル信号プロセッサ。
【請求項3】
第2の動作モードにおいて、前記シフトレジスタルックアップテーブルは、乗算器入力レジスタとして使用される、請求項1に記載のプログラム可能なデジタル信号プロセッサ。
【請求項4】
前記デジタルフィルタは、有限インパルス応答フィルタのコンポーネントを構成する、請求項1に記載のプログラム可能なデジタル信号プロセッサ。
【請求項5】
前記デジタルフィルタは、フィードバック構成において、第1の有限インパルス応答フィルタと、第2の有限インパルス応答フィルタとを含む無限インパルス応答フィルタのコンポーネントを構成し、前記ステートマシンは、前記第1の有限インパルス応答フィルタ及び前記第2の有限インパルス応答フィルタの出力の組み合わせを調整する許可信号を提供して、前記無限インパルス応答フィルタを実装する、請求項1に記載のプログラム可能なデジタル信号プロセッサ。
【請求項6】
複数のルックアップテーブルを含むFPGAアーキテクチャで実装され、それぞれの前記ルックアップテーブルの構成は、システム起動時に構成ビットストリームを用いてプログラムされた1つ又は複数のそれぞれのメモリユニットによって定義され、前記フィルタメモリ内の値も前記構成ビットストリームによってプログラムされる、請求項1に記載のプログラム可能なデジタル信号プロセッサ。
【請求項7】
デジタル信号プロセッサ動作を実行する方法であって、第1の動作モードでデジタル信号プロセッサにデータを出力するようにシフトレジスタルックアップテーブルをアドレス指定するステップと、前記第1の動作モードでデジタルフィルタに係数を提供するようにフィルタメモリをアドレス指定するステップと、前記係数を使用して入力データにデジタルフィルタ動作を実行するステップとを含み、
単一のアドレス値が前記第1の動作モードで前記デジタルフィルタの対応する係数及び入力データを参照するように、前記シフトレジスタルックアップテーブル及び前記フィルタメモリを構築するさらなるステップを含み、それにより、第1の動作モードで前記デジタル信号プロセッサに係数を出力するようにシフトレジスタルックアップテーブルをアドレス指定する前記ステップと、前記第1の動作モードで前記デジタルフィルタに入力データを提供するようにフィルタメモリをアドレス指定する前記ステップとは、前記単一のアドレス値を使用して実行される、方法。
【請求項8】
前記デジタルフィルタ動作は、有限インパルス応答フィルタ動作である、請求項7に記載の方法。
【請求項9】
前記デジタルフィルタ動作は、フィードバック値に基づく第1の有限インパルス応答動作及び第2の有限インパルス応答動作を含む無限インパルス応答フィルタ動作であり、前記方法は、無限インパルス応答フィルタの結果を得るために、前記第1の有限インパルス応答動作及び前記第2の有限インパルス応答動作の結果の組み合わせを調整する許可信号を提供するさらなるステップを含む、請求項7に記載の方法。
【請求項10】
請求項7に記載のステップを実施するように適合された命令を含む、コンピュータのためのプログラム。
【請求項11】
プログラム可能なデジタル信号プロセッサであって、デジタルフィルタと、シフトレジスタルックアップテーブルと、フィルタメモリとを含み、前記シフトレジスタルックアップテーブルは、第1の動作モードで前記デジタルフィルタに入力データを提供するように結合され、及び前記フィルタメモリは、前記第1の動作モードで前記デジタルフィルタにフィルタ係数を提供するように結合され、前記フィルタメモリ及び前記シフトレジスタルックアップテーブルの出力は、所望のフィルタ構成を一緒に実装する対応するフィルタ係数及び入力データを生成するように同期され、
前記プログラム可能なデジタル信号プロセッサが、ステートマシンであって、前記シフトレジスタルックアップテーブル及び前記フィルタメモリにアドレス値を提供するステートマシンをさらに含み、
前記デジタルフィルタは、フィードバック構成において、第1の有限インパルス応答フィルタと、第2の有限インパルス応答フィルタとを含む無限インパルス応答フィルタのコンポーネントを構成し、前記ステートマシンは、前記第1の有限インパルス応答フィルタ及び前記第2の有限インパルス応答フィルタの出力の組み合わせを調整する許可信号を提供して、前記無限インパルス応答フィルタを実装する、プログラム可能なデジタル信号プロセッサ。
【請求項12】
デジタル信号プロセッサ動作を実行する方法であって、
第1の動作モードで前記デジタル信号プロセッサにデータを出力するようにシフトレジスタルックアップテーブルをアドレス指定するステップと、前記第1の動作モードでデジタルフィルタに係数を提供するようにフィルタメモリをアドレス指定するステップと、前記係数を使用し
て入力データにデジタルフィルタ動作を実行するステップとを含み、
前記デジタルフィルタ動作は、フィードバック値に基づく第1の有限インパルス応答動作及び第2の有限インパルス応答動作を含む無限インパルス応答フィルタ動作であり、前記方法は、無限インパルス応答フィルタの結果を得るために、前記第1の有限インパルス応答動作及び前記第2の有限インパルス応答動作の結果の組み合わせを調整する許可信号を提供するさらなるステップを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル信号プロセッサアーキテクチャに関する。
【背景技術】
【0002】
デジタル信号プロセッサは、デジタルフィルタ、圧縮など、デジタル信号処理動作に専用のサポートを提供することに特化されたデジタル電子モジュールである。
【0003】
デジタル信号プロセッサの機能性は、スタンドアロンのマイクロプロセッサを含む多くの形式で「パッケージ内のシステム」ユニットの一部として又はFPGAアーキテクチャの特殊ブロックとして提供され得る。
【0004】
FPGAは、プログラム可能な論理デバイスの一種である。それらは、概して標準的なプログラム可能な論理ブロックに基づいており、その多くは、一緒に配置されて様々な機能を実装する。
【0005】
図1は、従来技術において既知のFPGAシステムの一例を概略的に示す。
【0006】
図1に示されているように、FPGAチップ10は、複数の論理ブロック11を含む。チップは、複数の入力/出力ポート12も含む。これらの論理ブロック11及び入力/出力ポート12を接続するのは、複数のトラック14である。これらのトラックの接合点には、複数のプログラム可能な配線区域13が設けられており、それらは、スイッチボックスと呼ばれる場合もある。これらのプログラム可能な配線区域には、各スイッチと接続されたビットセルメモリに格納された論理値の制御下において、任意の交差トラックの対を選択的に接続することができるスイッチが設けられている。ビットセルメモリの値は、不揮発性メモリからのシステムの起動時に設定される。したがって、必要に応じてスイッチメモリ内の値を設定することにより、任意の論理ブロックの任意の接続を任意の他の論理ブロック又は任意の入力/出力ポート12の接続に結合することができる。同様に、いずれか1つの入力/出力ポートをいずれかの他の入力/出力ポートに接続し得る。このように、各論理ブロックの動作を定義するようにメモリユニットを適宜構成し、論理ブロック間に適切な接続を確立するようにスイッチメモリ13を適宜構成することにより、任意の所望の機能性を実装することができる。
【0007】
FPGAの基本的な考え方は、標準的な論理ブロックの適切な接続及び適切な論理値によって任意のデジタル動作が実装可能であることに基づいているが、特定のシナリオでは、このような一般的なアプローチは、所与の機能を実装するために使用されるチップ表面積及び所望の機能を適用するために動作中に消費されるエネルギーの点で非常に非効率的である。したがって、現代のFPGAアーキテクチャの多くは、特定の機能をサポートするように特別に設計された回路を含む特殊ブロック15を含む。
【0008】
特定のFPGAアーキテクチャは、このような特殊ブロック15を提供して、デジタル信号処理動作をサポートする。
【0009】
図2は、先行技術において既知のデジタル信号処理ブロックを示す。
【0010】
図2に示されているように、それぞれリレー213及び214によってバッファされた2つの入力211及び212を含むブロック200が設けられている。入力211及び212は、乗算器220に値を提供し、この乗算器は、さらなるリレー221を介して加算器230にその出力を提供する。この加算器は、さらなるリレー216を介して第2の入力215を受信し、さらなるリレー231を介してブロック出力217を発信する。実装の詳細に応じて様々なリレーを使用しても使用しなくてもよい。
【0011】
上述したようなFPGAアーキテクチャのブロックとして、DSPブロックは、FPGAの他のブロックによって提供される任意の適切な論理に接続され得る。特に、これらの他のブロックは、通常、上述したような標準的な論理ブロックとなり、所望の動作に必要となり得るいかなる論理入力でも提供するように構成され得る。一方の入力211又は212に適切な係数値を供給し、もう一方の入力に適切にタイミングを合わせた一連のデータ値を供給し、且つ出力値を蓄積するようにさらなる論理ブロックを構成することにより、フィルタ及び他の機能を実装し得る。
【0012】
このようなアプローチの例は、例えば、Xilinx Virtex 5又はXilinx Virtex 4のFPGAアーキテクチャのユーザガイドに見つけることができる。
【発明の概要】
【発明が解決しようとする課題】
【0013】
特に、上述したような先行技術のアプローチは、DSPアーキテクチャの効率を多少向上させるが、特定のDSP動作の実装をサポートするために外部の論理に依存することは、結果として得られる回路が、必要な空間、消費されるエネルギー、クロック分配などの点で最適以下のままであることを意味することが理解されるであろう。高度の汎用性を保持しながら、より統合された機能性を提供するDSPアーキテクチャを提供することが望ましい。
【課題を解決するための手段】
【0014】
本発明によれば、第1の態様では、プログラム可能なデジタル信号プロセッサであって、デジタルフィルタと、シフトレジスタルックアップテーブルと、フィルタメモリとを含み、シフトレジスタルックアップテーブルは、第1の動作モードでデジタルフィルタに入力データを提供するように結合され、及びフィルタメモリは、第1の動作モードでデジタルフィルタにフィルタ係数を提供するように結合され、フィルタメモリ及びシフトレジスタルックアップテーブルの出力は、所望のフィルタ構成を一緒に実装する対応するフィルタ係数及び入力データを生成するように同期される、プログラム可能なデジタル信号プロセッサが提供される。
【0015】
第1の態様の発展形態では、シフトレジスタルックアップテーブルは、シフトレジスタを含み、このシフトレジスタは、単一の連続的なシフトレジスタとして又は複数の独立して動作可能なシフトレジスタとしてのいずれかで動作可能であるように構成される。
【0016】
第1の態様の発展形態では、プログラム可能なデジタル信号プロセッサは、ステートマシンであって、シフトレジスタルックアップテーブル及びフィルタメモリにアドレス値を提供するステートマシンをさらに含む。
【0017】
第1の態様の発展形態では、プログラム可能なアドレス値は、シフトレジスタルックアップテーブル及びフィルタメモリの単一のアドレスを含み、それにより、シフトレジスタルックアップテーブル及びフィルタメモリに格納された値は、単一のアドレスが第1の動作モードでデジタルフィルタの対応する係数及び入力データを参照するように構築される。
【0018】
第1の態様の発展形態では、第2の動作モードにおいて、シフトレジスタルックアップテーブルに格納された値は、デジタルフィルタによる以外の処理のために出力される。
【0019】
第1の態様の発展形態では、第2の動作モードにおいて、シフトレジスタルックアップテーブルは、乗算器入力レジスタとして使用される。
【0020】
第1の態様の発展形態では、デジタルフィルタは、有限インパルス応答フィルタのコンポーネントを構成する。
【0021】
第1の態様の発展形態では、デジタルフィルタは、フィードバック構成において、第1の有限インパルス応答フィルタと、第2の有限インパルス応答フィルタとを含む無限インパルス応答フィルタのコンポーネントを構成し、ステートマシンは、第1の有限インパルス応答及び第2の有限インパルス応答の出力の組み合わせを調整する許可信号を提供して、無限インパルス応答フィルタを実装する。
【0022】
第1の態様の発展形態では、デジタル信号プロセッサは、複数のルックアップテーブルを含むFPGAアーキテクチャで実装され、それぞれのルックアップテーブルの構成は、システム起動時に構成ビットストリームを用いてプログラムされた1つ又は複数のそれぞれのメモリユニットによって定義され、フィルタメモリ内の値も構成ビットストリームによってプログラムされる。
【0023】
本発明によれば、第2の態様では、デジタル信号プロセッサ動作を実行する方法であって、第1の動作モードでデジタル信号プロセッサにデータを出力するようにシフトレジスタルックアップテーブルをアドレス指定するステップと、第1の動作モードでデジタルフィルタに係数を提供するようにフィルタメモリをアドレス指定するステップと、この係数を使用して入力データにデジタルフィルタ動作を実行するステップとを含む方法が提供される。
【0024】
第2の態様の発展形態では、方法は、単一のアドレス値が第1の動作モードでデジタルフィルタの対応する係数及び入力データを参照するように、シフトレジスタルックアップテーブル及びフィルタメモリを構築するさらなるステップを含み、それにより、第1の動作モードでデジタル信号プロセッサに係数を出力するようにシフトレジスタルックアップテーブルをアドレス指定するステップと、第1の動作モードでデジタルフィルタに入力データを提供するようにフィルタメモリをアドレス指定するステップとは、単一のアドレス値を使用して実行される。
【0025】
第2の態様の発展形態では、デジタルフィルタ動作は、有限インパルス応答フィルタ動作である。
【0026】
第2の態様の発展形態では、デジタルフィルタ動作は、フィードバック値に基づく第1の有限インパルス応答動作及び第2の有限インパルス応答動作を含む無限インパルス応答フィルタ動作であり、方法は、無限インパルス応答フィルタの結果を得るために、第1の有限インパルス応答動作及び第2の有限インパルス応答動作の結果の組み合わせを調整する許可信号を提供するさらなるステップを含む。
【0027】
本発明によれば、第3の態様では、第2の態様のステップを実施するように適合された命令を含む、コンピュータのためのプログラムが提供される。
【0028】
本発明の上記及び他の利点について、添付図面を参照してここで説明する。
【図面の簡単な説明】
【0029】
【
図1】従来技術において既知のFPGAシステムの一例を概略的に示す。
【
図2】先行技術において既知のデジタル信号処理ブロックを示す。
【
図3】第1の実施形態によるプログラム可能なデジタル信号プロセッサを示す。
【
図4】第2の実施形態によるプログラム可能なデジタル信号プロセッサを示す。
【
図5】一実施形態による有限インパルス応答フィルタの並列実装を提示する。
【
図6】一実施形態による無限インパルス応答フィルタの並列実装を提示する。
【
図7】一実施形態によるフィルタを使用して実装された符号付き乗算器を示す。
【
図8】一実施形態によるデジタル信号プロセッサ動作を実行する方法を提示する。
【発明を実施するための形態】
【0030】
図3は、第1の実施形態によるプログラム可能なデジタル信号プロセッサを示す。
【0031】
示されているように、プログラム可能なデジタル信号プロセッサ300は、デジタルフィルタ310と、シフトレジスタルックアップテーブル320と、メモリ330とを含む。メモリは、RAM又はROMデバイスなどのランダムアクセスメモリ、カスケード接続されたレジスタなどを含み得る。シフトレジスタルックアップテーブル320は、第1の動作モードでデジタルフィルタ310に入力データを提供するように結合され、フィルタメモリ330は、その第1の動作モードでデジタルフィルタ310にフィルタ係数を提供するように結合される。フィルタメモリ及びシフトレジスタルックアップテーブルの出力は、所望のフィルタ構成を一緒に実装する対応するフィルタ係数及び入力データを生成するように同期される。
【0032】
デジタルフィルタは、データ値及び係数値を乗算するように構成された乗算器と、場合により追加のレジスタを用いて、実質的に
図2に関して上述したように連続する値を蓄積するための加算器とを含む。追加の遅延、合算、多重化又は他のコンポーネントを組み込んで機能性を拡張し得る。
【0033】
示されているように、シフトレジスタルックアップテーブル320は、4つのフリップフロップ321、322、323、324を含むシフトレジスタを含む。4つのフリップフロップのみが示されているが、任意の数のフリップフロップを設け得ることが理解されるであろう。シフトレジスタの長さは、
図3のDSPの単一の実装によって処理され得る係数の最大数に対応するため、フリップフロップの数は、フィルタによって取り扱い可能な係数の数、すなわちフィルタタップの数、したがって実行し得るフィルタ動作の複雑さを反映するフィルタの基本設計制約に基づいて選択することができる。好都合なフリップフロップの数は、特定の実施形態では32であり得る。
【0034】
同様に、メモリ330内のアドレスの数は、フィルタによって取り扱い可能な係数の数、すなわちフィルタタップの数と等しいことができる。他の実施形態では、メモリ330内のアドレスの数は、フィルタによって取り扱い可能な係数の数、すなわちフィルタタップの数よりも少ないことができる。他の実施形態では、メモリ330内のアドレスの数は、フィルタによって取り扱い可能な係数の数、すなわちフィルタタップの数よりも多いことができる。
【0035】
各メモリアドレスに格納されたデータワードの長さは、入力データバスの幅と等しいことができる。24ビットの入力バスであれば、24ビットの係数並びに24個のシフトレジスタ及びマルチプレクサを並列で含むシフトレジスタルックアップテーブルを示唆する。フィルタは、次に、フィルタリング動作中に2つの24ビット値の乗算を行う。
【0036】
動作中、フィルタリングのための2進データ値の連続的なストリームは、入力301に到達し、これは、後述するように、処理が進行するにつれて、シフトレジスタ321、322、323、324を通して徐々にクロックされる。シフトレジスタ321、322、323、324のフリップフロップにロードされた所与の値のセットの場合、フィルタ内のタップの数までのシフトレジスタ321、322、323、324の各フリップフロップは、順にアドレス指定され、値は、データ値としてフィルタ310に伝達される。
【0037】
一方、フィルタ内のタップの数までのシフトレジスタ321、322、323、324の各フリップフロップがアドレス指定されると、メモリ330が同時にアドレス指定され、それにより、アドレス指定された記憶場所は、アドレス指定されたフリップフロップに対応するフィルタ係数を包含し、結果として得られる出力が係数値のセットとしてフィルタ310に伝達される。
【0038】
シフトレジスタからのアドレス指定された値は、メモリ330によって提供される対応する係数を使用して、フィルタ310によってこのように処理される。フィルタの出力は、蓄積され、システムは、次に、シフトレジスタ321、322、323、324の次のフリップフロップ及びメモリ330内の対応する位置のアドレス指定に進む。
【0039】
これに基づき、フィルタ内のタップの数までのシフトレジスタの各データ値は、その係数のそれぞれのセット及びフィルタの出力で蓄積された結果に従って処理される。フィルタ内のタップの数までのシフトレジスタの各フリップフロップがアドレス指定されると、シフトレジスタは、例えば、クロックバス302をアクティブ化することによってクロックされ、それにより、シフトレジスタの各フリップフロップの値は、その隣に渡され、新たなデータ値がデータ入力301からシフトレジスタの第1のフリップフロップ321にクロックされ、シフトレジスタの最後のフリップフロップの値は、廃棄される。
【0040】
フィルタ内のタップの数までのシフトレジスタ321、322、323、324の各フリップフロップを順番にアドレス指定し、メモリ330によって提供された対応する係数を使用して、フィルタ310によって処理するプロセスは、次に、新たな値のセットに対して新規に開始される。
【0041】
このプロセスは、入力チャネル301のすべての入力値が処理されるまで無限に続く。
【0042】
図4は、第2の実施形態によるプログラム可能なデジタル信号プロセッサを示す。
【0043】
図3に関して説明したように、メモリ330の係数値及びシフトレジスタルックアップテーブル420のデータ値のアドレス指定が同期して実行されることで、フィルタの特定のタップ位置に対応するシフトレジスタルックアップテーブル420からデータが得られると、そのタップ位置に適切な係数がメモリ330から得られる。この同期は、例えば、一方ではメモリ330に、且つ他方ではシフトレジスタルックアップテーブル420にそれぞれのアドレス値を提供するマッピングテーブルなどを参照して、様々な方法で実現され得ることが理解されるであろう。
【0044】
メモリ330、シフトレジスタルックアップテーブル420は、同じアドレス値がメモリ330の対応する値及びシフトレジスタルックアップテーブル420のデータ値を指すように構築され得ることがさらに理解されるであろう。
【0045】
そのため、デジタルフィルタ310と、シフトレジスタルックアップテーブル420と、メモリ330とを含むプログラム可能なデジタル信号プロセッサ400が設けられ、シフトレジスタルックアップテーブル420は、第1の動作モードでデジタルフィルタ310に入力データを提供するために結合され、フィルタメモリ330は、第1の動作モードでデジタルフィルタ310にフィルタ係数を提供するために結合され、フィルタメモリ330及びシフトレジスタルックアップテーブル420の出力は、所望のフィルタ構成を一緒に実装する対応するフィルタ係数及び入力データを生成するように同期されている。
【0046】
図4は、同期を実現する1つの方法を提示し、それによりクロック入力302及びタップ数入力441を受信するカウンタ440が提供される。カウンタ440には、現在のカウント値を出力する出力がさらに設けられている。カウンタ440は、より全般的には、同期ステートマシンの一部又は全部を構成するものとして見なされ得る。カウント値は、アドレス値としてメモリ330及びシフトレジスタルックアップテーブル420に送給される。これに基づき、カウント値が増分したとき、連続するタップ位置に対応する連続する係数値が選択されるように、係数値がメモリ330に連続した位置でロードされる。同じ理由で、カウント値が増分したとき、連続するタップ位置に対応するシフトレジスタの連続するフリップフロップがマルチプレクサ425によって選択される。それに応じて、カウント値は、メモリ330及びシフトレジスタルックアップテーブル420を同期してアドレス指定する役割を果たす。カウンタは、タップ数のカウント(実装の詳細に応じて、シフトレジスタルックアップテーブル420のフリップフロップの数までの任意の数であり得る)に達すると、カウントを再度開始するように構成されている。特定の変形形態では、カウンタには、カウント値がタップ数入力に達すると、所定の値を出力するオーバーフロー出力が設けられ得る。この出力を使用して、例えば以下でさらに詳細に説明するように、複数のプログラム可能なデジタル信号プロセッサの動作を調整し得る。
【0047】
示されているように、
図4の配置では、マルチプレクサ425は、2つのサブマルチプレクサ425a及び425bとして実装され、それぞれシフトレジスタ321~324の出力の一部を受信している。各サブマルチプレクサ425a及び425bがシフトレジスタ321~324の出力の半分を受信し得るか、又は他の何らかの方法でシフトレジスタ321~324の出力を2つのサブマルチプレクサ間で分割し得る。2つのサブマルチプレクサ425a及び425bの出力は、それ自体が第3のサブマルチプレクサ435cによって選択されることで、3つのサブマルチプレクサ425a、425b、425cが
図3のマルチプレクサ325と論理的に均等であるようにしている。フリップフロップ322とフリップフロップ323との間に示されているように、シフトレジスタの出力が一方の又はもう一方のサブマルチプレクサに送信される点に対応するシフトレジスタ321~324内の点にさらなるマルチプレクサ426が設けられている。ある選択値の場合、マルチプレクサ426は、フリップフロップ323の入力をフリップフロップ322の出力に結合して、動作中に単一のシフトレジスタを維持するようにする。別の選択値の場合、マルチプレクサ426は、例えば、以下で
図7を参照して説明するように、2つの別個のシフトレジスタを提供するように、代替入力を優先してフリップフロップ323の入力をフリップフロップ322の出力から減結合する。
【0048】
示されているように、
図4のフィルタ310は、上記で論じたようなアキュムレータ405をさらに含み、それは、フィルタ310からの連続した出力を蓄積するために設けられ得る。これは、例えば、完全有限インパルス応答フィルタが、上記で示したようなそれぞれのデータ値及び係数値を使用して得られたように、それぞれのタップ位置ごとにフィルタ310によって出力された値を蓄積することにより実装され得ることを意味する。
【0049】
そのため、プログラム可能なデジタル信号プロセッサは、シフトレジスタルックアップテーブルにアドレス値を提供するステートマシン440と、第1の動作モードで単一のアドレスが対応する係数及びデジタルフィルタの入力データを参照するメモリとをさらに含み得る。
【0050】
特定の実施形態では、
図3又は
図4に関して説明したものなどのDSPモジュールは、FPGAアーキテクチャでDSPブロックとして実装され得る。各DSPブロックは、
図3又は
図4に関して説明したものなどの1つ又は複数のDSPモジュールを含み得る。各FPGAは、FPGAアーキテクチャの汎用的な使用目的に応じて、任意の数のDSPブロックだけでなく、標準的な論理ブロック及び他のタイプのブロックも含み得る。そのため、デジタル信号プロセッサは、複数のルックアップテーブルを含むFPGAアーキテクチャで実装することができ、各ルックアップテーブルの構成は、システム起動時に構成ビットストリームを用いてプログラムされた1つ又は複数のそれぞれのメモリユニットによって定義され、フィルタメモリ内の値も構成ビットストリームによってプログラムされる。
【0051】
図5は、一実施形態による有限インパルス応答フィルタの並列実装を提示する。
【0052】
半並列実装に基づくFIRフィルタは、例えば、
図3又は
図4を参照して説明したように、タップの数が、単一のDSPモジュールによって提供されるタップの数よりも大きい状況又は1サンプリングサイクル当たり数個のタップを計算するように構成された複数のDSPモジュールによって周波数要件をより適切に満たすことができる状況において使用され得る。
【0053】
例として、3つのDSPを有する12タップのフィルタが使用される場合、以下の分解が当てはまり得る。
【数1】
式中、nは、各タップの指数であり、
Cnは、各タップnの係数であり、
Xnは、各タップnにおけるデータ値である。
【0054】
各サブタームは、同じ構造を示し、3つのカスケード接続されたDSPのシーケンスを使用して実装可能であることを認識し得る(サブタームは、4つの積の加算である)。
【0055】
これに基づき、
図5に示されているように、例えば
図3又は
図4を参照して上記で説明したものに対応する第1のDSPモジュール510と、例えば
図3又は
図4を参照して上記で説明したものに対応する第2のDSPモジュール520と、例えば
図3又は
図4を参照して上記で説明したものに対応する第3のDSPモジュール530とが設けられている。DSPモジュール510、520、530は、同期素子と、シフトレジスタルックアップテーブル素子と、メモリ素子と、さらにフィルタ素子の乗算器及び加算器とをそれぞれ含んで概略的に示されている。
【0056】
これらの3つのDSPモジュールは、それぞれ例えば
図4の素子400を参照して説明したようなFIRフィルタとして構成されている。3つのDSPモジュールは、それぞれシステム全体によって実装されるフィルタの合計タップの連続したサブセットを取り扱うように構成されているため、3つのDSPモジュールのすべてにわたって実装されたタップの合計数が最終フィルタのタップの数である。
【0057】
第1のDSPモジュール510は、データ入力513を受信する。この同じデータが入力523で第1のDSPモジュールのシフトレジスタルックアップテーブルの出力から第2のDSPモジュール520に、且つ入力533で第2のDSPモジュールのシフトレジスタルックアップテーブルの出力から第3のDSPモジュール530に送給されることで、それぞれのDSPモジュールのシフトレジスタルックアップテーブルが遅延ラインを構成するため、第2のDSPモジュール520は、第1のDSPモジュール510のnサイクル後にデータを受信し、第3のDSPモジュール520は、第1のDSPモジュール510の2nサイクル後にデータを受信する。
【0058】
同様に、第1のDSPモジュール510は、同期信号515を受信する。対応する同期信号525が第2のDSPモジュール520に、且つ対応する同期信号535が第3のDSPモジュール530に、フリップフロップ516及び526によって表される遅延ラインを介して送給されるため、第2のDSPモジュール520は、第1のDSPモジュール510の1サイクル後に有効になり、第3のDSPモジュール520は、第1のDSPモジュール510の2サイクル後に有効になる。第1のDSPモジュール510の出力及び第2のDSPモジュール520の出力は、第2のDSPモジュールの加算器521で合算され、加算器521の出力及び第3のDSPモジュール531の出力は、第3のDSPモジュールの加算器531で合算される。加算器531の出力は、モジュール540による完全なフィルタ処理サイクルの全体を通して蓄積され、これは、上記で論じたように、
図4を参照して説明したような素子405など、さらなるDSPモジュールの蓄積ユニットを使用して実装され得る。
【0059】
このアプローチにより、適切な係数及び同期信号を提供することにより、適切な数の上記DSPモジュールを接続することによって任意のサイズのFIRを実装することができる。任意の所望の数のDSPモジュールをこの方法で接続し得ることが理解されるであろう。
【0060】
図6は、一実施形態による無限インパルス応答フィルタの並列実装を提示する。
【0061】
IIRフィルタを記述する一般式は、以下の通りである。
【数2】
数式は、A
0=1を使用して単純化され得る。第1の和は、N
bタップのFIRフィルタを定義する。このFIRフィルタは、サンプリング入力に適用可能である。第2の和は、N
aタップのFIRフィルタを定義する。このFIRフィルタは、IIRフィルタ出力に適用可能である。これは、フィルタのフィードバックループである。
【0062】
これに基づき、
図6に示されているように、例えば
図3又は
図4を参照して上記で説明したものに対応する第1のDSPモジュール610と、例えば
図3又は
図4を参照して上記で説明したものに対応する第2のDSPモジュール620と、例えば
図3又は
図4を参照して上記で説明したものに対応する第3のDSPモジュール630とが設けられている。
【0063】
これらの3つのDSPモジュールの2つ、610及び630は、例えば、
図4の素子400を参照して説明したようなFIRフィルタとして構成されている。
【0064】
具体的には、第1のDSPモジュール610は、NbタップのFIRフィルタを定義する。このFIRフィルタは、サンプリング入力601に適用可能である。第3のDSPモジュール630は、NaタップのFIRフィルタを定義する。このFIRフィルタは、IIRフィルタ出力に適用可能である。これは、フィルタのフィードバックループである。FIRフィルタは、1サンプリングサイクル当たり1つの結果を生成するのに十分な速度で動作するため、両方の結果を同期して蓄積することが可能である。両方のフィルタが完全に登録されるが、サンプリング周波数よりもはるかに高い周波数で作動しているため、1回のサンプリングサイクルで最終結果を得ることができる。フィルタが大きいほど、クロック比は、最大のフィルタのタップの数に直接関係するため、IIRフィルタは、効率が低下する。フィルタ同期を簡単に解決するために、本実施形態では以下の制約が適用される。
【0065】
第1のDSPモジュール610によって実装された直接FIRサブフィルタは、すべての構成で同じパイプライン遅延を付与するように、例えば
図4を参照して説明したような単一のDSPアプローチを使用して、単一のDSPモジュールで実装可能なタップの数に制限される。
【0066】
第3のDSPモジュール630によって実装されたループバックFIRサブフィルタは、第1のDSPモジュール610のタップの半分の数に制限され、また例えば
図4を参照して説明したような単一のDSPアプローチを使用して実装される。第1のDSPモジュール610の単一のサンプリング周期の間に結果を生成するのに十分な速度で第3のDSPモジュール630を動作させるには、第1のDSPモジュール610の4倍の速度で第3のDSPモジュール630を動作させることが必要である。これは、0定数を有するインタリーブ係数を用いてこのフィルタを実装することによって実現され得る。インタリーブアプローチは、16タップの制限を説明する。
【0067】
サブフィルタの合算及び同期は、シフトレジスタルックアップテーブル及びALUを使用して第2のDSPモジュール620で実行される。
【0068】
第2のDSPモジュール620は、信号を同期させる根拠として、第1のDSPモジュール及び第3のDSPモジュールからそれぞれ係数オーバーフロー表示442を受信するレジスタ651及びレジスタ652からタイミング情報を受信する。DSPモジュール610及び630からの結果の同期には、DSPモジュール610と同じ深さを得るために、モジュール610の出力に遅延ラインを設けること(タップの数NとN/2との差の補正)が必要である。これは、DSP構成に不十分な専用レジスタがある第2の動作モードにおいて、DSPモジュール620のシフトレジスタルックアップテーブルを使用して行われ得る。レジスタの具体的な数は、実装の詳細によって決まるが、例として、2*3=6個のフリップフロップの他の信号のように、3レベルのパイプが必要であり、DSP回路が2つのみを提供する場合、追加分のレベルは、さらなるDSPモジュールのシフトレジスタルックアップテーブルによって提供され得る。
【0069】
したがって、デジタルフィルタは、フィードバック構成において、第1の有限インパルス応答と、第2の有限インパルス応答とを含む無限インパルス応答フィルタであり得、ステートマシンは、第1の有限インパルス応答及び第2の有限のインパルス応答の出力の組み合わせを調整する同期信号を提供して、無限インパルス応答フィルタを実装する。
【0070】
先の例では、例えば
図3又は
図4に関して説明したようなDSPモジュールに基づく複数の異なる構成を提示してきた。これらのいくつかでは、個々のDSPモジュールは、モジュール自体でのフィルタ動作の実装以外の目的よりもむしろ、提案されているシステムの他のDSPモジュールに他の処理機能、記憶機能又は同期機能を提供するために使用されてきた。例えば、
図3又は
図4に関して説明したようなDSPモジュールのコンポーネント及び構成並びに特に自由にアクセス可能なシフトレジスタルックアップテーブル320及びメモリユニット330が利用可能であることにより、そのようなフィルタユニットは、それぞれ順応性が高くなり、フィルタ動作の実装に加えて、多数の用途に適用可能になることが理解されるであろう。例えば、
図3又は
図4に関して説明したようなDSPモジュールは、例えば、大きい数値、複素数値又は符号付き数値を取り扱うことが可能な乗算器、マルチプレクサ、シフトレジスタ等を実装するために使用され得る。
【0071】
図7は、一実施形態によるフィルタを使用して実装された符号付き乗算器を示す。
【0072】
図3又は
図4を参照して説明したような一連の連結DSPモジュールを使用して、任意の所望サイズの乗算器を実装し得る。
【0073】
47×47ビットの乗算器は、以下の分解に基づいて定義され得る。
A[46:0]×B[46:0]=を考察すると、
A={A[46:23],A[22:0]}={A2,A1}
B={B[46:23],B[22:0]}={B2,B1}
A×B={A2,A1}×{B2,B1}={A2×B2,A1×B2+A2×B1,A1×B1}=
={P3+(A1×B2+A2×B1+(A1×B1)[46,23])[46,23],(A1×B2+A2×B1+(A1×B1)[46,23])[22,0],(A1×B1)[22,0]}である。
【0074】
前述において暗に示されているように、乗算器は、(本例における乗算器は、24個の符号付きビットを取り扱い、1個のビットが廃棄され、23個の符号付きビットが保持されることに基づいて)データを一方では23個の最下位ビットのセットに、もう一方では24個の最上位ビットのセットに分ける。対応する結果を次のそれぞれのDSPモジュールで組み合わせることができるように、対応する最上位ビット及び最下位ビットのセットの処理間でシフトが操作される。
【0075】
示されているように、システムは、
図3又は
図4に関して説明した配置にそれぞれが実質的に対応する4つのDSPモジュール710、720、730、740を含む。特に、DSPモジュール710は、シフトレジスタルックアップテーブル711と、例えば
図4のものに対応する同期ステートマシン713と、
図3又は
図4のフィルタユニットに一緒に対応する乗算器712及び加算器714とを含む。示されているように、シフトレジスタルックアップテーブル711のシフトレジスタは、上記で
図4を参照して説明したような2つの部分からなる構成であり、入力A1がシフトレジスタ711aの第1の区分に送給され、第2の入力B1がシフトレジスタ711bの第1の区分に送給されている。シフトレジスタ711a、711bは、それぞれ乗算器712のそれぞれの入力にデータを送給する。乗算器712の出力は、加算器714を通して出力715に送給される。第1のDSPモジュールの場合、加算器714は、乗算器の出力にゼロを加算するため、このコンポーネントを等しくバイパスすることができ、それは、本例では保持されて、提案されているアーキテクチャの順応性を実証することが理解されるであろう。
【0076】
同様に、DSPモジュール720は、シフトレジスタルックアップテーブル721と、例えば
図4のものに対応する同期ステートマシン723と、
図3又は
図4のフィルタユニットに一緒に対応する乗算器722及び加算器724とを含む。示されているように、シフトレジスタルックアップテーブル721のシフトレジスタは、上記で
図4を参照して説明したような2つの部分からなる構成であり、例えばマルチプレクサ426の動作により、入力A1がシフトレジスタ721aの第1の区分に送給され、第2の入力B2がシフトレジスタ721bの第1の区分に送給されている。シフトレジスタ721a、721bは、それぞれ乗算器722のそれぞれの入力にデータを送給する。加算器724は、乗算器722の出力と、上記分解に従って最上位ビットと最下位ビットとの間のシフトによって決まる先行するDSPモジュール710の出力715とを加算する。乗算器722の出力は、加算器724を通して出力725に送給される。
【0077】
同様に、DSPモジュール730は、シフトレジスタルックアップテーブル731と、例えば
図4のものに対応する同期ステートマシン733と、
図3又は
図4のフィルタユニットに一緒に対応する乗算器732及び加算器734とを含む。示されているように、シフトレジスタルックアップテーブル731のシフトレジスタは、上記で
図4を参照して説明したような2つの部分からなる構成であり、入力A2がシフトレジスタ731aの第1の区分に送給され、第2の入力B1がシフトレジスタ731bの第1の区分に送給されている。シフトレジスタ731a、731bは、それぞれ乗算器732のそれぞれの入力にデータを送給する。加算器734は、乗算器732の出力と、先行するDSPモジュール720の出力725とを加算する。乗算器732の出力は、加算器734を通して出力735に送給される。
【0078】
同様に、DSPモジュール740は、シフトレジスタルックアップテーブル741と、例えば
図4のものに対応する同期ステートマシン743と、
図3又は
図4のフィルタユニットに一緒に対応する乗算器742及び加算器744とを含む。示されているように、シフトレジスタルックアップテーブル741のシフトレジスタは、上記で
図4を参照して説明したような2つの部分からなる構成であり、入力A2がシフトレジスタ741aの第1の区分に送給され、第2の入力B2がシフトレジスタ741bの第1の区分に送給されている。シフトレジスタ741a、741bは、それぞれ乗算器742のそれぞれの入力にデータを送給する。加算器744は、乗算器742の出力と、上記分解に従って最上位ビットと最下位ビットとの間のシフトによって決まる先行するDSPモジュール730の出力735とを加算する。乗算器742の出力は、加算器744を通して出力745に送給される。
【0079】
出力715で適切にタイミングを補正すれば、出力成分P[22:0]が利用可能である。出力735で適切にタイミングを補正すれば、出力成分P[45:23]が利用可能である。出力745で適切にタイミングを補正すれば、出力成分P[93:46]が利用可能である。
【0080】
それぞれのシフトレジスタ711a、711b、721a、721b、731a、731b、741a、741bは、上述したように、説明した構成で使用されて、乗算器全体にわたって信号の同期を提供するため、任意の所与のクロックサイクルにおける各出力の値は、入力値A1、B1、A2及びB2の同じセットに対応する。例として、シフトレジスタ、711a、711bは、それぞれの信号に1つのフリップフロップに相当する遅延をそれぞれ提供することができ、シフトレジスタ721a、721bは、それぞれの信号に2つのフリップフロップに相当する遅延をそれぞれ提供することができ、シフトレジスタ731a、731bは、それぞれの信号に3つのフリップフロップに相当する遅延をそれぞれ提供することができ、シフトレジスタ741a、741bは、それぞれの信号に4つのフリップフロップに相当する遅延をそれぞれ提供することができる。いくつかの実施形態では、DSPユニットは、特にこの目的のために複数の入力レジスタを提供することができ、それらは、シフトレジスタルックアップテーブルのシフトレジスタの代わりに又はシフトレジスタルックアップテーブルのシフトレジスタとともに使用することができる。例えば、特定のDSPユニットの実装が2つの入力レジスタを提供する場合、第1のDSPユニット及び第2のDSPユニットは、同期のために、これらの専用の入力レジスタのみに依存し得る一方、第3のレジスタ及び第4のレジスタの場合、2つのレベルの遅延に専用の入力レジスタを使用し、次にシフトレジスタルックアップテーブルのシフトレジスタを使用して、第3のDSPモジュールに必要な1つの追加のレベルの遅延及び第4のDSPモジュールに必要な2つのレベルの遅延を提供することができる。さらに、これに基づき、遅延動作は、利用可能な専用の入力リレーに応じて、各DSPモジュールのA入力及びB入力で取り扱い方が異なり得る。
【0081】
示されているように、各DSPモジュールは、同期目的で乗算器712、722、732、742と、加算器714、724、734、744との間及び加算器714、724、734、744と、出力715、725、735、745との間に追加のリレーを提供する。これらのリレーの一部又はすべては、特定の実施形態の実装の詳細に応じて省略され得るか、又は所与の実装のアプリケーション要件に応じて追加のリレーが提供され得る。
【0082】
DSPユニットのSRLを使用して乗算計算のタイミングに必要な追加分のレジスタをシミュレートすることは、
図3又は
図4を参照して説明したようなDSPモジュールの第2の動作モードにおける使用例となる。
【0083】
図7に関して示されているこの第2の動作モードでは、DSPモジュールのシフトレジスタルックアップテーブルは、乗算器の入力レジスタとして使用される。
【0084】
したがって、乗算器及び加算器を含むフィルタユニットを含む、順応性のあるデジタル信号プロセッサモジュールが開示され、乗算器は、メモリ及びシフトレジスタルックアップテーブルから入力を受信する。デジタル信号プロセッサモジュールは、メモリからの適切なフィルタ係数及びシフトレジスタルックアップテーブルからのデータ値を提供することにより、FIR又はIIRフィルタなどのデジタルフィルタを実装し得る。任意選択的なステートマシンは、メモリ、シフトレジスタルックアップテーブルのアドレス指定の同期及び特定のフィルタの実装に必要な場合、デジタル信号プロセッサモジュールの複数のインスタンス間の同期を確実にし得る。提案されているアーキテクチャは、フィルタ実装以外の動作がサポートされる追加の動作モードを提供する。
【0085】
これに基づき、第2の動作モードでは、シフトレジスタルックアップテーブルに格納された値は、デジタルフィルタによる以外の処理のために出力される。
【0086】
図8は、一実施形態によるデジタル信号プロセッサ動作を実行する方法を提示する。
【0087】
示されているように、この方法は、ステップ800から始まり、その後、ステップ810に進み、そこで、第1の動作モードでデジタル信号プロセッサにデータを出力するように、シフトレジスタルックアップテーブルがアドレス指定される。次に、方法は、ステップ820に進み、そこで、第1の動作モードでデジタルフィルタに係数を提供するように、フィルタメモリがアドレス指定される。次に、方法は、係数を使用して入力データにデジタルフィルタ動作を実行するステップ830に進み、その後、ステップ840で終了する。
【0088】
図8の方法は、デジタルフィルタを定義する複数の係数のそれぞれに対して反復して実行し得る。
【0089】
ステップ810及び820は、逆の順番において、すなわちステップ810前にステップ820として実行され得るか、又は2つは、並列して実行され得る。
【0090】
方法は、単一のアドレス値が第1の動作モードでデジタルフィルタの対応する係数及び入力データを参照するようにシフトレジスタルックアップテーブル及びフィルタメモリを構築するさらなるステップを含み得、それにより、第1の動作モードでデジタル信号プロセッサにデータを出力するようにシフトレジスタルックアップテーブルをアドレス指定するステップと、第1の動作モードでデジタルフィルタに係数を提供するようにフィルタメモリをアドレス指定するステップとは、こうした単一のアドレス値を使用して実行される。
【0091】
図8の方法の特定の事例では、デジタルフィルタ動作は、有限インパルス応答フィルタ動作であり得る。
【0092】
図8の方法の特定の事例では、デジタルフィルタ動作は、フィードバック値に基づく第1の有限インパルス応答動作及び第2の有限インパルス応答動作を含む無限インパルス応答フィルタ動作であり得、方法は、無限インパルス応答フィルタの結果を得るために、第1の有限インパルス応答動作及び第2の有限インパルス応答動作の結果の組み合わせを調整する許可信号を提供するさらなるステップを含む。
【0093】
いくつかの実施形態では、本明細書に記載の方法及びプロセスは、コンピューティングデバイスによって全体的に又は部分的に実装することができる。これらの方法及びプロセスは、コンピュータアプリケーションプログラム又はサービス、アプリケーションプログラミングインタフェース(API)、ライブラリ及び/若しくは他のコンピュータプログラム製品又はそのようなエンティティの任意の組み合わせによって実装することができる。特に、上述した
図8の方法のステップ又はその変形形態のいずれかを実装するように適合された命令を含む、コンピュータのためのプログラムが提供され得る。
【0094】
本明細書に記載の構成及び/又はアプローチは、例示的な性質のものであり、多くの変形形態が可能であるため、これらの具体的な実施形態又は例は、限定の意味で解釈されるべきではないことが理解されるであろう。本明細書に記載の具体的なルーチン又は方法は、任意の数の処理戦略の1つ又は複数を表すことができる。そのため、図示及び/又は説明した様々な行為は、図示及び/又は説明した順序で、他の順序で、並列に又は省略されて実行され得る。同様に、上述したプロセスの順番を変更し得る。
【0095】
本開示の主題は、本明細書に開示される様々なプロセス、システム及び構成並びに他の特徴、機能、行為及び/又は特性のすべての新規で非自明の組み合わせ及び部分的組み合わせに加えて、そのあらゆる均等物を含む。