(57)【要約】  【課題】  レディ信号ＲＤＹが有効にならなかった場合でも、直ちには初期化せずに再度前回と同一アクセス処理を実行させるようにして、できるだけハングアップに陥ることを防止する。  【解決手段】  外部Ｉ／Ｏデバイス２０に対して読出動作あるいは書込動作を行う際に、外部Ｉ／Ｏデバイス２０から入力するレディ信号ＲＤＹが有効になることに基づき当該アクセスのバスサイクルの処理を完了するバス制御方法において、レディ信号ＲＤＹが規定時間を超えても有効にならないとき、現バスサイクルを中止することにより非アクセス状態に復帰させ、該非アクセス状態になった後再度前回と同一アクセスのバスサイクルを実行する。【選択図】  図１
2006092522.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを使用して、外部回路に対して読出動作あるいは書込動作を行う際に、前記外部回路から入力するレディ信号が有効になることに基づき当該読出あるいは書込アクセスのバスサイクルの処理を完了するバス制御方法において、
前記レディ信号が規定時間を超えても有効にならないとき、現バスサイクルを中止することにより非アクセス状態に復帰させ、該非アクセス状態になった後再度前回と同一アクセスのバスサイクルを実行することを特徴とするバス制御方法。
【請求項２】
請求項１に記載のバス制御方法において、
前記同一アクセスのバスサイクルの実行回数が規定数に達することにより、前記バスサイクルの処理を終了すると共に割り込みあるいはリセットとして使用できる信号を出力することを特徴とするバス制御方法。
【請求項３】
請求項１に記載のバス制御方法において、
前記同一アクセスのバスサイクルの実行回数が規定数に達することにより、前記バスサイクルの処理を終了すると共に当該アクセスに関する情報を記憶することを特徴とするバス制御方法。
【請求項４】
請求項３に記載のバス制御方法において、
前記記憶したアクセスに関する情報を前記ＣＰＵに読ませるためのデータ処理を行うことを特徴とするバス制御回路。
【請求項５】
外部回路に対してバスおよび制御線を介して接続され、ＣＰＵからの読み出しあるいは書込みの指令に基づき前記外部回路に対して読出制御信号あるいは書込制御信号を出力して読み出しあるいは書込みを行う際、前記外部回路から入力するレディ信号が有効になることに基づき当該アクセスのバスサイクルの処理を完了するバス制御回路において、
前記ＣＰＵからの読み出しあるいは書込みの指令に基づき前記外部回路に対して前記読出制御信号あるいは前記書込制御信号を生成して出力する読出／書込回路と、該読出／書込回路から前記読出制御信号あるいは前記書込制御信号を前記外部回路に出力した後に前記レディ信号が有効になることなく規定時間が経過するとリトライ信号を出力するバスサイクル計測回路とを具備し、
前記読出／書込回路は、前記バスサイクル計測回路から前記リトライ信号が出力されることにより前記読出制御信号あるいは前記書込制御信号を一旦解除するとともに再度生成して、前回と同一アクセスのバスサイクルが実行されるようにしたことを特徴とするバス制御回路。
【請求項６】
請求項５に記載のバス制御回路において、
前記バスサイクル計測回路は、前記読出制御信号あるいは前記書込制御信号が生成されると時間の計測動作を一旦解除してから該計測動作を再開し、前記リトライ信号が出力された後は前記読出制御信号及び前記書込制御信号が解除されると前記計測動作を解除することを特徴とするバス制御回路。
【請求項７】
請求項５又は６に記載のバス制御回路において、
前記バスサイクル計測回路で生成される前記リトライ信号の回数を計測して規定回数に達すると、割り込みあるいはリセットとして使用できる信号を出力するリトライ回数計測回路を具備することを特徴とするバス制御回路。
【請求項８】
請求項７に記載のバス制御回路において、
前記リトライ回数計測回路は、前記リトライ回数の計測値が前記規定回数に達する前に前記レディ信号が有効になると前記リトライ回数の計測動作を解除することを特徴とするバス制御回路。
【請求項９】
請求項７に記載のバス制御回路において、
前記リトライ回数計測回路が計測する前記リトライ回数の計測値が前記規定回数に達することにより前記アクセスに関する情報を記憶するアクセス内容記憶回路を具備することを特徴とするバス制御回路。
【請求項１０】
請求項７に記載のバス制御回路において、
前記アクセス内容記憶回路に記憶された前記アクセスに関する情報を前記ＣＰＵに読ませるためのデータ処理を行うデータ処理回路を具備することを特徴とするバス制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部回路との間でデータをやりとりするバス制御方法および回路に係り、特に何らかの理由でレディ信号が有効にならずアクセス状態から復帰できなくなった場合に、非アクセス状態に強制的に復帰させ、その後再度同一アクセスを行うようにしたバス制御方法および回路に関するものである。
【背景技術】
【０００２】
特許文献１に見られるように、読出動作や書込動作を始めたマイクロコントローラは、内蔵するバス制御回路において、バス制御信号を構成するハンドシエーク信号の１信号であるレディ信号が有効になるのを待ち、その処理を完了させる都合上、レディ信号が何らかの理由により有効にならない場合は永遠に処理を完了させることができず、ハングアップしてしまう。マイクロコントローラおよびその中心であるＣＰＵがハングアップしてしまうということは、システム全体がハングアップしてしまうということに他ならない。
【０００３】
そこで、この不具合を回避するために、前記特許文献１では、一定時間を超えてもレディ信号が有効にならない場合にはＣＰＵを初期化することで、ハングアップが長時間継続することを回避している。
【特許文献１】特開平０７−０８４８３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、ＣＰＵを初期化するということは、それまで実行した処理のすべてを放棄することであり、言ってみれば最後の手段である。レディ信号が有効にならなかったことが、仮に偶発的理由（例えばノイズの混入等）による場合、再度同一処理を実行すれば問題が生じない可能性がある。また、同一処理を再度実行してもアクセスが成功しない場合において、そのアクセス対象を特定し、その対象モジュールのみをリセットし、初期設定を行うことは困難であった。
【０００５】
本発明はこの点に着目してなされたものであり、レディ信号が有効にならなかった場合でも、直ちには初期化せずに再度前回と同一アクセス処理を実行させるようにして、できるだけハングアップに陥ることを防止できるようにし、また、再度前回と同一アクセス処理を複数回実行させてもそれが不調に終わった場合にはそのアクセス対象のみのリセットが可能になるようにして、その後の処理続行の可能性を高めたバス制御方法および回路を提供することである。
【課題を解決するための手段】
【０００６】
バス制御方法の発明は、ＣＰＵを使用して、外部回路に対して読出動作あるいは書込動作を行う際に、前記外部回路から入力するレディ信号が有効になることに基づき当該読出あるいは書込アクセスのバスサイクルの処理を完了するバス制御方法において、前記レディ信号が規定時間を超えても有効にならないとき、現バスサイクルを中止することにより非アクセス状態に復帰させ、該非アクセス状態になった後再度前回と同一アクセスのバスサイクルを実行することを特徴とする。
【０００７】
ここで、前記同一アクセスのバスサイクルの実行回数が規定数に達することにより、前記バスサイクルの処理を終了すると共に割り込みあるいはリセットとして使用できる信号を出力することが望ましい。
【０００８】
また、前記同一アクセスのバスサイクルの実行回数が規定数に達することにより、前記バスサイクルの処理を終了すると共に当該アクセスに関する情報を記憶することも望ましい。
【０００９】
さらに、前記記憶したアクセスに関する情報を前記ＣＰＵに読ませるためのデータ処理を行うことも望ましい。
【００１０】
バス制御回路の発明は、外部回路に対してバスおよび制御線を介して接続され、ＣＰＵからの読み出しあるいは書込みの指令に基づき前記外部回路に対して読出制御信号あるいは書込制御信号を出力して読み出しあるいは書込みを行う際、前記外部回路から入力するレディ信号が有効になることに基づき当該アクセスのバスサイクルの処理を完了するバス制御回路において、前記ＣＰＵからの読み出しあるいは書込みの指令に基づき前記外部回路に対して前記読出制御信号あるいは前記書込制御信号を生成して出力する読出／書込回路と、該読出／書込回路から前記読出制御信号あるいは前記書込制御信号を前記外部回路に出力した後に前記レディ信号が有効になることなく規定時間が経過するとリトライ信号を出力するバスサイクル計測回路とを具備し、前記読出／書込回路は、前記バスサイクル計測回路から前記リトライ信号が出力されることにより前記読出制御信号あるいは前記書込制御信号を一旦解除するとともに再度生成して、前回と同一アクセスのバスサイクルが実行されるようにしたことを特徴とする。
【００１１】
ここで、前記バスサイクル計測回路は、前記読出制御信号あるいは前記書込制御信号が生成されると時間の計測動作を一旦解除してから該計測動作を再開し、前記リトライ信号が出力された後は前記読出制御信号及び前記書込制御信号が解除されると前記計測動作を解除することことが望ましい。
【００１２】
また、前記バスサイクル計測回路で生成される前記リトライ信号の回数を計測して規定回数に達すると、割り込みあるいはリセットとして使用できる信号を出力するリトライ回数計測回路を具備することも望ましい。
【００１３】
さらに、前記リトライ回数計測回路は、前記リトライ回数の計測値が前記規定回数に達する前に前記レディ信号が有効になると前記リトライ回数の計測動作を解除することも望ましい。
【００１４】
さらに、前記リトライ回数計測回路が計測する前記リトライ回数の計測値が前記規定回数に達することにより前記アクセスに関する情報を記憶するアクセス内容記憶回路を具備することも望ましい。
【００１５】
さらに、前記アクセス内容記憶回路に記憶された前記アクセスに関する情報を前記ＣＰＵに読ませるためのデータ処理を行うデータ処理回路を具備することも望ましい。
【発明の効果】
【００１６】
本発明によれば、レディ信号が何らかの理由により有効にならない場合に再度前回と同一アクセスのバスサイクルを実行させて、バスアクセスを正常に完了する機会を増大させるので、ハングアップしてしまう状況を回避することが可能となる。また、そのバスアクセスが不調に終わった場合でも、その対象デバイスへのアクセス内容を記憶しておくことで、割込み等を利用して対象デバイスへのリセット、設定処理を行うことにより、その後の処理続行の可能性が高まる。その結果として、システム全体のリセット（再起動）機会を削減することができる。
【発明を実施するための最良の形態】
【００１７】
本実施例では、マイクロコントローラの外部に接続されたメモリやＩ／Ｏデバイスといった外部回路に対して読出動作や書込動作を行う際に使用するレディ信号が有効になるのを待ち、当該アクセスのバスサイクルの処理の完了をＣＰＵに通知するバス制御回路において、長時間そのレディ信号が有効にならない場合に、強制的に対外的な（＝Ｉ／Ｏデバイスやメモリに接続される外部バスから見た）現バスサイクルを中止し、非アクセス状態に強制的に復帰させ、復帰後再び前回と同一のアクセスのバスサイクルを実行する。そして、この同一バスサイクルの再実行を規定回数行ってもレディ信号が有効にならない場合には、ＣＰＵに向けて割り込み要求やリセットとして利用可能な信号を出力したり、あるいは、さらに進めてそのときの対象デバイスへのアクセス内容を記憶しておくことで、割り込み等を利用してＣＰＵ等から対象デバイスへのリセット、設定処理を行うことを容易に実現可能とする。
【実施例１】
【００１８】
図１は本発明の実施例１のバス制御回路およびその周辺の回路部分を示すブロック図である。図１において、Ａ[15:0]は１６ビットのアドレスバスであり、マイクロコントローラ１０から外部Ｉ／Ｏデバイス２０へ接続されている。また、Ｄ[7:0]は８ビットのデータバスであり、マイクロコントローラ１０と外部Ｉ／Ｏデバイス２０とに双方向に接続されている。
【００１９】
ＣＰＵ＿ＲＤＮ、ＣＰＵ＿ＷＲＮは、各々図示しないＣＰＵからの外部への読み出し、書込みを行う際に“Ｌ”となる読出制御信号および書込制御信号（Low Active）である。ＣＰＵはバス制御回路１１からの読出終了信号ＲＤ＿ＥＮＤ、書込終了信号ＷＲ＿ＥＮＤの“Ｈ”を受けて、リードサイクル、ライトサイクル、すなわちバスサイクルを終了する。この読出終了信号ＲＤ＿ＥＮＤ、書込終了信号ＷＲ＿ＥＮＤは、バス制御回路１１が外部Ｉ／Ｏデバイス２０からの有効データ取り込みが完了した時点、又は外部Ｉ／Ｏデバイスへ２０の有効データ書き込みが完了した時点で“Ｈ”となる信号（High Active）である。
【００２０】
バス制御回路１１から外部Ｉ／Ｏデバイス２０への読出制御信号ＲＤＮ、書込制御信号ＷＲＮは、それぞれＣＰＵからの読出制御信号ＣＰＵ＿ＲＤＮ、書込制御信号ＣＰＵ＿ＷＲＮに基づき出力する。ただし、これはメモリやＩ／Ｏデバイスといった外部回路とのハンドシェークに使用するレディ信号ＲＤＹの有効入力とのタイミング等を考慮したバスタイミングを提供するためのものである。このバス制御回路１１の存在により、様々な外部Ｉ／Ｏデバイスやメモリ等と接続する必要がある場合に、複雑になりがちなバス制御回路１１の部分をＣＰＵ自体から分離することにより、ＣＰＵ自体のリード、ライトに関する仕様及び設計が容易になる利点がある。
【００２１】
本実施例１では、バス制御回路１１内に読出／書込回路としてのＲＤＮ＿ＷＲＮ生成回路１１１、バスサイクル計測回路１１２、及びリトライ回数計測回路１１３を配置する。ＲＤＮ＿ＷＲＮ生成回路１１１は文字通り外部Ｉ／Ｏデバイス２０に向けて出力する読出制御信号ＲＤＮ、書込制御信号ＷＲＮを生成する回路である。
【００２２】
バスサイクル計測回路１１２はバスサイクルがシステムクロック単位で何クロック分継続しているかを計測する回路であり、規定クロック数に達するとリトライ信号ＲＥＴＲＹを出力する。
【００２３】
ＲＤＮ＿ＷＲＮ生成回路１１１はこのリトライ信号ＲＥＴＲＹを受けると、外部Ｉ／Ｏデバイス２０に対する読出サイクルもしくは書き込みサイクルの再実行を要求するために、読出制御信号ＲＤＮもしくは書込制御信号ＷＲＮを一旦解消してから再度生成する。
【００２４】
リトライ回数計測回路１１３は、バスサイクル計測回路１１２からのリトライ信号ＲＥＴＲＹを受け、前回と同一アクセスのバスサイクルが何回実行されたかを計測する内部カウンタを備え、その計測値ＲＴＲＹ＿ＣＮＴが規定回数に達した際に、ＣＰＵに向けてパルス信号ＩＮＴ＿Ｏを発生する。
【００２５】
また、このリトライ回数計測回路１１３は、外部Ｉ／Ｏデバイス２０からのレディ信号ＲＤＹが有効になりバスサイクルが正常終了した際に、ＲＤＮ＿ＷＲＮ生成回路１１１から出力される読出終了信号ＲＤ＿ＥＮＤあるいは書込終了信号ＷＲ＿ＥＮＤを受けて、内部カウンタをリセットする。
【００２６】
さらに、このリトライ回数計測回路１１３は、現在のリトライ回数の計測値ＲＴＲＹ＿ＣＮＴをＲＤＮ＿ＷＲＮ生成回路１１１に送り、その計測値ＲＴＲＹ＿ＣＮＴが規定回数に達すると、ＲＤＮ＿ＷＲＮ生成回路１１１から読出終了信号ＲＤ＿ＥＮＤあるいは書込終了信号ＷＲ＿ＥＮＤが出力されるので、このときも、ＲＤＮ＿ＷＲＮ生成回路１１１から出力される読出終了信号ＲＤ＿ＥＮＤあるいは書込終了信号ＷＲ＿ＥＮＤを受けて、内部カウンタをリセットする。
【００２７】
図２に外部Ｉ／Ｏデバイス２０からのデータ読出動作（正常時）のタイミングチャートを示す。マイクロコントロ−ラ１０は、内部レジスタに保持されたアドレス値をアドレスバスＡ[15:0]に出力する。それと同時に、ＣＰＵは読出制御信号ＣＰＵ＿ＲＤＮを“Ｌ”にする。バス制御回路１１は読出制御信号ＣＰＵ＿ＲＤＮ＝“Ｌ”を受けて、読出制御信号ＲＤＮを“Ｈ”→“Ｌ”にする。外部Ｉ／Ｏデバイス２０は、マイクロコントローラ１０からの読出要求に応答するデータの準備が完了した時点で有効出力データをデータバスＤ[7:0]に出力すると同時に、レディ信号ＲＤＹを有効に、つまり“Ｌ”→“Ｈ”にする。バス制御回路１１はこのレディ信号ＲＤＹの“Ｌ”→“Ｈ”を受けて読出終了信号ＲＤ＿ＥＮＤを“Ｈ”にし、これを受けてＣＰＵは読出データを内部に取り込むことが可能となる。それと同時にＣＰＵは読出制御信号ＣＰＵ＿ＲＤＮを“Ｌ”→“Ｈ”にすることで、読出サイクルを終了する。
【００２８】
図３に外部Ｉ／Ｏデバイス２０へのデータ書込動作（正常時）のタイミングチャートを示す。マイクロコントローラ１０は、内部レジスタに保持されたアドレス値をアドレスバスＡ[15:0]に出力する。それと同時に書込制御信号ＣＰＵ＿ＷＲＮを“Ｌ”にする。データバスＤ[7:0]は書込データを出力し、バス制御回路１１は書込制御信号ＣＰＵ＿ＷＲＮ＝“Ｌ”を受けて、書込制御信号ＷＲＮを“Ｈ”→“Ｌ”にする。外部Ｉ／Ｏデバイス２０はマイクロコントローラ１０からの書込要求への対応準備が完了した時点でレディ信号ＲＤＹを有効に、つまり“Ｌ”→“Ｈ”にすると共に、内部へ書込データを取り込む。バス制御回路１１はレディ信号ＲＤＹの“Ｌ”→“Ｈ”を受けて書込終了信号ＷＲ＿ＥＮＤを“Ｈ”にし、これを受けてＣＰＵは書込制御信号ＣＰＵ＿ＷＲＮを“Ｌ”→“Ｈ”にすることで、書込サイクルを終了する。
【００２９】
図４はバスサイクル計測回路１１２の構成例を示すブロック図である。図中では３ビットのバイナリカウンタ１１２１をシンボル化して表しており、このカウンタ１１２１は「０」→「７」までのカウントアップを行うものである。カウントするのはシステムクロック信号ＣＬＫの立ち上がりであり、イネーブル端子ＥＮＡＢＬＥが“Ｈ”の場合にクロック信号ＣＬＫの立ち上がりでカウント値を＋１し、イネーブル端子ＥＮＡＢＬＥが“Ｌ”の場合にはカウント値を変更しない。また、リセット端子ＲＥＳＥＴＮが“Ｌ”の場合にはクロック信号ＣＬＫの立ち上がりでカウンタの値を「０」とし、リセット端子ＲＥＳＥＴＮが“Ｈ”の場合には先に説明したイネーブル端子ＥＮＡＢＬＥによって動作を切り替えるリセット優先のカウンタである。
【００３０】
その他、１１２２はリトライ信号ＲＥＴＲＹによって入力を切り替えるセレクタ、１１２３はＤ型フリップフロップ、１１２４，１１２５，１１２６はＡＮＤ回路、１１２７はＮＯＲ回路、１１２８はインバータである。Ｄ型フリップフロップ１１２３とＡＮＤ回路１１２４により、読出制御信号ＲＤＮあるいは書込制御信号ＷＲＮの立ち下がりエッジを検出すると、ＡＮＤ回路１１２４は“Ｈ”を出力する。
【００３１】
本実施例１では、読出制御信号ＲＤＮあるいは書込制御信号ＷＲＮが“Ｌ”の場合に、カウンタ１１２１のイネーブル端子ＥＮＡＢＬＥが“Ｈ”となることで、その読出制御信号ＲＤＮあるいは書込制御信号ＷＲＮがシステムクロック信号ＣＬＫ単位でどれだけの期間“Ｌ”であるかがカウントされる。カウンタ１１２１のリセットは、システムＲＥＳＥＴの他、リトライ信号ＲＥＴＲＹ＝“Ｌ”の場合はＡＮＤ回路１１２４の出力がセレクタ１１２２で選択されて読出制御信号ＲＤＮあるいは書込制御信号ＷＲＮの“Ｈ”→“Ｌ”のとき実施され、リトライ信号ＲＥＴＲＹ＝“Ｈ”の場合はＮＯＲ回路１１２６の出力がセレクタ１１２２で直接選択されて読出制御信号ＲＤＮおよび書込制御信号ＷＲＮが共に“Ｈ”のときに実施される。
【００３２】
すなわち、カウンタ１１２１は、例えば読み出し動作の場合では、読出制御信号ＲＤＮが“Ｈ”→“Ｌ”になるとリセットされ、それからクロック信号ＣＬＫをカウントし、そのカウント値＝「７」未満においてレディ信号ＲＤＹが“Ｈ”となることにより読出制御信号ＲＤＮが“Ｌ”→“Ｈ”に復帰すればリセットされるが、カウント値＝「７」になるとリトライ信号ＲＥＴＲＹが“Ｈ”となり、バスサイクルが終了しなかったことが示される。そして、リトライ信号ＲＥＴＲＹが“Ｈ”となると、ＲＤＮ＿ＷＲＮ生成回路１１１により読出制御信号ＲＤＮが“Ｈ”となり、カウンタ１１２１はリセットされ、リトライ信号ＲＥＴＲＹが“Ｌ”になる。書込み動作の場合もこれと同様である。
【００３３】
図５はリトライ回数計測回路１１３の構成例を示すブロック図である。図中で使用するカウンタ１１３１の機能は図４で使用しているカウンタ１１２１とまったく同じである。１１３２，１１３３はＤ型フリップフロップ、１１３４〜１１３６はＡＮＤ回路、１１３７はＮＯＲ回路である。Ｄ型フリップフロップ１１３２とＡＮＤ回路１１３４により、リトライ信号ＲＥＴＲＹの立ち上がりエッジを検出すると、ＡＮＤ回路１１３４は“Ｈ”を出力する。Ｄ型フリップフロップ１１３３とＡＮＤ回路１１３６により、ＡＮＤ回路１１３５の立ち上がりエッジを検出すると、アンド回路１１３６は“Ｈ”を出力する。
【００３４】
カウンタ１１３１はリトライ信号ＲＥＴＲＹの立ち上がりエッジの回数を計測し、計測値ＲＴＲＹ＿ＣＮＴを出力する。このカウンタ１１３１のリセットはシステムＲＥＳＥＴ信号、読出終了信号ＲＤ＿ＥＮＤあるいは書込終了信号ＷＲ＿ＥＮＤが“Ｈ”の時に行われる。また、このカウンタ１１３１のカウント値が「７」になると、ＡＮＤ回路１１３５が１クロック分のパルス信号ＩＮＴ＿Ｏを出力し、ＣＰＵへの割り込み要求やリセットとして使用することができる。
【００３５】
図６は最初の読出サイクルでレディ信号ＲＤＹが有効にならず、リトライを行い２回目の読出サイクルを実施し、レディ信号ＲＤＹが有効になった場合のタイミングチャートである。図中のカウント値ＣＯＵＮＴはバスサイクル計測回路１１２内のカウンタ１１２１の値を１０進数で示したものである。カウンタ１１２１は、読出制御信号ＲＤＮ＝“Ｌ”を受けて、カウント値ＣＯＵＮＴ＝「０」にクリアされ、その後も読出制御信号ＲＤＮが“Ｌ”なので、クロック信号ＣＬＫに同期してカウントアップする。
【００３６】
カウント値ＣＯＵＮＴが本実施例１での規定値である「７」になったところでリトライ信号ＲＥＴＲＹが“Ｈ”となり、これにより読出制御信号ＲＤＮが“Ｌ”→“Ｈ”になり外部Ｉ／Ｏデバイス２０からみた見かけ上のバスサイクル（１回目）が終了する。また、これと同時にリトライ回数計測回路１１３内のカウンタ１１３１の計測値ＲＴＲＹ＿ＣＮＴが「０」から「１」にカウントアップされる。加えて、読出制御信号ＲＤＮが“Ｈ”になったことで、カウンタ１１２１のカウント値ＣＯＵＮＴは「０」にクリアされ、前回と同一アクセスの２回目のバスサイクルが開始される。
【００３７】
本例では２回目のバスサイクルで読出制御信号ＲＤＮが“Ｌ”の期間に、レディ信号ＲＤＹが“Ｈ”となるのを受けて読出終了信号ＲＤ＿ＥＮＤが“Ｈ”、そして読出制御信号ＣＰＵ＿ＲＤＮが“Ｈ”となり、この時点で本読み出しのアクセスに関するバスサイクルは終了する。１回目及び２回目のバスサイクル期間中、読出制御信号ＣＰＵ＿ＲＤＮは“Ｌ”のままであり、読出終了信号ＲＤ＿ＥＮＤが“Ｈ”になるまでの間、ＣＰＵとしては長めのバスサイクルを１回実行したという捉え方となる。リトライ回数計測回路１１３内のカウンタ１１３１は読出終了信号ＲＤ＿ＥＮＤが“Ｈ”になることでリセットされる。
【００３８】
図６に対応する書き込み処理に関しては、図２と図３の関係から明らかなように、各信号を、ＲＤＮ→ＷＲＮ、ＣＰＵ＿ＲＤＮ→ＣＰＵ＿ＷＲＮ、ＲＤ＿ＥＮＤ→ＷＲ＿ＥＮＤに置き換えることで対応可能なため、詳細な説明を省略する（両者でデータバスＤ[7:0]の波形が異なるが、本質ではない）。
【００３９】
図７はリトライ回数、つまりリトライ回数計測回路１１３内のカウンタ１１３１の計測値ＲＴＲＹ＿ＣＮＴが本実施例での規定数である「７」（つまり、リトライ回数が８回目）に到達した際に１クロック幅のパルス信号ＩＮＴ＿Ｏが出力される様子を示したタイミングチャートである。このパルス信号ＩＮＴ＿Ｏを割り込み要求信号として利用することにより、バスサイクルエラーの感知後の処理をソフトウェアで対応することが可能となる。また、このパルス信号ＩＮＴ＿Ｏをリセットとして利用し、システムの初期化に利用することも可能となる。なお、このように、計測値ＲＴＲＹ＿ＣＮＴが本実施例１での規定数である「７」に到達したときは、この計測値ＲＴＲＹ＿ＣＮＴに基づき読出終了信号ＲＤ＿ＥＮＤが“Ｈ”、そして読出制御信号ＣＰＵ＿ＲＤＮが“Ｈ”となり、この時点で本読み出しのアクセスに関するバスサイクルは終了する。リトライ回数計測回路１１３内のカウンタ１１３１は読出終了信号ＲＤ＿ＥＮＤが“Ｈ”になることでリセットされる。
【実施例２】
【００４０】
図８は本発明の実施例２のバス制御回路およびその周辺の回路部分を示すブロック図である。図１に示したものと同じものには同じ符号を付けた。１１４はアクセス内容記憶回路であり、リトライ回数が規定値である「７」に達し、アクセスが不調に終わった際に、そのアクセス内容である、アドレスバスＡ[15:0]、書き込みの場合の書き込みデータＤＯＵＴ[7:0]、読み出しフラグとしてのＣＰＵ＿ＲＤＮ、書き込みフラグとしてのＣＰＵ＿ＷＲＮの内容を、データＤＯ[25:0]として内部レジスタにまとめて記憶する。
【００４１】
１１５はアクセスが不調に終わった際にＣＰＵに読み込ませるためのデータを生成するデータ処理回路としてのＤＩＮ生成回路であり、ＣＰＵからの読み出しアクセスがＩＯデバイス２０に対する場合にはＩＯデバイス２０からの読み出しデータバスＤ[7:0]の内容をＤＩＮ[7:0]として出力し、またアクセス内容記憶回路１１４に対する場合はアクセス内容記憶回路１１４のレジスタに記憶したデータＤＯ[25:0]を８ビット単位で切り替えてＤＩＮ[7:0]として出力する。
【００４２】
図９はアクセス内容記憶回路１１４の構成例を示すブロック図である。１１４１は３ビットのＤ型フリップフロップ、１１４２は２６ビットのＤ型フリップフロップ、１１４３〜１１４５はＡＮＤ回路、１１４６はＯＲ回路、１１４７はセレクタである。
【００４３】
Ｄ型フリップフロップ１１４１は、リトライ回数計測回路１１３内のカウンタ１１３１の計測値ＲＴＲＹ＿ＣＮＴを取り込み、その値が「６」に達すると、ＡＮＤ回路１１４３の出力が“Ｈ”となり、ＡＮＤ回路１１４４のゲートを開くので、その次の“Ｈ”のリトライ信号ＲＥＴＲＹ（これは、ＲＴＲＹ＿ＣＮＴ＝「７」のとき）が入力した時にそのＡＮＤ回路１１４４の出力が“Ｈ”となり、ＡＮＤ回路１１４５がゲートを開く。
【００４４】
この結果、不調に終わったアクセスの内容であるところのアドレスバスＡ[15:0]、書き込みの場合の書き込みデータバスＤＯＵＴ[7:0]、読み出しフラグとしてのＣＰＵ＿ＲＤＮ、書き込みフラグとしてのＣＰＵ＿ＷＲＮの内容、つまり合計２６ビットが、アンド回路１１４５を経由してセレクタ１１４７に入力する。
【００４５】
このとき、計測値ＲＴＲＹ＿ＣＮＴが「７」になったことに基づき読出終了信号ＲＤ＿ＥＮＤが“Ｈ”となっているので、ＯＲ回路１１４６の出力が“Ｈ”となり、セレクタ１１４７はＡＮＤ回路１１４５の出力を選択して、前記した不調に終わったアクセスの内容を示すデータＤＯ[25:0]がフリップフロップ１１４２に記憶される。この後に読出終了信号ＲＤ＿ＥＮＤが“Ｌ”になり、セレクタ１１４７が切り替わるので、クロックＣＬＫが更新しても、このフリップフロップ１１４２の記憶内容はセレクタ１１４７経由で自己保持される。
【００４６】
図１０はＤＩＮ生成回路１１５の構成例を示すブロック図である。１１５１はＣＰＵから到来するアドレスバスＡ[15:0]の内容を３ビットのコードに変換するデコード回路、１１５２はアクセス内容記憶回路１１４の２６ビットの保持データＤＯ[25:0]およびＩＯデバイス２０の読み出しデータＤ[7:0]を、デコード回路１１５１のデコード結果によって選択するセレクタである。アクセス内容記憶回路１１４の保持データＤＯ[25:0]は、ＤＯ[7:0]，ＤＯ[15:8]，ＤＯ[22:16]，ＤＯ[25:23]のように８ビット単位で選択される（８ビットに足りない場合には不足ビットは任意とする）。
【００４７】
デコード回路１１５１は、ＣＰＵからのアドレスバスＡ[15:0]の内容がＩＯデバイス２０を示すときは“０００”のコードを出力する。すると、セレクタ１１５２は、ＩＯデバイス２０への入力データＤ[7:0]を選択し、これがＣＰＵに読み込まれる。ＣＰＵからのアドレスバスＡ[15:0]の内容がアクセス内容記憶回路１１４に割り当てられたＩＯアドレス＃０を示すときは“００１”のコードを出力し、アクセス内容記憶回路１１４に記憶されているデータＤＯ[25:0]の内のデータＤＯ[7:0]を選択し、これがＣＰＵに読み込まれる。以下、アクセス内容記憶回路１１４に割り当てられたＩＯアドレス＃１，＃２，＃３を示すときは、それぞれコード“０１０”，“０１１”，“１００”を出力することで、データＤＯ[25:0]の内のデータＤＯ[15:8]，ＤＯ[22:16]，ＤＯ[25:23]を選択し、これらがＣＰＵに読み込まれる。
【００４８】
このようにして、ＣＰＵからのアドレスバスＡ[15:0]の内容を切り替えることによって、ＤＩＮ生成回路１１５はアクセス内容記憶回路１１４の記憶データＤＯ[25:0]やＩＯデバイス２０から直接読み出したデータＤ[7:0]をＣＰＵで読み取り易いように８ビット単位としてそのＣＰＵに送る。
【００４９】
以上のように、ＩＮＴ＿Ｏ信号による割込み処理により、ＣＰＵがソフトウエアでこのアクセス内容記憶回路１１４内の記憶内容等をＤＩＮ生成回路１１５によってデータ処理してから読み出すことにより、ユーザはどのＩＯデバイスでアクセスのエラーが発生したのかを知ることが可能となる。仮に、この特定されたＩＯデバイスがそれまでの処理の履歴を考慮しないＩＯデバイスの場合であれば、この特定されたＩＯデバイスのみをリセットし、この後にこのＩＯデバイスの再度の設定作業を行い、再度先般不調に終わったアクセスを行い、再び処理を続行することが可能となる。このことは、システム全体のリセット（再起動）機会の削減を意味する。
【図面の簡単な説明】
【００５０】
【図１】実施例１のバス制御回路を含むマイクロコントローラの一部および外部Ｉ／Ｏデバイス示すブロック図である。
【図２】図１のバス制御回路の読出動作（正常時）のタイミングチャートである。
【図３】図１のバス制御回路の書込動作（正常時）のタイミングチャートである。
【図４】バスサイクル計測回路の構成例を示すブロック図である。
【図５】リトライ回数計測回路の構成例を示すブロック図である。
【図６】リトライ動作のタイミングチャートである。
【図７】リトライ回数が規定数に達した場合のタイミングチャートである。
【図８】実施例２のバス制御回路を含むマイクロコントローラの一部および外部Ｉ／Ｏデバイス示すブロック図である。
【図９】アクセス内容記憶回路の構成例を示すブロック図である。
【図１０】ＤＩＮ生成回路の構成例を示すブロック図である。
【符号の説明】
【００５１】
１０：マイクロコントローラ
１１：バス制御回路
１１１：ＲＤＮ＿ＷＲＮ生成回路（読出／書込回路）
１１２：バスサイクル計測回路、１１２１：カウンタ、１１２２：セレクタ、１１２３：Ｄ型フリップフロップ、１１２４，１１２５，１１２６：ＡＮＤ回路、１１２７：ＮＯＲ回路、１１２８：インバータ
１１３：リトライ回数計測回路、１１３１：カウンタ、１１３２，１１３３：Ｄ型フリップフロップ、１１３４〜１１３６：ＡＮＤ回路、１１３７：ＮＯＲ回路
１１４：アクセス内容記憶回路、１１４１，１１４２：Ｄ型フリップフロップ、１１４３〜１１４５：ＡＮＤ回路、１１４６：ＯＲ回路、１１４７：セレクタ
１１５：ＤＩＮ生成回路、１１５１：デコード回路、１１５２：セレクタ
２０：外部Ｉ／Ｏデバイス
Ａ[15:0]：アドレスバス
Ｄ[7:0]：データバス
ＣＬＫ：クロック信号
ＣＰＵ＿ＲＤＮ：読出制御信号
ＣＰＵ＿ＷＲＮ：書込制御信号
ＲＤＮ：読出制御信号
ＷＲＮ：書込制御信号
ＲＤＹ：レディ信号
ＲＥＴＲＹ：リトライ信号
ＷＲ＿ＥＮＤ：書込終了信号
ＲＤ＿ＥＮＤ：読出終了信号
ＣＯＵＮＴ：カウンタ１１２１のカウント値
ＲＴＲＹ＿ＣＮＴ：カウンタ１１３１のカウント値
【図１】
2006092522.tif 000003
【図２】
2006092522.tif 000004
【図３】
2006092522.tif 000005
【図４】
2006092522.tif 000006
【図５】
2006092522.tif 000007
【図６】
2006092522.tif 000008
【図７】
2006092522.tif 000009
【図８】
2006092522.tif 000010
【図９】
2006092522.tif 000011
【図１０】
2006092522.tif 000012