説明

スレーブ回路の動作周波数が変化するシステム

【課題】 スレーブ回路の動作周波数が変化するシステムにおいて、簡易な構成で、マスター回路がスレーブ回路とデータを交換することができるようにする技術を提供する。
【解決手段】 このシステム1は、可変の動作周波数faで動作するスレーブ回路30,40と、基準周波数f0で動作するマスター回路22と、基準クロック信号Sf0を生成してマスター回路に供給し、ローカルクロック信号Sfaを生成してスレーブ回路30,40に供給するクロック信号生成部10と、を備える。クロック信号生成部10は、マスター回路22からの指示に応じて動作周波数faを変えてローカルクロック信号Sfaを生成する。また、クロック信号生成部10は、動作周波数faの情報を含むスレーブ動作信号reqen1,acken1を生成して、マスター回路22に供給する。マスター回路22は、スレーブ動作信号に従って、スレーブ回路とデータの受け渡しを行う。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、スレーブ回路の動作周波数が変化するシステムにおいて、マスター回路がスレーブ回路とデータを交換する技術に関する。
【背景技術】
【0002】
従来より、スレーブ回路の動作周波数が変化するシステムが存在する。特許文献1においては、各スレーブの動作周波数とシステムクロックとの間の調整を行うブリッジブロック回路を、スレーブ(IP)に設けることによって、マスター回路がスレーブ回路とデータを交換することを可能としている。
【0003】
【特許文献1】特開2002−14914号公報
【0004】
しかし、特許文献1の技術においては、複数のスレーブのそれぞれに周波数を調整するための回路(ブリッジブロック回路)を設ける必要があり、回路構成が複雑となる。
【発明の開示】
【発明が解決しようとする課題】
【0005】
本発明は、上記の課題の少なくとも一部を取り扱うためになされたものであり、スレーブ回路の動作周波数が変化するシステムにおいて、簡易な構成で、マスター回路がスレーブ回路とデータを交換することができるようにする技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は、スレーブ回路の動作周波数が変化するシステムにおいて、以下のような処理を行う。このシステムは、可変の動作周波数で動作するスレーブ回路と、基準周波数f0で動作しスレーブ回路とデータの受け渡しを行うマスター回路と、基準周波数f0の基準クロック信号を生成してマスター回路に供給し、動作周波数のローカルクロック信号を生成してスレーブ回路に供給するクロック信号生成部と、を備える。そのようなシステムにおいて、クロック信号生成部は、マスター回路からの指示に応じて動作周波数を変えてローカルクロック信号を生成する。また、クロック信号生成部は、動作周波数の情報を含むスレーブ動作信号を生成して、マスター回路に供給する。一方、マスター回路は、スレーブ動作信号に従って、スレーブ回路とデータの受け渡しのタイミングを調整する。
【0007】
このような態様とすれば、マスター回路は、スレーブ回路の動作周波数を考慮した適切なタイミングでスレーブ回路とデータを交換することができる。そして、各スレーブ回路にタイミング調整のための回路を設ける必要がないため、システムの構成を簡易なものとすることができる。
【0008】
なお、スレーブ動作信号は、マスター回路がスレーブ回路に対してデータの送受信を行うことができるタイミングを表した信号とすることができる。
【0009】
また、スレーブ動作信号は、周波数が動作周波数に等しい信号を含むことが好ましい。このような態様とすれば、マスター回路は、スレーブ動作信号の周波数と等しいスレーブ回路の動作周波数に合わせたタイミングで、スレーブ回路とデータを交換することができる。
【0010】
なお、スレーブ動作信号は、マスター回路がスレーブ回路に対してデータの送受信を行うことができる許可期間として、ローカルクロック信号の波長の1/2以下の期間を各周期に有することが好ましい。そして、ローカルクロック信号の1周期の開始のタイミングが許可期間内となる位相を有する信号を含むことが好ましい。このような態様とすれば、マスター回路は、スレーブ回路の動作のタイミングに合わせて、スレーブ回路に対してデータの送受信をすることができる。
【0011】
なお、クロック信号生成部は、動作周波数がf0/nであるローカルクロック信号(nは正の整数)を生成し、マスター回路からの指示に応じてnの値を変えてローカルクロック信号を生成する態様とすることができる。このような態様とすれば、簡易に各スレーブ回路の動作周波数を下げることができる。
【0012】
なお、本発明は、以下のような態様とすることもできる。すなわち、マスター回路は、スレーブ回路にデータの受け渡しを要求するリクエスト信号をスレーブ回路に送信する。スレーブ回路は、リクエスト信号を受け取って、リクエスト信号の受信を表すアクノリッジ信号をマスター回路に送信する。また、スレーブ動作信号は、マスター回路がリクエスト信号を送信することができるタイミングを表すリクエスト許可信号と、マスター回路がアクノリッジ信号を確認することができるタイミングを表すアクノリッジ許可信号と、を含む。そのような態様において、マスター回路は、リクエスト許可信号に従って、スレーブ回路にリクエスト信号を送信する。また、マスター回路は、アクノリッジ許可信号に従ってアクノリッジ信号を確認した後、スレーブ回路のデータを読み出し、またはスレーブ回路にデータを書き込む。
【0013】
このような態様とすれば、マスター回路は、リクエスト許可信号とアクノリッジ許可信号とにしたがって、適切なタイミングでスレーブ回路とデータを受け渡しすることができる。
【0014】
なお、本発明は、さらに、以下のような態様とすることもできる。この態様のシステムは、それぞれ独立な動作周波数で動作する複数のスレーブ回路を有する。そして、 クロック信号生成部は、マスター回路からの指示に応じて、それぞれ独立な動作周波数を有するローカルクロック信号を生成して各スレーブ回路に供給する。また、クロック信号生成部は、マスター回路からの指示に応じて、各動作周波数をそれぞれ独立に変えて各ローカルクロック信号を生成する。さらに、クロック信号生成部は、各スレーブ回路にそれぞれ対応する複数のリクエスト許可信号と、各スレーブ回路にそれぞれ対応する複数のアクノリッジ許可信号と、を生成して、マスター回路に供給する。
【0015】
一方、マスター回路は、各スレーブ回路に対応するリクエスト許可信号に基づいて、各スレーブ回路にリクエスト信号を送信する。各スレーブ回路は、リクエスト信号を受け取って、アクノリッジ信号をマスター回路に送信する。そして、マスター回路は、各スレーブ回路に対応するアクノリッジ許可信号に基づいてアクノリッジ信号を確認した後、各スレーブ回路のデータを読み出し、または各スレーブ回路にデータを書き込む。このような態様とすれば、それぞれ独人動作周波数で動作するスレーブ回路に対して、マスター回路は、適切なタイミングでデータを送受信することができる。
【0016】
なお、本発明は、種々の形態で実現することが可能であり、例えば、信号またはデータの送受信方法、信号またはデータの送受信の管理方法、ならびに、それらの方法を実現するための装置や、システム等の形態で実現することができる。
【発明を実施するための最良の形態】
【0017】
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.発明の概要:
B.実施例:
B1.システムの構成:
B2.ローカルクロックがシステムクロックの1/2であるときの動作:
B3.ローカルクロックがシステムクロックの1/4であるときの動作:
B4.他のスレーブ回路:
C.変形例
【0018】
A.発明の概要:
図1のシステム1において、クロックジェネレータ10が、CPU20にシステムクロック信号Sf0を供給し、DMAコントローラ30、タイマ40などのスレーブ回路に、ローカルクロック信号Sfa,Sfbを供給する。各スレーブ回路30,40に供給されるローカルクロック信号の周波数fa,fbは、それぞれシステムクロックf0の1/2や、1/4、1/8等の値である。各スレーブ回路30,40は、それぞれ供給されるローカルクロック信号の周波数に従って、独自の動作周波数fa,fbで動作する。各スレーブ回路30,40に供給されるローカルクロック信号の周波数fa,fbは、さらに、マスター回路であるバスコントロールユニット(BCU)22の指示により、f0の1/2からf0の1/4へ変動したり、f0の1/4からf0の1/8へ変動したりする。
【0019】
BCU22は、各スレーブ回路30,40に供給されているローカルクロック信号の周波数fa,fbに対応したリクエストイネーブル信号reqen1,reqen2、アクノリッジイネーブル信号acken1,acken2をクロックジェネレータ10タから受け取っている。BCU22は、それらの信号に応じて、スレーブ回路30,40にデータ要求信号req1,req2を送信し、スレーブ回路30,40からアクノリッジ信号ack1,ack2を受け取って確認し、スレーブ回路30,40に対するデータの読み出しや書き込みを行う。このようにすることで、状況に応じて変動する独自の動作周波数fa,fbで動作している各スレーブ回路30,40に対して、マスター回路であるBCU22は、適切なタイミングでデータの受け渡しを行うことができる。そして、独自の動作周波数fa,fbで動作する各スレーブ回路30,40に、マスター回路22とのデータ受け渡しのためにクロックを調整するブリッジブロックを設ける必要がない。
【0020】
B.実施例:
B1.システムの構成:
図1は、実施例のシステム1を示すブロック図である。システム1は、システム1を構成する各回路の動作周波数を規定するクロック信号を生成するクロックジェネレータ10と、システム1を構成する各回路を制御するCPU20と、CPU20を介さずに行われる入出力装置とメモリ間のデータをやりとりを制御するDMA(Direct Memory Access)コントローラ30と、システム1を構成する各回路に時間のデータを提供するタイマ40と、を備えている。なお、図1においては、システム1が備える他の回路については、図示を省略している。また、以下の説明では、図1に示されていない回路の動作に関する信号の送受信については、言及しない。
【0021】
CPU20は、クロックジェネレータ10からシステムクロック信号Sf0を受け取って、システムクロック信号Sf0の周波数f0で動作する。CPU20は、バスコントロールユニット(BCU)22を備えており、このBCU22を介して、DMAコントローラ30、タイマ40とデータの受け渡しを行う。BCU22と、DMAコントローラ30、タイマ40は、バス100でつながれており、互いにバス100を介してデータの受け渡しが行われる。なお、本明細書においては、コマンドなどの信号の送信および受信を含めて「データの受け渡し」と表現することがある。
【0022】
BCU22は、たとえば、DMAコントローラ30にデータの読み出しを要求するリクエスト信号req1を送信する。そして、リクエスト信号req1を受け取ったDMAコントローラ30は、アクノリッジ信号ack1をBCU22に送信する。アクノリッジ信号ack1の受信を確認したBCU22は、DMAコントローラ30からデータを読み出し、または、DMAコントローラ30にデータを送信する。実施例においては、BCU22がマスター回路であり、DMAコントローラ30とタイマ40がスレーブ回路である。
【0023】
なお、本明細書においては、ある回路が相手の回路に送信している信号をLow(非アクティブ)からHigh(アクティブ)に変えること、または、その信号を、OFFを表している状態からONを表している状態に変えることを「信号を送信する」と表記することがある。そして、ある回路が相手から受け取っている信号がHighであること、またはその信号がONを表している状態にあることを確認することを「信号を受信する」と表記することがある。
【0024】
DMAコントローラ30は、クロックジェネレータ10からローカルクロック信号Sfaを受け取って、ローカルクロック信号Sfaの周波数faで動作する。タイマは、クロックジェネレータ10からローカルクロック信号Sfbを受け取って、ローカルクロック信号Sfbの周波数fbで動作する。
【0025】
クロックジェネレータ10は、BCU22からの指示に応じて、周波数fa、fbを変えてローカルクロック信号Sfa,Sfbを生成する。具体的には、周波数fa、fbは、以下の式を満たす。
【0026】
fa=f0/na ・・・ (1)
fb=f0/nb ・・・ (2)
【0027】
ここで、na,nbは、2以上の整数である。クロックジェネレータ10は、BCU22からの指示に応じて、na,nbの値を変えてローカルクロック信号Sfa,Sfbを生成する。DMAコントローラ30、タイマ40は、それぞれローカルクロック信号Sfa,Sfbに従って、変動する動作周波数fa,fbで動作する。
【0028】
また、クロックジェネレータ10は、システムクロック信号Sf0をBCU22に供給している。さらに、クロックジェネレータ10は、BCU22がDMAコントローラ30に対してリクエスト信号req1を送信することができるタイミングを表すリクエストイネーブル信号reqen1と、BCU22がタイマ40に対してリクエスト信号req2を送信することができるタイミングを表すリクエストイネーブル信号reqen2と、を生成し、BCU22に供給している。また、クロックジェネレータ10は、BCU22がDMAコントローラ30から受け取るアクノリッジ信号ack1を確認することができるタイミングを表すアクノリッジイネーブル信号acken1と、BCU22がタイマ40から受け取るアクノリッジ信号ack2を確認することができるタイミングを表すアクノリッジイネーブル信号acken2と、を生成し、BCU22に供給している。
【0029】
図2は、BCU22とDMAコントローラ30がそれぞれ送受信する信号のタイミングチャートである。以下では、システムクロックf0の1/2のローカルクロックfaで動作するDMAコントローラ30と、システムクロックf0で動作するBCU22と、の間の信号の受け渡しを例に、システム1の各回路の動作の概要を説明する。
【0030】
バス100(図1参照)の動作周波数は、システムクロック信号Sf0の周波数f0である。DMAコントローラ30とタイマ40は、それぞれ変動する独自の動作周波数fa,fbで動作し、その動作周波数fa,fbに従って、バス100に対してアクノリッジ信号ack1,2などの信号を渡す(図2参照)。バス100は、動作周波数faやfb、すなわち、f0/naやf0/nbのタイミングで信号を受け取り(上記式(1)、(2))、BCU22にデータを渡す。
【0031】
BCU22は、動作周波数f0で動作する。よって、BCU22は、動作周波数f0でバス100からの信号を確認し、また、バス100に信号を送信することができる。ただし、BCU22がDMAコントローラ30からのアクノリッジ信号ack1を確認することができるのは、アクノリッジイネーブル信号acken1がHighである時間区間中である(図2参照)。そして、BCU22がタイマ40からのアクノリッジ信号ack2を確認することができるのは、アクノリッジイネーブル信号acken2がHighである時間区間中である。
【0032】
また、BCU22が、DMAコントローラ30にリクエスト信号req1を送信することができるのは、リクエストイネーブル信号reqen1がHighである時間区間中である。そして、BCU22が、タイマ40にリクエスト信号req2を送信することができるのは、リクエストイネーブル信号reqen2がHighである時間区間中である。すなわち、BCU22のバス100を介したスレーブ回路との信号の受け渡しは、アクノリッジ信号ack1,2、リクエストイネーブル信号reqen1,2によって制限される。以下で、各回路の動作について、より詳細に説明する。
【0033】
B2.ローカルクロックがシステムクロックの1/2であるときの動作:
(1)信号:
【0034】
図2の例では、ローカルクロック信号Sfaの周波数faは、f0/2である。図2において破線B1,B6で示すように、ローカルクロック信号SfaがLowからHighに変わるタイミングは、システムクロック信号Sf0がLowからHighに変わるタイミングと一致している。
【0035】
図2において、req1は、BCU22がDMAコントローラ30にデータの読み出しを要求するリクエスト信号である。リクエスト信号req1は、BCU22からDMAコントローラ30に送られる(図1参照)。リクエスト信号req1がHighであることが、DMAコントローラ30に対してデータの受け渡しが要求されていることを意味する。
【0036】
図2において、reqen1は、BCU22がDMAコントローラ30にリクエスト信号req1を送信することができるタイミングを表すリクエストイネーブル信号である。リクエストイネーブル信号reqen1がHighである時間区間中に、BCU22は、DMAコントローラ30にリクエスト信号req1を送信することができる。リクエストイネーブル信号reqen1は、クロックジェネレータ10からBCU22に送られる(図1参照)。
【0037】
リクエストイネーブル信号reqen1の周波数は、DMAコントローラ30のローカルクロック周波数faと同じである。また、リクエストイネーブル信号reqen1がHighである時間区間は、システムクロック周波数f0の1波長分である。そして、リクエストイネーブル信号reqen1の位相は、図2において破線B1,B3,B6で示すように、リクエストイネーブル信号reqen1がHighである時間区間内において、DMAコントローラ30のローカルクロック信号SfaがLowからHighになるような位相である。
【0038】
図2において、ack1は、BCU22から送られてきたリクエスト信号req1をDMAコントローラ30が受信したことを示すアクノリッジ信号である。アクノリッジ信号ack1は、DMAコントローラ30からBCU22に送られる(図1参照)。アクノリッジ信号ack1がHighであることが、リクエスト信号req1がDMAコントローラ30に受信されたことを意味する。
【0039】
図2において、acken1は、BCU22がDMAコントローラ30からのアクノリッジ信号ack1を確認することができるタイミングを表すアクノリッジイネーブル信号である。アクノリッジイネーブル信号acken1がHighである時間区間中に、BCU22は、アクノリッジ信号ack1がHighであることを確認することができる。アクノリッジイネーブル信号acken1は、クロックジェネレータ10からBCU22に送られる(図1参照)。
【0040】
アクノリッジイネーブル信号acken1の周波数は、DMAコントローラ30のローカルクロック周波数faと同じである。また、アクノリッジイネーブル信号acken1がHighである時間区間は、システムクロック周波数f0の1波長分である。そして、アクノリッジイネーブル信号acken1の位相は、図2において破線B6で示すように、アクノリッジイネーブル信号acken1がHighである時間区間内において、DMAコントローラ30のローカルクロック信号SfaがLowからHighになるような位相である。
【0041】
より具体的には、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighとなった後、すぐにアクノリッジイネーブル信号acken1が、HighからLowとなるような位相である(図2参照の破線B6参照)。たとえば、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighになるタイミングが、アクノリッジイネーブル信号acken1がHighである時間区間のうち、後ろから1/5よりも後のタイミングとなるような位相とすることができる。なお、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighになるタイミングが、アクノリッジイネーブル信号acken1がHighである時間区間のうち、後ろから1/10よりも後のタイミングとなるような位相であることがより好ましい。
【0042】
(2)システムの動作:
次に、BCU22とDMAコントローラ30の間の信号の受け渡しを時間を追って説明する。
【0043】
まず、BCU22が、リクエストイネーブル信号reqen1がHighである時間区間内において、システムクロック信号Sf0がLowからHighになるタイミングで(図2の破線B1参照)、リクエスト信号req1をHighにする(図2の矢印A1参照)。
【0044】
DMAコントローラ30は、リクエスト信号req1がHighとなった後、最初にローカルクロック信号SfaがLowからHighになるタイミングで(図2の破線B3参照)、リクエスト信号req1がHighであることを確認する。そして、アクノリッジ信号ack1をHighとする(図2の矢印A2参照)。
【0045】
前述のように、リクエストイネーブル信号reqen1の周波数はローカルクロック信号Sfaと同じfaである。そして、リクエストイネーブル信号reqen1の位相は、リクエストイネーブル信号reqen1がHighである時間区間内においてローカルクロック信号SfaがLowからHighになるような位相である。このため、BCU22は、DMAコントローラ30がリクエスト信号req1がHighであることを確認するまでに十分な時間的余裕が与えられるようなタイミングで(図2のT1参照)、リクエスト信号req1をHighにすることができる。
【0046】
より詳細に説明すると、BCU22は、ローカルクロック信号SfaがLowからHighになるタイミングで(図2の破線B1参照)、リクエスト信号req1をHighにする処理を開始する(図2の矢印A1参照)。このため、リクエスト信号req1は、ローカルクロック信号SfaがLowからHighになるタイミングからわずかに遅れたタイミングで(図2の破線B2参照)、Highとなる。そして、その次に、最も早くローカルクロック信号SfaがLowからHighになるタイミングは、図2において破線B3で示すタイミングである。このため、DMAコントローラ30が、リクエスト信号req1がHighであることを確認するタイミングB3は、リクエスト信号req1がHighとなってからローカルクロック信号Sfaの1波長に近い時間T1の後である。よって、DMAコントローラ30は、リクエスト信号req1がLowからHighに移行した後、十分な時間T1が経過してから、信号が安定した状態でリクエスト信号req1がHighであることを確認することができる。
【0047】
アクノリッジ信号ack1がHighとなった後、BCU22は、アクノリッジイネーブル信号acken1がHighである時間区間中に、最初にシステムクロック信号Sf0がLowからHighになるタイミングで(図2の破線B6参照)、アクノリッジ信号ack1がHighであることを確認する。そして、リクエスト信号req1をHighからLowとする(図2の矢印A3,A4参照)。また、DMAコントローラ30からのデータの読み出しを開始する(図2の矢印A5,A6参照)。
【0048】
前述の通り、アクノリッジイネーブル信号acken1の周波数はfaである。また、アクノリッジイネーブル信号acken1がHighである時間区間はシステムクロック信号Sf0の1波長である。そして、アクノリッジイネーブル信号acken1の位相は、リクエストイネーブル信号reqen1がHighである時間区間内において、ローカルクロック信号SfaがLowからHighになるような位相である。このため、BCU22は、アクノリッジ信号ack1がHighとなってからデータの読み出し開始までに十分な時間的余裕ができるタイミングで(図2のT3参照)、アクノリッジ信号ack1がHighであることを確認することができる。
【0049】
より詳細に説明すると、DMAコントローラ30は、ローカルクロック信号SfaがLowからHighになるタイミングで(図2の破線B3参照)、アクノリッジ信号ack1をLowからHighとする処理を開始する(図2の矢印A2参照)。このため、アクノリッジ信号ack1は、ローカルクロック信号SfaがLowからHighになるタイミングからわずかに遅れたタイミングで(図2の破線B4参照)、LowからHighになる。そのタイミングにおいては、アクノリッジイネーブル信号acken1はLowである。そして、次にアクノリッジイネーブル信号acken1がHighとなるのは、システムクロック信号Sf0の1波長に近い時間T2の後である(図2の破線B5参照)。さらに、アクノリッジイネーブル信号acken1がHighである時間区間内で、最も早くシステムクロック信号Sf0がLowからHighになるタイミングは、図2において破線B6で示すタイミングである。すなわち、BCU22がアクノリッジ信号ack1がHighであることを確認するタイミングは、アクノリッジ信号ack1がHighとなってからローカルクロック信号Sfaの1波長に近い時間T3の後である(図2の破線B6参照)。このため、BCU22は、DMAコントローラ30が、アクノリッジ信号ack1をLowからHighとした後、十分な時間T3が経過た後に、安定した状態でリードデータrdt1の読み出しを開始することができる。
【0050】
以上で説明したように、図2の例においては、ローカルクロック信号Sfaの周波数faは、f0/2であり、リクエストイネーブル信号reqen1とアクノリッジイネーブル信号acken1の周波数も、fa=f0/2である。そして、リクエストイネーブル信号reqen1とアクノリッジイネーブル信号acken1は、各周期において、ローカルクロック信号Sfaの1波長の時間区間だけLowとなり、その間、BCU22がリクエスト信号req1をHighとすること、およびアクノリッジ信号ack1を確認することを禁じている。このため、BCU22は、自己とは異なる独自の動作周波数fa(=f0/2)で動作しているDMAコントローラ30に対して、適切なタイミングでデータを要求し、読み出すことができる。
【0051】
なお、ここでは、データの読み出しを行う場合について説明したが、データの書き込みを行う場合もライトイネーブル信号wren1がリクエスト信号req1と同じ動きをして、同様に書き込み動作が行われる。
【0052】
B3.ローカルクロックがシステムクロックの1/4であるときの動作:
(1)信号:
図3は、DMAコントローラ30の動作周波数がf0/4であるときの、BCU22とDMAコントローラ30がそれぞれ送受信する信号のタイミングチャートである。図3の符号の表記は、図2と同じである。以下では、各信号について、図2との相違点について説明する。各信号の他の点は、図2の対応する信号と同じである。
【0053】
図3の例において、ローカルクロック信号Sfaの周波数faは、f0/4であり(式(1)参照)、Highである時間区間は、システムクロック周波数f0の2波長分である。
【0054】
図3の例においても、リクエストイネーブル信号reqen1の周波数は、DMAコントローラ30のローカルクロック周波数faと同じである。また、リクエストイネーブル信号reqen1がHighである時間区間は、システムクロック周波数f0の1波長分である。そして、リクエストイネーブル信号reqen1の位相は、図3において破線B11,B13,B16で示すように、リクエストイネーブル信号reqen1がHighである時間区間内において、DMAコントローラ30のローカルクロック信号SfaがLowからHighになるような位相である。
【0055】
図3の例において、アクノリッジイネーブル信号acken1の周波数は、DMAコントローラ30のローカルクロック周波数faと同じである。また、アクノリッジイネーブル信号acken1がHighである時間区間は、システムクロック周波数f0の1波長分である。そして、アクノリッジイネーブル信号acken1の位相は、図3において破線B16で示すように、アクノリッジイネーブル信号acken1がHighである時間区間内において、DMAコントローラ30のローカルクロック信号SfaがLowからHighになるような位相である。
【0056】
より具体的には、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighとなった後、すぐにアクノリッジイネーブル信号acken1が、HighからLowとなるような位相である(図3の破線B16参照)。たとえば、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighになるタイミングが、アクノリッジイネーブル信号acken1がHighである時間区間のうち、後ろから1/5よりも後のタイミングとなるような位相とすることができる。なお、アクノリッジイネーブル信号acken1の位相は、ローカルクロック信号SfaがLowからHighになるタイミングが、アクノリッジイネーブル信号acken1がHighである時間区間のうち、後ろから1/10よりも後のタイミングとなるような位相であることがより好ましい。
【0057】
(2)システムの動作:
次に、図3の例におけるBCU22とDMAコントローラ30の間の信号の受け渡しについて、図2の例との相違点を説明する。図3の例の各信号の変化の他の点は、図2の例と同じである。
【0058】
まず、BCU22が、リクエストイネーブル信号reqen1がHighである時間区間内において、システムクロック信号Sf0がLowからHighになるタイミングで(図3の破線B11参照)、リクエスト信号req1をHighにする(図3の矢印A11参照)。
【0059】
DMAコントローラ30は、リクエスト信号req1がHighとなった後、最初にローカルクロック信号SfaがLowからHighになるタイミングで(図3の破線B13参照)、リクエスト信号req1がHighであることを確認する。そして、アクノリッジ信号ack1をHighとする(図3の矢印A12参照)。
【0060】
リクエストイネーブル信号reqen1が上述のように生成されているため、図2の例と同様に、BCU22は、DMAコントローラ30がリクエスト信号req1がHighであることを確認するまでに十分な時間的余裕が与えられるようなタイミングで(図3のT11参照)、リクエスト信号req1をHighにすることができる。
【0061】
アクノリッジ信号ack1がHighとなった後、BCU22は、アクノリッジイネーブル信号acken1がHighである時間区間中に、最初にシステムクロック信号Sf0がLowからHighになるタイミングで(図3の破線B16参照)、アクノリッジ信号ack1がHighであることを確認する。そして、リクエスト信号req1をHighからLowとする(図3の矢印A13,A14参照)。また、DMAコントローラ30からのリードデータrdt1の読み出しを開始する(図3の矢印A15,A16参照)。
【0062】
アクノリッジイネーブル信号acken1が上述のように生成されているため、図2の例と同様に、BCU22は、DMAコントローラ30が、アクノリッジ信号ack1をLowからHighとした後、十分な時間T13が経過た後で、安定した状態でデータの読み出しを開始することができる。
【0063】
以上で説明したように、図3の例においても、リクエストイネーブル信号reqen1とアクノリッジイネーブル信号acken1の周波数は、ローカルクロック信号Sfaの周波数faと等しい。そして、リクエストイネーブル信号reqen1とアクノリッジイネーブル信号acken1は、各周期において、ローカルクロック信号Sfaの1波長の時間区間を除いてLowとなり、その間、BCU22がリクエスト信号req1をHighとすること、およびアクノリッジ信号ack1を確認することを禁じている。このため、BCU22は、自己とは異なる独自の動作周波数fa(=f0/4)で動作しているDMAコントローラ30に対して、適切なタイミングでデータを要求し、読み出すことができる。
【0064】
なお、データの書き込みを行う場合もライトイネーブル信号wren1がリクエスト信号req1と同じ動きをして、同様に書き込み動作が行われる。
【0065】
B4.他のスレーブ回路:
図4は、クロックジェネレータ10からタイマ40に与えられるローカルクロック信号Sfbと、クロックジェネレータ10からBCU22に与えられるリクエストイネーブル信号reqen2と、アクノリッジイネーブル信号acken2を示す図である。図2および図3では、ローカルクロック周波数faで動作するDMAコントローラ30とBCU22との間の信号を例にして、システム1の動作を説明した。しかし、一方で、BCU22は、DMAコントローラ30以外に他のスレーブ回路としてのタイマ40との間においても信号の送受信を行う。
【0066】
クロックジェネレータ10からタイマ40に供給されるローカルクロック信号Sfbの周波数fbは、図4に示すように、f0/6とすることができる(式(2)参照)。そして、ローカルクロック信号SfbがHighである時間区間は、システムクロック周波数f0の3波長分とすることができる。
【0067】
図4の例においても、リクエストイネーブル信号reqen2とアクノリッジイネーブル信号acken2の周波数は、ローカルクロック周波数fbと同じである。また、リクエストイネーブル信号reqen2とアクノリッジイネーブル信号acken2がHighである時間区間は、システムクロック周波数f0の1波長分である。
【0068】
リクエストイネーブル信号reqen2の位相は、図4において破線B21,B22で示すように、リクエストイネーブル信号reqen2がHighである時間区間内において、ローカルクロック信号SfbがLowからHighになるような位相である。また、アクノリッジイネーブル信号acken2の位相も、アクノリッジイネーブル信号acken2がHighである時間区間内において、ローカルクロック信号SfbがLowからHighになるような位相である。
【0069】
クロックジェネレータ10は、図4に示したようなローカルクロック信号Sfbをタイマ40に供給している(図1参照)。そして、図4に示したようなリクエストイネーブル信号reqen2とアクノリッジイネーブル信号acken2を、BCU22に供給している。たとえば、DMAコントローラ30の動作周波数faがf0/2からf0/4に変化している間、タイマ40は、一定のローカルクロック信号Sfb、たとえば周波数f0/6のローカルクロック信号Sfbをクロックジェネレータ10から受け取り、動作周波数f0/6で動作することができる。BCU22とタイマ40との間でデータが受け渡される際の、各信号の動作は、図2、図3の例と同様である。
【0070】
実施例のシステム1は、各スレーブ回路30,40の動作周波数がそれぞれ独自に変化しても、マスターであるBCU22と各スレーブ回路30,40との間で適切にデータの受け渡しを行うことができる。そして、独自の動作周波数fa,fbで動作する各スレーブ回路30,40に、マスターであるBCU22の基準動作周波数f0と各スレーブ回路30,40の動作周波数fa,fbとの間で周波数の調整を行うブリッジブロック回路を設ける必要がない。
【0071】
C.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
【0072】
C1.変形例1:
上記実施例では、リクエストイネーブル信号とアクノリッジイネーブル信号とは、ともにシステムクロック信号Sf0の1波長分の時間区間だけHighであり、他の期間はLowであった。リクエストイネーブル信号とアクノリッジイネーブル信号がHighである期間が、マスター回路にリクエスト信号の送信を許可する期間、および、アクノリッジ信号の受信の確認を許可する期間であった。しかし、マスター回路にリクエスト信号の送信を許可する期間、そして、アクノリッジ信号の受信の確認を許可する期間は、マスター回路の動作周波数を与えるシステムクロック信号Sf0の1波長分の時間よりも長い時間、または短い時間とすることができる。ただし、リクエストイネーブル信号とアクノリッジイネーブル信号とがHighである時間区間は、対応するスレーブ回路のローカルクロック信号の1/2波長以下であることが好ましい。
【0073】
C2.変形例2:
上記実施例では、各スレーブ回路に対応するリクエストイネーブル信号とアクノリッジイネーブル信号とは、ほぼ同じ位相を有していた。しかし、リクエストイネーブル信号とアクノリッジイネーブル信号とは、互いにずれた位相を有していてもよい。ただし、各信号の位相は、それらの信号がHigh(アクティブ)である期間中に、ローカルクロック信号の1周期の開始のタイミングが存在することが好ましい。なお、「信号の1周期の開始のタイミング」は、その信号がLow(非アクティブ)からHigh(アクティブ)になるタイミングである。
【0074】
C3.変形例3:
上記実施例では、マスター回路に対してリクエスト信号の送信を許可または禁止するリクエストイネーブル信号と、マスター回路に対してアクノリッジ信号の受信の確認を許可または禁止するアクノリッジイネーブル信号とは、別の信号であった。しかし、これらの信号は1の信号とすることもできる。ただし、その信号は、対応するスレーブ回路のローカルクロック周波数の情報を含むことが好ましく、スレーブ回路のローカルクロック周波数と同じ周波数を有することがさらに好ましい。ただし、その周波数は、ローカルクロック周波数以外の周波数であってもよい。すなわち、各スレーブ回路に対応する一つずつの信号が、いずれも対応するスレーブ回路の整数倍の周波数を有している態様とすることもでき、いずれも対応するスレーブ回路の整数分の一の周波数を有している態様とすることもできる。そのような態様においても、マスター回路は、各スレーブ回路の動作周波数を特定することができ、それらの動作周波数に合わせてスレーブ回路とデータの受け渡しをすることができる。すなわち、マスター回路に送信され、スレーブ回路の動作を表す信号は、何らかの形で対応するスレーブ回路のローカルクロック周波数の情報を含んでいればよい。
【0075】
C4.変形例4:
上記実施例では、各スレーブ回路の動作周波数fa,fbは、基準周波数f0の1/2,1/4,1/6であった。しかし、各スレーブ回路の動作周波数は、他の値とすることもできる。ただし、各スレーブ回路の動作周波数は、基準周波数f0の1/nとすることが好ましい。ここで、nは、正の整数である。信号を生成するための処理を単純なものとすることができるからである。また、nは2以上であることがより好ましい。各スレーブの消費電力を低くすることができるためである。また、nが大きいほど、実質的にバスのデータ転送速度を低くすることができるため、バスにおけるスキューによるエラーの発生の可能性を低減することができる。
【0076】
C5.変形例5:
上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
【図面の簡単な説明】
【0077】
【図1】実施例のシステムを示すブロック図である。
【図2】BCU22とDMAコントローラ30がそれぞれ送受信する信号のタイミングチャートである。
【図3】BCU22とDMAコントローラ30がそれぞれ送受信する信号のタイミングチャートである。
【図4】タイマ40に与えられるローカルクロック信号Sfbと、BCU22に与えられるリクエストイネーブル信号reqen2と、アクノリッジイネーブル信号acken2を示す図である。
【符号の説明】
【0078】
1…システム
10…クロックジェネレータ
20…CPU
22…BCU(バスコントロールユニット)
30…DMAコントローラ
40…タイマ
100…バス
A1…矢印
A11…矢印
A12…矢印
A13…矢印
A15…矢印
A2…矢印
A3…矢印
A5…矢印
B1…破線
B11…破線
B13…破線
B16…破線
B2…破線
B21…破線
B3…破線
B4…破線
B5…破線
B6…破線
Sf0…システムクロック信号
Sfa…ローカルクロック信号
Sfb…ローカルクロック信号
T1…リクエスト信号req1がHighに移行した後、DMAコントローラ30によって確認されるまでの時間
T2…アクノリッジ信号ack1がHighとなってから、アクノリッジイネーブル信号acken1がHighとなるまでの時間
T3…アクノリッジ信号ack1がHighとなってから、BCU22によって確認されるまでの時間
ack1…DMAコントローラ30からBCU22に送られるアクノリッジ信号
ack2…タイマ40からBCU22に送られるアクノリッジ信号
acken1…DMAコントローラ30用のアクノリッジイネーブル信号
acken2…タイマ40用のアクノリッジイネーブル信号
f0…システムクロック周波数(基準周波数)
fa…DMAコントローラ30のローカルクロック周波数
fb…タイマ40のローカルクロック周波数
req1…BCU22からDMAコントローラ30に送られるリクエスト信号
req2…BCU22からタイマ40に送られるリクエスト信号
reqen1…DMAコントローラ30用のリクエストイネーブル信号
reqen2…タイマ40用のリクエストイネーブル信号
wren1…BCU22からDMAコントローラ30に送られるライトイネーブル信号

【特許請求の範囲】
【請求項1】
スレーブ回路の動作周波数が変化するシステムであって、
可変の動作周波数で動作するスレーブ回路と、
基準周波数f0で動作し前記スレーブ回路とデータの受け渡しを行うマスター回路と、
前記基準周波数f0の基準クロック信号を生成して前記マスター回路に供給し、前記動作周波数のローカルクロック信号を生成して前記スレーブ回路に供給するクロック信号生成部と、を備え、
前記クロック信号生成部は、
前記マスター回路からの指示に応じて前記動作周波数を変えて前記ローカルクロック信号を生成し、
前記動作周波数の情報を含むスレーブ動作信号を生成して、前記マスター回路に供給し、
前記マスター回路は、前記スレーブ動作信号に従って、前記スレーブ回路とデータの受け渡しのタイミングを調整する、システム。
【請求項2】
請求項1記載のシステムであって、
前記スレーブ動作信号は、前記マスター回路が前記スレーブ回路に対してデータの送受信を行うことができるタイミングを表す信号である、システム。
【請求項3】
請求項2記載のシステムであって、
前記スレーブ動作信号は、周波数が前記動作周波数に等しい信号を含む、システム。
【請求項4】
請求項3記載のシステムであって、
前記スレーブ動作信号は、
前記マスター回路が前記スレーブ回路に対してデータの送受信を行うことができる許可期間として、前記ローカルクロック信号の波長の1/2以下の期間を各周期に有し、
前記ローカルクロック信号の1周期の開始のタイミングが前記許可期間内となる位相を有する信号を含む、システム。
【請求項5】
請求項1記載のシステムであって、
前記クロック信号生成部は、
前記動作周波数がf0/nである前記ローカルクロック信号(nは正の整数)を生成し、
前記マスター回路からの指示に応じて前記nの値を変えて前記ローカルクロック信号を生成する、システム。
【請求項6】
請求項1記載のシステムであって、
前記マスター回路は、前記スレーブ回路にデータの受け渡しを要求するリクエスト信号を前記スレーブ回路に送信し、
前記スレーブ回路は、前記リクエスト信号を受け取って、前記リクエスト信号の受信を表すアクノリッジ信号を前記マスター回路に送信し、
前記スレーブ動作信号は、
前記マスター回路が前記リクエスト信号を送信することができるタイミングを表すリクエスト許可信号と、
前記マスター回路が前記アクノリッジ信号を確認することができるタイミングを表すアクノリッジ許可信号と、を含み、
前記マスター回路は、
前記リクエスト許可信号に従って、前記スレーブ回路に前記リクエスト信号を送信し、
前記アクノリッジ許可信号に従って前記アクノリッジ信号を確認した後、前記スレーブ回路のデータを読み出し、または前記スレーブ回路にデータを書き込む、システム。
【請求項7】
請求項6記載のシステムであって、
それぞれ独立な動作周波数で動作する複数の前記スレーブ回路を有し、
前記クロック信号生成部は、
前記マスター回路からの指示に応じて、それぞれ独立な前記動作周波数を有する前記ローカルクロック信号を生成して前記各スレーブ回路に供給し、
前記マスター回路からの指示に応じて、前記各動作周波数をそれぞれ独立に変えて前記各ローカルクロック信号を生成し、
前記各スレーブ回路にそれぞれ対応する複数の前記リクエスト許可信号と、前記各スレーブ回路にそれぞれ対応する複数の前記アクノリッジ許可信号と、を生成して、前記マスター回路に供給し、
前記マスター回路は、前記各スレーブ回路に対応する前記リクエスト許可信号に基づいて、前記各スレーブ回路に前記リクエスト信号を送信し、
前記各スレーブ回路は、前記リクエスト信号を受け取って、前記アクノリッジ信号を前記マスター回路に送信し、
前記マスター回路は、前記各スレーブ回路に対応する前記アクノリッジ許可信号に基づいて前記アクノリッジ信号を確認した後、前記各スレーブ回路のデータを読み出し、または前記各スレーブ回路にデータを書き込む、システム。
【請求項8】
スレーブ回路の動作周波数が変化するシステムにおいて、マスター回路と前記スレーブ回路との間でデータの受け渡しを行う方法であって、
(a)基準周波数f0の基準クロック信号を生成して前記マスター回路に供給する工程と、
(b)可変の前記動作周波数のローカルクロック信号を生成して前記スレーブ回路に供給する工程と、
(c)前記マスター回路からの指示に応じて前記動作周波数を変えて前記ローカルクロック信号を生成する工程と、
(d)前記動作周波数の情報を含むスレーブ動作信号を生成して、前記マスター回路に供給する工程と、
(e)前記マスター回路が、前記スレーブ動作信号に従って、前記スレーブ回路とデータの受け渡しを行う工程と、を有する方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate