(57)【特許請求の範囲】
【請求項１】
外部データバスのビット長ｎに比べて長いビット長の内部レジスタを少なくとも１つ含む複数の内部レジスタを有し、複数のこれら内部レジスタのいずれか１つをアドレス指定して選択し、又、前記ビット長ｎより長いビット長の選択された前記内部レジスタに対しては前記ビット長ｎ単位で部分毎にアクセスするようにした内部レジスタ回路において、
複数の前記内部レジスタのいずれか１つに対して行った直前のアクセスのアドレス及びアクセスの種類を記憶する直前アドレスレジスタと、
該直前アドレスレジスタへ記憶されるアドレス及びアクセスの種類と、複数の前記内部レジスタのいずれか１つに対して行う今回のアクセスのアドレス及びアクセスの種類との一致を判定するアドレス比較器と、
前記ビット長ｎより長いビット長の選択された前記内部レジスタの１つに対して前記ビット長ｎ単位で部分毎にアクセスする際に、アクセスする部分の位置を記憶し、且つ、アクセスする部分の位置を指定するインクリメンタリレジスタとを備え、
前記比較器にて不一致と判定された場合、前記インクリメンタリレジスタをリセットするようにしたことを特徴とする内部レジスタ回路。
【請求項２】
請求項１において、
前記内部レジスタの少なくとも１つが、何らかのアドレスを記憶するものであって、
更に、前記ビット長ｎより長いビット長の選択された前記内部レジスタの１つに対して前記ビット長ｎ単位で部分毎にアクセスする際には、当該内部レジスタのＬＳＢ側から順にアクセスするようにされていることを特徴とする内部レジスタ回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、外部データバスのビット長ｎに比べて長いビット長の内部レジスタを少なくとも１つ含む複数の内部レジスタを有し、複数のこれら内部レジスタのいずれか１つをアドレス指定して選択し、又、前記ビット長ｎより長いビット長の選択された前記内部レジスタに対しては前記ビット長ｎ単位で部分毎にアクセスするようにした内部レジスタ回路に係り、特に、前記内部レジスタへの書き込みアクセスや読み出しアクセスをより容易に行えるようにした内部レジスタ回路に関する。
【０００２】
【従来の技術】
コンピュータシステムの中心となるＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ  ）は、主な構成として、ＡＬＵ（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃａｌ  ｕｎｉｔ  ）や、種々のレジスタ、又、全体のタイミングをコントロールする制御回路等を備える。又、前記レジスタには、例えば、前記ＡＬＵでの演算に用いられるアキュムレータや汎用レジスタ等と共に、プログラムカウンタがある。
【０００３】
又、一般的なコンピュータは、通常、ＣＰＵが種々の周辺装置、例えば主記憶装置や入出力装置等にアクセスする際には、所定のシステムバスが用いられている。このようなシステムバスによれば、コンピュータ内のプログラム命令やデータの伝送路を共通化することができ、コンピュータ内の周辺装置のインタフェイスの統一を図ることができる。更に、このようなシステムバスによれば、コンピュータハードウエア全体に占める、インタフェイス部の規模を小さくすることができる。
【０００４】
このようなシステムバスに接続される入出力装置は、動作や機能を設定するためのシステムバスを介してＣＰＵからアクセスされる、コントロールレジスタ（ＣＲ：ｃｏｎｔｒｏｌ  ｒｅｓｉｓｔｅｒ）等のレジスタを備えるものである。
【０００５】
例えば、ＭＰＵ（micro  processor  unit）を中心として構成されるマイクロコンピュータのシステムのため、ＭＰＵの周辺チップとして、ＰＩＯ（programmed input  output）チップやＵＳＡＲＴ（universal  synchronous  asynchronous  receiver  transmitter）チップが用意されている。更に、ＤＭＡ（direct  memory  access）コントローラチップ等も用意されている。
【０００６】
このようなＰＩＯチップ、ＵＳＡＲＴチップ、又ＤＭＡコントローラチップ等では、通常、動作パターンや機能を設定するための種々の内部レジスタを備えている。例えば、ＰＩＯチップでは、各Ｉ／Ｏ（ｉｎｐｕｔ  ／ｏｕｔｐｕｔ）ポートの信号の入出力方向やビット数等を設定するための内部レジスタを有する。又、ＵＳＡＲＴチップでは、シリアルデータからパラレルデータへ、あるいはパラレルデータからシリアルデータへ変換する際の、動作パターンや機能を設定するための内部レジスタを有している。例えばＵＳＡＲＴチップでは、シリアル通信を非同期式で行うかあるいは同期式で行うか、シリアル通信におけるデータ転送速度、又データ受信の際の割り込みの設定等を行うためのコントロールレジスタと称する一種の内部レジスタを備えている。
【０００７】
更に、ＤＭＡコントローラチップでは、ＤＭＡ転送の際の転送元アドレスを記憶するレジスタ（ソースアドレスレジスタ）や、転送先アドレスを記憶するレジスタ（デスティネーションアドレスレジスタ）等と共に、種々の動作パターンを設定するための内部レジスタを備えている。又、米国インテル社製「８２３７」チップ等のようにファースト・ラスト・フリップフロップと称するものを備えるものもある。
【０００８】
図３は、従来からのファースト・ラスト・フリップフロップを有するＤＭＡコントローラの内部レジスタ回路を中心としたブロック図である。
【０００９】
この図３において、ＤＭＡコントローラの特に内部レジスタ回路は、ソースアドレスレジスタＳＲとデスティネーションアドレスレジスタＤＲと、コントロールレジスタＣＲと、ファースト・ラスト・フリップフロップ１４Ｃと、上位／下位選択用セレクタ２４Ａ〜２４Ｃと、内部レジスタ選択デコーダ１８Ｃと、レジスタ選択用バッファ２２Ａ〜２２Ｃとにより構成されている。
【００１０】
まず１６ビット長の前記ソースアドレスレジスタＳＲは、ＤＭＡ転送の際の転送元のスタートアドレスを記憶する。該ソースアドレスレジスタＳＲは、それぞれ８ビット長のソースアドレスレジスタＳＲ０及びＳＲ１により構成される。前記ソースアドレスレジスタＳＲ０がＬＳＢ（ｌｅａｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ  ）側となり、前記ソースアドレスレジスタＳＲ１がＭＳＢ（ｍｏｓｔ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ）側となる。
【００１１】
又、１６ビット長の前記デスティネーションアドレスレジスタＤＲは、ＤＭＡ転送の際の、転送元のスタートアドレスを記憶する。該デスティネーションアドレスレジスタＤＲは、それぞれ８ビット長のデスティネーションアドレスレジスタＤＲ０及びＤＲ１によって構成される。前記デスティネーションアドレスレジスタＤＲ０がＬＳＢ側となり、前記デスティネーションアドレスレジスタＤＲ１がＭＳＢ側となる。
【００１２】
１６ビット長の前記コントロールレジスタＣＲは、ＤＭＡ転送の際の動作パターンや機能を設定するためのレジスタである。又、該コントロールレジスタＣＲには、ＤＭＡ転送の際の、転送されるデータの数（ワード数）も設定される。該コントロールレジスタＣＲについても、それぞれ８ビット長のコントロールレジスタＣＲ０及びＣＲ１によって構成される。
【００１３】
前記内部レジスタ選択デコーダ１８Ｃは、外部からのアドレスバスＡの信号をデコードする。即ち、前記アドレスバスＡの信号に従って、該内部レジスタ選択デコーダ１８Ｃは、前記レジスタ選択用バッファ２２Ａ〜２２Ｃ・・・のいずれか１つを選択する。
【００１４】
前記ファースト・ラスト・フリップフロップ１４Ｃには、この図３に示される内部レジスタのいずれか１つに対してアクセスする際にＨ状態となる、制御信号２６Ａが入力されている。該ファースト・ラスト・フリップフロップ１４Ｃは、該制御信号２６Ａの論理状態の立下がりにおいて、記憶されていた論理状態を反転する。
【００１５】
このようなＤＭＡコントローラの内部レジスタ回路によれば、前記制御信号２６Ａを入力しながら入力する前記アドレスバスＡからのアドレス信号によって、前記内部レジスタＳＲ、ＢＲ、ＣＲ・・・のいずれか１つを選択しアクセスすることができる。この際、第１回目のアクセスの際、前記ファースト・ラスト・フリップフロップ１４Ｃの出力はＬ状態とされ、前記内部レジスタＳＲ、ＤＲ、ＣＲ・・・のいずれかのＬＳＢ側の８ビット、即ち、前記内部レジスタＳＲ０、ＤＲ０、ＣＲ０・・・のいずれかを、制御信号２７Ａによって前記上位／下位選択用セレクタ２４Ａ〜２４Ｃを切り替えることでアクセスすることができる。
【００１６】
この後、２回目のアクセスの際は、前記制御信号２６Ａの直前の立下がりによって前記ファースト・ラスト・フリップフロップ１４Ｃへ記憶されていたＬ状態の論理状態は反転され、Ｈ状態となる。このため、この２回目のアクセスでは、８ビット長の前記データバスＤを介して、前記内部レジスタＳＲ、ＤＲ、ＣＲ・・・のＭＳＢ側、即ち、前記内部レジスタＳＲ１、ＤＲ１、ＣＲ１・・・のいずれかをアクセスすることができる。
【００１７】
このような内部レジスタ回路によれば、８ビット長の前記データバスＤにて、これよりも長い１６ビット長の前記内部レジスタＳＲ、ＤＲ、ＣＲ・・・へ容易にアクセスすることができる。
【００１８】
又、このような内部レジスタ回路へ割り付けられるアドレスについては、前記内部レジスタＳＲ、ＤＲ、ＣＲ・・・のＬＳＢ側の８ビットと、ＭＳＢ側の８ビットとは共通となっている。例えば、前記ソースアドレスレジスタＳＲ０のアドレスと、前記ソースアドレスレジスタＳＲ１のアドレスとは共通となっている。従って、このような内部レジスタ回路によれば、８ビット単位でアクセスされる各内部レジスタＳＲ０、ＤＲ０、ＣＲ０・・・ＳＲ１、ＤＲ１、ＣＲ１・・・へ割り付けられるアドレスの数を半分にすることができる。
【００１９】
例えば、前記ソースアドレスレジスタＳＲや、前記デスティネーションアドレスレジスタＤＲのビット長が前記データバスＤのビット長ｎに対してより長くされるものもあり、又内部レジスタの数がより増加されるものもある。例えば、前記ソースアドレスレジスタＳＲや前記デスティネーションアドレスレジスタＤＲとして、３２ビット長のものを用いる場合もある。このような場合で８ビット長単位でアクセスする際には、各内部レジスタに対して４個のアドレスを設定すると、全体として非常に多くのアドレスを割り当てる必要が生じてしまう。しかしながら、前記図３に示したような内部レジスタ回路によれば、Ｉ／Ｏアドレスを各内部レジスタのＬＳＢ側の１６ビットで１つ共用し、ＭＳＢ側の１６ビットで１つ共用するようにすれば、割り当てられるＩ／Ｏアドレスを削減することができる。又、連続してアクセスすることのある複数の内部レジスタを、同一のアドレス空間に割り付けることができる。
【００２０】
【発明が達成しようとする課題】
ここで、ＤＭＡコントローラの内部レジスタ回路において、原則的には、前記ソースアドレスレジスタＳＲのＬＳＢ側の更新とＭＳＢ側の更新とは、一般に一対でなされるものである。又、前記デスティネーションアドレスレジスタＤＲや前記コントロールレジスタＣＲについても同様である。
【００２１】
しかしながら、利用方法によっては、前記ソースアドレスレジスタＳＲや前記デスティネーションアドレスレジスタＤＲの、例えばＬＳＢ側の８ビットのみ更新すれば十分である場合もある。
【００２２】
このような場合には、前記図３に示される内部レジスタ回路においては、前記ファースト・ラスト・フリップフロップ１４Ｃに記憶される論理状態を初期化するための手順を行う必要があった。例えば、ＬＳＢ側の前記ソースアドレスレジスタＳＲ０へのみアクセスした後、やはりＬＳＢ側の前記デスティネーションアドレスレジスタＤＲ０へアクセスする場合には、前記ソースアドレスレジスタＳＲ１へのアクセスの後にＨ状態となった前記ファースト・ラスト・フリップフロップ１４Ｃの論理状態をＬ状態へ初期設定するため、例えば前述の「８２３７」チップ等では、「クリア・ファースト・ラスト・フリップフロップ・コマンド」を実行する必要があった。
【００２３】
このような「クリア・ファースト・ラスト・フリップフロップ・コマンド」を要するため、例えばＤＭＡ転送に先立って行うＤＭＡコントローラの設定プログラムが長くなってしまい、繁雑になってしまう。又、このように「クリア・ファースト・ラスト・フリップフロップ・コマンド」を用いるようにしたものでは、本来このコマンドを必要とするのに、このコマンドを落してしまうというミスが起りうる。この場合、予期しない内部レジスタに対してアクセスされてしまい、誤った動作を行わせてしまう。このようにコマンドを誤って落してしまった場合、このことを見出すことは比較的困難な場合がある。
【００２４】
本発明は、前記従来の問題点を解決するべくなされたもので、外部データバスのビット長ｎに比べて長いビット長の内部レジスタを少なくとも１つ含む複数の内部レジスタを有し、複数のこれら内部レジスタのいずれか１つをアドレス指定して選択し、又、前記ビット長ｎより長いビット長の選択された前記内部レジスタに対しては、前記ビット長ｎ単位で部分毎にアクセスするようにした内部レジスタ回路において、前記内部レジスタへの書き込みアクセスや読み出しアクセスをより容易に行えるようにした内部レジスタ回路を提供することを目的とする。
【００２５】
【課題を達成するための手段】
本発明は、外部データバスのビット長ｎに比べて長いビット長の内部レジスタを少なくとも１つ含む複数の内部レジスタを有し、複数のこれら内部レジスタのいずれか１つをアドレス指定して選択し、又、前記ビット長ｎより長いビット長の選択された前記内部レジスタに対しては前記ビット長ｎ単位で部分毎にアクセスするようにした内部レジスタ回路において、複数の前記内部レジスタのいずれか１つに対して行った直前のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）を記憶する直前アドレスレジスタと、該直前アドレスレジスタへ記憶されるアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）と、複数の前記内部レジスタのいずれか１つに対して行う今回のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）との一致を判定するアドレス比較器と、前記ビット長ｎより長いビット長の選択された前記内部レジスタの１つに対して前記ビット長ｎ単位で部分毎にアクセスする際に、アクセスする部分の位置を記憶し、且つ、アクセスする部分の位置を指定するインクリメンタリレジスタとを備え、前記比較器にて不一致と判定された場合、前記インクリメンタリレジスタをリセットするようにしたことにより、前記課題を達成したものである。
【００２６】
又、前記内部レジスタ回路において、前記内部レジスタの少なくとも１つが、何らかのアドレスを記憶するものであって、更に、前記ビット長ｎより長いビット長の選択された前記内部レジスタの１つに対して前記ビット長ｎ単位で部分毎にアクセスする際には、当該内部レジスタのＬＳＢ側から順にアクセスするようにされていることにより、前記課題を達成すると共に、例えばＤＭＡコントローラ等のアドレス設定に構成をより適合させ、アクセスの容易化をより図っている。
【００２７】
【作用】
前記図３に示した従来の内部レジスタ回路においては、ＬＳＢ側の内部レジスタへのみアクセスし、このＭＳＢ側の内部レジスタへはアクセスしない場合には、前記ファースト・ラスト・フリップフロップ１４Ｃを初期化する必要がある点に、本発明は着目し、なされている。
【００２８】
従来については、前述のように例えば「クリア・ファースト・ラスト・フリップフロップ・コマンド」等を用いている。ここで、本発明においては、このようなコマンドを用いることなく、前記ファースト・ラスト・フリップフロップ１４Ｃを自動的に初期化する構成を見出しなされたものである。
【００２９】
ここで、内部レジスタ回路において今回行うアクセスのアドレスと、この直前のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）とが一致する場合、前回のアクセスはＬＳＢ側の内部レジスタに対するアクセスであって、今回のアクセスはこのＭＳＢ側の内部レジスタに対するアクセスとなるのが一般的である。一方、今回のアクセスのアドレスに対して、直前のアクセスのアドレス又はアクセスの種類（読み出しアクセスあるいは書き込みアクセス）が不一致の場合、前記ファースト・ラスト・フリップフロップ１４Ｃへ記憶される論理状態の意味がなくなる。このため、このような不一致の場合、２回目のアクセスに先立って前記ファースト・ラスト・フリップフロップ１４Ｃを初期化する必要があるのが一般的である。
【００３０】
このような点に着目し、本発明においては、内部レジスタ回路中の複数の前記内部レジスタの１つに対して行った、直前のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）を、直前アドレスレジスタにて記憶するようにしている。又、今発明においては、該直前アドレスレジスタへ記憶されるアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）と、複数の前記内部レジスタの１つに対して行う今回のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）との一致を、比較器にて判定するようにしている。該比較器にて不一致と判定された場合、本発明においては前記ファースト・ラスト・フリップフロップ１４Ｃをリセット（初期化）するようにしている。
【００３１】
このように、本発明においては、直前にアクセスしたアドレスと異なる内部レジスタに対して今回アクセスを行う場合、あるいは直前のアクセスと異なる種類のアクセスを行う場合には、前記ファースト・ラスト・フリップフロップ１４Ｃが自動的にリセット（初期化）される。この、直前のアクセスと異なる種類のアクセスを行う場合とは、前回に読み出しアクセスを行って今回には書き込みアクセスを行う場合、又は、前回に書き込みアクセスを行って今回には読み出しアクセスを行う場合である。従って、前述のように前記ファースト・ラスト・フリップフロップ１４Ｃが自動的にリセットされるため、前記図３の従来のような「クリア・ファースト・ラスト・フリップフロップ・コマンド」の必要がなく、内部レジスタへの書き込みアクセスや読み出しアクセスをより容易に行うことが可能である。
【００３２】
なお、前記図３の従来のものでは、１６ビット長の前記ソースアドレスレジスタＳＲ等は、８ビット単位で２回に分けてアクセスするようにされている。しかしながら、本発明はこのようなものに限定されるものではなく、２回以上に分けて順次アクセスするようなものであってもよい。例えば３２ビット長の内部レジスタを、８ビット単位で４回に分け順次アクセスするようなものであってもよい。このような場合には、前記ファースト・ラスト・フリップフロップ１４Ｃに対応するものとして、少なくとも、データバスのビット長単位で順次アクセスする回数以上の状態を区別して記憶することができるカウンタを備える必要がある。
【００３３】
例えば後述する第２実施例の、部分アドレスレジスタ１４ａやインクリメンタ１４ｂのようなものを備える必要がある。このようなものであっても、本発明を適用し、前記直前アドレスレジスタへ記憶されるアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）と、複数の前記内部レジスタの１つに対して行う今回のアクセスのアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）とが不一致の場合、このような部分アドレスレジスタ１４ａの初期化を行えばよい。
【００３４】
【実施例】
以下、図を用いて本発明の実施例を詳細に説明する。
【００３５】
図１は、ＤＭＡコントローラに用いられる本発明が適用された内部レジスタ回路の第１実施例のブロック図である。
【００３６】
この図１に示される如く、本第１実施例の内部レジスタ回路は、内部レジスタ群３Ａと、内部レジスタ選択デコーダ１８Ａと、アドレス比較器１６とによって構成されている。又、前記内部レジスタ群３Ａは、ソースアドレスレジスタＳＲと、デスティネーションアドレスレジスタＤＲと、コントロールレジスタＣＲと、Ｉ／Ｏアクセス数値化回路５と、直前アドレスレジスタ１２と、ファースト・ラスト・フリップフロップ１４Ａとにより構成されている。
【００３７】
まず、前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲ及び前記コントロールレジスタＣＲについては、それぞれ、前記図３の従来のものと同様に構成されている。
【００３８】
前記Ｉ／Ｏアクセス数値化回路５には、ＩＯ読み出し信号ＩＯＲＤ及びＩＯ書き込み信号ＩＯＷＲが入力されている。前記ソースアドレスレジスタＳＲや、前記デスティネーションアドレスレジスタＤＲや、前記コントロールレジスタＣＲ等に対する読み出しアクセスの際には前記ＩＯ読み出し信号ＩＯＲＤがＨ状態となり、書き込みアクセスの際には前記ＩＯ書き込み信号ＩＯＷＲがＨ状態となる。又、該Ｉ／Ｏアクセス数値化回路５は、読み出しアクセスの際には“０（Ｌ状態）”の信号Ｂを出力し、書き込みアクセスの際には“１（Ｈ状態）”の該信号Ｂを出力する。
【００３９】
又、前記直前アドレスレジスタ１２は、前記アドレスバスＡを経て外部から入力される、前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲあるいは前記コントロールレジスタＣＲのいずれか１つを選択する、直前のＩ／Ｏアクセスのアドレスを記憶すると共に、該直前のＩ／Ｏアクセスの種類を数値化する前記Ｉ／Ｏアクセス数値化回路５から入力される、前記信号Ｂの論理状態を記憶する。ここで、該信号Ｂの論理状態を記憶することで、直前のＩ／Ｏアクセスの種類を示す論理状態（ビットデータ）が記憶される。
【００４０】
前記ファースト・ラスト・フリップフロップ１４Ａは、前記ファースト・ラスト・フリップフロップ１４Ｃに相当するものである。該ファースト・ラスト・フリップフロップ１４Ａへ記憶される論理状態によって、前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲあるいは前記コントロールレジスタＣＲのいずれか１つに対してアクセスする際、該アクセスがＬＳＢ側の８ビットに対してか、あるいはＭＳＢ側の８ビットに対してかを選択するものである。
【００４１】
具体的には、前記ファースト・ラスト・フリップフロップ１４ＡへＬ状態が記憶される初期状態では、前記アドレスバスＡから入力されるアドレス信号に応じ、前記ソースアドレスレジスタＳＲ０、前記デスティネーションアドレスレジスタＤＲ０あるいは前記コントロールレジスタＣＲ０のいずれか１つを、前記内部レジスタ選択デコーダ１８Ａによって選択する。一方、前記ファースト・ラスト・フリップフロップ１４ＡへＨ状態が記憶される場合、前記ソースアドレスレジスタＳＲ１、前記デスティネーションアドレスレジスタＤＲ１あるいは前記コントロールレジスタＣＲ１のいずれか１つを、前記内部レジスタ選択デコーダ１８Ａによって選択する。
【００４２】
ここで、前記直前アドレスレジスタ１２は、このように前記アドレスバスＡから入力されるアドレス信号及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）を記憶する。該直前アドレスレジスタ１２の記憶するアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）の更新のタイミングは、前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲあるいは前記コントロールレジスタＣＲへのアクセスの直後で、且つ、次のアクセス以前のタイミングである。具体的には、前記制御信号２６Ａの立下がりのタイミングである。
【００４３】
又、前記アドレス比較器１６は、前記直前アドレスレジスタ１２へ記憶されるアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）と、今回のアクセスに際して入力される、前記アドレスバスＡのアドレス信号のアドレス及びアクセスの種類（読み出しアクセスあるいは書き込みアクセス）とを比較する。該比較の際、不一致と判定された場合、該アドレス比較器１６は、制御信号２６Ｂによって、前記ファースト・ラスト・フリップフロップ１４Ａに記憶される論理状態を初期化する。即ち、該ファースト・ラスト・フリップフロップ１４Ａへ記憶される論理状態をＬ状態に初期化する。このように不一致と判定される場合は、Ｉ／Ｏアクセスのアドレスの不一致、又はＩ／Ｏアクセスの種類（読み出しアクセスあるいは書き込みアクセスという、アクセスの種類）の不一致の、少なくともいずれか一方の不一致の場合である。
【００４４】
このように、本第１実施例によれば、ＬＳＢ側の前記ソースアドレスレジスタＳＲ０、前記デスティネーションアドレスレジスタＤＲ０あるいは前記コントロールレジスタＣＲ０のいずれかの内部レジスタにアクセスした後、これとは異なる別の内部レジスタのＬＳＢ側の前記ソースアドレスレジスタＳＲ０、前記デスティネーションアドレスレジスタＤＲ０あるいは前記コントロールレジスタＣＲ０へアクセスする場合、あるいは同一のアドレスへのアクセスながら前回と異なるアクセスの種類（読み出しアクセスの後の書き込みアクセス、又はその逆）でアクセスする場合、前記アドレス比較器１６からの前記制御信号２６Ｂによって、前記ファースト・ラスト・フリップフロップ１４Ａが自動的に初期化される。このため、前記図３に示した従来のもののように、例えば「クリア・ファースト・ラスト・フリップフロップ・コマンド」等は不必要となる。従って、本第１実施例によれば、本発明を適用し、内部レジスタへの書き込みアクセスや読み出しアクセスをより容易に行うことができる。
【００４５】
図２は、ＤＭＡコントローラに用いられる本発明が適用された内部レジスタ回路の第２実施例のブロック図である。
【００４６】
この図２に示されるように、本第２実施例については、前記ソースアドレスレジスタＳＲは、それぞれが８ビット長のソースアドレスレジスタＳＲ０〜ＳＲ２によって構成されている。又、前記デスティネーションアドレスレジスタＤＲは、それぞれが８ビット長のデスティネーションアドレスレジスタＤＲ０〜ＤＲ２によって構成される。又、前記図３の従来の前記ファースト・ラスト・フリップフロップ１４Ｃに対応するものとして、あるいは前記第１実施例の前記ファースト・ラスト・フリップフロップ１４Ａに対応するものとして、部分アドレスレジスタ１４ａ及びインクリメンタ１４ｂにて構成されるインクリメンタリレジスタを備える。
【００４７】
又、内部レジスタ選択デコーダ１８Ｂは、前記第１実施例の前記内部レジスタ選択デコーダ１８Ａに相当するものである。該内部レジスタ選択デコーダ１８Ｂは、前記アドレスバスＡにて外部から入力されるアドレス信号と、前記部分アドレスレジスタ１４ａから入力される部分アドレスＡ３とに従って、前記ソースアドレスレジスタＳＲ０〜ＳＲ２のいずれか１つ、前記デスティネーションアドレスレジスタＤＲ０〜ＤＲ２のいずれか１つ、あるいは前記コントロールレジスタＣＲ０、ＣＲ１のいずれか一方を選択する。
【００４８】
このような本第２実施例において、前記内部レジスタ選択デコーダ１８Ｂは、“０”〜“２”の値をとる前記アドレスバスＡからの２本のアドレス線によるアドレス信号に応じて、前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲ、あるいは前記コントロールレジスタＣＲのいずれか１つを選択する。前記アドレスバスＡから“０”のアドレスが入力される場合、前記内部レジスタ選択デコーダ１８Ｂは、前記ソースアドレスレジスタＳＲ０〜ＳＲ２のいずれか１つを選択する。“１”が前記アドレスバスＡから入力される場合、該内部レジスタ選択デコーダ１８Ｂは、前記デスティネーションアドレスレジスタＤＲ０〜ＤＲ２のいずれか１つを選択する。更に、該内部レジスタ選択デコーダ１８Ｂは、前記アドレスバスＡから“２”が入力される場合、前記コントロールレジスタＣＲ０あるいはＣＲ１を選択する。
【００４９】
ここで、前記部分アドレスレジスタ１４ａの初期値は“０”である。該部分アドレスレジスタ１４ａは、前記ソースアドレスレジスタＳＲ０〜ＳＲ２いずれか、あるいは、前記デスティネーションアドレスレジスタＤＲ０〜ＤＲ２のいずれか１つ、あるいは、前記コントロールレジスタＣＲ０、ＣＲ１へアクセスする毎に、その値が順次インクリメント（値を“１”だけ増加）する。このインクリメントは、前記インクリメンタ１４ｂによって行われる。
【００５０】
ここで、前記内部レジスタ選択デコーダ１８Ｂは、前記アドレスバスＡにて外部から入力されるアドレス信号にて選択した前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲ、あるいは前記コントロールレジスタＣＲの、これら内部レジスタの選択されたものについて、ＬＳＢ側部分、中央部分、あるいはＭＳＢ側部分のいずれか１つを選択する。
【００５１】
例えば、前記アドレスバスＡのアドレスが“１”で前記部分アドレスレジスタ１４ａへ記憶され出力されるアドレスＡ３が“１”の場合、前記デスティネーションアドレスレジスタＤＲ１が選択される。あるいは、前記アドレスバスＡのアドレスが“２”であって、且つ、前記アドレスＡ３が“０”の場合、前記コントロールレジスタＣＲ０が選択される。又、前記アドレスＡ３が２であれば、前記アドレスバスＡのアドレスに従って、前記レジスタＳＲ２又はＤＲ２が選択される。
【００５２】
以下、具体例を用い、本第２実施例の作用を説明する。
【００５３】
まず、前記ソースアドレスレジスタＳＲ０〜ＳＲ２の３バイトに対して、１バイトずつ順次読み出しアクセスする場合を考える。
【００５４】
ここで、前記部分アドレスレジスタ１４Ａに記憶される初期値は“０”とする。このとき、前記アドレスバスＡへ“０”のアドレスを入力し読み出しアクセスを行うと、前記ソースアドレスレジスタＳＲ０が選択され、読み出しアクセスすることができる。該アクセスの後に、前記部分アドレスレジスタ１４ａへ記憶されるアドレスは、前記インクリメンタ１４ｂにてインクリメントされる。
【００５５】
続いて前記アドレスバスＡから“０”を入力しながら読み出しアクセスをすると、前記部分アドレスレジスタ１４ａの値は“１”であるため、今度は前記ソースアドレスレジスタＳＲ１が選択され、読み出しアクセスできる。次に、前記アドレスバスＡへ“２”を入力しながらアクセスすると、今度は前記部分アドレスレジスタ１４ａの値は“２”となっているため、前記ソースアドレスレジスタＳＲ２の選択がなされ、読み出しアクセスができる。なお、この後、前記部分アドレスレジスタ１４ａの値は“０”へリセットされる。具体的には、該部分アドレスレジスタ１４ａは、記憶される値が“２”で且つ前記制御信号２６Ａが立下がると、このタイミングでリセットされ、この記憶する値が“０”となる。
【００５６】
ここで、以上の前記ソースアドレスレジスタＳＲ０〜ＳＲ２に対する説明は読み出しアクセスについてであるが、同ソースアドレスレジスタＳＲ０〜ＳＲ２に対する書き込みアクセスについても同様である。即ち、以上のこの説明の「読み出しアクセス」を「書き込みアクセス」と読み換えたものとなる。
【００５７】
次に、前記ソースアドレスレジスタＳＲ０のアクセスの後に、前記デスティネーションアドレスレジスタＤＲ０をアクセスする場合は次のとおりである。
【００５８】
即ち、まず前記部分アドレスレジスタ１４ａの値が“０”であるとする。ここで、前記アドレスバスＡから“０”のアドレスを入力すると、前記ソースアドレスレジスタＳＲ０が前記内部レジスタ選択デコーダ１８Ｂ等によって選択され、アクセスできる。
【００５９】
この後、前記デスティネーションアドレスレジスタＤＲ０をアクセスすべく、前記アドレスバスＡから“１”のアドレスを入力する。このとき、この“１”のアドレスは、直前のアクセスのアドレス、即ち前記ソースアドレスレジスタＳＲ０に対して行ったアクセスの際のアドレス“０”とは異なる。このため、前記アドレス比較器１６は、このようなアドレスの不一致を検出し、前記制御信号２６Ｂによって前記部分アドレスレジスタ１４ａの値を“０”にリセットする。
【００６０】
このため、このような今回のアクセスの際には、前記アドレスバスＡの“１”と前記部分アドレスレジスタ１４ａに記憶される“０”の部分アドレスＡ３に従って、前記内部レジスタ選択デコーダ１８Ｂは前記デスティネーションアドレスレジスタＤＲ０を選択する。この今回のアクセスの際には、前記部分アドレスレジスタ１４ａ、即ち前記図３に示した従来の前記ファースト・ラスト・フリップフロップ１４Ｃに対応するもののリセットは自動的に行われるため、従来のような「クリア・ファースト・ラスト・フリップフロップ・コマンド」の実行は不要となる。
【００６１】
次に、前記ソースアドレスレジスタＳＲ０の書き込みアクセスの後に、該ソースアドレスレジスタＳＲ０を読み出しアクセスする場合は次のとおりである。
【００６２】
即ち、まず前記部分アドレスレジスタ１４ａの値が“０”であるとする。ここで、前記アドレスバスＡから“０”のアドレスを入力すると、前記ソースアドレスレジスタＳＲ０が前記内部レジスタ選択デコーダ１８Ｂ等によって選択され、書き込みアクセスできる。
【００６３】
この後、該ソースアドレスレジスタＳＲ０に対して読み出しアクセスすべく、前記アドレスバスＡから“０”のアドレスを入力する。このとき、このアクセスの種類は読み出しアクセスであり、直前のアクセスの種類、即ち書き込みアクセスとは異なる。このため、前記アドレス比較器１６は、このようなアクセスの種類の不一致を検出し、前記制御信号２６Ｂによって前記部分アドレスレジスタ１４ａの値を“０”にリセットする。
【００６４】
このため、このような今回のアクセスの際には、アクセスの種類の不一致の検出に従って、前記内部レジスタ選択デコーダ１８Ｂは前記ソースアドレスレジスタＳＲ０を選択する。この今回のアクセスの際には、前記部分アドレスレジスタ１４ａ、即ち前記図３に示した従来の前記ファースト・ラスト・フリップフロップ１４Ｃに対応するもののリセットは自動的に行われるため、従来のような「クリア・ファースト・ラスト・フリップフロップ・コマンド」の実行は不要となる。
【００６５】
以上説明したとおり、本第２実施例についても、本発明を適用し、内部レジスタ、即ち前記ソースアドレスレジスタＳＲ、前記デスティネーションアドレスレジスタＤＲ又前記コントロールレジスタＣＲへの書き込みアクセスや読み出しアクセスをより容易に行えるようにすることができる。又、本第２実施例については、前記第１実施例と異なり、前記ソースアドレスレジスタＳＲや前記デスティネーションアドレスレジスタＤＲが特に３バイト構成となっている。このようなものに対しても、本第２実施例については、前記部分アドレスレジスタ１４ａ及び前記インクリメンタ１４ｂで構成される本発明を適用したインクリメンタリレジスタを用いて対応することができている。
【００６６】
なお、本発明は、前記第１実施例や前記第２実施例の如く、ＤＭＡコントローラに用いられる内部レジスタ回路に限定されるものではない。しかしながら、このようなＤＭＡコントローラに用いられる内部レジスタ回路や、あるいは、種々のタイマやカウンタ等に内蔵される内部レジスタ回路にはより有効である。これは、ＤＭＡコントローラやタイマ、又カウンタ等は、データバス等を介してアクセスするビット長よりも長い内部レジスタを備えているのが一般的であるためである。又、このような内部レジスタは、例えばアドレス等が記憶されるものであり、このようにビット長が長い内部レジスタについては、所定のビット長毎に、順次アクセスすることが多いためである。
【００６７】
ここで、このように所定のビット長毎に１つの内部レジスタに対して順次アクセスする場合、当該内部レジスタのＬＳＢ側から順次アクセスするように構成することが好ましい。これは、所定のビット長単位でアクセスされる内部レジスタについては、例えばその一部分のみ更新する場合、ＭＳＢ側のものよりもＬＳＢ側のものの方がより更新する頻度が高いためである。
【００６８】
又、前記図３に示した従来の内部レジスタ回路等、前述のように「クリア・ファースト・ラスト・フリップフロップ・コマンド」を用いるようにしたものでは、本来このコマンドを必要とするのに、このコマンドを落してしまうというミスがある。この場合、予期しない内部レジスタに対してアクセスされていしまい、誤った動作を行わせてしまう。このようにコマンドを誤って落してしまった場合、このことを見出すことは比較的困難な場合がある。しかしながら、本発明にあってはこのようなコマンドを用いないため、プログラムの信頼性をより向上することができるという利点もある。
【００６９】
更に、本発明によれば、このように「クリア・ファースト・ラスト・フリップフロップ・コマンド」がないため、内部レジスタへデータを設定するためのプログラムを短縮することもできる。例えば、前記ソースアドレスレジスタＳＲや前記デスティネーションアドレスレジスタＤＲのＬＳＢ側の、前記ソースアドレスレジスタＳＲ０や前記デスティネーションアドレスレジスタＤＲ０へのみアクセスすることを多数行うことも考えられる。この場合、本発明によれば、従来その都度行っていた「クリア・ファースト・ラスト・フリップフロップ・コマンド」が不要となるため、プログラムの長さを非常に短縮することが可能である。
【００７０】
一般に、ＤＭＡコントローラでは、転送元あるいは転送先となるメモリ空間は、ある程度限られた範囲となっているものである。従って、転送元アドレスや転送先アドレスの変更範囲も限られている。即ち、ＭＳＢ側の前記ソースアドレスレジスタＳＲ１や前記デスティネーションアドレスレジスタＤＲ１の更新の頻度は比較的少ないものである。従って、ＬＳＢ側の前記ソースアドレスレジスタＳＲ０や前記デスティネーションアドレスレジスタＤＲ０へのみのアクセスが頻繁に生じると考えられる。このような場合には、本発明はより有効であり、内部レジスタへアクセスするためのプログラムをより容易に行うことが可能であり、又このようなプログラムがより一層短縮される。又、このような内部レジスタへのアクセスのプログラムの実行時間の短縮をも図ることが可能である。
【００７１】
【発明の効果】
以上説明したとおり、本発明によれば、内部レジスタへの書き込みアクセスや読み出しアクセスをより容易に行うことができ、更に、このようなアクセスのためのプログラムの簡略化や、プログラム長の短縮、プログラム実行時間の短縮等を図ることができるという優れた効果を得ることができる。
【図面の簡単な説明】
【図１】ＤＭＡコントローラ等に用いられる本発明が適用された内部レジスタ回路の第１実施例のブロック図
【図２】ＤＭＡコントローラ等に用いられる本発明が適用された内部レジスタ回路の第２実施例のブロック図
【図３】ＤＭＡコントローラ等に用いられる従来の内部レジスタ回路のブロック図
【符号の説明】
３Ａ、３Ｂ…内部レジスタ群
１２…直前アドレスレジスタ
１４Ａ、１４Ｃ…ファースト・ラスト・フリップフロップ
１４ａ…部分アドレスレジスタ
１４ｂ…インクリメンタ
１６…アドレス比較器
１８Ａ〜１８Ｃ…内部レジスタ選択デコーダ
２２Ａ〜２２Ｃ…レジスタ選択用バッファ
２４Ａ〜２４Ｃ…上位／下位選択用セレクタ
２６Ａ、２６Ｂ、２７Ａ…制御信号
Ａ…アドレスバス
ＣＲ…コントロールレジスタ
Ｄ…データバス
ＤＲ…デスティネーションアドレスレジスタ
ＳＲ…ソースアドレスレジスタ
【図１】
0003611049.tif 000002
【図２】
0003611049.tif 000003
【図３】
0003611049.tif 000004