JP4664311B2 - カスケード接続するdspスライスを備えた集積回路 - Google Patents

カスケード接続するdspスライスを備えた集積回路 Download PDF

Info

Publication number
JP4664311B2
JP4664311B2 JP2006547306A JP2006547306A JP4664311B2 JP 4664311 B2 JP4664311 B2 JP 4664311B2 JP 2006547306 A JP2006547306 A JP 2006547306A JP 2006547306 A JP2006547306 A JP 2006547306A JP 4664311 B2 JP4664311 B2 JP 4664311B2
Authority
JP
Japan
Prior art keywords
dsp
register
input
slice
output
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
JP2006547306A
Other languages
English (en)
Other versions
JP2007522699A5 (ja
JP2007522699A (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.)
Xilinx Inc
Original Assignee
Xilinx 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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2007522699A publication Critical patent/JP2007522699A/ja
Publication of JP2007522699A5 publication Critical patent/JP2007522699A5/ja
Application granted granted Critical
Publication of JP4664311B2 publication Critical patent/JP4664311B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17732Macroblocks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

背景
プログラマブル論理装置すなわちPLDは、1つ以上の選択された機能を果たすようエンドユーザによってプログラム可能な汎用回路である。複雑なPLDは、典型的にはいくつものプログラマブル論理素子およびいくつかのプログラマブルルーティングリソースを含む。プログラマブル論理素子は、CLB、論理ブロック、論理アレイブロック、論理セルアレイ、マクロセル、論理セル、および機能ブロックのような、多くの形態および多くの名称を有する。プログラマブルルーティングリソースもまた、多くの形態および多くの名称を有する。
図1A(先行技術)は、一般的な種類のPLDであるフィールドプログラマブルゲートアレイ(FPGA)100のブロック図である。FPGA100は、エッジタイル103−106およびコーナタイル113−116に囲まれた同一のCLBタイル101のアレイを含む。ランダムアクセスメモリ(RAM)タイルの列102は、CLBタイル101の2つの列の間に位置決めされる。エッジタイル103−106およびコーナタイル113−116は、タイル101−102と入力/出力(I/O)ピン(図示せず)との間のプログラマブル配線を提供する。FPGA100は、任意の数のCLBタイル列を含み、各タイル列は任意の数のCLBタイル101を含み得る。ここでは2列のRAMタイル102しか示されないが、より多くのまたはより少ないRAMタイルを用いてもよい。構成メモリ120の内容は、さまざまなプログラマブルリソースの機能を定義する。
FPGAリソースは、簡単な乗算器から複雑なマイクロプロセッサまで、多くのデジタル信号処理(DSP)機能を実現するようプログラム可能である。たとえば、1998年5月19日発行のテリケパッリ(Telikepalli)の米国特許第5,754,459号は、汎用FPGAリソース(たとえばCLBおよびプログラマブル配線)を用いて乗算器を実現することを教示する。残念ながら、DSP回路はFPGAリソースを効率的に利用せず、よって所望であるよりも多くの電力およびFPGA面積を消費し得る。たとえば、16×16乗算器を実現する、ザイリンクス(Xilinx, Inc.,)から入手可能であるFPGAのVirtexファミリーにおいては、少なくとも60のCLBおよび相当の貴重な配線リソースが必要である。
図1B(先行技術)は、汎用論理およびリソースを自由化する態様でDSP機能をサポートするよう適合されたFPGA150を示す。FPGA150は図1AのFPGA100と同様であり、同様の番号の要素は同一または同様である。各CLBタイルの2つの主要な構成要素、すなわちスイッチマトリクス120とCLB122とを示すために、CLBタイル101がいくらかより詳細に示される。CLB122は、2002ザイリンクスデータブックに説明されるような、周知の個々にプログラム可能なCLBである。各スイッチマトリクス120は、タバナ(Tavana)他の米国特許第5,883,525号、またはヤング(Young)他の米国特許第5,914,616号により開示される種類のプログラマブルルーティングマトリクスであってもよく、これらは信号線125を介して周知の態様で他のタイル101および102へのプログラマブル配線を提供する。各スイッチマトリクス120は、信号バス145を介して対応のCLB122に対してプログラマブル配線を提供するためのインターフェイス140を含む。いくつかの実施例においては、CLB122は、たとえば米国特許第5,883,525号に記載される、隣接するCLBへの直接的な高速接続を含んでもよい。FPGA100の他の周知の要素は簡略のため図1Bから省かれる。
図1AのRAMブロック102の代わりに、FPGA150は多機能タイル155の1つ以上の列を含むが、その各々が4行のCLBタイルを亘って延在する。各多機能タイルは、デュアルポートRAM160および符号付き乗算器165のブロックを含み、その両方が入力バス170およびおよび出力バス175のそれぞれと対応のスイッチマトリクス180とを介してプログラマブル配線にプログラム可能に接続される。FPGA150は、ニュー(New)他の「乗算器をFPGAに組入れるための方法および装置」と題される米国特許第6,362,650号に詳細に記載される。
FPGA150は、DSP機能をサポートする優れた働きを示す。しかしながら複雑な機能は汎用ルーティングおよび論理を活用しなければならず、これらのリソースは信号処理には最適化されていない。複雑なDSP機能はしたがって、所望であるよりも遅く、かつ領域集約的であり得る。したがって、プログラマブル論理による柔軟性を犠牲にすることなく、より高速な速度性能に対する消費者の需要に対処するDSP回路に対する必要性が存在する。
要約
この発明は、高速で柔軟性のある低電力のDSP回路に対する必要性に対処するシステムおよび方法に向けられる。以下の議論は5つのセクションに分けられ、各々が向上したDSP性能を提供するための特定の方法およびシステムを詳細に説明する。
この発明の実施例は、1つ以上の数学的機能を果たすためのモジュラーDSP回路の組合せを含む。複数の実質的に同一のDSPサブモジュールは、併せて実質的に直接接続されてDSPモジュールを形成し、各サブモジュールは、加算器に接続された、たとえばマルチプレクサであるスイッチを少なくとも備えた専用回路を有する。DSPモジュールは、さらなるDSPサブモジュールを実質的に直接接続することによりさらに拡張可能である。こうして、より大きなまたはより小さなDSPモジュールが、DSPサブモジュールを追加または削除することにより構築可能である。DSPサブモジュールは、DSPサブモジュールを相互接続する実質的に専用の通信線を有する。
この発明の例示的な実施例においては、集積回路(IC)は、実質的に直接接続されたまたはカスケード接続された複数のモジュールを含む。一実施例は、DSPサブモジュールにおける加算器に接続されたスイッチへの制御入力がICにおける他の回路の動作速度で修正されることを提供し、よって加算器への入力を経時的に変更する。別の実施例においては、乗算器の出力と乗算器をバイパスするデータ入力とがスイッチで接続されるので、DSPサブモジュールによって行なわれる機能は時間とともに変化し得る。
一実施例に従ったプログラマブル論理装置(PLD)はDSPスライスを含むが、「スライス」とは、さまざまな寸法および複雑度のDSP回路を形成するように所望のようにカスケード接続され得る、論理的に同様の回路である。各DSPスライスは複数のオペランド入力ポートおよびスライス出力ポートを含み、それらのすべてが汎用ルーティングおよび論理リソースにプログラム可能に接続される。オペランドポートは処理のためのオペランドを受信し、スライス出力ポートは処理された結果を伝える。各スライスは、この実施例における累算機能をサポートするための、それぞれのスライス出力ポートに接続されるフィードバックポートと、カスケード接続を促進するために上流のスライスの出力ポートに接続されるカスケード入力ポートとをさらに含む。
カスケード接続されたDSPスライスの1つの種類は、加算器に供給する積生成器を有する演算回路を含む。積生成器は、第1のオペランド入力ポートに接続される乗数ポートと、第2のオペランド入力ポートに接続される被乗数ポートと、1対の部分積ポートとを有する。加算器は、それぞれの部分積ポートに接続される第1および第2の加数ポートと、カスケード入力ポートに接続される第3の加数ポートと、和ポートとを含む。したがって加算器は、部分積を加算して乗算を完了するか、または部分積を上流のスライスからの出力に加算する。カスケードと累算接続とは、速度性能を最適化し、汎用配線に対する要求を減じ、かつ電力を減じるために、実質的に直接的である(すなわち、これらは汎用配線を横断しない)。
この発明の一実施例は、集積回路を含み、該集積回路は、第1のデジタル信号処理(DSP)素子および第2のDSP素子を含む複数のDSP素子を含み、各DSP素子は実質的に同一の構造を有し、各DSP素子はハードワイヤード加算器に接続されるスイッチを有し、該集積回路はさらに、第1のDSP素子を第2のDSP素子に接続する専用信号線を含む。さらに、スイッチはハードワイヤード加算器への入力を選択するマルチプレクサを含む。
この発明の別の実施例は集積回路を含み、該集積回路は、複数の構成可能機能ブロックと、複数の構成可能機能ブロックのいくつかを接続するプログラマブル配線リソースと、第1のデジタル信号処理(DSP)素子および第2のDSP素子を含む複数のDSP素子とを含み、各DSP素子は実質的に同一の構造を有し、かつハードワイヤード加算器に接続されるスイッチを含み、該集積回路はさらに、第1のDSP素子を第2のDSP素子に接続する専用信号線を含み、該専用信号線はプログラマブル配線リソースを何ら含まない。
この発明のさらなる別の実施例は集積回路を含み、該集積回路は、第1のデジタル信号処理(DSP)素子および第2のDSP素子を含む複数のDSP素子を有し、各DSP素子は実質的に同一の構造を有し、各DSP素子はハードワイヤード乗算器を含み、該集積回路はさらに、第1のDSP素子を第2のDSP素子に接続する専用信号線を含む。
この発明のさらなる実施例は、集積回路装置におけるDSP素子を含み、該集積回路は、第1のスイッチと、第1のスイッチに接続される乗算回路と、乗算回路に接続される第2のスイッチと、第2のスイッチに接続される加算回路とを有する。
この発明の一実施例においては、DSP機能を変更するために、1つ以上のモードレジスタの内容が装置の動作の間に変更される。モードレジスタは汎用配線、すなわちPLD内のプログラマブルルーティングリソース、に接続し、よってモードレジスタの内容を、したがってDSP機能を変更する制御信号を、装置の構成メモリの内容を変更する必要なく受けることができる。一実施例においては、モードレジスタはプログラマブル論理内の制御回路に接続され、変更はナノ秒のオーダ以下で生じ、構成メモリのリロードは、変更されるビットの数に依存して、マイクロ秒のオーダで、またはミリ秒のオーダでも生じ得る。別の実施例においては、1つ以上のモードレジスタはカリフォルニア州サンノゼのザイリンクスのVirtex II Proにおけるような1つ以上の組込みプロセッサに接続され、よって、モードレジスタの内容は、実質的に組込みプロセッサのクロック速度で変更可能である。
構成メモリに書込むことなく異なったDSPアルゴリズムを行なうようDSPリソースを変更することを、ここで「ダイナミック」制御と称して、構成メモリの内容を変更することにより異なったDSP機能を行なうよう再構成可能であるプログラマブル論理から区別する。多くの場合、構成メモリの内容の変更には過度に時間がかかるので、ダイナミッ
ク制御が好ましい。いくつかのDSP用途はダイナミック制御を必要としないが、その場合、DSP機能は構成メモリのローディング(またはリローディング)の間に定義可能である。
他の実施例においては、FPGA構成メモリは、DSP機能を変更するためにダイナミック制御とともに再構成可能である。一実施例においては、DSP機能を変更するためのモードレジスタのダイナミック制御と、DSP機能を変更するためのFPGA構成メモリのリロードとの相違は、変更の速度であり、構成メモリをリロードすることはダイナミック制御よりも時間がかかる。従来の構成メモリセルを、別々にアドレス可能な読出/書込メモリセルに置換する代替的な実施例においては、殆ど相違はなく、実質的に同じ速度でダイナミック制御または再構成のいずれかまたはその両方を行ない得る。
この発明の実施例は、DSP回路を有する集積回路を含む。DSP回路は、入力データレートでデータを受けるための入力データポートと、入力ポートに結合される乗算器と、第1のプログラマブルルーティング論理によって乗算器に結合される加算器と、第1のプログラマブルルーティング論理に結合されるレジスタとを含み、レジスタは、入力データレートと少なくとも同じオーダの程度で、第1のプログラマブルルーティング論理における異なったルートを構成することが可能である。
この発明の別の実施例は、集積回路上のDSP論理回路を構成するための方法を含み、DSP論理回路はスイッチに接続される乗算器と、スイッチに接続される加算器とを有する。方法は、a)乗算器によって入力データレートで入力データを受けるステップと、b)乗算器からの出力結果をスイッチにルーティングするステップと、c)スイッチが、1組の加算器入力から加算器入力を選択するステップとを含み、該1組の加算器入力は該出力結果を含み、選択するステップは、制御レジスタの内容に応答し、制御レジスタは入力データレートの関数であるクロックレートを有し、方法はさらに、d)加算器によって加算器入力を受けるステップをさらに含む。
一実施例に従ったプログラマブル論理装置は、いくつかの従来のPLD構成要素を含み、該PLD構成要素は、複数の構成可能論理ブロックと、いくつかの構成可能配線リソースと、いくつかのダイナミックDSPリソースとを含む。ダイナミックDSPリソースは、一実施例においては、少なくともDSPスライスおよび少なくとも1つの上流のDSPスライスまたは少なくとも1つの下流のDSPスライスを含む、複数のDSPスライスである。構成可能メモリは、論理ブロック、配線リソース、およびDSPスライスの回路構成を定義する構成データを記憶する。
一実施例においては、各DSPスライスは、後段に加算器を備えた積生成器を含む。ダイナミック機能をサポートして、各DSPスライスはさらに、モードレジスタの内容に基づいて加算器への入力を制御する多重化回路を含む。モードレジスタの内容と、したがって多重化回路の接続性とに基づいて、加算器は加数のさまざまな組合せを加算可能である。所与のスライスにおける選択された加数は、次いでそれぞれのモードレジスタに異なった組のモード制御信号を発生することにより、ダイナミックに変更され得る。
ダイナミックにDSP機能を変更する能力は、同じDSPリソースによって異なったときにDSPアルゴリズムの2つ以上の部分が実行される、複雑なシーケンシャルなDSP機能をダイナミックにサポートする。一実施例においては、プログラマブル論理において実現されるステートマシンがDSPリソースのダイナミックな機能を制御するモード制御信号を発生する。いくつかのPLDは組込みマイクロプロセッサまたはマイクロコントローラ、および匹敵するマイクロプロセッサ(たとえばカリフォルニア州サンノゼのザイリンクスのMicroBlaze(登録商標))を含み、これらもまたステートマシンの代わりに、ま
たはこれに加えて、モード制御信号を発生可能である。
いくつかの実施例に従ったDSPスライスは、たとえば0から2クロックサイクルの異なった量の遅延を導入するよう構成可能である、プログラマブルオペランド入力レジスタを含む。そのような実施例の1つにおいては、各DSPスライスは、乗数ポートと、被乗数ポートと、1つ以上の積ポートとを有する積生成器を含む。乗数ポートおよび被乗数ポートは、それぞれの第1および第2のオペランド入力レジスタを介してオペランド入力ポートに接続し、該レジスタの各々が0から2クロックサイクルの遅延を導入可能である。一実施例においては、少なくとも1つのオペランド入力レジスタの出力が、オペランドがいくつかのスライスを通してカスケード接続され得るように、下流のDSPスライスのオペランド入力レジスタの入力に接続する。
多くのDSP回路および構成は、数を多くのディジットまたはビットで乗算して、相当に増大したディジットまたはビットの積を生成する。大きな、不必要に厳密である積の操作には手間がかかりリソース集約的であるので、そのような積はしばしば所望の数のビットに丸められる。いくつかの実施例は、さらなるリソースを殆ど必要とせず、丸め処理に関わるビットの数を変更するのにダイナミックに調整可能である、高速なフレキシブルな丸め処理を採用する。
一実施例に従ったダイナミックな丸め処理を提供するよう適合されるDSPスライスは、丸め定数を受けるさらなるオペランド入力ポートと、丸めるべき数の符号に基づき訂正係数を発生する訂正回路とを含む。加算器は次いで、丸められるべき数を訂正係数および丸め定数に加算して、丸められた結果を得る。一実施例においては、訂正回路は乗数および被乗数の符号から訂正係数を計算し、それにより乗数および被乗数の積に先立って訂正係数が準備されるようにする。
丸め方法において、最も近い整数に丸めるために、一実施例に従って適合されるDSPスライスは、二進数2(N-1)および2(N-1)-1の群から選択される丸め定数を格納し、乗数符号ビットおよび被乗数符号ビットから訂正係数を計算し、丸め定数、訂正係数、および積を合計してN個の丸められた積を得る(但しNは整数)。次いで丸められた積のN個の最下位ビットが切捨てられる。
ここで説明されるDSPスライスは従来、1対の部分積を生成する積生成器と、部分積を合計する後段の加算器とを含む。一実施例に従うと、DSPスライスの柔軟性は、積生成器と加算器との間にマルチプレクサ回路を設けることにより向上する。従来のように、マルチプレクサ回路は部分積を加算器に与えることができ、かついくつかのさらなる加数入力から選択することが可能である。さらなる加数は、上流のスライスからカスケード接続される入力および出力と、対応のDSPスライスの出力とを含む。いくつかの実施例においては、モードレジスタがマルチプレクサ回路を制御し、選択された加数がダイナミックにスイッチされることを可能にする。
この要約は発明を限定するものではなく、発明は特許請求の範囲によって定義される。
詳細な説明
以下の議論は5つのセクションに分割され、各々が向上したDSP性能および低減した電力散逸を提供するための方法およびシステムを詳細に説明する。これらの実施例はフィールドプログラマブルゲートアレイ(FPGA)アーキテクチャに関連して説明されるが、ここで説明される方法および回路はFPGAに限定されない。一般的に、特定用途向け集積回路(ASIC)を含む何らかの集積回路(IC)および/または、複数のプログラ
マブル機能素子および/または複数のプログラマブルルーティングリソースを含むICおよび/または、マイクロプロセッサまたはマイクロコントローラを有するICもまたこの発明の範囲に含まれる。プログラマブル機能素子の例はCLB、論理ブロック、論理アレイブロック、マクロセル、論理セル、論理セルアレイ、マルチギガビットトランシーバ(MGT)、特定用途向け回路、および機能ブロックである。プログラマブルルーティングリソースの例は、プログラマブル配線ポイントを含む。さらに、この発明の実施例は典型的にはプログラマブル論理とは称しない、いわゆる「システムオンチップ」のような信号処理に用いるための専用のものなどの、集積回路に組入れられてもよい。
例示の目的で、たとえば18ビット入力バスおよび48ビット出力バスの特定のバスサイズが示され、OpModeレジスタについて7ビットなどの例示的なレジスタサイズが示されるが、多くの他のバスおよびレジスタサイズを用いることが可能であってやはりこの発明の範囲にあることが、当業者には明らかであろう。
カスケード接続するDSPスライスを備えたDSPアーキテクチャ
図1Cは、この発明の実施例のFPGAの簡略化された模式図である。図1Cは、多数の異なったプログラマブルタイルを含むFPGAアーキテクチャ180を示し、このプログラマブルタイルは、マルチギガビットトランシーバ(MGT181)、プログラマブル論理ブロック(LB182)、ランダムアクセスメモリブロック(BRAM183)、入力/出力ブロック(IOB184)、構成およびクロック論理(構成/クロック185)、デジタル信号処理ブロック(DSP205)、特化入力/出力ブロック(I/O187)(たとえば、構成ポートおよびクロックポート)、ならびに、デジタルクロックマネージャ、アナログ−デジタルコンバータ、システム監視論理などの他のプログラマブル機能188を含む。いくつかのFPGAは、専用プロセッサブロック(PROC190)をも含む。
いくつかのFPGAにおいては、各プログラマブルタイルはプログラマブル配線素子、すなわち、各隣接タイルにおける対応のスイッチとの間の標準化接続を有するスイッチ(SW)120を含む。したがって、スイッチ120は併せて、図示されるFPGAのためのプログラマブル配線構造を実現する。図1Cの頂部のLBタイル182によって例示されるように、LB182はスイッチ120に接続されるCLB112を含み得る。
BRAM182は、1つ以上のスイッチに加えてBRAM論理素子(BRL194)を含み得る。典型的には、タイル内に含まれるスイッチ120の数は、タイルの高さに依存する。図示される実施例においては、BRAMタイルは4つのCLBと同じ高さを有するが、他の数(たとえば5つ)を用いてもよい。DSPタイル205は、たとえば、適切な数のスイッチ(この例においては4つのスイッチ120)に加えて、たとえば2つのDSPスライス(DSPS212)を含み得る。IOB184は、スイッチ120の1つのインスタンスに加えて、入力/出力論理素子(IOL105)の2つのインスタンスを含み得る。当業者には明らかであるように、たとえばI/O論理素子184に接続する実際のI/Oパッドは、さまざまな図示される図示ブロック上に積層される金属を用いて製造され、典型的には入力/出力論理素子184の領域に限定されない。
図示される実施例においてダイの中央付近の列状領域(図1Cにおける網掛け部分)が、構成、クロックおよび他の制御論理のために用いられる。この列から延在する水平領域189は、FPGAの幅を亘ってクロックおよび構成信号を分配するために用いられる。
図1Cに示されるアーキテクチャを用いるいくつかのFPGAは、FPGAの大部分を構成する規則的な列状構造を分断するさらなる機能ブロックを含む。さらなる機能ブロックは、プログラマブルブロックおよび/または専用論理であり得る。たとえば、図1Cに
示されるプロセッサブロックPROC190は、CLBおよびBRAMのいくつかの列にまたがる。
図1Cは、例示的なFPGAアーキテクチャのみを示すことが意図されることに留意されたい。列中の機能ブロックの数、列の相対的な幅、列の数および順序、列に含まれる機能ブロックの種類、機能ブロックの相対的サイズ、ならびに図1Cの頂部に含まれる配線/論理実現例は、純粋に例示的なものである。たとえば、実際のFPGAにおいては、CLBが出現するときにはいつでも、1つ以上の隣接するCLBの列が典型的には含まれて、ユーザ論理の効率的な実現を促進する。「列」という用語は、列または行もしくは機能ブロックおよび/またはタイルの他の何らかの集合をも含み、例示的な目的でのみ用いられることに留意されたい。
図2Aは、さまざまなサイズおよび複雑性の複雑なDSP回路を生成するためにDSPリソースのカスケード接続をサポートする実施例に従ったFPGA200を示す。カスケード接続は有利に、DSP回路を実現するのに必要であるリソースの量を、回路の複雑性とともに極めて直線的に拡張させる。図2Aに示されるFPGA200の回路部分は、一実施例における図1Aおよび図1BのFPGA100の一部であって、かつ別の実施例における図1CのFPGA180の一部であってもよく、同様の番号が付された要素は同一であるかまたは同様である。FPGA200がFPGA100とは異なるのは、FPGA200が減じられた消費電力および改良された速度性能のための実質的に直接的な、高速のカスケード接続をサポートする1つ以上の列のDSPタイル205(たとえば、総称してDSPタイル205と称するタイル205−1および205−2)を含む点である。各DSPタイル205は、2つのDSPスライス212を含み(たとえば、DSPタイル205−1はスライス212−1および212−2を有し、DSPタイル205−2はスライス212−3および212−4を有する)、各DSPスライスはスイッチマトリクス220を介して汎用配線ライン125に接続する。
タイル205−1について、入ってくる信号は、入力バス222上のスライス212−1および212−2に到着する。OUT_1およびOUT_2ポートから出る信号は、出力バス224を介して汎用配線リソースに接続される。
いくつかの用途に対しては、入力バス222および出力バス224ならびに関連の汎用配線は過度に遅く、領域集約的であるか、電力を過度に消費する虞がある。各DSPスライス212、たとえば212−1、212−2、212−3、および212−4(総称してDSPスライス212)は、したがって2つの高速DSPスライス出力ポートを含み、これらは入力−下流カスケード(IDC)ポートおよびOUTポートであって、それぞれ、隣接するDSPスライスの入力−上流カスケード(IUC)ポートと上流−出力カスケード(UOC)ポートとにそれぞれ接続される。(他の参照符号とともに、ここで、IDC、累算フィードバック(ACC)、IUC、およびUOCは、信号とそれらの対応の物理的ノード、ポート、線または端子との両方を示す。所与の参照符号が信号または物理的構造のいずれを指すかは内容から明らかであろう。)
図2Aの例においては、出力ポートOUTは、選択されたDSPスライス(たとえばスライス212−2)から下流DSPスライス(たとえばスライス212−1)のポートUOCに直接接続する。さらに、上流DSPスライス(たとえばスライス212−3)からの出力ポートOUTは、選択されたDSPスライス、たとえば212−2のポートUOCに直接接続する。例示を容易にするために、特記しない限り、「上流」および「下流」という用語は、カスケード接続されたDSPスライスにおけるデータフローの方向を指す、すなわちデータフローは上流から下流に向かう。しかしながら、代替的な実施例は、データフローが下流から上流に向かう場合、または上流から下流へのまたは下流から上流へのいずれの組合せをも含む。各DSPスライス212の出力ポートOUTもまた、同じDS
Pスライス(図示せず)の入力ポート、たとえば累算フィードバック(ACC)に内部で接続される。いくつかの実施例においては、隣接するDSPスライス間の接続は、接続が汎用配線を横断しなければ直接接続であり、汎用配線は、たとえばCLBを接続するために典型的に用いられるプログラマブルルーティングリソースを含む。直接接続は、隣接するスライスからのデータストリームのバージョンを維持する、遅延回路、インバータ、またはシンクロナス素子のような、介在する素子を含み得る。代替的な実施例においては、隣接するDSPスライス間の接続は間接的であるかおよび/または汎用配線を横断し得る。
図2Bは、タイル205−1の図2Aのスイッチ220の拡大図のブロック図である。一実施例におけるタイル205−1は、長さが4CLBタイルである。4つの隣接するCLBタイルにおける4つのスイッチは、スイッチ120−1、120−2、120−3、および120−4によって図2AおよびBに示される。スイッチ220は、4つのスイッチ230−1、230−2、230−3、および230−4を含み、これらはそれぞれスイッチ120−1、120−2、120−3、および120−4に接続される。スイッチ220の出力はバス222上にあり、図3Aを参照して、A1、A2、B1、B2およびCで示される。A1およびA2はそれぞれ、DSP論理307−1のA1およびDSP論理307−2のA2への、各々18ビット入力である(図3A)。B1およびB2は、それぞれ、DSP論理307−1のB1およびDSP論理307−2のB2への、各々18ビット入力である。図2Bにおける48ビット出力Cは、図3Aのレジスタ300−1に接続される。一実施例においては、A1、A2、B1、B2およびCに対する出力ビットは、スイッチ230−1から230−4からのビット群で受けられる。たとえば、ビットピッチ、すなわち群の中のビットは、4のCLBビットピッチと一致させるために4に設定され得る。図3Aにおいて、OUT1およびOUT2がそれぞれDSP論理307−1および307−2から受けられ、これらが図2Bにおけるスイッチ230−1から230−4を横断して縞状に示されている。
図3Aは、図2のFPGA200の一実施例に従った1対のDSPタイル205−1および205−2を詳細に示す。図2Aに示すように、(総称してタイル205と称する)各DSPタイル、たとえば205−1は、(総称してスライス212と称する)1対のDSPスライス、たとえば212−1および212−2を含む。例示のために、スライス212−2は上流スライス212−3および下流スライス212−1を有する。各スライス、たとえば212−2は、(総称してDSP論理307と称する)いくつかのDSP論理、たとえば307−2およびモードレジスタ、たとえば310−2を含む。(総称してモードレジスタ310と称する)各モードレジスタ、たとえば310−2は、関連のDSP論理、たとえば307−2の(総称して制御ポート320と称する)制御ポート、たとえば320−2に対して制御信号を与える。モードレジスタはそれぞれのスライスの機能を個々に定義し、かつスライスの群の機能および接続性を総称的に定義する。各モードレジスタは、(集合的にモードバス315−1、315−2および315−3を表わす)モードバス315を介して汎用配線に接続し、したがってスライス212の外部の回路から制御信号を受けることが可能である。
入力側に、DSP論理307は3つのオペランド入力ポートA、B、Cを含み、その各々が専用のオペランドバスを介して汎用配線にプログラム可能に接続する。所与のDSPタイル205たとえばタイル205−1の、両方のスライス212たとえばスライス212−1および212−2に対するオペランド入力ポートCは、オペランドバスおよび関連のオペランドレジスタ300たとえばレジスタ300−1(すなわち、Cレジスタ)を共有する。出力側に、DSP論理307たとえば307−1および307−2は、出力ポートOUTたとえばOUT1およびOUT2を、バス175を介して汎用配線にプログラム可能に接続される。
各DSPスライス212は、高速DSP動作を促進する以下の直接接続を含む。
出力ポートOUT、たとえばスライス212−2のOUT2は、入力累算フィードバックポートACCと、下流スライスたとえば212−1の上流−出力カスケードポート(UOC)とに直接的に接続する。
入力−下流カスケードポート(IDC)は、下流スライスたとえば212−1の入力−上流カスケードポートIUCに直接接続する。隣接スライスからの対応のポートIDCおよびIUCは、上流スライスがオペランドを下流スライスに渡すことを可能にする。カスケード接続する動作(および1つのスライスから別のものへのオペランドデータの転送)は、図9を含むいくつかの図面を参照して以下に説明する。
例示のために図3Aを用いて、この発明の別の実施例において、スライス212−1および212−3は、サブモジュールまたはDSP素子であって、構造的に各サブモジュールは実質的に同一である。代替的な実施例においては、2つのサブモジュールは機能的に実質的に同一である。2つのサブモジュールは、2つのサブモジュール212−1および212−2を併せて接続する専用内部信号線、たとえばIDC−IUCおよびOUT−UOC信号線、を有する。2つのサブモジュールは、入力および出力ポートを有するモジュールを形成する。たとえば、モジュールの入力ポートは、各サブモジュール315−1および315−2のA、B、Cであり、モジュールの出力ポートはサブモジュール212−1および212−2のOUTポートである。モジュールの入力および出力ポートは、モジュールの外部の信号線に接続し、かつモジュールを集積回路上の他の回路に接続する。PLDたとえばFPGAの場合には、接続は汎用配線、すなわち他の回路と相互接続するプログラマブル配線リソースである。PLDではないICたとえばASICの場合には、この他の回路はプログラマブル機能および/またはプログラマブル配線リソースを含んでも含まなくてもよい。さらなる別の実施例においては、モジュールは3つ以上のサブモジュール、たとえば212−1、212−2、および212−3を含み得る。
図3Bは、この発明の別の実施例のDSPタイル320のブロック図である。DSPタイル320は、図2および図3に示されるDSPタイル205の例である。DSPタイル320は、2つのクロック入力clk_0およびclk_1から選択するマルチプレクサ322を有する。マルチプレクサ322のクロック出力は、Cレジスタ324のクロック入力に入力される。Cレジスタ324は、C_0_1データ入力325を受取る。第2のマルチプレクサ326は、Cレジスタ324に格納されたCデータかまたはC_0_1データ入力325のいずれかをDSPスライス330およびDSPスライスDSP332のC入力に送る。DSPスライス330およびDSPスライス332はAデータについての入力A、Bデータについての入力B、減算およびキャリーイン制御信号、およびOpModeデータ(スライスの機能をダイナミックに制御するための制御データ)を有する。これらの入力は、汎用配線から入来する。DSPスライス330およびDSPスライス332からの出力データは、汎用配線を駆動するOUTポートを介して出力される。FPGAプログラマブル配線ファブリックの実施例は、スティーブ・P・ヤング(Steve P. Young)他の「FPGAプログラマブル配線ファブリック」と題される1999年6月22日発行の米国特許第5,914,616号、およびスティーブ・P・ヤング他の2002年9月10日発行の米国特許第6,448,808B2号に見出される。
DSPスライス330は、上流DSPタイルからのデータをIUCおよびUOC入力ポートを介して受ける。DSPスライスの330IDCおよびOUT出力ポートは、DSPスライスの332IUCおよびUOC入力ポートにそれぞれ接続される。DSPスライス332は、IDCおよびOUT出力ポートを介してデータを下流DSPタイルに送る。
図3Cは、この発明の一実施例の図3AのDSP素子またはDSPスライス212−2の概略図である。参照をわかりやすくするために、図3Bおよび図3Cで同様の要素を示すのに同様の符号が用いられる。マルチプレクサ358は、上流BREG(Bレジスタ)からの18ビットB入力データまたは18ビットIUCデータを選択する。マルチプレクサ358の出力は、BREG360すなわち0、1またはそれ以上のレジスタのカスケードに格納される。BREG360の出力は、IDCを介して下流スライスに送られるか、またはブース/アレイ低減ユニット364への第1の入力として用いられるか、またはその両方である。18ビットA入力データは、AREG(Aレジスタ)362すなわち、0、1またはそれ以上のレジスタのカスケードによって受けられ、AREG362の出力はBREG360の出力に連結されて(A:B)、Xマルチプレクサ(XMUX)370に送られるか、またはブース/アレイ低減ユニット364の第2の入力として用いられるか、またはその両方である。ブース/アレイ低減ユニット364は、18ビット被乗数および18ビット乗数入力を取込んで、2つの36ビット部分積出力を生成し、これらはMREG368すなわち1つ以上のレジスタに格納される。2つの部分積出力の第1の36ビット部分積出力は、Xマルチプレクサ(XMUX)370に送られ、2つの部分積出力のうちの第2の36ビット部分積出力は、Yマルチプレクサ(YMUX)372に送られる。これらの2つの36ビット部分積出力は加算器/減算器382において併せて加算され、AREG362およびBREG360に格納された18ビット被乗数値と18ビット乗数値との積を生成する。代替的な実施例においては、ブース/アレイ低減ユニット364は2つの18ビット入力を受ける乗算器に置換されて、単一の36ビット積を生成するが、これはXMUX370またはYMUX372のいずれかに送られる。
図3Cにおいて、OpModeレジスタ310−2からの選択制御入力を有する、3つのマルチプレクサXMUX370、YMUX372、およびZMUX374がある。OpModeレジスタ310−2は、フルに動作するプログラマブルファブリックのクロック速度で典型的には書込まれる。XMUX370は少なくとも、MREG368の出力の一部、または定数「0」、または36ビットA:B、またはマルチプレクサ386の出力OUTからの48ビットフィードバックACCを選択する。YMUX372は少なくとも、MREG368の別の部分、定数「0」、またはCデータの48ビット入力を選択する。ZMUX374は、Cデータの48ビット入力、または定数「0」または上流スライスからの(17ビット右シフトされたまたはシフトされない)48ビットUOCデータ、またはマルチプレクサ386の出力OUTからの(17ビット右シフトされたまたはシフトされない)48ビットフィードバックを選択する。右シフトは、符号拡張によるLSB方向の算術シフトである。マルチプレクサXMUX370、YMUX372、およびZMUX374は、各々48ビット出力を、キャリー伝搬加算器を含む加算器/減算器382に送る。キャリーインレジスタ380は、加算器/減算器382にキャリーイン入力を与え、減算レジスタ378は、いつ加算器/減算器382が加算または減算を行なうべきかを示す。加算器/減算器382の48ビット出力は、PREG384に格納されるかまたはマルチプレクサ386に直接送られる。PREG384の出力は、マルチプレクサ386に接続される。マルチプレクサ386の出力は、スライス212−2と下流スライスへの出力との両方である出力OUTに向かう。また、OUTはXMUX370およびZMUX374にフィードバックされる(すなわち、2つのACCフィードバック経路が存在する)。一実施例においては、マルチプレクサ358および386の選択ポートは、FPGAに対する構成メモリが構成または再構成された場合に設定または更新される1つ以上の構成メモリセルに各々接続される。こうして、マルチプレクサ358および386における選択は、構成メモリに格納された論理値によって制御される。代替的な実施例においては、マルチプレクサ358および386選択ポートは汎用配線に接続され、ダイナミックに修正され得る。
図3Dは、この発明の別の実施例の図3AのDSPスライス212−2の概略図である。図3Dは、ブース/アレイ低減ユニット364およびMREG368がない点以外は図
3Cと同様である。よって、図3Dは、乗算器のないスライスの実施例を示す。
図3Eは、この発明のさらに別の実施例のDSPタイルのブロック図である。DSPタイル205は、2つの素子またはスライス390および391を有する。代替的な実施例においては、DSPタイルは、タイル毎に1、2またはそれ以上のスライスを有し得る。よって、2という数は、この発明のいくつかの実施例のためにだけ採用されており、他の実施例はタイル毎に1、2またはそれ以上のスライスを有し得る。DSPスライス391はDSPスライス390と実質的に同一または同様であるので、DSPスライス390の構造のみをここで説明する。DSPスライス390は、任意のパイプラインレジスタと、ルーティング論理392とを含み、これはIC上の他の回路からの3つのデータ入力A、B、およびCと、DSPスライス391のIDCからの1つのIUCデータ入力とを受ける。任意のパイプラインレジスタおよびルーティング論理392は、IDC信号を他の下流スライス(図示せず)に送り、乗数および被乗数出力信号を乗算器393に送り、直接出力をルーティング論理395に送る。ルーティング論理392は、どの入力(A、B、C)がどの出力に向かうかを決定する。乗算器393は、任意のレジスタ394に乗算器の積を格納し、任意のレジスタ394は出力をルーティング論理395に送る。この実施例においては、乗算器は2つの部分積ではなく完全な積を出力する。
ルーティング論理395は、任意のレジスタ394からの入力と、任意のパイプラインレジスタおよびルーティング論理392からのUOC(これはスライス391からの任意のパイプラインレジスタおよびルーティング論理398の出力−下流カスケード(ODC)ポートに接続される)と、任意のパイプラインレジスタおよびルーティング論理397からのフィードバックとを受ける。ルーティング論理395からの2つの出力は、加算または減算のために加算器396に入力される。別の実施例においては、加算器396は演算論理装置(ALU)で置換されて、論理およびまたは算術演算を行なう。加算器396の出力は、任意のパイプラインレジスタおよびルーティング論理397に送られる。任意のパイプラインレジスタおよびルーティング論理397の出力はOUTであり、これはIC上の他の回路、ルーティング論理395およびODCへ向かい、ODCは下流のスライスに接続される(図示せず)。
代替的な実施例においては、スライス390のOUTは隣接する水平方向のスライス(図示せず)のC入力(またはAまたはB入力)に直接接続されてもよい。両方のスライスが実質的に同じ構造を有する。よって、この発明のさまざまな実施例においては、スライスは垂直に、または水平に、またはその両方にカスケード接続され得る。
図3Fは、この発明の別の実施例に従った複数のDSP素子を示す。図3Fは、実質的に同一の構造を有する2つのDSP素子660−1および660−2を示す。信号線642および644は、専用信号線を渡って2つのDSP素子を相互接続する。DSP素子660−1は、乗算回路632に接続される第1のスイッチ630と、加算回路636に接続される第2のスイッチ634とを含み、乗算回路632は第2のスイッチ634に接続される。スイッチ630および634は、たとえば、レジスタ、RAM、または構成メモリを用いることによりプログラム可能である。入力データレートでの入力データは、入力線640上のDSP素子660−1によって受けられ、DSP素子660−1の出力データは出力データレートで出力線654に送られる。DSP素子660−2からの入力データは、信号線642および644上のDSP素子660−1によって受けられ、DSP素子660−1からDSP素子660−1の上の第3のDSP素子(図示せず)への出力データはまた、専用信号線650および652を介して送られる。DSP素子660−1は、乗算回路632をバイパスし得る任意の信号線656と、出力654を第2のスイッチ634に戻す任意のフィードバック信号線658とをも有する。
一実施例における第1のスイッチ632および第2のスイッチ634は、選択線を1つ以上のレジスタに接続されるマルチプレクサを含む。レジスタの内容は、必要であれば入力データレート(または出力データレート)の大きさのオーダで変更可能である。別の実施例においては、第1のスイッチ632は1つ以上のマルチプレクサを有し、その選択線は構成メモリセルに接続されて、構成メモリの内容が変更されることによってのみ変更される。再構成についてのさらなる説明は、ブランドン・J・ブロジェット(Brandon J. Blodget)他の「内部制御を用いたプログラマブル論理装置の再構成」と題される米国特許出願第2004/0117755A1号に開示される。上述の実施例と同様に、第2のスイッチ634はその選択線をレジスタ(たとえば1つ以上のフリップフロップ)に接続される。さらに別の実施例においては、第1のスイッチ632および第2のスイッチ634の選択線は構成メモリセルに接続される。さらに別の実施例においては、第1のスイッチ632の選択線はレジスタに接続され、第2のスイッチ634の選択線は構成メモリセルに接続される。
スイッチ630および634は、FIFO(先入れ先出しキュー)、パイプラインレジスタ、および/またはバッファのような入力および/または出力キューを含み得る。乗算回路632および加算回路636は、1つ以上の出力レジスタまたはパイプラインレジスタまたはキューを含み得る。一実施例においては、第1のスイッチ630および乗算回路632は存在せず、DSP素子660−1は第2のスイッチ634を有し、これは入力線640を受け、加算回路636に接続される。さらに別の実施例においては、乗算回路632および/または加算回路636は、1つ以上の数学的機能を果たし得る算術回路で置換される。
図3Gは、この発明のさらに別の実施例に従った複数のDSP素子を示す。図3Gは、図3Fにおいてはフィードバック信号658が652に接続されるのに対し、図3Gにおいてはフィードバック信号658が652’に接続されていない点以外は図3Fと同様である。
上述のように、この発明の実施例はPLDまたはFPGAに限定されず、ASICをも含む。一実施例においては、図3A−図3Fに示されるようなスライス設計、たとえば図3Dに示されるスライス212−2、および/または1つ以上のスライスを有するタイル設計が、標準セルASIC設計のセルライブラリコンポーネントとして、またはストラクチャードASICのライブラリモジュールとして用いるために、ハードウェア記述言語または他のコンピュータ言語でライブラリに格納されてもよい。別の実施例においては、DSPスライスおよび/またはタイルは、単一のシリコンダイ上にマスクプログラムド標準セル論理およびフィールドプログラマブルゲートアレイ論理の両方を有する混載IC設計の一部であってもよい。
図4は、一実施例に従ったFPGA400の一部の簡略化されたブロック図である。FPGA400は従来、プログラマブル配線を有する汎用配線リソース405、および構成可能論理410を含み、一実施例に従うと、1対のカスケード接続されたDSPタイルDSPT0およびDSPT1を含む。タイルDSPT0およびDSPT1は、図3Aのタイル205−1および205−2と同様であり、同様に識別される要素は同一であるかまたは同様である。
タイルDSPT0およびDSPT1は同一であって、各々1対の同一のDSPスライスDSPS0およびDSPS1を含む。各DSPスライスは以下を含む。
a.それぞれのオペランド入力ポートAおよびBに接続される1対のオペランド入力レジスタ412および414。
b.レジスタ412に接続される被乗数ポートと、レジスタ414に接続される乗数ポートと、パイプラインレジスタ418に接続される積ポートとを有する、積生成器416。
c.各入力線(図示せず)が論理0を表わす電圧レベル422に接続される第1の入力ポートと、パイプラインレジスタ418に接続される第2のポートと、出力ポートOUTに接続される第3の入力ポート(第1のフィードバックポート)とを有する、第1のマルチプレクサ420。
d.出力ポートOUT(第2のフィードバックポート)に接続される第1の入力ポートと、電圧レベル422に接続される第2の入力ポートと、上流DSPスライスの出力ポートOUTに接続する、上流−出力カスケードポートUOCとしての役割を果たす第3の入力ポートをとを有する、第2のマルチプレクサ424。
e.マルチプレクサ420に接続される第1の加数ポートと、マルチプレクサ424に接続される第2の加数ポートと、DSPスライス出力レジスタ430を介して出力ポートOUTに接続される和ポートとを有する、加算器426。
モードレジスタ310は、マルチプレクサ420および424の選択端子と加算器426の制御入力とに接続する。FPGA400は、スライス212が所望のDSP構成を定義し、制御信号が初期および装置動作の間の任意のときにモードレジスタ310にロードされるように、汎用配線405を介して初期に構成され得る。
図5Aは、一実施例に従った、転置された4タップの有限インパルス応答(FIR)フィルタ500を実現するよう適合される図4のFPGA500を示す。図5Aの要素は図4のものと同一であるが、2つの理由から方策は異なる。第1に、図5Aの汎用配線405は、データシリーズX(N)および4つのフィルタ係数H0−H3をDSPスライスに伝達するよう構成される。第2に、図5Aは、モードレジスタ310が各々制御信号を格納することを想定し、これらの制御信号は転置されたFIRフィルタを実現するために要求される接続性および機能を集合的に定義する。フィルタ500において用いられる信号経路およびバスは実線で示され、非活性(未使用)リソースは点線で示される。
タイルDSPT0のスライスDSPS0において、モードレジスタ310はマルチプレクサ420および424ならびに加算器426に対し動作して、スライスにパイプラインレジスタ418に格納された積を論理0電圧レベル422に加算させるモード制御信号を含む(すなわち、0をレジスタ418の内容に加えさせる)。3つの下流スライスの各々のモードレジスタ310は、各下流スライスにそれぞれのパイプラインレジスタ418内の積と上流スライスの出力とを加算させる、異なった組のモード制御信号を含む。
図5Bは、図5AのFIRフィルタの機能を示す表550である。フィルタ500は、データシーケンスX(N)に応答して以下の出力信号Y3(N−3)を生成する。
Y3(N-3)=X(N)H0+X(N-1)H1+X(N-2)H2+X(N-3)H3 (1)
表550は、11のクロックサイクル0−10に亘る、図5Aの対応のDSPスライスの出力信号OUT0、OUT1、OUT2、およびOUT3を示す。転置FIRフィルタアルゴリズムは、信号処理分野における当業者には周知である。転置FIRフィルタの詳細な議論については、「対称的転置FIRフィルタ」と題されるサイド(Said)他の米国特許第5,339,264号を参照されたい。
クロックサイクル0で開始して、第1の入力X(0)は4つのスライスにおける各レジスタ414にラッチされ、4つのフィルタ係数H0−H3は各々、それぞれのスライス内のレジスタ412のうちの1つにラッチされる。各データ/係数対はこうして、それぞれの積生成器416による利用が可能になる。次に、クロックサイクル1において、積生成器416からの積がそれぞれのレジスタ418にラッチされる。こうして、たとえば最も左側のDSPスライス内のレジスタ418は、積X(0)H3を格納する。この時点までに、表550に示すように、どのデータも積レジスタ430に到達していないので、出力OUT0−OUT3は各それぞれのスライスから0を提供する。
各スライスにおける加算器426は、それぞれのレジスタ418内の積に第2の選択された加数を加える。最も左側のスライスにおいて、選択された加数はハードワイヤード数0なので、出力レジスタ430はクロックサイクル2において、レジスタ418の内容を取込んで、すなわちX0*H3、この積を出力OUT1として提供する。残りの3つのスライスにおいて、選択された加数は上流スライスの出力である。上流スライスはすべて、クロックサイクル0の受信前に0を出力するので、最も右側の3つのスライスはそれらのそれぞれのレジスタ418の内容をそれぞれの出力レジスタ430にラッチする。
スライス間のカスケード配線は、クロックサイクル3の受信において有効になり始める。各下流スライスは、上流スライスからの出力をそれぞれのレジスタ418内に格納された積と合計する。上流スライスからの積はこうして、最も右側のDSPスライスがフィルタ処理された出力Y3(N−3)を同様に名づけられた出力ポート上に与えるまで、カスケード接続され合計される。例示を容易にするために、FIRフィルタ500は、4タップフィルタを実現する2つのタイルDSPT0およびDSPT1に限定される。他の実施例に従ったDSP回路は非常に多くのDSPタイルを含み、こうして遥かに多くのタップを有するフィルタ構成をサポートする。さらなるタイルを想定すると、図5AのFIRフィルタ500は、さらなるDSPスライスをカスケード接続することにより、より多くのタップを含むように簡単に拡張可能である。この発明のこの局面の重要性は、カスケード接続に代えて加算器ツリーを用いるDSPアーキテクチャの以下の議論において強調される。
図5C(先行技術)は、18ビットの4タップFIRフィルタを実現するよう適合される従来のDSP素子552のブロック図である。従来のFPGAにおいて用いられるDSP素子と同様に、DSP素子552は、たとえば図5Aおよび図5Bを参照して説明されたカスケード構成の代わりに、加算器ツリー構成を用いる。DSP素子552はいくつかのレジスタ555、乗算器556、および加算器557を含む。示されるFIR構成は当業者には十分に理解されている。したがって図5Cの機能的説明は簡略のために省略する。DSP素子552は図示される4タップFIRフィルタのような少ない数のフィルタに対しては良好に動作するが、多数のDSP素子552を組合せてより大きなフィルタを実現すると、速度性能が顕著に減じられ電力散逸が増大する。
図5D(先行技術)は、2つのDSP素子552−1および552−2からなる18ビットの8タップFIRフィルタのブロック図であり、各々が図5Cに示される4タップFIRフィルタを実現するよう適合される。2つの4タップDSP素子552−1および552−2の結果は、レジスタ564(および汎用配線565)に格納される8タップFIRフィルタ結果を得るためには、汎用配線565における加算器562を介して組合されなければならない。残念ながら、汎用配線565は、素子552−1/2の内部の専用DSP回路と比較して、速度が遅く電力散逸が大きい。さらに、DSP素子552−1をDSP素子552−2に接続してX(N−4)を転送するためには、汎用配線565を用いなければならない、すなわち、DSP素子552−1はDSP素子552−2に直接接続されていない。したがってこの種のDSPアーキテクチャは、比較的複雑なDSP回路を
実現する場合に、速度性能および電力散逸の観点で、大きな犠牲を払う。対照的に、たとえば図5Aのカスケード構造は、構成可能論理を含まずに、複雑なDSP回路に対処するようにより簡単に拡張可能であり、したがって小さな電力散逸で多くの種類のDSP回路に対し顕著に向上した性能を提供する。
ダイナミック処理
図5Aの例において、モードレジスタ310はFIRフィルタ500を定義するための必須のモード制御信号の組を含む。モードレジスタ310は、汎用配線405を介して装置動作の間にロード可能である。構成メモリへの書込なしに異なったDSP動作を行なうようDSPリソースを修正することを、ここで「ダイナミック」制御と称して、構成メモリの内容を変更することにより異なったDSP動作を行なうようDSPリソースを修正することから区別する。ダイナミック制御は典型的には、比較的より遅い再構成速度ではなく、DSPリソースの動作速度で行なわれる。こうして、構成メモリの内容の変更は過度に時間を消費する虞があるので、ダイナミック制御が好ましい。この発明の例示的な実施例において、再構成に対するダイナミック制御の実質的な性能向上を示すために、FPGAのVirtex(登録商標)ファミリは、多くの構成メモリセルに書込むためにたとえば数十メガヘルツ範囲(たとえば50MHz)で動作する構成クロックを用いて再構成される。これに対し、Virtex(登録商標)論理は、構成クロックの少なくとも1オーダの大きさ速い動作クロック周波数(たとえば数百メガヘルツ、たとえば600MHzまたはそれ以上の範囲)で動作し、スイッチングモードは、比較的少ない宛先(たとえば、図17におけるマルチプレクサ回路1721)にモード制御信号が与えられることを要求する。よって、この発明の実施例は1構成クロック期間よりも短い時間スパンでモードを切換可能である。
構成メモリ内の1組のビットを設定または更新するのにかかる時間は、構成クロック速度と設定または更新されるべきビットの数との両方に依存する。たとえば、1つ以上のフレームに属する更新されたビットおよびこれらの更新されたフレームは、次いでバイトシリアルフォーマットで構成メモリに送られる。たとえば、構成クロックが16ビットワードについて50MHz、または16*50または毎秒800,000,000ビットの構成レートであると想定する。1フレームに10,000ビットが存在すると仮定する。したがって、構成メモリにおいて1フレーム(またはその任意の部分)を更新するのに約10,000/800,000,000=13マイクロ秒がかかる。OpModeレジスタが同じクロック、すなわち50MHz構成クロックを用いるべきであるとしても、OpModeレジスタは1クロックサイクルまたは20ナノ秒で再プログラムされるであろう。こうして、構成メモリの設定または更新とOpModeレジスタの変更との間には顕著な時間差が存在する。
図6Aおよび図6Bは併せて、複雑な数学的機能を実現するためにFPGA400をどのようにダイナミックに再構成可能であるかを示す。この特定の例において、FPGA400は2つのシリーズの複素数を受け、対応の対を乗算し、結果を合計する。この周知の演算は典型的に、「複素数乗算累算」機能または「複素数MACC」と称する。以下の一連の方程式は周知であるが、図6Aおよび図6BのダイナミックDSP動作を例示するためにここに繰返す。
第1の対の複素数a+jbおよびc+jdを乗算すると、以下の複素数の積が得られる。
R1+jl1=(a+jb)(c+jd)=(ac-bd)+j(bc+ad)=ac-bd+jbc+jad (2)
同様に、第2の対の複素数e+jfおよびg+jhを乗算すると以下が得られる。
R2+jl2=(e+jf)(g+jh)=(eg-fh)+j(fg+eh)=eg-fh+jfg+jeh (3)
方程式(2)および(3)の積を合計すると以下が得られる。
(R1+jl1)+(R2+jl2)=ac-bd+jbc+jad+eg-fh+jfg+jeh (4)
項を、実数/実数、虚数/虚数、虚数/実数、および実数/虚数の積タイプに再編成すると、以下が得られる。
(R1+jl1)+(R2+jl2)=(ac+eg)+(-bd-fh)+(jbc+jfg)+(jad+jeh) (5)
または
(R1+jl1)+(R2+jl2)=R[(ac+eg)+(-bd-fh)]+l[(bc+fg)+(ad+eh)] (6)
上記は、4つの積タイプの各々を累算し、次いで結果として生じる実数の対と結果として生じる虚数の対とを合計することにより、一連の複素数積の合計が得られることを示す。これらの動作は、任意の数の対に拡張可能であるが、ここでは例示を容易にするために2つの複素数に限定される。
図6Aにおいて、FPGA400は一連の複素数の対AR(N)+AI(N)jおよびBR(N)+BI(N)jの4つの積タイプの各々を合計するアキュムレータ600として動作する。汎用配線405は、DSPスライスに入ってくる複素数対の実数および虚数部を提供するよう構成される。構成可能論理410において実現されるステートマシン610は、汎用配線405を介して各モードレジスタ310の内容を制御し、したがってDSPスライスの機能および接続性を決定する。他の実施例においては、モードレジスタ310はたとえばFPGAの外部の回路を用いて、またはオンチップマイクロコントローラを用いて制御される。別の実施例においては、ザイリンクスから入手可能であるVirtex II Pro(登録商標)FPGAに組入れられる種類の1つ以上のIBM PowerPC(登録商標)マイクロプロセッサがDSPスライスにモード制御信号を与える。図6Aおよび図6Bについて、これはステートマシン610が組込みマイクロプロセッサで置換されることを示す。
タイルDSPT0のDSPスライスDSPS0は、一連の実数/実数対AR(N)およびBR(N)を受ける。積生成器416は各対を乗算し、加算器426が結果として生じる積を出力レジスタ430の内容に加算する。出力レジスタ430は0に予め設定され、よってN+2クロックサイクル後にN個の実数/実数積の和を含む。さらなる2クロックサイクルは、データをレジスタ412、414、および418を通って移動させるのに必要である。結果として生じる積の合計は、上記方程式6の第1の実数和ac+egに類似する。別の実施例においては、出力レジスタ430は0に予め設定される必要はない。ステートマシン610は、第1の積が受けられた時点で0を加算器426に入れるようマルチプレクサ424を構成可能である。出力レジスタ430が0に設定される必要はないことに留意されたい。新しいベクトル演算の各々の第1のデータポイントは、現在の出力レジスタ430に加算されない、すなわち、OpmodeはACCフィードバックなしの標準フロースルーモードに設定される。
タイルDSPT0のDSPスライスDSPS1は、一連の虚数/虚数対AI(N)およびBI(N)を受ける。積生成器416は各対を乗算し、加算器426は結果として生じる積を出力レジスタ430の内容から減算する。出力レジスタ430はこうして、N+2クロックサイクル後にN個の虚数/虚数積の負の和を含む。結果として生じる積の和は、上記方程式6の第2の実数和−bd−fhに類似する。
タイルDSPT1のDSPスライスDSPS0は、一連の実数/虚数対AR(N)およびBI(N)を受ける。積生成器416は各対を乗算し、加算器426は結果として生じる積を出力レジスタ430の内容に加算する。出力レジスタ430はこうして、N+2クロックサイクル後にN個の実数/虚数積の和を含む。結果として生じる積の和は、上記方
程式6の第1の虚数和bc+fgに類似する。
最後に、タイルDSPT1のDSPスライスDSPS1は、一連の虚数/実数対AI(N)およびBR(N)を受ける。積生成器416は各対を乗算し、加算器426は結果として生じる積を出力レジスタ430の内容に加算する。出力レジスタ430はこうして、N+2クロックサイクル後にN個の虚数/実数積の和を含む。結果として生じる積の和は、上記方程式6の第2の虚数和ad+ehに類似する。
一旦すべての積の対がレジスタ430において累算されると、ステートマシン605はモードレジスタ310の内容を変更して4つのDSPスライスを再構成し、2つの累積実数和(たとえばac+agおよび−bd−fh)および2つの累積虚数和(たとえばbc+fgおよびad+eh)を加算する。結果として生じる構成655を図6Bに示す。
構成655において、タイルDSPT0のDSPスライスDSPS1は、上流出力カスケードポートUOCにおいて利用可能であるDSPスライスDSPS1の出力OUT0を、それ自身の出力OUT1に加算する。図6Aを参照して説明したように、OUT0およびOUT1は、各々が実数の結果を含む2つの出力レジスタ430の内容を反映する。こうして、さらに1クロックサイクル後に、出力ポートOUT1はMACC結果の実数部である実数積PRを提供する。タイルDSPT1のDSPスライスDSPS0およびDSPS1は同様に構成されて、それぞれのレジスタ430の内容と積の2つの虚数和との両方を加算して、MACC結果の虚数積PIを提供する。結果として生じる複素数PR+PIは、図6Aの構成600における端子AR(N)、AI(N)、BR(N)、およびBI(N)の対応の対の積のすべての和である。こうしてDSPスライスの機能をダイナミックに変更する能力は、複雑な機能の異なった部分を達成するために、FPGA400に貴重なDSPリソースを再利用させる。
パイプライン化リソースを備えたDSPスライス
図7は、別の実施例に従ったFPGA700を示す。FPGA700は図4のFPGA400に類似し、同様に名付けられた要素は同一または同様である。しかしながら、FPGA700における各DSPスライスが、異なった量の遅延を導入するよう構成可能である入力レジスタ705を含む点で、FPGA700はFPGA400とは異なる。この例において、レジスタ705は2対のレジスタ710および715を用いてオペランド入力AおよびBのいずれかまたはその両方に、2クロックサイクルまでの遅延を導入可能である。図示されない構成メモリセルは、所与のオペランド入力上の所与のレジスタ705によって課される遅延の量を決定する。他の実施例においては、レジスタ705は、モードレジスタ310によりダイナミックにも制御される。
図8は、複素数のためのパイプライン化された乗算器を実現するよう構成される図7のFPGA700を示す。タイルDSPT0のDSPスライスDSPS0におけるレジスタ310の内容は、そのスライスが2つの複素数AR+jAIおよびBR+jBIの実数成分ARおよびBRの積に(電圧レベル422からの)0を加算し、結果を対応のレジスタ430に格納するよう構成する。関連の入力レジスタ705は、1クロックサイクルの遅延を課すよう構成される。タイルDSPT0のDSPスライスDSPS1におけるレジスタ310の内容は、そのスライスが上流スライスDSPS0のレジスタ430の内容から複素数AR+jAIおよびBR+jBIの虚数成分AIおよびBIの実数積を減算するよう構成する。次いでスライスDSPS1は、結果として生じる実数積PRをタイルDSPT0のDSPS1内のレジスタ430のうちの1つに格納する。スライスDSPS1の入力レジスタ705は、2クロックサイクル遅延を課すよう構成され、それにより上流スライスDSPS0の出力は、適切なクロックサイクルでスライスDSPS1のレジスタ418に加算するよう利用可能である。
DSPタイルDSPT1は、DSPタイルDSPT0と同様の態様で機能して、同じ2つの虚数の虚数積PIを計算する。タイルDSPT1のDSPスライスDSPS0におけるレジスタ310の内容は、そのスライスが複素数AR+jAIおよびBR+jBIの実数成分ARおよび虚数成分BIの虚数積に0を加算し、結果を対応のレジスタ430に格納するよう構成する。対応の入力レジスタ705は1クロックサイクルの遅延を課すよう構成される。タイルDSPT1のDSPスライスDSPS1におけるレジスタ310の内容は、そのスライスが上流スライスDSPS0のレジスタ430の内容から虚数成分AIおよび実数成分BRの虚数積を加算するよう構成する。タイルDSPT1のスライスDSPS1は次いで、結果として生じる虚数積PIをタイルDSPT1のDSPS1内のレジスタ430のうちの1つに格納する。DSPスライスDSPS1の入力レジスタ705は、上流スライスDSPS0の出力がスライスDSPS1のレジスタ418に加算するよう利用可能であるように、2クロックサイクルの遅延を課すよう構成される。
図8の構成は、4クロックサイクルのレイテンシを課す。第1の出力が実現された後で、各クロックサイクルで複素数積PR+jPIが提供される。この構成はしたがって、比較的長いシーケンスの複素数対を乗算するのに非常に効率的である。
図9は、別の実施例に従って適合されたDSPリソースを備えたFPGA900を示す。他の図を参照して上に説明したリソースは、図9においても同様に名付けられる。これらのリソースの説明は簡略化のためにここでは省略する。
FPGA900の各DSPスライスは、オペランドのパイプライン化を促進するマルチプレクサ905を含む。各スライス内のマルチプレクサ424は、シフタ910を介して上流スライスの出力に接続されるさらなる入力ポートを含む。シフタ910は、いくつかのDSP回路を実現するために要求されるリソースの量を減じる。図9の包括的な例は、例示を容易にするために符号付きNビットオペランドおよびNビットシフタ910を想定する。符号付きおよび符号なしのオペランドの両方を用いる特定の例を以下に詳細に説明する。DSPS0の出力はP(N−2:0)であり、DSP1の出力はP(2(N−1)+N:N−1)であり、ただしNは整数である。
図10は、3ビットの符号付き(2の補数)オペランドを受けるDSPリソース1000の例を示す。リソース1000は5ビット符号付き数Aと3ビット符号付き数Bとを乗算する(すなわちA×B)完全にパイプライン化された乗算器として、モードレジスタ310を介して構成される。各オペランド入力バスは僅かに3ビット幅なので、5ビットオペランドAはA0とA1とに分割され、ここでA0は、最上位ビット(MSB)が0であって2つの最下位ビット(LSB)が数Aの2つの下位ビットの3ビット数であって、A1はAのMSBである。この簡単な例は、図9において最初に導入されたシフタ910の2ビットバージョンの機能を例示する。
B=011であって、A=00110であると仮定する。MSBのゼロはAおよびBが両方とも正の数であることを示す。AとBとの積Pはしたがって00010010である。数学的には以下のように表記される。
P=A×B=00110×011=00010010 (7)
Aは2つの符号付き数A0およびA1に分割され、この場合ゼロが2つの最下位ビットの前に付与されて正の符号付き数A0を生成する。(このLSBの0の付与は、Aの正の値および負の値の両方に用いられる)。こうして、A1=001およびA=010である。
図10のように構成されたDSPスライスDSPS0およびDSPS1は、2つの下位ビットP(1:0)と6つの上位ビットP(7:2)との組合せとしてAとBとの積Pを汎用配線405に伝える。図10の構成は以下のように動作する。
スライスDSPS0の入力レジスタ705は、単一のレジスタ710および単一のレジスタ715を用いて1クロックサイクルだけの遅延を導入するよう構成される。3クロックサイクル後に、レジスタ430はA0とBとの積、すなわち010×011=000110を含む。レジスタ430の2つの下位ビットは、2つの下位積ビットP(1:0)として汎用配線405におけるレジスタ434に与えられる。この例において、2つの下位ビットは「10」である(すなわち、線P(0)上の論理レベルが論理0を表わし、線P(1)上の論理レベルが論理1を示す)。
スライスDSPS1のマルチプレクサ905は、上流スライスDSPS0の対応の入力−下流カスケードポートIDCに接続される入力−上流カスケードポートIUCを選択するよう構成される。オペランドBはしたがって、スライスDSPS0のレジスタ705によって課される1クロックサイクルの遅延後にスライスDSPS1に与えられる。
スライスDSPS1の入力レジスタ705は、スライスDSPS1からのオペランドBにさらなる1クロックサイクルの遅延を、およびオペランドA1に2クロックサイクルの遅延を導入するよう構成される。オペランドA0に課される単一のクロックサイクルと比較して、さらなるクロックサイクルの遅延は、3クロックサイクル後に、スライスDSPS0のレジスタ430がA0とBとの積(000110)を含む場合に、スライスDSPS1のレジスタ418がA1とBとの積(001×011=000011)を含むことを意味する。
スライスDSPS1のシフタ910は、対応のレジスタ430の内容(000110)を2ビット右に右シフトする、すなわち、結果として生じる新しい上位ビットを埋めるよう符号ビットを拡張して、000001とする。次いで、第4のクロックサイクルの間に、スライスDSPS1は関連のレジスタ418の内容をスライスDSPS0からの右シフトされた値に加算し(000001+000011)、結果(000100)を6つの最上位積ビットP(7:2)としてスライスDSPS1のレジスタ430に格納する。下位および上位積ビットP(7:2)=000100とP(1:0)=10とを組合せると、P=00010010が得られる。この結果は上記方程式6で与えられた積と一致する。
図10において、2つの出力P(7:2)およびP(1:0)は、たとえば1つの統合された接続P(7:0)を有するのではなく、汎用配線405への別々の接続を有する。この配置の利点とは、配線に対する要求が分散されることである。
図11は、別の実施例に従ったDSPリソース1100を示す。DSPリソース1100は、図10の例示のDSPリソース1000に機能的に類似するが、DSPアーキテクチャは18ビット符号付きオペランドを受けて操作するよう適合される。この実用的な例において、4つのDSPスライスは完全にパイプライン化された35×35乗算器として構成される。いくつかのレジスタ1105が構成可能論理リソース410から含まれて、パイプライン化を支援する。他の実施例においては、速度性能の向上のために、スライスDSPT0およびDSPT1は1つ以上のさらなるオペランドレジスタ、出力レジスタまたはそれら両方を含む。そのような実施例のいくつかにおいて、所与のスライス(図17および図21を参照)に関連の多数の出力レジスタのうちの1つを、別の出力レジスタの内容が更新される間にデータを保持するよう用いることができる。所与のスライスからの出力はこうして、スライスが下流のスライスに1つ以上の記録されたカスケード入力を与える間に維持され得る。
図12Aは、パイプライン化された4タップFIRフィルタ1200を実現するよう構成される4つのDSPスライスを示す。出力レジスタ430(たとえば図4を参照)の代わりに、各スライスは、0または1クロックサイクルの遅延を課すことができるよう装置構成の間にプログラムされることができる構成可能出力レジスタ1205を含む(他の実施例はダイナミックに制御されることができる出力レジスタを含む)。DSPスライスDSPS0におけるレジスタ1205はバイパスされ、スライスDSPS1におけるレジスタ1205がパイプライン化を支援するために含まれる。各DSPスライス内の入力レジスタ705もまた、さらにパイプライン化を支援するよう、オペランドに適切な遅延を課すよう構成される。先の例におけるように、モードレジスタ310はフィルタ1200の接続性を定義する。
図12Bは、図12AのFIRフィルタ1200の機能を示す表1250である。フィルタ1200は、データシーケンスX(N)に応答して、以下の出力信号Y3(N−4)を生成する。
Y3(N-4)=X(N-4)H0+X(N-5)H1+X(N-6)H2+X(N-7)H3 (8)
表1250は、8のクロックサイクル0−7ごとに図12AのDSPスライスごとにレジスタ710、715、418および1205の出力を与えることによるFIRフィルタ1200の動作を示す。レジスタ710および715の出力は、それぞれの積生成器416に最も近いレジスタ710および715の出力を指す。
図13Aは、シストリックな4タップFIRフィルタ1300を実現するようモードレジスタ310における適切なモード制御信号を用いて構成される2つのDSPタイルDSPT0およびDSPT1(4つのDSPスライス)を示す。DSPタイルを囲み、汎用ルーティングリソースを介してタイルと相互接続される構成可能リソースから選択されたいくつかのレジスタ1305が含まれる。フィルタ1300は、さらなるDSPスライスおよび関連のさらなるレジスタをカスケード接続することにより、Nタップに拡張可能であり、ただしNは4以上である。
図13Bは、図13AのFIRフィルタ1300の機能を示す表1350である。フィルタ1300は、データシーケンスX(N)に応答して、以下の出力信号Y3(N−6)を生成する。
Y3(N-6)=X(N-6)H0+X(N-7)H1+X(N-8)H2+X(N-9)H3 (9)
表1350は、9のクロックサイクル0−8ごとに図13AのDSPスライスごとにレジスタ710、715、418および1205の出力を与えることによる、FIRフィルタ1300の動作を示す。レジスタ710および715の出力は、それぞれの積生成器416に最も近いレジスタ710および715の出力を指す。
図14は、積生成器416を迂回する連結バスA:Bを含むよう修正されるDSPスライスを有するFPGA1400を示す。この例において、オペランドAおよびBの各々は18ビットであり、連結バスA:Bは36ビットであり、オペランドバスCは48ビットである。バスA:Bの上位18ビットはオペランドAを伝達し、下位18ビットはオペランドBを伝達する。マルチプレクサ420は、バスA:Bに対するさらなる入力ポートを含む。各DSPタイルは、図3において最初に導入されたオペランドレジスタ300をさらに含み、これは第3のオペランドCを関連のスライスにおけるマルチプレクサ424に伝える。利点の中でもとりわけ、レジスタ300は、テストベクトルが積生成器416を囲んで加算器426に向けられるので、DSPタイルのテストを容易にする。
モードレジスタ310は、入力データX(N)で動作するカスケード接続された、積分器コムのデシメーションフィルタとして動作するようFPGA1400を構成するモード制御信号を格納し、ただしNはたとえば4である。タイルDSPT0のスライスDSPS0およびDSPS1は2段の積分器を構成する。スライスDSPS0は出力レジスタ1205内のレジスタ300からの入力データX(N)を累算して、出力データY0(N)[47:0]を生成し、これが下流スライスDSPS1のマルチプレクサ424に伝えられる。下流スライスは、対応の出力レジスタ1205における上流スライスDSPS0からの累算された結果を累算して、出力データY1(N)[47:0]を生成する。データY1(N)[35:0]は、汎用配線を介してタイルDSPT1のスライスDSPS0のAおよびB入力に伝えられる。
タイルDSPT1のスライスDSPS0およびDSPS1は、2段のコムフィルタを形成する。タイルDSPT1のスライスDSPS0は、Y1(N)からY1(N−2)を減算して、出力Y2(N)を生成する。タイルDSPT0のスライスDSPS1は同じ演算をY2(N)に繰り返して、フィルタリングされた出力Y3(N)[35:0]を生成する。
ダイナミックおよび構成可能丸め処理
ここに記載される多くのDSP回路および構成は、大きな数を乗算してやはり大きな積を生成する。大きく不必要に厳密な積の処理は手間がかかりリソース集約的なので、そのような積はしばしば何らかの所望の数のビットに丸められる。いくつかの実施例は、ほとんど付加的なリソースを必要とせず丸め処理に関わるビットの数をダイナミックに変化させるよう調整可能である、高速で柔軟な丸め方策を採用する。
図15は、丸め処理を促進する実施例に従ったDSPスライス1500を示す。所与の丸め処理の精度はダイナミックに、またはスライス1500がプログラマブル論理装置で実現される場合には装置のプログラミングにより、変更可能である。
スライス1500は上述のDSPスライスと同様であり、同様に識別される要素は同一または同様である。スライス1500はさらに、第1および第2の入力端子がそれぞれ第1および第2のオペランド入力ポートAおよびBの符号ビットに結合される訂正回路1510を含む。訂正回路1510は、加算器426の入力に接続される出力端子をさらに含む。訂正回路1510は、乗数符号ビットおよび被乗数符号ビットに基づき、1ビット訂正係数CFを生成する。加算器426は次いで、積生成器416からの積にオペランドレジスタ300内のXビット丸め定数と訂正係数CFとを加算して、丸め処理を行なう。レジスタ300内の丸め定数の長さXが丸め処理ポイントを決定するので、丸めポイントは容易にダイナミックに変更可能である。
従来は、対称的な丸め処理は、数を最も近い整数に丸める(たとえば、2.5は3に丸められ、−2.5は−3に丸められ、1.5<=X<2.5は2に丸められ、−1.5>=X>−2.5は−2に丸められる)。これを2進算術で行なうためには、正の数に対しては0.1000の訂正係数を、または負の数に対しては0.0111を加算して、結果として生じる小数を切り捨てることにより行ない得る。正の数に対しては訂正係数における末尾の0の数を変更し、または負の数に対しては訂正係数における末尾の1の数を変更することにより、丸めポイントが変更される。スライス1500は、正の数と負の数との両方からのユーザが特定する数のビットを自動的に丸めるよう修正される。
図16は、最下位のNビットを丸めるために図15のスライス1500を用いる実施例に従った丸め処理を説明するフローチャート1600である。ステップ1605から開始して、丸め処理を制御する回路またはシステムは、オペランドレジスタ300に丸め定数
Kを格納する。図示される実施例において、丸め定数KはN−1の最下位ディジットが2進1であり、残りのビットが論理0である(すなわち、K=2(N-1)−1)である、2進数である。たとえば、3つの最下位ビット(N=3)を丸めるには、2(3-1)−1、または000011を用いる。
次に、ステップ1610において、スライス1500は丸められるべき数の符号を判断する。もし数がオペランドレジスタ715内の乗数とオペランドレジスタ710内の被乗数との積(またはその逆)であれば、訂正回路1510は乗数および被乗数の符号ビットのXNORを行なって(たとえばオペランドAおよびBのMSB)符号が異なれば論理0、符号が同一であれば論理1を得る。符号のインバースを求めることは丸め処理を容易にするが、丸め処理が既に計算された値の符号に基づくべき場合は、この発展した信号計算は不要である。
もし結果が正であれば(判断1615)、訂正回路1510は訂正係数CFを1に設定する(ステップ1620)。そうでなければ、訂正回路1510は訂正係数CFを0に設定する(ステップ1625)。加算器426は次いで、丸め定数K、丸め係数CFおよび結果(たとえば、積生成器416から)を合計して、丸められた結果を得る(ステップ1630)。最後に、丸められた結果は丸めポイントNで切り捨てられ、ただしN−1は丸め定数における下位の1の数である(ステップ1635)。丸められた結果は次いで、たとえば所望のビットのみを汎用配線に伝えることにより、切捨て可能である。
表1は、一実施例に従った4つの最下位2進ビット(すなわち、N=4)の丸め処理を例示する。レジスタ300内の丸め定数はN−1の下位の1すなわち0111を含むよう設定される。表1の第1の行において、10進数およびその2進等価物BVは正であり、訂正係数CF、乗数および被乗数のXNORは1である。2進値BV、丸め定数Kおよび訂正係数CFを加算すると、中間の丸められた値が得られる。N個の下位ビットを除くように中間の丸められた値を切捨てることにより、丸められた結果が得られる。
Figure 0004664311
積の符号を予め定めることにより、丸め処理が容易になる。上述の例は、結果として生じる積の符号を予め決定するために、乗数および被乗数の符号値のXNORを用いる。他の実施例は、2つのオペランドを連結させることにより形成される連結のような乗算に加えて、数学的計算のために符号値を予め決定するが、この場合考慮すべき符号ビットは1つだけである。そのような実施例においては、モードレジスタ310は、所与の演算に対する適切な訂正係数CFを生成するよう訂正回路1510に指示する。モードレジスタ310からのモード制御信号に応答してさまざまな形式の訂正係数を生成することが可能な訂正回路1510の実施例を、図17および図19を参照して以下に詳細に説明する。さ
らに、丸め定数は2(N-1)−1である必要はない。別の実施例においては、たとえば、丸め定数は2(N-1)であって、符号ビットは丸め定数と積との和から減算される。
複雑なDSPスライス
図17は、上述の例のさまざまな特徴を組合せる一実施例に従った複雑なDSPスライス1700を示す。これまでの図面に関して上に記載したものと同様の特徴には、同様の名称が付与され、可能な場合は、無駄のない表現のために、冗長な説明は省略する。
DSPスライス1700は、それぞれの線またはポート上の以下の入力信号および出力信号を介して、FPGA上の他のDSPスライスおよび他のリソースと通信する。
a.符号付きオペランドバスAおよびBは、汎用配線にプログラマブルに接続して、それぞれオペランドAおよびBを受取る。オペランドバスAおよびBの各々は18ビット幅であり、最上位ビットは符号を表わす。
b.符号付きオペランドバスCは、対応するCレジスタ300(図3等を参照)に直接接続し、対応するCレジスタ300は次いで、汎用配線にプログラマブルに接続してオペランドCを受取る。オペランドバスCは48ビット幅であり、最上位ビットは符号を表わす。
c.18ビット入力上流カスケードバスIUCは、図3に示す態様で上流スライスに直接接続する。
d.18ビット入力下流カスケードバスIDCは、上流スライスの入力上流カスケードバスIUCに接続する。
e.48ビット上流出力カスケードバスUOCは、上流スライスの出力ポートに直接接続する。
f.48ビット出力バスOUTは、下流スライスの上流出力カスケードバスUOCと、1対の内部フィードバックポートとに直接接続し、汎用配線にプログラマブルに接続可能である。
g.7ビット演算モードポートOMは、汎用配線にプログラマブルに接続して、スライス1700を構成するためのモード制御信号の組を受取って記憶する。
h.1ビットキャリーイン線CIは、汎用配線にプログラマブルに接続する。
i.2ビットキャリーイン選択ポートCISは、汎用配線にプログラマブルに接続する。
j.1ビット減算ポートSUBは、汎用配線にプログラマブルに接続して、加算または減算する命令を受取る。
k.DSPスライス1700内の各レジスタは、簡潔にするためにここでは省略されているが、リセット信号およびイネーブル信号をさらに受取る。
スライス1700は、スライス1700のBオペランドを選択するか、または、上流スライスのBオペランドをIUCポート上で受取る、Bオペランドマルチプレクサ1705を含む。マルチプレクサ1705は、この実施例において構成メモリセル(図示せず)により制御されるが、ダイナミックに制御されてもよい。マルチプレクサ1705の目的は
、同様のマルチプレクサ905を含む図9に関連して上で詳細に説明した。
1対の2深度入力レジスタ1710および1715は、それぞれオペランドAおよびB上の0クロックサイクル、1クロックサイクル、または2クロックサイクルの遅延を導入するように構成可能である。レジスタ1710および1715の実施例は、図20A、図20B、および図21のそれぞれに関して以下に詳細に説明する。レジスタ1710および1715の目的は、同様の構成可能レジスタ705を含む図7等に関して上で詳細に説明した。
スライス1700は、演算回路1717の積生成器1727および加算器1719をそれぞれ用いて乗算および加算を実施する。積生成器1727と加算器1719との間の多重化回路1721は、スライス1700が、モードレジスタ1723の方向において加算器1719に多数の加数を投入することを可能にする。これらの任意の加数には、オペランドC、オペランドAおよびBの連結A:B、スライス出力OUTのシフトされたバージョンおよびシフトされていないバージョン、上流出力カスケードUOCのシフトされたバージョンおよびシフトされていないバージョン、ならびに、多数のメモリセルアレイ1725の内容が含まれる。多重化回路1721への入力バスのいくつかは、48ビット未満を搬送する。これらの入力バスは、適宜、48ビットまで符号拡張されるか、またはゼロで埋められる。
1対のシフタ1726は、下位ビットを表わすバス線上の入力信号に符号拡張を与えて、空いたより高位のビットを埋めることにより、それぞれの入力信号の17ビットを右に、すなわちLSBに向けてシフトする。シフタ1726の目的は、より単純な2ビットシフトを詳細に説明する図10に関して上で論じた。いくつかの実施例は、シフタ1726の代わりに選択可能な数のビット位置をシフトすることのできるシフタを含む。積生成器1727、多重化回路1721、および加算器1719の組合せの一実施例は、図26に関して以下に詳細に説明する。
積生成器1727は、従来のものであり(たとえば、アレイ低減回路が後続するANDアレイ)、18ビットの乗数および18ビットの被乗数から2つの36ビット部分積PP1およびPP2を生じる(ここで、一方は符号付き部分積であり、他方は符号なし部分積である)。各部分積は、1クロックサイクルの間、1対の36ビットレジスタ1735およびそれぞれのプログラマブルバイパスマルチプレクサ1740を含む構成可能パイプラインレジスタ1730に任意に記憶される。マルチプレクサ1740は、構成メモリセルにより制御されるが、ダイナミックであってもよい。
加算器1719は、5個の入力ポート、すなわち、マルチプレクサ回路1721内のマルチプレクサX、Y、およびZからの3個の48ビット加数ポートと、減算ポートSUBに接続されたレジスタ1741からの1個の1ビット加算/減算線と、キャリーイン論理1750から1個の1ビットキャリーインポートCINとを有する。加算器1719は加えて、48ビットレジスタ1760および構成可能バイパスマルチプレクサ1765を含む構成可能出力レジスタ1755を介して出力ポートOUTに接続された48ビット合計ポートを含む。
キャリーイン論理1750は、キャリーイン信号CINを加算器1719に生じ、キャリーイン選択ポートCISにプログラマブルに接続されたキャリーイン選択レジスタ1770の内容によって制御される。1つのモードにおいて、キャリーイン論理1750は単に、汎用配線から加算器1719のキャリーイン端子CINにキャリーイン信号CIを運ぶ。多数の他のモードの各々において、キャリーイン論理は、キャリーイン端子CINに訂正係数CFを提供する。キャリーイン論理1750の一実施例は、図19に関して以下
に詳細に説明する。
スライス1700は、これまでの図面に関して上で論じたもののすべてを含む多くのDSP演算をサポートする。スライス1700の演算は、レジスタ1710および1715の深度、マルチプレクサ1705の選択された入力ポート、バイパスマルチプレクサ1740および1765の状態、ならびにレジスタ1725の内容を含む多数の構成可能素子を制御するメモリセル(図示せず)により規定される。スライス1700の他の素子は、FPGAを再構成することなく書込まれ得るレジスタの内容か、または、スライス1700がその一部である他の装置によって制御される。このようなダイナミックに制御される素子は、モードレジスタ1723によって制御される多重化回路1721と、モードレジスタ1723およびキャリーイン選択レジスタ1770により共同で制御されるキャリーイン論理1750を含む。他の実施例では、スライス1700のこれよりも多くのまたはこれよりも少ない構成要素を、ダイナミックに制御されるようにすることができる。ダイナミック制御ビットを記憶するレジスタを、集合的に、OpModeレジスタと称する。
以下の表2Aは、図17に示すスライス1700の実施例によってサポートされるさまざまな演算モード、または「op-mode」を列挙する。表2の列は、「OpMode」ラベルと、1つ以上のOpmodeレジスタに記憶され得るモード制御信号の、対応する7ビットの組(OpMode<6:0>)と、ダイナミック制御信号の選択された組から生じるスライス1700の出力ポートOUT上の結果とを含む。いくつかのOpModeを斜字体にして、出力マルチプレクサ1765がレジスタ1760の出力を選択するように構成されるべきであることを示す。OpModeは、2つ以上のOpmodeコードを用いて得ることができる。
Figure 0004664311
図17および図25を参照した表2Bは、OpmodeのビットがX、Y、およびZのMUX入力選択にどのようにマッピングしているかを示す。
Figure 0004664311
上述の演算モードを用いて構成される異なるスライスを組合せて、多くの複雑な「合成」演算を実施することができる。以下の表3は、異なる態様で構成されたスライスを組合せて複雑なDSP演算を実施するいくつかの合成モードを列挙する。表3の列は、以下のとおりである。すなわち、「合成モード」は、実行された関数を記載しており、「スライス」番号は、それぞれの合成モードで使用された多数の隣接するスライスのいくつかを特定し、小さな番号ほど上流スライスに対応し、「OpMode」は、設計された各スライスの演算モードを記載しており、入力「A」は、所定のOpModeに対するAオペランドであり、入力「B」は、所定のOpmodeに対するBオペランドであり、入力「C」は、所定のOpmodeに対するCオペランドである(「X」は、Cオペランドがないことを示し、RNDは、図15および図16に関して上で説明した種類の丸め定数を特定する。)
Figure 0004664311
以下の表4は、表3の合成モードと、適切な演算モード信号、すなわち「OpMode」信号およびレジスタ設定値とを相関付ける。ここで、
a.Z、Y、およびX(集合的にOpMode)は、マルチプレクサ回路1720のZ、Y、およびXマルチプレクサへのそれぞれの制御信号を表わす。
b.AおよびBは、オペランドレジスタ1710および1715それぞれの構成を指す。すなわち、「X」は、対応するオペランドレジスタが2つの連続するレジスタを含むように構成されていることを示し、それ以外の場合、レジスタは、1クロックサイクルの遅
延を提供するものと想定される。
c.Mは、レジスタ1730を指し、Xは、マルチプレクサ1730および1740がレジスタ1735の出力を選択するように構成されていることを示す。
d.OUTは、出力レジスタ1760を指し、Xは、マルチプレクサ1765がレジスタ1760の出力を選択するように構成されていることを示す。
e.「外部リソース」は、スライス1700の外部で使用されるリソースの種類を指す。
f.「出力」は、数学的結果を指し、ここでPは「積」を表わすが、積に限定されない。
g.「2d」は、スライスのBレジスタのカスケード接続が、全部で2個の遅延を生じることを示す。「3d」は、全部で3個の遅延が存在することを示す。
Figure 0004664311
図6Aおよび図6Bは、ダイナミック制御の例を示した。スライス1700は、多くのダイナミックDSP構成をサポートする。これらのダイナミックDSP構成において、スライスは、モード制御信号の連続する組を用いて、時刻t1に第1の演算モードにおいて、DSP演算の第1の部分を実行するようにスライス自体を構成し、次に、後の時刻t2に第2の演算モードにおいて、同じDSP演算の第2の部分を実行するようにスライス自体を再構成するように指示される。以下の表5は、スライス1700がサポートするいくつかのダイナミック演算モードを列挙する。ダイナミックモードは、「シーケンシャル」モードとも称される。なぜなら、これらのモードが、ダイナミックなサブモードまたはサブ構成のシーケンスを使用するためである。
表5の列は、以下のとおりである。すなわち、「シーケンシャルモード」は、実行された関数を記載しており、「スライス」番号は、それぞれのシーケンシャルモードで使用された1つ以上のスライスを特定し、小さな番号ほど上流スライスに対応し、「サイクル♯」は、所定のシーケンシャルモードで使用される多数の演算モードのシーケンス順を特定し、「OpMode」は、各サイクル♯に対する演算モードを記載しており、「OpMode<6:0>」は、各演算モードに関し、Z、Y、およびXマルチプレクサ(図17参照)への7ビットのモード制御信号を規定する。
Figure 0004664311
以下の表6は、表5のダイナミック演算モードを、適切な入力および出力に相関付ける。ここで、入力「A」は、所定のサイクル♯に対するAオペランドであり、入力「B」は、所定のサイクル♯に対するBオペランドであり、入力「C」は、所定のサイクル♯に対するCオペランドであり(「X」はCオペランドがないことを示す)、「出力」は、所定の「サイクル♯に対する、スライスによって特定される出力である。
Figure 0004664311
図18は、図17のスライス1700に関して使用されるCレジスタ300(図3)の一実施例を示す。レジスタ300は、18個の構成可能記憶素子1800を含み、これらの記憶素子1800の各々は、18個のオペランド入力線C[17:0]の1つに接続されるデータ端子Dを有する。記憶素子1800は、従来通り、それぞれリセット線およびイネーブル線に接続されたリセット端子およびイネーブル端子を含む。一実施例において、A、B、およびCレジスタは、別個のリセット端子およびイネーブル端子を有する。構成可能マルチプレクサ1805は、素子1800のクロック端子に対し、2つのクロック入力CLK0およびCLK1のいずれかを提供する。構成可能バイパスマルチプレクサ1810は、Cオペランド入力経路内の記憶素子1800の選択的な内包または除外を行なう。構成可能マルチプレクサ1805および1810は、構成メモリセル(図示せず)により制御されるが、たとえば拡張されたモードレジスタ1723により、ダイナミックに制御されてもよい。
図19は、図17のキャリーイン論理1750の一実施例を示す。キャリーイン論理1750は、関連する構成可能バイパスマルチプレクサ1910を有するキャリーインレジスタ1905を含む。これらの素子はともに、汎用配線からキャリーイン選択線CINSELを介して制御されるダイナミック出力マルチプレクサ1915に対し、記録されたか、または記録されていないキャリーイン信号を送出する。
キャリーイン論理1750は、従来通り、キャリーイン線CINを介して加算器1719(図17)にキャリーイン信号CIを送出する。キャリーイン論理1750は加えて、図15および図16に関して上に記載した態様と同様の態様で丸めをサポートするが、積の丸めに限定されない。丸めのリソースは、1対のダイナミックマルチプレクサ1920および1925、XNORゲート1930、ならびにバイパスされたレジスタ1935を含む。レジスタ1905および1935は、それぞれの線CINCE1およびCINCE
2上でそれぞれイネーブル信号を受取る。これらの丸めのリソースは、以下の関数をサポートする。
CINSEL=00:マルチプレクサ1915は、キャリーイン線CINを介して加算器1719にキャリーイン入力CIを提供する。
CINSEL=01:マルチプレクサ1915は、加算器1719にマルチプレクサ1920の出力を提供する。スライス1700が積生成器1727からの積を丸めるように構成される場合、OpModeビットOM[1]は論理ゼロである。その場合、マルチプレクサ1920は、レジスタ1935およびマルチプレクサ1915に対し、オペランドAおよびBの符号ビットのXNORを提供する。したがって、線CIN上のキャリーイン信号は、乗算/丸め関数について図15に関して上で論じた訂正係数CFとなる。
CINSEL=10:この機能性は、マルチプレクサ1920の出力がレジスタ1935から取られることを除き、CINSEL=01の場合と同じである。信号CINSELは、レジスタ1735(図17)が含まれるとき、10に設定される。
CINSEL=11:マルチプレクサ1925は、OpModeビットOM[6,5,4,1,0]を復号して、スライス1700が累算に関してそれ自体の出力OUTを丸めているのか、またはカスケード演算に関して上流スライスの出力を丸めているのかを判断する。累算は、スライス1700の出力の符号ビットOUT[47]を選択し、一方でカスケード演算は、上流出力カスケードバスUOCの符号ビットUOC[47]を選択する。マルチプレクサ1925の選択端子は、以下のようにOpModeビットを復号する。すなわち、SELP47=(OM[1]&〜OM[0])||OM[5]||〜OM[6]||OM[4]であり、ここで「&」はAND関数を示し、「||」はOR関数を示し、「〜」はNOT関数を示す。
図20Aおよび図20Bは、スライス1700の一実施例に従った2深度のオペランドレジスタ1710および1715のそれぞれを詳細に示す。レジスタ1710および1715は同一であるため、レジスタ1715の説明は省略する。示した例では2深度であるが、レジスタ1710および1712の一方または両方が、カスケード接続された追加の記憶素子を含んで、より大きな深度を提供してよい。
レジスタ1710、すなわち「A」レジスタは、カスケード接続された記憶素子2000および2005の2つの18ビット集合と、バイパスマルチプレクサ2010とを含む。マルチプレクサ2010は、適切な入力ポートを選択することにより、0、1、または2クロックサイクルだけAオペランドを遅延させるように構成され得る。マルチプレクサ2010は、この実施例において構成メモリセル(図示せず)により制御されているが、OpModeレジスタによる等、ダイナミックに制御されてもよい。図9等の上述の例において、Bレジスタは下流スライスにカスケード接続されているが、他の実施例において、Aレジスタは、同じ態様でカスケード接続され、または、Bとは反対方向にカスケード接続される。
信号処理を中断せずにオペランドを変更することが時として望ましいことがある。たとえば、処理を停止する必要なしに、信号処理構成のフィルタ係数を変更することが有益であることが考えられる。したがって、記憶素子2000および2005には、いくつかの実施例において、別個のダイナミックなイネーブル入力が与えられる。したがって、2005等の一方の記憶素子はマルチプレクサ2010を介してフィルタ係数を提供し、2000等の他方の記憶素子は新規の係数で更新される。その後、マルチプレクサ2010は、新規の係数を出力するようにサイクル間で切換えられ得る。代替的な実施例において、
レジスタ2000は、隣接するレジスタ2005にデータを転送可能にされる。他の実施例において、レジスタ2000のQ出力は、隣接するスライス内のレジスタ2000のD入力にカスケード接続され得、それにより、新規のフィルタ係数がレジスタ2000内にシフトされ得、一方でレジスタ2005は、以前のフィルタ係数を保持する。そして、新規に更新された係数は、次のクロック端上で対応するレジスタ2000からレジスタ2005が新規の係数を捕捉し得るようにすることにより、適用され得る。
図21は、図17のスライス1700の代替的な一実施例に従った2深度出力レジスタ1755′の詳細を示す。図21に示す出力レジスタ1755′は、任意の第2のレジスタ1762がレジスタ1760とマルチプレクサ1765′との間に接続されていることを除き、図17の出力レジスタ1755と同様である。加算器1719からの48ビット出力は、レジスタ1760または1762か、または両方のレジスタに記憶され得る。レジスタ1760または1762のいずれか、または両方のレジスタは、バイパスされ得、それにより、加算器1719からの48ビット出力は、OUTに直接送られ得る。レジスタ1762はOUTに対する保持レジスタとして使用され得、レジスタ1760は、加算器1719からの別の入力を受取る。
図22は、スライス1700の一実施例に従ったOpModeレジスタ1723を示す。レジスタ1723は、記憶素子2205および構成可能バイパスマルチプレクサ2210を含む。レジスタ1723の入力バスおよび出力バスは、同じ名称を有する。記憶素子2205は、OpModeバスの7本の線OM[6:0]に並列接続された7個の記憶素子を含む。OpModeレジスタ1723内のビットの数は、追加のダイナミックリソースをサポートするように拡張されてよい。
図23は、スライス1700の一実施例に従ったキャリーイン選択レジスタ1770を示す。レジスタ1770は、記憶素子2305および構成可能バイパスマルチプレクサ2310を含む。レジスタ1770の入力バスおよび出力バスは、同じ名称を有する。記憶素子2305は、キャリーイン選択バスの2本のキャリーイン選択線CIS[1:0]に並列接続された2つの記憶素子を含む。レジスタ1770内のビットの数は、追加の演算をサポートするように拡張されてよい。
図24は、スライス1700の一実施例に従った減算レジスタ1741を示す。レジスタ1741は、記憶素子2405および構成可能バイパスマルチプレクサ2410を含む。レジスタ1741の入力バスおよび出力バスは、同じ名称を有する。記憶素子2405は、減算線SUBに接続する。一実施例において、減算レジスタ1741およびキャリーイン選択レジスタ1770は、1つのイネーブル端子CINCE1を共有する。
多重化された加数入力端子を有する演算回路
図25は、一実施例に従った演算回路2600を示す。やはり、演算回路2600は、図17のスライス1700内の積生成器1727、レジスタバンク1730、多重化回路1721、および加算器1719を含む演算回路1717と同様であるが、例示を簡単にするために単純化されている。また、適用可能な場合、例示を簡単にするため、図17と同じ標識番号が図25で使用される。
演算回路2600の多重化回路は、2つの低位OpModeビットOM[1:0]によりダイナミックに制御されるXマルチプレクサ2605と、2つの中位OpModeビットOM[3:2]によりダイナミックに制御されるYマルチプレクサ2610と、3個の高位OpModeビットOM[6:4]によりダイナミックに制御されるZマルチプレクサ2615とを含む。したがって、OpModeビットOM[6:0]は、さまざまな入力ポートのうちのどれが加算器1719にデータを与えるかを判断する。マルチプレクサ2605、2610、およ
び2615の各々は、積生成器1727以外のソースから加数を受取って集合的に「PGバイパスポート」と称される入力ポートを含む。この例において、PGバイパスポートは、OUTポート、したがってOUT[0:48]に接続され、このOUT[0:48]は、オペランドAおよびB A:B[0:35]、Cオペランドの上流出力カスケードバスUOC、および論理ゼロを表わす電圧レベルに保持された端子のさまざまな集合の連結である。他の実施例は、図25のポートと同じ機能性または異なる機能性を提供する、より多くのまたはより少ないPGバイパスポートを使用してよい。
Xマルチプレクサ2605、Yマルチプレクサ2610、およびキャリーイン信号CINの出力の和がマルチプレクサ2615からのZ入力から減算されるべき場合、減算信号SUBがアサートされる。その結果は以下のとおりである。
結果=[Z−(X+Y+Cin)] (8)
以下の図36に関してさらに説明するように、加算器1719内の全加算器は、公知の恒等式を用いて以下の減算を実行する。
Figure 0004664311
方程式9は、Z(1の補数)を反転させて、それを(X+Y+Cin)の和に加えてから、その結果を反転させる(1の補数)ことにより減算が行なわれ得ることを示す。
図26は、図25の積生成器(PG)1727の拡大図である。PG1727は、2つの18ビット入力QA[0:17]およびQB[0:17](図17)を受取る。QA[0:17]およびQB[0:17]は、変形ブースエンコーダ/マルチプレクサ(Modified Booth Encoder/Mux)2620を介して冗長4進形式に符号化されて、9個の減算ビットS[0:8]、すなわち、s0からs8と、[9×18]の部分積アレイP[0:8,0:18](図29参照)を生じる。減算ビットおよび部分積は、カウンタ2630および圧縮プログラム2640を含むアレイ低減2530に入力される。カウンタ2630は、減算ビットおよび部分積の入力を受取り、圧縮プログラム2640に出力値を送り、圧縮プログラム2640は、2個の36ビット部分積の出力PP2およびPP1を生じる。
2種類のカウンタ、すなわち、(11,4)カウンタおよび(7,3)カウンタが存在する。これらのカウンタは、入力ビット内の1の数をカウントする。したがって、(11,4)カウンタは、最大11個の論理1を含む11個の1ビット入力を有し、1の数は、4ビット出力(0000から1011)により示される。同様に、(7,3)カウンタは、最大7個の1を有し得る7個の1ビット入力を有し、1の数は、3ビット出力(000から111)により示される。
2種類の圧縮プログラム、すなわち、(4,2)圧縮プログラムおよび(3,2)圧縮プログラムが存在し、ここで各圧縮プログラムは、1つ以上の加数を有する。(4,2)圧縮プログラムは5個の入力、すなわち、4個の外部入力および1個のキャリービット入力(Cin)を有し、3個の出力、すなわち、1個の合計ビット(S)および2個のキャリービット(CおよびCout)を有する。出力ビットS、C、およびCoutは、5個の入力ビット、すなわち、4個の外部ビット+Cinの和を表わす。(3,2)は4個の入力、すなわち、3個の外部入力および1個のキャリービット入力(Cin)を有し、3個の出力、すなわち、1個の合計ビット(S)および2個のキャリービット(CおよびC
out)を有する。出力ビットS、C、およびCoutは、4個の入力ビット、すなわち、3個の外部ビット+Cinの和を表わす。
部分積PP2およびPP1は、36ビットバス2642および2644を介して圧縮プログラム2640からレジスタバンク1730に転送される。図17、図25、および図26を参照すると、PP2およびPP1は、マルチプレクサ回路1721内のYマルチプレクサ2610(YMUX)およびXマルチプレクサ2605(XMUX)を介して加算器1719に向かい、ここでPP1およびPP2は、共に加算されて、レジスタバンク1755に記憶される48ビットバス上に36ビット積を生じる。
例示的な実施例において、図26の変形ブースエンコーダ/マルチプレクサ2520は、2個の18ビット入力、すなわち、QA[0:17]およびQB[0:17]を受取り、アレイ低減2530に送られる部分積アレイを生じる。9個の19ビット部分積P[0:8,0:18]、および9個の減算ビットs0〜s8(以下に示す図29参照)が存在する。
ブースエンコーダは、乗数を、2を基数とする形式から4を基数とする形式に変換する。これにより、部分積の数は2分の1に、たとえばこの例では、18個の部分積から9個の部分積に減る。例示のため、X=xm-1,xm-2,…,x0が2進のmビットの数であると考えられたい。ここでmは正の偶数である。そこで、mビットの乗数は、以下のように2の補数形式で記述され得る。
Figure 0004664311
ここでxi=0,1。
4を基数とするXの等価表現は、以下により求められる。
Figure 0004664311
ここでx-1=0であり、diは、{−2,−1,0,1,2}の組からの値を有し得る。
Figure 0004664311
被乗数がn個のビットを有する場合、XYの積は以下により求められる。Piは、diの値に応じてシフトされたおよび/または否定された値Xを表わす。m/2個の部分積Piが存在し、ここでは、各部分積が少なくともnビットを有する。m=n=18(入力X=
QA[0:17]およびY=QB[0:17])である図26の場合、9個の部分積、たとえば、P0からP8が存在し、各部分積はn+1または19個のビットを有する。
例示のため、乗数をXとする。ここでX=QA[0:17]である。Yを被乗数とする。ここでY=QB[0:17]である。変形ブースアルゴリズムの特性は、diを求めるのに3個のビットのみが必要とされることである。Xの18ビットは、x2i+1、x2i、およびx2i-1により求められ、ここでi=0,1,…8である。x-1=0と規定する。各iに対し、3個のビットx2i+1、x2i、およびx2i-1を使用して、以下の表7を用いることにより、Diを求める。
Figure 0004664311
図27は、表7によって表わされる変形ブースエンコーダの概略図である。入力は、ビットx2i+1、x2i、およびx2i-1であるか、または、たとえばx2i-1_bが反転されたx2i-1であるように、「_b」で表わされる、それらの反転された値である。図27は、NAND2714に接続されたNAND2712を示し、NAND2714は次いで、出力A_b(すなわち、反転されたA)を生じるインバータ2716に接続される。NAND2718は、NAND2720に接続され、NAND2720は次いで、出力S_b(すなわち、反転されたS)を生じるインバータ2722に接続される。XNOR2724は、出力X2_b(すなわち、反転されたX2)を生じるインバータ2726に接続される。
図28は、部分積Pik、すなわちP[0:8,0:18]を生じるブースマルチプレクサの概略図である。乗数Xが一旦符号化されると、符号化された乗数(たとえばd0からd8)が次に、被乗数Yにより乗算される。diが組{−2,−1,0,1,2}内の値を有するため、diYの非ゼロ値は、左シフト(すなわち、di={−2,2}に対し、ビットkにおいてyk-1を選択すること)、および被乗数Yの否定(すなわち、di={−2,−1}に対し)の組合せにより計算され得る。マルチプレクサ2812および2814は、yk-1およびyk、ならびにyk-1およびykのインバース(すなわち、yk-1_bおよびyk_b)を受取る差動マルチプレクサである。2本の選択線SEL0およびSEL1は、マルチプレクサ2816内において互いに対して反転された値を有する。マルチプレクサ2816の出力は、インバータ2818を介して反転され、インバータ2818は、部分積Pikを生じる。加えて、反転された減算ビットs0_bからs8_bが各iに対して生成される。
図29は、ブースエンコーダ/マルチプレクサ2620から生じた部分積のアレイを示す。ヘッダの行2930は、変形ブースエンコーダ/マルチプレクサ2620により出力された36個の重みを示す。ヘッダの列2920は、9本の行を示し、これらの行は、ブースエンコーダ/マルチプレクサ2620により出力された部分積を含む。たとえばp0
は、Pikを表わし、ここでi=0およびk=0,1,…,18である。p0に対する減算ビットは、s0により求められる。図29に示すアレイは、当業者にとって周知である。部分積が2の補数形式であるため、部分積の和についての正しい値を得るために、各部分積は、符号拡張を必要とする。しかしながら、符号拡張は、2つの数を乗算するのに必要とされる回路を増加させる。最上位ビットを反転させること、たとえばビット18におけるp0がp0_bになること、および、18番目のビットにおいて開始する定数10101010…101011を加算すること、すなわち、ビット18に1を加算して各部分積の右に1を加算することによる、各部分積への変更は、必要とされる回路を減らす(さらなる説明は、1997年9月8〜10日付、ベルギー(Belgium)におけるPATMOST’97第7回国際ワークショッププログラム(Seventh International Workshop Program)で提示された、ラファエル・フライド(Rafael Fried)による「高性能並列乗算器における消費電力削減および高速化のためのアルゴリズム(Algorithms for Power Consumption Reduction and Speed Enhancement in High-Performance Parallel Multipliers)」という掲載論文に提示されている。図30は、サブアレイ3012において、変形された部分積のアレイを示す。
図30は、4段における部分積のアレイ低減を示す。段1は、サブアレイ3012であり、アレイ低減ブロック2530(図26)によりブースエンコード/マルチプレクサ2620(図26)から受取られて変形された部分積アレイを提示する。カウンタブロック2630において、(11,4)カウンタ3024は、ビット列14〜21に適用され、(7,3)カウンタ3022は、ビット列6〜13および22〜28に適用され、全加算器3020は、ビット列2、4〜5および29〜31に適用される。カウンタおよび全加算器の結果は、段2(サブアレイ3014)に送られ、その後、段3(サブアレイ3016)に送られる。段2および段3は、圧縮プログラムのブロック2640において行なわれる。圧縮プログラムのブロック2640において、(4,2)圧縮プログラム3028は、ビット列12および17〜24に適用され、(3,2)圧縮プログラム3026は、ビット列13〜16および25〜29に適用され、全加算器3020は、ビット列3〜11および30〜33に適用される。段2および段3の結果は、段4(サブアレイ3018)において示され、36ビットの部分積PP1および36ビットの部分積PP2であり、これらはレジスタバンク1730(図26)に送られる。
図31、図32、および図33A〜図33Eを参照して、図26のカウンタブロック2630の(11,4)カウンタおよび(7,3)カウンタと、図30の(11,4)カウンタおよび(7,3)カウンタとを、以下により詳細に説明する。
図31は、(11,4)カウンタ3024および(7,3)カウンタ3022のブロック図を示す。(11,4)カウンタおよび(7,3)カウンタはそれぞれ、それらの11ビット(すなわちX1〜X11)入力および7ビット(すなわちX1〜X7)入力内の1の数をカウントし、入力ビット内における1の数の4ビット(S1〜S4)出力または3ビット(S1〜S3)出力を与える。一実施例において、(11,4)カウンタは、(15,4)カウンタを用いて形成される。(15,4)カウンタおよび(7,3)カウンタの性能を高めるために、一実施例では、対称関数が使用される。
対称関数は、1度にk個取られるn個の変数の組合せに基づく。たとえば、CATにおける3個の文字の場合(n=3)、2個の文字からなる3個のグループ(k=2)、すなわちCA、CT、およびATが存在する。順序が問題とならないことに注意されたい。対称関数の2つの種類、すなわち、XOR対称関数{n,k}およびOR対称関数[n,k]が規定される。n個のブール(Boolean)変数、すなわちX1,X2,…,Xnの場合、XOR対称関数{n,k}は、積のXORを取ることであり、ここで各積は、ともにANDにされたn個の変数のうちのk個からなり、これらの積は、n個からk個の変数を選
択する、相違する全態様を含む。OR対称関数[n,k]は、積のORを取ることであり、ここで各積は、ともにANDにされたn個の変数のうちのk個からなり、これらの積は、n個からk個の変数を選択する、相違する全態様を含む。カウンタの結果ビットに対するXOR対称関数およびOR対称関数の例、すなわち(3,2)カウンタのS1およびS2は以下の通りである。
Figure 0004664311
(7,3)カウンタに対する対称関数は、以下の通りである(ここで、上付き文字cは、1の補数、すなわちビットが反転されたことを意味する)。
Figure 0004664311
(15,4)カウンタに対する対称関数は、以下の通りである。
Figure 0004664311
(7,3)および(15,4)の対称関数を実現するために、分割統治法が使用される。この方法は、初等対数関数に対するチュー(Chu)の恒等式に基づく。
Figure 0004664311
チューの恒等式は、大きな組合せ関数が、より小さな関数の積の和に分割されることを可能にする。一例として、4個のブール変数X1、X2、X3、およびX4を考えられたい。[4,2]を計算するために、2つのグループの変数、たとえばグループ0=(X1,X2)およびグループ1=(X3,X4)が1度に1個取られ、これらの2つのグループの変数は次に、1度に2個取られる。
Figure 0004664311
したがって、r=s=2およびn=2であり、上述のチューの恒等式を使用すると、以下のようになる。
Figure 0004664311
図32は、(7,3)カウンタの平面図の一例を示す。2の4個のグループ(3110、3112、3114、および3116)が存在し、それらの各々は、1度に2個および1個取られたX1〜X8(ここでX8=0)の2個の入力を表わす。次に、4の2個のグループ(3120,3122)が存在し、それらの各々は、2のグループの各対からの4個の入力を表わす。最終ブロック3130は、4の2個のグループ(3120および3122)を組合せて、和S3およびS2を生じる。
(7,3)カウンタへの8個の入力はまず、各々が2個の要素の4個のグループ、すなわち(X1,X2)、(X3,X4)、(X5,X6)、および(X7,X8)にグループ化され、ここでX8=0である。図32において上付き文字の0で表示される第1のグループの(X1,X2)に関し、以下のようになる。
Figure 0004664311
図32において上付き文字の1で表示される第2のグループの(X3,X4)に関し、以下のようになる。
Figure 0004664311
(X5,X6)および(X7,X8)についても同様の方程式が存在する。次に、2の4個のグループの最初の2個のグループが、4の第1のグループに入力される(上付き文字0)。2の4個のグループの第2の2個のグループが、4の第2のグループに入力される(上付き文字1)。4の第2のグループの計算が4の第1のグループと同様であるため、4の第1のグループのみを以下に提示する。
Figure 0004664311
次に、4の2個のグループは、組合されて最終カウントを生じる。
Figure 0004664311
X8=0および[4,4]1=0であるため、以下のようになる。
Figure 0004664311
(15,4)カウンタに対する対称関数は、2つの部分に分割される。2つの最上位ビット(MSB)、たとえばS3およびS4は、OR対称関数(AND−ORおよびNAND−NAND論理)を用いて計算され、2つの最下位ビット(LSB)、たとえばS1およびS2は、XOR対称関数を用いて計算される。
図33Aは、(15,4)カウンタに対する平面図を示す。16個の入力ビット(X1〜X16、ここでX16=0)が存在する。MSBは、1つおきの行3320、3322、3324、および3326を用いて計算される。LSBは、1つおきの行3312、3314、3316、および3318を用いて計算される。行3312および3320は、2のグループであり、行3314および3322は、4のグループであり、行3316および3324は、8のグループであり、行3318および3326は、和を生じる最終グループである。MSBに関し、2および4のグループは、(7,3)カウンタと同様に構築され、その説明は繰返さない。8のグループは以下の通りである。
Figure 0004664311
MSBに対する最終的な和S3およびS4は以下の通りである。
Figure 0004664311
図26の圧縮プログラムのブロック2640および図30の段2〜4(サブアレイ3014、3016、および3018)のより詳細な説明を、次に図34、図35A、および図35Bを参照して行なう。
図34は、[4,2]圧縮プログラムの概略図である。[4,2]圧縮プログラムは、5個の入力、すなわちX1〜X4およびCINを受取り、合計(S)および2個のキャリー(CおよびCOUT)出力を用いて、これらの入力内の1の表現を生じる。CINおよびCOUTは通常、隣接する[4,2]圧縮プログラムに接続される。[4,2]圧縮プログラム3410は、2個の[3,2]カウンタ、すなわち、全加算器3420および3422で構成される。第1の全加算器3420は、入力X2、X3、およびX4を受取り、中間出力3432およびCOUTを生じる。第2の全加算器3422は、入力X1、中間出力3432、およびCINを受取り、合計(S)およびキャリー(C)を生じる。
再び図30を参照すると、[4,2]圧縮プログラム3028は、5個の入力(X1〜X4およびCIN)を受取り、3個の出力(S、C、COUT)を生じることができる。同様に、図30からの[3,2]圧縮プログラム3026は、4個の入力(X1〜X3およびCIN)を受取り、3個の出力(S、C、COUT)を生じることができる。図34のブロック3412は、図30の段2(サブアレイ3014)に対応する。ブロック3412は、4個の入力X1〜X4(図30ではサブアレイ3014内のビット列内にある4個の要素として図示)を有し、第1の中間出力3430、第2の中間出力3432、およびCOUTを生じる。これらの2つの中間出力およびCINは、図34のブロック3414に入力される。ブロック3414は、図30の段3(サブアレイ3016)に対応する。2つの中間出力3430および3432ならびにCINは、全加算器3422を介して加算されて、ブロック3414から合計(S)ビットおよびキャリー(C)ビットを生じる。[3,2]圧縮プログラムに関し、ブロック3412は、入力X4が省略された状態で入力X1〜X3を有する。ブロック3414は、[3,2]圧縮プログラムに関して同じままである。ブロック3414により生じたSおよびCのビットを、図30の段4(サブアレイ3018)に示す。
図35Aは、図30の4本の列3030を示し、段1のカウンタのいくつかの出力が段2および段3の圧縮プログラムのいくつかにどのようにマッピングするかを示す。図30
のサブアレイ3012およびビット列16〜19(3030により表示)からの入力を有する4個の[11,4]カウンタ3520、3522、3524、および3526が存在する。図35Aはまた、図30のサブアレイ3014およびビット列16〜19からの入力を有する4個の圧縮プログラム3540、3542、3544、および3546を示す。ビット19および[4,2]圧縮プログラム3544に注目すると、圧縮プログラム3544は入力として、[11,4]カウンタ3520からS4と、[11,4]カウンタ3522からS3と、[11,4]カウンタ3524からS2と、[11,4]カウンタ3526からS1とを受取る。
図35Bは、図35Aのビット19の[4,2]圧縮プログラムに注目する概略図である。それぞれカウンタ3520(ビット16)、3522(ビット17)、3524(ビット18)、および3526(ビット19)からS4 3560、S3 3562、S2
3564、およびS1 3566が圧縮プログラム3544内に入力として選択される理由は、カウンタの入力重みをアライメントするためであり、それにより、これらの重みは正しく共に加算され得る。たとえば、ビット18からのS2は、ビット19からのS1と同じ重みを有する。これらの4個のビット3560、3562、3564、および3566は、圧縮プログラム3542からのキャリービットCIN3570と共に圧縮プログラム3544内でともに加算され、その総和が合計ビットS3580、キャリービットC3582、および別のキャリービットCOUT3584として出力され、この別のキャリービットCOUT3584は、圧縮プログラム3546に送られる。4個の点線のボックス3012、3014、3016、および3018は、図30内の4個のサブアレイを表わす。段1内の入力は、点線の円3558内に示され、図30のサブアレイ3012内のビット列18内にある要素に対応する。入力3560、3562、3564、および3566は、サブアレイ3014内のビット例19内にある要素s13、s12、s11、およびs10に対応する。入力CIN3570、3572、および3574は、サブアレイ3016内のビット列19内にある要素s20、s30、およびs31に対応する。出力S3580およびC3582は、サブアレイ3018内のそれぞれビット列19および20内にある要素s31およびs30に対応する。
図25を参照すると、PP1 2642およびPP2 2644がレジスタバンク1730に記憶された後に、PP2(符号付きのかつ符号拡張された数)がYマルチプレクサ2610を介して加算器1719に送られ、PP1(符号なしであり、0で埋められた数)がXマルチプレクサ2605を介して加算器1719に送られて、共に加算される。ゼロは、Zマルチプレクサ2615を介して加算器1719に送られる。この発明の一実施例において、Z2615、Y2610、およびX2605のマルチプレクサの出力は反転される。図36は、図25の加算器1719の拡大図の概略図である。Z_b[0:47]、Y_b[0:47]、およびX_b[0:47]の入力は、複数の1ビット全加算器3610に送られる。各全加算器3610への減算(SUB)入力は、減算Z−(X+Y)が行なわれるべきかどうかを示す。1ビット全加算器3610の出力は、合計ビットS[0:47]およびキャリービットC[0:47]であり、これらは、キャリールックアヘッド加算器(CLA)3620内に入力される。48ビットの総和の結果が次に、レジスタバンク1755に記憶される。
減算の際に、1ビット全加算器3610は、Zを反転させること、すなわちZCにより減算のためのSおよびCを生じる方程式ZC+(X+Y)を実行する。減算の結果を生じるため、CLA3620の出力は、レジスタバンク1755に記憶される前にXORゲート3622内で反転される。
図37は、図36の1ビット全加算器3610の概略図である。インバータ3710、3712、3714、3716、および3730は、1ビット入力X_b、Y_b、SU
B、およびZ_bを反転する。インバータ3742の後にキャリービット(C)を生じる差動マルチプレクサ3740とともに、差動XORゲート3726および3728が存在する。ブロック3720内の2つの差動XORゲート3722および3724は、減算が行なわれる場合に、Zを反転する。XOR3744は、XOR3726および3728の出力と、インバータ3732および3734を介してブロック3720の出力とを受取り、インバータ3746の後に1ビットの合計Sを生じる。
一実施例におけるキャリールックアヘッド加算器(CLA)3620は、図36内の全加算器3610から合計ビットS[0:47]およびキャリービットC[0:47]を受取り、それらを共に加算して、48ビットの合計を生じる。この48ビットの合計は、レジスタバンク1755に記憶されるべき乗算の積を表わす。
キャリールックアヘッド加算器は、加算前にキャリーを予め計算するキャリー伝播加算器の一形態である。CLAが入力、たとえばa(n)およびb(n)を有すると考えた場合、このCLAは、生成(G)信号および伝播(P)信号を使用して、キャリーアウトが生じるか否かを判断する。Gがハイであるとき、次のビットに対するキャリーインはハイである。Gがローであるとき、次のビットに対するキャリーインは、Pがハイであるか否かに部分的に依存する。上述の関係は、1ビットキャリールックアヘッド加算器に対する方程式を見ることにより、容易に認識可能である。
Figure 0004664311
ここでnは、n番目のビットである。
一般に、従来の高速キャリールックアヘッド加算器に関し、生成関数が以下により提示される。
Figure 0004664311
従来のCLAの効率を高めるために、生成関数を以下のように分解する。
Figure 0004664311
ここでaiおよびbiは、2つの48ビット加算器の入力の各々の「i番目」のビットである。
Gに対する他の分解は以下の通りである。
Figure 0004664311
n=4およびm=2に対する新規の生成関数G4:0の一例は以下の通りである。
Figure 0004664311
Gの新規の分解を用いて、G信号に類似したK信号およびP信号に類似したQ信号を次に規定する。GおよびPの関数とKおよびQの関数との間の対応関係を、以下の表8および表9に提示する。
Figure 0004664311
K信号は、以下の方程式によりG信号に関連付けられる。
Figure 0004664311
n−1>i>k>m>k′>m′>0と想定されたい。ここでn、i、k、m、k′、およびm′は正の数である。すると以下のようになる。
Figure 0004664311
Q信号は、以下の方程式によりP信号に関連付けられる。
Figure 0004664311
図38は、4ビット毎のKの生成についての構造である。QおよびDに関して同様の構造が存在する。3種類のK段4130(2入力)、4140(3入力)、および4150(4入力)が存在する。通過段4142が存在する。領域4112は、構造4110内への入力0〜43を示す(入力44〜47は必要とされない)。Kを計算するために、4つのレベルのツリー4120(基数2)、4122(基数4)、4124(基数3)、および4126(基数2)が存在する。
図39は、K(およびQ)段の各種類に関連する論理関数を示す。K、Q段4130は、ブロック4154に示される論理関数を有する。K、Q段4140は、ブロック4156に示す論理関数を有する。K、Q段4150は、ブロック4158に示す論理関数を有する。
48ビットCLA3620に対する最終的な和は、以下により求められる。
Figure 0004664311
Figure 0004664311
図40は、CLAにおいて、2個の4ビットの数の加算からのキャリーアウトが次段に送られないことを示す。たとえば、S[4:7]およびC[4:7]の加算のキャリーアウトは、S[8:11]およびC[8:11]を加算する段にキャリーインとして送られない。
いくつかの実施例で使用するための、図36〜40に示すCLAおよび全加算器を含む
加算器の設計と、図31〜図35Bに示すものを含むカウンタおよび圧縮プログラムの設計とは、カリフォルニア州(California)、レッドウッド市(Redwood City)のアリスマティカ社(Arithmatica Inc.)から入手可能である。以下の文書、すなわち、UK特許公開GB2,373,883、UK特許公開GB2383435、UK特許公開GB2365636、US特許出願公開番号第2002/0138538号、およびUS特許出願公開番号第2003/0140077号は、アリスマティカ社から入手可能な加算器/減算器、カウンタ、圧縮プログラム、および乗算器回路のいくつかの局面を詳細に説明する。
図41は、この明細書に開示するDSPスライスおよびタイルが調整されてより複雑なフィルタ組織を形成することが容易であることを示すために、パイプライン化された8タップのFIRフィルタ4100を示す。フィルタ4100は、図12Aのフィルタ1200に類似した1対の4タップFIRフィルタ1200Aおよび1200Bを含む。さらに別のDSPタイル4110は、フィルタ1200Aおよび1200Bの出力を組合せて、フィルタリングされた出力Y7(N−6)を提供する。4個のさらに別のレジスタ3005がDSPタイルの外部から、たとえば付近の構成可能論理ブロックから含まれる。フィルタ1200Aおよび1220Bとタイル4110との間の接続Y3A(N−4)およびY3B(N−4)は、汎用配線を介して形成される。
この発明を特定の実施例に関して説明してきたが、当業者にはこれらの実施例の変更例が明らかであろう。したがって、前掲の請求項の精神および範囲は、上述の説明に限定されるべきではない。
一般的な種類のPLDである、フィールドプログラマブルゲートアレイ(FPGA)100のブロック図(先行技術)である。 汎用論理およびリソースを自由化する態様でDSP機能をサポートするよう適合されるFPGAを示す図(先行技術)である。 この発明の実施例のFPGAの簡略化された概略図である。 さまざまなサイズおよび複雑性の複雑なDSP回路を生成するためのDSPリソースのカスケード接続をサポートする実施例に従ったFPGAを示す図である。 図2AのDSPタイルスイッチの拡大図のブロック図である。 図2のFPGAの一実施例に従った1対のDSPタイルを詳細に示す図である。 この発明の別の実施例のDSPタイルのブロック図である。 この発明の一実施例の図3AのDSP素子またはDSPスライスの概略図である。 この発明の別の実施例の図3AのDSPスライスの概略図である。 この発明のさらに別の実施例のDSPタイルのブロック図である。 実質的に同一の構造を有するこの発明の実施例の2つのDSP素子を示す図である。 この発明のさらに別の実施例に従った複数のDSP素子を示す図である。 一実施例に従ったFPGAの一部の簡略化されたブロック図である。 一実施例に従った、転置された、4タップの、有限インパルス応答(FIR)フィルタを実現するよう適合された図4のFPGAを示す図である。 図5AのFIRフィルタの機能を示す表である。 18ビットの4タップのFIRフィルタを実現するよう適合された従来のDSP素子のブロック図(先行技術)である。 図5Cの2つのDSP素子からなる、18ビットの8タップのFIRフィルタのブロック図(先行技術)である。 複雑な数学的機能を実現するようにどのようにFPGAがダイナミックに制御され得るかを示す図である。 複雑な数学的機能を実現するようにどのようにFPGAがダイナミックに制御され得るかを示す図である。 別の実施例に従ったFPGAを示す図である。 複素数のためのパイプライン化乗算器を実現するよう構成された図7のFPGAを示す図である。 別の実施例に従って適合されたDSPリソースを備えたFPGAを示す図である。 3ビットの符号付きオペランドを受けるDSPリソースの例を示す図である。 別の実施例に従ったDSPリソースを示す図である。 パイプライン化された4タップのFIRフィルタを実現するよう構成される4つのDSPスライスを示す図である。 図12AのFIRフィルタの機能を示す表である。 シストリックな4タップのFIRフィルタを実現するためにモードレジスタ内の適切なモード制御信号を用いて構成された2つのDSPタイルDSPT0およびDSPT1(4つのDSPスライス)を示す図である。 図13AのFIRフィルタの機能を示す表である。 積生成器を迂回する連結バスA:Bを含むよう修正されたDSPスライスを有するFPGAを示す図である。 丸め処理を容易にする実施例に従ったDSPスライスを示す図である。 最下位Nビットを切捨てるための図15のスライスを用いる実施例に従った丸め処理を説明するフローチャートである。 上述の例のさまざまな特徴を組合せた実施例に従った複雑なDSPスライスを示す図である。 図17のスライスに関連して用いられるCレジスタ(図3)の実施例を示す図である。 図17のキャリーイン論理の実施例を示す図である。 図17のスライスの一実施例に従った2深度のオペランドレジスタを詳細に示す図である。 図17のスライスの一実施例に従った2深度のオペランドレジスタを詳細に示す図である。 図17のスライスの代替的な実施例に従った2深度の出力レジスタを詳細に示す図である。 スライスの一実施例に従ったOpModeレジスタを詳細に示す図である。 スライスの一実施例に従ったキャリーイン選択レジスタを示す図である。 スライスの一実施例に従った減算レジスタを示す図である。 一実施例に従った算術回路nを示す図である。 図25の積生成器(PG)の拡大図である。 修正されたブース符号器の概略図である。 部分積を生成するブースマルチプレクサの概略図である。 ブース符号器/マルチプレクサから生成される部分積アレイを示す図である。 段階的な部分積のアレイ低減を示す図である。 (11,4)カウンタおよび(7,3)カウンタのブラックボックス表現を示す図である。 (7,3)カウンタの平面図の例を示す図である。 (15,4)カウンタの平面図である。 LSBに対する回路図である。 LSBに対する回路図である。 LSBに対する回路図である。 LSBに対する回路図である。 (4,2)圧縮プログラムの概略図である。 図30の4つの列を示し、段1のカウンタのいくつかの出力がどのように段2および3の圧縮プログラムのいくつかにマッピングされるかを示す図である。 図35Aのビット19の[4,2]圧縮プログラムに焦点を絞った概略図である。 図25の加算器の拡大図の概略図である。 図36の1ビット全加算器の概略図である。 4ビット毎にKを生成するための構造を示す図である。 K(およびQ)段の各タイプに関連の論理機能を示す図である。 図36のCLAの例の拡大図である。 ここで開示されるDSPスライスおよびタイルが調整されてより複雑なフィルタ機構を形成する容易さを例示するために、パイプライン化された8タップのFIRフィルタを示す図である。

Claims (15)

  1. 集積回路であって、
    第1のデジタル信号処理(DSP)素子と第2のDSP素子とを含む複数のDSP素子を含み、各DSP素子は実質的に同一の構造を有し、各DSP素子は、スイッチに接続されるハードワイヤード乗算器を含み、前記スイッチはハードワイヤード加算器に接続され、前記スイッチはレジスタを用いるよう構成され、前記集積回路はさらに、
    前記第1のDSP素子を前記第2のDSP素子に接続する専用信号線を含む、集積回路。
  2. 前記スイッチは、前記ハードワイヤード加算器への入力を選択する1つ以上のマルチプレクサを含む、請求項1に記載の集積回路。
  3. 前記レジスタはopmodeを格納する、請求項2に記載の集積回路。
  4. 前記第1のDSP素子の第1のスイッチは第1のopmodeによって構成され、前記第1のDSP素子の第2のスイッチは第2のopmodeによって構成される、請求項3に記載の集積回路。
  5. 複数の構成可能機能ブロックと、
    前記複数の構成可能機能ブロックのいくつかを接続するプログラマブル配線リソースとをさらに含む、請求項1に記載の集積回路。
  6. 前記第1のDSP素子はさらに、前記プログラマブル配線リソースと前記専用信号線とに接続される出力ポートを含む、請求項5に記載の集積回路。
  7. 前記第1のDSP素子はフィードバックポートをさらに含み、前記フィードバックポートは前記第1のDSP素子の前記出力ポートに接続される、請求項6に記載の集積回路。
  8. 前記第1のDSP素子は、入力データレートでデータを受けるための入力データポートを含み、
    前記第1のDSP素子の前記ハードワイヤード乗算器入力ポートに結合され、
    前記第1のDSP素子のレジスタ前記入力データレートの大きさのオーダ内で異なった経路を構成可能であり、
    前記第2のDSP素子の前記ハードワイヤード加算器は、前記第1のDSP素子の前記ハードワイヤード加算器に結合される、請求項1に記載の集積回路。
  9. 前記第1のDSP素子は、前記第1のDSP素子の前記ハードワイヤード加算器と前記第1のDSP素子の前記スイッチとに結合される出力ポートをさらに含む、請求項8に記載の集積回路。
  10. 前記第1のDSP素子は、前記第1のDSP素子の前記入力データポートと前記第1のDSP素子の前記ハードワイヤード乗算器との間に結合されるプログラマブルルーティング論理をさらに含む、請求項8に記載の集積回路。
  11. 記プログラマブルルーティング論理は、前記第1のDSP素子の前記入力データポートを前記第1のDSP素子の前記スイッチに直接接続する、請求項10に記載の集積回路。
  12. 前記集積回路はプログラマブル論理装置(PLD)である、請求項8に記載の集積回路。
  13. 前記複数のDSP素子の各DSP素子は、多重化回路を含み、前記多重化回路は、
    第1のマルチプレクサ入力と、
    第2のマルチプレクサ入力と、
    マルチプレクサ出力と、
    選択入力とを有し
    前記ハードワイヤード加算器は、前記マルチプレクサ出力に接続される第1の加数入力と第2の加数入力とを有
    前記レジスタは、複数のコマンドを有し、前記選択入力に接続さ、前記コマンドは、前記第1のマルチプレクサ入力または前記第2のマルチプレクサ入力のいずれかを前記マルチプレクサ出力に接続するためのものであり、
    前記複数の接続されたDSP素子の前記第1のDSP素子は、前記複数の接続されたDSP素子前記第2のDSP素子に接続される、請求項1に記載の集積回路。
  14. 各DSP素子の前記ハードワイヤード乗算器は、前記第1のマルチプレクサ入力に接続され、請求項13に記載の集積回路。
  15. DSP素子は、前記ハードワイヤード乗算および前記第2のマルチプレクサ入力に接続される前記DSP素子への入力をさらに含む、請求項14に記載の集積回路。
JP2006547306A 2003-12-29 2004-12-21 カスケード接続するdspスライスを備えた集積回路 Active JP4664311B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US53315303P 2003-12-29 2003-12-29
US53318103P 2003-12-29 2003-12-29
US53328003P 2003-12-29 2003-12-29
PCT/US2004/043113 WO2005066832A2 (en) 2003-12-29 2004-12-21 Integrated circuit with cascading dsp slices

Publications (3)

Publication Number Publication Date
JP2007522699A JP2007522699A (ja) 2007-08-09
JP2007522699A5 JP2007522699A5 (ja) 2008-02-14
JP4664311B2 true JP4664311B2 (ja) 2011-04-06

Family

ID=34753688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547306A Active JP4664311B2 (ja) 2003-12-29 2004-12-21 カスケード接続するdspスライスを備えた集積回路

Country Status (4)

Country Link
EP (2) EP1700231B1 (ja)
JP (1) JP4664311B2 (ja)
CA (1) CA2548327C (ja)
WO (1) WO2005066832A2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853636B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit for convergent rounding
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US8495122B2 (en) 2003-12-29 2013-07-23 Xilinx, Inc. Programmable device with dynamic DSP architecture
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7844653B2 (en) 2003-12-29 2010-11-30 Xilinx, Inc. Digital signal processing circuit having a pre-adder circuit
US7853632B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Architectural floorplan for a digital signal processing circuit
US7853634B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US7865542B2 (en) 2003-12-29 2011-01-04 Xilinx, Inc. Digital signal processing block having a wide multiplexer
US7840630B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US7882165B2 (en) 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7840627B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7467177B2 (en) 2003-12-29 2008-12-16 Xilinx, Inc. Mathematical circuit with dynamic rounding
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8266199B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7394287B1 (en) * 2007-05-21 2008-07-01 Altera Corporation Programmable logic device having complex logic blocks with improved logic cell functionality
US8539011B1 (en) 2007-07-19 2013-09-17 Xilinx, Inc. Device having programmable logic for implementing arithmetic functions
US8117247B1 (en) 2007-07-19 2012-02-14 Xilinx, Inc. Configurable arithmetic block and method of implementing arithmetic functions in a device having programmable logic
US8010590B1 (en) * 2007-07-19 2011-08-30 Xilinx, Inc. Configurable arithmetic block and a method of implementing a configurable arithmetic block in a device having programmable logic
KR101265120B1 (ko) * 2008-01-31 2013-05-16 후지제롯쿠스 가부시끼가이샤 재구성 가능한 디바이스
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8543635B2 (en) 2009-01-27 2013-09-24 Xilinx, Inc. Digital signal processing block with preadder stage
US8479133B2 (en) 2009-01-27 2013-07-02 Xilinx, Inc. Method of and circuit for implementing a filter in an integrated circuit
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
KR101462157B1 (ko) 2009-12-18 2014-11-20 한국전자통신연구원 Mac 연산을 포함하는 연산 장치, 이를 이용한 dsp 구조 및 필터링 방법
US8120382B2 (en) * 2010-03-05 2012-02-21 Xilinx, Inc. Programmable integrated circuit with mirrored interconnect structure
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US20120290819A1 (en) * 2011-05-09 2012-11-15 Altera Corporation Dsp block with embedded floating point structures
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
JP6553694B2 (ja) 2017-09-25 2019-07-31 Necスペーステクノロジー株式会社 プロセッサエレメント、プログラマブルデバイス及びプロセッサエレメントの制御方法
JP6820875B2 (ja) 2018-03-09 2021-01-27 株式会社東芝 計算装置
US11288220B2 (en) * 2019-10-18 2022-03-29 Achronix Semiconductor Corporation Cascade communications between FPGA tiles
JP7254993B2 (ja) 2020-12-11 2023-04-10 株式会社東芝 計算装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000512097A (ja) * 1996-06-07 2000-09-12 シストリックス リミテッド 現場においてプログラム可能なプロセッサ
US20030055861A1 (en) * 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip
JP2003209467A (ja) * 2001-09-18 2003-07-25 Altera Corp マルチプライヤを含んだプログラマブルロジックデバイスならびにそのリソース使用を低減するための構成

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04266151A (ja) * 1991-02-21 1992-09-22 Nec Corp 信号処理用集積回路
JPH05324694A (ja) * 1992-05-19 1993-12-07 Tomochika Fujioka 再構成可能並列プロセッサ
US5339264A (en) 1992-07-27 1994-08-16 Tektronix, Inc. Symmetric transposed FIR digital filter
US5682107A (en) 1994-04-01 1997-10-28 Xilinx, Inc. FPGA architecture with repeatable tiles including routing matrices and logic matrices
JPH08287037A (ja) * 1995-04-12 1996-11-01 Matsushita Electric Ind Co Ltd デジタル信号処理プロセッサ
US5754459A (en) 1996-02-08 1998-05-19 Xilinx, Inc. Multiplier circuit design for a programmable logic device
US5963050A (en) 1997-02-26 1999-10-05 Xilinx, Inc. Configurable logic element with fast feedback paths
US5914616A (en) 1997-02-26 1999-06-22 Xilinx, Inc. FPGA repeatable interconnect structure with hierarchical interconnect lines
US6362650B1 (en) 2000-05-18 2002-03-26 Xilinx, Inc. Method and apparatus for incorporating a multiplier into an FPGA
GB2365636B (en) 2000-08-04 2005-01-05 Automatic Parallel Designs Ltd A parallel counter and a multiplication logic circuit
GB2373602B (en) 2001-03-22 2004-11-17 Automatic Parallel Designs Ltd A multiplication logic circuit
GB2373883A (en) 2001-03-27 2002-10-02 Automatic Parallel Designs Ltd Logic circuit for performing binary addition or subtraction
GB2383435A (en) 2001-12-18 2003-06-25 Automatic Parallel Designs Ltd Logic circuit for performing modular multiplication and exponentiation
US6920627B2 (en) 2002-12-13 2005-07-19 Xilinx, Inc. Reconfiguration of a programmable logic device using internal control

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000512097A (ja) * 1996-06-07 2000-09-12 シストリックス リミテッド 現場においてプログラム可能なプロセッサ
US6449708B2 (en) * 1996-06-07 2002-09-10 Systolix Limited Field programmable processor using dedicated arithmetic fixed function processing elements
US20030055861A1 (en) * 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip
JP2003209467A (ja) * 2001-09-18 2003-07-25 Altera Corp マルチプライヤを含んだプログラマブルロジックデバイスならびにそのリソース使用を低減するための構成

Also Published As

Publication number Publication date
EP1700231B1 (en) 2012-10-17
WO2005066832A3 (en) 2006-01-19
CA2548327C (en) 2015-10-20
CA2548327A1 (en) 2005-07-21
JP2007522699A (ja) 2007-08-09
EP2306331B1 (en) 2018-05-02
EP1700231A2 (en) 2006-09-13
EP2306331A1 (en) 2011-04-06
WO2005066832A2 (en) 2005-07-21

Similar Documents

Publication Publication Date Title
JP4664311B2 (ja) カスケード接続するdspスライスを備えた集積回路
US7472155B2 (en) Programmable logic device with cascading DSP slices
US8495122B2 (en) Programmable device with dynamic DSP architecture
US7467175B2 (en) Programmable logic device with pipelined DSP slices
US7467177B2 (en) Mathematical circuit with dynamic rounding
US7480690B2 (en) Arithmetic circuit with multiplexed addend inputs
US7567997B2 (en) Applications of cascading DSP slices
US6066960A (en) Programmable logic device having combinational logic at inputs to logic elements within logic array blocks
JP3613396B2 (ja) 機能ブロック
US7372297B1 (en) Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources
US6154049A (en) Multiplier fabric for use in field programmable gate arrays
EP1397863B1 (en) Reconfigurable logic device
JP5956820B2 (ja) 埋込み浮動小数点構造を有するdspブロック
CN110716707A (zh) 前缀网络定向的加法
US20210173617A1 (en) Logarithmic Addition-Accumulator Circuitry, Processing Pipeline including Same, and Methods of Operation
US8463836B1 (en) Performing mathematical and logical operations in multiple sub-cycles
GB2555459A (en) Division synthesis
US8533250B1 (en) Multiplier with built-in accumulator
Vazquez et al. Efficient implementation of parallel BCD multiplication in LUT-6 FPGAs
US7818361B1 (en) Method and apparatus for performing two's complement multiplication
EP1927046A2 (en) Full-adder modules and multiplier devices using the same
US7765249B1 (en) Use of hybrid interconnect/logic circuits for multiplication
US9606608B1 (en) Low power optimizations for a floating point multiplier
Tatas et al. Architecture design of a coarse-grain reconfigurable multiply-accumulate unit for data-intensive applications
Abbasi et al. FPGA design, simulation and prototyping of a high speed 32-bit pipeline multiplier based on Vedic mathematics

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101125

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: 20101214

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110106

R150 Certificate of patent or registration of utility model

Ref document number: 4664311

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140114

Year of fee payment: 3

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

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

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