(57)【要約】【課題】  集積回路の内部レジスタにアクセスすることによりカウントを行なうタイマ回路において、カウントの精度を高める。【解決手段】  演算処理装置と集積回路とを備えたタイマ回路であって、前記集積回路は、カウンタ用レジスタと、前記カウンタ用レジスタに記録された値のカウントを行なうカウント手段と、前記カウンタ用レジスタへの書き込み要求に応答するアクノリッジ手段とを備え、前記演算処理装置は、カウントすべき時間に対応したカウント値を設定するカウント値設定手段と、前記集積回路に対して、前記設定されたカウント値の前記カウンタ用レジスタへの書き込み要求を行ない、その応答を待つ計時手段とを備えることを特徴とするタイマ回路。【選択図】  図１
2008077393.tif 000002
【特許請求の範囲】
【請求項１】
演算処理装置と集積回路とを備えたタイマ回路であって、
前記集積回路は、
カウンタ用レジスタと、前記カウンタ用レジスタに記録された値のカウントを行なうカウント手段と、前記カウンタ用レジスタへの書き込み要求に応答するアクノリッジ手段とを備え、
前記演算処理装置は、
カウントすべき時間に対応したカウント値を設定するカウント値設定手段と、
前記集積回路に対して、前記設定されたカウント値の前記カウンタ用レジスタへの書き込み要求を行ない、その応答を待つ計時手段とを備えることを特徴とするタイマ回路。
【請求項２】
請求項１に記載のタイマ回路であって、
前記集積回路のカウント手段は、集積回路の動作クロックにしたがって前記カウンタ用レジスタに記録された値をカウントし、
前記演算処理装置のカウント値設定手段は、カウントすべき時間を前記クロック周期で割ることにより前記カウント値を設定することを特徴とするタイマ回路。
【請求項３】
請求項２に記載のタイマ回路であって、
前記演算処理装置のカウント値設定手段は、前記設定されたカウント値から、さらに、前記カウンタ用レジスタへの書き込みに要するクロック数を引くことにより前記カウント値を設定することを特徴とするタイマ回路。
【請求項４】
請求項１に記載のタイマ回路であって、
前記集積回路は、カウント中に前記演算処理装置に対する別個の割込が発生した場合には、前記割込を優先して処理することを特徴とするタイマ回路。
【請求項５】
請求項１〜４のいずれか１項に記載のタイマ回路を備えた印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タイマ回路に係り、特に、集積回路の内部レジスタにアクセスすることによりカウントを行なうタイマ回路に関する。
【背景技術】
【０００２】
情報処理装置、印刷装置等の電子機器は、機器全体の制御を行なうための制御装置を備えている。制御装置では、ＣＰＵや特定用途向きに開発された集積回路であるＡＳＩＣ等を中心に種々の処理が行なわれるが、その処理に応じた分解能で精密に時間をカウントする機能が要求される場合がある。
【０００３】
時間のカウントは種々の手法が用いられているが、例えば、数ｍｓｅｃのオーダの分解能であれば、ＣＰＵがハードウェアで構成されたカウンタを動作させて、カウントアップ割込を待つという手法を用いることができる。しかしながら、この方法は、割込処理のためのオーバーヘッドが発生するため、ｍｓｅｃオーダより細かい分解能が要求されるカウントには不向きである。
【０００４】
より細かい分解能が要求される時間のカウントには、ＣＰＵをＡＳＩＣ（Application Specific Integrated Circuit）内部のレジスタに連続アクセスさせる手法がある。
【０００５】
ＣＰＵをＡＳＩＣ内部のレジスタに連続アクセスさせる手法では、ＣＰＵがＡＳＩＣにアクセス要求を送信し、ＡＳＩＣからアクセス結果が帰ってくるまでに必要なクロック数が既知であることを利用して、カウントしたい時間に対応した回数分だけＡＳＩＣの内部レジスタへのアクセスを繰り返すことで時間をカウントすることができる。
【０００６】
ここで、連続アクセスの回数は、カウントしたい時間をクロック周期と１回のアクセスに必要なクロック数との積で割ることにより算出される。
【０００７】
なお、タイマ回路に関する一般的な技術は、例えば、特許文献１に記載されている。
【特許文献１】特開平５−２３３０９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ＣＰＵがＡＳＩＣのレジスタに連続アクセスする際には、図５に示すようなサイクルを繰り返すことになる。なお、カウントのための連続アクセスは、データの破壊を防ぐため一般にリード命令で行われる。
【０００９】
すなわち、ＣＰＵ１２０がＡＳＩＣ１３０の内部制御回路１３１を介して、レジスタ１３２へのリード要求をし、ＡＳＩＣ１３０がレジスタ１３２からデータを読み出してＣＰＵ１２０にアクノリッジ信号を返すサイクルＣ１（図５中の実線の矢印）と、ＣＰＵ１２０が次のリード要求を行なうサイクルＣ２（図５中の点線）とが、必要回数繰り返されることになる。
【００１０】
ここで、Ｃ１のサイクルは、ＡＳＩＣ１３０の内部アクセス処理であるから、処理に要するクロック数は保証される。しかしながら、ＣＰＵ１２０がＡＳＩＣ１３０からアクノリッジ信号を受け取ってから次のリード要求を行なうＣ２のサイクルに要するクロック数は、ＣＰＵ１２０の処理状況に左右される。このため、Ｃ２のサイクルに必要な最小のクロック数よりも実際のクロック数が多くなる場合がある。
【００１１】
カウントのために、Ｃ１のサイクルとＣ２のサイクルとを繰り返すと、余分なクロック数が累積し、カウントしたい時間より長くカウントされてしまうことがあり、必要な精度が得られないおそれがあった。
【００１２】
本発明は、集積回路の内部レジスタにアクセスすることによりカウントを行なうタイマ回路において、カウントの精度を高めることを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため本発明によれば、
演算処理装置と集積回路とを備えたタイマ回路であって、
前記集積回路は、
カウンタ用レジスタと、前記カウンタ用レジスタに記録された値のカウントを行なうカウント手段と、前記カウンタ用レジスタへの書き込み要求に応答するアクノリッジ手段とを備え、
前記演算処理装置は、
カウントすべき時間に対応したカウント値を設定するカウント値設定手段と、
前記集積回路に対して、前記設定されたカウント値の前記カウンタ用レジスタへの書き込み要求を行ない、その応答を待つ計時手段とを備えるタイマ回路が提供される。
【００１４】
本発明では、正確なカウントが保証されない演算処理装置から集積回路への連続アクセス処理が行われないため、カウントの精度を高めることができる。
【００１５】
具体的には、前記集積回路のカウント手段は、集積回路の動作クロックにしたがって前記カウンタ用レジスタに記録された値をカウントし、
前記演算処理装置のカウント値設定手段は、カウントすべき時間を前記クロック周期で割ることにより前記カウント値を設定するようにすることができる。
【００１６】
あるいは、前記演算処理装置のカウント値設定手段は、前記設定されたカウント値から、さらに、前記カウンタ用レジスタへの書き込みに要するクロック数を引くことにより前記カウント値を設定するようにしてもよい。
【００１７】
なお、カウント処理により他の割込処理が滞ることを防ぐために、カウント中に前記演算処理装置に対する別個の割込が発生した場合には、前記割込を優先して処理するようにしてもよい。
【００１８】
上記のタイマ回路は、例えば、印刷装置のコントローラ等に適用することができる。
【発明を実施するための最良の形態】
【００１９】
本発明の実施例について図面を参照して説明する。
【００２０】
図１は、本実施例のタイマ回路の構成を示すブロック図である。本図に示すようにタイマ回路１０は、演算処理装置であるＣＰＵ２０とＡＳＩＣ３０とを備えて構成される。タイマ回路１０は、例えば、印刷装置等の電子機器の制御装置（コントローラ）の１部として機能することができる。ＡＳＩＣ３０は、特定用途向きに開発された集積回路であるが、本発明ではその用途は限定されない。
【００２１】
なお、個別に図示していないが、ＣＰＵ２０とＡＳＩＣ３０とは、データ信号、アドレス信号、コマンド信号、アクノリッジ信号等の通信を行なうための各種信号線で接続されている。
【００２２】
ＡＳＩＣ３０は、図示しないクロックに同期して動作し、内部の回路と外部とのインタフェースの役割を担うとともに内部の回路の制御を行なう内部制御回路３１を備えている。また、ＡＳＩＣ３０は、本実施例の特徴的な構成として、カウント用レジスタ３２およびカウンタ３３を備えている。
【００２３】
カウント用レジスタ３２は、カウントする値を設定するために設けられたレジスタである。ＣＰＵ２０は、本実施例のカウントを行なう際に、ＡＳＩＣ３０と通信を行ない、カウントする時間に対応した値αをカウント用レジスタ３２にセットする。
【００２４】
ここで、αは、カウントする時間をＡＳＩＣ３０の動作クロック周期で割った値とすることができる。すなわち、ＡＳＩＣ３０のカウンタ３３がクロックをα回カウントしたものがＣＰＵ２０がカウントする時間となる。ただし、ＣＰＵ２０とＡＳＩＣ３０との通信に必要なクロック数を考慮してαを定めるようにしてもよい。この場合、カウントする時間をクロック周期で割った値から、ＣＰＵ２０とＡＳＩＣ３０との通信に必要なクロック数を引くことでαを求めることができる。
【００２５】
カウンタ３３は、クロックに同期して動作するカウンタであり、カウント用レジスタ３２にセットされた値αをカウントする。カウンタ３３がセットされた値αのカウントを終えると、ＡＳＩＣ３０は、カウント用レジスタ３２へのアクセス要求への応答として、ＣＰＵ２０にアクノリッジ信号を返す。
【００２６】
すなわち、本実施例では、ＣＰＵ２０がある時間ｔをカウントをする場合に、時間ｔとクロック周期とに基づいて定められるカウント数αをＡＳＩＣ３０のカウント用レジスタ３２に書き込む。すると、ＡＳＩＣ３０のカウンタ３３がαをカウントし、カウントアップするとＣＰＵ２０にアクノリッジ信号を返す。このため、本実施例においてＣＰＵ２０は、カウント数α設定機能と、設定されたαのカウント用レジスタへのライト要求を行ないアクノリッジ信号の応答を待つ計時機能とを有している。これらの機能はソフトウェア的あるいはハードウェア的に実現することができる。
【００２７】
このように、本実施例では、カウントに際し、ＣＰＵ２０からＡＳＩＣ３０へのアクセスは１回で済む。つまり、正確な時間が保証されないＣＰＵ２０からＡＳＩＣ３０への連続アクセス処理が行われないため、カウンタ３３がαをカウントする時間は、時間ｔにほぼ等しくなる。このため、ＣＰＵ２０は、高い精度で時間ｔを計測することができる。なお、カウンタ３３がαをカウントしている間、ＣＰＵ２０は、ＡＳＩＣ３０からの応答待ちの状態にある。
【００２８】
図２は、本実施例のＡＳＩＣ３０の動作を説明するための状態遷移図である。ここでは、ＣＰＵ２０とのやり取りに注目して説明する。
【００２９】
ＡＳＩＣ３０は、初期状態として、ＣＰＵ２０からのリクエストを待っているＩｄｌｅ状態にある。
【００３０】
Ｉｄｌｅ状態のＡＳＩＣ３０は、ＣＰＵ２０からのリクエストが発生すると（図２(1)）、リクエスト内容に応じたレジスタへのチップセレクト状態になる（ＳＴ１）。
【００３１】
そして、リード命令の場合（図２(2)）には、レジスタ出力状態（ＳＴ２）となり、データをリードし、つぎのクロックでＣＰＵへアクノリッジ出力状態（ＳＴ３）となる。
【００３２】
一方、ライト命令の場合（図２(3)）には、レジスタ入力状態（ＳＴ２’）となり、データをライトし、つぎのクロックでＣＰＵへアクノリッジ出力状態（ＳＴ３）となる。
【００３３】
ただし、ライト命令がカウント用レジスタ３２に対する値αの書き込みの場合（図２(4)）には、ＡＳＩＣ３０は、αクロックカウント状態（ＳＴ−Ｎｅｗ）となる。そして、カウントアップすると（図２(5)）、ＣＰＵへアクノリッジ出力状態（ＳＴ３）となる。
【００３４】
なお、αのカウント中に、ＡＳＩＣ３０内で、他の処理によりＣＰＵ２０への割込が発生する場合がある。このような場合には、カウントを中止してＣＰＵ２０への割込を優先するようにすることができる（図２(5)）。これにより、カウント処理によってＣＰＵ２０への割込処理が滞ることを防ぐことができる。
【００３５】
図３は、本実施例のタイマ回路１０のカウント動作を説明するためのフロー図である。
【００３６】
ＣＰＵ２０は、時間ｔをカウントする場合に、時間ｔに応じてαを設定する（Ｓ１０１）。上述のようにαは、時間ｔに対応するクロックカウント数であり、カウントする時間ｔをクロック周期で割った値とすることができる。このとき、ＣＰＵ２０とＡＳＩＣ３０との通信に必要なクロック数、その他のオーバーヘッドを考慮してαを設定するようにしてもよい。
【００３７】
αを設定すると、ＣＰＵ２０は、ＡＳＩＣ３０の内部制御回路３１に、カウント用レジスタ３２への値αの書き込みを要求する（Ｓ１０２）。
【００３８】
内部制御回路３１によりカウント用レジスタ３２にαが書き込まれると、カウンタ３３がαをロードし、カウントを開始する（Ｓ１０３）。このカウントでは、クロックをα回計測することになる。
【００３９】
そして、カウンタ３３がカウントアップすると（Ｓ１０４：Ｙ）、ＡＳＩＣ３０の内部制御回路３１がＣＰＵ２０にアクノリッジ信号を返す（Ｓ１０５）。
【００４０】
以上の動作により、ＣＰＵ２０がＡＳＩＣ３０にαの書き込みを要求して（Ｓ１０２）から、アクノリッジ信号が返ってくる（Ｓ１０５）までの時間は、ＣＰＵ２０がカウントすべき時間ｔにほぼ等しくなる。
【００４１】
図４は、本実施例のタイマ回路１０の信号状態等を示すタイミング図である。本図では、カウントを行なう際の、クロック、ＣＰＵ２０からＡＳＩＣ３０へのアドレス・コマンド信号線、ＣＰＵ２０からＡＳＩＣ３０へのリクエスト信号、ＡＳＩＣ３０からＣＰＵ２０へのアクノリッジ信号、ＣＰＵ２０からＡＳＩＣ３０へのデータ信号、ＡＳＩＣ３０の内部状態、カウント用レジスタ３２へのセレクト信号、レジスタデータ信号、レジスタライト信号の変化を示している。なお、カウント用レジスタ３２へのセレクト信号、レジスタデータ信号、レジスタライト信号は、ＡＳＩＣ３０内部の信号である。
【００４２】
上述のようにＣＰＵ２０は、時間ｔをカウントする場合に、時間ｔに応じてαを設定する。そして、ｔ１で、ＣＰＵ２０は、ＡＳＩＣ３０のカウント用レジスタ３２に割り当てられたアドレスに対してライトコマンドを発行するとともに、カウント用レジスタ３２に書き込むための値αをデータ信号線でＡＳＩＣ３０に出力する。
【００４３】
これに応じて、ＡＳＩＣ３０は、ｔ２でレジスタへのチップセレクト状態（ＳＴ１）になり、カウント用レジスタ３２のセレクト信号を出力する。
【００４４】
次のクロックでＡＳＩＣ３０は、レジスタ入力状態（ＳＴ２’）となり、αを示すレジスタデータ信号と、レジスタライト信号により、カウント用レジスタにαを書き込む（ｔ３）。ここまでの処理が、カウントの際のオーバーヘッドとなり得るが、わずか数クロック分であるので、ほとんど無視できる時間である。
【００４５】
そして、ＡＳＩＣ３０は、αクロックカウント状態（ＳＴ−Ｎｅｗ）となり（ｔ４）、カウンタ３３がαクロックを計測する。
【００４６】
ｔ６で、カウントアップすると、ＣＰＵへアクノリッジ出力状態（ＳＴ３）となり、ＣＰＵ２０にアクノリッジ信号を出力する。これにより、ＣＰＵ２０は、正確な時間のカウントを行なうことができる。
【００４７】
その後、ＡＳＩＣ３０は、Ｉｄｌｅ状態に戻り、ＣＰＵ２０から次のリクエストを待つ。
【００４８】
以上に示したように、本実施例によれば、集積回路の内部レジスタにアクセスすることによりカウントを行なうタイマ回路において、カウントの精度を高めることができる。
【図面の簡単な説明】
【００４９】
【図１】タイマ回路の構成を示すブロック図。
【図２】ＡＳＩＣの動作を説明するための状態遷移図。
【図３】タイマ回路のカウント動作を説明するためのフロー図。
【図４】タイマ回路の信号状態等を示すタイミング図
【図５】従来のタイマ回路のカウント処理を説明するブロック図。
【符号の説明】
【００５０】
１０…タイマ回路、２０…ＣＰＵ、３０…ＡＳＩＣ、３１…内部制御回路、３２…カウント用レジスタ、３３…カウンタ、１００…タイマ回路、１２０…ＣＰＵ、１３０…ＡＳＩＣ、１３１…内部制御回路、１３２…レジスタ
【図１】
2008077393.tif 000003
【図２】
2008077393.tif 000004
【図３】
2008077393.tif 000005
【図４】
2008077393.tif 000006
【図５】
2008077393.tif 000007