(57)【要約】【課題】論理回路の設計効率が低下するという問題を解決すること。【解決手段】入力された情報を保持する複数のフリップフロップ回路と、複数のフリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力する復号回路と、フリップフロップ回路に入力されるクロック信号の予め設定された変化を検出し、クロック信号の変化を検出してから、予め定められた待機時間が経過したときに待機終了信号を出力する遅延発生回路と、遅延発生回路から出力された待機終了信号の入力に応じて、復号回路から入力された復号信号を有効にして、出力先に出力する制御回路と、を備える。【選択図】図２１
2014116054.tif 000002
【特許請求の範囲】
【請求項１】
入力された情報を保持する複数のフリップフロップ回路と、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力する復号回路と、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生回路と、
前記遅延発生回路から出力された前記待機終了信号の入力に応じて、前記復号回路から入力された前記復号信号を有効にして、出力先に出力する制御回路と、
を備える集積回路。
【請求項２】
請求項１に記載の集積回路であって、
前記遅延発生回路は、前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
前記制御回路は、前記遅延発生回路からハイレベルの前記待機終了信号が入力された場合に、前記復号回路から入力された前記復号信号を有効にして、前記出力先に出力する、
集積回路。
【請求項３】
請求項２に記載の集積回路であって、
前記制御回路は、前記復号回路から入力された前記復号信号と、前記遅延発生回路から入力された前記待機終了信号と、の論理積の信号を前記出力先に出力する、
集積回路。
【請求項４】
請求項１乃至３のいずれかに記載の集積回路であって、
複数の前記フリップフロップ回路は、所定の記憶領域のアドレス情報を示すアドレス信号を保持し、
前記復号回路は、前記フリップフロップ回路にて保持された前記アドレス信号を読み出し、読み出した前記アドレス信号に基づいて前記アドレス情報を復号し、復号した前記アドレス情報に対応する信号を前記復号信号としてハイレベルにする、
集積回路。
【請求項５】
請求項１乃至４のいずれかに記載の集積回路であって、
前記遅延発生回路は、シミュレーションに基づいてメタステーブル状態が生じるメタステーブル時間以上になるように設定された前記待機時間が経過したときに前記待機終了信号を出力する、
集積回路。
【請求項６】
請求項１乃至４のいずれかに記載の集積回路であって、
前記遅延発生回路は、予め設定された前記フリップフロップ回路の遅延時間と、予め設定された定数と、の積により設定された前記待機時間が経過したときに前記待機終了信号を出力する、
集積回路。
【請求項７】
記憶制御装置に、
入力された情報を保持する情報保持手段と、
複数の前記情報保持手段にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号情報を出力する復号手段と、
前記情報保持手段に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生手段と、
前記遅延発生手段から出力された前記待機終了信号の入力に応じて、前記復号手段から入力された前記復号情報を有効にして、出力先に出力する制御手段と、
を実現させるためのプログラム。
【請求項８】
請求項７に記載のプログラムであって、
前記遅延発生手段は、前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
前記制御手段は、前記遅延発生手段からハイレベルの前記待機終了信号が入力された場合に、前記復号手段から入力された前記復号信号を有効にして、前記出力先に出力する、
プログラム。
【請求項９】
複数のフリップフロップ回路が入力された情報を保持し、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力し、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力し、
出力された前記待機終了信号の入力に応じて、出力された前記復号信号を有効にして、出力先に出力する、
情報処理方法。
【請求項１０】
請求項９に記載の情報処理方法であって、
前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
ハイレベルの前記待機終了信号が入力された場合に、出力された前記復号信号を有効にして、前記出力先に出力する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路にかかり、特に、論理回路の構造を変更可能な集積回路に関する。
【背景技術】
【０００２】
集積回路の製造後に、ユーザが論理回路の構造を定義、変更することが可能なFPGA（Field Programmable Gate Array）等のプログラマブルロジックデバイスの技術が知られている（例えば特許文献１参照）。FPGAには、大量のブロックRAM（Random Access Memory）が搭載されており、各種のアプリケーションに広く利用されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−２２１０７７
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、プログラマブルロジックデバイスの技術においては、製造プロセスが微細になるにつれて、クロック周波数が高くなったり、特定のクロック入力により駆動する回路が増加したり、レジスタの数が増加したりする。このような場合に、プログラマブルロジックデバイスの技術では、データの記憶領域を示すアドレス信号のセットアップタイムとホールドタイムとが十分に確保されない状態（以下、アドレスレーシング状態と記載する）が生じることがあった。
【０００５】
特に、プログラマブルロジックデバイスの技術では、アドレスレーシング状態を考慮して製造されていなかった古い製造プロセスに基づく回路を流用したり、マルチサイクル動作を行う際にアドレスレーシング状態の考慮が抜けると、アドレスレーシング状態が生じることがあった。例えば、図１に示すデータの読み出しと書き込みを行うRAM２０１が、書き込み動作時に図２のタイムチャートに示すように動作したとする。この場合、古い製造プロセスでは、WE信号がＨ（ハイ）レベル（ライトイネーブル状態）では、W‐ADD信号やW−Data信号のタイミングがクロック信号のタイミングと同期するように考慮されていたが、WE信号がＬ（ロー）レベル（ライトディスイネーブル状態）では上記したタイミングが考慮されていなかった。このため、データを読み出すタイミングが、クロック信号の立ち上がるタイミングと重なり、アドレスレーシング状態が生じることがあった。
【０００６】
また、例えば、図１の構成を有するRAM２０１が、図３に示すように、複数クロック（例えば２クロック）を１つのサイクルとするマルチサイクル動作を行う場合に、データの書き込みや読み出しを行うタイミングが、２つ目以降のクロック信号の立ち上がるタイミングと重なり、アドレスレーシング状態が生じることがあった。そして、このアドレスレーシング状態が生じると、アドレス情報を保持するためのFF（Flip Flop）回路の出力が不安定な状態（以下、メタステーブル状態と記載する）になることがあった。
【０００７】
FF回路の出力がメタステーブル状態になると、FF回路の出力に基づいてデータの読み書きを行う記憶領域のアドレスを指定する場合に、複数の記憶領域のアドレスを同時に指定してしまうことがあった。例えば、図４に示す集積回路２１１が、図５のタイムチャートに示すように動作する場合に、FF回路２２１の出力（Address-t_1）がメタステーブル状態（発信状態）になったとする。この場合、図４に示すアドレスデコーダ２２２は、図５に示すように、FF回路２２１の出力結果（Address-t_0,Address-t_1, Address-t_2）として、（H,L,L）と（H,H,L）との２つの出力結果を取得することがある。そして、アドレスデコーダ２２２は、出力結果（H,L,L）に基づいて、アドレスAdd_1をハイレベルにする（選択する）とともに、出力結果（H,H,L）に基づいて、アドレスAdd_3をハイレベルにすることで、複数の記憶領域のアドレスを同時に指定することがあった。
【０００８】
このとき、図４に示すように、指定したAdd_1にて示される情報保持部２２３ｂが保持するデータ（例えば０）とAdd_3にて示される情報保持部２２３ｄが保持するデータ（例えば１）とが異なる場合、一方のアドレスにて示される情報保持部２２３が保持するデータが反転（例えばAdd_3にて示される情報保持部２２３ｄが保持するデータ「１」が「０」になる）し、データが破壊されることがあった。
【０００９】
これにより、ユーザは論理回路の構造を定義、変更する際に、アドレスレーシング状態が生じないように入念な回路チェックを行う必要があった。この結果、プログラマブルロジックデバイスを利用する場合に、論理回路の設計効率が低下するという問題があった。
【００１０】
このため、本発明の目的は、論理回路の設計効率が低下するという問題を解決することができる集積回路を提供させることにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため本発明の一態様における集積回路は、
入力された情報を保持する複数のフリップフロップ回路と、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力する復号回路と、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生回路と、
前記遅延発生回路から出力された前記待機終了信号の入力に応じて、前記復号回路から入力された前記復号信号を有効にして、出力先に出力する制御回路と、
を備えるという構成を取る。
【００１２】
また、本発明の他の形態であるプログラムは、
記憶制御装置に、
入力された情報を保持する情報保持手段と、
複数の前記情報保持手段にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号情報を出力する復号手段と、
前記情報保持手段に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生手段と、
前記遅延発生手段から出力された前記待機終了信号の入力に応じて、前記復号手段から入力された前記復号情報を有効にして、出力先に出力する制御手段と、
を実現させるためのプログラムである。
【００１３】
また、本発明の他の形態である情報処理方法は、
複数のフリップフロップ回路が入力された情報を保持し、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力し、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力し、
出力された前記待機終了信号の入力に応じて、出力された前記復号信号を有効にして、出力先に出力する、
という構成を取る。
【発明の効果】
【００１４】
本発明によれば、プログラマブルロジックデバイスを利用する場合に、論理回路を効率的に設計することができる。
【図面の簡単な説明】
【００１５】
【図１】RAMの構成の概略を示すブロック図である。
【図２】アドレスレーシング状態を説明するための図である。
【図３】アドレスレーシング状態を説明するための図である。
【図４】集積回路の構成を示すブロック図である。
【図５】図４に示す集積回路の動作を示すタイムチャートである。
【図６】本発明の第１実施形態における集積回路の構成を示すブロック図である。
【図７】図６に示す集積回路の動作を示すタイムチャートである。
【図８】アドレス信号とチップセレクト信号との対応関係を示す図である。
【図９】遅延発生回路の構成を示すブロック図である。
【図１０】EX-NORゲートの入力と出力との対応関係を示す図である。
【図１１】図９に示す遅延発生回路の動作を示すタイムチャートである。
【図１２】図６に示す集積回路の他の動作を示すタイムチャートである。
【図１３】遅延発生回路の他の構成を示すブロック図である。
【図１４】EX-ORゲートの入力と出力との対応関係を示す図である。
【図１５】図１３に示す遅延発生回路の動作を示すタイムチャートである。
【図１６】遅延発生回路の他の構成を示すブロック図である。
【図１７】図１６に示す遅延発生回路の動作を示すタイムチャートである。
【図１８】遅延発生回路の他の構成を示すブロック図である。
【図１９】図１８に示す遅延発生回路の動作を示すタイムチャートである。
【図２０】集積回路の他の構成を示すブロック図である。
【図２１】本発明の第２実施形態における集積回路の構成を示すブロック図である。
【発明を実施するための形態】
【００１６】
＜第１実施形態＞
図６は、本発明の第１実施形態にかかる集積回路１の構成を概略的に示す図である。図６に示すように、集積回路１は、FF（FlipFlop）回路１１（フリップフロップ回路）と、アドレスデコーダ１２（復号回路）と、遅延発生回路１３と、ANDゲート１４（制御回路）と、情報保持部１５（記憶領域）と、を備える。FF回路１１は、アドレス端子から入力されたアドレス信号をラッチする。そして、アドレスデコーダ１２は、FF回路１１にてラッチされたアドレス信号をデコードし、特定の情報保持部１５を選択するチップセレクト信号（復号信号）を出力する。また、遅延発生回路１３は、FF回路１１に入力されるクロック信号の立ち上がりを検出し、予め設定された待機時間だけ待機し、待機時間が経過した後に、待機の終了を表す遅延終了信号（待機終了信号）を出力する。そして、ANDゲート１４（具体的にはANDゲート１４ａ乃至１４ｈ）は、アドレスデコーダ１２から出力されたチップセレクト信号と、遅延発生回路１３から出力された遅延終了信号と、に基づく信号を出力し、特定の情報保持部１５（情報保持部１５ａ乃至１５ｈのいずれか）を選択する。
【００１７】
なお、図６の例では、アドレスデコーダ１２が、Add_0乃至Add_7の８つの情報保持部１５のアドレスのうちのいずれかを選択する場合について説明するが、集積回路１の構成は上記に限られない。以下に、集積回路１の詳細について説明する。
【００１８】
まず、FF回路１１は、クロック信号Clockの入力時（つまりクロック信号Clockの立ち上がり時）のD入力としてアドレス信号Address(3:0)の入力を受け付ける。ここでは、Address(3:0)は、図７に示すように、Address_0, Address_1, Address_2の３つを表す。そして、FF回路１１（具体的には３つのFF回路１１のそれぞれ）は、Address(3:0)の入力を受け付けると、Q出力としてAddress-t(3:0)をアドレスデコーダ１２へ出力する。Address-t(3:0)は、入力されたAddress_0に対する出力を示すAddress-t_0と、入力されたAddress_1に対する出力を示すAddress-t_1と、入力されたAddress_2に対する出力を示すAddress-t_2の３つを表す。
【００１９】
アドレスデコーダ１２は、FF回路１１から出力されたアドレス信号Address-t(3:0)の入力を受け付けると、入力を受け付けたAddress-t(3:0)をデコードし、Add_0乃至Add_7のいずれかを表すチップセレクト信号Addを出力する。ここで、アドレス信号Address-t(3:0)とチップセレクト信号Addとの対応関係の例を図８に示す。例えば、図７の例では、最初のクロック信号が入力された時に、アドレスデコーダ１２は、FF回路１１からアドレス信号（Address-t_0, Address-t_1, Address-t_2）＝（L,H,L）の入力を受け付ける。従って、アドレスデコーダ１２は、図８に示すように、アドレス信号（L,H,L）に対応する「Add_2」をチップセレクト信号として出力する（Ｈレベルにする）。
【００２０】
また、遅延発生回路１３は、FF回路１１に入力されるクロック信号Clockの立ち上がり（予め設定された変化）を検出し、予め設定された待機時間だけ待機する。ここで、図９を参照して、遅延発生回路１３の具体的な回路構成について説明する。遅延発生回路１３は、トグルFF回路２１と、インバータ２２と、EX-NORゲート２３と、を備えている。トグルFF回路２１は、クロック信号が入力される度（クロック信号の立ち上がりが検出される度）にＱ出力を反転させる。例えば図１０に示すように、トグルFF２１は、１つ目のクロック信号が入力されると、ＬレベルであったＱ出力は反転してＨレベルになり、次のクロック信号が入力されると、Ｑ出力は反転してＬレベルになる。
【００２１】
インバータ２２ａ乃至２２ｆのそれぞれは、例えばNOTゲートであり、入力を受け付けた信号を反転して出力する。例えば、インバータ２２がＨレベルの信号の入力を受け付けた場合に、Ｈレベルを反転したＬレベルの信号を出力し、Ｌレベルの信号の入力を受け付けた場合にＬレベルを反転したＨレベルの信号を出力する。このインバータ２２ａ乃至２２ｆのそれぞれは、直列に接続されており、トグルFF回路２１からの出力が１つのインバータ２２を通過する度に、入力を反転して出力する時間だけ遅延を生じさせる。
【００２２】
なお、図９の遅延発生回路１３は６個のインバータ２２ａ乃至２２ｆを備えているが、遅延発生回路１３は、予め設定された遅延時間（待機時間）に応じた偶数個のインバータ２２を備えていればよい。インバータ２２の数が偶数個である場合、全てのインバータ２２を介して出力された信号（図９のＡ点における信号レベル）は、トグルFF回路２１から出力された信号（Ｑ出力の信号レベル）と同じになる。
【００２３】
また、予め設定された遅延時間は、例えば、トランジスタレベルのデバイスシミュレーションに基づいて、FF回路１１のメタステーブル状態が継続する時間（以下、メタステーブル時間と記載する）を算出し、メタステーブル時間以上になるように設定することができる。さらに、シミュレーション等によりメタステーブル時間を算出しない場合には、FF回路１１が入力された信号を出力するまでの予め設定されたFF回路遅延時間と、予め設定された定数（例えば５）と、の積を遅延時間として設定してもよい。
【００２４】
EX-NORゲート２３は、トグルFF回路２１から直接出力された信号であるＱ出力と、Ｑ出力に対して偶数個のインバータ２２を介した信号であるＡ出力（Ａ点の信号レベル）と、の否定排他的論理和を遅延終了信号Delay_Outとして出力する。Ｑ出力とＡ出力との否定排他的論理和の例を図１０に示す。ここで、図１１の例では、最初のクロック信号が入力された時に、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｌレベル」になるので、EX-NORゲート２３は、図１０に示すように、遅延終了信号Delay_Out「Ｌレベル」を出力する。また、予め設定された遅延時間が経過すると、Ａ出力が「Ｈレベル」になるので、EX-NORゲート２３は、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｈレベル」になる遅延終了信号Delay_Out「Ｈレベル」を出力する。
【００２５】
このように、EX-NORゲート２３は、Ｑ出力とＡ出力とが同じ場合（出力が真である場合）に遅延終了信号Delay_Out「Ｈレベル」を出力し、Ｑ出力とＡ出力とが異なる場合（出力が偽である場合）に遅延終了信号Delay_Out「Ｌレベル」を出力する。この結果、遅延発生回路１３は予め設定された遅延時間が経過するまで待機させることができる。
【００２６】
そして、ANDゲート１４ａ乃至１４ｈのそれぞれは、アドレスデコーダ１２から出力されたチップセレクト信号Add1乃至Add7のそれぞれと、遅延発生回路１３から出力された遅延終了信号Delay_Outと、に基づく信号Add1’乃至Add7’を出力する。例えば、最初のクロック信号が入力された時に、上記したようにアドレスデコーダ１２は、チップセレクト信号「Add_2」の「Ｈレベル」を出力し、図７に示すように、遅延発生回路１３は、遅延終了信号Delay_Outの「Ｌレベル」を出力する。このため、チップセレクト信号「Add_2」の入力を受け付けたANDゲート１４ｃは、チップセレクト信号「Add_2」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｌレベル」と、に基づいて「Add_2’」として「Ｌレベル」（すなわち、チップセレクト信号「Add_2」が無効）を出力する。
【００２７】
また、予め設定された遅延時間が経過すると、遅延終了信号Delay_Outが「Ｈレベル」になるので、ANDゲート１４ｃは、チップセレクト信号「Add_2」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｈレベル」と、に基づいて「Add_2’」として「Ｈレベル」を出力する。このように、ANDゲート１４ｃは、チップセレクト信号と遅延終了信号との論理積の信号を情報保持部１５ｃ（出力先）に出力する。この結果、チップセレクト信号「Add_2」が有効になり、「Add_2’」に対応付けられた情報保持部１５ｃに保持されたデータが選択（読み出しまたは書き込み）可能になる。
【００２８】
続いて、次のクロック信号が入力された時に、例えばAddress-t_1にメタステーブル状態が生じたとする。この場合、アドレスデコーダ１２は、FF回路１１からアドレス信号（Address-t_0, Address-t_1, Address-t_2）＝（H,L,L）と（H.H,L）との入力を受け付ける。そして、アドレスデコーダ１２は、図８に示すように、アドレス信号（H,L,L）に対応する「Add_1」をチップセレクト信号として出力するとともに、アドレス信号（H,H,L）に対応する「Add_3」をチップセレクト信号として出力する。またこの時、遅延発生回路１３は、遅延終了信号Delay_Out「Ｌレベル」を出力する。
【００２９】
このため、チップセレクト信号「Add_1」の入力を受け付けたANDゲート１４ｂは、チップセレクト信号「Add_1」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｌレベル」と、に基づいて「Add_1’」として「Ｌレベル」を出力する。また、チップセレクト信号「Add_3」の入力を受け付けたANDゲート１４ｄは、チップセレクト信号「Add_3」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｌレベル」と、に基づいて「Add_3’」として「Ｌレベル」を出力する。この結果、チップセレクト信号「Add_1」と「Add_3」とのそれぞれは無効になる。
【００３０】
そして、予め設定された遅延時間が経過した時、遅延終了信号Delay_Outが「Ｈレベル」になる。メタステーブル状態は時間の経過とともに解消されるので、この遅延時間が経過した時、メタステーブル状態になっていたAddress-t_1の出力は一意に決定される。図７の例では、遅延時間が経過した時、Address-t_1は「Ｌレベル」を示すので、アドレスデコーダ１２はチップセレクト信号「Add_1」の「Ｈレベル」を出力する。この結果、チップセレクト信号「Add_1」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｈレベル」と、に基づいて、チップセレクト信号「Add_1」が有効になり、チップセレクト信号「Add_1」の入力を受け付けたANDゲート１４ｂは「Ｈレベル」を出力する。
【００３１】
一方、アドレスデコーダ１２はチップセレクト信号「Add_3」の「Ｌレベル」を出力するので、チップセレクト信号「Add_3」の「Ｌレベル」と、遅延終了信号Delay_Outの「Ｈレベル」と、に基づいて、チップセレクト信号「Add_3」の入力を受け付けたANDゲート１４dは「Ｌレベル」を出力する。
【００３２】
このように、集積回路１は、クロック信号が入力されてから予め設定された遅延時間が経過するまで、アドレスデコーダ１２の全出力（Add_0乃至Add_7）をオフ（Ｌレベル）にするので、メタステーブル状態が生じた場合でも複数のアドレスが同時に選択されるマルチアドレスの発生を抑えることができる。この結果、記憶領域に記憶されたデータの破壊（例えばRAMのbit化け）を防ぐことができる。
【００３３】
なお、仮に遅延時間よりもメタステーブル時間が長い場合でも、マルチアドレスが発生している状態を十分に短くすることができるので、記憶領域に記憶されたデータが破壊される可能性を十分小さくすることができる。
【００３４】
ここで、図７のタイムチャートでは、メタステーブル状態になったAddress-t_1が「Ｌレベル」になった例を説明したが、メタステーブル状態では、Address-t_1が「Ｈレベル」になることがある。図１２は、メタステーブル状態になったAddress-t_1が「Ｈレベル」になる場合のタイムチャートを示す。
【００３５】
図１２の例では、２つ目のクロック信号の入力を受け付けたFF回路１１は、アドレス信号（Address_0, Address_1, Address_2）＝（H,L,L）の入力を受け付ける。そして、アドレス信号Address_1がレーシング状態である場合に、アドレスデコーダ１２は、FF回路１１からアドレス信号（Address-t_0, Address-t_1, Address-t_2）＝（H,L,L）と（H.H,L）との入力を受け付ける。
【００３６】
そして、予め設定された遅延時間が経過し、遅延終了信号Delay_Outが「Ｈレベル」になった時、メタステーブル状態になっていたアドレス信号Address-t_1は「Ｈレベル」を示す。この場合に、アドレスデコーダ１２はチップセレクト信号「Add_3」の「Ｈレベル」を出力するので、チップセレクト信号「Add_3」の「Ｈレベル」と、遅延終了信号Delay_Outの「Ｈレベル」と、に基づいて、チップセレクト信号「Add_3」の入力を受け付けたANDゲート１４ｄは「Ｈレベル」を出力する。
【００３７】
FF回路１１に入力されたアドレス信号（Address_0, Address_1, Address_2）＝（H,L,L）は、図８に示すように「Add_1」を示すので、アドレスデコーダ１２から出力されるチップセレクト信号「Add_3」とは異なるものになる。このように、メタステーブル状態が生じると、アドレス信号Address-t(3:0)の論理を確定することができないことがある。しかし、マルチアドレスが発生することを防ぐことができるので、情報保持部１５に保持されたデータが破壊されることを防ぐことができる。
【００３８】
またここで、図９の遅延発生回路１３では、インバータ２２の数が偶数個である場合について説明したが、予め設定された遅延時間に応じて、インバータ２２の数を奇数個にすることもできる。図１３は、インバータ２２の数が奇数個（例えば５個）である遅延発生回路３１の回路構成を示す図である。なお、図９の遅延発生回路１３と同様の構成を有するものには、同じ符号が付されている。すなわち、図１３の遅延発生回路３１は、インバータ２２の数が奇数個であり、EX-NORゲート２３の代わりにEX-ORゲート４１を備える点が図９の遅延発生回路１３と異なり、それ以外の構成は遅延発生回路１３と同様である。
【００３９】
インバータ２２の数が奇数個である場合、全てのインバータ２２を介して出力された信号（図１３のＡ点における信号レベル）は、トグルFF回路２１から出力された信号（Ｑ出力の信号レベル）と異なる（反転した）ものになる。
【００４０】
EX-ORゲート４１は、トグルFF回路２１から直接出力された信号であるＱ出力と、Ｑ出力を奇数個のインバータ２２を介して入力を受け付けた信号であるＡ出力（Ａ点の信号レベル）と、の排他的論理和を遅延終了信号Delay_Outとして出力する。Ｑ出力とＡ出力との排他的論理和の対応関係を図１４に示す。ここで、図１５の例では、最初のクロック信号が入力された時に、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｈレベル」になるので、EX-ORゲート４１は、図１４に示すように、遅延終了信号Delay_Out「Ｌレベル」を出力する。また、予め設定された遅延時間が経過すると、Ａ出力が「Ｌレベル」になるので、EX-ORゲート４１は、図１４に示すように、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｌレベル」になる遅延終了信号Delay_Out「Ｈレベル」を出力する。
【００４１】
このように、EX-ORゲート４１は、Ｑ出力とＡ出力とが異なる場合に遅延終了信号Delay_Out「Ｈレベル」を出力し、Ｑ出力とＡ出力とが同じ場合に遅延終了信号Delay_Out「Ｌレベル」を出力する。この結果、遅延発生回路３１は予め設定された遅延時間が経過するまで待機させることができる。
【００４２】
さらに図９の遅延発生回路１３と図１３の遅延発生回路３１とは、インバータ２２を備えていたが、遅延発生回路の構成は上記に限られず、バッファや遅延専用素子、または、多入力論理ゲート等の遅延を発生させることができる素子であればよい。例えば、遅延発生回路がインバータ２２の代わりに、PLL（Phase Locked Loop）を備える場合について図１６を参照して説明する。
【００４３】
図１６は、PLL６１を備える遅延発生回路５１の回路構成を示す図である。なお、図９の遅延発生回路１３と同様の構成を有するものには、同じ符号が付されている。すなわち、図１５の遅延発生回路５１は、インバータ２２の代わりにPLL６１を備える点が図９の遅延発生回路１３と異なり、それ以外の構成は遅延発生回路１３と同様である。
【００４４】
PLL６１は、入力された信号と、PLL６１内の発振器からの出力との位相差が一定になるよう、PLL６１内の発振器にフィードバック制御をかけて発振をさせる発振回路であり、多様な信号を安定した状態で作り出すことができる。従って、PLL６１は、より正確に予め設定された待機時間だけ待機することができる。例えば、PLL６１は、待機時間が経過するまでの間、EX-NORゲート２３へ「Ｌレベル」の信号を出力（Ａ出力）し、待機時間が経過したときにEX-NORゲート２３へ「Ｈレベル」の信号を出力する。
【００４５】
遅延発生回路５１では、例えば図１７に示すように、最初のクロック信号が入力された時に、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｌレベル」になるので、EX-NORゲート２３は、遅延終了信号Delay_Out「Ｌレベル」を出力する。また、予め設定された遅延時間が経過すると、Ａ出力が「Ｈレベル」になるので、EX-NORゲート２３は、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｈレベル」になる遅延終了信号Delay_Out「Ｈレベル」を出力する。
【００４６】
このように、PLL６１を用いることで、より正確に予め設定された待機時間だけ待機することができるので、集積回路の動作をより安定させることができる。なお、遅延発生回路５１はPLL６１を備えるとしたが、PLL６１の代わりにDLL（Dynamic Link Library）を備えてもよい。
【００４７】
次に、遅延発生回路がFF回路を用いる場合について図１８を参照して説明する。図１８は、遅延を発生させるためのFF回路８１を備える遅延発生回路７１の回路構成を示す図である。なお、図９の遅延発生回路１３と同様の構成を有するものには、同じ符号が付されている。すなわち、図１８の遅延発生回路７１は、FF回路８１と１つのインバータ２２を備える点が図９の遅延発生回路１３と異なり、それ以外の構成は遅延発生回路１３と同様である。
【００４８】
FF回路８１には、トグルFF回路２１に入力されたクロック信号を、インバータ２２を介して受け付ける。つまり、トグルFF回路２１に「Ｈレベル」のクロック信号が入力された場合、FF回路８１は、インバータ２２により「Ｈレベル」のクロック信号が反転された「Ｌレベル」のクロック信号を受け付ける。また、トグルFF回路２１に「Ｌレベル」のクロック信号が入力された場合、FF回路８１は、「Ｈレベル」のクロック信号を受け付ける。そして、FF回路８１は、「Ｈレベル」のクロック信号を受け付けた場合に、「Ｈレベル」の信号を出力（出力Ａ）する。
【００４９】
遅延発生回路７１のEX-NORゲート２３は、例えば図１９に示すように、最初のクロック信号が入力された時（立ち上がった）に、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｌレベル」になるので、EX-NORゲート２３は、遅延終了信号Delay_Out「Ｌレベル」を出力する。また、クロック信号が立ち下がった時（ＨレベルからＬレベルになった時）に、Ａ出力が「Ｈレベル」になるので、EX-NORゲート２３は、Ｑ出力が「Ｈレベル」になり、Ａ出力が「Ｈレベル」になる遅延終了信号Delay_Out「Ｈレベル」を出力する。
【００５０】
このように、遅延発生回路７１では、Ａ出力がＱ出力に対して１８０度位相シフトした信号になる。従って、遅延時間をシミュレーション等に基づいて決定していない場合でも、メタステーブル状態が解消されるのに十分な時間だけ待機させることができる。
【００５１】
なお、遅延発生回路１３は、例えば集積回路が設置されたRAMの内部に配置されていてもよいし、図２０に示すように、RAM９１の外部に配置されていてもよい。図２０に示すように、遅延発生回路１３をRAM９１の外部に配置することにより、遅延発生回路１３を複数のRAMで共有可能になる。従って、複数のRAMごとに遅延回路を配置する場合に比べて、回路全体を小型化することができる。
【００５２】
＜第２実施形態＞
次に、本発明の第２実施形態にかかる集積回路について図２１を参照して説明する。
第２実施形態に係る集積回路１０１は、
入力された情報を保持する複数のフリップフロップ（FF）回路１１１と、
複数のFF回路１１１にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力する復号回路１１２と、
FF回路１１１に入力されるクロック信号の予め設定された変化を検出し、クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生回路１１３と、
遅延発生回路１１３から出力された待機終了信号の入力に応じて、復号回路１１２から入力された復号信号を有効にして、出力先に出力する制御回路１１４と、
を備える。
【００５３】
上記構成により、復号回路１１２は、複数のFF回路１１１にて保持された情報に基づいて復号信号を出力する。また、遅延発生回路１１３は、FF回路１１１に入力されるクロック信号の変化を検出し、クロック信号の変化（例えば立ち上がり）を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力し、制御回路１１４は、遅延発生回路１１３から出力された待機終了信号の入力に応じて、復号回路１１２から入力された復号信号を有効にして、出力先に出力する。このように、予め設定された待機時間だけ待機するので、FF回路１１１の出力にメタステーブル状態が生じても、メタステーブル状態が解消されるまで待機することができる。このため、例えば、制御回路１１４が複数の出力先に対して同時に復号信号を有効にして出力することを防ぐことができる。この結果、例えば出力先のデータが破壊されることを防ぐことができるので、迅速かつ容易に論理回路の設計することができる。
【００５４】
以上、上記実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成及び詳細に、本願発明の範囲内において当業者が理解し得る様々な変更をすることができる。
【００５５】
例えば、上記集積回路の構成を、プログラムを用いて実現させることができる。例えば、プログラムは、RAM等の記憶を制御する記憶制御装置に、入力された情報を保持する情報保持部（情報保持手段）と、複数の情報保持部にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号情報を出力する復号部（復号手段）と、情報保持部に入力されるクロック信号の予め設定された変化を検出し、クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生部（遅延発生手段）と、遅延発生部から出力された待機終了信号の入力に応じて、復号部から入力された復号情報を有効にして、出力先に出力する制御部（制御手段）と、を実現させることができる。
【００５６】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における集積回路等の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００５７】
（付記１）
入力された情報を保持する複数のフリップフロップ回路と、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力する復号回路と、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生回路と、
前記遅延発生回路から出力された前記待機終了信号の入力に応じて、前記復号回路から入力された前記復号信号を有効にして、出力先に出力する制御回路と、
を備える集積回路。
【００５８】
上記構成により、復号回路は、複数のフリップフロップ回路にて保持された情報に基づいて復号信号を出力する。また、遅延発生回路は、フリップフロップ回路に入力されるクロック信号の変化を検出し、クロック信号の変化（例えば立ち上がり）を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力し、制御回路は、遅延発生回路から出力された待機終了信号の入力に応じて、復号回路から入力された復号信号を有効にして、出力先に出力する。このように、予め設定された待機時間だけ待機するので、フリップフロップ回路の出力にメタステーブル状態が生じても、メタステーブル状態が解消されるまで復号信号を無効にすることができる。このため、例えば、制御回路が複数の出力先に対して同時に復号信号を有効にして出力することを防ぐことができる。この結果、例えば出力先のデータが破壊されることを防ぐことができるので、迅速かつ容易に論理回路の設計することができる。
【００５９】
（付記２）
付記１に記載の集積回路であって、
前記遅延発生回路は、前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
前記制御回路は、前記遅延発生回路からハイレベルの前記待機終了信号が入力された場合に、前記復号回路から入力された前記復号信号を有効にして、前記出力先に出力する、
集積回路。
【００６０】
上記構成により、遅延発生回路は、クロック信号の変化を検出してから待機時間が経過するまでの間、ローレベルの待機終了信号を出力し、クロック信号の変化を検出してから待機時間が経過したときに待機終了信号をローレベルからハイレベルに変更して出力する。そして、制御回路は、遅延発生回路からハイレベルの待機終了信号が入力された場合に、復号回路から入力された復号信号を有効にして出力先に出力する。このように、ハイレベルの待機終了信号が制御回路に入力された場合に復号信号を有効にするので、メタステーブル状態が解消されるまで待機し、出力先のデータが破壊されることを防ぐことができる。
【００６１】
（付記３）
付記２に記載の集積回路であって、
前記制御回路は、前記復号回路から入力された前記復号信号と、前記遅延発生回路から入力された前記待機終了信号と、の論理積の信号を前記出力先に出力する、
集積回路。
【００６２】
上記構成により、制御回路は、復号回路から入力された復号信号と、遅延発生回路から入力された待機終了信号と、の論理積の信号を出力先に出力する。このように、制御回路は例えばANDゲートの構成を有しているので、簡単な構成で確実に復号信号の出力処理を行うことができる。
【００６３】
（付記４）
付記１乃至３のいずれかに記載の集積回路であって、
複数の前記フリップフロップ回路は、所定の記憶領域のアドレス情報を示すアドレス信号を保持し、
前記復号回路は、前記フリップフロップ回路にて保持された前記アドレス信号を読み出し、読み出した前記アドレス信号に基づいて前記アドレス情報を復号し、復号した前記アドレス情報に対応する信号を前記復号信号としてハイレベルにする、
集積回路。
【００６４】
上記構成により、複数のフリップフロップ回路は、所定の記憶領域のアドレス情報を示すアドレス信号を保持し、復号回路は、フリップフロップ回路にて保持されたアドレス信号を読み出し、読み出したアドレス信号に基づいてアドレス情報を復号し、復号したアドレス情報に対応する信号を復号信号としてハイレベルにする。この結果、例えば複数の記憶領域へ一度にアクセスすることにより記憶領域内に格納されたデータが破壊されることを防ぐことができ、ユーザが設計した論理回路の構造を入念にチェックしなくてもデータの破壊を防ぐことができる。
【００６５】
（付記５）
付記１乃至４のいずれかに記載の集積回路であって、
前記遅延発生回路は、シミュレーションに基づいてメタステーブル状態が生じるメタステーブル時間以上になるように設定された前記待機時間が経過したときに前記待機終了信号を出力する、
集積回路。
【００６６】
上記構成により、遅延発生回路は、シミュレーションに基づいてメタステーブル時間以上になるように設定された待機時間が経過したときに待機終了信号を出力するので、アドレスデコーダからの出力が不安定になることがなく、アドレスデコーダの出力を一意に決定することができる。従って、記憶領域内に格納されたデータが破壊されることを防ぐことができる。
【００６７】
（付記６）
付記１乃至４のいずれかに記載の集積回路であって、
前記遅延発生回路は、予め設定された前記フリップフロップ回路の遅延時間と、予め設定された定数と、の積により設定された前記待機時間が経過したときに前記待機終了信号を出力する、
集積回路。
【００６８】
上記構成により、遅延発生回路は、フリップフロップ回路の遅延時間と定数との積により設定された待機時間が経過したときに待機終了信号を出力するので、メタステーブル時間がわからない場合でも、アドレスデコーダの出力を一意に決定するために十分な時間だけ待機することができる。従って、記憶領域内に格納されたデータが破壊されることを防ぐことができる。
【００６９】
（付記７）
記憶制御装置に、
入力された情報を保持する情報保持手段と、
複数の前記情報保持手段にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号情報を出力する復号手段と、
前記情報保持手段に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力する遅延発生手段と、
前記遅延発生手段から出力された前記待機終了信号の入力に応じて、前記復号手段から入力された前記復号情報を有効にして、出力先に出力する制御手段と、
を実現させるためのプログラム。
【００７０】
（付記８）
付記７に記載のプログラムであって、
前記遅延発生手段は、前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
前記制御手段は、前記遅延発生手段からハイレベルの前記待機終了信号が入力された場合に、前記復号手段から入力された前記復号信号を有効にして、前記出力先に出力する、
プログラム。
【００７１】
（付記９）
複数のフリップフロップ回路が入力された情報を保持し、
複数の前記フリップフロップ回路にて保持された情報を読み出し、読み出した複数の当該情報に基づいて復号した復号信号を出力し、
前記フリップフロップ回路に入力されるクロック信号の予め定められた変化を検出し、前記クロック信号の変化を検出してから、予め設定された待機時間が経過したときに待機終了信号を出力し、
出力された前記待機終了信号の入力に応じて、出力された前記復号信号を有効にして、出力先に出力する、
情報処理方法。
【００７２】
（付記１０）
付記９に記載の情報処理方法であって、
前記クロック信号の変化を検出してから前記待機時間が経過するまでの間、ローレベルの前記待機終了信号を出力し、前記クロック信号の変化を検出してから前記待機時間が経過したときに前記待機終了信号をローレベルからハイレベルに変更して出力し、
ハイレベルの前記待機終了信号が入力された場合に、出力された前記復号信号を有効にして、前記出力先に出力する、
情報処理方法。
【符号の説明】
【００７３】
１      集積回路
１１    FF回路
１２    アドレスデコーダ
１３    遅延発生回路
１４    ANDゲート
１５    情報保持部
２１    トグルFF
２２    インバータ
２３    EX-NORゲート
３１    遅延発生回路
４１    EX-ORゲート
５１    遅延発生回路
６１    PLL
７１    遅延発生回路
８１    FF回路
９１    RAM
１０１  集積回路
１１１  FF回路
１１２  復号回路
１１３  遅延発生回路
１１４  制御回路
【図１】
2014116054.tif 000003
【図２】
2014116054.tif 000004
【図３】
2014116054.tif 000005
【図４】
2014116054.tif 000006
【図５】
2014116054.tif 000007
【図６】
2014116054.tif 000008
【図７】
2014116054.tif 000009
【図８】
2014116054.tif 000010
【図９】
2014116054.tif 000011
【図１０】
2014116054.tif 000012
【図１１】
2014116054.tif 000013
【図１２】
2014116054.tif 000014
【図１３】
2014116054.tif 000015
【図１４】
2014116054.tif 000016
【図１５】
2014116054.tif 000017
【図１６】
2014116054.tif 000018
【図１７】
2014116054.tif 000019
【図１８】
2014116054.tif 000020
【図１９】
2014116054.tif 000021
【図２０】
2014116054.tif 000022
【図２１】
2014116054.tif 000023