(57)【要約】【課題】比較的小規模な回路構成で、また比較的短時間に演算処理を行うことができる論理演算装置を提供する。【解決手段】Ｎ（Ｎは、Ｎ≧２の整数）ビット長のビット列の入力を受け入れて、当該入力されるビット列が表すアドレスに、当該入力されるビット列に含まれる各ビット間の論理演算結果を表すビットをその一部に含む多ビット長のデータを格納してなるルックアップテーブルを記憶するメモリデバイス１２を含み、メモリデバイス１２にアクセスし、受け入れたビット列が表すアドレスに格納されたデータに含まれるビットを出力する論理演算装置である。【選択図】図１
2015026341.tif 000002
【特許請求の範囲】
【請求項１】
Ｎ（Ｎは、Ｎ≧２の整数）ビット長のビット列の入力を受け入れて、前記入力されるビット列が表すアドレスに、当該入力されるビット列に含まれる各ビット間の論理演算結果を表すビットをその一部に含む多ビット長のデータを格納してなるルックアップテーブルを記憶するメモリデバイスと、
前記メモリデバイスにアクセスし、前記受け入れたビット列が表すアドレスに格納されたデータに含まれるビットを出力する出力手段と、
を含む論理演算装置。
【請求項２】
請求項１記載の論理演算装置であって、
前記メモリデバイスに格納されたデータには、前記入力されるビット列に含まれる各ビット間の論理演算結果と、その反転ビットとが含まれ、
前記出力手段は、当該ビット間の論理演算結果と、その反転ビットとの一方を選択的に出力する論理演算装置。
【請求項３】
請求項２記載の論理演算装置であって、
Ｍ（Ｍは、Ｍ＞Ｎなる整数）ビット長のビット列の入力を受けて、当該ビット列からＮビットのビット列を抽出して、当該抽出したＮビットのビット列を時分割的に前記メモリデバイスに出力する分割手段をさらに含み、
時分割的に前記Ｎビットのビット列が出力されるタイミングにおいて、前記出力手段が、前回出力したビットを用いて、メモリデバイスにアクセスして取り出したビット間の論理演算結果と、その反転ビットとの一方を選択的に出力する論理演算装置。
【請求項４】
請求項１から３のいずれか一項に記載の論理演算装置であって、
前記メモリデバイスに格納された論理演算結果は、入力ビット列に含まれる各ビット間の排他的論理和の演算結果である論理演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されるビット列に含まれるビット間の論理演算を行う論理演算装置に関する。
【背景技術】
【０００２】
情報処理技術、情報通信技術の発展・普及に伴い、より高速で、より大容量の情報処理技術が要求されている。例えば近年では、情報処理時の誤り訂正処理において、より多数ビット長のデータの誤り訂正を可能にすることが求められている。
【０００３】
この誤り訂正の際には、入力ビットのパリティチェック等のため、入力されたビット間の排他的論理和（ＸＯＲまたはＥＯＲ）を求めることが必要となる。従来、多ビット長のデータに関する排他的論理和の演算装置は、２入力の排他的論理和回路を組み合わせて構成されていた。例えば、図１１は、３２ビット長の排他的論理和を演算する論理演算装置の例を示したものである。
【０００４】
図１１に例示するように、この３２ビット長の排他的論理和を演算する論理演算装置は、４つの８入力排他的論理和回路１００と、３つの２入力排他的論理和回路２００とを含む。また８入力排他的論理和回路１００は内部に、７つの２入力排他的論理和回路２００を含んでなる。
【０００５】
なお、多入力（３入力）の排他的論理和ゲートの例が、非特許文献１に開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】inet：“74LVC1G386 3-input EXCLUSIVE-OR gate”、[online]、2007年9月3日、[平成25年7月16日検索]、インターネット<URL:http://http://www.jp.nxp.com/documents/data_sheet/74LVC1G386.pdf>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、近年ではますます多ビット長のデータ処理が要求されており、２入力排他的論理和回路の組み合わせによっては回路規模が大きくなり、また多段ゲートに構成することで演算処理時間も長くなってしまうという問題点があった。
【０００８】
本発明は上記実情に鑑みて為されたもので、多ビット長のデータであっても比較的小規模な回路構成で、比較的短時間に演算処理を行うことができる論理演算装置を提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００９】
上記従来例の問題点を解決するための本発明は、論理演算装置であって、Ｎ（Ｎは、Ｎ≧２の整数）ビット長のビット列の入力を受け入れて、前記入力されるビット列が表すアドレスに、当該入力されるビット列に含まれる各ビット間の論理演算結果を表すビットをその一部に含む多ビット長のデータを格納してなるルックアップテーブルを記憶するメモリデバイスと、前記メモリデバイスにアクセスし、前記受け入れたビット列が表すアドレスに格納されたデータに含まれるビットを出力する出力手段と、を含むこととしたものである。
【００１０】
このように多ビット長のデータであっても比較的小規模な回路構成で、また多段のゲートも必要がなく、比較的短時間に演算処理を行うことができる。
【００１１】
またここで前記メモリデバイスに格納されたデータには、前記入力されるビット列に含まれる各ビット間の論理演算結果と、その反転ビットとが含まれ、前記出力手段は、当該ビット間の論理演算結果と、その反転ビットとの一方を選択的に出力することとしてもよい。
【００１２】
これにより、多段に構成して前段の演算結果に基づいて出力手段が論理演算結果とその反転ビットとの一方を選択するようにすれば、より長いビット長のデータについても比較的小規模な回路構成で、また比較的短時間に演算処理を行うことができる。
【００１３】
さらにＭ（Ｍは、Ｍ＞Ｎなる整数）ビット長のビット列の入力を受けて、当該ビット列からＮビットのビット列を抽出して、当該抽出したＮビットのビット列を時分割的に前記メモリデバイスに出力する分割手段をさらに含み、時分割的に前記Ｎビットのビット列が出力されるタイミングにおいて、前記出力手段が、前回出力したビットを用いて、メモリデバイスにアクセスして取り出したビット間の論理演算結果と、その反転ビットとの一方を選択的に出力することとしてもよい。
【００１４】
このように回路を時分割的に使用することで、より比較的小規模な回路構成で演算処理を行うことができる。
【００１５】
また前記メモリデバイスに格納された論理演算結果は、入力ビット列に含まれる各ビット間の排他的論理和の演算結果であってもよい。
【発明の効果】
【００１６】
本発明によると、比較的小規模な回路構成で、また比較的短時間に演算処理を行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態に係る論理演算装置の構成例を表すブロック図である。
【図２】本発明の実施の形態に係る論理演算装置が備えるルックアップテーブルの内容例を表す説明図である。
【図３】本発明の実施の形態に係る論理演算装置が備えるルックアップテーブルのもう一つの内容例を表す説明図である。
【図４】本発明の実施の形態のもう一つの例に係る論理演算装置の構成例を表すブロック図である。
【図５】本発明の実施の形態のまた別の例に係る論理演算装置の構成例を表すブロック図である。
【図６】本発明の実施の形態に係る論理演算装置のクロック供給部が出力する信号の例を表すタイミングチャート図である。
【図７】本発明の実施の形態のさらに別の例に係る論理演算装置の構成例を表すブロック図である。
【図８】本発明の実施の形態に係る論理演算装置が備えるまた別のルックアップテーブルの内容例を表す説明図である。
【図９】本発明の実施の形態に係る論理演算装置の出力段における別の回路例を表す説明図である。
【図１０】本発明の実施の形態に係る論理演算装置を用いた、さらに多ビット長のビット列に係る論理演算を行う装置の例を表す説明図である。
【図１１】従来の３２ビット長の排他的論理和を演算する論理演算装置の例を表す説明図である。
【発明を実施するための形態】
【００１８】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る論理演算装置１は、図１に例示するように少なくとも一つの論理演算ユニット１０を含む。またこの論理演算ユニット１０は、入力バッファ部１１と、メモリデバイス１２と、出力部１３とを含んで基本的に構成される。
【００１９】
入力バッファ部１１は、Ｎ（Ｎは、Ｎ≧２の整数）ビット長のビット列の入力を受け入れて、このビット列の表す信号を、メモリデバイス１２のアドレスバスに供給する。すなわち、ここでの例では、Ｎはメモリデバイス１２のアドレスバス幅にも相当する。
【００２０】
メモリデバイス１２は、具体的には不揮発性メモリやＳＲＡＭ（Static Random Access Memory）等の半導体メモリであり、２Nビット×Ｌビット（Ｌは、Ｌ≧２の整数）のメモリセルを備える。このメモリデバイス１２は、その入力バッファ部１１から入力されるビット列が表すアドレスに、当該入力されるビット列に含まれる各ビット間の論理演算結果を表すビットをその一部に含む多ビット長のデータを格納してなるルックアップテーブルを格納している。以下の例では、１つのアドレスによって特定される位置に、Ｌ＝８ビットのデータが格納されるものとして説明する。
【００２１】
具体的に、このルックアップテーブルは図２に例示するように、Ｎ＝８ビット長のビット列「００００００００」が表すアドレスには、そのＭＳＢ（最上位ビット）に当該ビット列「００００００００」の排他的論理和の演算結果である「０」を含んだデータ「０ＸＸＸＸＸＸＸ」（ここでＸは不定でよい）が格納される。また、ビット列「０００００００１」が表すアドレスには、そのＭＳＢ（最上位ビット）に当該ビット列「０００００００１」の排他的論理和の演算結果である「１」を含んだデータ「１ＸＸＸＸＸＸＸ」（Ｘは不定でよい）が格納される。
【００２２】
出力部１３は、メモリデバイス１２が格納しているデータのうち、入力バッファ部１１が出力するビット列が表すアドレスに格納されているデータを読み出す。この出力部１３は当該読み出したデータのうち、上記論理演算結果が含まれるビットを選択的に出力する。本実施の形態の上述の例では、ＭＳＢに論理演算結果が含まれるので、この出力部１３は、メモリデバイスが格納しているデータのうち、入力バッファ部１１が出力するビット列が表すアドレスに格納されているデータを読み出し、当該データのうちのＭＳＢのビットを出力する。
【００２３】
また本実施の形態の別の例では、メモリデバイス１２は、その入力バッファ部１１から入力されるビット列が表すアドレスに、当該入力されるビット列に含まれる各ビット間の論理演算結果を表すビットと、その反転ビットとをその一部に含む多ビット長のデータを格納してなるルックアップテーブルを格納している。
【００２４】
具体的に、このルックアップテーブルは図３に例示するように、Ｎ＝８ビット長のビット列「００００００００」が表すアドレスには、そのＭＳＢ（最上位ビット）に当該ビット列「００００００００」の排他的論理和の演算結果である「０」を含み、その次のビットにこの演算結果の反転ビットである「１」を含んだデータ「０１ＸＸＸＸＸＸ」（ここでＸは不定でよい）が格納される。また、ビット列「０００００００１」が表すアドレスには、そのＭＳＢ（最上位ビット）に当該ビット列「０００００００１」の排他的論理和の演算結果である「１」を含み、次のビットにその反転ビットである「０」を含んだデータ「１０ＸＸＸＸＸＸ」（Ｘは不定でよい）が格納される。
【００２５】
この例では、出力部１３は、外部から１ビットの信号の入力を受け入れる。そして出力部１３は、メモリデバイス１２が格納しているデータのうち、入力バッファ部１１が出力するビット列が表すアドレスに格納されているデータを読み出し、外部から入力された１ビットの信号が「０」であるか「１」であるかにより、当該データのうち、上記論理演算結果またはその反転ビットのいずれかを選択的に出力する。本実施の形態の一例では、この出力部１３は、外部から入力された１ビットの信号が「０」であるときには、メモリデバイスが格納しているデータのうち、入力バッファ部１１が出力するビット列が表すアドレスに格納されているデータを読み出し、当該データのうちのＭＳＢのビットを出力する。また出力部１３は、外部から入力された１ビットの信号が「１」であるときには、メモリデバイスが格納しているデータのうち、入力バッファ部１１が出力するビット列が表すアドレスに格納されているデータを読み出し、当該データのうちのＭＳＢの次のビット（論理演算結果の反転ビットが格納されているビット）を出力する。
【００２６】
本実施の形態は基本的に以上の構成を備えており、次の例のように動作する。本実施の形態の以下の例では図４に例示するように、複数の論理演算ユニット１０＿１，１０＿２…１０＿ｎを備えるものとする。また、ｉ番目の論理演算ユニット１０＿ｉの出力部１３＿ｉは、ｉ−１番目の論理演算ユニット１０＿ｉ−１の出力ビットを、外部からの入力として受け入れる。なお、先頭の論理演算ユニット１０＿１の出力部１３＿１は、外部からの入力を受けずに（あるいは外部からの入力を「０」に固定するなどして）、メモリデバイス１２が格納しているデータのうち論理演算結果を表すビット（上述の例ではＭＳＢ）を出力することとする。
【００２７】
また本実施の形態のこの例では、排他的論理和の計算の対象として８×ｎ（メモリデバイス１２のアドレスバス幅の整数ｎ倍）ビット長のデータＤ（そのｉ番目のビットをｂi（ｉ＝１，２，…８ｎ）とする）の入力を受け入れる。そしてＭＳＢ側（あるいはＬＳＢ側）から順に８ビット（メモリデバイス１２のアドレスバス幅）ずつ、それぞれ論理演算ユニット１０＿１，１０＿２…１０＿ｎのバッファ部１１＿１，１１＿２，…１１＿ｎに出力する。
【００２８】
論理演算ユニット１０＿１の出力部１３＿１は、メモリデバイス１２＿１が格納しているデータのうち、入力バッファ１１＿１に入力された８ビット長のビット列（ｂ1，ｂ2，…ｂ8）が表すアドレスに格納されているデータを読み出す。そして当該読み出したデータに含まれる論理演算結果（ここでは、入力された８ビット長のビット列の排他的論理和の演算結果とする）のビットを出力する。
【００２９】
次の論理演算ユニット１０＿２の出力部１３＿２は、メモリデバイス１２＿２が格納しているデータのうち、入力バッファ１１＿２に入力された８ビット長のビット列（ｂ9，ｂ10，…ｂ16）が表すアドレスに格納されているデータを読み出す。またこの出力部１３＿２は、前段の論理演算ユニット１０＿１の出力部１３＿１が出力するビットに基づいて、当該読み出したデータに含まれる論理演算結果のビットまたはその反転ビットのいずれか一方を選択して出力する。具体的に出力部１３＿２は、出力部１３＿１が出力するビットが「０」であるときには、読み出したデータに含まれる論理演算結果を出力する。また出力部１３＿２は出力部１３＿１が出力するビットが「１」であるときには、論理演算結果の反転ビットを出力する。
【００３０】
以下、ｉ番目の論理演算ユニット１０＿ｉの出力部１３＿ｉは、メモリデバイス１２＿ｉが格納しているデータのうち、入力バッファ１１＿ｉに入力された８ビット長のビット列（ｂ8(i-1)+1，ｂ8(i-1)+2，…ｂ8i）が表すアドレスに格納されているデータを読み出す。またこの出力部１３＿ｉは、前段の論理演算ユニット１０＿ｉ−１の出力部１３＿ｉ−１が出力するビットに基づいて、当該読み出したデータに含まれる論理演算結果のビットまたはその反転ビットのいずれか一方を選択して出力する。具体的に出力部１３＿ｉは、出力部１３＿ｉ−１が出力するビットが「０」であるときには、読み出したデータに含まれる論理演算結果を出力する。また出力部１３＿ｉは出力部１３＿ｉ−１が出力するビットが「１」であるときには、論理演算結果の反転ビットを出力する。
【００３１】
そしてｎ番目の論理演算ユニット１０＿ｎの出力部１３＿ｎは、メモリデバイス１２＿ｎが格納しているデータのうち、入力バッファ１１＿ｎに入力された８ビット長のビット列（ｂ8(n-1)+1，ｂ8(n-1)+2，…ｂ8n）が表すアドレスに格納されているデータを読み出す。またこの出力部１３＿ｎは、前段の論理演算ユニット１０＿ｎ−１の出力部１３＿ｎ−１が出力するビットに基づいて、当該読み出したデータに含まれる論理演算結果のビットまたはその反転ビットのいずれか一方を選択して出力する。具体的に出力部１３＿ｎは、出力部１３＿ｎ−１が出力するビットが「０」であるときには、読み出したデータに含まれる論理演算結果を出力する。また出力部１３＿ｎは出力部１３＿ｎ−１が出力するビットが「１」であるときには、論理演算結果の反転ビットを出力する。
【００３２】
こうしてｎ番目の論理演算ユニット１０＿ｎの出力部１３＿ｎは、８×ｎビット長のデータＤに含まれる各ビットの論理演算結果（ここでの例では排他的論理和）を出力することとなる。
【００３３】
さらにここでは複数の論理演算ユニット１０、つまりはメモリデバイス１２を並列的に用いる例について述べたが、本実施の形態はこれに限られない。本実施の形態の別の例では、メモリデバイス１２を時分割的に利用してもよい。この例に係る本発明の実施の形態に係る論理演算装置１は、図５に例示するように、ｎ個のスリーステートバッファ部２０と、メモリデバイス１２と、クロック供給部２５と、出力ユニット３０とを含んで構成される。またスリーステートバッファ部２０はそれぞれＮ（ここでの例ではＮ＝８）個のスリーステートバッファ２１を含み、出力ユニット３０は、出力部３１と、フリップフロップ回路部３２と、スイッチ部３３とを含む。ここで、既に説明したものと同様の構成をとるものについては同じ符号を付して説明を省略する。なお、この例ではメモリデバイス１２には、図３に例示したデータが格納されているものとする。
【００３４】
スリーステートバッファ２１は、それぞれ入力端子Ｘと出力端子Ｙとゲート端子Ｇとを備える。このスリーステートバッファ２１は、ゲート端子Ｇの入力が「０」である間、入力端子Ｘにどのような入力があったとしても、出力端子Ｙの状態をハイ・インピーダンス状態「Ｚ」とする。出力端子Ｙがハイ・インピーダンスとなったスリーステートバッファ２１は、当該出力端子Ｙの接続先からみると、絶縁された状態と同じ（接続が切離された状態）となる。
【００３５】
本実施の形態のこの例では、８ｎ個のスリーステートバッファ２１が第１番目のスリーステートバッファ２１＿１から第８番目のスリーステートバッファ２１＿８までのグループ、第９番目のスリーステートバッファ２１＿９から第１６番目のスリーステートバッファ２１＿１６までのグループ…というように、８つずつのグループに分けられる。そして同じグループに属するスリーステートバッファ２１のゲート端子Ｇには、クロック供給部２５から同じ信号が入力される。この信号については後に述べる。また、ｉ番目のスリーステートバッファ２１＿ｉの入力端子Ｘ＿ｉには、論理演算の対象となる８×ｎビット長のデータＤのＭＳＢ側（あるいはＬＳＢ側）から順に各ビットの値が入力される。
【００３６】
またｉ番目のスリーステートバッファ２１＿ｉの入力端子Ｙ＿ｉは、メモリデバイス１２のアドレスバスのうち（ｉ mod ８）番目のピンに接続される。ここで（ｉ mod ｋ）は、ｉをｋで除したときの余りを意味する。
【００３７】
クロック供給部２５は、図６に示すように、定期的に立上がりと立ち下りとを繰返すクロック信号ＣＬＫを生成してこれを出力する。またこのクロック供給部２５は、ｎ個（ｎは論理演算の対象となるビット数８ｎを、メモリデバイス１２のアドレスバス幅である８で除した値）のサブクロック信号φi（ｉ＝１，２，…ｎ）を生成する。このサブクロック信号φiは、所定の時点からｊ回目にクロック信号ＣＬＫが立ち上る際に、ｉ＝（ｊ mod ｎ）＋１のサブクロック信号φiが立上がり、ｊ回目にクロック信号ＣＬＫが立ち下る際に、ｉ＝（ｊ mod ｎ）＋１のサブクロック信号φiが立ち下るようにしておく。この際、ｉ≠（ｊ mod ｎ）＋１なるサブクロック信号φiはＬの状態を維持するものとする。またクロック供給部２５は次のようなサブクロック信号φ0を生成する。すなわち、このφ0は、ｊ回目にクロック信号ＣＬＫが立ち下る際に（ｊ mod ｎ）＝０であるときに立上がり、その後のクロック信号ＣＬＫのｎ／２回目または（ｎ−１）／２回目の立ち下り時など、その後、クロック信号ＣＬＫがｎ回目に立ち下るまでに立ち下るようにする。図６には、ｎ＝４の場合のサブクロック信号φ1，φ2，φ3，φ4と、φ0とを例示している。
【００３８】
ここでクロック供給部２５は、サブクロック信号φ1を第１番目のスリーステートバッファ２１＿１から第８番目のスリーステートバッファ２１＿８に供給し、サブクロック信号φ2を第２番目のスリーステートバッファ２１＿９から第８番目のスリーステートバッファ２１＿１６に供給し…というように、サブクロックφiを、８つのスリーステートバッファ２１＿（［ｉ／８］＋１）に供給する。ここで［＊］は＊を超えない最大の整数を意味するものとする。
【００３９】
これらスリーステートバッファ２１と、クロック供給部２５との動作により、Ｍ（Ｍは、Ｍ＞Ｎなる整数）ビット長のビット列の入力を受けて、当該ビット列からＮビットのビット列を抽出して、当該抽出したＮビットのビット列を時分割的にメモリデバイス１２に対して出力する分割手段が実現される。
【００４０】
出力ユニット３０の出力部３１は、クロック供給部２５から入力されるクロック信号ＣＬＫが立ち下るタイミングであり、かつ、サブクロック信号φn（ｎは論理演算の対象となるビット数８ｎを、メモリデバイス１２のアドレスバス幅である８で除した値）が立ち下らないタイミングにおいて、フリップフロップ回路部３２が出力する１ビットの信号の入力を受け入れてバッファ（不図示）に保持する。そして出力部３１は、次にクロック信号ＣＬＫが立ち上るタイミングでメモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１が出力するビット列が表すアドレスに格納されているデータを読み出す。出力部３１は、バッファに保持した１ビットの信号が「０」であるか「１」であるかにより、当該読み出したデータのうち、上記論理演算結果またはその反転ビットのいずれかを選択的に出力する。
【００４１】
本実施の形態の一例では、この出力部３１は、バッファに保持したビットが「０」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢのビット（論理演算結果）をスイッチ部３３に出力する。またこの出力部３１は、バッファに保持したビットが「１」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢの次のビット（論理演算結果の反転ビットが格納されているビット）をスイッチ部３３に出力する。出力部３１は、この出力を、次にクロック信号ＣＬＫが立ち下るまで継続する。
【００４２】
またこの出力部３１は、後に説明するスイッチ部３３を制御する。具体的に出力部３１は、クロック供給部２５が出力するサブクロック信号φn（ｎは論理演算の対象となるビット数８ｎを、メモリデバイス１２のアドレスバス幅である８で除した値）が立ち上がるタイミングで、後に説明するスイッチ部３３の出力先を、外部への出力に設定する。そして次にクロック供給部２５が出力するクロック信号ＣＬＫが立ち上るタイミングでスイッチ部３３の出力先をフリップフロップ回路部３２に設定する。
【００４３】
さらに出力部３１は、クロック供給部２５が出力するサブクロック信号φnが立ち下るタイミングでは、フリップフロップ回路部３２の出力に関わらず、バッファに「０」のビットを保持する。この動作を、以下では、出力部のリセット動作と呼ぶ。
【００４４】
フリップフロップ回路部３２は、例えばＤ型のフリップフロップ回路を含んで構成される。このフリップフロップ回路２４では具体的にＤ端子（入力端子）が出力部３１の出力を受け入れる。また、Ｃ端子（クロック端子）は、クロック供給部２５からクロック信号ＣＬＫの入力を受ける。そしてこのフリップフロップ回路部３２は、クロック信号ＣＬＫが立ち上るタイミングで、入力端子であるＤ端子に入力されるビットを保持して出力端子Ｑに当該ビットの信号を出力する。この出力は、クロック信号ＣＬＫが立ち下るタイミングでも継続される。またこの出力端子Ｑから出力されるビットが、フリップフロップ回路部３２からの出力として出力部３１に入力される。
【００４５】
スイッチ部３３は、出力部３１からの制御を受け入れて、出力部３１から入力された１ビットの情報を、フリップフロップ回路部３２または外部のいずれかに対して選択的に出力する。
【００４６】
本実施の形態のこの例に係る論理演算装置１の動作を次に説明する。ここでは例えば論理演算としての排他的論理和の計算の対象としてＭ＝Ｎ×ｎ（メモリデバイス１２のアドレスバス幅Ｎの整数ｎ倍）ビット長のデータＤ（そのｉ番目のビットをｂi（ｉ＝１，２，…Ｎ×ｎ）とする）の入力を受け入れる。そしてＭＳＢ側（あるいはＬＳＢ側）から順にｉ番目のビットを、それぞれ第ｉ番目のスリーステートバッファ２１＿ｉに入力する。
【００４７】
そして論理演算装置１は次のように動作する。すなわち、出力部のリセット動作が行われたとき（図６の時刻ｔ０）に、出力部３１は「０」のビットをバッファに保持する。次にクロック供給部２５の出力するクロック信号ＣＬＫが立ち上るタイミング（図６の時刻ｔ１）において、スリーステートバッファ２１＿１から２１＿８が、入力されたビットｂ1，ｂ2，…ｂ8を、メモリデバイス１２のアドレスバスに供給する。
【００４８】
出力部３１は、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿１から２１＿８が出力するビット列が表すアドレスに格納されているデータを読み出す。このとき、出力部３１のバッファは「０」のビットを保持しているので、この出力部３１は、メモリデバイス１２から読み出したデータのうちＭＳＢのビット（論理演算結果）を第１回目の演算結果Ｒ1として出力する。この出力Ｒ1はスイッチ部３３を介してフリップフロップ回路部３２に出力されて、フリップフロップ回路部３２において保持される。
【００４９】
次にクロック供給部２５の出力するクロック信号ＣＬＫが立ち下るタイミング（図６の時刻ｔ２）になると、スリーステートバッファ２１＿１から２１＿８の出力はハイ・インピーダンスとなる。そして出力部３１はフリップフロップ回路部３２から前回の演算結果Ｒ1を受け入れてバッファに保持する。
【００５０】
次にクロック供給部２５の出力するクロック信号ＣＬＫが立ち上るタイミング（図６の時刻ｔ３）では、スリーステートバッファ２１＿９から２１＿１６が、入力されたビットｂ9，ｂ10，…ｂ16を、メモリデバイス１２のアドレスバスに供給する。
【００５１】
出力部３１は、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿９から２１＿１６が出力するビット列が表すアドレスに格納されているデータを読み出す。そして出力部３１は、そのバッファが「０」のビットを保持しているとき（演算結果Ｒ1が「０」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢのビット（論理演算結果）を第２回目の演算結果Ｒ2として出力する。また出力部３１は、そのバッファが「１」のビットを保持しているとき（演算結果Ｒ1が「１」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢの次のビット（論理演算結果の反転ビット）を第２回目の演算結果Ｒ2として出力する。この出力Ｒ2はスイッチ部３３を介してフリップフロップ回路部３２に出力されて、フリップフロップ回路部３２において保持される。
【００５２】
以下同様に動作し、クロック供給部２５の出力するサブクロック信号φnが立ち上るタイミングにおいて出力部３１は、スイッチ部３３の出力先を外部への出力に設定する。またこのとき出力部３１は、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿（８×（ｎ−１）＋１）から２１＿（８ｎ）が出力するビット列が表すアドレスに格納されているデータを読み出す。そして出力部３１は、そのバッファが「０」のビットを保持しているとき（演算結果Ｒn-1が「０」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢのビット（論理演算結果）を演算結果Ｒとして出力する。また出力部３１は、そのバッファが「１」のビットを保持しているとき（演算結果Ｒn-1が「１」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢの次のビット（論理演算結果の反転ビット）を演算結果Ｒとして出力する。この出力は、スイッチ部３３を介して外部に供給される。
【００５３】
出力部３１は、次にクロック信号ＣＬＫが立ち下るタイミングで出力部のリセット動作を行い、さらに次にクロック信号ＣＬＫが立ち上るタイミングではスイッチ部３３の出力先をフリップフロップ回路部３２に設定する。
【００５４】
このように、本実施の形態のこの例では、出力部３１が、時分割的にＮビットのビット列が出力されるタイミングにおいて、前回出力したビットを用いて、メモリデバイスにアクセスして取り出したビット間の論理演算結果と、その反転ビットとの一方を選択的に出力する手段として機能している。
【００５５】
こうしてｎ回目には出力部３１は、８×ｎビット長のデータＤに含まれる各ビットの論理演算結果（ここでの例では排他的論理和）を演算結果Ｒとして出力することとなる。
【００５６】
さらにこのように時分割的に演算を行う場合の出力ユニットの例は、この例に限られない。すなわちメモリデバイス１２の各アドレスに格納可能なデータは８ビットであるため、このビット幅を活用して次のように構成することも可能である。
【００５７】
本実施の形態のさらに別の例に係る論理演算装置１は、図７に例示するように、８×ｎ個（ここではメモリデバイス１２のアドレスバス幅Ｎ＝８としている）のスリーステートバッファ２１（図５に例示したものと同様、８個ずつでスリーステートバッファ部２０を構成する）と、メモリデバイス１２と、クロック供給部２５と、出力ユニット４０とを含んで構成される。また出力ユニット４０は、４つ（メモリデバイス１２のデータバス幅Ｌの１／２）のセレクタ部４１ａ，ｂ，ｃ，ｄを含んで構成されている。ここで、既に説明したものと同様の構成をとるものについては同じ符号を付して説明を省略する。
【００５８】
またこの例におけるメモリデバイス１２には、図８に例示するように、８ビット長のアドレスＡ（ビット列ａ1，ａ2，…ａ8で表される）が示す位置に、ＭＳＢ側から、ビット列ａ1，ａ2，…ａ8に基づく論理演算結果と、その反転ビットとの組が繰返し配される。つまりこの例では、各アドレスの位置に格納されるデータの奇数ビット目にはそれぞれ論理演算結果が格納され、偶数ビット目には、奇数ビット目にあるビットの反転ビットが格納される。
【００５９】
出力ユニット４０のセレクタ部４１ａには、メモリデバイス１２のデータバスのうち、ＭＳＢであるｄ1と、ＭＳＢの次のビットであるｄ2との各信号線が接続される。またこのセレクタ部４１ａは、外部から入力される１ビットの信号を受け入れる。
【００６０】
そしてセレクタ部４１ａは、クロック供給部２５から入力されるサブクロック信号φ1が立ち上がるタイミングで、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１が出力するビット列が表すアドレスに格納されているデータを読み出してラッチする。このセレクタ部４１ａは、外部から受け入れた１ビットの信号が「０」であるか「１」であるかにより、当該読み出したデータのうち、上記論理演算結果を表すＭＳＢの１ビット、またはその反転ビットを表すＭＳＢの次の１ビットのいずれかを選択的にラッチして出力する。
【００６１】
ここでの例では、セレクタ部４１ａは、外部から受け入れたビットが「０」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢのビット（信号線ｄ1が出力する論理演算結果）を選択してラッチし、出力する。またこのセレクタ４１ａは、外部から受け入れたビットが「１」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢの次のビット（論理演算結果の反転ビットを表す信号線ｄ2の出力）を選択してラッチし、出力する。
【００６２】
またセレクタ部４１ｂには、メモリデバイス１２のデータバスのうち、ＭＳＢ側のｄ3と、その次のビットであるｄ4との各信号線が接続される。またこのセレクタ部４１ｂは、セレクタ部４１ａが出力する１ビットの信号を受け入れる。
【００６３】
そしてセレクタ部４１ｂは、クロック供給部２５から入力されるサブクロック信号φ2が立ち上がるタイミングで、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１が出力するビット列が表すアドレスに格納されているデータを読み出してラッチする。このセレクタ部４１ｂは、セレクタ部４１ａから受け入れた１ビットの信号が「０」であるか「１」であるかにより、当該読み出したデータのうち、上記論理演算結果を表すＭＳＢ側の１ビット、またはその反転ビットを表すその次の１ビットのいずれかを選択的にラッチして出力する。
【００６４】
ここでの例では、セレクタ部４１ｂは、セレクタ４１ａから受け入れたビットが「０」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢ側のビット（信号線ｄ3が出力する論理演算結果）を選択してラッチし、出力する。またこのセレクタ４１ｂは、セレクタ４１ａから受け入れたビットが「１」であるときには、メモリデバイス１２から読み出したデータのうち上記信号ｄ3の次の信号線ｄ4の表すビット（論理演算結果の反転ビットを表す）を選択してラッチし、出力する。
【００６５】
セレクタ部４１ｃには、メモリデバイス１２のデータバスのうち、ＭＳＢ側のｄ5と、その次のビットであるｄ6との各信号線が接続される。またこのセレクタ部４１ｃは、セレクタ部４１ｂが出力する１ビットの信号を受け入れる。
【００６６】
そしてセレクタ部４１ｃは、クロック供給部２５から入力されるサブクロック信号φ3が立ち上がるタイミングで、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１が出力するビット列が表すアドレスに格納されているデータを読み出してラッチする。ここでの例におけるセレクタ部４１ｃはセレクタ４１ｂから受け入れたビットが「０」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢ側のビット（信号線ｄ5が出力する論理演算結果）を選択してラッチし、出力する。またこのセレクタ４１ｃは、セレクタ４１ｂから受け入れたビットが「１」であるときには、メモリデバイス１２から読み出したデータのうち上記信号ｄ5の次の信号線ｄ6の表すビット（論理演算結果の反転ビットを表す）を選択してラッチし、出力する。
【００６７】
さらにセレクタ部４１ｄには、メモリデバイス１２のデータバスのうち、ＭＳＢ側のｄ7と、その次のビットであるｄ8との各信号線が接続される。またこのセレクタ部４１ｄは、セレクタ部４１ｃが出力する１ビットの信号を受け入れる。
【００６８】
そしてセレクタ部４１ｄは、クロック供給部２５から入力されるサブクロック信号φ4が立ち上がるタイミングで、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１が出力するビット列が表すアドレスに格納されているデータを読み出してラッチする。ここでの例におけるセレクタ部４１ｄはセレクタ４１ｃから受け入れたビットが「０」であるときには、メモリデバイス１２から読み出したデータのうちＭＳＢ側のビット（信号線ｄ7が出力する論理演算結果）を選択してラッチし、出力する。またこのセレクタ４１ｃは、セレクタ４１ｂから受け入れたビットが「１」であるときには、メモリデバイス１２から読み出したデータのうち上記信号ｄ7の次の信号線ｄ8の表すビット（論理演算結果の反転ビットを表す）を選択してラッチし、出力する。このセレクタ部４１ｄの出力は、外部に出力される。
【００６９】
本実施の形態のこの例に係る論理演算装置１の動作を次に説明する。ここでは例えば論理演算としての排他的論理和の計算の対象としてＭ＝Ｎ×ｎ（メモリデバイス１２のアドレスバス幅Ｎの整数ｎ倍）ビット長のデータＤ（そのｉ番目のビットをｂi（ｉ＝１，２，…Ｎ×ｎ）とする）の入力を受け入れる。そしてＭＳＢ側（あるいはＬＳＢ側）から順にｉ番目のビットを、それぞれ第ｉ番目のスリーステートバッファ２１＿ｉに入力する。
【００７０】
そして論理演算装置１は次のように動作する。セレクタ部４１ｄの出力があった後（図６の時刻ｔ０）、次にクロック供給部２５の出力するクロック信号ＣＬＫ及びサブクロック信号φ1が立ち上るタイミング（図６の時刻ｔ１）において、スリーステートバッファ２１＿１から２１＿８が、入力されたビットｂ1，ｂ2，…ｂ8を、メモリデバイス１２のアドレスバスに供給する。
【００７１】
このとき、出力ユニット４０のセレクタ４１ａが、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿１から２１＿８が出力するビット列が表すアドレスに格納されているデータを読み出す。なお、ここでセレクタ４１ａには外部から「０」の信号が入力されているものとする。セレクタ４１ａは、ラッチを備え、このラッチがサブクロック信号φ1の立ち上るタイミング（図６の時刻ｔ１）においてメモリデバイス１２から読み出したデータのうちＭＳＢのビット（データバスの信号線ｄ1を介して出力されるデータ、つまり論理演算結果）を演算結果Ｒ1としてラッチし、出力する。この出力Ｒ1はセレクタ４１ｂに出力される。
【００７２】
セレクタ４１ｂは、この出力Ｒ1を受け入れておく。次にクロック供給部２５の出力するクロック信号ＣＬＫと、サブクロック信号φ2とが立ち上るタイミング（図６の時刻ｔ３）において、スリーステートバッファ２１＿９から２１＿１６が、入力されたビットｂ9，ｂ10，…ｂ16を、メモリデバイス１２のアドレスバスに供給する。
【００７３】
そしてセレクタ４１ｂは、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿９から２１＿１６が出力するビット列が表すアドレスに格納されているデータを読み出す。そしてセレクタ４１ｂは、セレクタ４１ａから入力されたビットが「０」であるとき（演算結果Ｒ1が「０」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢ側のビット（データバス上、ｄ3の信号線の出力、つまり論理演算結果）を演算結果Ｒ2として、サブクロック信号φ2が立ち上るタイミング（図６の時刻ｔ３）においてラッチし、出力する。またこのセレクタ４１ｂは、セレクタ４１ａから入力されたビットが「１」であるとき（演算結果Ｒ1が「１」であったとき）には、メモリデバイス１２から読み出したデータのうちｄ4の信号線の出力（論理演算結果の反転ビット）を演算結果Ｒ2として、サブクロック信号φ2が立ち上るタイミング（図６の時刻ｔ３）においてラッチし、出力する。この出力Ｒ2は、セレクタ４１ｃによって受け入れられる。
【００７４】
以下セレクタ４１ｃ…も同様に動作する。そしてクロック供給部２５の出力するサブクロック信号φ4が立ち上るタイミングにおいてスリーステートバッファ２１＿２５から２１＿３２が、入力されたビットｂ25，ｂ26，…ｂ32を、メモリデバイス１２のアドレスバスに供給すると、セレクタ４１ｄは、メモリデバイス１２が格納しているデータのうち、スリーステートバッファ２１＿２５から２１＿３２が出力するビット列が表すアドレスに格納されているデータを読み出す。
【００７５】
そしてセレクタ４１ｄは、セレクタ４１ｃから入力されたビットが「０」であるとき（演算結果Ｒ3が「０」であったとき）には、メモリデバイス１２から読み出したデータのうちＭＳＢ側のビット（データバス上、ｄ7の信号線の出力、つまり論理演算結果）を演算結果Ｒとしてサブクロック信号φ4が立ち上るタイミングにおいてラッチし、出力する。またこのセレクタ４１ｄは、セレクタ４１ｃから入力されたビットが「１」であるとき（演算結果Ｒ3が「１」であったとき）には、メモリデバイス１２から読み出したデータのうちｄ8の信号線の出力（論理演算結果の反転ビット）を演算結果Ｒとしてサブクロック信号φ4が立ち上るタイミングにおいてラッチし、出力する。
【００７６】
このように、本実施の形態のこの例では、出力ユニット４０に含まれる各セレクタ４１が、時分割的にＮビットずつのビット列が出力されるタイミングにおいて、前回出力したビットを用いて、メモリデバイスにアクセスして取り出したビット間の論理演算結果と、その反転ビットとの一方を選択的に出力する手段として機能している。そして４回目には出力ユニット４０が、８×４＝３２ビット長のデータＤに含まれる各ビットの論理演算結果（ここでの例では排他的論理和）を演算結果Ｒとして出力することとなる。
このように、本実施の形態のこの例では、出力ユニット４０が、時分割的にＮビットのビット列が出力されるタイミングにおいて、前回出力したビットを用いて、メモリデバイスにアクセスして取り出したビット間の論理演算結果と、その反転ビットとの一方を選択的に出力する手段として機能している。
【００７７】
さらに本実施の形態のここまでの説明において、図３に示したルックアップテーブルを利用する場合、出力部３１または出力ユニット４０が前段の出力を利用してメモリデバイス１２から読み出したデータの奇数ビット目を出力するか偶数ビット目を出力するかを切替えることとしていた。しかしながら本実施の形態はこれに限られず、例えば図９に例示するように、メモリデバイス１２から出力される信号線ｄ（メモリデバイス１２に入力されるアドレスで表されるビット列を用いた論理演算結果が出力される信号線）に反転論理（ＮＯＴ）回路５１を接続して、メモリデバイス１２に入力されるアドレスで表されるビット列を用いた論理演算結果の反転ビットを得てもよい。この場合、出力部３１または出力ユニット４０は、上記信号線ｄと、反転論理回路５１の出力とのいずれかを、前段の出力を利用して選択して（出力ユニット４０ではそれをラッチし）、出力することとなる。
【００７８】
さらに本実施の形態の図４，図５，または図７に例示した論理演算装置１のように、メモリデバイスのアドレスバス幅Ｎのｎ倍長（例えばアドレスバス幅８ビット、ｎ＝４ならば３２ビット長）のビット列の入力を受け、その論理演算結果１ビットを出力するときには、これらの論理演算装置１を例えば８個分並列に配し、その出力をさらに８入力の論理演算回路に入力して、Ｎ×ｎ×８ビット長の論理演算を行うようにしてもよい。
【００７９】
具体的に図１０は、アドレスバス幅８ビット、ｎ＝４の３２ビット長のビット列の入力を受けて、その論理演算結果としての排他的論理和を演算するよう、メモリデバイス１２内のルックアップテーブルを設定した図４，図５，または図７に例示した論理演算装置１を、８個並列に配した場合を示す。
【００８０】
この図１０の例では、各論理演算装置１が出力する１ビットの出力を、それぞれ図１２に例示したものと同じ８入力排他的論理和回路１００に入力して、その排他的論理和の演算結果１ビットを得ている。この回路構成によると、比較的小規模な回路構成により、８×４×８＝２５６ビット長のビット列に含まれる各ビット間の排他的論理和が得られる。
【符号の説明】
【００８１】
１  論理演算装置、１０  論理演算ユニット、１１  入力バッファ部、１２  メモリデバイス、１３，３１  出力部、２０  スリーステートバッファ部、２１  スリーステートバッファ、２５  クロック供給部、３０，４０  出力ユニット、３２  フリップフロップ回路部、３３  スイッチ部、４１  セレクタ部、５１  論理反転回路、１００  ８入力排他的論理和回路、２００  ２入力排他的論理和回路。
【図１】
2015026341.tif 000003
【図２】
2015026341.tif 000004
【図３】
2015026341.tif 000005
【図４】
2015026341.tif 000006
【図５】
2015026341.tif 000007
【図６】
2015026341.tif 000008
【図７】
2015026341.tif 000009
【図８】
2015026341.tif 000010
【図９】
2015026341.tif 000011
【図１０】
2015026341.tif 000012
【図１１】
2015026341.tif 000013