JP3809727B2 - 情報処理システム、回路情報管理方法および回路情報記憶装置 - Google Patents

情報処理システム、回路情報管理方法および回路情報記憶装置 Download PDF

Info

Publication number
JP3809727B2
JP3809727B2 JP16944098A JP16944098A JP3809727B2 JP 3809727 B2 JP3809727 B2 JP 3809727B2 JP 16944098 A JP16944098 A JP 16944098A JP 16944098 A JP16944098 A JP 16944098A JP 3809727 B2 JP3809727 B2 JP 3809727B2
Authority
JP
Japan
Prior art keywords
circuit
information
processing
programmable logic
data
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.)
Expired - Fee Related
Application number
JP16944098A
Other languages
English (en)
Other versions
JP2000010770A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP16944098A priority Critical patent/JP3809727B2/ja
Priority to US09/280,681 priority patent/US6336209B1/en
Publication of JP2000010770A publication Critical patent/JP2000010770A/ja
Application granted granted Critical
Publication of JP3809727B2 publication Critical patent/JP3809727B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]

Description

【0001】
【発明の属する技術分野】
この発明は、アプリケーションプログラムによる処理の少なくとも一部分を、回路構成を再構成できるプログラマブル論理回路で処理することが可能である情報処理システムに関する。また、この情報処理システムに適用して好適な回路情報管理方法および回路情報記憶装置に関する。
【0002】
【従来の技術】
デジタル回路装置、特に特定用途向け集積回路(ASIC)の分野において、製品の開発期間を短縮するために、フィールドプログラマブルゲートアレイ(FPGA)やプログラマブルロジックデバイス(PLD)などで構成されたプログラマブル論理回路が広く使われている。
【0003】
これらのプログラマブル論理回路は、論理回路を記述する回路情報をこれらに読み込ませることで、内部の論理回路と論理回路間の結線を自由に構成することができる。このため、プログラマブル論理回路を用いることで、従来は回路設計の終了後に数週間から数か月を必要とした集積回路の作製時間が不要になるというメリットがある。特に、米国特許第4,700,187号の発明のような電気的に再構成可能なプログラマブル論理回路は、一度作製した回路を必要に応じて自由に何度でも変更できるという利点があり、プログラマブル論理回路は、ますます広く使われるようになってきている。
【0004】
この種のプログラマブル論理回路の回路を設計する装置のひとつとして、特開平6−232259号公報に開示される「FPGA回路設計装置及び方法」の例がある。これを従来例1として図28及び図29を参照しながら説明する。
【0005】
図28は、大規模FPGA回路を設計するCADシステムの構成図を示したものである。この装置は、予め、配置配線情報および論理機能情報を有したFPGA機能モジュールよりなるハードマクロセルを、複数個、登録したデータベース12を有し、このデータベースに登録された複数のハードマクロセルを用いて配置、配線することで、より大規模のFPGA集積回路を設計するものである。
【0006】
この装置においては、マンマシンインターフェースとしてのデータ入出力装置10に対して設計者が操作してファイル管理プログラム群11を動作させる。このファイル管理プログラム群11は、論理ファイル管理プログラム、ライブラリ管理プログラム、配置配線管理プログラム等を有し、これらにより、管理対象であるデータベース12を管理する。
【0007】
データベース12は、FPGAの論理機能情報を多数登録した論理ファイルと、機能モジュールとしてのFPGAセルを登録したセルライブラリと、FPGA内外の配置配線情報を登録した配置配線ファイルとからなる。セルライブラリには、予め配置配線情報および論理機能情報を持ち、ペリフェラル回路等として特定の機能を実行するハードマクロセルを予め多数登録する。このデータベース12の各ファイルの内容は、適宜、診断システム13により読み出されて診断され、その診断データ14が出力される。
【0008】
そして、このデータベースに登録される各ファイルの内容に従い、図面入力システム、ネットリスト生成システム、レイアウトシステム、セル内配置配線システム、出力プログラムを順次用いることにより、大規模FPGA回路を実現するための設計図面及びそのプログラムを出力させる。
【0009】
このCADシステムによって設計された1チップのFPGAによるマイクロコンピュータシステムの構成例を図29に示す。このFPGAチップ20は、CPU21、ROM22、RAM23、I/Oポート24、処理すべきプログラムの経過時間を計るPIT(Programmable Interval Timer)25、同時に発生した複数の装置からの割り込み信号を制御するPIC (Programmable Interrupt Controller)26、CPU21と必要なメモリアクセスの調停を行うDMAC(Direct Memory Access Controller)27のそれぞれが、アドレス/データバス28および制御信号線29に接続されて構成される。
【0010】
このうち、I/Oポート24、PIT25、PIC26、DMAC27に相当するハードマクロセルが、あらかじめデータベース12のセルライブラリに登録されており、これらは、このハードマクロセルをそのまま読み出してFPGAチップ20上にマッピングするのみで、これらのFPGAセル内の配置配線処理を終えることができる。
【0011】
以上のようにして、この従来例1によれば、あらかじめ配置配線情報及び論理機能情報を有したFPGA機能モジュールよりなるハードマクロセルを複数登録したライブラリを有し、このライブラリに登録された複数のハードマクロセルを用いて配置、配線を行うことで、既存のFPGA回路を設計財産として活かし、システム設計の負担を軽減して開発期間を短縮した設計ができる。
【0012】
ところで、以上説明した従来例1は、1個のFPGAチップを設計する際の発明に関するものであるが、最近の論理回路は複雑さが増し、一つのプログラマブル論理回路装置では実現できない規模にまで回路規模が大きくなっている。
【0013】
この問題を解決するためのひとつの方法として、異なる時間に異なる論理回路を実現するために、プログラマブル論理回路を処理の途中で再構成することが提案されている。この方法を用いることにより、携帯情報端末のように、装置が小型であるため、内蔵できる回路規模に制約がある場合でも、様々な処理が比較的高速に行えるという利点がある。
【0014】
しかし、プログラマブル論理回路を再構成するときには、回路全体の回路情報を再度読み込ませるため、再構成に時間がかかるという欠点がある。さらに、処理の途中で再構成することは、処理を一時中断し、その時のデータをプログラマブル論理回路の外部の記憶装置に待避させ、新たな回路情報を読み込んで再構成し、再構成前のデータと再構成に伴う新しいデータを入力するという余分な処理が必要で、データを出し入れする処理は冗長なものとになる。
【0015】
この問題を解決するために、米国アトメル社の「CONFIGURABLE LOGIC」という名のデータブックに記載されているプログラマブル論理回路、および米国ザイリンクス社の「THE PROGRAMMABLE LOGIC」という名のデータブックに記載されているプログラマブル論理回路では、データを記憶するためのデータ記憶装置を有し、回路の動作中でも外部の記憶装置から回路情報の一部を読み込んで部分的に再構成を行うことで、再構成するための時間を最小に留めるようにしている。
【0016】
このようなプログラマブル論理回路を情報処理システムに用いるときの問題は、所望の論理回路を構成するための回路情報を格納先から取り出し、必要に応じて複数の回路情報を合成して処理に適切な形式に変換し、所望の論理回路を再構成することを高速かつ効率的に行わねばならないことである。
【0017】
上述した複数の回路情報をプログラマブル論理回路に異なる時間に再構成して所定の処理を行う情報システムは、ネットワークに接続して利用することができる。その例として、特開平10−78932号公報に記載される「リコンフィグラブル・ネットワークコンピュータ」があり、それを従来例2として図30を参照しながら説明する。
【0018】
この従来例2の情報処理システムは、通信ネットワークNETに接続された複数のコンピュータで構成され、その内の少なくとも一つがアプリケーションプログラムを配布するコンピュータ(アプリケーション・サーバ)SBであり、残りのコンピュータが前記アプリケーションプログラムをダウンロードし、実行するクライアントとなるコンピュータ(クライアント・コンピュータ)CLで構成されたシステムである。複数のクライアント・コンピュータCLの一部に、プログラムにより機能を随時変更し再構成することが可能な拡張ハードウェア(拡張HW)31が搭載されている。
【0019】
サーバSBに格納されたアプリケーションプログラムAPにおいては、その一部の機能に対して、拡張ハードウェアのプログラムコード(拡張コード)と、クライアント・コンピュータCLのメインのプロセッサ(メインP)32のコードが含まれている。
【0020】
クライアント・コンピュータCLのOSは、拡張ハードウェア31が実装されているか否かを判断する機能を持ち、拡張ハードウエア31が実装されている場合には、図30の上側のクライアント・コンピュータCLのように、アプリケーションプログラムAPの中からハードウェア構成に適したコードのみ取り出すコード選択機能33を持っている。また、図30の下側のクライアント・コンピュータCLのように、拡張ハードウェア31を持たない場合には、コード選択機能33により、メインプロセッサ32のコードが選択されてアプリケーションを利用できる。
【0021】
別の構成では、拡張ハードウェア31で実現する機能を、クライアント・コンピュータCL上に後から動的に追加/削除が可能なOSの拡張機能あるいは動的ライブラリとして実現し、アプリケーションプログラムAPがOSに対し処理中に利用する拡張機能あるいは動的ライブラリの種類を登録する。OSは、拡張機能あるいは動的ライブラリがクライアント上に存在する場合にはそれを用い、存在しない場合にはネットワークNET上のサーバSBから必要とする拡張機能あるいは動的ライブラリを転送し、利用する。
【0022】
また、メインプロセッサ32用のコード、拡張ハードウェア31用のコードは、一体となっているのではなく、アプリケーションプログラムAPまたはOSの拡張機能または動的ライブラリ毎に、個々のコードをホストコンピュータに上に備えることもできる。
【0023】
さらに、従来例2の場合には、拡張ハードウエアを構成するプログラマブル論理回路の構成が、クライアント間で異なる場合は、拡張コードを、適当なゲート数と入出力端子数の論理回路の機能をブール式等で記述した基本モジュールと、それらの接続関係を表現したコードとすることもできる。なお、基本モジュールは、他の回路が参照して設計財産として再利用することができる。
【0024】
さらに、この基本モジュールを、それぞれプログラマブル論理回路の基本プログラムに割り付ける機能と、複数のプログラマブル論理回路チップにまたがる大きな拡張コードの場合には、基本モジュールを接続の度合いに応じて分割し、各プログラマブル論理回路チップに配置配線する機能を、サーバまたはクライアント上に持つ。
【0025】
また、拡張ハードウェアを利用する複数のアプリケーションを同時に実行できるように、必要のなくなったハードウェア資源を別のアプリケーションプログラムのために再利用するハードウェア資源の管理機能と、拡張ハードウェアに入りきらない拡張コードを時分割で入れ替えるコード入れ替え機能を持つ。
【0026】
また、クライアント上で実行されるアプリケーションプログラム毎に適宜設定されるプライオリティ値、メインプロセッサの処理能力値、拡張ハードウェアの処理能力値、ハードウェア資源量、コード入れ替えのために必要な処理能力値を基に、ハードウェア資源に入りきらない複数のアプリケーションプログラムに対して選択する拡張ハードウェア管理機能を持つ。
【0027】
複数のアプリケーションが同時に同じ拡張コードを拡張ハードウェアで利用する場合には、内部状態のみを時分割で切り替えて機能を共有する。
【0028】
以上のように、従来例2の場合には、ネットワークで接続されたコンピュータ上で、サーバから配布されたアプリケーションプログラムをクライアント側で実行する際、クライアント側に、プログラムにより機能を随時変更し、再構成可能な拡張ハードウェアを搭載し、サーバに格納されたアプリケーションプログラムには、クライアントのメインプロセッサコードと拡張コードを含ませ、拡張ハードウェアの有無、種類を判断したコード選択機能によって、クライアント側の計算機の構成を変え、処理に適した構成にすることでアプリケーションプログラムを高速に処理できる。
【0029】
また、ネットワーク上で、クライアント側に特殊なハードウエアを必要とする新しいサービスを開始しようとする場合には、従来は、クライアント側のユーザはそのために新しいハードウエアを導入する必要があり、また、サービスの提供者は、新しいハードウエアをもつ一部のユーザに対してのみ、新しいサービスを提供することになったが、上述の従来例2を実施することにより、新しいハードウエアを導入することなく、新しいサービスを開始することが可能となる。
【0030】
【発明が解決しようとする課題】
上述したように、従来例1のFPGA回路設計装置および方法を用いれば、過去に設計したFPGA回路をハードマクロセルとして再利用できるが、実際に機能する回路を生成するためには、ハードマクロセルを組み合わせる作業が必要である。
【0031】
このハードマクロセルを組み合わせるため、従来例1の場合は、回路を設計しようとする者が、診断システム13での診断結果のデータ14を見ながら、データベースのセルライブラリに登録されたハードマクロセルを含むFPGAセルを参照して、図面入力システムにおいて、回路図面を入力する。すると、入力された回路図面のネットリスト生成システムで生成され、その生成されたネットリストにしたがって、レイアウトシステムにおいてハードマクロセルが配置され、セル内配置配線システムにおいて、ハードマクロセル間の配線がなされるようになっている。
【0032】
このため、ある一つの回路を設計する場合に、ハードマクロセルを再利用することにより全ての回路を設計する場合よりも設計期間を短縮することができるが、依然として、ハードマクロセルを配置配線するための計算量と、それに見合うだけの時間がかかる問題がある。
【0033】
また、設計者が、セルライブラリに登録されたハードマクロセルを参照しながら回路図面を入力しなければならない。さらに、入力された回路図面からネットリストを生成するシステムと、ハードマクロセルを配置するレイアウトシステムと、ハードマクロセル間を接続するセル間配置配線システムが必要であり、システム規模が大きくなるという問題がある。
【0034】
つまり、従来例1は、例えばASICに構成する回路を設計する場合のように時間的な制約のない条件において、特定のある一つの回路を設計する場合に、過去に設計したハードマクロセルを用いることにより、効率的に大規模集積度を有するFPGAチップを設計する場合に有益なものであり、例えば、アプリケーションプログラムの一部の処理を、ソフトウエア処理に変えて、プログラマブル論理回路で実行しようとする場合に、そのプログラマブル論理回路に構成する回路情報を作成するために使用するには全く不向きな技術である。
【0035】
これに対して、従来例2のネットワークコンピュータ装置を用いれば、サーバSBから渡された拡張コードを用いて、アプリケーションプログラムの一部の処理を、新しいハードウエアを導入することなく、ハードウエアによるアプリケーションプログラムの高速処理が可能になる。
【0036】
このとき、従来例2では、拡張ハードウエアなどのプログラマブル論理回路に構成される回路の回路情報は、回路毎にアプリケーションプログラム中の拡張コードとして、またはOSの拡張機能として、または実行時にプログラムに追加される動的ライブラリとして、アプリケーションプログラムを開始する前に、格納する必要があった。
【0037】
このため、クライアント・コンピュータのそれぞれは、拡張ハードウエアを持たない場合にも、プログラマブル論理回路に構成される回路の回路情報を格納する格納部を備えなければならなかった。
【0038】
また、この従来例2の場合には、ひとつの回路は、より小さい機能を持った基本モジュールの集まりとして構成される場合もある。この基本モジュールは、他の回路が参照して設計財産として再利用することができる。
【0039】
しかしながら、このように、クライアント・コンピュータに、拡張コードとして格納する回路情報を、基本モジュールの集まりとして構成した場合に、その一つの基本モジュールに修正や改良が必要になった場合、クライアント・コンピュータに格納されている回路情報の全体を初めから作成し直さなければならないという問題がある。
【0040】
この発明は、アプリケーションプログラムの少なくとも一部を、プログラマブル論理回路で処理する情報処理システムにおいて、予め、プログラマブル論理回路の回路情報を持つことが不要である情報処理システムを提供することを目的とする。
【0041】
この発明の他の一つの目的は、過去に設計された回路情報を再利用しながらも、配置配線するなどの回路情報を組み合せるための計算量を大幅に削減することである。
【0042】
また、この発明の別の目的は、プログラマブル論理回路に構成された回路を用いるアプリケーションで処理を実行するときに、例えば基本モジュールを複数個組み合わせて回路情報を生成する場合であっても、アプリケーションプログラムを開始する前に、基本モジュールを複数個組み合わせて回路情報を生成する処理をしておく必要がなく、回路を構成する回路情報の修正や改良が発生したときでも、自由度の高い回路情報の再構成を可能にすることである。
【0043】
【課題を解決するための手段】
上記課題を解決するため、請求項1の発明による情報処理システムは、
アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された処理回路を用いて処理を実行する処理手段と、
前記プログラマブル論理回路に前記処理回路を構成するための複数個の回路情報を、回路情報識別子とそれぞれ対応させて記憶する記憶手段と、
前記プログラマブル論理回路に構成する前記処理回路を特定するために前記アプリケーションプログラムにより指定される前記回路情報識別子からなる指定情報を受け、前記指定情報の前記回路情報識別子に基づいて、前記処理回路の回路情報を生成するのに必要な回路情報を、前記記憶手段から取得し、取得した回路情報から前記処理回路の回路情報を生成する機能を備える編集手段と、
記指定情報前記編集手段に渡し、前記編集手段から、前記生成された前記処理回路の回路情報を取得し、当該取得した処理回路の回路情報により前記処理手段のプログラマブル論理回路に前記処理回路を構成する取得手段と、
を備えることを特徴とする。
【0044】
請求項2の発明は、請求項1に記載の情報処理システムにおいて、
前記記憶手段を構成する部分と、前記編集手段を構成する部分と、前記取得手段および処理手段を構成する部分とが、ネットワークを介して接続されていることを特徴とする。
【0045】
請求項3の発明は、請求項1または請求項2に記載の情報処理システムにおいて、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の前記回路情報識別子を備えるとともに、前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスの情報と、前記アドレスにおいて構成される回路データとの対からなるコード部を備え、
前記回路情報の一部または全部を他の回路情報で構成する場合には、前記アドレスにおいて構成される回路データとして、前記他の回路情報の回路情報識別子を参照識別子として備えるものであり、
前記編集手段は、前記記憶手段から取得した前記指定情報により指定された前記処理回路の回路情報が前記参照識別子を含む場合には、前記参照識別子で示される前記他の回路情報を前記記憶手段から取得して、前記参照識別子が回路データとして記述されていた前記アドレスにおいて、前記処理回路の回路情報の前記回路データと、前記参照識別子で示される前記他の回路情報の回路データとを合成することにより、前記指定情報により指定された前記処理回路の回路情報を生成する
ことを特徴とする。
【0047】
請求項の発明は、請求項1または請求項2に記載の情報処理システムにおいて、
前記記憶手段に記憶される複数個の回路情報のそれぞれは、
前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスの情報と、前記アドレスにおいて構成される回路データとの対からなるコード部と、付加情報部とからなり、
前記付加情報部は、自己の回路情報の識別子を含むとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、当該他の回路情報の回路情報識別子を参照識別子として含むものであり、
前記コード部は、前記回路情報の一部または全部を他の回路情報で構成する場合には、前記アドレスにおいて構成される回路データとして、前記他の回路情報の回路情報識別子を参照識別子として備えるものであり、
前記編集手段は、前記取得手段からの前記指定情報により指定される前記処理回路の回路情報を、その識別子により前記記憶手段に照会して取得し、
前記記憶手段は、前記編集手段からの照会に応じて、前記識別子で示される前記処理回路の回路情報を前記編集手段に返すと共に、前記識別子で示される前記処理回路の回路情報の前記付加情報部が前記参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
前記編集手段は、前記記憶手段から入手した前記参照識別子を用いて、前記記憶手段から前記他の回路情報を取得して、前記参照識別子が回路データとして記述されていた前記アドレスにおいて、前記処理回路の回路情報の前記回路データと、前記参照識別子で示される前記他の回路情報の回路データとを合成することにより、前記指定情報により指定された前記処理回路の回路情報を生成する
ことを特徴とする。
【0049】
請求項の発明は、請求項3または請求項4に記載の情報処理システムにおいて、
前記編集手段においては、前記指定情報により指定された前記処理回路の回路情報の、前記回路データとして前記参照識別子が記述された前記コード部のアドレスの値を、当該参照識別子で示される前記他の回路情報の前記コード部の全てのアドレスの値に加えて、オフセットすることにより、前記処理回路の回路情報と前記参照識別子に対応する前記他の回路情報とを結合する
ことを特徴とする。
【0050】
【作用】
請求項1の発明の情報処理システムにおいては、アプリケーションプログラムの実行時に、当該アプリケーションプログラムにより、処理手段のプログラマブル論理回路で処理を実行させるために、当該プログラマブル論理回路に構成する処理回路を特定するための指定情報が取得手段に送られる。取得手段は、この指定情報を、処理回路の回路情報の指定情報として編集手段に渡す。編集手段は、この指定情報を記憶手段に送る。
【0051】
すると、記憶手段は、指定情報で指定される回路情報を編集手段に返す。編集手段は、これを受け取り、指定された回路情報を生成するために、記憶手段の他の回路情報も必要と判断すると、当該他の回路情報も記憶手段から取得するようにする。そして、編集手段は、記憶手段から取得した複数個の回路情報から、指定された回路情報を生成し、それを指定情報により要求された情報として取得手段に返す。取得手段は、編集手段から取得した回路情報を処理手段のプログラマブル論理回路に再構成する。
【0052】
処理手段は、このプログラマブル論理回路に再構成された回路を用いてアプリケーションプログラムにより指示された処理を実行することができる。
【0053】
以上のようにして、請求項1の発明の情報処理システムにおいては、アプリケーションプログラムの実行時に、取得手段に指定情報を渡すと、この取得手段からの要求に応じて、編集手段が処理手段のプログラマブル論理回路に構成すべき処理回路の回路情報を自動的に生成して取得手段に返し、取得手段がプログラマブル論理回路に処理回路の回路情報を再構成するように動作するので、予め処理回路の回路情報をアプリケーションプログラム内などに格納しておく必要はない。
【0054】
また、請求項2の発明の情報処理システムにおいては、記憶手段を構成する部分と、編集手段を構成する部分と、取得手段および処理手段を構成する部分とが、ネットワークを介して接続されており、一つの情報処理装置内に編集手段や記憶手段を持つ必要がない。このため、取得手段および処理手段とアプリケーションプログラムで動作する情報処理装置から見ると、指定情報をネットワークを通じて送出すると、その指定情報に対応した回路情報が自動的に送られてくるシステムの構造となり、記憶手段部分、編集手段部分、取得手段および処理手段の部分の構成は、それぞれ任意にできる。
【0055】
また、請求項3の発明の情報処理システムにおいては、記憶手段に記憶される回路情報の構造は、他の回路を参照しない回路データの構成の回路情報を最下層の回路情報として、いわゆるツリー構造となる。
【0056】
すなわち、各回路情報は、自己の識別子として例えば回路名を備える。そして、各回路情報は、その一部または全部を他の回路情報で構成する場合には、回路データとして、当該他の回路情報の識別子を参照識別子として備える。参照識別子は、他の回路情報の回路名を用いることができる。参照識別子で示される他の回路情報も、その一部または全部を他の回路情報で構成することができる。そして、最下層の回路情報は、参照識別子を回路データに持たない構造となる。
【0057】
編集手段は、指定情報で指定された回路情報が、その一部を他の回路情報で構成される場合には、当該指定された回路情報と、それに含まれる参照識別子で示される他の回路情報とを記憶手段から取得して結合し、指定された回路情報を生成する。また、指定された回路情報の全部が他の回路情報で構成される場合には、参照識別子で示される他の回路情報のすべてを記憶手段から取得して結合し、指定された回路情報を生成する。
【0059】
請求項の発明においては、指定された回路情報の参照識別子を知る方法としては次のようにするすなわち、編集手段は、取得手段から渡された指定情報で示される回路情報の識別子により記憶手段に回路情報の照会を行う。記憶手段は、編集手段から回路情報の識別子を受け取ると、その回路情報を編集手段に返すとともに、その識別子で示される回路情報が参照識別子を含む場合には、その参照識別子で示される前記他の回路情報を編集手段に送る。
【0062】
請求項の発明は、記憶手段に記憶される回路情報のデータ構造に関するもので、このデータ構造にすることにより、編集手段と記憶手段との間での前記回路情報の識別子と回路情報とのやり取りを迅速に行えるようにしている。
【0063】
すなわち、回路情報は、コード部と、付加情報部とからなり、付加情報部は、自己の回路情報の識別子を含むとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、当該他の回路情報の識別子を参照識別子として含む。また、コード部は、プログラマブル論理回路のコンフィギュレーションメモリのアドレスの情報と、前記アドレスにおいて構成される回路データとの対からなるものであって、当該回路情報の一部または全部を他の回路情報で構成する場合には、アドレスにおいて構成される回路データとして、他の回路情報の識別子を、参照識別子として備えるものとされる。
【0064】
記憶手段は、編集手段から回路情報の識別子による照会があると、それに応じて、その照会時の識別子で示される処理回路の回路情報を前記編集手段に返すと共に、その識別子で示される処理回路の回路情報の付加情報部が含む参照識別子を編集手段に返す。編集手段は、記憶手段から入手したこの参照識別子を記憶手段に送って回路情報を再び照会し、記憶手段から参照識別子で示される回路情報を取得する。
【0065】
この請求項の発明によれば、編集手段は、回路情報を解析して、指定された回路情報を構成する他の回路情報の参照識別子を見出す必要はなく、編集手段は、迅速に記憶手段から必要な回路情報の取得を行える。
【0066】
また、請求項の発明においては、回路情報のコード部は、プログラマブル論理回路のコンフィギュレーションメモリのアドレスと、そのアドレスに格納される回路データとの対で記述されているとともに、回路情報の一部または全部が他の回路情報で構成される場合には、参照識別子が、回路情報において他の回路情報を参照する位置に対応するアドレスの回路データとして記述されている。
【0067】
したがって、編集手段は、コード部のデータ内容に従って、参照識別子で示される回路情報を割り付けることにより、指定情報で指定された回路の回路情報を、迅速に組み立てることができる。
【0068】
請求項の発明は、編集手段における参照識別子で示される回路情報の、指定情報で示される回路情報への具体的な結合方法に関するもので、この請求項の発明においては、回路情報のコード部の参照識別子が記述されたアドレスの値を、当該参照識別子で示される他の回路情報のコード部の全てのアドレスの値に加えてオフセットすることにより、その参照識別子が記述された回路情報に結合する。
【0069】
このように、請求項の発明によれば、単に、アドレスの値にオフセットを付加するだけで、参照識別子で示される回路情報を、その参照識別子が記述された回路情報に結合することができ、配置配線の演算時間がほとんど不要になる。このため、編集手段では、短時間で回路情報を生成することができる。
【0070】
【発明の実施の形態】
以下、この発明による情報処理システム、回路情報管理方法、回路情報記憶装置の実施の形態を、図を参照しながら説明する。
【0071】
[第1の実施の形態]
[情報処理システム全体の構成の概要]
この発明による、少なくとも処理の一部分が、回路構成を再構成できるプログラマブル論理回路を保有する処理手段で処理される情報処理システムの第1の実施の形態の主要な概念構成を図1に示す。
【0072】
この場合の情報処理システムは、情報処理部100と、記憶部200と、編集部300とからなる。これら情報処理部100と、記憶部200と、編集部300とは、一つの情報処理装置内に構成されることもできるし、それぞれ別々の装置として、互いにネットワークを介して接続するようにして構成することもできる。
【0073】
また、記憶部200と編集部300とを一つのコンピュータシステムにより構成し、これと、コンピュータシステムからなる情報処理部100とをネットワークを通じて接続して、情報処理システムを構成するようにすることもできる。
【0074】
以下に説明する例では、これら情報処理部100、記憶部200、編集部300は、それぞれ別々の装置として、互いにネットワークを介して接続する場合として説明する。
【0075】
情報処理部100においては、アプリケーションプログラム101は、実行しようとする一連の処理を複数個の処理に分割し、分割した処理をCPU102またはプログラマブル論理回路を保有するハードウエア処理部103で実行する。アプリケーションプログラム101には、CPU102で行う処理は、CPU102の命令コードで記述され、また、ハードウエア処理部103で行う処理は、これが保有するプログラマブル論理回路104に構成する回路名と、その回路を構成要素の一部として構成されたハードウエア処理部103の制御コードで記述されている。
【0076】
ハードウエア処理部103は、処理手段を構成するもので、プログラマブル論理回路104として、この例ではFPGAタイプのプログラマブル論理回路を保有し、このプログラマブル論理回路104に構成された回路を利用して処理を行う。
【0077】
取得手段を構成する回路情報取得部105は、アプリケーションプログラム101からのハードウエア処理部103のプログラマブル論理回路104に構成する回路の要求を受けて、その回路を構成するための回路情報を編集部300に要求し、その要求した回路情報を編集部300から取得する。後で説明するように、回路情報はヘッダ部とコード部(回路データ部)で構成されている。
【0078】
また、回路情報取得部105は、取得した回路情報のコード部に記述されている回路データを、ハードウエア処理部103にロードして、そのプログラマブル論理回路104に回路を構成する。さらに、回路情報取得部105は、回路情報のヘッダ部に記述されている入出力ポート情報をアプリケーションプログラム101に提供する。
【0079】
アプリケーションプログラム101は、この回路情報取得部105からの入出力ポート情報に基づいて、ハードウエア処理部103のプログラマブル論理回路104に構成された回路に、データを入出力する。
【0080】
記憶部200は、プログラマブル論理回路104の回路を構成する複数の回路情報を格納する。後述するように、この場合、回路情報は、他の回路情報を参照することにより、記述することができる、いわゆるツリーデータ構造によって記憶部200に記憶することができるようにされており、これにより、過去に生成された回路情報資源を有効に活用することができるとともに、記憶部200の記憶素子の記憶容量の削減を図っている。
【0081】
この記憶部200は、この例の場合には、後述するように、情報処理部100に接続されるネットワーク上のコンピュータシステムに設けるが、情報処理部100と一体のコンピュータシステム内に設けてもよい。
【0082】
編集部300は、情報処理部100の回路情報取得部105から要求された回路の回路情報を生成するのに必要な回路情報を、記憶部200から取得する。そして、必要に応じて、取得した回路情報を編集して、プログラマブル論理回路104に再構成する回路の回路情報を生成し、回路情報取得部105に提供する。
【0083】
後で詳細に説明するように、回路情報は他の回路情報を参照することができるデータ構造であるので、編集部300は、記憶部200に要求する回路情報を照会して参照関係を解決する参照解決処理と、参照解決処理の結果に基づいて、回路情報を編集する再配置処理を行う。
【0084】
この編集部300は、この例の場合には、後述するように、情報処理部100に接続されるネットワーク上のコンピュータシステムに設けるが、情報処理部100と一体のコンピュータシステム内に設けてもよい。
【0085】
[記憶部200に記憶される回路情報の構造]
記憶部200が格納する回路情報201は、図2に示すように、付加情報部であるヘッダ部202と、回路データ部であるコード部203からなる。ヘッダ部202には、回路名情報204と、入出力ポート情報205とが記述される。
【0086】
回路名情報204には、自己の回路情報の識別子IDとして、この例では、当該回路情報201がプログラマブル論理回路104に構成する回路名(以下、自回路名と呼ぶ)が記述されている。この自己の回路情報の識別子IDとしての自回路名は、その回路情報201に付けられた名前でもある。この例では、アプリケーションプログラム101は、後述するように、プログラマブル論理回路104に構成する回路の指定情報として、この回路情報の識別子IDとしての自回路名を用いる。
【0087】
自回路名に加えて、ヘッダ部202の回路名情報204には、その回路情報201が参照する他の回路情報を特定するための参照識別子refIDとして、その参照する回路情報の回路名(以下、参照回路名と呼ぶ)も記述される。自己の回路情報の識別子IDとしてヘッダ部202に記述される自回路名はひとつであるが、参照回路名は、参照する回路情報の数に応じて、複数の参照回路名がヘッダ部202に記述されることもある。
【0088】
ヘッダ部202の入出力ポート情報205は、回路名情報204の記述の後に記述される。この入出力ポート情報205は、回路に対する信号の流れの方向に応じて、入力(IN)、出力(OUT)または双方向(IN/OUT)から選ばれるポートの種類206、論理セル(後に説明する)を単位にしたポートの位置座標(X,Y)207、およびポートのデータ幅(ビット数)208で構成される。
【0089】
コード部203は、アドレスADRとデータDTの対の集まりで構成される。アドレスADRは、プログラマブル論理回路104を構成する論理セルや配線の状態を決定するコンフィギュレーションメモリ(後に説明する)のアドレスである。データDTは、書き込まれたコンフィギュレーションメモリのアドレスに対応する論理セルや配線の状態を決める。
【0090】
記憶部200に格納されている各回路情報201のコード部203のアドレスは、ある特定のアドレス(例えば16ビットアドレスであれば0x0000など:Oxは16進表示を意味している。以下同じ)から開始する。後述するように、このアドレスに一定の値を加えてオフセットすることで、コード部のアドレスは、ハードウエア処理部103のプログラマブル論理回路104上に実際に構成する回路位置に対応したアドレスに変換される。
【0091】
ヘッダ部202の回路名情報204に、参照回路名が記述されている場合には、その参照回路名で示される回路情報が、その参照回路名が記述されている回路情報で構成される回路において、どのように結合されるかを決める参照回路情報がコード部203に記述される。
【0092】
参照回路情報は、アドレス(参照アドレスと呼ぶ)と参照回路名の対として参照元の回路情報のコード部に記述される。例えば、図2の例のアドレスiと参照回路名pや、アドレスkと参照回路名qなどのように記述される。後述もするように、編集部300は、参照回路名により参照された回路情報のコード部の開始アドレスに、参照回路情報の参照アドレスを加えてオフセットした回路データを、参照元の回路情報のコード部に結合することにより、参照回路を参照元回路に結合する。
【0093】
また、後で説明するように、アドレスADRと論理セルは一定の対応関係があるので、編集部300は、参照アドレスから参照回路の入出力ポート位置のオフセット座標を算出して、参照回路の入出力ポート位置座標にオフセット座標を加えてオフセットした参照回路の入出力ポート情報を、参照元回路の回路情報のヘッダ部に結合する。
【0094】
他の回路情報を用いない回路情報は、ヘッダ部202に参照回路名を持たない。基本回路モジュールのような最小単位の回路情報は、ヘッダ部202に参照回路名を持たない回路情報である。参照回路名により参照される他の回路情報が、そのヘッダ部202に参照回路名を持つ場合もある。このような多層構造のツリー構造の場合には、編集部300では、最下層の回路情報から順次に回路情報を結合することにより、取得部105から指定された回路名の回路情報を生成するようにする。
【0095】
[情報処理システムのハードウエア構成]
図3は、この実施の形態の情報処理システムのハードウエア構成例を示すブロック図である。この実施の形態の情報処理システムにおいて、情報処理部100は、CPU111のホストバス111Bに、チップセット112に含まれるメモリコントローラ(図示せず)を介して、例えばDRAMで構成されるメインメモリ113が接続される。
【0096】
ホストバス111Bは、また、チップセット112に含まれるホスト−PCIバスブリッジ(図示せず)を介して、PCIバス114に接続される。PCIバス114には、プログラマブル論理回路インターフェース115を介してプログラマブル論理回路116と、ハードディスクインターフェース117を介してハードディスクドライブ118と、通信インターフェース119とが接続される。プログラマブル論理回路116は、図1のハードウエア処理部103のプログラマブル論理回路104に相当する。
【0097】
通信インターフェース119は、LANやインターネットなどのネットワーク400を介して、複数個のコンピュータシステム500に接続される。コンピュータシステム500は、少なくとも、CPU(図示せず)、メインメモリ(図示せず)、およびハードディスクドライブ(図示せず)などの記憶装置を保有する。
【0098】
ハードディスクドライブ118により読み書きされるハードディスクには、アプリケーションプログラム(図示せず)が格納されている。アプリケーションプログラムは、ハードディスクインターフェース117、PCIバス114およびチップセット112に含まれるホスト−PCIブリッジ(図示せず)を介して、ハードディスクドライブ118からメインメモリ113にロードされてCPU111によって実行される。
【0099】
また、アプリケーションプログラムは、ネットワーク400に接続されるいずれかのコンピュータシステム500の記憶装置(図示せず)に格納されている場合もある。この場合は、情報処理部100が、アプリケーションプログラムを、ネットワーク400に接続されるコンピュータシステム500から、通信インターフェース119を介してメインメモリ113に取得して実行する。
【0100】
ネットワーク400に接続されるいずれかのコンピュータシステム500の記憶装置(図示せず)は、回路情報を格納して、図1の記憶部200を構成する。また、情報処理部100のハードディスクドライブ118が、回路情報を格納して、図1の記憶部200を構成することもある。
【0101】
コンピュータシステム500が、図1の記憶部200として格納する回路情報を検索したり、ネットワーク400を介して他のコンピュータシステム500へ転送する機能は、コンピュータシステム500の機能のひとつとしてソフトウエア的に実装される。
【0102】
図1の編集部300は、ネットワーク400に接続されるいずれかのコンピュータシステム500の機能のひとつとして、ソフトウエア的に実装される。図1の編集部300を構成するコンピュータシステム500と、図1の記憶部200を構成するコンピュータシステム500は、同じコンピュータシステムであってもよいし、別のコンピュータシステムであってもよい。
【0103】
図1の編集部300を構成するコンピュータシステム500と、図1の記憶部200を構成するコンピュータシステム500が、別のコンピュータシステムである場合は、ネットワーク400を介して互いに通信する。
【0104】
情報処理部100の図1の回路情報取得部105は、通信インターフェース119を介してネットワーク400に接続されたいずれかのコンピュータシステムで構成される編集部300と通信する機能と、PCIバス114に接続されたプログラマブル論理回路インターフェース115を介してプログラマブル論理回路116に回路データをロードする機能とを含んだ機能として、ソフトウエア的に情報処理部100に実装される。
【0105】
このように、回路情報取得部105は、情報処理部100にソフトウエア的に実装されるので、情報処理部100で実行されるアプリケーションプログラムと通信することができる。
【0106】
図1のハードウエア処理部103は、プログラマブル論理回路インターフェース115とプログラマブル論理回路116とで構成される。ハードウエア処理部103は、PCIバス114に接続されたプログラマブル論理回路インターフェース115を介して、CPU111で実行されるアプリケーションプログラムと通信する機能を持つ。
【0107】
[FPGAタイプのプログラマブル論理回路の説明]
前述したように、この実施の形態においては、FPGAタイプのプログラマブル論理回路を、プログラマブル論理回路116(図1のプログラマブル論理回路104)を用いる。このFPGAタイプのプログラマブル論理回路50の平面構造を図4に、内部構造のブロック図を図5に示す。
【0108】
このプログラマブル論理回路50は、回路情報を格納するためのコンフィギュレーションメモリ61と、論理セル51や配線領域52からなる回路素子62と、入出力端子53とで構成される。
【0109】
コンフィギュレーションメモリ61は、EEPROM、SRAMなどの書き換え可能なメモリ素子で構成されている。回路データは、アドレスADRとデータDTの対で構成される。コンフィギュレーションメモリ61にアドレスADRを与えて、そのアドレスADRに対応するメモリセルに、アドレスADRと対になったデータDTが格納されると、このデータDTに従って、論理セル51内の回路構成や、論理セル51と入出力端子53を相互に接続する配線領域52の接続状態が再構成される。コンフィギュレーションメモリ61の一部分を書き換えることにより、プログラマブル論理回路50が動作中であっても、回路を部分的に再構成することができる。
【0110】
プログラマブル論理回路50に再構成された回路素子62に、入出力端子53を介して、処理すべきデータが入力され、また、その処理結果が出力される。データ入力先の論理セルと、データ出力元の論理セルを、論理セルの位置に対応するセル座標を示した制御コードによって、アプリケーションプログラム(図1の例では、アプリケーションプログラム101)が指定する。
【0111】
[情報処理システムでの処理動作の説明]
以上のように構成される情報処理システムの処理動作を、図1の構成図と、図6、図7、図8に示したフローチャートを用いて説明する。
【0112】
情報処理装置(図示せず)で起動したアプリケーションプログラム101は、一連の処理をCPU102またはハードウエア処理部103のプログラマブル論理回路104で実行する。アプリケーションプログラム101からCPU102への処理の指示は、通常の計算機を用いた処理と同じ手順で行われる。
【0113】
以下の説明は、アプリケーションプログラム101が処理を実行するために必要な回路を、プログラマブル論理回路104に構成する場合である。すなわち、情報処理システムが、プログラマブル論理回路104に構成することができる回路情報を生成し、その回路情報に基づいて、ハードウエア処理部103のプログラマブル論理回路104に回路を構成し、その構成された回路を用いて処理を行う手順を示すものである。
【0114】
(回路情報要求)
図6のフローチャートに示すように、情報処理装置(図示せず)で起動したアプリケーションプログラム101が、ハードウエア処理部103で実行する処理に必要な回路の指定情報を取得手段に指示する(ステップS101)。この例では、回路の指定情報としては、その回路名(自回路名)が用いられる。
【0115】
アプリケーションプログラムから、回路の指定情報としての回路名を受け取った回路情報取得部105は、その回路名を編集部300へ伝え、ハードウエア処理部103が必要とする回路を構成することができる回路情報の編集を編集部300へ指示する(ステップS102)。
【0116】
(参照解決処理)
編集部300は、取得部105から受け取った回路名を記憶部200に渡して、照会することにより、その回路名の回路情報を取得するが、上述したように、この例の場合には、その回路名で指定される回路情報が、他の回路情報を参照するものである場合があることから、その参照回路名を知るための処理として参照解決の処理が行われる(ステップS103)。
【0117】
この参照解決の処理手順を図7A,Bのフローチャートを参照して説明する。図7Aは、この参照解決処理として編集部300で実行される処理のフローチャートであり、図7Bは、参照解決処理として記憶部200で実行される処理のフローチャートである。
【0118】
まず、図7Aに示すように、編集部300は、取得部105から得た回路名を記憶部200に問い合わせる(ステップS111)。
【0119】
図7Bに示すように、記憶部200は、この編集部300からの回路名の照会が有ったことを検知すると(ステップS121)、その回路名を取得し(ステップS122)、その回路名に対応する回路情報201のヘッダ部202を調べて、参照回路が有るか否かを参照回路名が記述されているか否かにより判別する(ステップS123)。そして、参照回路名が記述されている場合は、ヘッダ部202に記述されている参照回路名を編集部300に答える(ステップS124)。
【0120】
編集部300は、記憶部200に照会した回路名に参照回路があるか否かを記憶部200からの参照回路名の返答があるかないかにより判別し(ステップS112)、参照回路名の返送があれば、それを取得して一時保持する(ステップS113)。
【0121】
編集部300は、記憶部200から受け取った参照回路名に対応する回路がさらに参照している参照回路名を知るために、受け取った参照回路名を再び記憶部200に問い合わせる(ステップS114およびステップS111)。
【0122】
記憶部200は、編集部300からの参照回路名による更なる回路名の照会があったことを検出すると(ステップS125)、ステップS122以降を繰り返し、その参照回路名の回路情報について、参照回路がある場合には、その参照回路名を再び返す。編集部300は、ステップS113でこの参照回路名を取得保持する。
【0123】
そして、編集部300は、取得部105と記憶部200から受け取った全ての回路名に対し、参照回路がなくなるまで、ステップS112以降の前記手順を繰り返して、回路が参照する参照回路名をすべて知ったら、この参照解決の処理を終了する。同様に、記憶部200は、編集部300からの回路名の照会がなくなったら、この参照解決の処理を終了する。
【0124】
こうして、回路情報取得部105が編集部300に要求した回路名の回路を構成するために必要な全ての回路名を、編集部300が入手することができる。
【0125】
(再配置処理)
次に、図6に示すように、編集部300は、上述の参照解決の処理で得られた回路名に対応する回路情報を結合して、回路情報取得部105が編集部300に要求した回路名の回路情報を生成するために、再配置の処理を行う(ステップS104)。再配置の処理の手順を図8に示す。
【0126】
編集部300は、回路情報取得部105から受け取った回路(参照元回路)の回路情報と、その参照元回路が参照する参照回路の回路情報を記憶部200に要求する(ステップS131)。記憶部200は、要求された回路名の回路情報を編集部300に提供する(ステップS132)。なお、参照元回路の回路情報は、参照解決の最初の回路名の照会の際に、記憶部200から取得するようにしてもよい。
【0127】
編集部300は、受け取った参照回路の回路データのアドレスに、参照元回路の参照アドレスを加えてオフセットして、参照元の回路情報のコード部に結合する(ステップS133)。この処理については、具体例を挙げて後で詳述する。また、編集部300は、参照アドレスから参照回路の入出力ポート位置のオフセットセル座標を算出して、参照回路の入出力ポート位置座標にオフセットセル座標を加えて、参照元回路の回路情報のヘッダ部に結合する(ステップS134)。この処理についても、具体例について後で詳述する。
【0128】
編集部300は、全ての回路名に対して前記の手順を行うまで手順を繰り返す(ステップS135)。
【0129】
以上のようにして再配置の処理が終わると、図6に示すように、編集部300は、生成した回路情報を、回路情報取得部105へ提供する(ステップS105)。
【0130】
(ロード)
回路情報取得部105は、編集部300から入手した回路情報のコード部に記述されている回路データを、ハードウエア処理部103にロードして、プログラマブル論理回路104に回路を再構成し(ステップS106)、ヘッダ部に記述されている入出力ポート情報を、アプリケーションプログラム101に提供する(ステップS107)。
【0131】
(アプリケーションによる処理)
ハードウエア処理部103は、入出力ポート情報に基づいたアプリケーションプログラム101からの制御コードに従って、プログラマブル論理回路104に再構成された回路とデータの入出力を行い、プログラマブル論理回路104に再構成された回路を用いた情報処理を行う(ステップS108)。
【0132】
[情報処理システムによる処理の実施例:シャープネス処理]
次に、第1の実施の形態の情報処理システムを、画像処理に適用した、より詳細な実施例について説明する。この実施例では、階調変換処理、ノイズ除去処理およびエッジ検出処理の三種類の処理を、次に説明する三種類の画像フィルタを用いて画像データに行うことにより不鮮明な画像を鮮明にするシャープネス処理を示す。始めに、画像フィルタについて説明する。
【0133】
[フィルタの説明]
画像処理のひとつである空間フィルタ処理は、単位画素から構成される画像ファイルの単一もしくは複数画素に対して演算を行う。これは、ある画素(データxl,m )の近傍の画素(データpl,m )に、マスクデータfilterl,m を掛けて足し合わせ、係数Nを乗じたものを処理後の画素値xl,m として得る処理として、次の式(1)のように表すことができる。ここで、マスクデータfilterl,m や係数Nの値を変えることにより、空間フィルタは様々な処理を実行することが可能である。
【0134】
【数1】
Figure 0003809727
【0135】
(ノイズ除去Gaussianフィルタ)
図9は、画像にガウス分布の平滑化処理を施してノイズ除去を行うGaussianフィルタと呼ばれる画像フィルタのマスクデータの例である。中心画素のデータxl,m およびその近傍の3×3画素内にある8画素のデータpl,m に、マスクデータの係数filterl,m を掛けて足し合わせ、係数N(=1/16)を乗じて中心画素のデータと置き換える。このフィルタ処理を施すことにより、画像のノイズを除去することができる。
【0136】
図10は、図9のGaussianフィルタ処理を実現する回路(回路名Gauss)の回路構成の例を示すものである。図中に破線で示した格子は、プログラマブル論理回路の論理セルを示す。この実施例では、1画素当りのデータが8ビットの画像データを処理する。また、用いるプログラマブル論理回路の論理セルは、入出力とも8ビットの信号線を持つ。よって、以下に示す8ビットのレジスタは、ひとつの論理セルで実現され、8ビットの2入力加算器はふたつの論理セルで実現される。
【0137】
図10において、元の画像ファイルからフィルタ処理を行うマスク領域のうち、p[l-1][m-1],p[l][m-1],p[l+1][m-1]の3画素分のデータを、1画素当たり8ビットのデータとして、回路に転送する。
【0138】
転送された3画素分のデータは、回路の入力ポートGaussIn0、GaussIn1、GaussIn2にそれぞれ入力され、最初のクロックでレジスタ601,602,603に入力される。入力されたデータはレジスタの出力D1、D2、D3とされ、これらの出力D1、D2、D3が、それぞれレジスタ611、612、613および加算器621、622、623に入力される。
【0139】
そして、次のクロックで、p[l-1][m],p[l][m],p[l+1][m]の3画素分のデータが、同様にして出力D1,D2,D3に現れる。この時点で、加算器621,622,623の出力A1,A2,A3は、それぞれ、
A1=p[l-1][m-1]+p[l-1][m]
A2=p[l][m-1]+p[l][m]
A3=p[l+1][m-1]+p[l+1][m]
となる。
【0140】
この加算器621、622、623の出力は、同時にレジスタ631,632,633および加算器641、642、643に入力されている。
【0141】
そして、その次のクロックで、p[l-1][m+1],p[l][m+1],p[l+1][m+1]の3画素分のデータが、同様にして、出力D1,D2,D3に現れる。
【0142】
このとき、加算器621,622,623の出力A1、A2、A3は、それぞれ、
A1=p[l-1][m]+p[l-1][m+1]
A2=p[l][m]+p[l][m+1]
A3=p[l+1][m]+p[l+1][m+1]
であり、また、加算器641,642,643の出力A4、A5、A6は、それぞれ、
A4=p[l-1][m-1]+p[l-1][m]×2+p[l-1][m+1]
A5=p[l][m-1]+p[l][m]×2+p[l][m+1]
A6=p[l+1][m-1]+p[l+1][m]×2+p[l+1][m+1]
となる。
【0143】
ここで、シフタ651は、加算器642の出力A5を上位に1ビットシフトして接続し、最下位ビットには常に0を入力することで、加算器642の出力A5が2倍されて、シフタ651の出力A7とされる。
【0144】
次に、加算器652,653により、加算器641、643の出力A4、A6と、シフタ651の出力A7との総和をとる。シフタ654は、加算器653の出力A9を下位に4ビットシフトして5ビット目が最下位になるように接続することで、1/16の演算が実行され、その結果が出力ポートGaussOut0に出力される。以上で、単位マスク領域でのGaussianフィルタ処理が終了する。以降この処理を繰り返すことで、画像全体の処理が施される。
【0145】
(エッジ検出Laplacianフィルタ)
図11は、2次微分によりエッジを検出するLaplacianフィルタと呼ばれる画像フィルタのマスクデータの例である。このフィルタ処理を施すことにより、画像の輪郭検出を行うことができる。
【0146】
図12は、図11のLaplacianフィルタ処理を実現する回路(回路名Laplace)の回路構成の一例である。まず、元の画像ファイルからフィルタ処理を行うマスク領域のうち、p[l][m],p[l-1][m],p[l][m-1],p[l][m+1],p[l+1][m]の5画素分のデータを、1画素あたり8ビットデータとして、回路に転送する。
【0147】
転送された5画素分のデータは、回路の入力ポートLaplaceIn0、LaplaceIn1、LaplaceIn2、LaplaceIn3、LaplaceIn4にそれぞれ入力され、最初のクロックでレジスタ661、662、663、664、665に入力される。入力されたデータはレジスタの出力D4、D5、D6、D7、D8とされ、出力D4とD5が加算器671に入力され、出力D6とD7が加算器672に入力される。そして、加算器671、672および673による演算によって、加算器673の出力A13は、
A13=p[l-1][m]+p[l][m-1]+p[l][m+1]+p[l+1][m]
となる。
【0148】
一方、シフタ675はレジスタ665の出力D8を上位に2ビットシフトして接続し、下位2ビットは常に0を入力することで、シフタ675の出力A14は、
A14=4×p[l][m]
となる。
【0149】
そして、減算器674によりシフタ675の出力A14から、加算器673の出力A13の減算が行われ、この減算器674の出力A15は、
A15=4×p[l][m]−(p[l-1][m]+p[l][m-1]+p[l][m+1]+p[l+1][m])
となり、結果が出力ポートLaplaceOut0に出力される。以上で、単位マスク領域でのLaplacianフィルタ処理が終了する。以降この処理を繰り返すことで、画像全体の処理が施される。
【0150】
(階調変換)
図13は、画像の単一画素の階調変換を行うフィルタを実現する回路(回路名Gamma)の回路例を示す。たとえば、図14のグラフに示した入出力関係のガンマ変換を行うことで、画像の濃度分布を変換してコントラストを補正することができる。
【0151】
この例では、ルックアップテーブル(LUT)方式を用いている。すなわち、入力ポートGammaIn0に対し、ルックアップテーブルLUTを参照して、図14のグラフに示した値に対応する値を出力ポートGammaOut0に出力する。
【0152】
ルックアップテーブルLUTは、SRAMやROMなどのメモリ回路でテーブルデータを、予め設定することで実現することができる。また、図14のグラフに従う入出力の真理値表を作成して、アンドゲート、オアゲート、イクスクルーシブオアゲートなどのロジックゲートで回路を構成することでルックアップテーブルLUTを実現することもできる。
【0153】
この階調変換の動作は、元の画像データから、画素データp[l][m]を、順次、入力データとして回路に転送し、この入力データに対する出力データをルックアップテーブルLUTを参照して求め、出力するものである。
【0154】
(シャープネス処理の手順)
シャープネス処理を行うアプリケーションプログラムの処理手順を図15のフローチャートに示す。アプリケーションプログラムは、はじめに、画像のコントラストを上げてノイズを除去するために画像前処理を行う(ステップS201)。次に、画像前処理をした画像から、画像の輪郭を抽出するためにエッジ検出処理を行う(ステップS202)。最後に、抽出されたエッジ画像データを、画像前処理した画像データに加える(ステップS203)。
【0155】
アプリケーションプログラム101は、画像前処理とエッジ検出処理をハードウエア処理部103で実行し、エッジ画像データの加算をCPU102で実行する。
【0156】
CPU102で実行される画像データの加算は、通常のCPUを用いた情報処理手順で実行されるので、ハードウエア処理部103で実行される画像前処理とエッジ検出処理を、プログラマブル論理回路のアドレスと回路情報との関係を示しながら、次に説明する。
【0157】
[FPGAタイプのプログラマブル論理回路のアドレス構成]
この実施例で用いるFPGAタイプのプログラマブル論理回路は、列方向に32個を、また、行方向に32個を、それぞれ配置した合計1024個の論理セルで構成される。ひとつの論理セルは、64アドレスのコンフィギュレーションメモリで設定され、1アドレスのコンフィギュレーションメモリは8ビットのデータを保持する。すなわち、ひとつの論理セルは、64バイトの回路データで設定される。
【0158】
図16にコンフィギュレーションメモリのアドレス設定の方法を示す。プログラマブル論理回路のセル座標は、左下を原点(0,0)として定義される。ひとつの論理セルを設定するコンフィギュレーションメモリは、8×8のメモリ空間に対応し、プログラマブル論理空間全体で256×256のメモリ空間を構成する。アドレスは、16ビットアドレスで「0x0000」を開始アドレスとして、セル座標の原点(0,0)から「0xFFFF」まで定義される。
【0159】
このとき、アドレスとセル座標は次の関係を持つ。すなわち、図16の表に示すように、16ビットアドレスA[15:0]の上位8ビットA[15:8]が、256×256のメモリ空間の列アドレスに、下位8ビットA[7:0]が、当該メモリ空間の行アドレスに、それぞれ対応する。
【0160】
そして、16ビットアドレスA[15:0]の5ビットA[15:11](8ビットの列アドレスの上位5ビット)が列セル座標に、3ビットA[10:8](8ビットの列アドレスの下位3ビット)が列メモリ座標に、それぞれ対応する。また、16ビットアドレスA[15:0]の5ビットA[7:3](8ビットの行アドレスの上位5ビット)が行セル座標に、3ビットA[2:0](8ビットの行アドレスの下位3ビット)が行メモリ座標に、それぞれ対応する。この関係を用いることにより、参照アドレスから入出力ポート情報のオフセットセル座標を簡単に知ることができる。
【0161】
(画像前処理)
ハードウエア処理部103で実行する画像前処理の手順を図17のフローチャートに示す。
【0162】
アプリケーションプログラム101は、回路情報取得部105に、回路名「PreProcess(前処理)」を伝えて、ハードウエア処理部103に、前処理回路を構成するように指示する(前述の図6のステップS101および図17のステップS211)。
【0163】
すると、前述したように、回路情報取得部105は、回路名「PreProcess」を編集部300に伝え、編集部300は、図6、図7、図8に示した手順に従って参照解決処理と再配置処理を行い、記憶部200に記憶されている回路情報を用いて、画像前処理の回路の回路情報を生成する。
【0164】
この例の場合、図18に示すように、回路名「PreProcess」の回路情報には、参照回路名「Gamma」および「Gauss」が、ヘッダ部に記述されており、そして、コード部(データ部)には、回路名「Gamma」を、アドレス「0x0000」、「0x0010」、「0x0020」に、回路名「Gauss」を、アドレス「0x2000」に、それぞれ参照するように記述されている。
【0165】
このため、参照解決の処理(図6のステップS103、図7参照)において、記憶部200は、編集部300からの回路名「PreProcess」の照会に対して、参照回路名「Gamma」と「Gauss」を返す。つぎに、編集部300は、回路名「Gamma」と「Gauss」を記憶部200に照会するが、図18に示すように、この例の場合には、どちらの回路も参照回路を持たないので、ここで、参照解決処理(ステップS103)が終了する。
【0166】
編集部300において、再配置の処理(図6のステップS104)では、回路名「Gamma」の回路データのアドレスADRを、それぞれその参照アドレス分である「0x0000」、「0x0010」、「0x0020」だけオフセットして、参照元の回路名「PreProcess」の回路データに結合する。また、回路名「Gauss」の回路データを、その参照アドレス分である「0x2000」だけオフセットして、参照元の回路名「PreProcess」の回路データに結合する。
【0167】
また、参照元回路である回路名「PreProcess」の回路データ部の、回路名「Gamma」の参照アドレス「0x0000」、「0x0010」、「0x0020」は、それぞれセル座標(0、0)、(0,2)、(0,4)に対応し、また、回路名「Gauss」の参照アドレス「0x2000」は、セル座標(4,0)に対応するので、回路名「Gamma」の入出力ポート座標を、(0,0)、(0,2)、(0,4)だけオフセットし、また、回路名「Gauss」の入出力ポート座標を、(4,0)だけオフセットして、参照元の回路名「PreProcess」の回路の入出力ポート座標に結合する。
【0168】
編集部300で、回路名「PreProcess」の回路の回路情報の生成が終わると、編集部300から回路情報取得部105へ、その回路情報が転送される(図6のステップS106)。
【0169】
回路情報取得部105は、転送されてきた回路情報の回路データを、ハードウエア処理部103のプログラマブル論理回路104にロードして、このプログラマブル論理回路103に前処理回路を構成する(図6のステップS106)。このとき、プログラマブル論理回路104に構成された前処理回路の回路配置を図19に示す。
【0170】
そして、回路情報取得部105は、また、入出力ポート情報を、アプリケーションプログラム101に提供する(図6のステップS107および図17のステップS212)。
【0171】
入出力ポート情報を受け取ったアプリケーションプログラム101は、その入出力ポート情報に基づき、ハードウエア処理部103のプログラマブル論理回路104に構成された画像前処理回路の入力ポートである「GammaIn0(0,0)」、「GammaIn1(0,2)」、および「GammaIn2(0,4)へ画像データを送り(ステップS213)、また、出力ポートである「GaussOut0(10,0)」から前処理を行った画像データを受け取る(ステップS214)。
【0172】
このとき、図19に示すように、入出力ポート情報における出力ポート「GammaOut0(3,0)」、出力ポート「GammaOut1(3,2)」、出力ポート「GammaOut2(3,4)」は、入力ポート「GaussIn0(4,0)」、入力ポート「GaussIn1(4,2)」、入力ポート「GaussIn2(4,4)」と隣接しているので、これらは内部接続されているポートであるとアプリケーションプログラム101が判断する。
【0173】
よって、アプリケーションプログラム101は、「GammaIn0(0,0)」、「GammaIn1(0,2)」、「GammaIn2(0,4)」が回路「PreProcess」の入力ポートであり、「GaussOut0(10,0)」が回路「PreProcess」の出力ポートであるとが判断する。
【0174】
プログラマブル論理回路104に構成された画像前処理の回路の入力ポートへの画像データの入力と、それに対応する出力ポートからの画像データの受け取り処理を、全ての画像データについて行ったことを確認すると(ステップS215)、この画像前処理の処理が終了する。
【0175】
(エッジ検出処理)
つぎに、アプリケーションプログラム101は、前処理を行った画像データにエッジ検出処理を行う(図15のステップS202)。ハードウエア処理部103で実行するエッジ検出処理の手順を図20のフローチャートに示す。
【0176】
アプリケーションプログラム101は、回路情報取得部105に、回路名「Laplace」を伝え、ハードウエア処理部103に、エッジ検出回路を構成するように指示する(図6のステップS101および図20のステップS221)。すると、前述したように、回路情報取得部105は、回路名「Laplace」を編集部300に伝え、編集部300は、図6、図7、図8に示した手順に従って参照解決処理と再配置処理を行い、記憶部200に記憶されている回路情報を用いて、エッジ検出回路の回路情報を生成する。
【0177】
図18に示すように、この例の場合、回路名「Laplace」の回路情報は参照回路名を持たない。よって、図6のステップS103の参照解決の処理において、編集部300は、回路名「Laplace」を記憶部200に照会するが、参照回路を持たないので、その時点で参照解決の処理が終了する。
【0178】
図6のステップS104の再配置の処理では、回路名「Laplace」の回路情報は参照回路を持たないので、回路データと入出力ポート情報のオフセットを行う必要がなく、編集部300では、記憶部200から、回路名「Laplace」の回路情報を取得した時点で、再配置の処理を終了する。
【0179】
こうして、回路名「Laplace」の回路情報の生成が終わると、編集部300は、回路情報取得部105へ回路情報を転送する(図6のステップS105)。回路情報取得部105は、転送されてきた回路情報の回路データを、ハードウエア処理部103のプログラマブル論理回路104にロードして、このプログラマブル論理回路104に、Laplace回路を構成する(図6のステップS106)。このとき、プログラマブル論理回路104に構成されたLaplace回路の回路配置を図21に示す。
【0180】
この図21に示すように、Laplace回路のアドレス空間は、点線で示す前処理回路のアドレス空間と重なる部分を持つようになる。このため、Lapalce回路を構成すると、前処理回路は動作しなくなる。しかし、すでに、前処理回路を用いる処理は終了しているので、問題はない。
【0181】
そして、回路情報取得部105は、また、入出力ポート情報を、アプリケーションプログラム101に提供する(図6のステップS107および図20のステップS222)。
【0182】
入出力ポート情報を受け取ったアプリケーションプログラム101は、その入出力ポート情報に基づき、ハードウエア処理部103のプログラマブル論理回路104に構成された画像前処理回路の入力ポートである「LaplaceIn0(0,0)」、「LaplaceIn1(0,2)」、「LaplaceIn2(0,4)」、「LaplaceIn3(0,6)」、「LaplaceIn4(0,8)」へ画像データを送り(ステップS223)、また、出力ポートである「LaplaceOut0(3,0)」からエッジ検出処理を行った画像データを受け取る(ステップS224)。
【0183】
プログラマブル論理回路104に構成されたエッジ検出回路への入力ポートへの画像データの入力と、それに対応する出力ポートからの画像データの受け取り処理を、全ての画像データについて行ったことを確認すると(ステップS225)、このエッジ検出処理が終了する。
【0184】
(エッジデータの加算)
最後に、抽出されたエッジ画像データを、CPU102の処理により前処理した画像データに加えて、鮮明な画像を得て、シャープネス処理を終了する(図15のステップS203)。
【0185】
[第2の実施の形態]
以上説明した第1の実施の形態は、FPGAタイプのプログラマブル論理回路を用いた場合であるが、周期的に繰り返される論理セルで構成されるFPGAと同じように、CPLD(Complex Programble Logic Device)も周期的に繰り返される機能ブロックで構成されているので、このCPLDタイプのプログラマブル論理回路でも、同様にこの発明を適用することが可能である。
【0186】
[CPLDタイプのプログラマブル論理回路の説明]
CPLDタイプのプログラマブル論理回路700の平面構造を図22に、内部構造のブロック図を図23に、それぞれ示す。プログラマブル論理回路700は、回路情報を格納するためのコンフィギュレーションメモリ711と、機能ブロック701や、複数の配線で構成される相互接続線702からなる回路素子712と、入出力端子703とで構成される。
【0187】
コンフィギュレーションメモリ711は、EEPROM、SRAMなどの書き換え可能なメモリ素子で構成されている。回路データは、アドレスとデータとの対で構成される。コンフィギュレーションメモリ711にアドレスを与えて、そのアドレスに対応するメモリセルにアドレスと対になったデータが格納されると、このデータに従って、機能ブロック701内の回路構成や、機能ブロック701と入出力端子703を相互に接続する相互接続線702の接続状態が再構成される。コンフィギュレーションメモリ711の一部分を書き換えることにより、プログラマブル論理回路700が動作中であっても、回路を部分的に再構成することができる。
【0188】
プログラマブル論理回路700に再構成された回路素子712に、入出力端子703を介して、処理すべきデータが入力され、また、その処理結果が出力される。
【0189】
後述するように、機能ブロック701は、行方向の相互接続線702からデータを入力し、列方向の相互接続線702へデータを出力する。よって、入力データは、行方向の相互接続線702に繋がる入出力端子703より入力され、マルチプレクサ705で指定される相互接続線702に入力される。また、出力データは、マルチプレクサ704で指定される列方向の相互接続線702に繋がる入出力端子703から出力される。データ入出力先の相互接続線702は、相互接続線のそれぞれの配線を示すチャネルを、制御コードによって、アプリケーションプログラム101が指定する。
【0190】
[機能ブロックの構造]
機能ブロック701の構造を図24に示す。すなわち、機能ブロック701は、ANDアレイ801、セレクトマトリクス802、および16個のマクロセル803で構成される。機能ブロック701のANDアレイ801には、行方向の相互接続線702から32本の入力線が接続される。
【0191】
また、各マクロセル803から、1本ずつの出力線がマルチプレクサ804で指定される列方向の相互接続線702に接続されるとともに、各マクロセル803からの出力がANDアレイ801にフィードバックされるように構成されている。
【0192】
ひとつのマクロセル803に対応する詳細な機能ブロック701の構造を、図25に示す。
【0193】
ひとつのマクロセル803に対応するANDアレイ801は、行方向の相互接続線702からの入力(32本)およびその反転入力(32本)と、マクロセル803からのフィードバック(16本)およびその反転入力(16本)からなる列方向の配線と、各マクロセル803当り、5個のAND素子821〜825(セレクトマトリクス802に入力されるAND素子)の入力線からなる行方向の配線によるマトリクス配線とで構成される。
【0194】
コンフィギュレーションメモリ711のデータに従って、ANDアレイ801のマトリクス配線の交点が接続されて、マクロセル803への入力が決まる。次に、セレクトマトリクス802は、コンフィギュレーションメモリ711のデータに従って、一つのマクロセルに対して配置されている5個のAND素子および他のマクロセルに配置されているAND素子から選んだ出力を、OR素子8031に入力する。OR素子8031の出力はレジスタ8032で記憶される。このようにして、良く知られているAND−OR論理を構成する。
【0195】
[機能ブロック間の接続]
図24に示すように、機能ブロック701はマルチプレクサ805を介して行方向の相互接続線702へ出力することも可能である。行方向の相互接続線702に接続された機能ブロック701の出力は、他の機能ブロック701の入力となることができる。
【0196】
また、図22に示すように、行方向と列方向の相互接続線702を接続するスイッチ706が、相互接続線702の交差部に備えられることがある。このスイッチ706を介して、列方向の相互接続線702へ出力された機能ブロック701の出力を、行方向の相互接続線702に接続することにより、機能ブロック701の出力を他の機能ブロック701の入力とすることができる。
【0197】
以上のように、周期的に繰り返される論理セルで構成されるFPGAと同じように、CPLDも周期的に繰り返される機能ブロックで構成されているので、第1の実施の形態で示した手順を、ハードウエア処理部103がCPLDタイプのプログラマブル論理回路で構成される場合にも適用することができる。このことを、前述したシャープネス処理における画像前処理回路を、CPLDタイプのプログラマブル論理回路に構成した場合の実施例として示す。
【0198】
[フィルタ回路の構成]
既に知られているように、FPGAタイプのプログラマブル論理回路に構成することができる回路は、CPLDタイプのプログラマブル論理回路に構成することができる。この実施例の場合は、Gaussianフィルタ処理を実現する回路(回路名Gauss)は、6個の機能ブロックを用いて構成することができ、階調変換を行うフィルタを実現する回路(回路名Gamma)は、1個の機能ブロックで構成することができる。
【0199】
このとき、機能ブロックの出力を、マルチプレクサ804を介して列方向の相互接続線702に出力すると共に、マルチプレクサ805を介して行方向の相互接続線702に出力するように回路を構成することが必要である。このように構成することにより、後で示すように、オフセットして接続された回路は、接続した回路が行方向の相互接続線702に出力した信号を、入力として受け取ることができる。また、最終的な出力は、列方向の相互接続線702を介してアプリケーションプログラムに受け渡される。
【0200】
[CPLDタイプのプログラマブル論理回路のアドレス構成]
この実施例で用いるCPLDタイプのプログラマブル論理回路は、列方向に32個を、行方向に32個を、それぞれ配置した合計1024個の機能ブロックで構成される。ひとつの機能ブロックは、64アドレスのコンフィギュレーションメモリで設定され、1アドレスのコンフィギュレーションメモリは、8ビットのデータを保持する。すなわち、ひとつの機能ブロックは、64バイトの回路データで設定される。
【0201】
コンフィギュレーションメモリのアドレス設定の方法は、図16に示したFPGAタイプのプログラマブル論理回路の場合と同じである。すなわち、プログラマブル論理回路の機能ブロック座標は、左下を原点(0,0)として定義される。ひとつの機能ブロックを設定するコンフィギュレーションメモリは、8×8のメモリ空間に対応し、プログラマブル論理空間全体で256×256のメモリ空間を構成する。アドレスは、16ビットアドレスで、「0x0000」を開始アドレスとして、機能ブロックの原点(0,0)から、「0xFFFF」まで定義される。
【0202】
このとき、アドレスと機能ブロックは次の関係を持つ。16ビットアドレスA[15:0]の上位8ビットA[15:8]が、256×256のメモリ空間の列アドレスに、下位8 ビットA[7:0]が行アドレスに、それぞれ対応する。また、16ビットアドレスA[15:0]の5ビットA[15:11]が列機能ブロック座標に、5ビットA[7:3]が行機能ブロック座標に、それぞれ対応する。この関係を用いることにより、参照アドレスから入出力ポート情報のオフセット機能ブロック座標を簡単に知ることができる。
【0203】
(画像前処理)
ハードウエア処理部103で実行する画像前処理の手順は、前述の図17のフローチャートと同じである。アプリケーションプログラム101は、回路情報取得部105に、回路名「PreProcess」を伝えて、ハードウエア処理部103に、前処理回路を構成するように指示する。その後、前述の場合と同様に、編集部300、記憶部200とで、図6、図7、図8に示した手順に従って、参照解決処理と再配置処理を行い、前処理回路の回路情報が生成される。
【0204】
この実施例の場合、図26に示すように、回路名「PreProcess」の回路情報は、回路名「Gamma」を、アドレス「0x0000」と、「0x0008]と、「0x0010」とにおいて参照し、回路名「Gauss」を、アドレス「0x0800」において参照するように記述している。
【0205】
このため、参照解決の処理において、記憶部200は、編集部300から回路名「PreProcess」の照会に対して、回路名「Gamma」と「Gauss」を返す。つぎに、編集部300は、回路名「Gamma」と「Gauss」を、記憶部200に照会するが、どちらの回路も参照回路を持たないので、参照解決の処理が終了する。
【0206】
再配置の処理では、回路名「Gamma」の回路データのアドレスを、それぞれの参照アドレス分である「0x0000」、「0x0008」、「0x0010」だけオフセットして、参照元の回路名「PreProcess」の回路データに結合する。また、回路名「Gauss」の回路データを、その参照アドレス分である「0x0800」だけオフセットして、前処理の回路データに結合する。
【0207】
また、参照元回路である回路名「PreProcess」の回路データ部の、回路名「Gamma」の参照アドレス「0x0000」、「0x0008」、「0x0010」は、それぞれ機能ブロック座標(0,0)、(0,1)、(0,2)に対応し、また、回路名「Gauss」の参照アドレス「0x0800」は、機能ブロック座標(1,0)に対応するので、回路名「Gamma」の入出力ポート座標を、(0,0)、(0,1)、(0,2)だけオフセットして、また、回路名「Gauss」の入出力ポート座標を(1,0)だけオフセットして、参照元の回路名「PreProcess」の回路の入出力ポート座標に結合する。
【0208】
前処理の回路情報の生成が終わると、編集部300から取得部105へ回路情報が転送される。取得部105は、転送された回路情報の回路データをプログラマブル論理回路にロードして前処理回路を構成する。また、入出力ポート情報を、アプリケーションプログラムに提供する。
【0209】
図27に示すように、回路名「Gamma」の回路の出力は行方向の相互接続線を介して、回路名「Gauss」の回路の入力に接続される。また、回路名 「Gauss」の回路の出力は、列方向の相互接続線を介してアプリケーションプログラムに受け渡される。
【0210】
以上説明した第1の実施の形態および第2の実施の形態によれば、回路情報をプログラマブル論理回路のコンフィギュレーションメモリに直接ロードできる形式で記述して回路情報を再利用できるので、大きな計算量を必要とする配置配線処理を行うことなく、短時間の処理で回路情報を再利用することができる。
【0211】
これにより、アプリケーションプログラムの実行時に、回路情報を組み合せて必要な回路を構成できるので、前もってアプリケーションプログラムを開始する前に回路を構成する必要が無くなる。
【0212】
また、アプリケーションプログラムの実行時に、回路情報を組み合せて必要な回路を構成できるので、回路を構成する回路情報の修正や改良が発生したときでも、自由度の高い回路情報の再構成を可能にする。
【0213】
また、回路情報を他の回路情報を参照して記述することができるので、回路の一部を変更または改良した場合でも、回路全体の回路情報を再作成する必要がなく、変更した参照回路の回路情報のみを再作成すれば良いため、高速に回路の再構成ができる。
【0214】
また、ネットワーク上に配置された記憶手段に格納された回路情報を参照できるので、ネットワークを介して、回路設計者やアプリケーションプログラマが回路情報を共有して再利用することができるため、より自由度の高い回路の再構成ができる。
【0215】
回路情報を参照して共有したときに、アプリケーションプログラムに対して入出力ポート情報が提供されるので、回路の実装形態にとらわれることなく、アプリケーションプログラムを容易に作成することができる。また、アプリケーションプログラムを作成した後でも、回路の実装形態を必要に応じて容易に変更することができる。
【0216】
なお、以上の説明では、参照解決の処理は、編集部300と記憶部200とで行うようにしたが、編集部300のみで行うようにすることもできる。すなわち、編集部300が回路名を記憶部200に渡すと、記憶部200は、その回路名の回路情報を編集部300に送る。編集部300は、この回路情報を解析して、参照回路名があるか否か判別し、参照回路名があれば、その参照回路名を記憶部200に渡し、その参照回路名の回路情報を取得する。以下、これを繰り返して、回路情報取得部105から指定された回路の回路情報を生成するために必要なすべての回路情報を記憶部200から取得することができる。
【0217】
また、回路情報の付加情報部(ヘッダ部)には参照回路名を記述せずに、回路データ部を解析することで、参照回路名を検出するようにすることもできる。しかし、その場合には、参照回路名を検出するために、回路データを解析する時間が必要になる。これに対して、上述の実施の形態のように、付加情報部に参照回路名を記述しておくようにした場合には、参照回路名を直接的に、即座に検知することができるものである。
【0218】
【発明の効果】
以上説明したように、この発明によれば、アプリケーションプログラムの少なくとも一部を、プログラマブル論理回路で処理する情報処理システムにおいて、予め、プログラマブル論理回路の回路情報を持つことが不要である情報処理システムが提供できる。
【0219】
また、この発明によれば、過去に設計された回路情報を再利用しながらも、配置配線するなどの回路情報を組み合せるための計算量を大幅に削減することができる。
【0220】
また、この発明によれば、プログラマブル論理回路に構成された回路を用いるアプリケーションで処理を実行するときに、例えば基本モジュールを複数個組み合わせて回路情報を生成する場合であっても、アプリケーションプログラムを開始する前に、基本モジュールを複数個組み合わせて回路情報を生成する処理をしておく必要がなく、回路を構成する回路情報の修正や改良が発生したときでも、自由度の高い回路情報の再構成が可能になる。
【図面の簡単な説明】
【図1】この発明による情報処理システムの実施の形態の全体の概要を示すブロック図である。
【図2】この発明による回路情報管理方法の実施の形態を説明するための図である。
【図3】この発明による情報処理システムの実施の形態のハードウエア構成図である。
【図4】FPGAタイプのプログラマブル論理回路を説明するための図である。
【図5】FPGAタイプのプログラマブル論理回路を説明するための図である。
【図6】この発明による情報処理システムの実施の形態による具体的な処理手順のフローチャートである。
【図7】図6のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図8】図6のフローチャートの一部の処理の詳細な手順のフローチャートである。
【図9】この発明による情報処理システムの実施の形態で用いる具体的な処理の例を説明するための図である。
【図10】プログラマブル論理回路に構成された回路例を示す図である。
【図11】この発明による情報処理システムの実施の形態で用いる具体的な処理の例を説明するための図である。
【図12】プログラマブル論理回路に構成された回路例を示す図である。
【図13】この発明による情報処理システムの実施の形態で用いる具体的な処理の例を説明するための図である。
【図14】この発明による情報処理システムの実施の形態で用いる具体的な処理の例を説明するための図である。
【図15】この発明による情報処理システムの実施の形態で実行する具体的な処理手順の例を示すフローチャートである。
【図16】実施の形態において、プログラマブル論理回路に回路構成するためのアドレス配置を説明するための図である。
【図17】この発明による情報処理システムの実施の形態で実行する具体的な処理手順の例を示すフローチャートである。
【図18】図17の処理手順の説明に用いる図である。
【図19】図17の処理手順の説明に用いる図である。
【図20】この発明による情報処理システムの実施の形態で実行する具体的な処理手順の例を示すフローチャートである。
【図21】図20の処理手順の説明に用いる図である。
【図22】CPLDタイプのプログラマブル論理回路を説明するための図である。
【図23】CPLDタイプのプログラマブル論理回路を説明するための図である。
【図24】CPLDタイプのプログラマブル論理回路を説明するための図である。
【図25】CPLDタイプのプログラマブル論理回路を説明するための図である。
【図26】CPLDタイプのプログラマブル論理回路を用いる場合の具体的な処理手順の説明に用いる図である。
【図27】CPLDタイプのプログラマブル論理回路に構成された回路配置例を示す図である。
【図28】従来の情報処理システムの一例を説明するための図である。
【図29】図28の従来例で生成されるプログラマブル論理回路の回路例を示す図である。
【図30】従来の情報処理システムの他の例を説明するための図である。
【符号の説明】
100 情報処理部
101 アプリケーションプログラム
102 CPU
103 ハードウエア処理部(処理手段)
104 プログラマブル論理回路
105 回路情報取得部(取得手段)
200 記憶部
300 編集部
201 回路情報
202 ヘッダ部(付加情報部)
203 コード部(回路データ部)
ADR アドレス
DT 回路データ
400 ネットワーク
500 コンピュータシステム

Claims (8)

  1. アプリケーションプログラムによる処理の少なくとも一部分を、プログラマブル論理回路で処理する情報処理システムにおいて、
    前記プログラマブル論理回路を備え、前記アプリケーションプログラムからの命令により、前記プログラマブル論理回路に構成された処理回路を用いて処理を実行する処理手段と、
    前記プログラマブル論理回路に前記処理回路を構成するための複数個の回路情報を、回路情報識別子とそれぞれ対応させて記憶する記憶手段と、
    前記プログラマブル論理回路に構成する前記処理回路を特定するために前記アプリケーションプログラムにより指定される前記回路情報識別子からなる指定情報を受け、前記指定情報の前記回路情報識別子に基づいて、前記処理回路の回路情報を生成するのに必要な回路情報を、前記記憶手段から取得し、取得した回路情報から前記処理回路の回路情報を生成する機能を備える編集手段と、
    記指定情報前記編集手段に渡し、前記編集手段から、前記生成された前記処理回路の回路情報を取得し、当該取得した処理回路の回路情報により前記処理手段のプログラマブル論理回路に前記処理回路を構成する取得手段と、
    を備えることを特徴とする情報処理システム。
  2. 請求項1に記載の情報処理システムにおいて、
    前記記憶手段を構成する部分と、前記編集手段を構成する部分と、前記取得手段および処理手段を構成する部分とが、ネットワークを介して接続されていることを特徴とする情報処理システム。
  3. 請求項1または請求項2に記載の情報処理システムにおいて、
    前記記憶手段に記憶される複数個の回路情報のそれぞれは、自己の前記回路情報識別子を備えるとともに、前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスの情報と、前記アドレスにおいて構成される回路データとの対からなるコード部を備え、
    前記回路情報の一部または全部を他の回路情報で構成する場合には、前記アドレスにおいて構成される回路データとして、前記他の回路情報の回路情報識別子を参照識別子として備えるものであり、
    前記編集手段は、前記記憶手段から取得した前記指定情報により指定された前記処理回路の回路情報が前記参照識別子を含む場合には、前記参照識別子で示される前記他の回路情報を前記記憶手段から取得して、前記参照識別子が回路データとして記述されていた前記アドレスにおいて、前記処理回路の回路情報の前記回路データと、前記参照識別子で示される前記他の回路情報の回路データとを合成することにより、前記指定情報により指定された前記処理回路の回路情報を生成する
    ことを特徴とする情報処理システム。
  4. 請求項1または請求項2に記載の情報処理システムにおいて、
    前記記憶手段に記憶される複数個の回路情報のそれぞれは、
    前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスの情報と、前記アドレスにおいて構成される回路データとの対からなるコード部と、付加情報部とからなり、
    前記付加情報部は、自己の回路情報の識別子を含むとともに、当該回路情報の一部または全部を他の回路情報で構成する場合には、当該他の回路情報の回路情報識別子を参照識別子として含むものであり、
    前記コード部は、前記回路情報の一部または全部を他の回路情報で構成する場合には、前記アドレスにおいて構成される回路データとして、前記付加情報部に含まれる前記他の回路情報の回路情報識別子を参照識別子として備えるものであり、
    前記編集手段は、前記取得手段からの前記指定情報により指定される前記処理回路の回路情報を、その識別子により前記記憶手段に照会して取得し、
    前記記憶手段は、前記編集手段からの照会に応じて、前記識別子で示される前記処理回路の回路情報を前記編集手段に返すと共に、前記識別子で示される前記処理回路の回路情報の前記付加情報部が前記参照識別子を含む場合には、その参照識別子を前記編集手段に返し、
    前記編集手段は、前記記憶手段から入手した前記付加情報部の前記参照識別子を用いて、前記記憶手段から前記他の回路情報を取得して、前記コード部において前記参照識別子が回路データとして記述されていた前記アドレスにおいて、前記処理回路の回路情報の前記回路データと、前記コード部の前記参照識別子で示される前記他の回路情報の回路データとを合成することにより、前記指定情報により指定された前記処理回路の回路情報を生成する
    ことを特徴とする情報処理システム。
  5. 請求項3または請求項4に記載の情報処理システムにおいて、
    前記編集手段においては、前記指定情報により指定された前記処理回路の回路情報の、前記回路データとして前記参照識別子が記述された前記コード部のアドレスの値を、当該参照識別子で示される前記他の回路情報の前記コード部の全てのアドレスの値に加えて、オフセットすることにより、前記処理回路の回路情報と前記参照識別子に対応する前記他の回路情報とを結合する
    ことを特徴とする情報処理システム。
  6. 請求項に記載の情報処理システムにおいて、
    前記記憶手段に記憶される複数個の回路情報のそれぞれの付加情報部には、
    前記プログラマブル論理回路に構成する前記処理回路の信号入力ポート名および信号出力ポート名と、前記信号入力ポート名および信号出力ポート名で示される各信号入力ポートおよび信号出力ポートの前記プログラマブル論理回路上の位置座標の対からなる入出力ポート情報が記述されており、
    前記取得手段は、前記編集手段から取得した前記処理回路の回路情報の付加情報部に記録されている前記入出力ポート情報を前記アプリケーションプログラムの実行部に通知し、
    前記アプリケーションプログラムの実行部は、前記通知された前記入出力ポート情報に基づいて、前記プログラマブル論理回路に構成された前記処理回路にデータを入出力させるように制御する
    ことを特徴とする情報処理システム。
  7. 請求項に記載の情報処理システムにおいて、
    前記編集手段においては、前記参照識別子で示される前記他の回路情報の信号入力ポートおよび信号出力ポートの位置座標に、前記指定情報により指定された前記処理回路の回路情報の回路データとして前記参照識別子が記述されたアドレスから算出される座標を加えて、前記処理回路と、前記他の回路情報の信号入出力ポートを結合する
    ことを特徴とする情報処理システム。
  8. 請求項または請求項に記載の情報処理システムにおいて、
    前記取得手段は、
    前記編集手段から取得した回路情報を、前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスと回路データとの対と、前記プログラマブル論理回路に構成する回路の信号入力ポート名および信号出力ポート名と、前記信号入力ポート名および前記信号出力ポート名で示される各信号入力ポートおよび信号出力ポートの位置座標との対に分離し、
    前記プログラマブル論理回路のコンフィギュレーションメモリのアドレスと回路データの対を、前記処理手段にロードして前記プログラマブル論理回路に回路を構成し、
    前記プログラマブル論理回路に構成する回路の前記信号入力ポート名および前記信号出力ポート名と、前記信号入力ポート名および前記信号出力ポート名で示される各信号入力ポートおよび信号出力ポートの位置座標の対からなる入出力ポート情報を、前記アプリケーションプログラムの実行部に通知し、
    前記アプリケーションプログラムの実行部は、前記通知された前記入出力ポート情報に基づいて、前記プログラマブル論理回路に構成された前記処理回路にデータを入出力させるように制御する
    ことを特徴とする情報処理システム。
JP16944098A 1998-06-17 1998-06-17 情報処理システム、回路情報管理方法および回路情報記憶装置 Expired - Fee Related JP3809727B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP16944098A JP3809727B2 (ja) 1998-06-17 1998-06-17 情報処理システム、回路情報管理方法および回路情報記憶装置
US09/280,681 US6336209B1 (en) 1998-06-17 1999-03-29 Information processing system that processes portions of an application program using programmable logic circuits

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16944098A JP3809727B2 (ja) 1998-06-17 1998-06-17 情報処理システム、回路情報管理方法および回路情報記憶装置

Publications (2)

Publication Number Publication Date
JP2000010770A JP2000010770A (ja) 2000-01-14
JP3809727B2 true JP3809727B2 (ja) 2006-08-16

Family

ID=15886653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP16944098A Expired - Fee Related JP3809727B2 (ja) 1998-06-17 1998-06-17 情報処理システム、回路情報管理方法および回路情報記憶装置

Country Status (2)

Country Link
US (1) US6336209B1 (ja)
JP (1) JP3809727B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5476211A (en) * 1993-11-16 1995-12-19 Form Factor, Inc. Method of manufacturing electrical contacts, using a sacrificial member
US7099812B2 (en) * 1999-09-24 2006-08-29 Intrinsity, Inc. Grid that tracks the occurrence of a N-dimensional matrix of combinatorial events in a simulation using a linear index
US6851094B1 (en) * 2000-02-28 2005-02-01 Cadence Design Systems, Inc. Automated method and system for selecting and procuring electronic components used in circuit and chip designs
JP2001312265A (ja) * 2000-05-02 2001-11-09 Sony Corp 画像表示装置
US7725860B1 (en) * 2000-06-19 2010-05-25 Herman Kwong Contact mapping using channel routing
US6513148B1 (en) * 2001-04-27 2003-01-28 Lsi Logic Corporation Density driven assignment of coordinates
US7840777B2 (en) * 2001-05-04 2010-11-23 Ascenium Corporation Method and apparatus for directing a computational array to execute a plurality of successive computational array instructions at runtime
US20030122584A1 (en) * 2001-07-02 2003-07-03 Boehm Fritz A. Software program that transforms an N-dimensional matrix of integers to a linear index
US7200735B2 (en) * 2002-04-10 2007-04-03 Tensilica, Inc. High-performance hybrid processor with configurable execution units
US6714040B1 (en) * 2002-06-03 2004-03-30 Xilinx, Inc. Automated boundary-scan chain composition method using a device database and access mechanism for storing and retrieving situation-dependent operation options
ES2253503T3 (es) * 2002-10-28 2006-06-01 Alcatel Metodo para almacenar propiedades de registro en una estructura de datos y estructura de datos relacionada.
US7685327B1 (en) * 2004-03-19 2010-03-23 Xilinx, Inc. Identification of multi-device systems
US7546394B1 (en) * 2004-03-19 2009-06-09 Xilinx, Inc. Management of configuration data by generating a chain description data set that specifies an order of configuration chain for multi-device systems
US7454556B1 (en) 2005-02-02 2008-11-18 Xilinx, Inc. Method to program non-JTAG attached devices or memories using a PLD and its associated JTAG interface
US20060190111A1 (en) * 2005-02-03 2006-08-24 Wang Beniz System and method of designing a product or a module therein based on experiences of modular designs accumulated previously
US7568198B2 (en) * 2006-01-10 2009-07-28 National Instruments Corporation Control of tasks in a programmable logic controller
GB0709097D0 (en) * 2007-05-11 2007-06-20 Univ Leicester Tick source
JP5407631B2 (ja) * 2009-07-21 2014-02-05 富士ゼロックス株式会社 回路情報生成装置、機能実行システム、及びプログラム
US10013212B2 (en) * 2015-11-30 2018-07-03 Samsung Electronics Co., Ltd. System architecture with memory channel DRAM FPGA module
WO2017175708A1 (ja) * 2016-04-07 2017-10-12 日本電気株式会社 半導体装置、コンフィグレーション方法およびプログラムを記憶した記憶媒体
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10162921B2 (en) 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
CN112034331B (zh) * 2020-08-17 2023-04-18 北京时代民芯科技有限公司 一种基于fpga的电路模块测试方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4700187A (en) 1985-12-02 1987-10-13 Concurrent Logic, Inc. Programmable, asynchronous logic cell and array
JPH06232259A (ja) 1993-02-08 1994-08-19 Toshiba Corp Fpga回路設計装置及び方法
US5426591A (en) * 1994-01-28 1995-06-20 Vlsi Technology, Inc. Apparatus and method for improving the timing performance of a circuit
US5764525A (en) * 1994-01-28 1998-06-09 Vlsi Technology, Inc. Method for improving the operation of a circuit through iterative substitutions and performance analyses of datapath cells
US5937190A (en) * 1994-04-12 1999-08-10 Synopsys, Inc. Architecture and methods for a hardware description language source level analysis and debugging system
US5572712A (en) * 1994-09-30 1996-11-05 Vlsi Technology, Inc. Method and apparatus for making integrated circuits with built-in self-test
US5808921A (en) * 1996-01-12 1998-09-15 Hughes Aircraft Company Interface emulation system and method for applications utilizing embedded processors
JPH1078932A (ja) 1996-09-04 1998-03-24 Hitachi Ltd リコンフィグラブル・ネットワークコンピュータ
JP3349057B2 (ja) * 1997-02-24 2002-11-20 株式会社東芝 マルチタスク処理装置、マルチタスク処理方法およびマルチタスク処理表示方法

Also Published As

Publication number Publication date
JP2000010770A (ja) 2000-01-14
US6336209B1 (en) 2002-01-01

Similar Documents

Publication Publication Date Title
JP3809727B2 (ja) 情報処理システム、回路情報管理方法および回路情報記憶装置
JP3587095B2 (ja) 情報処理装置
Burns et al. A dynamic reconfiguration run-time system
JP4896243B2 (ja) マスクプログラム可能なロジックデバイスをプログラムする方法およびその方法によってプログラムされたデバイス
Otero et al. Dreams: A tool for the design of dynamically reconfigurable embedded and modular systems
US20060206850A1 (en) Automated system for designing and developing field programmable gate arrays
JP2003518666A (ja) 動的に再構成可能な論理回路のための物理設計を実現する方法
US6530071B1 (en) Method and apparatus for tolerating defects in a programmable logic device using runtime parameterizable cores
JP2001504958A (ja) ロジックデバイスのアレイを構成するための方法およびシステム
JP4212676B2 (ja) 情報処理システムおよび情報処理方法
US8106679B2 (en) Data processing system
JP2001320271A (ja) プログラマブル論理回路への回路の再構成方法および情報処理システム
Hagemeyer et al. A design methodology for communication infrastructures on partially reconfigurable FPGAs
JP2006172219A (ja) 半導体集積回路の自動設計装置、半導体集積回路の自動設計方法、及び半導体集積回路の自動設計プログラム
JP3573193B2 (ja) 情報処理システム
Raaijmakers Run-Time Partial Reconfiguration on the Virtex-II Pro
Koch Structured design implementation: a strategy for implementing regular datapaths on FPGAs
JP3489608B2 (ja) プログラマブル論理回路システムおよびプログラマブル論理回路装置の再構成方法
Zamacola et al. An integrated approach and tool support for the design of fpga-based multi-grain reconfigurable systems
Silva et al. Generation of partial FPGA configurations at run-time
JP3664215B2 (ja) 情報処理システム
JPH11232079A (ja) 情報処理システム
JP3544129B2 (ja) 情報処理システム
JP4123723B2 (ja) プログラマブル論理回路の再構成方法、プログラマブル論理回路の再構成システム
JPH09311886A (ja) 半導体集積回路の自動設計方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050824

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051020

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060515

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20100602

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110602

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110602

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120602

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130602

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140602

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees