(57)【要約】      （修正有）【課題】送受信マクロにFIFOなどの送受信バッファを設け、ＣＰＵへの割込頻度を上げることなく、シリアル転送バスのデータ転送量を増大させる。【解決手段】  集積回路装置は、所定の処理を実行するＣＰＵと、シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロをと有する。この送受信マクロは、ＣＰＵへの割込を発生することなく送受信バッファに格納されたデータを送信するデータ送信ユニットとを有する。そして、アクノリッジ検出ユニットは、所定単位のデータの送信に対応して受信側デバイスから送信されるデータアクノリッジ信号を検出しない場合に、ＣＰＵに割込を発生する。これにより、ＣＰＵはデータ転送を終了させることができる。【選択図】図３
2005128747.tif 000002
【特許請求の範囲】
【請求項１】
シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記所定単位のデータの送信に応答して受信側デバイスから送信されるデータアクノリッジ信号を検出するアクノリッジ信号検出ユニットと、
前記アクノリッジ信号検出ユニットによる前記データアクノリッジ信号の検出に応答して、前記ＣＰＵへの割込を発生することなく前記送受信バッファに格納されたデータを送信するデータ送信ユニットとを有し、
前記アクノリッジ検出ユニットは、前記所定単位のデータの送信に対応して受信側デバイスから送信されるデータアクノリッジ信号を検出しない場合に、前記ＣＰＵにデータアクノリッジ信号未検出の割込を発生することを特徴とする集積回路装置。
【請求項２】
請求項１において、
前記アクノリッジ検出ユニットは、
前記データ送信ユニットが、マスターとして、スレーブデバイスを特定するアドレスを送信したことに応答して、前記スレーブデバイスから送信されるアドレスアクノリッジ信号を検出した場合に、前記ＣＰＵへの割込を発生することを特徴とする集積回路装置。
【請求項３】
請求項１において、
前記データ送信ユニットは、前記アクノリッジ検出ユニットが前記アドレスアクノリッジ信号を検出した場合に発生するＣＰＵへの割込発生後に、前記送受信バッファに格納された所定単位のデータのシリアル送信を開始することを特徴とする集積回路装置。
【請求項４】
請求項１において、
前記シリアル転送バスは、１本のデータ線と１本のクロック線とを有し、前記データの転送は、前記クロック線にドライブされるクロックに同期して、前記１本のデータ線上にデータ転送がシリアルに行われることを特徴とする集積回路装置。
【請求項５】
シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記送受信バッファに格納されたデータを送信するデータ送信ユニットと、
前記データ送信ユニットが、マスターとして、スレーブデバイスを特定するアドレスをシリアル送信するアドレスフェーズ中に、他のマスターが同時にアドレスを送信することに起因してアービトレーションロストが発生したか否かを検出するアービトレーションロスト検出ユニットとを有し、
前記アービトレーションロスト検出ユニットが、前記アドレスフェーズ中に前記アービトレーションロストの発生を検出しなかった場合に、当該アドレスフェーズ後、前記ＣＰＵが、前記送受信バッファに転送対象データを格納することを特徴とする集積回路装置。
【請求項６】
請求項５において、
前記アービトレーションロスト検出ユニットが、前記アドレスフェーズ中に前記アービトレーションロストの発生を検出した場合に、前記ＣＰＵは、前記送受信バッファに前記転送対象データを格納しないことを特徴とする集積回路装置。
【請求項７】
シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し、前記送受信バッファに格納するデータ受信ユニットと、
前記所定単位のデータの受信に応答して、送信側デバイスにデータアクノリッジ信号を送信するアクノリッジ信号生成ユニットとを有し、
前記アクノリッジ信号生成ユニットは、受信可能なデータ単位数に達するまで、前記所定単位のデータを受信するたびに、前記ＣＰＵに割込を発生することなく前記データアクノリッジ信号を送信し、前記受信可能なデータ単位数に達した時に、前記データアクノリッジ信号を送信しないことを特徴とする集積回路装置。
【請求項８】
請求項７において、
更に、前記受信可能なデータ単位数を格納する受信数レジスタと、前記データ受信ユニットが前記所定単位のデータを受信するたびに、前記受信数をカウントするカウンタとを有する受信制御ユニットを有し、
前記アクノリッジ信号生成ユニットは、当該カウンタのカウント値が前記受信数レジスタに格納された受信可能なデータ単位数に達することに応答して、前記データアクノリッジ信号を送信しないことを特徴とする集積回路装置。
【請求項９】
シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し前記送受信バッファに格納すると共に、前記送受信バッファに格納されたデータを送信するデータ送受信ユニットと、
前記データ送受信ユニットによる転送データの送受信が行われている間に、前記ＣＰＵから前記送受信バッファへのアクセスが行われた場合に、当該アクセス発生のフラグを格納するアクセスフラグレジスタとを有することを特徴とする集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シリアル転送バス用の送受信マクロを有する集積回路装置に関し、特に、送受信バッファを内蔵して送受信処理中のＣＰＵへの割込頻度を減らしてＣＰＵの負担を小さくすることができる送受信マクロに関する。
【背景技術】
【０００２】
マイクロコンピュータは、ＣＰＵ、プログラムＲＯＭ、ＲＡＭ、外部バスインターフェースなどと共に、リソースとして、タイマー、ＡＤコンバータ、シリアル転送バス用の送受信マクロなどを内蔵する。外部バスインターフェースは、３２ビットなど複数ビットの外部バスとのインターフェース機能を有するものであるのに対して、シリアル転送バス用の送受信マクロは、１本のデータ線と１本のクロック線とからなるシリアル転送バスに対するインターフェース機能を有する。
【０００３】
シリアル転送バスには、例えばフィリップス社が提唱しているI2C規格がある（例えば、特許文献１参照）。このI2C規格のシリアル転送バスは、クロックに同期して、１本のデータ線を経由してアドレスやデータをシリアル転送する。その規格によれば、マスター側の送受信マクロがクロックとデータの２ビットでスタート状態とストップ状態をスレーブ側に送信し、スタート状態後に送信側の送受信マクロがクロックに同期してアドレスやデータをシリアル転送する。そして、１バイトのデータ転送毎に受信側の送受信マクロがアクノリッジ信号をデータ線で返信する。したがって、送信側と受信側の送受信マクロは、データ転送毎にアクノリッジ信号の送出と確認のためにＣＰＵに割込をかける必要がある。
【０００４】
かかるシリアル転送バスは、電源投入時や所定の処理のセッション開始時において、ＬＳＩ間でデータを転送して所定のデータ設定を行うなどの用途に利用されるものであり、限られたバスのハードウエアリソースを有効に利用して、データ転送を実現するものとして広く利用されている。
【特許文献１】特開２０００−２４２５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のシリアル転送バスは、転送データ量がそれほど大きくない場合は、ＣＰＵへの割込頻度はそれほど多く発生せずＣＰＵの負担はそれほど大きくなかった。しかしながら、近年において転送データ量が増大してくると、従来の送受信マクロのように、１バイトのデータ転送毎にＣＰＵに割込をかけて送受信制御を行わせる方法は、ＣＰＵへの負担が増大して好ましくない。
【０００６】
そこで、本発明の目的は、ＣＰＵの負担を増大させることなく転送データ量を増やすことができるシリアル転送バス用の送受信マクロを有する集積回路装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、本発明の第１の側面は、シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記所定単位のデータの送信に応答して受信側デバイスから送信されるデータアクノリッジ信号を検出するアクノリッジ信号検出ユニットと、
前記アクノリッジ信号検出ユニットによる前記データアクノリッジ信号の検出に応答して、前記ＣＰＵへの割込を発生することなく前記送受信バッファに格納されたデータを送信するデータ送信ユニットとを有し、
前記アクノリッジ検出ユニットは、前記所定単位のデータの送信に対応して受信側デバイスから送信されるデータアクノリッジ信号を検出しない場合に、前記ＣＰＵにデータアクノリッジ信号未検出の割込を発生することを特徴とする。
【０００８】
上記の目的を達成するために、本発明の第２の側面は、シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記送受信バッファに格納されたデータを送信するデータ送信ユニットと、
前記データ送信ユニットが、マスターとして、スレーブデバイスを特定するアドレスをシリアル送信するアドレスフェーズ中に、他のマスターが同時にアドレスを送信することに起因してアービトレーションロストが発生したか否かを検出するアービトレーションロスト検出ユニットとを有し、
前記アービトレーションロスト検出ユニットが、前記アドレスフェーズ中に前記アービトレーションロストの発生を検出しなかった場合に、当該アドレスフェーズ後、前記ＣＰＵが、前記送受信バッファに転送対象データを格納することを特徴とする。
【０００９】
上記の目的を達成するために、本発明の第３の側面は、シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し、前記送受信バッファに格納するデータ受信ユニットと、
前記所定単位のデータの受信に応答して、送信側デバイスにデータアクノリッジ信号を送信するアクノリッジ信号生成ユニットとを有し、
前記アクノリッジ信号生成ユニットは、受信可能なデータ単位数に達するまで、前記所定単位のデータを受信するたびに、前記ＣＰＵに割込を発生することなく前記データアクノリッジ信号を送信し、前記受信可能なデータ単位数に達した時に、前記データアクノリッジ信号を送信しないことを特徴とする。
【００１０】
上記の目的を達成するために、本発明の第４の側面は、シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し前記送受信バッファに格納すると共に、前記送受信バッファに格納されたデータを送信するデータ送受信ユニットと、
前記データ送受信ユニットによる転送データの送受信が行われている間に、前記ＣＰＵから前記送受信バッファへのアクセスが行われた場合に、当該アクセス発生のフラグを格納するアクセスフラグレジスタとを有することを特徴とする。
【発明の効果】
【００１１】
上記第１の側面によれば、送信側の時に、送受信マクロは、受信側からのデータアクノリッジを受信しなくなるまで、ＣＰＵへの割込を行うことなく、複数単位のデータを連続して送信することができるので、ＣＰＵへの負担を軽減して、多くのデータをシリアル転送することが可能になる。
【００１２】
上記第２の側面によれば、送信マクロがアドレスフェーズ中にバスアービトレーションをチェックし、アドレスフェーズ中にアービトレーションロストが発生しなかったことを確認してから、送受信バッファに送信用データを格納するので、アービトレーションロストに起因して送受信バッファに格納した送信用データが無駄になることを防止できる。
【００１３】
更に、上記第３の側面によれば、受信側の時に、送受信マクロは、予め設定された受信可能なデータ単位数に達するまで、ＣＰＵへの割込を行うことなく、複数単位のデータを連続して受信することができるので、ＣＰＵへの負担を軽減して、多くのデータをシリアル転送することができる。
【００１４】
また、上記第４の側面によれば、データ転送中に誤ってＣＰＵ側から送受信バッファにアクセスが発生したことを記憶するアクセスフラグレジスタを設けているので、そのアクセスフラグレジスタを利用することで、ソフトウエアのデバッグ工程を効率的に行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面にしたがって本発明の実施の形態について説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１６】
図１は、本実施の形態におけるシリアル転送バスを示す図である。シリアル転送バス１０は、１本のデータ線SDAと１本のクロック線SCLとからなる。つまり、１チャネルのシリアル転送バスはデータ線とクロック線からなる１対のバスで構成される。したがって、複数チャネルを有する場合は、上記のデータ線SDAとクロック線SCLからなる１対のバスが、複数対設けられる。図１には、マイクロコンピュータＡとＢと、メモリ１２と、所定の機能を有する機能デバイス１４とが、バス１０を介して接続されている。このように、本実施の形態におけるシリアル転送バスは、複数のデバイス（集積回路装置）を接続してクロックに同期して１本のデータ線でデータをシリアルに転送する。
【００１７】
シリアル転送バス１０を介してデータの転送を行う送受信マクロが、マイクロコンピュータＡ，Ｂや、メモリ１２、機能デバイス１４に内蔵されていて、この送受信マクロがシリアル転送バス１０とのインターフェース機能を有する。
【００１８】
マイクロコンピュータＡがメモリ１２など他のデバイスに対してデータの書き込みを行う場合は、マイクロコンピュータＡがマスター側になり、スレーブ側になるメモリ１２を特定するアドレスをバス上に送出する。それに応答してメモリ１２からアクノリッジが返信されると、マイクロコンピュータＡは送信側になり、受信側のメモリ１２にデータを転送する。第２に、マイクロコンピュータＡがマイクロコンピュータＢや機能デバイス１４など他のデバイスのデータを読み出す場合は、マイクロコンピュータＡがマスター側になり、スレーブ側デバイスを特定するアドレスを転送する。それに応答してスレーブ側デバイスからアクノリッジが返信されると、マイクロコンピュータＡは受信側になり、送信側のデバイスが送信するデータを受信する。
【００１９】
上記のデータ転送は、例えば、システムの電源投入時や、所定のセッションやフェーズ毎に実行され、マイクロコンピュータＡが他のデバイスにデータを送信したり、他のデバイスからデータを受信したりする。
【００２０】
図２は、本実施の形態における集積回路装置であるマイクロコンピュータの全体構成図である。マイクロコンピュータは、所定の処理を実行するＣＰＵと、ＣＰＵが実行するプログラムが格納されたＲＯＭと、ＣＰＵが処理実行中にデータを一時的に格納するＲＡＭと、外部のバス２３とのインターフェースを行う外部バスコントローラ２２と、外部のメモリとのバス２５のインターフェースを行うメモリインターフェース２４とが、高速のＣＰＵバス２０を介して接続される。また、マイクロコンピュータは、周辺リソース３０として、シリアル転送バス１０とのインターフェースを行う送受信マクロ３２と、ＡＤコンバータ３４と、タイマー３６などを有し、これらの周辺リソース３０は、低速バス２８を介して接続されている。また、低速バス２８は、バスコンバータ２６を介して高速のＣＰＵバス２０に接続される。ＣＰＵバス２０は例えば３２ビットで構成され、低速バス２８はそれより狭いバス幅、例えば１６ビットで構成される。
【００２１】
また、高速バス２０に接続される外部バスコントローラ２２やメモリインターフェース２４は、高速クロックに同期して動作するのに対して、低速バス２８に接続される送受信マクロ３２は、低速クロックに同期して動作する。
【００２２】
ＣＰＵは、ＲＯＭ内のプログラムを実行して、所定の処理を実行する。また、ＣＰＵは、シリアル転送バス１０を介してデータ転送を行う場合は、送受信マクロ３２を制御してデータ転送を実行させる。本実施の形態では、転送データ量を大きくするために、送受信マクロ３２内に例えばFIFOからなる送受信バッファを設け、ＣＰＵがこの送受信バッファにデータを格納してデータ転送を指令すると、送受信マクロ３２が、ＣＰＵへの割込を頻繁に発生することなくデータのシリアル転送を実行する。但し、送受信マクロ３２は、シリアル転送バス１０の特有の性質に対応すべく、ＣＰＵへの割込発生頻度を抑えるための種々の改良構成を有する。
【００２３】
［第１の実施の形態］
図３は、本実施の形態における送受信マクロの構成図である。送受信マクロ３２は、データ転送量を増大させるために、複数の送信データを格納したり複数の受信データを格納する送受信バッファとしてFIFO４６を有し、低速バス２８を介してＣＰＵからアクセス可能に構成される。また、アドレスやデータの送受信手段として、データ送信・受信ユニット４８を有し、ＣＰＵはレジスタREG4を介して、このユニット４８にデータ送信又は受信を指令する。データ送信・受信ユニット４８は、データ送信の時は、FIFO４６内のパラレルデータをパラレル・シリアル変換して、データをバス１０にシリアルに送信し、データ受信の時は、バス１０からシリアルに受信したシリアルデータをシリアル・パラレル変換して、受信データをFIFO４６内に格納する。データのシリアル転送は、クロック線SCLに出力されるクロックに同期して１ビットずつ行われる。データ送信・受信ユニット４８は、低速バス２８を経由してＣＰＵによりアドレスやデータを直接設定される場合もある。
【００２４】
送受信マクロ３２は、シリアル転送バス１０のクロック線SCLに転送用の同期クロックを送信したり、受信したりするクロック送信・受信ユニット４０を有し、ＣＰＵから指定されレジスタREG1に格納されるクロック速度に対応するクロックを生成して送信し、またクロックを受信する。スタート・ストップ状態発生ユニット４２は、データSDAとクロックSCLの２つの信号により、データ転送のスタート状態とストップ状態とを発生し、送信する。マイクロコンピュータ３２がマスターモードの時に、スタート・ストップ状態発生ユニット４２が、バス１０をデータ転送のスタート状態にドライブし、データ送信・受信ユニット４８が、スレーブデバイスを特定するアドレスをシリアル送信する。その後、マスター側とスレーブ側とでデータ転送（スレーブデバイスへのリードまたはライト）が行われ、データ転送を終了する場合は、スタート・ストップ発生ユニット４２は、データ転送のストップ状態を出力する。別のデータ転送を開始する場合は、再度スタート状態を出力する。スタート・ストップ状態発生ユニット４２は、ＣＰＵからレジスタREG2に設定される指令に応答して、それぞれの状態にバス１０をドライブする。
【００２５】
スタート・ストップ状態検出ユニット４４は、シリアル転送バス１０に出力されたスタート状態またはストップ状態を検出する。そして、スタート状態の後に転送されるアドレスが自分のアドレスに対応するか否かがチェックされる。スタート・ストップ状態検出ユニット４４は、検出した状態データを、レジスタREG3に格納し、ＣＰＵにその状態を通知する。
【００２６】
スタート・ストップ状態発生ユニット４２及び検出ユニット４４によれば、シリアル転送バス１０にデータ又はアドレス転送中か否かを監視することができる。そこで、転送中フラグレジスタ５８が設けられ、データ転送中であれば、データ送信・受信ユニット４８からのデータ転送開始信号Ｓ４８２に基づき、転送中フラグがこの転送中フラグレジスタ５８に書き込まれる。
【００２７】
アービトレーションロスト検出ユニット５０は、マスタモード時に、データ送信・受信ユニット４８からアドレスがシリアルに出力されるアドレスフェーズ中に、他のデバイスからそのアドレスと競合するアドレスが同時に出力されてバス権取得の仲裁手続でバス権を失ったか否かを検出する。この仲裁手続については、後に詳述する。検出したアービトレーションロストの発生は、レジスタREG5を介してＣＰＵに通知される。
【００２８】
アクノリッジ発生ユニットであるＡＣＫ発生ユニット５２は、データフェースで、例えば１バイトのデータを受信した後に無事に受信したことを送信側デバイスに知らせるために、アクノリッジ信号をデータ線SDAに出力する。このアクノリッジ信号の出力は、後述するとおりＣＰＵへの割込をすることなく行われる。或いは、ACK発生ユニット５２は、アドレスフェーズで、受信したアドレスが自分のアドレスに該当する場合も、マスター側デバイスにアドレスの一致を知らせるために、アクノリッジ信号をデータ線SDAに出力する。このアクノリッジ信号の出力指令は、レジスタREG6を介してＣＰＵから行われる。
【００２９】
アクノリッジ検出ユニットであるACK検出ユニット５４は、アドレスフェーズでスレーブ側デバイスから送信されるアクノリッジ信号を検出したり、データフェースで受信側デバイスから送信されるアクノリッジ信号を検出する。ACK検出ユニット５４は、データフェーズでアクノリッジ信号を受信しなかったことを検出して、ＣＰＵへの未検出の割込IRQ信号を発生し、クロックイネーブル信号CLKENにより、クロック送信・受信ユニット４０にクロック線SCLをＬレベルにドライブさせてバスをウエイト状態にし、次のデータ転送が行われないようにする。
【００３０】
また、受信制御ユニット５６は、後述するとおり、受信データ数をＣＰＵから設定され、その設定された受信データ数だけ連続してデータを受信した時に、ＣＰＵに割込を発生し、アクノリッジ信号送信許可フラグ（図示せず）の状態に応じて、ACK発生ユニット５２がアクノリッジの発生を禁止（または許可）する。
【００３１】
図４は、シリアル転送バスのドライブ回路の一例を示す図である。図４では、図１に示した４つのデバイスのドライブ回路が示されている。各デバイスのドライブ回路は、シリアル転送バスのデータ線SDA（又はクロック線SCL）にドレイン端子が接続され、ソースが接地されたオープンドレイントランジスタQA、QB、Q12、Q14からなる。そして、データ線SDA（又はクロック線SCL）は、プルアップ抵抗Ｒを介して電源Vddに接続されている。したがって、全てのデバイスのドライブトランジスタが駆動しない場合は、バスのデータ線SDA（又はクロック線SCL）はＨレベルに維持され、いずれかのデバイスのドライブトランジスタが駆動される場合は、バスのデータ線SDA（又はクロック線SCL）はＬレベルにされる。かかるドライブ回路は、クロック送信・受信ユニット４０、スタート・ストップ状態発生ユニット４２、データ送信・受信ユニット４８、ACK発生ユニット５２内に設けられる。
【００３２】
また、各デバイスの送受信マクロには、バスのデータ線SDA（又はクロック線SCL）の電圧レベルを検出する回路が設けられ、バスの電圧レベルのＨ、Ｌレベルが検出される。そのような検出回路は、クロック送信・受信ユニット４０、スタート・ストップ状態検出ユニット４４、データ送信・受信ユニット４８、アービトレーションロスト検出ユニット５０、ACK検出ユニット５４などに設けられている。
【００３３】
図５は、シリアル転送バスの信号波形図である。図５は、I2C規格のバス仕様書から転用したものである。図５には、データ線SDAの信号波形とクロック線SCLの信号波形とが示されている。マスターモードの時に、送受信マクロのスタート・ストップ状態発生ユニット４２が、クロック線SCLをＨレベルに維持しながらデータ線SDAをＨレベルからＬレベルに駆動することで、スタート状態がバス上に通知される。それに続いて、マスター側の送受信マクロが、クロック線SCLをＬレベルに駆動した後にデータ線SDAをＨ又はＬレベルにし、クロック線SCLをＬレベルからＨレベルにするときにそのデータ線SDAの状態を維持して、スレーブ側にアドレス信号を認識させる。同様にして、クロックSCLに同期して１バイトのアドレスがシリアルに出力される。この１バイトのアドレスの中に、リードかライトかの動作コマンドが含まれる。これがアドレス転送のアドレスフェーズである。
【００３４】
１バイトのアドレスが出力されると、アドレスで特定されたスレーブ側の送受信マクロがアクノリッジ信号として９番目のクロックに同期してデータ線SDAをＬレベルに駆動する。図４に示したオープンドレインの駆動回路により、アドレスで特定されていない他のデバイスは、データ線SDAをＨレベルに維持することで、アドレスで特定されたスレーブ側デバイスによるＬレベルのアクノリッジ信号が正しくマスタ側に伝えられる。
【００３５】
このスレーブ側によるアクノリッジ信号によりアドレスフェーズは終了する。そして、データフェーズが開始され、マスター側からのクロック信号SCLに同期して、送信側デバイスから１バイトのデータがシリアルに出力されて、データ転送が行われる。動作コマンドがリードの場合は、スレーブ側が送信側になり、ライトの場合はマスター側が送信側になる。そして、１バイト（８ビット）のデータがシリアル転送されると、受信側はデータ線SDAにＬレベルのアクノリッジ信号を送信する。受信側がＬレベルのアクノリッジ信号を送信すると、送信側の送受信マクロは、それに応答して必要なデータのシリアル転送を継続する。受信側がデータ線SDAをＬレベルに駆動しなければ、アクノリッジ信号が出されなかったことになり、それにより送信側デバイスに、データ転送を終了すべきことが通知される。その後、マスタ側デバイスがデータフェーズを終了すべきか否かを判断する。
【００３６】
マスター側の送受信マクロは、全てのデータ転送が終了すると、クロック線SCLをＨレベルに維持しながらデータ線SDAをＬレベルからＨレベルに駆動してストップ状態を出力する。ストップ状態を出力するとマスターモードが終了する。あるいは、マスター側の送受信マクロは、全てのデータ転送が終了すると、クロック線SCLをＨレベルに維持しながらデータ線SDAをＨレベルからＬレベルに駆動して再度スタート状態を出力することもできる。その場合は、マスター側デバイスは、マスターモードを維持しながら、別のデータ転送を開始する。
【００３７】
このように、１バイトのアドレス転送後にスレーブ側がアクノリッジ信号を送信し、１バイトのデータ転送後には受信側がアクノリッジ信号を送信する。マスター側または送信側は、これらのアクノリッジ信号を検出して、次のデータ転送を行う。また、マスターモードは、スタート状態の出力からストップ状態の出力まで維持される。尚、バス権取得のための仲裁手続は、アドレス転送中に行われるが、その動作については後述する。
【００３８】
図６は、第１の実施の形態を説明するタイミングチャート図である。本実施の形態では、送受信マクロ内にFIFOからなる送受信バッファを設け、ＣＰＵが複数バイトのデータをこの送受信バッファに格納することで、データ転送量を増大させている。しかしながら、シリアル転送バスは、規格上、１バイトのデータをシリアル転送するたびに受信側がデータアクノリッジ信号を送信し受信側がそれを確認し、更に次の１バイトのデータをシリアル転送する。そして、受信側がデータアクノリッジ信号を送信しない場合は受信側はそれ以上のデータ転送を行わない。このように、複数バイトのデータを転送する場合１バイト転送毎にデータアクノリッジ信号の送信と確認を行う必要があり、そのたびにＣＰＵに割り込みをかけると、ＣＰＵの負担が増大し、FIFOを設けてデータ転送量を増大させようとする目的に沿わなくなる。
【００３９】
そこで、本実施の形態では、アドレスフェーズでは１バイトのアドレスをシリアル転送しそれに対するアクノリッジ信号を確認し、その後のデータフェーズでは、送受信マクロが受信側からのデータアクノリッジ信号を確認すれば、ＣＰＵへの割り込みを発生することなく、次の１バイトのデータのシリアル転送を行い、データアクノリッジ信号を確認できない場合にのみＣＰＵへの割り込みを発生し、データフェーズを終了するようにする。
【００４０】
図６に沿って具体的な動作を説明する。このタイミングチャートでは、マスター側が送信側に、スレーブ側が受信側になり、送信側デバイス１００と受信側デバイス２００との間でデータ転送を行う例であり、送信側デバイス１００の送受信マクロ１３２と受信側デバイス２００の送受信マクロ２３２との間でデータ転送が行われる。
【００４１】
最初に、送信側デバイス１００がマスターモードになり（Ｓ１０）、ＣＰＵからの指令に応答して、送信側送受信マクロ１３２のスタート・ストップ状態発生ユニット４２が、バスをスタート状態にドライブする（Ｓ１１）。それに続いて、送信側送受信マクロ１３２が、１バイトのアドレスを送信し（Ｓ１２）、そのアドレスで特定されたスレーブ側のデバイスの送受信マクロ２３２がアドレスアクノリッジ信号を出力する（Ｓ１３）。送受信マクロ１３２は、このアドレスアクノリッジ信号を検出すると、ＣＰＵに割り込みをかけ（Ｓ１４）、それに応答して、ＣＰＵはデータ転送を指令する（Ｓ１５）。
【００４２】
これにより送信側送受信マクロ１３２は、データフェーズに入り、FIFO内に格納されている１バイトのデータをシリアル転送する（Ｓ１６）。１バイトのデータシリアル転送が行われると、受信側送受信マクロ２３２は、データアクノリッジ信号を送信する（Ｓ１７）。送信側の送受信マクロ１３２内のＡＣＫ検出ユニット５４は、このデータアクノリッジ信号を検出すると、ＣＰＵへの割り込みをかけることなく、アクノリッジ検出信号Ｓ５４１によって、データ送信・受信ユニット４８に次のデータ転送を指示する。これに応答して、データ送信・受信ユニット４８は、次の１バイトのデータをFIFOから読み出しパラレル・シリアル変換して、バスにシリアル転送を行う（Ｓ１８）。１バイトのデータ転送が行われると、受信側送信マクロ２３２は、再度データアクノリッジ信号を送信する（Ｓ１９）。前述と同様に、送信側の送受信マクロのＡＣＫ検出ユニット５４は、このデータアクノリッジ信号を検出すると、ＣＰＵに割り込みをかけることなく、データ送信・受信ユニット４８に次のデータ転送を指示する。これに応答して、次の１バイトのデータがＦＩＦＯから読み出されシリアル転送される（Ｓ２０）。
【００４３】
図６の例では、３バイトのデータ転送後において、受信側の送受信マクロはデータアクノリッジ信号を送信しないで、データ転送を終了すべきことを通知する（Ｓ２１）。送信側のマクロのＡＣＫ検出ユニット５４は、データアクノリッジ信号が送信されなかったことを検出し、ＣＰＵへのデータアクノリッジ信号未確認の割り込み信号IRQを発生すると共に、クロック送信・受信ユニット４０へのクロックイネーブル信号CLKENをディセーブル状態にして、クロック送信・受信ユニット４０によりクロック信号線SCLをＬレベルにドライブさせ、バスをウエイト状態にさせる。それにより、それ以降のクロック信号の送出が停止し、次のデータ転送が行われないようになる（Ｓ２２）。ＣＰＵは、データアクノリッジ信号未確認の割り込み信号IRQに応答して、データフェーズの終了を認識し、データ転送を終了する場合は、送受信マクロ１３２にストップ状態をドライブすることを指令する。送受信マクロ１３２のスタート・ストップ状態発生ユニット４２は、これに応答して、バスをストップ状態にドライブする（Ｓ２３）。以上で、データ転送が完了する。あるいは、ＣＰＵは、割込信号に応答して、再度スタート状態の発生を送受信マクロのスタート・ストップ状態発生ユニット４２に指令して、別のデータ転送を開始することもできる。その場合は、図中の工程Ｓ１１以下の動作が繰り返される。
【００４４】
以上のように、本実施の形態では、データフェーズにおいてFIFO内の複数バイトのデータを転送する場合、送受信マクロは、１バイト転送後のデータアクノリッジ信号を検出した時はＣＰＵへの割り込みを発生することなく自動的に次の１バイト転送を実行する。そして、送受信マクロは、データアクノリッジ信号を検出しない時に初めてＣＰＵに割り込みを発生して、データフェーズの終了を通知する。従って、複数バイトのデータを連続して転送する場合でも、ＣＰＵへの割り込み頻度が減り、ＣＰＵへの負担を軽減することができる。
【００４５】
［第２の実施の形態］
図７は、バスアービトレーション手続きを説明するための図である。この図は、I2C規格のバス仕様書から転用したものである。図７（Ａ）に示されるように、本実施の形態におけるシリアル転送バスは複数のマスターデバイスとスレーブデバイスを接続する。そして、任意のタイミングでいずれかのマスターデバイスがスタート状態にドライブしてアドレスを送信することを許している。従って、通常は最初にスタート状態にドライブしたマスターデバイスがバス権を取得することになるが、まれに、複数のマスターデバイスが同時にスタート状態にドライブする場合がある。
【００４６】
図７（Ｂ）の波形図では、マスターＡとＢが同時にバスをスタート状態にドライブし、同じタイミングでアドレスを送信開始した例である。図４で説明したとおり、ドライブ回路はオープンドレイントランジスタであるので、いずれかのデバイスがバスをＬレベルにドライブすると、他のデバイスのドライブ状態にかかわらずバスはＬレベルにドライブされる。
【００４７】
図７（Ｂ）の例では、クロックＣＬ１，ＣＬ２では、マスターＡ，Ｂが同じアドレス信号Ｈ，Ｌをドライブしているが、クロックＣＬ３では、マスターＡがＨレベル、マスターＢがＬレベルをドライブしたため、両者のアドレス間でコンフリクトが発生している。これに伴い、マスターＡの送受信マクロ内のアービトレーションロスト検出ユニット５０がバスアービトレーション手続きでバス権を失ったことを検出し、レジスタREG５を介してＣＰＵにアービトレーションロストを通知する。これに応答して、ＣＰＵはその後のデータフェーズでのデータ転送の実行を中止する。
【００４８】
図８は、本実施の形態における送受信マクロの動作フローチャート図である。図中、右側が本実施の形態の動作を示し、左側はそれに対する比較例の動作を示す。本実施の形態では、ＣＰＵがマスターモードになり（Ｓ３０）、送受信マクロがアドレスの送信を開始する（Ｓ３２）。送受信マクロがアドレスフェーズ中に前述のアービトレーションロストを検出しなければ（Ｓ３４）、有効にバス権を取得したものとみなされ、その後、ＣＰＵはFIFOに送信すべきデータを書き込む（Ｓ３６）。そして、データ書き込み後に、マスターモードで複数バイトのデータ転送を行う（Ｓ３８）。また、アドレスフェーズ中にアービトレーションロストを検出すると（Ｓ３４）、送受信マクロはスレーブモードになり（Ｓ４０）、いずれかのマスターデバイスからアドレスを受信すると（Ｓ４２）、スレーブモードでデータ転送を実行する（Ｓ４４）。その後、適宜マスターモードに切り換えられ（Ｓ３０）、必要なデータ転送の手順を再度実行する。
【００４９】
上記の本実施の形態の動作に対して、比較例では、マスターモードになると（Ｓ３０）、その時点でＣＰＵが送受信マクロのFIFOに送信データを書き込む（Ｓ３１）。その後、送受信マクロはアドレスを送信し（Ｓ３２）、アービトレーションロストの発生をチェックする。もし、アービトレーションロストが検出されると（Ｓ３４）、送受信マクロはスレーブモードに待機し（Ｓ４０）、FIFOに書き込まれた送信データをクリアする（Ｓ４１）。そして、アドレスを受信すると（Ｓ４２）、スレーブモードでデータ転送を実行する。アービトレーションロストを検出しない場合は、上記と同じである。
【００５０】
このように、比較例では、アドレスフェーズでのアービトレーションロストの有無を確認するまえに、FIFOに転送データを書き込んでいるので、アービトレーションロストが検出されると、書き込んでいたFIFO内のデータが無駄になってしまう。それに対して、本実施の形態では、シリアル転送バスではアドレスのシリアル転送中にバス権獲得のアービトレーション手続きを行うので、そのバス権を獲得したことを確認した後に、FIFOへの転送データの書き込みを実行している。従って、FIFO内への転送データの書き込みが無駄になることはない。
【００５１】
図９は、本実施の形態におけるシーケンスチャート図である。図６と同じ工程には同じ工程番号が与えられている。この例は、アドレスフェーズでアービトレーションロストが発生しなかった例である。送信側のデバイス１００がマスターモードになり（Ｓ１０）、送受信マクロ１３２がバスをスタート状態にドライブしてから（Ｓ１１）、アドレスフェーズでスレーブのアドレスをシリアル送信する（Ｓ１２）。このアドレスフェーズの間にアービトレーションロストが発生せずに、正常にスレーブデバイスからアクノリッジ信号を受信すると（Ｓ１３）。送受信マクロ１３２は、ＣＰＵに割り込みIRQをかけ（Ｓ１４）、それに応答して、ＣＰＵは初めてマクロ内のFIFOに転送データを書き込む（Ｓ１５Ａ）。その後、ＣＰＵによるデータ転送指令に応答して（Ｓ１５）、送受信マクロ１３２は、FIFO内の1バイトのデータをシリアル転送する（S１６）。その後は、図６と同じ動作であり、１バイト転送が完了するたびに、受信側からデータアクノリッジ信号を受信し、ＣＰＵに割り込みをかけることなく、次の1バイトデータをシリアル転送する。一連のデータ転送は、受信側からデータアクノリッジ信号を受信しなくなるまで継続される。
【００５２】
図１０は、本実施の形態における別のシーケンスチャート図である。この図においても、図６，図９と同じ工程には同じ工程番号を与えている。この例は、アドレスフェーズ中にアービトレーションロストが発生した例である。送信側デバイス１００がマスターモードになった後（S１０）、ＣＰＵからの指令に応答して送受信マクロ１３２は、バスをスタート状態にドライブし（Ｓ１１）、1バイトのアドレスをシリアル転送する（Ｓ１２）。このアドレスフェーズ中にアービトレーションロストが発生したことを、送受信マクロ１３２内のアービトレーションロスト検出ユニット５０が検出すると（Ｓ５０）、それがＣＰＵに通知され（Ｓ５１）、ＣＰＵは一旦スレーブモードになり待機する（Ｓ５２）。所定時間経過してもスレーブとしてのアドレスを受信しない場合に、再度、ＣＰＵはマスターモードになり（Ｓ５３）、送受信マクロ１３２に再度アドレスフェーズでアドレス転送することを指令する。これに応答して、送受信マクロ１３２は、バスをスタート状態にドライブし（Ｓ５４）、引き続いて1バイトのアドレスをシリアル転送する（Ｓ５５）。今回はこのアドレスフェーズ中にアービトレーションロストが発生せず、したがって、ＣＰＵはFIFOに転送データを書き込む（Ｓ１５Ａ）。その後の動作は、図９と同じである。
【００５３】
このように、本実施の形態では、アドレスフェーズ中にアービトレーションロストが発生しても、FIFO内に転送データは書き込まれていないので、FIFO内のデータが無駄にクリアされることはない。
【００５４】
［第三の実施の形態］
送受信マクロ内に複数バイトのデータを格納できる送受信バッファとしてFIFOを設けているので、複数バイトのデータを連続して転送することができる。上記では、送信側のマクロがＣＰＵへの割込を発生することなく連続してデータを転送することを説明した。第３の実施の形態は、受信側のマクロがＣＰＵへの割込を発生することなく連続してデータを受信できる構成に関する。
【００５５】
図１１は、本実施の形態における送受信マクロの一部の構成を示す図である。送受信バッファ４６は、FIFOとそれを制御するためのライトポインタ４６１とリードポインタ４６２とを有する。ライトポインタは、FIFO内の新たに書き込まれるべきアドレスを格納し、リードポインタは、FIFO内の新たに読み出されるべきアドレスを格納する。受信制御ユニット５６は、受信レジスタ５６１と、ダウンカウンタ５６２と、ゼロ検出回路５６３とを有する。
【００５６】
ＣＰＵは、データ受信開始前に受信可能なバイト数を受信レジスタ５６１に設定すると共に、アクノリッジ発生ユニット５４のレジスタREG6にアクノリッジ信号発生許可・禁止フラグを許可状態に設定する。その設定された受信バイト数はダウンカウンタ５６２に格納され、データ送信・受信ユニット４８が、１バイトのデータを正常に受信するたびに、受信完了信号Ｓ４８１を出力し、ダウンカウンタ５６２は設定値をダウンカウントする。また、ACK発生ユニット５４は、受信完了信号Ｓ４８１に応答して、データアクノリッジ信号を発生し、転送バス１０に出力する。そして、受信可能なバイト数のデータを受信完了した時点で、ダウンカウンタ５６２のカウント値はゼロになり、ゼロ検出回路５６３がそれを検出し、ＣＰＵに割込IRQを発生すると共に、カウントゼロ信号Ｓ５６１をACK発生ユニット５４に出力する。このカウントゼロ信号Ｓ５６１に応答して、ACK発生ユニット５４は、データアクノリッジ信号発生許可・禁止フラグが許可状態であることを確認して、データアクノリッジ信号を発生せず、送信側デバイスにはデータアクノリッジ信号は送信されない。したがって、送信側デバイスは、それ以後のデータ転送を行わない。
【００５７】
このように、ＣＰＵは、受信セッションを開始するたびに、受信レジスタ５６１に連続受信バイト数を設定すると共に、連続受信後にアクノリッジ信号を送信するかしないかをデータアクノリッジ信号発生許可・禁止フラグを設定して、受信動作を制御する。
【００５８】
図１２は、本実施の形態におけるシーケンスチャート図である。図９と同じ工程には同じ引用番号を与えている。この例は、受信側デバイス２００が３バイトのデータ受信を行ってデータ転送を終了する例である。
【００５９】
送信側デバイス１００のＣＰＵがマスターモードになり（Ｓ１０）、送受信マクロ１３２がバスにスタート状態をドライブし（Ｓ１１）、アドレスをシリアル転送すると（Ｓ１２）、受信側の送受信マクロ２３２が受信したアドレスが自分のアドレスであることを認識して、ＣＰＵに割込をかける（Ｓ１３Ａ）。ＣＰＵは、受信数レジスタに受信可能なバイト数を設定し（Ｓ１３Ｂ）、送受信マクロ２３２は、アドレスアクノリッジ信号を出力する（Ｓ１３）。
【００６０】
送信側デバイスの送受信マクロ１３２は、アドレスアクノリッジ信号を検出して、ＣＰＵに割込をかけ（Ｓ１４）、ＣＰＵは、それに応答してFIFOに転送データを書き込むとともに（Ｓ１５Ａ）、データ送信・受信ユニット４８にデータ転送の開始を指示する（Ｓ１５）。１バイトのデータが転送されると（Ｓ１６）、受信側の送受信マクロ２３２のデータ送信・受信ユニットが受信完了信号Ｓ４８１を出力し、ACK発生ユニットがデータアクノリッジ信号を出力すると共に（Ｓ１７）、ダウンカウンタで設定値のダウンカウントがおこなわれる（Ｓ１７Ａ）。同様のデータ転送とデータアクノリッジ信号の返信及びダウンカウントが行われ（Ｓ１８，Ｓ１９，Ｓ１９Ａ）、最後のデータ転送が行われると（Ｓ２０）、受信側の送受信マクロ２３２は、データアクノリッジ信号を返信せず（Ｓ２１）、それを検出した送信側の送受信マクロ１３２は、ＣＰＵに割込をかける（Ｓ２２）。そして、ダウンカウントが行われると（Ｓ２１Ａ）、受信側の送受信マクロ２３２内の受信制御ユニット５６がＣＰＵに割込をかけて（Ｓ２１Ｂ）、ＣＰＵは最初に設定したバイト数のデータ受信を完了したことを通知される。そして、最後に、ＣＰＵからの指令に応答して（Ｓ２３）、送受信マクロ１３２は、バスにストップ状態をドライブする（Ｓ２４）。
【００６１】
このように、受信側になったときも、送受信マクロは、ＣＰＵに割込をかけることなく１バイトのデータ受信後にデータアクノリッジ信号を返信することで、ＣＰＵへの負担をかけずにデータ転送量を増やすことができる。また、ＣＰＵが最初に受信可能なバイト数を設定し、その設定値のデータ受信が完了した時点で、送受信マクロがＣＰＵに受信完了割込をかけ、データアクノリッジ信号を返信しないようにしているので、受信側デバイスが受信データでオーバーフローすることが回避され、ＣＰＵは一度に受信すべきバイト数を制御することができる。つまり、ＣＰＵは、従来のように、１バイト受信毎に割込をかけられて所定の判断を基準にしてデータアクノリッジ信号送信許可・禁止フラグの設定を行う必要はなく、複数バイトの受信を割込なしで連続して実行させ、それが終了した時点で、データアクノリッジ信号を送信するか否かを制御することができるので、ＣＰＵの制御の頻度を下げることができる。また、そのために必要な送受信マクロ内のハードウエア構成は、図１１の受信制御ユニット５６を設けるだけでよい。
【００６２】
［第４の実施の形態］
本実施の形態では、送受信マクロ内にFIFOからなる送受信バッファを設けてＣＰＵへの割込を行わずに複数バイトのデータ転送を行うようにしている。それに伴って、ＣＰＵによる送受信バッファへのアクセスを、データ転送が行われるデータフェーズ期間中においては、禁止する仕様にする。データフェーズ期間中のＣＰＵからのFIFOへのアクセスを禁止することで、送受信マクロ内のデータ送信・受信ユニット４８によるFIFOへのアクセス構成を簡素化することができる。例えば、FIFOをシングルポートＲＡＭにより構成することが可能になる。
【００６３】
上記のＣＰＵによるFIFOへのアクセス禁止は、ＣＰＵが実行するソフトウエアにより遵守される。しかしながら、ソフトウエア開発において何らかのバグが含まれる場合は、かかるアクセス禁止の仕様を破って、ＣＰＵによるFIFOへの不適切なアクセスが発生する場合がある。このような不適切なアクセスが発生すると、データフェーズ期間中のデータ転送にエラーが発生したり、システムが予測できない状態に陥ることが予想される。
【００６４】
そこで、第４の実施の形態では、不適切なアクセスの発生を検出できる機能を送受信マクロに設ける。図３に示すとおり、送受信マクロ３２は、データフェーズ期間であることを示すデータ転送中フラグ５８と、不適切なアクセスの発生を記録するエラーフラグ６０とを有する。
【００６５】
図９の動作シーケンスチャートを参照しながら、上記フラグ５８，６０についての動作を説明する。転送中フラグ５８には、送信時であれば、ＣＰＵがFIFOへの送信データ書き込み終了時に転送中フラグが書き込まれ、FIFO内のエンプティフラグがエンプティになったことに応答して転送完了フラグが書き込まれる。また、転送中フラグ５８には、受信時であれば、ＣＰＵが受信数カウンタに受信数を書き込んだ時に転送中フラグが書き込まれ、ダウンカウンタのカウント値がゼロになって受信が終了した時に転送完了フラグが書き込まれる。また、転送中フラグ５８には、データ送信・受信ユニット４８から、データ送信・受信開始信号Ｓ４８２が供給される。したがって、転送中フラグ５８には、図９の工程Ｓ１６からＳ２４までのデータ転送期間中であることを示すフラグが格納される。データ転送期間中には、送信側デバイスとしてデータを送信中の期間と、受信側デバイスとしてデータを受信中の期間とが含まれる。そして、転送中フラグ５８が転送完了状態の時、つまりＣＰＵへの割込状態の時に、ＣＰＵからFIFOへのアクセスが許可される。
【００６６】
送受信バッファであるFIFO４６は、ＣＰＵからアクセスされるときに、低速バス２８を介して供給される送受信バッファのアドレスを検出する。その為に、デコーダDECを内蔵する。そして、供給されたアドレスが自分のアドレスであることを認識して、その後のＣＰＵからのアクセスを受ける。そこで、FIFO４６は、転送中フラグ５８がデータ転送期間中であることを示すフラグを格納し、且つ、ＣＰＵからのアクセスを検出すると、エラーフラグ６０に不適切なアクセスが発生したことを示すフラグを格納する。このエラーフラグ６０は、例えば、デバッグ用プログラムを実行することにより、ＣＰＵから読み出される。
【００６７】
以上のように、本実施の形態によれば、データ転送期間中にＣＰＵからFIFOへの不適切なアクセスが発生した場合、そのアクセスの発生がエラーフラグ６０に記録される。したがって、プログラム開発工程におけるデバッグ工程で、このエラーフラグ６０の内容をチェックすることで、プログラムによるFIFOへの不適切なアクセス命令が出されていることを検出することができ、デバッグ工程に大きな寄与をもたらすことができる。
【００６８】
以上の実施の形態をまとめると次の付記の通りである。
【００６９】
（付記１）シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記所定単位のデータの送信に応答して受信側デバイスから送信されるデータアクノリッジ信号を検出するアクノリッジ信号検出ユニットと、
前記アクノリッジ信号検出ユニットによる前記データアクノリッジ信号の検出に応答して、前記ＣＰＵへの割込を発生することなく前記送受信バッファに格納されたデータを送信するデータ送信ユニットとを有し、
前記アクノリッジ検出ユニットは、前記所定単位のデータの送信に対応して受信側デバイスから送信されるデータアクノリッジ信号を検出しない場合に、前記ＣＰＵにデータアクノリッジ信号未検出の割込を発生することを特徴とする集積回路装置。
【００７０】
（付記２）付記１において、
前記ＣＰＵへのデータアクノリッジ信号未検出の割込発生に応答して、前記データ送信ユニットからのデータ送信が終了されることを特徴とする集積回路装置。
【００７１】
（付記３）付記１において、
前記アクノリッジ検出ユニットは、
前記データ送信ユニットが、マスターとして、スレーブデバイスを特定するアドレスを送信したことに応答して、前記スレーブデバイスから送信されるアドレスアクノリッジ信号を検出した場合に、前記ＣＰＵへの割込を発生することを特徴とする集積回路装置。
【００７２】
（付記４）付記１において、
前記データ送信ユニットは、前記アクノリッジ検出ユニットが前記アドレスアクノリッジ信号を検出した場合に発生するＣＰＵへの割込発生後に、前記送受信バッファに格納された所定単位のデータのシリアル送信を開始することを特徴とする集積回路装置。
【００７３】
（付記５）付記１において、
前記シリアル転送バスは、１本のデータ線と１本のクロック線とを有し、前記データの転送は、前記クロック線にドライブされるクロックに同期して、前記１本のデータ線上にデータ転送がシリアルに行われることを特徴とする集積回路装置。
【００７４】
（付記６）シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記送受信バッファに格納されたデータを送信するデータ送信ユニットと、
前記データ送信ユニットが、マスターとして、スレーブデバイスを特定するアドレスをシリアル送信するアドレスフェーズ中に、他のマスターが同時にアドレスを送信することに起因してアービトレーションロストが発生したか否かを検出するアービトレーションロスト検出ユニットとを有し、
前記アービトレーションロスト検出ユニットが、前記アドレスフェーズ中に前記アービトレーションロストの発生を検出しなかった場合に、当該アドレスフェーズ後、前記ＣＰＵが、前記送受信バッファに転送対象データを格納することを特徴とする集積回路装置。
【００７５】
（付記７）付記６において、
前記アービトレーションロスト検出ユニットが、前記アドレスフェーズ中に前記アービトレーションロストの発生を検出した場合に、前記ＣＰＵは、前記送受信バッファに前記転送対象データを格納しないことを特徴とする集積回路装置。
【００７６】
（付記８）シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し、前記送受信バッファに格納するデータ受信ユニットと、
前記所定単位のデータの受信に応答して、送信側デバイスにデータアクノリッジ信号を送信するアクノリッジ信号生成ユニットとを有し、
前記アクノリッジ信号生成ユニットは、受信可能なデータ単位数に達するまで、前記所定単位のデータを受信するたびに、前記ＣＰＵに割込を発生することなく前記データアクノリッジ信号を送信し、前記受信可能なデータ単位数に達した時に、前記データアクノリッジ信号を送信しないことを特徴とする集積回路装置。
【００７７】
（付記９）付記８において、
更に、前記受信可能なデータ単位数を格納する受信数レジスタと、前記データ受信ユニットが前記所定単位のデータを受信するたびに、前記受信数をカウントするカウンタとを有する受信制御ユニットを有し、
前記アクノリッジ信号生成ユニットは、当該カウンタのカウント値が前記受信数レジスタに格納された受信可能なデータ単位数に達することに応答して、前記データアクノリッジ信号を送信しないことを特徴とする集積回路装置。
【００７８】
（付記１０）付記９において、
前記ＣＰＵは、前記受信数レジスタに前記受信可能なデータ単位数を設定することを特徴とする集積回路装置。
【００７９】
（付記１１）付記９において、
前記受信制御ユニットは、前記受信可能なデータ単位数に達することに応答して、前記ＣＰＵに割込を発生することを特徴とする集積回路装置。
【００８０】
（付記１２）シリアル転送バスを介して外部デバイスとアドレス及びデータをシリアル転送する送受信マクロを有する集積回路装置において、
所定の処理を実行するＣＰＵを有し、
前記送受信マクロは、
前記ＣＰＵからアクセスされ、前記シリアル転送バスに対して送信または受信される複数単位のデータを格納する送受信バッファと、
前記シリアル転送バスを介して送信されるデータを受信し前記送受信バッファに格納すると共に、前記送受信バッファに格納されたデータを送信するデータ送受信ユニットと、
前記データ送受信ユニットによる転送データの送受信が行われている間に、前記ＣＰＵから前記送受信バッファへのアクセスが行われた場合に、当該アクセス発生のフラグを格納するアクセスフラグレジスタとを有することを特徴とする集積回路装置。
【００８１】
（付記１３）付記１２において、
前記送受信マクロは、更に、
前記所定単位のデータの送信に応答して受信側デバイスから送信されるデータアクノリッジ信号を検出するアクノリッジ信号検出ユニットを有し、
前記データ送受信ユニットは、前記アクノリッジ信号検出ユニット手段が前記データアクノリッジ信号を検出することに応答して、前記ＣＰＵへの割込を発生することなく前記送受信バッファに格納されたデータを送信することを特徴とする集積回路装置。
【００８２】
（付記１４）付記１２において、
前記送受信マクロは、更に、
前記所定単位のデータの受信に応答して、送信側デバイスにデータアクノリッジ信号を送信するアクノリッジ信号生成ユニットを有し、
前記アクノリッジ信号生成ユニットは、受信可能なデータ単位数に達するまで、前記所定単位のデータの受信に応答して、前記ＣＰＵに割込を発生することなく前記データアクノリッジ信号を送信し、前記受信可能なデータ単位数に達した時に、前記データアクノリッジ信号を送信しないことを特徴とする集積回路装置。
【図面の簡単な説明】
【００８３】
【図１】本実施の形態におけるシリアル転送バスを示す図である。
【図２】本実施の形態における集積回路装置であるマイクロコンピュータの全体構成図である。
【図３】本実施の形態における送受信マクロの構成図である。
【図４】シリアル転送バスのドライブ回路の一例を示す図である。
【図５】シリアル転送バスの信号波形図である。
【図６】第１の実施の形態を説明するタイミングチャート図である。
【図７】バスアービトレーション手続きを説明するための図である。
【図８】本実施の形態における送受信マクロの動作フローチャート図である。
【図９】本実施の形態におけるシーケンスチャート図である。
【図１０】本実施の形態における別のシーケンスチャート図である。
【図１１】本実施の形態における送受信マクロの一部の構成を示す図である。
【図１２】本実施の形態におけるシーケンスチャート図である。
【符号の説明】
【００８４】
１０：シリアル転送バス、３２：送受信マクロ、４６：送受信バッファ、
４８：データ送信・受信ユニット、５０：アービトレーションロスト検出ユニット、
５２：アクノリッジ発生ユニット、５４：アクノリッジ検出ユニット
【図１】
2005128747.tif 000003
【図２】
2005128747.tif 000004
【図３】
2005128747.tif 000005
【図４】
2005128747.tif 000006
【図５】
2005128747.tif 000007
【図６】
2005128747.tif 000008
【図７】
2005128747.tif 000009
【図８】
2005128747.tif 000010
【図９】
2005128747.tif 000011
【図１０】
2005128747.tif 000012
【図１１】
2005128747.tif 000013
【図１２】
2005128747.tif 000014