JP2008021040A - バスマスタ回路、バス制御方法、及びコンピュータプログラム - Google Patents

バスマスタ回路、バス制御方法、及びコンピュータプログラム Download PDF

Info

Publication number
JP2008021040A
JP2008021040A JP2006190907A JP2006190907A JP2008021040A JP 2008021040 A JP2008021040 A JP 2008021040A JP 2006190907 A JP2006190907 A JP 2006190907A JP 2006190907 A JP2006190907 A JP 2006190907A JP 2008021040 A JP2008021040 A JP 2008021040A
Authority
JP
Japan
Prior art keywords
bus
hardware
signal
state
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2006190907A
Other languages
English (en)
Other versions
JP2008021040A5 (ja
Inventor
Shiori Wakino
しおり 脇野
Masahiro Ito
正博 伊藤
裕介 ▲高▼山
Yusuke Takayama
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2006190907A priority Critical patent/JP2008021040A/ja
Publication of JP2008021040A publication Critical patent/JP2008021040A/ja
Publication of JP2008021040A5 publication Critical patent/JP2008021040A5/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】 バスに接続されたハードウェアの状態を検出する際の処理速度を向上させると共に、システムの面積の増加を抑えるようにする。
【解決手段】 状態検出ブロック206が、外部通信モジュール203のFIFOにおけるデータ量を検出する。状態検出ブロック206の検出結果に基づいて、条件判定ブロック207が、割り込み信号217の生成条件を満たしているか否かを判定する。割り込み信号217の生成条件を満たしている場合に、割り込み信号生成ブロック208は、割り込み信号217を生成してCPU201に出力する。CPU201は、この割り込み信号217に基づいて、所定の処理を行う。
【選択図】 図2

Description

本発明は、バスマスタ回路、バス制御方法、及びコンピュータプログラムに関し、特に、バスに接続されたハードウェアの状態を検出するために用いて好適なものである。
一般にプロセッサと1つ以上のハードウェアとが接続されたバスを備えたシステムLSIでは、ハードウェアを制御するために、プロセッサがハードウェアの状態を把握し、そのハードウェアの状態に応じてそのハードウェア又はその他のハードウェアを制御する。
プロセッサがハードウェアの状態を把握する手法として、ハードウェアの内部状態を示すレジスタをハードウェアの内部に設け、プロセッサがレジスタを継続的に監視することによってハードウェアの内部状態を知るポーリング手法がある。尚、以下の説明では、レジスタを監視することをポーリングと称する。また、ハードウェアの内部でレジスタの状態が予め決められた状態になったときに、ハードウェアがプロセッサに割り込み信号を通知する割り込み通知手法も用いられている。特許文献1には、通信周期内の任意のクロック数で割り込み信号を発生させるレジスタの設定値と、サイクルタイマ回路の設定値とを比較器で比較し、比較器が出力する指令を受け取ると割り込み信号をCPUに出力する割り込み発生回路が記載されている。この割り込み発生回路では、ノイズ等が発生してもホストCPUに与える割り込み信号が発生するようにしている。
プロセッサは、前述したどちらかの手法を用いてハードウェアの内部状態を検出し、そのハードウェアの内部状態に応じてハードウェアを制御していた。
ハードウェアの内部状態を示すレジスタをプロセッサがポーリングする手法では、レジスタをリードするコマンドをプロセッサが継続的に何度も発行するため、プロセッサに多大な負荷がかかる。従って、割り込み通知手法が一般的に使われる。
しかしながら、あらゆる状況において割り込み通知手法を使用できるわけではない。例えば、ハードウェアの内部状態が設計段階では想定していなかった状態になったために、ハードウェアが割り込み信号をプロセッサに通知できない場合、プロセッサは、ポーリングを行ってハードウェアの内部状態を検出し、ハードウェアを制御する必要がある。また、バグ等によりハードウェアが意図した割り込み処理を行えない場合も同様に、プロセッサがポーリングを行ってハードウェアを制御する必要がある。
このような不都合を解消するために、バックアップ用のサブプロセッサを設け、サブプロセッサがポーリングを行ってハードウェアの内部状態を検出し、検出したハードウェアの内部状態をメインプロセッサに通知してハードウェアを制御する手法も採られてきた。
特開2002−185469号公報
しかしながら、前述したサブプロセッサを用いてハードウェアの内部状態を検出する手法では、次のような不都合があった。
まず、サブプロセッサは、リセットが解除された後に、実行するプログラムのコードをROM等から読み出すブート処理が必要になる。従って、システムの起動に時間がかかる上に、プログラムを格納するためのメモリ領域が必要となる。
また、メインプロセッサとサブプロセッサとの通信(マルチプロセッサ間通信)が必要となる。従って、双方のプロセッサが使用できる共有メモリを確保しなければならない。共有メモリには、サブプロセッサからメインプロセッサへの処理依頼メッセージを格納する領域と、その処理依頼に対するメインプロセッサからサブプロセッサへの応答メッセージを格納する領域とが必要になる。更に共有メモリには、メインプロセッサからサブプロセッサへの処理依頼メッセージを格納する領域と、その処理依頼に対するサブプロセッサからメインプロセッサへの応答メッセージを格納する領域も必要になる。
サブプロセッサからメインプロセッサへの処理依頼をする場合、サブプロセッサは、メインプロセッサへの処理依頼メッセージ格納領域(共有メモリ)に、メインプロセッサへの処理依頼メッセージを書き込んで、メインプロセッサに対して割り込み通知を行う。通常プロセッサはスレーブインターフェースを備えない。従って、この割り込み通知をクリアする場合、メインプロセッサは、サブプロセッサへの処理依頼メッセージ格納領域(共有メモリ)に、サブプロセッサへの処理依頼メッセージを書き込んで、サブプロセッサに対して割り込み通知を行う。このような割り込みクリアのシーケンスは、割り込みクリアレジスタをクリアして行う通常の処理に比べると処理時間がかかる。
また、コストを削減するシステムLSIにおいては、例えば面積の小さな8ビットマイコンであっても、サブプロセッサを設けたことによるシステムLSIの面積の増加は好ましくない。更に、サブプロセッサを設けると、サブプロセッサ本体に加えて、サブプロセッサがプログラムを実行するためのワークメモリ領域等のハードウェアリソースが必要になる。このようなハードウェアリソースは、システムLSIの面積が増加する要因となる。
本発明はこのような問題点に鑑み、バスに接続されたハードウェアの状態を検出する際の処理速度を向上させると共に、システムの面積の増加を抑えるようにすることを目的とする。
本発明のバスマスタ回路は、プロセッサ及び1つ以上のハードウェアとバスを介して相互に接続されたバスマスタ回路であって、前記バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出手段と、前記検出手段により検出されたハードウェアの状態を判別する判別手段と、前記判別手段により判別されたハードウェアの状態に基づいて制御信号を生成する生成手段と、前記生成手段により生成された制御信号を前記バスに出力する出力手段とを有することを特徴とする。
本発明のバス制御方法は、バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとを有することを特徴とする。
本発明のコンピュータプログラムは、バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとをコンピュータに実行させることを特徴とする。
本発明によれば、バスにバスマスタとしてアクセスして、ハードウェアの状態を検出し、検出したハードウェアの状態に基づいて制御信号を生成して出力するようにした。従って、プロセッサがハードウェアの状態を検出する必要がなくなるので、プロセッサの負荷を削減することと、ハードウェアの状態を検出する際の動作速度を向上させることと、システムの面積の増加を抑えることとを実現することが可能になる。
また、本発明の他の特徴によれば、ハードウェアの状態に基づいて、そのハードウェアと異なる第2のハードウェアの動作に関わる制御信号を生成し、生成した制御信号を、バスを介して第2のハードウェアに出力するようにした。従って、プロセッサへの割り込み処理を行わずにハードウェアモジュールの動作を制御することが可能になる。
また、本発明のその他の特徴によれば、ハードウェアの状態に基づいて、プロセッサへ供給されるクロックを制御するための制御信号を生成するようにした。従って、例えば、プロセッサが停止している状況においても、ハードウェアの動作を制御することが可能になる。
また、本発明のその他の特徴によれば、ハードウェアの状態を検出する間隔をあけるようにしたので、バスの負荷を軽減することが可能になる。
更に、本発明のその他の特徴によれば、ハードウェアの状態を検出する間隔をプログラマブルに設定可能にしたので、ハードウェアの状態の検出頻度を調整することが可能になる。
また、本発明のその他の特徴によれば、制御信号の出力先のアドレスと、制御信号に含めるデータとをプログラマブルに設定可能にしたので、様々なハードウェアを様々な形態で制御することが可能になる。
また、本発明のその他の特徴によれば、状態を検出するハードウェアのアドレスをプログラマブルに設定可能にしたので、様々なハードウェアの状態を検出することが可能になる。
また、本発明のその他の特徴によれば、ハードウェアの状態を判別するための条件をプログラマブルに設定可能にしたので、様々な条件でハードウェアの状態を判別することが可能になる。
(第1の実施形態)
以下に、図面を参照しながら、本発明の第1の実施形態について説明する。
まず、本実施形態のバスマスタ回路の基本構成を説明する。図1は、バスマスタ回路の基本構成の一例を示す図である。
図1において、バスマスタ回路101は、バスマスタ機能ブロック102、状態検出ブロック103、条件判定ブロック104、ハードウェア制御ブロック105、制御レジスタ群106、及びバススレーブ機能ブロック107を有する。
バスマスタ機能ブロック102は、システムバス108のバスプロトコルに従って、バスマスタとしてシステムバス108にアクセス(バスアクセス)するためのマスタインターフェースのブロックである。
状態検出ブロック103は、システムバス108に接続されたハードウェアの内部状態を表示するレジスタの設定を読み出すことを、バスマスタ機能ブロック102に継続的に要求する。以下の説明では、この要求を必要に応じてリード要求と称する。また、システムバス108に接続されたハードウェアの内部状態を表示するレジスタの設定を、必要に応じてリードデータと称する。そして、状態検出ブロック103は、リード要求に基づいてバスマスタ機能ブロック102が取得したリードデータを受け取る。また、状態検出ブロック103は、システムバス108に接続されたハードウェアの内部状態を表示するレジスタのアドレスや、ポーリングを行う間隔等、バスマスタ回路101が行うポーリングを制御する。
条件判定ブロック104は、状態検出ブロック103からリードデータを受け取り、受け取ったリードデータと判定条件とを比較して、条件を満たしているか否かを判定するブロックである。そして、条件判定ブロック104は、判定した条件を満たしているか否かを示す条件判定フラグを生成する。
ハードウェア制御ブロック105は、条件判定ブロック104から条件判定フラグを受け取り、受け取った条件判定フラグに基づき、システムバス108に接続されたプロセッサやハードウェアを制御するための制御信号を生成するブロックである。
制御レジスタ群106は、バスマスタ回路101の動作設定を行うレジスタ群である。このレジスタ群は、例えば、システムバス108に接続されたCPU等によってプログラマブルに設定される。
バススレーブ機能ブロック107は、システムバス108に接続されたCPU等が制御レジスタ群106にアクセスするためのインターフェースである。このバススレーブ機能ブロック107は、システムバス108のバスプロトコルに従って、バススレーブとしてシステムバス108とアクセス(バスアクセス)するためのスレーブインターフェースのブロックである。
次に、システムバス108に接続されたハードウェアの内部状態を表示するレジスタを、バスマスタ回路101を用いてポーリングし、ポーリングした結果に基づいて、プロセッサやハードウェアを制御する手法の具体例を詳細に述べる。ここでは、バスマスタ回路101の要件の一つであるハードウェア制御ブロック105を、システムバス108に接続されたCPUに対する割り込み信号を生成する機能を有する割り込み信号生成ブロックで構成する場合を例に挙げて説明する。
図2は、CPUに対する割り込み信号を生成するバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。
図2において、システムLSIは、CPU201、バスマスタ回路202、外部通信モジュール203、及びシステムバス108を備えて構成される。尚、システムLSIには、これら以外に、例えばROMやRAM等も存在している。
バスマスタ回路202は、バスマスタ機能ブロック205、状態検出ブロック206、条件判定ブロック207、割り込み信号生成ブロック208、制御レジスタ群209、及びバススレーブ機能ブロック210を有する。このバスマスタ回路202は、割り込み信号(interrupt)217を生成し、生成した割り込み信号217を、システムバス108を介してCPU201に送信する。
バスマスタ機能ブロック205は、システムバス108のバスプロトコルに従って、バスマスタとしてシステムバス108とアクセス(バスアクセス)するためのマスタインターフェースのブロックである。
状態検出ブロック206は、バスマスタ機能ブロック205にリード要求を行うリード要求制御ブロック206aと、バスマスタ機能ブロック205からリードデータを受信するレジスタ(DataReg)206bとを有する。また、状態検出ブロック206は、制御レジスタ群209から信号(En、Sts_Addr)221、222を受け取る。尚、信号(En、Sts_Addr)221、222の詳細については後述する。
リード要求制御機能ブロック206aは、バスマスタ機能ブロック205とのインターフェースを有する。このリード要求制御機能ブロック206aは、リードリクエスト信号(req)232とアクセス終了信号(done)233とのハンドシェークで、アドレス信号(addr)231とリードデータ(rdata)234との受け渡しを行う。
制御レジスタ群209のポーリング制御レジスタ211から送信された信号(En)221がポーリングの開始を示すものであるとき(En=0x1のとき)、リード要求制御機能ブロック206aは、バスマスタ機能ブロック205にリード要求を行う。具体的にリード要求制御機能ブロック206aは、ポーリングするターゲットとなるレジスタのアドレスを、ターゲットアドレスレジスタ212から出力された信号(Sts_Addr)222から読み取る。そして、リード要求制御機能ブロック206aは、リードリクエスト信号(req)232とアクセスアドレス信号(addr)231とをバスマスタ機能ブロック205に発行する。
また、リード要求制御機能ブロック206aは、アクセス終了信号(done)233とリードデータ(rdata)234とをバスマスタ機能ブロック205から受信する。リード要求制御機能ブロック206aは、受信したリードデータ(rdata)234を内部のレジスタ206bに格納する。尚、制御レジスタ群209のポーリング制御レジスタ211から送信された信号(En)221がポーリングの開始を示すものでないときは(En=0x0のときは)、リード要求制御機能ブロック206aは、リード要求を行わない。
条件判定ブロック207は、状態検出ブロック206からレジスタ206bの出力信号(data)241を受け取り、その出力信号(data)241(すなわちリードデータ)と判定条件とを比較し、条件を満たしているか否かを判定するブロックである。そして、条件判定ブロック207は、判定した条件を満たしているか否かを示す条件判定フラグの信号(flag)242を生成する。また、条件判定ブロック207は、制御レジスタ群209の判定データレジスタ223から信号(Cond_Val)223を、判定マスクレジスタ214から信号(Cond_Mask)224を受け取る。尚、信号(Cond_Val、Cond_Mask)223、224の詳細については後述する。
図3は、条件判定ブロック207の構成の一例を示す図である。
図3において、比較器501は、排他的NOR回路で構成される。信号(raw_flag)511a〜511cは、信号(data)241a〜241cと、信号(Cond_Val)223a〜223cとのビット毎の比較の結果である。この比較の結果、信号(data)241a〜241cと、信号(Cond_Val)223a〜223cとが一致すれば、信号(raw_flag)511として「1」が出力される。一方、信号(data)241a〜241cと、信号(Cond_Val)223a〜223cとが不一致であれば、信号(raw_flag)511として「0」が出力される。
セレクタ502は、比較器501から出力された信号(raw_flag)511と、マスクデータである信号(Cond_Mask)224とを選択する。セレクタ502は、信号(Cond_Mask)224が「1」のときに、その信号(Cond_Mask)224を出力し、信号(raw_flag)511はマスクされる。一方、信号(Cond_Mask)224が「0」のとき、セレクタ502は、信号(raw_flag)511を出力する。論理積回路503は、セレクタ502から出力された信号の全ビットの論理積を演算する。論理積回路503は、演算した結果に基づく条件判定フラグを信号(flag)242として割り込み信号生成ブロック208に出力する。条件判定フラグは、信号(Cond_Mask)224でマスクされたビット以外の信号(raw_flag)511が全て「1」のときに「1」となり、それ以外のときには「0」となる。
図2に説明を戻し、割り込み信号生成ブロック208は、条件判定ブロック207から条件判定フラグの信号(flag)242を受け取り、割り込み信号(interrupt)217を生成するブロックである。また、制御レジスタ群209の信号生成制御レジスタ215から信号(Polarity)225を、クリアレジスタ216から信号(Clear)226を受け取る。尚、信号(Polarity、Clear)225、226の詳細については後述する。
図4は、割り込み信号生成ブロック208の構成の一例を示す図である。
図4において、割り込み信号制御部601は、条件判定フラグの信号(flag)242から、正論理の割り込み信号(int)611を生成する。具体的に、クリアレジスタ216からの信号(Clear)226が「0」である場合、割り込み信号制御部601は、条件判定フラグの信号(flag)242から、正論理の割り込み信号(int)611を生成する(int=1)。一方、クリアレジスタ216からの信号(Clear)226が「0」である場合に、割り込み信号制御部601は、正論理の割り込み信号(int)611をネゲートする(int=0)。
セレクタ602は、割り込み信号制御部601から出力された割り込み信号(int)611の極性を選択する。セレクタ602は、信号(Polarity)225が「0」のとき、割り込み信号(interrupt)217として正論理の割り込み信号(int)611を出力する。一方、信号(Polarity)225が「1」のとき、セレクタ602は、割り込み信号(interrupt)217として正論理の割り込み信号(int)611を反転させた負論理の割り込み信号を出力する。
図2に説明を戻し、制御レジスタ群209は、状態検出ブロック206、条件判定ブロック207、及び割り込み信号生成ブロック208の動作を制御する信号のソースレジスタを有するブロックである。CPU201が各レジスタ211〜216の設定をプログラマブルに行う。
ポーリング制御レジスタ211は、ポーリングのスタート及びストップを制御するものであり、ポーリングのスタート、ストップを示す信号(En)221を状態検出ブロック206に出力する。図5(a)に、ポーリング制御レジスタ211の仕様の一例を示す。図5(a)において、Bitsはビット構成を示し、Nameは信号名を示し、Accessは属性を示し、Functionは機能を示す。ここで、属性のRはリードを示し、Wはライトを示す。ポーリング制御レジスタ211の0ビット目Enが「1」に設定されると、ポーリングをスタートさせる。すなわち、ポーリング制御レジスタ211は、「0x1」を示す信号(En)221を状態検出ブロック206に出力する。一方、ポーリング制御レジスタ211の0ビット目Enが「0」に設定されると、ポーリングをストップさせる。すなわち、ポーリング制御レジスタ211は、「0x0」を示す信号(En)221を状態検出ブロック206に出力する。
ターゲットアドレスレジスタ212は、ポーリングするターゲットのレジスタ(例えばFIFOデータポインタレジスタ204)のアドレスを設定するものであり、そのアドレスを示す信号(Sts_Addr)222を状態検出ブロック206に出力する。図5(b)に、ターゲットアドレスレジスタ212の仕様の一例を示す。図5(b)に示すように、本実施形態では、信号(Sts_Addr)222を32ビットの構成としている。また、信号(Sts_Addr)222のビット幅を、使用するシステムバス108のアドレス幅と同じにしている。
判定データレジスタ213は、条件判定ブロック207における比較条件となるデータを設定するためのものであり、比較条件となるデータを示す信号(Cond_Val)223を条件判定ブロック207に出力する。図5(c)に、判定データレジスタ213の仕様の一例を示す。図5(c)に示すように、本実施形態では、信号(Cond_Val)223を32ビットの構成としている。また、信号(Cond_Val)223のビット幅を、使用するシステムバス108のデータ幅と同じにしている。
判定データマスクレジスタ214は、条件判定をマスクするビットをビット毎に設定するためのものであり、その設定を示す信号(Cond_Mask)224を条件判定ブロック207に出力する。図5(d)に、判定データマスクレジスタ214の仕様の一例を示す。図5(d)に示すように、本実施形態では、信号(Cond_Mask)224を32ビットの構成としている。信号(Cond_Mask)224のビット幅を、使用するシステムバス108のデータ幅と同じにしている。図3に示したように、本実施形態では、信号(Cond_Mask)224を用いて、条件判定をマスクするビットをビット毎にマスクする。また、前述したように、該当するビットに対応する信号(Cond_Mask)224に「1」が設定されると、そのビットにおける条件判定がマスクされる。
信号生成制御レジスタ215は、生成する割り込み信号(interrupt)217を制御するためのものであり、信号(Polarity)225を割り込み信号生成ブロック208に出力する。図5(e)に、信号生成制御レジスタ215の仕様の一例を示す。図5(e)に示すように、信号生成制御レジスタ215の0ビット目Polarityが「0」に設定されると、正論理の割り込み信号217が生成され、「1」に設定されると、負論理の割り込み信号217が生成される(図4を参照)。
クリアレジスタ216は、割り込み信号217をクリアするためのものであり、信号(Clear)226を割り込み信号生成ブロック208に出力する。図5(f)に、割り込みクリアレジスタ216の仕様の一例を示す。割り込みクリアレジスタ216の0ビット目Clearが「1」に設定されると、割り込み信号217がクリアされる。そして、割り込み信号217がクリアされると、割り込みクリアレジスタ216の0ビット目Clearは、自動的に「0」に戻る。
バススレーブ機能ブロック210は、CPU201が制御レジスタ群209にアクセスするためのインターフェースである。このバススレーブ機能ブロック210は、システムバス108のバスプロトコルに従って、バススレーブとしてシステムバス108とアクセス(バスアクセス)するためのスレーブインターフェースのブロックである。
外部通信モジュール203は、外部からのデータを送受信するブロックであり、データ受信用に1byte、16段のFIFO(First-In First-Out)を内蔵する。本実施形態では、FIFOに存在するデータ数を示すデータポインタレジスタ204が、アドレス「0xA000_0000」にマッピングされているとする。
図6は、データポインタレジスタ204の仕様の一例を示す図である。図6に示すように、4ビットのデータでFIFOに存在するデータ数を示し、データポインタレジスタ204の値は、「0x0」から「0xf」まで変化する。データポインタレジスタ204は、データを受信して、FIFOがフルになり、データポインタレジスタ204の値が「0xf」になると、正論理の割り込み信号(int_full)218を、システムバス108を介してCPU201に通知する。
次に、図2に示すシステムLSIの動作の一例について説明する。ここでは、バスマスタ回路202が、外部通信モジュール203のFIFOがフルになる一歩手前の状態(すなわち、データポインタレジスタ204の値が「0xe」となったこと)を検出して割り込み信号217を生成する場合を例に挙げて説明する。
まず、CPU201は、ポーリングするFIFOデータポインタレジスタ204のアドレス「0xA000_0000」をターゲットアドレスレジスタ212に設定する。これにより、ターゲットアドレスレジスタ212から出力される信号(Sts_Addr)222は、「0xA000_0000」を示す信号となる(Sts_Addr=0xA000_0000)。
次に、CPU201は、条件判定ブロック207における比較条件となるデータとして「0xe」を判定データレジスタ213に設定する。これにより、判定データレジスタ213から出力される信号(Cond_Val)223は、「0xe」を示す信号となる(Cond_Val=0xe)。
またここでは、条件判定ブロック207で比較を行うデータは4ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、CPU201は、「0xffff_fff0」を判定マスクレジスタ214に設定する。これにより、判定マスクレジスタ214から出力される信号(Cond_Mask)224は、「0xffff_fff0」を示す信号となる(Cond_Mask=0xffff_fff0)。
次に、CPU201は、信号生成制御レジスタ215に「0x0」を設定する。これにより、信号生成制御レジスタ215から出力される信号225は、「0x0」を示す信号となる(Porality=0x0)。そして、CPU201は、ポーリング制御レジスタ211に「0x1」を設定する。これにより、ポーリング制御レジスタ211から状態検出ブロック206に出力される信号221は、「0x1」となり(En=0x1)、ポーリングがスタートする。
ポーリングがスタートすると、状態検出ブロック206はバスマスタ機能ブロック205にリード要求を行う。ここで、図7のフローチャートを参照しながら、バスマスタ機能ブロック205にリード要求を行う際の状態検出ブロック206の動作の一例を説明する。
まず、ステップS701において、リード要求制御機能ブロック206aは、ポーリング制御レジスタ211から出力された信号(En)221が「1」であるか否かを判断し、ポーリングをスタートする状態であるか否かを判断する。この判断の結果、ポーリングをスタートする状態でなければ、処理を終了する。一方、ポーリングをスタートする状態であれば、ステップS702に進む。
ステップS702に進むと、リード要求制御機能ブロック206aは、ターゲットアドレスレジスタ212の設定値「0xA000_0000」をアドレス信号(addr)231とする。更にリード要求制御機能ブロック206aは、リードリクエスト信号(req)232をアサート(assert)する。すなわち、「1」を示すリードリクエスト信号(req)232をバスマスタ機能ブロック205に出力する(req=1)。
次に、ステップS703において、リード要求制御機能ブロック206aは、アクセス終了信号(done)233がアサートされたか否かを判断する。すなわち、バスマスタ機能ブロック205から送信されたアクセス終了信号(done)233が「1」であるか否かを判断する。この判断の結果、アクセス終了信号(done)233がアサートされない場合(バスマスタ機能ブロック205から送信されたアクセス終了信号(done)233が「1」でない場合)には、処理を終了する。一方、アクセス終了信号(done)233がアサートされた場合(バスマスタ機能ブロック205から送信されたアクセス終了信号(done)233が「1」の場合)には、ステップS704に進む。
ステップS704に進むと、リード要求制御機能ブロック206aは、リードリクエスト信号(req)232をネゲート(negate)する。すなわち、「0」を示すリードリクエスト信号(req)232をバスマスタ機能ブロック205に出力する(req=0)。
次に、ステップS705において、リード要求制御機能ブロック206aは、バスマスタ機能ブロック205から出力されたリードデータ(rdata)234と、レジスタ206bに設定されているリードデータとを比較する。そして、リード要求制御機能ブロック206aは、リードデータに変化があるか否かを判断する。この判断の結果、リードデータに変化がない場合には処理を終了する。一方、リードデータに変化がある場合には、ステップS706に進む。ステップS706に進むと、リード要求制御機能ブロック206aは、バス機能ブロック205から出力されたリードデータ(rdata)234の値を、レジスタ206bに設定する。
図2に説明を戻し、外部通信モジュール203に内蔵されているFIFOにデータが溜まっていくと、レジスタ206bの値は、「0x0、0x1、・・・」と変化する。従って、条件判定ブロック207が入力する信号(data)241も、「0x0、0x1、・・・」と変化する。ここで、判定マスクレジスタ214から出力される信号(Cond_Mask)224は、「0xffff_fff0」である(Cond_Mask=0xffff_fff0)。従って、条件判定ブロック207が出力する条件判定フラグの信号(flag)242は、以下の(1)式が成り立つ間は「0」となる(flag=0)。また、条件判定フラグの信号(flag)242は、以下の(2)式が成り立つ間(すなわち、信号(data)241が「0xe」を示している間)は「1」となる(flag=1)。
data[3:0]≠Cond_Val[3:0] ・・・(1)
data[3:0]=Cond_Val[3:0] ・・・(2)
条件判定フラグの信号(flag)242が「1」になると(flag=1)、割り込み信号生成ブロック208の割り込み信号制御部601は正論理の割り込み信号(int)611を生成する(int=1)。ここで、図8のフローチャートを参照しながら、割り込み信号生成ブロック208の動作の一例を説明する。
まず、ステップS801において、割り込み信号制御部601は、条件判定フラグの信号(flag)242が立ち上がりエッジを有しているか否かを判断する。この判断の結果し、条件判定フラグの信号(flag)242が立ち上がりエッジを有していない場合には、ステップS802を省略して後述するステップS803に進む。一方、条件判定フラグの信号(flag)242が立ち上がりエッジを有している場合には、ステップS802に進む。
ステップS802に進むと、割り込み信号制御部601は、正論理の割り込み信号(int)をアサートする(int=1)。
次に、ステップS803において、割り込み信号制御部601は、クリアレジスタ216からの信号(Clear)226がアサートされているか否か(クリアレジスタ216からの信号(Clear)226が「1」であるか否か)を判断する。この判断の結果、クリアレジスタ216からの信号(Clear)226がアサートされていない場合(クリアレジスタ216からの信号(Clear)226が「1」でない場合)には、処理を終了する。一方、クリアレジスタ216からの信号(Clear)226がアサートされている場合(クリアレジスタ216からの信号(Clear)226が「1」である場合)には、ステップS804に進む。
ステップS804に進むと、割り込み信号生成ブロック208は、正論理の割り込み信号(int)611と、クリアレジスタ216からの信号(Clear)226とをネゲートする(int=0、Clear=0)。
図2に説明を戻し、クリアレジスタ216からの信号(Clear)226が「0」である場合には、割り込み信号制御部601は、正論理の割り込み信号(int)611を出力する(int=1)。ここでは、信号生成制御レジスタ215から出力された信号(Polarity)225が「0」に設定されている(Polarity=0x0)。従って、セレクタ602は、割り込み信号(interrupt)217として、正論理の割り込み信号(int)611を選択する。そして、セレクタ602は、「1」を示す割り込み信号(interrupt)217を、システムバス108を介してCPU201に出力する。
CPU201は、割り込み信号生成ブロック208から出力された割り込み信号(interrupt)217による割り込み通知を受けて、外部通信モジュール203に内蔵されているFIFOがフルになる一歩手前の状態で、所定の処理を行う。そして、CPU201は、割り込みをクリアする。割り込みのクリアは、割り込みクリアレジスタ216に「0x1」を設定することにより行われる。割り込みクリアレジスタ216に「0x1」が設定されると(Clear=0x1)、割り込み信号制御部601は、図8のフローチャートに従い、正論理の割り込み信号(int)611をネゲートする。これにより、「0」を示す割り込み信号(interrupt)217が出力され、割り込みがクリアされる。
以上のように本実施形態では、状態検出ブロック206が、外部通信モジュール203のFIFOにおけるデータ量を検出する。状態検出ブロック206の検出結果に基づいて、条件判定ブロック207が、割り込み信号217の生成条件を満たしているか否かを判定する。割り込み信号217の生成条件を満たしている場合に、割り込み信号生成ブロック208は、割り込み信号217を生成してCPU201に出力する。CPU201は、この割り込み信号217に基づいて、所定の処理を行う。
従って、従来ではCPU201がポーリングを行って外部通信モジュール203の内部状態を検出しなければならない場合であっても、バスマスタ回路202がCPU201の代わりにポーリングを行い、CPU201に割り込み通知を行える。これにより、CPU201の負荷を削減できると共に、外部通信モジュール203の内部状態を検出する際の処理速度を向上させることができる。更に、プロセッサ(CPU)を複数設ける必要がないので、外部通信モジュール203の内部状態を検出するためのハードウェア(例えば複数のプロセッサの共有メモリ)によってシステムLSIの面積が増加することを防止できる。この他、状態検出ブロック206が状態の検出を行うハードウェアのアドレスと、条件判定ブロック207によって判定される条件とをプログラマブルに設定するようにしたので、様々なハードウェアの状態を様々な条件で判別することが可能となる。
尚、本実施形態では、バスマスタ回路202がポーリングする対象のハードウェアを外部通信モジュール203としたが、バスマスタ回路202がポーリングする対象はこれに限定されない。すなわち、ハードウェア内部に内部状態を表示するレジスタを備えたハードウェアモジュールであれば、どのようなハードウェアであってもポーリングする対象とすることができる。
また、CPU201は、各レジスタ211〜216に対してプログラマブルに設定を行うので、各レジスタ211〜216への設定の順番は、前述したものに限定されない。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。本実施形態は、前述した第1の実施形態に、ポーリングするタイミングを調整する構成を追加したものである。従って、本実施形態の説明において、前述した第1の実施形態と同一の部分については、図1〜図8に付した符号と同一の符号を付す等して詳細な説明を省略する。尚、本実施形態でも、第1の実施形態と同様に、図1のハードウェア制御ブロック105を、システムバス108に接続されたCPU201に対する割り込み信号を生成する機能を有する割り込み信号生成ブロックで構成する場合を例に挙げて説明する。
図9は、CPUに対する割り込み信号を生成するバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。
バスマスタ回路202は、バスマスタ機能ブロック205、状態検出ブロック2206、条件判定ブロック207、制御信号生成ブロックとして割り込み信号生成ブロック208、制御レジスタ群2209、及びバススレーブ機能ブロック210を内蔵する。
状態検出ブロック2206は、第1の実施形態で説明したリード要求制御ブロック206a及びレジスタ(DataReg)206bと、ポーリング周期を計測するタイマー機能ブロック206cとを有する。
タイマー機能ブロック206cは、制御レジスタ群2209のポーリング周期設定レジスタ2217から、ポーリングを周期的に行うか否かを示す信号(Cyc_En)2227bを受け取る。また、タイマー機能ブロック206cは、ポーリングを周期的に行う場合には、その周期を示す信号(Cyc_Range)2227aを受け取る。尚、これらの信号(Cyc_Range、Cyc_En)2227の詳細については後述する。タイマー機能ブロック206cは、ポーリング周期設定レジスタ2217から出力された信号(Cyc_En)2227bが「0x1」を示すものである場合、リードリクエスト信号(req)232をアサートする間隔をタイマーで制御する。これにより、ポーリングの要求を周期的に行うことが可能になる。
制御レジスタ群2209は、状態検出ブロック2206、条件判定ブロック207、及び割り込み信号生成ブロック208の動作を制御する信号のソースレジスタを有するブロックである。CPU201が各レジスタ211〜216、2217の設定をプログラマブルに行う。
前述したように、ポーリング周期設定レジスタ2217は、ポーリングの周期設定を行うためのものであり、信号(Cyc_Range)2227a及び信号(Cyc_En)2227bを状態検出ブロック2206に出力する。図10は、ポーリング周期設定レジスタ2217の仕様の一例を示す図である。ポーリング周期設定レジスタ2217の0ビット目Cyc_Enが「1」に設定されると、周期的にポーリングを行う周期ポーリング動作モードとなる。また、ポーリング周期設定レジスタ2217の0ビット目Cyc_Enが「0」に設定されると、周期的でない通常のポーリングを行う通常ポーリング動作モードとなる。ポーリング周期設定レジスタ2217の0ビット目Cyc_Enを「1」に設定して周期ポーリング動作モードとする場合、ポーリング周期設定レジスタ2217の4〜31ビット目Cyc_Rangeにポーリングを行う周期が設定される。具体的にポーリング周期設定レジスタ2217の4〜31ビット目Cyc_Rangeにはポーリングする間隔として空けたい分のサイクル数が設定される。
次に、図9に示すシステムLSIの動作の一例について説明する。尚、本実施形態においても、外部通信モジュール203は、16段のFIFO(First-In First-Out)を内蔵するものとする。また、FIFOに存在するデータ数を示すデータポインタレジスタ204が、アドレス「0xA000_0000」にマッピングされているとする。また、バスマスタ回路2202が、外部通信モジュール203のFIFOがフルになる一歩手前の状態(すなわち、データポインタレジスタ204の値が「0xe」となったこと)を検出して割り込み信号217を生成するものとする。更に、状態検出ブロック2206が行うポーリングは3サイクル間隔で行われるものとする。
まず、CPU201は、ポーリングするFIFOデータポインタレジスタ204のアドレス「0xA000_0000」をターゲットアドレスレジスタ212に設定する。
次に、CPU201は、条件判定ブロック207における比較条件となるデータとして「0xe」を判定データレジスタ213に設定する。
またここでは、条件判定ブロック207で比較を行うデータは4ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、CPU201は、「0xffff_fff0」を判定マスクレジスタ214に設定する。
次に、CPU201は、信号生成制御レジスタ215に「0x0」を設定する。
更にここでは、3サイクル周期でポーリングを行うので、CPU201は、ポーリング周期設定レジスタ2217に「0x31」を設定する。これにより、ポーリング周期設定レジスタ2217から出力される信号(Cyc_Range)2227aは、「0x3」を示す信号となる(Cyc_Range=0x3)。また、信号(Cyc_En)2227bは、「0x1」を示す信号となる(Cyc_En=0x1)。
そして、CPU201は、ポーリング制御レジスタ211に「0x1」を設定して、ポーリングをスタートさせる。
ポーリングがスタートすると、状態検出ブロック206はバスマスタ機能ブロック205にリード要求を行う。ここで、図11のフローチャートを参照しながら、バスマスタ機能ブロック205にリード要求を行う際の状態検出ブロック2206の動作の一例を説明する。
まず、ステップS1101〜S1106は、図7に示したステップS701〜706と同じである。すなわち、状態検出ブロック206は、ポーリングをスタートする状態であるか否かを判断する(ステップS1101)。そして、ポーリングをスタートする状態であれば、リード要求制御機能ブロック206aは、ターゲットアドレスレジスタ212の設定値「0xA000_0000」をアドレス信号(addr)231とする。更に、リード要求制御機能ブロック206aは、リードリクエスト信号(req)232をアサート(assert)する(ステップS1102)。
次に、リード要求制御機能ブロック206aは、アクセス終了信号(done)233がアサートされたか否かを判断する(ステップS1103)。そして、アクセス終了信号(done)233がアサートされた場合、リード要求制御機能ブロック206aは、リードリクエスト信号(req)232をネゲート(negate)する(ステップS1104)。
次に、リード要求制御機能ブロック206aは、リードデータに変化があるか否かを判断する(ステップS1105)。この判断の結果、リードデータに変化がない場合にはステップS1106を省略して後述するステップS1107に進む。一方、リードデータに変化がある場合には、リード要求制御機能ブロック206aは、バス機能ブロック205から出力されたリードデータ(rdata)234の値を、レジスタ206bに設定する。
そして、ステップS1107に進むと、リード要求制御機能ブロック206aは、ポーリング周期設定レジスタ2217から出力された信号(Cyc_En)2227bの値を参照する。そして、リード要求制御機能ブロック206aは、動作モードが、周期ポーリング動作モード及び通常ポーリング動作モードの何れであるのかを判断する。この判断の結果、動作モードが通常ポーリング動作モードである場合には、処理を終了する。一方、動作モードが周期ポーリング動作モードである場合には、ステップS1108に進む。
ステップS1108に進むと、リード要求制御機能ブロック206aは、タイマー機能ブロック206cから信号(expired)2243がアサートされるまで待機する。すなわち、リード要求制御機能ブロック206aは、タイマー機能ブロック206cから、「1」を示す信号(expired)2243が出力されるまで待機する(expired=1)。
ここで、図12にタイミングチャートを参照しながら、次のポーリングの要求を3サイクル待たせる際の状態検出ブロック2206の動作の一例を説明する。
バスマスタ機能ブロック205からのアクセス終了信号(done)233を状態検出ブロック2206が受け取ると、次の処理を行う。すなわち、タイマー機能ブロック206cは、ポーリング周期設定レジスタ2217に設定されたサイクル数だけ、タイマーの値(timer)2244のデクリメントを開始する。
その後、タイマーの値(timer)2244が「0」になると、タイマー機能ブロック206cは、信号(expired)2243を1サイクルだけアサートする。信号(expired)2243がアサートされると、状態検出ブロック2206は、次のリードリクエスト信号(req)232をアサートする。これによりポーリングを行うことが可能となる。
尚、ポーリング周期設定レジスタ2217から出力された信号(Cyc_En)2227bが「0x0」の場合(Cyc_En=0x0)、状態検出ブロック2206は、このような周期的なポーリングを行わない。すなわち、状態検出ブロック2206は、アクセス終了信号(done)233がアサートされたらすぐに連続して次のポーリングの要求を発行する。
図9に説明を戻し、外部通信モジュール203に内蔵されているFIFOにデータが溜まっていくと、レジスタ206bの値は、「0x0、0x1、・・・」と変化する。従って、条件判定ブロック207が入力する信号(data)241も、「0x0、0x1、・・・」と変化する。ここで、判定マスクレジスタ214から出力される信号(Cond_Mask)224は、「0xffff_fff0」である(Cond_Mask=0xffff_fff0)。従って、条件判定ブロック207が出力する条件判定フラグの信号(flag)242は、前記(1)式が成り立つ間は「0」となる(flag=0)。また、条件判定フラグの信号(flag)242は、前記(2)式が成り立つ間(すなわち、信号(data)241が「0xe」を示している間)は「1」となる(flag=1)。
条件判定フラグの信号(flag)242が「1」になると(flag=1)、割り込み信号生成ブロック208の割り込み信号制御部601は正論理の割り込み信号(int)611を生成する(int=1)。尚、割り込み信号生成ブロック208の詳細な動作は、第1の実施形態で説明した通りである(図8を参照)。
そして、クリアレジスタ216からの信号(Clear)226が「0」である場合、割り込み信号制御部601は、正論理の割り込み信号(int)611を出力する(int=1)。ここでは、信号生成制御レジスタ215から信号(Polarity)225が「0」に設定されている(Polarity=0x0)。従って、セレクタ602は、割り込み信号(interrupt)217として、正論理の割り込み信号(int)611を選択する。そして、セレクタ602は、「1」を示す割り込み信号(interrupt)217を、システムバス108を介してCPU201に出力する。
CPU201は、割り込み信号生成ブロック208から出力された割り込み信号(interrupt)217による割り込み通知を受けて、外部通信モジュール203に内蔵されているFIFOがフルになる一歩手前の状態で、所定の処理を行う。そして、CPU201は、割り込みをクリアする。割り込みのクリアは、割り込みクリアレジスタ216に「0x1」を設定することにより行われる。割り込みクリアレジスタ216に「0x1」が設定されると(Clear=0x1)、割り込み信号制御部601は、図8のフローチャートに従い、正論理の割り込み信号(int)611をネゲートする。これにより、「0」を示す割り込み信号(interrupt)217が出力され、割り込みがクリアされる。
以上のように本実施形態では、タイマー機能ブロック206cを用いて、ポーリング周期設定レジスタ2217に設定されている周期でポーリングの要求を行うようにした。従って、第1の実施形態で説明した効果に加え、システムバス108にかかる負荷をより軽減できるという効果を有する。
また、ポーリングの要求を行う周期をプログラマブルに設定するようにしたので、システムに応じてポーリング要求頻度を調整することができる。
尚、本実施形態では、周期的にポーリングの要求を行うようにしたが、ポーリングの要求が時間的に間隔を有して行われれば、必ずしも周期的にポーリングの要求を行う必要はない(すなわち、ポーリングの要求を行う間隔は一定でなくてもよい)。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。前述した第1及び第2の実施形態では、外部通信モジュール203の内部状態に応じて、バスマスタ回路202がCPU201に割り込み信号を通知するようにした。これに対し、本実施形態では、バスマスタ回路が、ポーリングを行ったハードウェアの内部状態に応じて、ポーリングを行っていない他のハードウェアへアクセスするようにしている。このように、本実施形態と前述した第1及び第2の実施形態とは、バスマスタ回路の構成の一部、バスマスタ回路がポーリングするハードウェア、及びポーリングを行った後にバスマスタ回路がアクセスするハードウェアとが異なる。従って、本実施形態の説明において、前述した第1及び第2の実施形態と同一の部分については、図1〜図12に付した符号と同一の符号を付す等して詳細な説明を省略する。尚、本実施形態では、図1に示したハードウェア制御ブロック105を、クロック制御モジュールのレジスタの設定を行うバス転送制御ブロックで構成する場合を例に挙げて説明する。
図13は、クロック制御モジュールのレジスタの設定を行うバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。
図13において、システムLSIは、CPU201、バスマスタ回路3202、ポート制御モジュール1203、及びクロック制御モジュール1205を備えて構成される。
バスマスタ回路3202は、バスマスタ機能ブロック3205、状態検出ブロック206、条件判定ブロック207、バス転送制御ブロック1208、制御レジスタ群3209、及びバススレーブ機能ブロック210を内蔵する。本実施形態では、バス転送制御ブロック1208が、クロック制御モジュール1205のレジスタの設定を行う。
バスマスタ機能ブロック3205は、システムバス108のバスプロトコルに従って、バスマスタとしてシステムバス108とアクセス(バスアクセス)するためのマスタインターフェースのブロックである。
状態検出ブロック206は、前述したように、システムバスに接続されたハードウェアの内部状態を検出する。本実施形態では、状態検出ブロック206は、ポートステータスレジスタ1205の内部状態を検出する。
条件判定ブロック207は、前述したように、状態検出ブロック206の検出結果に基づいて、条件を満たしているか否かを判定する。本実施形態では、条件判定ブロック207は、クロックコントロールレジスタ1206へ書き込みを行うための条件を満たしているか否かを判定する。
バス転送制御ブロック1208は、条件判定ブロック207から、条件判定フラグの信号(flag)242の立ち上がりエッジを受け取り、バスマスタ機能ブロック3205に、クロックコントロールレジスタ1206への書き込み要求を行う。以下の説明では、クロックコントロールレジスタ1206への書き込み要求を必要に応じてライト転送の要求と称する。
バス転送制御ブロック1208は、バスマスタ機能ブロック3205とのインターフェースを有する。バス転送制御ブロック1208は、ライトリクエスト信号(req)3232とアクセス終了信号(done)3233のハンドシェークで、アドレス信号(addr)3231とライトデータ(wdata)3234をバスマスタ機能ブロック3235に渡す。また、バス転送制御ブロック1208は、制御レジスタ群209から、信号(Trf_Addr、Trf_Val)3216、3217を受け取る。この信号(Trf_Addr、Trf_Val)3216、3217の詳細については後述する。更に、バス転送制御ブロック1208は、状態検出ブロック206によるポーリング動作を停止させる場合に、ポーリング制御レジスタ211へ信号(Clear)3226を出力する。
制御レジスタ群3209は、状態検出ブロック206、条件判定ブロック207、及びバス転送制御ブロック1208の動作を制御する信号のソースレジスタを有するブロックである。CPU201が各レジスタ212〜214、1216〜1218の設定をプログラマブルに行う。
ポーリング制御レジスタ1218は、ポーリングのスタート及びストップを制御するためのものであり、ポーリングのスタート、ストップを示す信号(En)221を状態検出ブロック206に出力する。ポーリング制御レジスタ1218の仕様は、図5(a)に示したポーリング制御レジスタ211と同じである。ただし、ポーリング制御レジスタ1218は、バス転送制御ブロック1208から信号(Clear)3226を受け取った場合にも、ポーリングをストップさせる。すなわち、ポーリング制御レジスタ1218は、「0x0」を示す信号(En)221を状態検出ブロック206に出力する。
ターゲットアドレスレジスタ212は、前述したように、ポーリングするターゲットとなるレジスタのアドレスを設定するためのものであり、その仕様は、図5(b)に示した通りである。本実施形態では、ターゲットアドレスレジスタ212は、図13に示すポートステータスレジスタ1204のアドレスを設定する。
判定データレジスタ213は、前述したように、条件判定ブロック207における比較条件となるデータを設定するためのものであり、その仕様は、図5(c)に示した通りである。
判定データマスクレジスタ214は、前述したように、条件判定をマスクするビットをビット毎に設定するためのものであり、その仕様は、図5(d)に示した通りである。
転送アドレスレジスタ1216は、ポーリングを行うモジュールとは異なるモジュールのレジスタであって、データの書き換え対象となるレジスタのアドレスを設定するものである。この転送アドレスレジスタ1216は、そのアドレスを示す信号(Trf_Addr)3216をバス転送制御ブロック1208に出力する。図14(a)に、転送アドレスレジスタ1216の仕様の一例を示す。図14(a)に示すように、本実施形態では、信号(Trf_Addr)3216を32ビットの構成としている。また、信号(Trf_Addr)3216のビット幅を、使用するシステムバス108のアドレス幅と同じにしている。
転送データレジスタ1217は、データの書き換え対象のレジスタに書き込むデータを設定するものである。この転送データレジスタ1217は、そのデータを示す信号(Trf_Val)3217をバス転送制御ブロック1208に出力する。図14(b)に、転送データレジスタ1217の仕様の一例をに示す。図14(b)に示すように、本実施形態では、信号(Trf_Val)3217を32ビットの構成としている。また、信号(Trf_Val)3217のビット幅を、使用するシステムバス108のデータ幅と同じにしている。
バススレーブ機能ブロック210は、前述したように、CPU201が制御レジスタ群209にアクセスするためのインターフェースである。
ポート制御モジュール1203は、システムLSIの外部端子において汎用ポートとして割り当てられているポートの制御を行う。このポート制御モジュール1203は、外部端子の状態を示すポートステータスレジスタ1204を持つ。本実施形態では、ポートステータスレジスタ1204が、アドレス「0xA010_0000」にマッピングされているとする。図15(a)は、ポートステータスレジスタ1204の仕様の一例を示す図である。図15(a)に示すように、0ビット目〜7ビット目P0_Sts〜P7_Stsのそれぞれにおいて、外部端子P0〜P7の状態をポートステータスレジスタ1204から読み出すことができる。尚、ポートステータスレジスタ1204の設定は、例えばCPU201によってプログラマブルに行われる。
クロック制御モジュール1205は、システムLSIの各モジュールに供給されるクロックの制御を行う。このクロック制御モジュール1205は、各モジュールのクロックの設定を行うクロックコントロールレジスタ1206を持つ。本実施形態では、クロックコントロールレジスタ1206が、アドレス「0xA020_0000」にマッピングされているとする。
図15(b)は、クロックコントロールレジスタ1206の仕様の一例を示す図である。図15(b)に示すように、0ビット目CPU_clkに「1」が設定されると、CPU201にクロックが供給される。一方、0ビット目CPU_clkに「0」が設定されると、CPU201にクロックが供給されなくなる。尚、システムの起動時には、0ビット目CPU_clkに「1」が設定され、CPU201にクロックが供給された状態になる。
また、1〜2ビット目CPU_clk_frqに「0」が設定されると、CPU201のクロックの周波数は1MHzとなる。同様に、1〜2ビット目CPU_clk_frqに「1」が設定されると8MHz、「2」が設定されると64MHz、「3」が設定されると128MHzとなる。
次に、図14に示すシステムLSIの動作の一例について説明する。ここでは、CPU201のクロックを停止させて、低消費電力状態へシステムを移行させた後、外部端子の状態をポーリングして通常動作状態へ復帰させる場合を例に挙げて説明する。尚、通常動作状態への復帰は、外部端子P6、P7に対する設定が共に「1」になったときに行うとする。
まず、CPU201は、バスマスタ回路202の制御レジスタ群209に対する設定を行う。具体的にCPU201は、ポーリングする対象であるポートステータスレジスタ1204のアドレス「0xA010_0000」をターゲットアドレスレジスタ212に設定する。これにより、ターゲットアドレスレジスタ212から出力される信号(Sts_Addr)222は、「0xA010_0000」を示す信号となる(Sts_Addr=0xA000_0000)。
次に、CPU201は、条件判定ブロック207における比較条件となるデータとして「0xc0」を判定データレジスタ213に設定する。これにより、判定データレジスタから出力される信号(Cond_Val)223は、「0xc0」を示す信号となる(Cond_Val=0xc0)。
また、条件判定ブロック207で比較を行うデータは、6ビット目と7ビット目の2ビットであるので、それ以外のビットの比較を行う必要はない。従って、その比較を行わないビットをマスクするために、CPU201は、「0xffff_ff3f」を判定マスクレジスタ214に設定する。これにより、判定マスクレジスタ214から出力される信号(Cond_Mask)224は、「0xffff_ff3f」を示す信号となる(Cond_Mask=0xffff_ff3f)。
そして、CPU201は、データの書き換え対象となるクロックコントロールレジスタ1206のアドレス「0xA020_0000」を転送アドレスレジスタ1216に設定する。これにより、クロックコントロールレジスタ1206から出力される信号(Trf_Addr)3216は、「0xA020_0000」を示す信号となる(Trf_Addr=0xA020_0000)。
次に、CPU201は、CPU201へクロックを供給し、クロック周波数を1MHzにするデータ「0x1」を転送データレジスタ1217に設定する。これにより、転送データレジスタ1217から出力される信号(Trf_Val)3217は、「0x1」となる(Trf_Val=0x1)。
そして、CPU201は、ポーリング制御レジスタ211に「0x1」を設定する。これにより、ポーリング制御レジスタ211から出力される信号221は、「0x1」となり(En=0x1)、ポーリングがスタートする。
その後、CPU201は、バスマスタ回路202を動作させた後、クロックコントロールレジスタ1206の0ビット目CPU_clkを「0」に設定する。そうすると、CPU201へクロックが供給されなくなり、低消費電力状態へ移行する。
ポーリング制御レジスタ211から出力された信号(En)221が「0x1」になると(En=0x1)、状態検出ブロック206は、バスマスタ機能ブロック205にリード要求を行う。状態検出ブロック206がバスマスタ機能ブロック205にリード要求を行う際の動作は、図7に示した通りである。
そして、バスマスタ機能ブロック3205によるポートステータスレジスタ1204のポーリングの結果によって得られる外部端子P0〜P7の変化に応じて、レジスタ206bの値は、「0x13、0x19、・・・」と変化する。従って、条件判定ブロック207が入力する信号(data)241も、「0x13、0x19、・・・」と変化する。ここで、判定マスクレジスタ214から出力される信号(Cond_Mask)224は、「0xffff_ff3f」である(Cond_Mask=0xffff_ff3f)。従って、条件判定ブロック207が出力する条件判定フラグの信号(flag)242は、以下の(3)式が成り立つ間は「0」であり(flag=0)、以下の(4)式が成り立つ間は「1」となる(flag=1)。
data[7:6]≠Cond_Val[7:6] ・・・(3)
data[7:6]=Cond_Val[7:6](data[7:6]=b11(2進数)) ・・・(4)
条件判定フラグの信号(flag)242が「1」になると(flag=1)、バス転送制御ブロック1208は、バスマスタ機能ブロック205にライト転送の要求を行うと共に、信号(Clear)3226をポーリング制御レジスタ211へ出力する。ここで、図16のフローチャートを参照しながら、バスマスタ機能ブロック205へのライト転送の要求と、ポーリング制御レジスタ211への信号(Clear)3226の出力とを行う際のバス転送制御ブロック1208の動作の一例を説明する。
まず、ステップS1601において、バス転送制御ブロック1208は、条件判定フラグの信号(flag)242が立ち上がりエッジを有しているか否かを判断する。この判断の結果、条件判定フラグの信号(flag)242が立ち上がりエッジを有していない場合には、条件判定フラグの信号(flag)242が立ち上がりエッジを有するまで待機する。一方、条件判定フラグの信号(flag)242が立ち上がりエッジを有している場合には、ステップS1602に進む。
ステップS1602に進むと、バス転送制御ブロック1208は、ポーリング動作を停止させるために、信号(Clear)3226をポーリング制御レジスタ1218に出力する。
次に、ステップS1602において、バス転送制御ブロック1208は、転送アドレスレジスタ212の設定値「0xA020_0000」をアドレス信号(addr)に含める。また、バス転送制御ブロック1208は、ライトデータ(wdata)3234に転送データレジスタの設定値「0x1」を含める。そして、バス転送制御ブロック1208は、ライトリクエスト信号(req)3232をアサートする(req=1)。すなわち、バス転送制御ブロック1208は、「1」を示すライトリクエスト信号(req)3232をバスマスタ機能ブロック3205に出力する。これにより、バス転送制御ブロック1208からバスマスタ機能ブロック205へ、ライト転送の要求がなされる。
次に、ステップS1604において、バス転送制御ブロック1208は、アクセス終了信号(done)3233がアサートされたか否かを判断する。すなわち、バス転送制御ブロック1208は、バスマスタ機能ブロック205から送信されたアクセス終了信号(done)3233が「1」であるか否かを判断する。この判断の結果、アクセス終了信号(done)3233がアサートされない場合(バスマスタ機能ブロック3205から送信されたアクセス終了信号(done)3233が「1」でない場合)には、アサートされるまで待機する。一方、アクセス終了信号(done)3233がアサートされた場合(バスマスタ機能ブロック3205から送信されたアクセス終了信号(done)3233が「1」の場合)には、ステップS1605に進む。
ステップS1605に進むと、バス転送制御ブロック1208は、リードリクエスト信号(req)3232をネゲート(negate)する。すなわち、バス転送制御ブロック1208は、「0」を示すリードリクエスト信号(req)3232をバスマスタ機能ブロック3205に出力する(req=0)。
以上のようにしてバス転送制御ブロック1208からバスマスタ機能ブロック3205になされたライト転送の要求により、バスマスタ機能ブロック3205は、クロック制御モジュール1205にライト転送を行う。そうすると、クロックコントロールレジスタ1206に「0x1」が設定され、CPU201に1MHzのクロックが供給され、通常動作状態へ復帰する。
以上のように本実施形態では、状態検出ブロック3206が、ポートステータスレジスタ1204の設定をポーリングし、外部端子P0〜P7の状態を検出する。状態検出ブロック3206の検出結果に基づいて、条件判定ブロック207は、低消費電力状態から通常動作状態にシステムを復帰させるための条件を満たしているか否かを判定する。低消費電力状態から通常動作状態にシステムを復帰させるための条件を満たすと、バス転送制御ブロック1208は、クロックコントロールレジスタ1206への書き込み要求(ライト転送の要求)をバスマスタ機能ブロック3205に行う。バスマスタ機能ブロック3205は、バス転送制御ブロック1208からなされたライト転送の要求に従って、クロックコントロールレジスタ1206の書き換え指示(ライト転送)を行う。クロック制御モジュール1205は、クロックコントロールレジスタ1206は、ライト転送に従ってクロックコントロールレジスタ1206の設定値を変更する。そうすると、CPU201は、その変更に従って、低消費電力状態から通常動作状態にシステムを復帰させる。
以上のようにすることによって、バスマスタ回路3202は、低消費電力状態でCPU201が停止している状況でも、CPU201に代わりにポートステータスレジスタ1204をポーリングして通常動作状態へ復帰する条件が成立したことを検出できる。そして、バスマスタ回路3202がクロックコントロールレジスタ1206の設定を行うことができる。従って、CPU201への割り込み処理を行わずにクロックコントロールレジスタ1206の設定を行って、通常動作状態へ復帰させることができる。これにより、CPU201の負荷を削減できると共に、ポート制御モジュール1203(ポートステータスレジスタ1204)の内部状態を検出する際の処理速度を向上させることができる。更に、プロセッサ(CPU)を複数設ける必要がないので、ポート制御モジュール1203(ポートステータスレジスタ1204)の内部状態を検出するためのハードウェアによってシステムLSIの面積が増加することを防止できる。この他、データの書き換え対象となるレジスタのアドレスと、データの内容とをプログラマブルに設定するようにしたので、様々なハードウェアを様々な形態で制御することが可能になる。
尚、本実施形態では、バスマスタ回路3202がポーリングする対象のハードウェアをポート制御モジュール1203としたが、第1及び第2の実施形態と同様に、バスマスタ回路3202がポーリングする対象はこれに限定されない。すなわち、ハードウェア内部に内部状態を表示するレジスタを備えたハードウェアモジュールであれば、どのようなハードウェアであってもポーリングする対象とすることができる。
また、本実施形態では、設定対象のレジスタをクロック制御モジュール1205内のクロックコントロールレジスタ1206としたが、設定対象のレジスタはこれに限定されない。すなわち、バス転送により設定が可能なレジスタを有するハードウェアモジュールであれば、どのようなハードウェアモジュール内のレジスタであっても設定対象とすることができる。
また、本実施形態では、バス転送制御ブロック1208がライト転送をバスマスタ機能ブロック3205に要求するようにしたが、必ずしもライト転送を要求しなくてもよい。例えば、ハードウェアモジュールの内部状態の読み出しの要求(リード転送の要求)を行ってもよい。また、リード転送を行うことによって読み出されたデータに応じて所定のビットを対象に操作を行ったデータの書き込みの要求(read-modify-write転送の要求)を行ってもよい。また、通常動作状態時にCPU201がプログラマブルにクロックコントロールレジスタ1206の設定を行えるようにしてもよい。
また、転送アドレスレジスタ1216及び転送データレジスタ1217を複数設け、バス転送制御ブロック1208が複数のレジスタを設定対象としてライト要求等を行えるようにしてもよい。
また、第2の実施形態と同様に、ポーリング周期設定レジスタ2217とタイマー機能ブロック206cとを設け、ポーリング周期設定レジスタ2217に設定されている周期でポーリングの要求を行うようにしてもよい。このようにすれば、システムバス108にかかる負荷をより軽減することができる。
また、本実施形態では、転送方向レジスタを更に設け、この転送方向レジスタを用いることにより転送方向をプログラマブルに設定することもできる。
(本発明の他の実施形態)
前述した実施形態の機能を実現するべく各種のデバイスを動作させるように、該各種デバイスと接続された装置あるいはシステム内のコンピュータに対し、前記実施形態の機能を実現するためのソフトウェアのプログラムコードを供給してもよい。そのシステムあるいは装置のコンピュータ(CPUあるいはMPU)に格納されたプログラムに従って前記各種デバイスを動作させることによって実施したものも、本発明の範疇に含まれる。
また、この場合、前記ソフトウェアのプログラムコード自体が前述した実施形態の機能を実現することになる。また、そのプログラムコード自体、及びそのプログラムコードをコンピュータに供給するための手段、例えば、かかるプログラムコードを格納した記録媒体は本発明を構成する。かかるプログラムコードを記憶する記録媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが供給されたプログラムコードを実行することにより、前述の実施形態の機能が実現されるだけでない。そのプログラムコードがコンピュータにおいて稼働しているオペレーティングシステムあるいは他のアプリケーションソフト等と共同して前述の実施形態の機能が実現される場合にもかかるプログラムコードは本発明の実施形態に含まれることは言うまでもない。
さらに、供給されたプログラムコードがコンピュータの機能拡張ボードに備わるメモリに格納された後、そのプログラムコードの指示に基づいてその機能拡張ボードに備わるCPUが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
また、供給されたプログラムコードがコンピュータに接続された機能拡張ユニットに備わるメモリに格納された後、そのプログラムコードの指示に基づいて機能拡張ユニットに備わるCPU等が実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合にも本発明に含まれることは言うまでもない。
なお、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の第1の実施形態を示し、バスマスタ回路の基本構成の一例を示す図である。 本発明の第1の実施形態を示し、CPUに対する割り込み信号を生成するバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。 本発明の第1の実施形態を示し、条件判定ブロックの構成の一例を示す図である。 本発明の第1の実施形態を示し、割り込み信号生成ブロックの構成の一例を示す図である。 本発明の第1の実施形態を示し、制御レジスタ群の仕様の一例を示す図である。 本発明の第1の実施形態を示し、データポインタレジスタの仕様の一例を示す図である。 本発明の第1の実施形態を示し、バスマスタ機能ブロックにリード要求を行う際の状態検出ブロックの動作の一例を説明するフローチャートである。 本発明の第1の実施形態を示し、割り込み信号生成ブロックの動作の一例を説明するフローチャートである。 本発明の第2の実施形態を示し、CPUに対する割り込み信号を生成するバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。 本発明の第2の実施形態を示し、ポーリング周期設定レジスタの仕様の一例を示す図である。 本発明の第2の実施形態を示し、バスマスタ機能ブロックにリード要求を行う際の状態検出ブロックの動作の一例を説明するフローチャートである。 本発明の第2の実施形態を示し、次のポーリングの要求を3サイクル待たせる際の状態検出ブロックの動作の一例を説明するタイミングチャートである。 本発明の第3の実施形態を示し、クロック制御モジュールのレジスタの設定を行うバスマスタ回路を備えたシステムLSIの構成の一例を示す図である。 本発明の第3の実施形態を示し、転送アドレスレジスタの仕様の一例と、転送データレジスタの仕様の一例とを示す図である。 本発明の第3の実施形態を示し、ポートステータスレジスタの仕様の一例と、クロックコントロールレジスタの仕様の一例とを示す図である。 本発明の第3の実施形態を示し、バスマスタ機能ブロックへのライト転送の要求と、ポーリング制御レジスタへの信号(Clear)の出力とを行う際のバス転送制御ブロックの動作の一例を説明するフローチャートである。
符号の説明
101、202、2202、3202 バスマスタ回路
102、205、3205 バスマスタ機能ブロック
103、206、2206 状態検出ブロック
104、207 条件判定ブロック
105 ハードウェア制御ブロック
106、209、2209、3209 制御レジスタ群
107、210 バススレーブ機能ブロック
108 システムバス
201 CPU
203 外部通信モジュール
204 FIFOデータポインタレジスタ
208 割り込み信号生成ブロック
1203 ポート制御モジュール
1204 ポートステータスレジスタ
1205 クロック制御モジュール
1206 クロックコントロールレジスタ
1208 バス転送制御ブロック

Claims (23)

  1. プロセッサ及び1つ以上のハードウェアとバスを介して相互に接続されたバスマスタ回路であって、
    前記バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出手段と、
    前記検出手段により検出されたハードウェアの状態を判別する判別手段と、
    前記判別手段により判別されたハードウェアの状態に基づいて制御信号を生成する生成手段と、
    前記生成手段により生成された制御信号を前記バスに出力する出力手段とを有することを特徴とするバスマスタ回路。
  2. 前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサに対する割り込み信号を生成し、
    前記出力手段は、前記生成手段により生成された割り込み信号を、前記バスを介して、前記プロセッサに出力することを特徴とする請求項1に記載のバスマスタ回路。
  3. 前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、そのハードウェアと異なる第2のハードウェアの動作に関わる制御信号を生成し、
    前記出力手段は、前記生成手段により生成された制御信号を、前記バスを介して、前記第2のハードウェアに出力することを特徴とする請求項1に記載のバスマスタ回路。
  4. 前記生成手段は、前記判別手段により判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサへ供給されるクロックを制御するための制御信号を生成することを特徴とする請求項3に記載のバスマスタ回路。
  5. 前記検出手段は、バスを介して相互に接続されたハードウェアの状態を、間隔をあけて検出することを特徴とする請求項1〜4の何れか1項に記載のバスマスタ回路。
  6. 前記バスを介して相互に接続されたハードウェアの状態を検出する間隔がプログラマブルに設定される間隔設定手段を有し、
    前記検出手段は、バスを介して相互に接続されたハードウェアの状態を前記間隔設定手段に設定された間隔で検出することを特徴とする請求項5に記載のバスマスタ回路。
  7. 前記出力手段は、前記生成手段により生成された制御信号を、予め設定された内容に従って、前記バスにアクセスすることを特徴とする請求項1〜6の何れか1項に記載のバスマスタ回路。
  8. 前記制御信号の出力先のアドレスがプログラマブルに設定される出力先アドレス設定手段と、
    前記制御信号に含めるデータがプログラマブルに設定されるデータ設定手段とを有し、
    前記生成手段は、前記データ設定手段に設定されたデータを含む制御信号を生成し、
    前記出力手段は、前記バスを介して、前記出力先アドレス設定手段に設定されたアドレスに、前記生成手段により生成された制御信号を出力することを特徴とする請求項7に記載のバスマスタ回路。
  9. 前記データ設定手段に設定されたデータの転送方向がプログラマブルに設定される転送方向設定手段を有することを特徴とする請求項8に記載のバスマスタ回路。
  10. 前記検出手段により検出されるハードウェアのアドレスがプログラマブルに設定されるハードウェアアドレス設定手段を有し、
    前記検出手段は、前記ハードウェアアドレス設定手段に設定されたアドレスのハードウェアの状態を検出することを特徴とする請求項1〜9の何れか1項に記載のバスマスタ回路。
  11. 前記検出手段により検出されたハードウェアの状態を判別するための条件がプログラマブルに設定される条件設定手段を有し、
    前記判別手段は、前記検出手段により検出されたハードウェアの状態が、前記条件設定手段に設定された条件に該当するか否かを判別することを特徴とする請求項1〜10の何れか1項に記載のバスマスタ回路。
  12. バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、
    前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、
    前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、
    前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとを有することを特徴とするバス制御方法。
  13. 前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサに対する割り込み信号を生成し、
    前記出力ステップは、前記生成ステップにより生成された割り込み信号を、前記バスを介して、前記プロセッサに出力することを特徴とする請求項12に記載のバス制御方法。
  14. 前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、そのハードウェアと異なる第2のハードウェアの動作に関わる制御信号を生成し、
    前記出力ステップは、前記生成ステップにより生成された制御信号を、前記バスを介して、前記第2のハードウェアに出力することを特徴とする請求項12に記載のバス制御方法。
  15. 前記生成ステップは、前記判別ステップにより判別されたハードウェアの状態に基づいて、前記バスを介して相互に接続されたプロセッサへ供給されるクロックを制御するための制御信号を生成することを特徴とする請求項14に記載のバス制御方法。
  16. 前記検出ステップは、バスを介して相互に接続されたハードウェアの状態を、間隔をあけて検出することを特徴とする請求項12〜15の何れか1項に記載のバス制御方法。
  17. 前記バスを介して相互に接続されたハードウェアの状態を検出する間隔をプログラマブルに設定する間隔設定ステップを有し、
    前記検出ステップは、バスを介して相互に接続されたハードウェアの状態を前記間隔設定ステップにより設定された間隔で検出することを特徴とする請求項16に記載のバス制御方法。
  18. 前記出力ステップは、前記生成ステップにより生成された制御信号を、予め設定された内容に従って、前記バスにアクセスすることを特徴とする請求項12〜17の何れか1項に記載のバス制御方法。
  19. 前記制御信号の出力先のアドレスをプログラマブルに設定する出力先アドレス設定ステップと、
    前記制御信号に含めるデータをプログラマブルに設定するデータ設定ステップとを有し、
    前記生成ステップは、前記データ設定ステップにより設定されたデータを含む制御信号を生成し、
    前記出力ステップは、前記バスを介して、前記出力先アドレス設定ステップにより設定されたアドレスに、前記生成ステップにより生成された制御信号を出力することを特徴とする請求項18に記載のバス制御方法。
  20. 前記データ設定ステップにより設定されたデータの転送方向をプログラマブルに設定する転送方向設定ステップを有することを特徴とする請求項19に記載のバス制御方法。
  21. 前記検出ステップにより検出されるハードウェアのアドレスをプログラマブルに設定するハードウェアアドレス設定ステップを有し、
    前記検出ステップは、前記ハードウェアアドレス設定ステップにより設定されたアドレスのハードウェアの状態を検出することを特徴とする請求項12〜20の何れか1項に記載のバス制御方法。
  22. 前記検出ステップにより検出されたハードウェアの状態を判別するための条件をプログラマブルに設定する条件設定ステップを有し、
    前記判別ステップは、前記検出ステップにより検出されたハードウェアの状態が、前記条件設定ステップにより設定された条件に該当するか否かを判別することを特徴とする請求項12〜21の何れか1項に記載のバス制御方法。
  23. バスにバスマスタとしてアクセスして、前記バスを介して相互に接続されたハードウェアの状態を検出する検出ステップと、
    前記検出ステップにより検出されたハードウェアの状態を判別する判別ステップと、
    前記判別ステップにより判別されたハードウェアの状態に基づいて制御信号を生成する生成ステップと、
    前記生成ステップにより生成された制御信号を前記バスに出力する出力ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
JP2006190907A 2006-07-11 2006-07-11 バスマスタ回路、バス制御方法、及びコンピュータプログラム Pending JP2008021040A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006190907A JP2008021040A (ja) 2006-07-11 2006-07-11 バスマスタ回路、バス制御方法、及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006190907A JP2008021040A (ja) 2006-07-11 2006-07-11 バスマスタ回路、バス制御方法、及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2008021040A true JP2008021040A (ja) 2008-01-31
JP2008021040A5 JP2008021040A5 (ja) 2009-08-27

Family

ID=39076929

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006190907A Pending JP2008021040A (ja) 2006-07-11 2006-07-11 バスマスタ回路、バス制御方法、及びコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP2008021040A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013041402A (ja) * 2011-08-15 2013-02-28 Fujitsu Semiconductor Ltd 半導体集積回路及び回路状態監視回路
JP2013041534A (ja) * 2011-08-19 2013-02-28 Fujitsu Semiconductor Ltd 半導体集積回路および割り込み生成方法

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6198467A (ja) * 1984-10-19 1986-05-16 Fujitsu Ltd レジスタ構成方法
JPS6222171A (ja) * 1985-07-23 1987-01-30 Oki Electric Ind Co Ltd プロセッサ間通信制御装置
JPH04256247A (ja) * 1991-02-08 1992-09-10 Fujitsu Ltd ポーリング間隔制御装置ならびに制御方法
JPH05100993A (ja) * 1991-10-07 1993-04-23 Mitsubishi Electric Corp 信号線共有化方式
JPH06332846A (ja) * 1993-05-24 1994-12-02 Fuji Xerox Co Ltd バス中継装置
JPH10307788A (ja) * 1997-05-07 1998-11-17 Fujitsu Ltd バスブリッジ
JPH11102340A (ja) * 1997-09-25 1999-04-13 Fuji Electric Co Ltd プロセッサシステム及びそのバスアクセス方法
JP2002007227A (ja) * 2000-06-20 2002-01-11 Nec Corp ユニバーサルスロット装置、デバイス装置、スロット優先方法、およびデバイス優先方法
JP2002007316A (ja) * 2000-06-19 2002-01-11 Niigata Fuji Xerox Manufacturing Co Ltd 低消費電力コンピュータシステム
JP2002175269A (ja) * 2000-09-29 2002-06-21 Lucent Technol Inc I2cバス用拡張ブリッジ装置および方法
JP2004070642A (ja) * 2002-08-06 2004-03-04 Fujitsu Access Ltd 共有メモリを介してデータ転送を行う通信システム
JP2004213407A (ja) * 2003-01-06 2004-07-29 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
JP2004287838A (ja) * 2003-03-20 2004-10-14 Ricoh Co Ltd 割り込み制御コントローラ,割り込み制御方法,割り込み制御コントローラを備えた装置,割り込み制御プログラムおよび記録媒体
JP2005228188A (ja) * 2004-02-16 2005-08-25 Kyocera Mita Corp 情報処理システム

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6198467A (ja) * 1984-10-19 1986-05-16 Fujitsu Ltd レジスタ構成方法
JPS6222171A (ja) * 1985-07-23 1987-01-30 Oki Electric Ind Co Ltd プロセッサ間通信制御装置
JPH04256247A (ja) * 1991-02-08 1992-09-10 Fujitsu Ltd ポーリング間隔制御装置ならびに制御方法
JPH05100993A (ja) * 1991-10-07 1993-04-23 Mitsubishi Electric Corp 信号線共有化方式
JPH06332846A (ja) * 1993-05-24 1994-12-02 Fuji Xerox Co Ltd バス中継装置
JPH10307788A (ja) * 1997-05-07 1998-11-17 Fujitsu Ltd バスブリッジ
JPH11102340A (ja) * 1997-09-25 1999-04-13 Fuji Electric Co Ltd プロセッサシステム及びそのバスアクセス方法
JP2002007316A (ja) * 2000-06-19 2002-01-11 Niigata Fuji Xerox Manufacturing Co Ltd 低消費電力コンピュータシステム
JP2002007227A (ja) * 2000-06-20 2002-01-11 Nec Corp ユニバーサルスロット装置、デバイス装置、スロット優先方法、およびデバイス優先方法
JP2002175269A (ja) * 2000-09-29 2002-06-21 Lucent Technol Inc I2cバス用拡張ブリッジ装置および方法
JP2004070642A (ja) * 2002-08-06 2004-03-04 Fujitsu Access Ltd 共有メモリを介してデータ転送を行う通信システム
JP2004213407A (ja) * 2003-01-06 2004-07-29 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム
JP2004287838A (ja) * 2003-03-20 2004-10-14 Ricoh Co Ltd 割り込み制御コントローラ,割り込み制御方法,割り込み制御コントローラを備えた装置,割り込み制御プログラムおよび記録媒体
JP2005228188A (ja) * 2004-02-16 2005-08-25 Kyocera Mita Corp 情報処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013041402A (ja) * 2011-08-15 2013-02-28 Fujitsu Semiconductor Ltd 半導体集積回路及び回路状態監視回路
JP2013041534A (ja) * 2011-08-19 2013-02-28 Fujitsu Semiconductor Ltd 半導体集積回路および割り込み生成方法

Similar Documents

Publication Publication Date Title
US10649935B2 (en) Deferred inter-processor interrupts
US9542152B2 (en) System-on-chip and application processor including FIFO buffer and mobile device comprising the same
US7783817B2 (en) Method and apparatus for conditional broadcast of barrier operations
US20150039803A1 (en) Data transfer apparatus, data transfer method, and data transfer program
WO2005119465A1 (en) Data processing unit and bus arbitration unit
CN113468097B (zh) 基于片上***的数据交换方法
CN110858188A (zh) 具有分布式信箱结构的多处理器***及其沟通方法
US7779174B2 (en) Method and apparatus for dynamically changing burst length using direct memory access control
JP2007058716A (ja) データ転送バスシステム
US6738837B1 (en) Digital system with split transaction memory access
US6115767A (en) Apparatus and method of partially transferring data through bus and bus master control device
US6976110B2 (en) Method and apparatus for reducing interrupt latency by dynamic buffer sizing
JP2008021040A (ja) バスマスタ回路、バス制御方法、及びコンピュータプログラム
JP3824122B2 (ja) Dma装置
JP2006268753A (ja) Dma回路及びコンピュータシステム
US20110197008A1 (en) Card host lsi and set device including the lsi
US10503471B2 (en) Electronic devices and operation methods of the same
JP2000163310A (ja) マイクロプロセッサ
JP2011070372A (ja) Dma転送制御装置
JP2003309564A (ja) マイクロコンピュータシステムおよびそれに使用されるトランシーバ
WO2002093392A1 (fr) Processeur de donnees
US11630790B1 (en) Integrated circuit and interrupt-handling method of sensing device
JP6260394B2 (ja) 処理システム
JP2001084143A (ja) 情報処理装置
JP2806405B2 (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090710

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110614

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110810

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130424