(57)【要約】【課題】改変された汎用ＣＰＵを用いて高速のＰＬＣを実現することができるビット演算装置を提供する。【解決手段】ビット演算回路２は、ビット単位でアクセス可能なメモリを備えるビットメモリ２１と、ＣＰＵ１のアドレスバスの出力の一部が演算命令として入力され、ＣＰＵ１がビットメモリ２１からデータを読み込もうとしている時に、ＣＰＵ１からの演算命令に基づいてビットメモリ２１から読み出した１ビットデータを用いて論理演算を行う演算部２２とを有している。【選択図】      図１
2004280664.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、前記ＣＰＵの外部に取り付けられたビット演算回路とを有してなるビット演算装置において、
前記ビット演算回路は、
ビット単位でアクセス可能なメモリと、
前記ＣＰＵのアドレスバスの出力の一部が演算命令として入力され、前記ＣＰＵが前記メモリからデータを読み込もうとしている時に、前記演算命令に基づいて前記メモリから読み出した１ビットデータを用いて論理演算を行う演算手段とを有することを特徴とするビット演算装置。
【請求項２】
前記演算手段は、前記ＣＰＵが前記メモリにデータを書き込もうとしている時に、前記演算命令に基づいて前記演算手段における論理演算結果を前記メモリに書き込み、前記ＣＰＵからのデータについては前記メモリに書き込まない、請求項１に記載のビット演算装置。
【請求項３】
前記メモリは、別のメモリ空間からバイトもしくはそれ以上の単位で直にアクセス可能である、請求項１または２に記載のビット演算装置。
【請求項４】
前記ＣＰＵは、前記演算手段における演算途中の論理演算結果を直に読み込み、読み込んだ論理演算結果に基づく条件判断の結果に応じて事後の処理を変える、請求項１から３のいずれか１項に記載のビット演算装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＦＡ装置に用いるＰＬＣ（Ｐｒｏｇｒａｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）機能を実現するビット演算回路に関するものである。
【０００２】
【従来の技術】
従来、ＣＰＵは、特許文献１に開示されたビットアクセス回路を用いて外部メモリにアクセスし、外部メモリとの演算命令によってビット単位で演算を行っていた。この技術は、ＣＰＵが、ＣＰＵ内のアキュムレータの内容と外部メモリの内容との論理演算（ＡＮＤ、ＯＲ、ＥＸＯＲなど）を行う機能に着目したもので、外部メモリをビット単位でアクセス可能とし、外部メモリの内容とアキュムレータのＭＳＢ最上位ビットとの論理演算を１ビットずつ行うものである。
【０００３】
【特許文献１】
特開昭５９−７７５５７号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、上述したような従来のアーキテェクチャーは、ＣＰＵの改変などにより、使用できなくなった。すなわち、最近のＣＰＵでは、ＣＰＵ内のアキュムレータの内容と外部メモリの内容との演算命令が除去された。
【０００５】
ＣＰＵだけで演算を行うようにすると、ソフトウェアによって外部メモリからビットの抽出等を行うためにステップ数が増え、それにより、多量のビットデータを扱うＰＬＣ等では高速化を図ることが困難になってしまう。
【０００６】
そこで、本発明の目的は、改変された汎用ＣＰＵを用いて高速のＰＬＣを実現することができるビット演算装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために本発明のビット演算装置は、ＣＰＵの外部にビット単位でアクセス可能なメモリと演算手段とを設け、ＣＰＵのアドレスバスの一部を演算手段に対する演算命令とし、ＣＰＵが外部のメモリを読み込もうとしている時に、演算手段にてＣＰＵの動作タイミングでメモリから読み出した１ビットデータを用いて論理演算が行われるようにしている。
【０００８】
したがって、汎用ＣＰＵのアドレスバスの一部を演算手段に対する演算命令とし、演算手段に論理演算を実行させることで汎用ＣＰＵのステップ数を減らすことが可能となるため、高速のＰＬＣを実現することが可能となる。
【０００９】
【発明の実施の形態】
図１は、本発明の一実施形態のビット演算装置を示す図である。
【００１０】
図１を参照すると、本実施形態のビット演算装置は、ＣＰＵ１と、ビット演算回路２（破線で囲まれた部分の回路）と、マルチプレクサ３とを有している。また、ビット演算回路２は、ビットメモリ（ｂｉｔメモリ）２１と、演算部２２と、バスバッファ２３と、論理素子２４とを有している。
【００１１】
ＣＰＵ１は、アドレスバスが３２ビットである汎用ＣＰＵであり、図１にはＣＰＵ１から出力される信号のうち必要な信号のみが図示されている。
【００１２】
ビットメモリ２１は、ＣＰＵ１の３２ビットのアドレスバス出力の一部がアドレス（ＡＤ）およびビットアドレス（ｂｉｔＡＤ）として入力される。ビットメモリ２１は、特許文献１に開示されたビットアクセス回路およびＲＡＭからなり、１ビット単位でビットデータのハンドリングを行うことができる。ビットメモリ２１への１ビット単位のアクセス時にはメモリアドレスが８０００万番地となる。また、ビットメモリ２１への１バイト単位のアクセス時にはメモリアドレスがＣ０００万番地となる。このように、ビットメモリ２１は、別のメモリ空間（１バイト単位のアクセス時にはＣ０００万番地）からバイトもしくはそれ以上の単位（ワード、Ｗワード）で直接アクセス可能となっている。
【００１３】
演算部２２は、ＣＰＵ１の３２ビットのアドレスバス出力の一部が演算命令として入力されるとともに、ＣＰＵ１の３２ビットのアドレスバス出力の一部がマルチプレクサ３を介して／ＣＳとして入力される。／ＣＳにはＣＰＵ１からビットメモリ２１のメモリアドレスが入力され、例えば、１ビット単位のアクセス時には８０００万番地が入力され、１ワード単位のアクセス時にはＣ０００万番地が入力される。
【００１４】
図２は、図１に示したＣＰＵ１のアドレスバスからビット演算回路２に入力されるデータを説明する図である。
【００１５】
図２を参照すると、図中の向かって左側は演算部２２に入力される演算命令を示し、真中はビットメモリ２１に入力されるビットアドレスを示し、右側はビットメモリ２１に入力されるアドレスを示している。
【００１６】
ＣＰＵ１の３２ビットのアドレスバス出力のうち、最下位Ａ０〜Ａ１５をビットメモリ２１に対するアドレスとし、その上位のＡ１６〜Ａ１８をビットメモリ２１に対するビットアドレスとしている。図２の右に示すように、ビットメモリ２１はＣＸＸＸ、００００ｈ〜ＦＦＦＦｈまで展開されている。例えば、ビットメモリ２１のＣＸＸＸ０１００ｈ番地の１バイトのデータについては、Ｄ０のビットを８ＸＸ００１００ｈで指定し、Ｄ６のビットを８ＸＸ６０１００ｈで指定する等、上位のアドレスと０１００ｈを用いてビットを指定する。
【００１７】
本発明においては、ＣＰＵ１の３２ビットのアドレスバス出力のうち、さらに上位のＡ２２、Ａ２１、Ａ２０を演算部２２に対する演算命令コードとしている。すなわち、図２の左に示すように、例えば、８００ＸＸＸＸＸ番地のアクセスはＬＤ命令で、８０１ＸＸＸＸＸ番地のアクセスはＡＮＤ命令となる。
【００１８】
なお、ＣＰＵ１の３２ビットのアドレスバス出力のうち、最上位Ａ３１，３０をビットメモリ２１への１ビット単位のアクセスか、１バイト単位のアクセスかを示す／ＣＳのデータとしている。Ａ３１，３０が１，０である場合は１ビット単位のアクセスとなり、０，１である場合は１バイト単位のアクセスとなる。
【００１９】
図３は、図１に示した演算部２２の回路構成図である。
【００２０】
図３を参照すると、演算部２２は、マルチプレクサ２２１と、演算結果レジスタ２２２と、論理素子２２３〜２２７とを有している。
【００２１】
マルチプレクサ２２１は、ビットメモリ２１から読み出された１ビットのデータＤｉｎを、ＣＰＵ１からＡ２２、Ａ２１、Ａ２０で指定された演算命令に従って演算し、その演算結果を、論理素子２２６による／ＣＳと／ＲＤとのＡＮＤ演算結果の立ち上がりエッジで演算結果レジスタ２２２に書き込む。
【００２２】
ＣＰＵ１からのＡ２２の演算命令が１である場合はデータの反転命令となり、ビットメモリ２１から読み出されたデータＤｉｎは論理素子２２３によるＥｘＯＲ演算により反転される。また、演算結果レジスタ２２２から出力されたデータＲＲｏｕｔは論理素子２２７によるＥｘＯＲ演算により反転され、反転されたデータはビットメモリ２１に書き込まれる書き込みデータＤｏｕｔとなる。
【００２３】
また、演算結果レジスタ２２２から出力されたデータＲＲｏｕｔは、ＣＰＵ１に入力されるとともに、論理素子２２４，２２５にも入力され、論理素子２２４，２２５によるデータＤｉｎとのＡＮＤ、ＯＲの演算を経て、マルチプレクサ２２１にフィードバックされる。
【００２４】
図４は、図１に示したビット演算装置を用いた演算の実例を説明する図であり、（ａ）は当該演算をラダーで示す図、（ｂ）は（ａ）をＭＩＬ記号で示す図である。図５は、図４に示した演算を行う場合において、ＣＰＵ１が演算部２２に与える命令と当該命令に対する演算部２２の実実行内容とを示す図である。
【００２５】
図４および図５を参照すると、ＣＰＵ１の命令「ＭＯＶ  Ｒ，（８０００２３４１）」「ＭＯＶ  Ｒ，（８０２４３２５６）」「ＭＯＶ  Ｒ，（８０１７４２７５）」のそれぞれは、演算部２２に対するＬＤ命令、ＯＲ命令、ＡＮＤ命令となる（図２参照）。このように、ＣＰＵ１が単にビットメモリ２１からのデータ読み出しを繰り返している場合、演算部２２は、ＣＰＵ１からのＬＤ命令、ＯＲ命令、ＡＮＤ命令に基づいて、ビットメモリ２１の該当する番地から１ビットデータを読み出し、読み出したデータと演算結果レジスタ２２２の出力データとのＬＤ演算、ＯＲ演算、ＡＮＤ演算を繰返し行う。
【００２６】
一方、ＣＰＵ１の命令「ＭＯＶ  Ｒ，（８０３７５１８９），Ｒ」は、演算部２２に対するＯＵＴ命令（図２参照）、すなわち書き込み命令となる（図２のＮＯＴＯＵＴ命令も同様に書き込み命令となる）。このように、ＣＰＵ１がビットメモリ２１にデータを書き込もうとしている場合、演算部２２は、ＣＰＵ１からの書き込み命令に基づいて演算部２２における上記の論理演算結果であるデータＤｏｕｔをビット単位でビットメモリ２１へ書き込むこととし、ＣＰＵ１からのデータについてはビットメモリ２１には書き込まない。
【００２７】
ＣＰＵ１は、スキャンの最後に、ビットメモリ２１のＣ０００万番地からバスバッファ２３、データバスを介して演算結果を読み出し、データを処理する。
【００２８】
なお、ＣＰＵ１は、演算部２２における演算結果によって処理のパスを変える必要がある時は、データバスを介してバスバッファ２３から演算途中のデータを直に読み込み、そのデータに基づく状況判断の結果に応じて事後の処理を変えることも可能である。
【００２９】
【発明の効果】
以上説明したように本発明においては、ＣＰＵのアドレスバスの一部が演算命令として入力され、ＣＰＵがメモリを読み込もうとしている時に、ＣＰＵからの演算命令に基づいてメモリから読み出した１ビットデータの論理演算を行う演算手段を設けた構成としている。それにより、汎用ＣＰＵを用いたとしても、その汎用ＣＰＵのアドレスバスの一部を演算手段に対する演算命令とし、演算手段に論理演算を実行させることで汎用ＣＰＵのステップ数を減らすことができるため、高速のＰＬＣを実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態のビット演算回路を示す図である。
【図２】図１に示したＣＰＵのアドレスバスからビット演算回路に入力されるデータを説明する図である。
【図３】図１に示した演算部の回路構成図である。
【図４】図１に示したビット演算装置を用いた演算の実例を説明する図であり、（ａ）は当該演算をラダーで示す図、（ｂ）は（ａ）をＭＩＬ記号で示す図である。
【図５】図５は、図４に示した演算を行う場合において、ＣＰＵが演算部に与える命令と当該命令に対する演算部の実実行内容とを示す図である。
【符号の説明】
１    ＣＰＵ
２    ビット演算回路
３    マルチプレクサ
２１    ビットメモリ
２２    演算部
２３    バスバッファ
２４    論理素子
２２１    マルチプレクサ
２２２    演算結果レジスタ
２２３〜２２７    論理素子
【図１】
2004280664.tif 000003
【図２】
2004280664.tif 000004
【図３】
2004280664.tif 000005
【図４】
2004280664.tif 000006
【図５】
2004280664.tif 000007