(57)【要約】  【課題】  バスの状態を遷移させることにより、ＣＰＵの負荷を低減することができる半導体集積回路を提供する。  【解決手段】  この半導体集積回路１は、バス状態検出回路２と、バスステート制御回路３と、バス駆動回路４とを具備する。バスステート制御回路３は、レジスタ５と、制御回路９とを具備する。バス状態検出回路２は、バスＢの状態を検出する。制御回路９は、データ及びスタート生成ビットがレジスタ５にセットされた場合に、バスＢがアイドル状態となるまでウェイトし、第１の制御信号を出力し、ストップ生成ビットがレジスタ５にセットされた場合に、第２の制御信号を出力する。バス駆動回路４は、第１の制御信号が供給された場合に、バスＢをスタート状態に遷移させ、レジスタ５内のデータを順次出力し、第２の制御信号が供給された場合に、バスＢをストップ状態に遷移させる。【選択図】  図１
2006018650.tif 000002
【特許請求の範囲】
【請求項１】
アイドル状態、スタート状態、ストップ状態、又は、ビジー状態を取り得るバスとＣＰＵとの間のデータ転送を行うための半導体集積回路であって、
前記バスの状態を検出するためのバス状態検出回路と、
データを書き込むための第１の領域、前記バスを前記スタート状態に遷移させることを指示するための第１のビットをセットするための第２の領域、及び、前記バスを前記ストップ状態に遷移させることを指示するための第２のビットをセットするための第３の領域を含むレジスタと、前記第１のビットが前記ＣＰＵによってセットされた場合に、前記バスが前記スタート状態又はビジー状態であるときは、前記バスが前記ストップ状態を経て前記アイドル状態となるまでウェイトし、前記バスが前記ストップ状態であるときは、前記バスが前記アイドル状態となるまでウェイトし、前記バスが前記アイドル状態であるとき又はなったときは、前記バスを前記スタート状態に遷移させるための第１の制御信号を出力し、前記第２のビットが前記ＣＰＵによってセットされた場合に、前記バスを前記ストップ状態に遷移させるための第２の制御信号を出力するための制御回路とを有するバスステート制御回路と、
前記バスステート制御回路から前記第１の制御信号が供給された場合に、前記バスを前記スタート状態に遷移させ、その後、前記バスステート制御回路の前記レジスタの前記第１の領域内のデータを前記バスに順次出力し、前記バスステート制御回路から前記第２の制御信号が供給された場合に、前記バスを前記ストップ状態に遷移させるためのバス駆動回路と、
を具備する半導体集積回路。
【請求項２】
前記バスから受信するデータのデータ長を表す値を書き込むための受信データ長設定レジスタを更に具備し、
前記制御回路が、
前記値が前記ＣＰＵによって前記受信データ長設定レジスタに書き込まれた場合に、前記バスがビジー状態であるときは、前記バスが前記ストップ状態及び前記アイドル状態を経て前記スタート状態となるまでウェイトし、前記バスが前記ストップ状態であるときは、前記バスが前記アイドル状態を経て前記スタート状態となるまでウェイトし、前記バスが前記アイドル状態であるときは、前記バスが前記スタート状態となるまでウェイトし、前記バスが前記スタート状態であるとき又はなったときから、前記値と同じ数のデータを前記バスから受信して前記レジスタの前記第１の領域に書き込み、その後、アクノリッジ信号を前記バスに出力するための第３の制御信号を出力し、
前記バス駆動回路が、
前記バスステート制御回路から前記第３の制御信号が供給された場合に、前記アクノリッジ信号を前記バスに出力すること
を特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記バス上におけるマスタデバイスとして動作することを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
前記バスがシリアルバスであることを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスとＣＰＵとの間のデータ転送を行うための半導体集積回路に関する。特に、本発明は、アイドル状態、スタート状態、ストップ状態、又は、ビジー状態を取り得るバスとＣＰＵとの間のデータ転送を行うための半導体集積回路に関する。
【背景技術】
【０００２】
従来より、クロックラインとデータラインとにより複数のデバイス間で、アドレスデータ，制御データを伝送するシリアル通信装置において、少なくとも一つのデバイスに、ＣＰＵと、クロックライン，データラインを通じて各デバイス夫々が発するデータ通信終了信号を検出する手段と、該検出手段の検出信号に基づいてＣＰＵ割り込み要求信号を発生させ、これをＣＰＵに伝送する手段とを備えたシリアル通信装置が知られている（例えば、特許文献１参照）。
【０００３】
しかしながら、特許文献１に掲載されたシリアル通信装置は、ＣＰＵ割り込み信号でＣＰＵにバスラインの状態を認識させるものではあるが、データ通信を開始できるかどうかの判断を行うものではなく、バスラインをスタート状態又はストップ状態に遷移させるものでもない。そのため、ＣＰＵの負荷が大きくなってしまう。
【０００４】
【特許文献１】特開平６−１７５９７５号公報（第１頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、上記の点に鑑み、本発明は、バスの状態を遷移させることにより、ＣＰＵの負荷を低減することができる半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００６】
以上の課題を解決するため、本発明に係る半導体集積回路は、アイドル状態、スタート状態、ストップ状態、又は、ビジー状態を取り得るバスとＣＰＵとの間のデータ転送を行うための半導体集積回路であって、バスの状態を検出するためのバス状態検出回路と、データを書き込むための第１の領域、バスをスタート状態に遷移させることを指示するための第１のビットをセットするための第２の領域、及び、バスをストップ状態に遷移させることを指示するための第２のビットをセットするための第３の領域を含むレジスタと、第１のビットがＣＰＵによってセットされた場合に、バスがスタート状態又はビジー状態であるときは、バスがストップ状態を経てアイドル状態となるまでウェイトし、バスがストップ状態であるときは、バスがアイドル状態となるまでウェイトし、バスがアイドル状態であるとき又はなったときは、バスをスタート状態に遷移させるための第１の制御信号を出力し、第２のビットがＣＰＵによってセットされた場合に、バスをストップ状態に遷移させるための第２の制御信号を出力するための制御回路とを有するバスステート制御回路と、バスステート制御回路から第１の制御信号が供給された場合に、バスをスタート状態に遷移させ、その後、バスステート制御回路のレジスタの第１の領域内のデータをバスに順次出力し、バスステート制御回路から第２の制御信号が供給された場合に、バスをストップ状態に遷移させるためのバス駆動回路とを具備する。
【０００７】
この半導体集積回路において、バスから受信するデータのデータ長を表す値を書き込むための受信データ長設定レジスタを更に具備し、制御回路が、値がＣＰＵによって受信データ長設定レジスタに書き込まれた場合に、バスがビジー状態であるときは、バスがストップ状態及びアイドル状態を経てスタート状態となるまでウェイトし、バスがストップ状態であるときは、バスがアイドル状態を経てスタート状態となるまでウェイトし、バスがアイドル状態であるときは、バスがスタート状態となるまでウェイトし、バスがスタート状態であるとき又はなったときから、値と同じ数のデータをバスから受信してレジスタの第１の領域に書き込み、その後、アクノリッジ信号をバスに出力するための第３の制御信号を出力し、バス駆動回路が、バスステート制御回路から第３の制御信号が供給された場合に、アクノリッジ信号をバスに出力することとしても良い。
【０００８】
また、バス上におけるマスタデバイスとして動作することとしても良いし、バスがシリアルバスであることとしても良い。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照しながら、本発明を実施するための最良の形態について説明する。なお、同一の構成要素には同一の参照符号を付して、説明を省略する。
図１は、本発明の第１の実施形態に係る半導体集積回路の概要を示す図である。図１に示すように、この半導体集積回路１は、バス状態検出回路２と、バスステート制御回路３と、バス駆動回路４とを具備する。また、バスステート制御回路３は、レジスタ５と、制御回路９とを具備する。
【００１０】
バス状態検出回路２及びバス駆動回路４は、シリアルバスの一例としてのＩ２Ｃ（Inter IC Bus：Philips社によって提唱されているＩＣ間バスの仕様）バスＢに接続されている。
Ｉ２ＣバスＢは、アイドル状態、スタート状態、ストップ状態、又は、ビジー状態を取り得る。
半導体集積回路１は、Ｉ２ＣバスＢ上におけるマスタデバイスとして動作する。
【００１１】
バス状態検出回路２は、Ｉ２ＣバスＢが上記４つの状態のいずれの状態であるかを検出して制御回路９に通知する。
バスステート制御回路３内のレジスタ５は、ＣＰＵ１０からアクセス可能（例えば、ＣＰＵ１０のアドレス空間にマッピングされている等）となっており、第１の領域としてのデータ領域６と、第２の領域としてのスタート生成ビット領域７と、第３の領域としてのストップ生成ビット領域８とを有している。なお、データ領域６は、８ビット、１６ビット等の複数ビット幅を有することとしても良い。また、スタート生成ビット領域７及びストップ生成ビット領域８は、１ビット幅であっても良いし、複数ビット幅であっても良い。さらに、データ領域６、スタート生成ビット領域７、及び、ストップ生成ビット領域８は、１回のアクセスサイクル（バスサイクル）でＣＰＵ１０からアクセス可能であることとしても良い。
【００１２】
バスステート制御回路３内の制御回路９は、バス状態検出回路２によって検出されたＩ２ＣバスＢの状態、スタート生成ビット領域７内の値、及び、ストップ生成ビット領域８内の値に従って、制御信号をバス駆動回路４に供給する。
バス駆動回路４は、制御信号に従って、データ領域６内のデータをＩ２ＣバスＢに出力する。
【００１３】
次に、半導体集積回路１の動作について、詳細に説明する。
データ送信を行う場合、まず、ＣＰＵ１０が、送信するためのデータをデータ領域６に書き込むとともに、スタート生成ビット領域７にビットをセットする。
【００１４】
スタート生成ビット領域７にビットがセットされると、制御回路９は、Ｉ２ＣバスＢの状態をチェックし、Ｉ２ＣバスＢがスタート状態又はビジー状態であるときは、Ｉ２ＣバスＢがストップ状態を経てアイドル状態となるまでウェイトする。また、制御回路９は、Ｉ２ＣバスＢがストップ状態であるときは、Ｉ２ＣバスＢがアイドル状態となるまでウェイトする。
そして、制御回路９は、Ｉ２ＣバスＢがアイドル状態であるとき又はなったときは、Ｉ２ＣバスＢをスタート状態に遷移させるための第１の制御信号をバス駆動回路４に供給する。
【００１５】
バス駆動回路４は、第１の制御信号が供給されると、Ｉ２ＣバスＢをスタート状態に遷移させた後、データ領域６内のデータをＩ２ＣバスＢに順次出力する。
一方、ＣＰＵ１０は、送信しようとするデータのビット数が一回の転送単位のビット数（Ｉ２Ｃバスでは８ビット）より大きい場合、送信しようとするデータを複数回に分けてデータ領域６に書き込む。そして、送信しようとするデータのデータ領域６への最後の書き込みと一緒に、ストップ生成ビット領域８にビットをセットする。
【００１６】
制御回路９は、ストップ生成ビット領域８にビットがセットされると、Ｉ２ＣバスＢをストップ状態に遷移させるための第２の制御信号をバス駆動回路４に供給する。
バス駆動回路４は、第２の制御信号が供給されると、データ領域６内のデータをＩ２ＣバスＢに順次出力した後、Ｉ２ＣバスＢをストップ状態に遷移させる。
【００１７】
このように、半導体集積回路１によれば、データ、並びにスタート生成ビット又はストップ生成ビットがＣＰＵ１０によってレジスタ５にセットされると、Ｉ２ＣバスＢがアイドル状態となるまでウェイトし、Ｉ２ＣバスＢをスタート状態に遷移させ、データを送信し、Ｉ２ＣバスＢをストップ状態に遷移させることができる。
これにより、ＣＰＵ１０がＩ２ＣバスＢを状態遷移させる必要がなくなるとともに、ＣＰＵ１０がＩ２ＣバスＢ上にデータを直接送信する必要もなくなり、ＣＰＵ１０の負荷を低減することが可能となる。
【００１８】
次に、本発明の第２の実施形態について説明する。図２は、本発明の第２の実施形態に係る半導体集積回路の概要を示す図である。図２に示すように、この半導体集積回路１１は、バス状態検出回路２と、バス駆動回路４と、バスステート制御回路１２とを具備する。また、バスステート制御回路１２は、レジスタ５と、制御回路９と、受信データ長設定レジスタ１３とを具備する。
半導体集積回路１１は、Ｉ２ＣバスＢ上におけるマスタデバイスとして動作する。
【００１９】
バスステート制御回路１２内の受信データ長設定レジスタ１３は、ＣＰＵ１０からアクセス可能（例えば、ＣＰＵ１０のアドレス空間にマッピングされている等）となっている。ＣＰＵ１０は、Ｉ２ＣバスＢからデータを受信する場合に、受信するデータのデータ長（例えば、ビット数）を表す値を受信データ長設定レジスタ１３に書き込む。なお、受信データ長設定レジスタ１３は、８ビット、１６ビット等の複数ビット幅を有することとしても良い。また、レジスタ５及び受信データ長設定レジスタ１３は、１回のアクセスサイクル（バスサイクル）でＣＰＵ１０からアクセス可能であることとしても良い。さらに、受信データ長設定レジスタ１３は、レジスタ５とは別個に単独でＣＰＵ１０からアクセス可能であることとしても良い。
【００２０】
次に、半導体集積回路１１の動作について、詳細に説明する。
データ受信を行う場合、まず、ＣＰＵ１０が、受信するデータのデータ長を表す値を受信データ長設定レジスタ１３に書き込む。
【００２１】
受信データ長設定レジスタ１３にデータ長を表す値が書き込まれると、制御回路９は、Ｉ２ＣバスＢの状態をチェックし、Ｉ２ＣバスＢがスタート状態となるまでウェイトする。
図３は、半導体集積回路１１のデータ受信時におけるＩ２ＣバスＢ上の信号を示す図である。図３に示すように、ＳＣＬ信号（クロック信号）がハイレベルの間に、Ｉ２ＣバスＢ上におけるスレーブデバイスがＳＤＡ信号（データ信号）をハイレベルからローレベルに変化させたとき、Ｉ２ＣバスＢはスタート状態となる。その後、スレーブデバイスは、ＳＤＡ信号（データ信号）を駆動することでデータを送信し、マスタデバイスとしての半導体集積回路１１は、ＳＤＡ信号（データ信号）を受信することでデータを受信する。
【００２２】
再び図２を参照すると、バス状態検出回路２からＳＤＡ信号（データ信号）を順次受信して、データ領域６に順次書き込む。そして、制御回路９は、一回の転送単位のビット数（Ｉ２Ｃバスでは８ビット）を受信すると、ＳＤＡ信号（データ信号）を駆動する（アクノリッジ）ための第３の制御信号をバス駆動回路４に供給する。未だ受信データ長設定レジスタ１３に書き込まれている値の数のデータを受信し終えていない場合、この第３の制御信号により、バス駆動回路４はローレベルを駆動し、制御回路９は、引き続き次のデータを受信する状態となる。受信データ長設定レジスタ１３に書き込まれている値の数のデータを受信し終えた場合、バス駆動回路４は、ハイレベルを駆動した後、ストップ状態を生成する。これにより、Ｉ２ＣバスＢはストップ状態となり（図３参照）、半導体集積回路１１のデータ受信動作は終了する。
【００２３】
このように、半導体集積回路１１によれば、受信するデータのデータ長を表す値がＣＰＵ１０によって受信データ長設定レジスタ１３にセットされると、Ｉ２ＣバスＢがスタート状態となるまでウェイトし、受信データ長設定レジスタ１３に書き込まれている値の数のデータを受信し、ＳＤＡ信号（データ信号）をハイレベルに駆動（アクノリッジ）し、Ｉ２ＣバスＢをストップ状態に遷移させることができる。
これにより、ＣＰＵ１０がＩ２ＣバスＢの状態をチェックする必要がなくなるとともに、ＣＰＵ１０がＩ２ＣバスＢ上からデータを直接受信する必要もなくなり、ＣＰＵ１０がＩ２ＣバスＢをストップ状態に遷移させる必要もなくなる。従って、ＣＰＵ１０の負荷を低減することが可能となる。
【産業上の利用可能性】
【００２４】
本発明は、バスとＣＰＵとの間のデータ転送を行うための半導体集積回路において利用可能である。この半導体集積回路は、パーソナルコンピュータ、ＰＤＡ（Personal Digital Assistants）、携帯電話装置等に利用可能である。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係る半導体集積回路の概要を示す図。
【図２】本発明の第２の実施形態に係る半導体集積回路の概要を示す図。
【図３】図２のＩ２ＣバスＢ上の信号の一例を示す図。
【符号の説明】
【００２６】
１、１１  半導体集積回路、２  バス状態検出回路、３、１２  バスステート制御回路、４  バス駆動回路、５  レジスタ、６  データ領域、７  スタート生成ビット領域、８  ストップ生成ビット領域、９  制御回路、１０  ＣＰＵ、１３  受信データ長設定レジスタ、Ｂ  Ｉ２Ｃバス
【図１】
2006018650.tif 000003
【図２】
2006018650.tif 000004
【図３】
2006018650.tif 000005