(57)【要約】【課題】メモリ間のデータ転送に際してその転送に用いるバスをＣＰＵバスから切り離すことで、メモリ間のデータ転送時におけるＣＰＵバスの占有を無くし、ＣＰＵが別のメモリにアクセスできる一方、従来のＤＭＡ転送よりも高速にデータ転送ができる高速バス転送方式を提供する。【解決手段】本方式は、制御プログラムを実行するＣＰＵと、このＣＰＵに第１バスを介して第１ＦＰＧＡを接続し、上記第１ＦＰＧＡには、一方のデータ転送対象である第１メモリを接続し、また、当該第１ＦＰＧＡには、第２バスを介して第２ＦＰＧＡを接続し、上記第２ＦＰＧＡには、他方のデータ転送対象である第２メモリを接続してなり、上記第１、第２ＦＰＧＡは、相互に、上記ＣＰＵの動作クロックよりも高速のクロックに同期動作して、上記第２バスを介して、第１、第２メモリ間でのデータ転送の制御を行う回路ブロックにコンフィグレーションされる。【選択図】図１
2010049512.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムを実行するＣＰＵと、このＣＰＵに第１バスを介して第１ＦＰＧＡを接続し、上記第１ＦＰＧＡには、一方のデータ転送対象である第１メモリを接続し、また、当該第１ＦＰＧＡには、第２バスを介して第２ＦＰＧＡを接続し、上記第２ＦＰＧＡには、他方のデータ転送対象である第２メモリを接続してなり、
上記第１、第２ＦＰＧＡは、相互に、上記ＣＰＵの動作クロックよりも高速のクロックに同期動作して、上記第２バスを介して、上記第１、第２メモリ間でのデータ転送の制御を行う回路ブロックにコンフィグレーションされることで、上記ＣＰＵは、上記両ＦＰＧＡがデータ転送の制御中においても上記第１バスを用いることを可能としたことを特徴とする高速バス転送方式。
【請求項２】
それぞれが制御プログラムを実行するＣＰＵを内蔵した複数のＣＰＵモジュールを備え、各ＣＰＵモジュールは、制御プログラムを実行するＣＰＵと、このＣＰＵに第１バスを介して第１ＦＰＧＡを接続し、上記第１ＦＰＧＡに一方のデータ転送対象である第１メモリを共有メモリとして接続する一方、各ＣＰＵモジュールそれぞれの第１ＦＰＧＡを、モジュールバス上の第２ＦＰＧＡに接続すると共に、上記第２ＦＰＧＡに他方のデータ転送対象である第２メモリを接続してなり、
上記各ＣＰＵモジュール内の第１ＦＰＧＡと上記モジュールバス上の第２ＦＰＧＡとは、上記各ＣＰＵの動作クロックよりも高速のクロックに同期動作して、上記モジュールバスを介して、第１、第２メモリ間でのデータ転送の制御を行う回路ブロックにコンフィグレーションされることで、上記ＣＰＵは、上記両ＦＰＧＡがデータ転送の制御中においても上記第１バスを用いることを可能とした、ことを特徴とするマルチＣＰＵ構成のプログラマブルコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のメモリ間でデータを転送する高速バス転送方式ならびにマルチＣＰＵ構成のプログラマブルコントローラに関するものである。
【背景技術】
【０００２】
プログラマブルコントローラはシーケンスプログラムを実行してそれに接続された制御機器をシーケンス制御するようになっている。このようなプログラマブルコントローラにおいて、ＣＰＵモジュールにはモジュールバスを介して複数の入出力モジュール等の各種モジュールが接続されている。ＣＰＵモジュールに内蔵するＣＰＵはシーケンスプログラムの実行により、例えば入出力モジュールに対してデータ送信要求を行い、入出力モジュールはこれに応答してセンサなどの入力デバイスデータをＣＰＵ（プロフェッサ）に送信し、ＣＰＵはアクチュエータなどの出力デバイスを制御する。
【０００３】
このようなプログラマブルコントローラにおいて、ＣＰＵを介在させずに、ＤＭＡ（ダイレクト・メモリ・アクセス）コントローラにより、メモリ間でデータの受け渡しが行われる場合がある。
【０００４】
このＤＭＡを図３を参照して説明する。図３において、１はＣＰＵ、２はバス、３はＤＭＡコントローラ、４−６はメモリである。ＤＭＡコントローラ３は、ＣＰＵ１に対してバス２のバスマスタとなる要求を出し、ＣＰＵ１を停止させて、２つのメモリ５，６間でのデータ転送を行なう。ＤＭＡコントローラ３は、ＣＰＵ１の代わりにバスマスタとしてレジスタに設定されたデータ転送先アドレス、データ転送元アドレスおよびデータ転送数に従って、例えば、メモリ５，６間のデータ転送を行う。ＤＭＡ転送が完了すると、ＤＭＡコントローラ３はバスの制御権をＣＰＵ１へ返す。このようなＤＭＡ転送を行なうモードの１つに、バースト転送モードがある。このモードは、予めＤＭＡコントローラ３に設定した転送バイト数の転送を完了するまで一度に転送するもので、この間、バスの制御権はＤＭＡコントローラ３が持ち続ける。もう１つの方式は、サイクルスティールモードで、１ワード転送ごとにバス制御権をＣＰＵ１にあけ渡すものである。バースト転送モードは高速転送が可能であるが、転送期間中は、ＣＰＵ１が停止したままとなる。また、サイクルスティールモードは、低速で動作しながらＤＭＡ転送を行ない、ＣＰＵ１のバスアクセス時間やバス制御権を得る動作に時間が掛かり、処理の高速化ができない、という課題がある。さらに、従来では、ＤＭＡ転送速度がＣＰＵ１の動作クロックＣＰＵＣＬＫに支配されるものであり、それ以上の高速化が難しいという課題がある。
【０００５】
以上から、従来では、ＤＭＡ転送時にＣＰＵバス２が占有され、ＣＰＵ１は、ＤＭＡ転送中に、例えば、別のメモリ４にアクセスすることができないこと、動作速度がＣＰＵの動作クロックＣＰＵＣＬＫに支配されること、とによりさらなる高速化ができないという課題がある。
【０００６】
また、複数のＣＰＵを用いたマルチＣＰＵ構成のプログラマブルコントローラでは、データのメモリ間高速転送を図る場合に、特に、上記課題を解決することが求められる。マルチＣＰＵシステムでＤＭＡコントローラを用いた特許文献１を下記する。
【特許文献１】特開２００４−３２６４６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、メモリ間のデータ転送に用いるバスをＣＰＵが用いるＣＰＵバスから切り離すことで、ＣＰＵが上記データ転送中においても、当該ＣＰＵバスを用いることを可能となして、プログラマブルコントローラにおける一層の高速化を可能とした高速バス転送方式を提供するものである。
【課題を解決するための手段】
【０００８】
本発明による高速バス転送方式は、制御プログラムを実行するＣＰＵと、このＣＰＵにＣＰＵバスである第１バスを介して第１ＦＰＧＡを接続し、上記第１ＦＰＧＡには、一方のデータ転送対象である第１メモリを接続し、また、当該第１ＦＰＧＡには、外部バスである第２バスを介して第２ＦＰＧＡを接続し、上記第１、第２ＦＰＧＡは、相互に、上記ＣＰＵの動作クロックよりも高速のクロックに同期動作して、上記第２バスを介して、上記第１、第２メモリ間でのデータ転送の制御を行う回路ブロックにコンフィグレーションされることで、上記ＣＰＵは、上記両ＦＰＧＡがデータ転送の制御中においても上記第１バスを上記両ＦＰＧＡにバス権をあけ渡すことなく、用いることを可能とした、ことを特徴とするものである。
【０００９】
上記転送モードは、特に限定されない。
【００１０】
本発明によると、上記第１、第２両メモリ間でのデータ転送の制御を、ＣＰＵの動作クロックには支配されず、その動作クロックよりも高速のクロックで行うことができるので、データ転送のより高速化が可能となり、また、上記第１、第２両メモリ間でのデータ転送時には、上記両ＦＰＧＡにＣＰＵバスである第１バスをあけ渡さずに済み、ＣＰＵは、当該第１バスを用いて、例えば、ワークメモリ等に対して必要なワークを行うことができ、ＣＰＵを用いたプログラマブルコントローラや、このプログラマブルコントローラを用いるシステム全体の高速制御化が可能となる。
【発明の効果】
【００１１】
本発明によれば、ＣＰＵバスの占有を無くして、メモリ間のデータ転送が可能であるので、ＣＰＵはＣＰＵバスを用いて必要な作業が可能であり、また、メモリ間データ転送の制御動作がＣＰＵクロックに支配されず、それよりも高速のクロックで行うことができるので、従来のＤＭＡ転送よりも高速にデータ転送ができる高速バス転送方式を提供することができる。
【発明を実施するための最良の形態】
【００１２】
以下、添付した図面を参照して、本発明の実施の形態に係る高速バス転送方式およびこの方式によるマルチＣＰＵ構成のプログラマブルコントローラを説明する。
【００１３】
図１は本実施の形態のマルチＣＰＵ構成のプログラマブルコントローラの構成を示し、図１において、１０，２０はＣＰＵモジュール、３０はモジュールバス、４０は入出力モジュールである。ＣＰＵモジュール１０，２０は、モジュールバス３０に接続されている。ＣＰＵモジュール１０，２０は、それぞれ、制御プログラムとしてシーケンスプログラムを実行するＣＰＵ１１，２１を内蔵する。このＣＰＵ１１，２１の内部バスＢ１１，Ｂ２１（第１バス）にシステムプログラムを格納するシステムメモリ１２，２２、シーケンスプログラムを格納するプログラムメモリ１３，２３、ＣＰＵ１１，２１の作業等に用いるワークメモリ１４，２４、フラッシュメモリ等からなるコンフィグレーションデータメモリ１５，２５が接続されている。コンフィグレーションデータは、コンフィグレーションすべき回路構成のデータである。そして、この内部バスＢ１１，２１には、コンフィグレーションデータがコンフィグレーションされるＦＰＧＡ１６，２６が接続されている。
【００１４】
モジュールバス３０には複数の入出力モジュール４０が接続されている。この入出力モジュール４０は、ＦＰＧＡ４０ａ、メモリ４０ｂを内蔵している。
【００１５】
上記ＦＰＧＡ１６，２６，４０ａは、モジュールバス３０に接続されている。
【００１６】
ＦＰＧＡ１６，２６，４０ａは、ＳＲＡＭ型のフィールドプログラマブルゲートアレイ（Field Programmable Gate Array）である。ＦＰＧＡ１６，２６，４０ａは同構成であり、ＦＰＧＡ２６について説明する。ＦＰＧＡ２６は、ＬＵＴ（ルックアップテーブル）とフリップフロップとで構成される基本セルを縦横配列したものであり、ＬＵＴを書き換えることにより内部のハードウェアロジックを変更することができるようになっている。こうしたＦＰＧＡ２６は、論理ブロックを記述する回路ブロック情報をこれらに読み込ませることで、内部の論理ブロックと論理ブロックとの間の結線を自由に構成することで、図２で示すブロックを構成することができる。
【００１７】
すなわち、ＦＰＧＡ２６は、図２で示すように、入出力ブロック２６ａと、バス調停／転送制御ブロック２６ｂと、メモリブロックとしてのデュアルポートＲＡＭブロック２６ｃと、ゲートブロック２６ｄと、入出力ブロック２６ｅと、それらブロック間を接続する配線と、を有する論理ブロック構成にコンフィグレーションされている。ＦＰＧＡ２６は、コンフィグレーションデータメモリ２５に記憶された論理ブロック構成のデータを読み込んで所望の論理ブロック構成にコンフィグレーションされる。そして、ＦＰＧＡ２６は外部バスＢ２３（第２バス）を介してモジュールバス３０（第２バス）に接続されている。デュアルポートＲＡＭブロック２６ｃは、内部にページという一定単位の記憶領域を複数持って、全体の記憶領域が形成されたリングバッファ構造を有し、また、ポートを２つ有している。デュアルポートＲＡＭブロック２６ｃはいずれのポートからもデータの書き込み／読み出しが可能である。書き込みと読み出しはポインタにより制御され、この制御により、リングバッファを構成する。
【００１８】
バス調停／転送制御ブロック２６ｂは、ＣＰＵ２１が共有メモリ２７にアクセス中のときに、ＣＰＵモジュール１０のＣＰＵ１１から共有メモリ２７へのデータ書き込み、読み出しのアクセス要求があると、ＣＰＵ２１のアクセスをＣＰＵ１１のそれよりも優先するか、アクセス先着順とするか、ＣＰＵ１１のアクセスをＣＰＵ２１のそれよりも優先するかの判断を行う。この判断により、ゲートブロック２６ｄの開閉を制御して共有メモリ２７に対するＣＰＵ１１，２１のアクセスのためのバス調停を行うようになっている。
【００１９】
また、このＣＰＵ１１が共有メモリ２７にアクセス中のときに、ＣＰＵ２１から共有メモリ２７へのデータ書き込みのためのアクセス要求があると、バス調停／転送制御ブロック２６ｂは、ＣＰＵ２１からのデータをデュアルポートＲＡＭブロック２６ｃに書き込ませる制御を行い、ＣＰＵ１１の共有メモリ２７へのアクセスが終了すると、デュアルポートＲＡＭブロック２６ｃに書き込んであるデータをゲートブロック２６ｄを制御して、共有メモリ２７に再度、書き込ませる。
【００２０】
このバス調停および書き込み制御を、図１、図２を参照して説明する。図１、図２で点線（Ｂ）はＣＰＵ１１から共有メモリ２７へのアクセス経路、点線（Ａ）はＣＰＵ２１からデュアルポートＲＡＭブロック２６ｃへのデータ書き込み経路、一点鎖線（Ａ）はデュアルポートＲＡＭブロック２６ｃから共有メモリ２７へのデータの再書き込み経路を示す。二点鎖線（Ｃ）はＦＰＧＡ２６によるＣＰＵ２１を介在させない高速バス転送の経路を示す。
【００２１】
ＦＰＧＡ２６は、ＣＰＵ１１が共有メモリ２７にデータ書き込みのアクセスであるときに、ＣＰＵ２１から共有メモリ２７にデータ書き込みのアクセス要求があると、ＣＰＵ２１からの書き込みデータをデュアルポートＲＡＭブロック２６ｃに書き込ませる。そして、ＣＰＵ１１の共有メモリ２７へのアクセスが終了すると、ＦＰＧＡ２６は、デュアルポートＲＡＭブロック２６ｃに書き込んであるデータをゲートブロック２６ｄを介して共有メモリ２７に書き写させる。
【００２２】
上記バス調停においては、各ＣＰＵ１１，２１それぞれの内部バスＢ１１，Ｂ２１はバス調停から切り離されており、各ＣＰＵ１１，２１は内部バスＢ１１，Ｂ２１を使用して制御を実行することができる。そのため、例えば、ＣＰＵ２１は、内部バスＢ２１を用いてワークメモリ２４にアクセスしてワークを行って負荷のデータ処理等ができると共に、ＣＰＵ２１は、バス調停を行う必要がなくなるので、バス調停に要していた時間を負荷のデータ処理に使用することができるようになり、負荷の高速制御が可能となる。
【００２３】
次に、本実施の形態の特徴を説明すると、バス調停／転送制御ブロック２６ｂは、上記バス調停以外に、詳細は略するがクロックに同期してバス転送（データ転送）するバースト転送方式でバス転送制御を行うことができるようになっている。すなわち、バス調停／転送制御ブロック２６ｂは、共有メモリ２７を一方のデータ転送対象であるメモリとし、入出力モジュール４０のメモリ４０ｂを他方のデータ転送対象であるメモリとし、ＣＰＵモジュール２０内のＦＰＧＡ２６と、入出力モジュール４０内のＦＰＧＡ４０ａとが、ＣＰＵモジュール２０内のＣＰＵ２１の介在無しで、上記ＣＰＵモジュール２０の動作クロックＣＰＵＣＬＫよりも高速のクロックＦＰＧＡＣＬＫに同期動作して、モジュールバス３０を介して、二点鎖線（Ｃ）で示す経路で、両メモリ２７，４０ｂ間でのデータ読み出し、データ転送、およびデータ書き込みの制御を行う。このことにより、ＣＰＵモジュール２０内のＣＰＵ２１は、上記のＤＭＡ制御中においても内部バス（ＣＰＵバス）Ｂ２１をＦＰＧＡ２６に渡すことなく、用いることが可能となる。すなわち、従来では、例えば、バースト転送モードでは、ＤＭＡコントローラに設定した転送バイト数の転送を完了するまで一度に転送する間、バス制御権はＤＭＡコントローラが持ち続け、その間、ＣＰＵは停止状態となり、また、サイクルスティールモードでも、１ワード転送ごとにバス制御権をＣＰＵにあけ渡すので、ＣＰＵのバスアクセス時間やバス制御権を得る動作に時間が掛かり、処理の高速化ができなかったが、実施の形態では、内部バス（ＣＰＵバス）Ｂ２１のバス制御権をＦＰＧＡ２６に渡さずに済む分、処理の高速化が可能である。
【００２４】
以上説明したように、本実施の形態では、例えば、共有メモリ２７と入出力モジュール４０内のメモリ４０ｂとの間でのデータ読み出し、転送、書き込みの転送の制御をＣＰＵモジュール２０内のＣＰＵ２１の動作クロックＣＰＵＣＬＫには支配されず、その動作クロックＣＰＵＣＬＫよりも高速のクロックＦＰＧＡＣＬＫで行うことができるので、より高速化が可能となり、また、共有メモリ２７と入出力モジュール４０内のメモリ４０ｂとの間でのデータ転送時に内部バスＢ２１が占有されずに済み、ＣＰＵ２１は、内部バスＢ２１を用いて、例えば、ワークメモリ２４等に対して必要なワークを行うことができ、より高速動作化が可能となる。
【図面の簡単な説明】
【００２５】
【図１】図１は本発明の実施形態に係る高速バス転送方式によるプログラマブルコントローラの構成を示す図である。
【図２】図２はＦＰＧＡのコンフィグレーション構成を示す図である。
【図３】図３は従来のＤＭＡ転送方式によるプログラマブルコントローラの構成を示す図である。
【符号の説明】
【００２６】
１０，２０  ＣＰＵモジュール
１１，２１    ＣＰＵ
１２，２２  システムメモリ
１３，２３  プログラムメモリ
１４，２４  ワークメモリ
１５，２５  コンフィグレーションデータメモリ
１６，２６  ＦＰＧＡ
２６ａ  入出力ブロック
２６ｂ  バス調停／転送制御ブロック
２６ｃ  デュアルポートＲＡＭブロック（メモリブロック）
２６ｄ  ゲートブロック
２６ｅ  入出力ブロック
１７，２７  共有メモリ（第１メモリ）
３０  モジュールバス
４０  入出力モジュール
４０ａ  ＦＰＧＡ
４０ｂ  メモリ（第２メモリ）
Ｂ１１，Ｂ２１  内部バス
Ｂ１２，Ｂ２２  メモリバス
Ｂ１３，Ｂ２３  外部バス
【図１】
2010049512.tif 000003
【図２】
2010049512.tif 000004
【図３】
2010049512.tif 000005