IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7557285バススイッチ、シミュレーション装置及び信号中継方法
<>
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図1
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図2
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図3
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図4
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図5
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図6
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図7
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図8
  • 特許-バススイッチ、シミュレーション装置及び信号中継方法 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-18
(45)【発行日】2024-09-27
(54)【発明の名称】バススイッチ、シミュレーション装置及び信号中継方法
(51)【国際特許分類】
   G06F 13/42 20060101AFI20240919BHJP
   G06F 13/38 20060101ALI20240919BHJP
【FI】
G06F13/42 350C
G06F13/38 350
【請求項の数】 10
(21)【出願番号】P 2020097830
(22)【出願日】2020-06-04
(65)【公開番号】P2021190021
(43)【公開日】2021-12-13
【審査請求日】2023-06-02
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】城所 隆弘
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2008-066951(JP,A)
【文献】特開2016-184280(JP,A)
【文献】特開2005-130358(JP,A)
【文献】特開2008-107937(JP,A)
【文献】特開2015-018315(JP,A)
【文献】国際公開第2016/104369(WO,A1)
【文献】特開2008-305152(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10-13/14
G06F 13/38-13/42
(57)【特許請求の範囲】
【請求項1】
マスタデバイスである第1デバイスとクロックストレッチを行うことが可能なスレーブデバイスである第2デバイスとの間で、クロックバス上のクロック信号及びデータバス上のデータ信号を中継するバススイッチであって、
前記第1デバイスと接続される第1データバス上のデータ信号、及び前記第2デバイスと接続される第2データバス上のデータ信号を監視し、前記第1データバス上のデータ信号及び前記第2データバス上のデータ信号のうち先に論理値が変化した一方のデータバス上のデータ信号の論理値を、他方のデータバス上のデータ信号に反映させる第1信号処理手段と、
前記第1デバイスと接続される第1クロックバス上へ前記第1デバイスから出力されるクロック信号の論理値を、前記第2デバイスと接続される第2クロックバス上のクロック信号に反映させる第2信号処理手段と、
を備え、
前記第2信号処理手段は、少なくとも前記第2デバイスが前記クロックストレッチを行うタイミングで、前記第1クロックバス上のクロック信号の論理値が第1の値から第2の値へ変化した場合に、前記第1クロックバス上のクロック信号及び前記第2クロックバス上のクロック信号の双方の論理値をある時間長Tにわたり前記第2の値に維持し、
前記時間長Tは、前記第1デバイスから出力されるクロック信号の周期の半分及び前記第2デバイスによる前記クロックストレッチのあり得る最大時間長のいずれよりも長い時間長として予め設定される、
バススイッチ。
【請求項2】
請求項に記載のバススイッチであって、
記第2デバイスは、前記第2クロックバスから入力されるクロック信号に従って、前記第2データバスから入力されるデータ信号を取得し又は前記第2データバスへデータ信号を出力する、
バススイッチ。
【請求項3】
請求項に記載のバススイッチであって、前記第2デバイスは、クロックの進行を遅延させてデータ信号を処理する時間を確保するために、前記第2クロックバス上のクロック信号の論理値を前記第2の値に維持する、バススイッチ。
【請求項4】
請求項に記載のバススイッチであって、
前記第1データバス及び前記第2データバスは、I2C通信方式におけるシリアルデータバスであり、
前記第1クロックバス及び前記第2クロックバスは、I2C通信方式におけるシリアルクロックバスである、
バススイッチ。
【請求項5】
請求項又はに記載のバススイッチであって、前記第2信号処理手段は、前記第1クロックバス上のクロック数を計測し、計測した前記クロック数が所定の値に達した場合に、前記第1クロックバス上のクロック信号及び前記第2クロックバス上のクロック信号の双方の論理値を前記時間長Tにわたり前記第2の値に維持し、前記所定の値は、前記第2デバイスが前記クロックストレッチを行うタイミングに基づいて決定される基準値である、バススイッチ。
【請求項6】
請求項乃至のいずれか1項に記載のバススイッチであって、
前記第1デバイス及び前記第2デバイスは、データ通信機会ごとの通信時間に制約を有し、
前記時間長Tは、データ通信機会ごとの前記通信時間が前記制約を超えない程度に短い時間長として予め設定される、
バススイッチ。
【請求項7】
請求項1乃至のいずれか1項に記載のバススイッチであって、再プログラム可能な論理デバイスして実装される、バススイッチ。
【請求項8】
請求項に記載のバススイッチであって、前記再プログラム可能な論理デバイスは、フィールドプログラマブルゲートアレイである、バススイッチ。
【請求項9】
搬送路に沿って用紙を搬送する第1搬送手段の制御をシミュレートする第1プロセッサと、
前記第1搬送手段の下流に位置する第2搬送手段であって、前記搬送路に沿って前記用紙を搬送する当該第2搬送手段、の制御をシミュレートする第2プロセッサと、
前記第1プロセッサと前記第2プロセッサとの間で信号を中継する、請求項1乃至のいずれか1項に記載のバススイッチと、
を含むシミュレーション装置。
【請求項10】
マスタデバイスである第1デバイスとクロックストレッチを行うことが可能なスレーブデバイスである第2デバイスとの間でクロックバス上のクロック信号及びデータバス上のデータ信号を中継するための、バススイッチにより行われる信号中継方法であって、
前記バススイッチの第1の信号処理手段により、前記第1デバイスと接続される第1クロックバス上へ前記第1デバイスから出力されるクロック信号の論理値を、前記第2デバイスと接続される第2クロックバス上のクロック信号に反映させることと、
前記バススイッチの第2の信号処理手段により、前記第1デバイスと接続される第1データバス上のデータ信号、及び前記第2デバイスと接続される第2データバス上のデータ信号を監視することと、
前記第2の信号処理手段により、前記第1データバス上のデータ信号及び前記第2データバス上のデータ信号のうち先に論理値が変化した一方のデータバス上のデータ信号の論理値を、他方のデータバス上のデータ信号に反映させることと、
を含み、
前記第1の信号処理手段が前記第1デバイスから出力されるクロック信号の論理値を前記第2クロックバス上のクロック信号に反映させることは、少なくとも前記第2デバイスが前記クロックストレッチを行うタイミングで、前記第1クロックバス上のクロック信号の論理値が第1の値から第2の値へ変化した場合に、前記第1クロックバス上のクロック信号及び前記第2クロックバス上のクロック信号の双方の論理値をある時間長Tにわたり前記第2の値に維持すること、を含み、
前記時間長Tは、前記第1デバイスから出力されるクロック信号の周期の半分及び前記第2デバイスによる前記クロックストレッチのあり得る最大時間長のいずれよりも長い時間長として予め設定される、
号中継方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、バススイッチ、シミュレーション装置及び信号中継方法に関する。
【背景技術】
【0002】
基盤上で集積回路(IC)と他の回路要素とを接続するバススイッチを再プログラム可能な論理デバイスとして実装する利点の1つは、ICの端子の割当てを基盤の製造後に変更できることである。フィールドプログラマブルゲートアレイ(FPGA)は、広く利用されている再プログラム可能な論理デバイスの一例である。例えば、CPU間を接続するバススイッチをFPGAとして実装しておくことで、CPUにより実行されるプログラムの仕様に合わせて、CPUの入出力端子の割当て及びバスの接続関係を、基盤の製造後であっても変更することができる。これは、CPUの仕様の決定に先立って基盤の製造を開始することを可能にし、製品開発の期間を短縮することにも寄与し得る。
【0003】
しかし、FPGAのような論理デバイスは、いわゆるハイ・インピーダンス状態を当該論理デバイスの一方の側から他方の側へ伝播させることができない。ハイ・インピーダンス状態とは、電気信号に対して高抵抗を示す端子の状態をいう。ハイ・インピーダンス状態は、典型的には、1本のバスに接続した複数の装置から当該バスへ出力され得る信号の衝突を回避する目的で用いられる。双方向通信用のバスにFPGAを組込む場合、ハイ・インピーダンス状態を伝播させられないことから、信号の衝突を他の手法で回避することを要する。例えば、特許文献1は、バス上の制御信号を解析することにより通信方向を判定し、その判定の結果に基づいて信号の流れを規制することで、通信方向を適切に切替える手法を提案している。特許文献2は、特許文献1により提案された手法と同様に双方向バスを実質的に単方向バスに変換する手法を提案しているが、通信方向の選択がバスの一端の論理値の変化(HighからLowへの引き下げ)に基づいてなされる。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2013-105284号公報
【文献】特開昭56-42251号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、これまでに提案されてきた手法は、例えばI2C通信方式のような同期的な通信方式におけるクロックストレッチの仕組みに支障を生じさせる。クロックストレッチとは、マスタデバイスから供給されるクロック信号に従ってデータ信号を処理するスレーブデバイスが、クロックバス上の信号の状態を特定の論理値に維持することによりクロックの進行を遅延させる仕組みである。クロックストレッチは、多くの場合、マスタデバイスと比較して信号処理性能の劣るスレーブデバイスが十分な信号処理時間を確保するために用いられる。しかし、特許文献2により提案された手法では、マスタデバイスが論理値をHighからLowへ引き下げた際に通信方向が確定してしまい、スレーブデバイスがクロックバス上の論理値を維持しようとしてもマスタデバイスはそれを感知しない。特許文献1により提案された手法では、クロック信号の通信方向は、マスタデバイスからスレーブデバイスへの方向であることが前提とされており、やはりマスタデバイスはスレーブ側のクロックバスの論理値を感知しない。
【0006】
そこで、本開示は、双方向通信用のバスにFPGAのような論理デバイスを組込む場合に、クロックストレッチと同様にデバイスの十分な信号処理時間を確保することを可能にする仕組みを実現することを目的とする。
【課題を解決するための手段】
【0007】
ある観点によれば、マスタデバイスである第1デバイスとクロックストレッチを行うことが可能なスレーブデバイスである第2デバイスとの間で、クロックバス上のクロック信号及びデータバス上のデータ信号を中継するバススイッチであって、上記第1デバイスと接続される第1データバス上のデータ信号、及び上記第2デバイスと接続される第2データバス上のデータ信号を監視し、上記第1データバス上のデータ信号及び上記第2データバス上のデータ信号のうち先に論理値が変化した一方のデータバス上のデータ信号の論理値を、他方のデータバス上のデータ信号に反映させる第1信号処理手段と、上記第1デバイスと接続される第1クロックバス上へ上記第1デバイスから出力されるクロック信号の論理値を、上記第2デバイスと接続される第2クロックバス上のクロック信号に反映させる第2信号処理手段と、を備え、上記第2信号処理手段は、少なくとも上記第2デバイスが上記クロックストレッチを行うタイミングで、上記第1クロックバス上のクロック信号の論理値が第1の値から第2の値へ変化した場合に、上記第1クロックバス上のクロック信号及び上記第2クロックバス上のクロック信号の双方の論理値をある時間長Tにわたり上記第2の値に維持し、上記時間長Tは、上記第1デバイスから出力されるクロック信号の周期の半分及び上記第2デバイスによる上記クロックストレッチのあり得る最大時間長のいずれよりも長い時間長として予め設定される、バススイッチが提供される。
【発明の効果】
【0008】
本開示によれば、2つのデバイス間の双方向通信用のバスにFPGAのような論理デバイスを組込む場合に、デバイスの十分な信号処理時間を確保することが可能となる。
【図面の簡単な説明】
【0009】
図1】第1の実施形態に係るバススイッチの構成の一例を示すブロック図。
図2】第1の実施形態に係るデータ信号中継処理の流れの一例を示すフローチャート。
図3】第1の実施形態におけるデータ信号の論理値の変化を時系列で示すタイミングチャート。
図4】第1の実施形態に係るクロック信号中継処理の流れの一例を示すフローチャート。
図5】第1の実施形態におけるクロック信号の論理値の変化を時系列で示すタイミングチャート。
図6】第2の実施形態に係るクロック信号中継処理の流れの一例を示すフローチャート。
図7】第2の実施形態におけるクロック信号の論理値の変化を時系列で示すタイミングチャート。
図8】一応用例に係るシミュレーション装置の構成の一例を示すブロック図。
図9図8の応用例においてシミュレートされる用紙搬送路について説明するための説明図。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
<<1.第1の実施形態>>
<1-1.概要>
本開示に係る技術の第1の実施形態では、1つの基盤上で双方向通信を行う2つのデバイスの間に、シリアルバススイッチがFPGAとして実装される。一例として、双方向通信は、I2C(Inter-Integrated Circuit)通信方式に従って行われるものとする。I2C通信方式では、1つのマスタデバイスに1つ以上のスレーブデバイスを接続することができるが、説明の簡明さのために、本実施形態ではスレーブデバイスは1つであるものとする。マスタデバイスとスレーブデバイスとの間の接続は2本のバスにより構成される。それらバスのうちの1本は、シリアルクロックバスであり、以下ではSCLとも表記する。他の1本は、シリアルデータバスであり、以下ではSDAとも表記する。マスタデバイスは、スレーブデバイスに向けてSCL上にクロック信号を供給する。SDA上を流れるデータ信号は、クロック信号の立ち上がり(LowからHighへの変化)の際に読み取られる。スレーブデバイスは、自身に割当てられたアドレスをSDAから読取った場合に通信を開始し、アドレスに続く制御ビットの値に応じて、ライトモードではマスタデバイスからデータ信号を受信し、リードモードではマスタデバイスへデータ信号を送信する。スレーブデバイスは、データ信号を処理する時間を確保するために、SCL上のクロック信号の論理値を強制的にLowに維持してクロックの進行を遅延させることができ、これをクロックストレッチという。
【0012】
なお、以下の説明において、データ信号とは、データバス(SDA)上を流れる信号全般を指すものとする。例えば、I2C通信においてSDA上を流れる次の信号は、いずれも「データ信号」の範囲に含まれる:
・スタートコンディション
・スレーブアドレス
・リード/ライト(R/W)要求
・情報ビット
・確認応答(ACK)
・ストップコンディション
・リピーテッドスタートコンディション
【0013】
<1-2.バススイッチの構成例>
図1は、本実施形態に係るバススイッチの構成の一例を示すブロック図である。図1には、FPGA101、マスタデバイス102及びスレーブデバイス103が示されている。FPGA101は、再プログラム可能な論理デバイスとしてのバススイッチである。FPGA101は、マスタデバイス102とスレーブデバイス103との間で、クロックバス(SCL)上のクロック信号及びデータバス(SDA)上のデータ信号を中継する。マスタデバイス102は、I2C通信のマスタとして動作するデバイスである。マスタデバイス102は、スレーブデバイス103との通信のためにクロック信号をクロックバスへ出力する。スレーブデバイス103は、I2C通信のスレーブとして動作するデバイスである。スレーブデバイス103は、クロックバスから入力されるクロック信号に従って、データバスから入力されるデータ信号を取得し又はデータバスへデータ信号を出力する。マスタデバイス102及びスレーブデバイス103は、例えば、CPU(Central Processing Unit)又はその他のIC(Integrated Circuit)であってよい。マスタデバイス102及びスレーブデバイス103は、同じ種類のデバイスであってもよく、又は異なる種類のデバイスであってもよい。
【0014】
図1に示したように、FPGA101は、SCLバススイッチ121及びSDAバススイッチ122を備える。SCLバススイッチ121は、マスタ側SCL106を介してマスタデバイス102と接続され、及びスレーブ側SCL107を介してスレーブデバイス103と接続される。SDAバススイッチ122は、マスタ側SDA110を介してマスタデバイス102と接続され、及びスレーブ側SDA111を介してスレーブデバイス103と接続される。マスタ側SCL106、スレーブ側SCL107、マスタ側SDA110及びスレーブ側SDA111は、それぞれプルアップ抵抗104、105、108及び109を介して電源に接続される。これらプルアップ抵抗の存在に起因して、マスタ側SCL106、スレーブ側SCL107、マスタ側SDA110及びスレーブ側SDA111の信号レベルは、通信が行われていない期間中にはHighに維持される。
【0015】
FPGA101は、さらに、予備的なバス151を介してマスタデバイス102と接続され、予備的なバス152を介してスレーブデバイス103と接続される。基盤上にFPGA101が実装された後、開発者は、マスタデバイス102の端子の割当ての変更を望む場合に、FPGA101を再プログラムすることにより、例えば予備的なバス151をマスタ側のSCL又はSDAとして使用することができる。同様に、開発者は、スレーブデバイス103の端子の割当ての変更を望む場合に、FPGA101を再プログラムすることにより、例えば予備的なバス152をスレーブ側のSCL又はSDAとして使用することができる。
【0016】
SCLバススイッチ121は、IOバッファ131、IOバッファ132及びSCL処理部133を含む。
【0017】
IOバッファ131は、マスタ側のクロック信号のためのバスバッファである。IOバッファ131の信号入出力の一端はマスタ側SCL106を介してマスタデバイス102へ、他端は内部SCL136を介してSCL処理部133へ接続される。IOバッファ131の制御入力は、制御入力ライン134を介してSCL処理部133へ接続される。IOバッファ131は、制御入力ライン134からの制御信号がLowを示している間、マスタ側SCL106から内部SCL136への信号の入力を有効化し、即ちマスタデバイス102からSCL処理部133へ信号が流れることを可能にする。一方、IOバッファ131は、制御入力ライン134からの制御信号がHighを示している間、マスタデバイス102からSCL処理部133へクロック信号を流さず、マスタ側SCL106及び内部SCL136の信号レベルをLowに固定する。
【0018】
IOバッファ132は、スレーブ側のクロック信号のためのバスバッファである。IOバッファ132の信号入出力の一端はスレーブ側SCL107を介してスレーブデバイス103へ、他端は内部SCL137を介してSCL処理部133へ接続される。IOバッファ132の制御入力は、制御入力ライン135を介してSCL処理部133へ接続される。IOバッファ132は、制御入力ライン135からの制御信号がLowを示している間、スレーブ側SCL107から内部SCL137への信号の入力を有効化し、即ちスレーブデバイス103からSCL処理部133へ信号が流れることを可能にする。一方、IOバッファ132は、制御入力ライン135からの制御信号がHighを示している間、スレーブデバイス103からSCL処理部133へ信号を流さず、スレーブ側SCL107及び内部SCL137の信号レベルをLowに固定する。
【0019】
SCL処理部133は、マスタデバイス102とスレーブデバイス103との間のクロック信号の中継を制御する信号処理手段である。本実施形態において、SCL処理部133は、マスタ側SCL106上のクロック信号の論理値を、スレーブ側SCL107上のクロック信号に反映させる。但し、SCL処理部133は、内部SCL136を介して入力されるクロック信号の論理値がHighからLowへ変化した場合に、マスタ側SCL106上及びスレーブ側SCL107上のクロック信号の双方の論理値をある時間長TにわたりLowに維持する。SCL処理部133により行われるこうした制御について、後により詳しく説明する。
【0020】
SDAバススイッチ122は、IOバッファ141、IOバッファ142及びSDA処理部143を含む。
【0021】
IOバッファ141は、マスタ側のデータ信号のためのバスバッファである。IOバッファ141の信号入出力の一端はマスタ側SDA110を介してマスタデバイス102へ、他端は内部SDA146を介してSDA処理部143へ接続される。IOバッファ141の制御入力は、制御入力ライン144を介してSDA処理部143へ接続される。IOバッファ141は、制御入力ライン144からの制御信号がLowを示している間、マスタ側SDA110から内部SDA146への信号の入力を有効化し、即ちマスタデバイス102からSDA処理部143へ信号が流れることを可能にする。一方、IOバッファ141は、制御入力ライン144の制御信号がHighを示している間、マスタデバイス102からSDA処理部143へデータ信号を流さず、マスタ側SDA110及び内部SDA146の信号レベルをLowに固定する。
【0022】
IOバッファ142は、スレーブ側のデータ信号のためのバスバッファである。IOバッファ142の信号入出力の一端はスレーブ側SDA111を介してスレーブデバイス103へ、他端は内部SDA147を介してSDA処理部143へ接続される。IOバッファ142の制御入力は、制御入力ライン145を介してSDA処理部143へ接続される。IOバッファ142は、制御入力ライン145の制御信号がLowを示している間、スレーブ側SDA111から内部SDA147への信号の入力を有効化し、即ちスレーブデバイス103からSDA処理部143へ信号が流れることを可能にする。一方、IOバッファ142は、制御入力ライン145の制御信号がHighを示している間、スレーブデバイス103からSDA処理部143へ信号を流さず、スレーブ側SDA111及び内部SDA147の信号レベルをLowに固定する。
【0023】
SDA処理部143は、マスタデバイス102とスレーブデバイス103との間のデータ信号の中継を制御する信号処理手段である。本実施形態において、SDA処理部143は、内部SDA146から入力されるデータ信号、及び内部SDA147から入力されるデータ信号を監視する。そして、SDA処理部143は、それらデータ信号のうち先に論理値が変化した一方のデータバス上のデータ信号の論理値を、他方のデータバス上のデータ信号に反映させる。SDA処理部143により行われるこうした制御について、後により詳しく説明する。
【0024】
<1-3.データバスの中継制御>
図2は、本実施形態に係るSDA処理部143により行われるデータ信号中継処理の流れの一例を示すフローチャートである。このデータ信号中継処理は、例えば、何らかのハードウェア記述言語(HDL)を用いて記述され、FPGA101の論理的な機能として構成され得る。図3は、図2に示したデータ信号中継処理に従って生じ得るデータ信号の論理値の変化を時系列で示すタイミングチャートである。なお、以下の説明では、処理ステップをS(ステップ)と略記する。
【0025】
既に説明したように、デバイスへの電源投入の直後又は前回の通信の終了から次回の通信の開始までの間など、通信が行われていない期間中、マスタ側SDA110及びスレーブ側SDA111の論理値は、プルアップ抵抗の寄与によってHighとなっている。S201で、SDA処理部143は、IOバッファ141及び142へLowを示す制御信号を出力することにより、マスタ側及びスレーブ側の双方のデータ信号の入出力を有効化する。IOバッファ141からの信号入力の論理値は、マスタ側SDA110の論理値と同一となり、よってHighとなる。同様に、IOバッファ142からの信号入力の論理値は、スレーブ側SDA111の論理値と同一となり、よってHighとなる(図3の時刻TからT11まで)。
【0026】
S203a及びS203bで、SDA処理部143は、マスタデバイス102からのデータ信号、即ちIOバッファ141からの入力の論理値、及びスレーブデバイス103からのデータ信号、即ちIOバッファ142からの入力の論理値を監視する。ここで、マスタ側のデータ信号の論理値が先にHighからLowへ変化した場合には、処理はS205へ進む。一方、スレーブ側のデータ信号の論理値が先にHighからLowへ変化した場合には、処理はS211へ進む。
【0027】
マスタデバイス102からスレーブデバイス103へデータ信号が送信される場合、マスタ側のデータ信号の論理値が先にHighからLowへ変化する(図3の時刻T11)。この場合、S205で、SDA処理部143は、IOバッファ142へHighを示す制御信号を出力することにより、スレーブ側SDA111をLowに駆動する。このようにして、マスタ側のデータ信号の論理値が、スレーブ側のデータ信号に反映される(図3の時刻T12)。
【0028】
次いで、S207で、SDA処理部143は、マスタデバイス102からのデータ信号、即ちIOバッファ141からの入力の論理値を監視する。マスタ側のデータ信号の論理値がLowからHighへ復帰すると(図3の時刻T13)、S209で、SDA処理部143は、IOバッファ142へLowを示す制御信号を出力することにより、スレーブ側SDA111をHighに駆動する。このようにして、マスタ側のデータ信号の論理値が、スレーブ側のデータ信号に再び反映される(図3の時刻T14)。
【0029】
その後、図2の処理は、S203a及びS203bにおける、マスタ側及びスレーブ側の双方のデータ信号の監視に戻る。
【0030】
スレーブデバイス103からマスタデバイス102へデータ信号が送信される場合、スレーブ側のデータ信号の論理値が先にHighからLowへ変化する(図3の時刻T21)。この場合、S211で、SDA処理部143は、IOバッファ141へHighを示す制御信号を出力することにより、マスタ側SDA110をLowに駆動する。このようにして、スレーブ側のデータ信号の論理値が、マスタ側のデータ信号に反映される(図3の時刻T22)。
【0031】
次いで、S213で、SDA処理部143は、スレーブデバイス103からのデータ信号、即ちIOバッファ142からの入力の論理値を監視する。スレーブ側のデータ信号の論理値がLowからHighへ復帰すると(図3の時刻T23)、S215で、SDA処理部143は、IOバッファ141へLowを示す制御信号を出力することにより、マスタ側SDA110をHighに駆動する。このようにして、スレーブ側のデータ信号の論理値が、マスタ側のデータ信号に再び反映される(図3の時刻T24)。
【0032】
その後、図2の処理は、S203a及びS203bにおける、マスタ側及びスレーブ側の双方のデータ信号の監視に戻る。
【0033】
ここで説明したようにSDAバススイッチ122がマスタデバイス102とスレーブデバイス103との間でデータ信号を中継することにより、マスタデバイス102及びスレーブデバイス103は双方向でデータ信号を送受信することができる。
【0034】
<1-4.クロックバスの中継制御>
図4は、本実施形態に係るSCL処理部133により行われるクロック信号中継処理の流れの一例を示すフローチャートである。このクロック信号中継処理は、例えば、何らかのハードウェア記述言語(HDL)を用いて記述され、FPGA101の論理的な機能として構成され得る。図5は、図4に示したクロック信号中継処理に従って生じ得るクロック信号の論理値の変化を時系列で示すタイミングチャートである。
【0035】
上述したSDAと同様、通信が行われていない期間中、マスタ側SCL106及びスレーブ側SCL107の論理値は、プルアップ抵抗の寄与によってHighとなっている。S401で、SCL処理部133は、IOバッファ131及び132へLowを示す制御信号を出力することにより、マスタ側及びスレーブ側の双方のクロック信号の入出力を有効化する。IOバッファ131からの信号入力の論理値は、マスタ側SCL106の論理値と同一となり、よってHighとなる。同様に、IOバッファ132からの信号入力の論理値は、スレーブ側SCL107の論理値と同一となり、よってHighとなる(図5の時刻T31まで)。
【0036】
S403で、SCL処理部133は、マスタデバイス102からのクロック信号、即ちIOバッファ131からの入力の論理値を監視する。マスタ側のクロック信号の論理値がHighからLowへ変化した場合には、処理はS405へ進む(図5の時刻T31)。
【0037】
マスタ側のクロック信号の論理値がHighからLowへ変化した場合、S405で、SCL処理部133は、IOバッファ131及びIOバッファ132へ、Highを示す制御信号を並列して出力する。それにより、マスタ側SCL106及びスレーブ側SCL107は共にLowに駆動される。このようにして、マスタ側のクロック信号の論理値が、スレーブ側のクロック信号に反映される(図5の時刻T32)。
【0038】
その後、S407で、SCL処理部133は、ある時間長Tにわたり、IOバッファ131及びIOバッファ132への制御信号をHighのままとすることで、マスタ側SCL106及びスレーブ側SCL107上のクロック信号の論理値をLowに維持する。時間長Tは、例えば、次の式(1)の条件を満たす時間長として予め設定され得る:

T > max(Tm,Ts) (1)
【0039】
式(1)において、Tmは、マスタデバイス102がマスタ側SCL106上のクロック信号の論理値をLowに維持する最大時間長を表す。Tsは、スレーブデバイス103がスレーブ側SCL107上のクロック信号の論理値をLowに維持する最大時間長を表す。式(1)は、上記時間長Tが時間長Tm及びTsのいずれよりも長い、という条件を表現している。
【0040】
時間長Tmは、マスタデバイス102に設定されるクロック周期の半分に相当し得る。時間長Tsは、スレーブデバイス103によるクロックストレッチのあり得る最大の時間長に相当し得る。Tm及びTsの値は、マスタデバイス102及びスレーブデバイス103の仕様並びにこれらデバイス上で稼働するソフトウェアの仕様に基づいて予め計算され、SCL処理部133の内部メモリにより記憶され得る。
【0041】
S407の結果、マスタ側SCL106及びスレーブ側SCL107は、時間長TにわたってLowに駆動される。図5には、時刻T32からT35までマスタ側及びスレーブ側のクロック信号の論理値がLowに維持される様子が示されている。時刻T32から時間長Tmが経過した時刻T33において、マスタデバイス102はマスタ側SCL106の開放を試みるものの、マスタ側SCL106の論理値がIOバッファ131によりLowに固定されている。そのため、マスタデバイス102は、スレーブデバイス103によりクロックストレッチが行われていると判断し、クロックを進行させない。その間、スレーブデバイス103は、データ信号の処理を継続しており、クロックストレッチを行っている可能性がある。しかし、スレーブデバイス103によるデータ信号の処理は遅くとも時刻T32から時間長Tsが経過した時刻T34において終了する。
【0042】
そして、時間長Tが経過すると、図4の処理はS401へ戻る。SCL処理部133は、IOバッファ131及び132へLowを示す制御信号を出力し、マスタ側SCL106及びスレーブ側SCL107上のクロック信号の論理値はHighへ戻る(図5の時刻T35)。この時点で、マスタ側及びスレーブ側のクロック信号の入出力は再び有効化される。
【0043】
図5のマスタ側SCL106の波形とスレーブ側SCL107の波形とを比較すると、これら波形は略同一となっており、時間長Tsを上回る期間にわたってクロック信号がLowを示している。そのため、スレーブデバイス103の十分な信号処理時間が確保されており、スレーブデバイス103がクロックストレッチを行うケースに類似するクロックの進行が実現されていることが理解され得る。
【0044】
本実施形態のように、再プログラム可能な論理デバイスとして基盤上のデバイス間のバススイッチを実装することで、基盤を製造した後でさえも、デバイスにおける端子の割当て及びデバイス間の接続関係を柔軟に変更することが可能である。このことは、製品開発の期間の短縮や、設計、開発及び試験に伴うコストの低減といった利点をももたらす。
【0045】
なお、本実施形態では、マスタデバイス102とスレーブデバイス103とがI2C通信方式に従って双方向通信を行う例を主に説明したが、本実施形態は、クロックストレッチの仕組みを有する任意の通信方式に適用可能である。マスタデバイス102及びスレーブデバイス103は、CPUに限定されず、クロックストレッチの仕組みを有する通信方式に従って通信可能な任意の種類のデバイスであってよい。バススイッチは、FPGAの代わりに、PAL(Programmable Array Logic)又はCPLD(Complex Programmable Logic Device)といった他の種類の論理デバイスとして実装されてもよい。クロックストレッチは、スレーブ側ではなくマスタ側の信号処理時間を確保するために、マスタデバイスにより行われてもよい。
【0046】
<<2.第2の実施形態>>
第1の実施形態では、マスタデバイス102から出力されるクロック信号の論理値がLowに変化する都度、即ち全てのビットで、FPGA101が時間長Tにわたってクロックバス上の論理値をLowに維持する。この場合、本来は例えば10ビットの信号が送受信された後に1回だけクロックストレッチを行うことで十分だと仮定すると、{T-max(Tm,Ts)}の9倍に達する通信時間の遅延が生じることになる。概して、I2C通信を行うデバイスのほとんどは、確認応答が送信されるタイミングでのみクロックストレッチを行う。そして、I2C通信では、確認応答(ACK)ビットは、スタートコンディション1ビットの後、情報ビット(又は、スレーブアドレス+R/W要求)8ビットが送受信されるごとに1度送信される。そこで、本節で説明する第2の実施形態では、全てのクロックではなく、計測されるクロック数が所定の値に達した場合にのみ、クロックバス上の論理値をLowに維持するものとする。それにより、通信時間の遅延を短縮することが可能である。
【0047】
第2の実施形態に係るバススイッチの構成は、図1を用いて説明したFPGA101の構成と同様であってよい。また、FPGA101における信号処理は、SCL処理部133により行われるクロック信号中継処理の内容を除いて、第1の実施形態と同様であってよい。そこで、ここではクロック信号中継処理の内容に焦点を当てて説明する。
【0048】
本実施形態において、FPGA101のSCLバススイッチ121のSCL処理部133は、マスタデバイス102からIOバッファ131を介して入力されるクロック信号のクロック数を計測する。そして、SCL処理部133は、計測したクロック数が所定の基準値Nに達した場合に、マスタ側SCL106上のクロック信号及びスレーブ側SCL107上のクロック信号の双方の論理値を時間長TにわたりLowに維持する。ここでの所定の値は、例えば、スタートコンディション1ビットを除いてN=9(スタートコンディションを含める場合には、初回のみN=10)であってよい。
【0049】
図6は、本実施形態に係るSCL処理部133により行われるクロック信号中継処理の流れの一例を示すフローチャートである。このクロック信号中継処理は、例えば、何らかのハードウェア記述言語(HDL)を用いて記述され、FPGA101の論理的な機能として構成され得る。図7は、図6に示したクロック信号中継処理に従って生じ得るクロック信号の論理値の変化を時系列で示すタイミングチャートである。
【0050】
まず、S600で、SCL処理部133は、内部変数であるクロック信号のカウンタ値をゼロに初期化する。次いで、S601で、SCL処理部133は、IOバッファ131及び132へLowを示す制御信号を出力することにより、マスタ側及びスレーブ側の双方のクロック信号の入出力を有効化する。IOバッファ131からの信号入力の論理値は、マスタ側SCL106の論理値と同一のHighとなる。同様に、IOバッファ132からの信号入力の論理値は、スレーブ側SCL107の論理値と同一のHighとなる(図7の時刻T41まで)。
【0051】
次いで、S603で、SCL処理部133は、マスタデバイス102からのクロック信号、即ちIOバッファ131からの入力の論理値を監視する。マスタ側のクロック信号の論理値がHighからLowへ変化した場合には、処理はS605へ進む(図7の時刻T41)。
【0052】
マスタ側のクロック信号の論理値がHighからLowへ変化した場合、S605で、SCL処理部133は、カウンタ値をインクリメントする。その後の処理は、S607で、カウンタ値が上述した所定の値Nに到達したか否かに依存して分岐する。カウンタ値がNに到達していない場合、処理はS609へ進む。一方、カウンタ値がNに到達した場合、処理はS613へ進む。
【0053】
カウンタ値がNに到達していない場合、S609で、SCL処理部133は、IOバッファ132へHighを示す制御信号を出力することにより、スレーブ側SCL107をLowに駆動する。次いで、S611で、SCL処理部133は、マスタデバイス102からのクロック信号、即ちIOバッファ131からの入力の論理値を監視する。マスタ側のクロック信号の論理値がLowからHighへ変化した場合には(図7の時刻T42)、処理はS601へ戻る。SCL処理部133は、IOバッファ132へLowを示す制御信号を出力することにより、スレーブ側SCL107の論理値をHighへ戻す。このようなマスタ側からスレーブ側へのクロック信号の中継は、カウンタ値がNに到達する直前まで反復され得る(図7の時刻T41からT43)。
【0054】
S607で、クロック信号のN回目の立ち下がり(図7の時刻T44)に応じてカウンタ値がNに到達した場合、S613で、SCL処理部133は、IOバッファ131及びIOバッファ132へ、Highを示す制御信号を並列して出力する。それにより、マスタ側SCL106及びスレーブ側SCL107は共にLowに駆動される(図7の時刻T45)。
【0055】
その後、S615で、SCL処理部133は、時間長Tにわたり、IOバッファ131及びIOバッファ132への制御信号をHighのままとすることにより、マスタ側SCL106及びスレーブ側SCL107上のクロック信号の論理値をLowに維持する。時間長Tは、第1の実施形態と同様、時間長Tm及び時間長Tsのいずれよりも長いという式(1)の条件を満たす、予め決定される長さである。
【0056】
S615の結果、マスタ側SCL106及びスレーブ側SCL107は、時間長TにわたってLowに駆動される。図7には、時刻T45からT46までマスタ側及びスレーブ側のクロック信号の論理値がLowに維持される様子が示されている。この間、マスタデバイス102は、スレーブデバイス103によりクロックストレッチが行われていると判断し、クロックを進行させない。スレーブデバイス103によるデータ信号の処理は遅くともこの間に終了する。
【0057】
そして、時間長Tが経過すると、図6の処理はS600へ戻る。SCL処理部133は、カウンタ値を初期化した後に、マスタ側及びスレーブ側のクロック信号の入出力を再び有効化する。
【0058】
図7のマスタ側SCL106の波形とスレーブ側SCL107の波形とを比較すると、これら波形は略同一となっている。クロック信号は、通常のI2C通信において確認応答が送信されるタイミングでのみ、時間長Tsを上回る期間にわたってLowを示している。即ち、スレーブデバイス103の十分な信号処理時間は依然として確保されており、それと共に、通信時間の遅延が第1の実施形態と比較して短縮されていることが理解され得る。
【0059】
<<3.応用例>>
上述した制約条件の式(1)は、時間長Tの下限を規定する一方で、時間長Tの上限を規定しない。しかし、時間長Tが長ければ通信時間の遅延が増大することから、時間長Tが長過ぎることも実用面で不利である。そこで、本節では、上述したバススイッチの1つの応用例として、通信時間に制約を有する用途を扱う。そうした用途の一例は、画像形成装置(例えば、複合機、コピー機又はプリンタ)における用紙の搬送である。一般的な画像形成装置は、搬送路に沿って用紙を搬送するための複数のモータ(搬送手段)を有し、それらモータを適切なタイミングで駆動することで複数の用紙を順に搬送しながら、各用紙に画像を形成する。モータの制御が適切なタイミングから遅れると、用紙の搬送が滞り、いわゆるジャムが発生する。モータの制御タイミングを適切に設計するためには、用紙搬送シミュレータによって用紙の搬送をシミュレートして制御タイミングの妥当性を検証することが効果的である。そこで、本開示に係る技術の一応用例として、用紙搬送シミュレータを上述したバススイッチを用いて構成することとする。
【0060】
図8は、一応用例に係るシミュレーション装置800の構成の一例を示すブロック図である。図9は、図8の応用例においてシミュレートされる用紙搬送路901について説明するための説明図である。図8に示したシミュレーション装置800は、FPGA801、第1プロセッサ802及び第2プロセッサ803を備える。用紙搬送路901は、上流から下流に向けて、第1モータ905、第1センサ909、第2モータ915及び第2センサ919と共に構成される。第1モータ905は、搬送路901に沿って用紙を搬送する搬送手段である。第1センサ909は、第1モータ905と第2モータ915との間に位置し、そのセンサ位置に用紙が到達したことを検知する検知手段である。第2モータ915は、第1モータ905の下流で、搬送路901に沿って用紙を搬送する搬送手段である。第2センサ919は、第2モータ915の下流に位置し、そのセンサ位置に用紙が到達したことを検知する検知手段である。
【0061】
シミュレーション装置800の第1プロセッサ802は、第1モータ905の制御をシミュレートするプロセッサ(例えば、CPU)である。第2プロセッサ803は、第2モータ915の制御をシミュレートするプロセッサ(例えば、CPU)である。第1プロセッサ802及び第2プロセッサ803は、実際にモータを制御するコントローラと同様に構成されてよい。第1プロセッサ802は、I2C通信のマスタとして動作し得る。第1プロセッサ802は、第2プロセッサ803との通信のためにクロック信号をクロックバスへ出力する。第2プロセッサ803は、I2C通信のスレーブとして動作し得る。第2プロセッサ803は、クロックバスから入力されるクロック信号に従って、データバスから入力されるデータ信号を取得し又はデータバスへデータ信号を出力する。
【0062】
FPGA801は、モータモデル805、用紙モデル807、センサモデル809、モータモデル815、センサモデル819、SCLバススイッチ821及びSDAバススイッチ122を含む。モータモデル805は、第1プロセッサ802による制御に従って、第1モータ905の動作をシミュレートする仮想的なモデルである。用紙モデル807は、モータモデル805及びモータモデル815により算出される搬送量に従って搬送方向に沿った用紙の動きをシミュレートする仮想的なモデルである。センサモデル809は、第1センサ909の動作をシミュレートする仮想的なモデルである。モータモデル815は、第2プロセッサ803による制御に従って、第2モータ915の動作をシミュレートする仮想的なモデルである。センサモデル819は、第2センサ919の動作をシミュレートする仮想的なモデルである。SCLバススイッチ821は、時間長Tが追加的な制約条件を満たすように設定されることを除いて、第1又は第2の実施形態に係るFPGA101のSCLバススイッチ121と同様の構成を有する。SDAバススイッチ122は、第1又は第2の実施形態に係るFPGA101のSDAバススイッチ122と同様の構成を有する。
【0063】
用紙搬送のシミュレーションにおいて、第1プロセッサ802は、FPGA801へモータ駆動信号804を出力してモータモデル805を仮想的に回転させる。モータモデル805は、モータ駆動信号804に基づいて用紙搬送量を算出し、算出した用紙搬送量を用紙モデル807へ出力する。用紙モデル807は、モータモデル805から入力された用紙搬送量に基づいて、搬送路901上の用紙の仮想的な位置を表す用紙位置を算出し、算出した用紙位置をセンサモデル809へ出力する。センサモデル809は、用紙が所定の位置に到達したか否かを判定し、その判定結果を示す用紙有無信号810を第1プロセッサ802へ出力する。第1プロセッサ802は、センサモデル809により用紙が所定の位置に到達したことが検知されると、I2C通信で第2プロセッサ803へ後続のモータの駆動を指示する。第2プロセッサ803は、FPGA801へモータ駆動信号814を出力してモータモデル815を仮想的に回転させる。モータモデル815は、モータ駆動信号814に基づいて用紙搬送量を算出し、算出した用紙搬送量を用紙モデル807へ出力する。用紙モデル807は、モータモデル815から入力された用紙搬送量に基づいて、搬送路901上の用紙の仮想的な位置を表す用紙位置を算出し、算出した用紙位置をセンサモデル819へ出力する。センサモデル819は、用紙が所定の位置に到達したか否かを判定し、その判定結果を示す用紙有無信号820を第2プロセッサ803へ出力する。第2プロセッサ803は、用紙の後端が第2モータ915を通過するまで第2モータ915の仮想的な回転駆動を継続し、その後回転駆動を停止する。それにより、用紙搬送のシミュレーションは終了する。
【0064】
上述した搬送制御において、モータモデル815によりモデル化された第2モータ915に用紙が到達する時点よりも早くモータモデル815を仮想的に回転させることにより、搬送路901上でジャムを発生させることなく用紙を円滑に搬送することができる。本応用例では、第1プロセッサ802及び第2プロセッサ803の間のデータ通信機会ごとに通信時間に制約を設けるものとする。一例として、I2C通信に1回失敗するだけではジャムは発生しないが、2回連続して失敗するとジャムが発生するものと仮定する。この仮定の下で、SCLバススイッチ821がクロックバス上の信号の状態を特定の論理値に維持する時間長Tは、上述した式(1)に加えて、次の式(2)を満たすものとする:

delay>{T-max(Tm,Ts)}×Cnum (2)
【0065】
式(2)において、Cnumは、1回のデータ通信機会における疑似的なクロックストレッチの回数を表す。第1の実施形態のように、各クロックについて時間長Tにわたってクロックバス上の信号の状態がLowに維持される(即ち、疑似的なクロックストレッチが行われる)場合には、Cnumは、1回のデータ通信機会に費やされるクロックの総数に相当し得る。Tdelayは、1回のI2C通信の再試行に要する遅延時間を表す。時間長Tを式(2)により表される制約を超えない程度に短い時間長として予め設定しておくことで、I2C通信に2回連続して失敗しない限り、搬送路901上にジャムを発生させることなく用紙を円滑に搬送することが可能である。なお、上述した例に限定されず、I2C通信の2回以上の再試行を許容するような制約条件が時間長Tに課されてもよい。
【0066】
<<4.まとめ>>
ここまで、図1図9を用いて、本開示のいくつかの実施形態及び応用例について詳細に説明した。上述した実施形態では、2つのデバイス間でクロック信号及びデータ信号を中継するバススイッチにおいて、第1デバイスと接続される第1クロックバス上のクロック信号の論理値が第2デバイスと接続される第2クロックバス上のクロック信号に反映される。また、上記第1デバイスと接続される第1データバス上のデータ信号及び上記第2デバイスと接続される第2データバス上のデータ信号のうち先に論理値が変化した一方のデータバス上のデータ信号の論理値が他方のデータバス上のデータ信号に反映される。そして、上記第1クロックバス上のクロック信号の論理値が第1の値から第2の値へ変化した場合に、上記第1クロックバス上のクロック信号及び上記第2クロックバス上のクロック信号の双方の論理値が、ある時間長Tにわたり上記第2の値に維持される。したがって、これら2つのデバイスの間で双方向でデータ信号を通信することを可能にしつつ、クロックの進行を遅延させて各デバイスにおける十分な信号処理時間を確保することができる。また、2つのデバイス間に介在する上記バススイッチが信号処理によってクロック信号及びデータ信号を中継するため、上記バススイッチを例えばFPGAのような再プログラム可能な論理デバイスとして実装することができる。したがって、上記第1デバイスおよび上記第2デバイスを搭載した基盤を製造した後でさえも、各デバイスにおける端子の割当て及びデバイス間の接続関係を柔軟に変更することが可能となる。このことは、製品開発の期間の短縮や、設計、開発及び試験に伴うコストの低減といった利点をももたらす。また、上記時間長Tは、上記第1デバイスがクロック信号の論理値を上記第2の値に維持する最大時間長Tm及び上記第2デバイスがクロック信号の論理値を上記第2の値に維持する最大時間長Tsのいずれよりも長い時間長として予め設定され得る。この場合、上記第1デバイス及び上記第2デバイスが信号処理に費やす時間の経過よりも早くクロックが進行することが確実に防止され得る。
【0067】
一例として、上記第1デバイスは、上記第2デバイスとの通信のためにクロック信号を上記第1クロックバスへ出力するマスタデバイスである。上記第2デバイスは、上記第2クロックバスから入力されるクロック信号に従って、上記第2データバスから入力されるデータ信号を取得し又は上記第2データバスへデータ信号を出力するスレーブデバイスである。この場合、基本的にはマスタデバイスから供給されるクロックに従って双方向でデータを通信しながら、マスタデバイス及びスレーブデバイスにとって必要な信号処理時間を確保することができる。
【0068】
スレーブデバイスである上記第2デバイスは、クロックの進行を遅延させてデータ信号を処理する時間を確保するために、上記第2クロックバス上のクロック信号の論理値を上記第2の値に維持し得る。即ち、上記第2デバイスは、マスタデバイスにより管理されるクロックの進行をクロックストレッチにより遅延させようとするスレーブデバイスであり得る。このクロックストレッチによる上記第2デバイス側のクロックバスの論理値は、実際には上記第1デバイスにより感知されないものの、上述した実施形態によれば、クロックストレッチが持続している期間中はクロックは進行しない。よって、同期的な通信方式におけるクロックストレッチの仕組みに支障を生じさせることなく、双方向通信を円滑に遂行することが可能である。例えば、上記第1データバス及び上記第2データバスは、I2C通信方式におけるシリアルデータバスであり、上記第1クロックバス及び上記第2クロックバスは、I2C通信方式におけるシリアルクロックバスであり得る。即ち、本開示に係る技術は、I2C通信方式で相互に通信する2つ以上のデバイスの間のバスを、I2C通信方式のクロックストレッチの仕組みを阻害しない形で、例えばFPGAのような再プログラム可能な論理デバイスとして実装することを可能にする。
【0069】
ある実施形態では、上記第1クロックバス上のクロック数が所定の値に達した場合に、記第1クロックバス上のクロック信号及び上記第2クロックバス上のクロック信号の双方の論理値が上記時間長Tにわたり上記第2の値に維持され得る。この場合、通信時間の遅延を必要十分な程度に抑制しながら、各デバイスにおける十分な信号処理時間を確保することができる。
【0070】
一例として、上記時間長Tは、上記第1デバイスと上記第2デバイスとの間のデータ通信機会ごとの通信時間の制約を超えない程度に短い時間長として予め設定され得る。この場合、上記バススイッチを、上記第1デバイスと上記第2デバイスとの間の通信に依拠して駆動される装置(例えば、画像形成装置)に取り入れつつ、時間の制約の下で装置を適切な速度で駆動することが可能である。
【0071】
<<5.その他の実施形態>>
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0072】
101:FPGA(バススイッチ)、102:マスタデバイス(第1デバイス)、103:スレーブデバイス(第2デバイス)、106:マスタ側SCL(第1クロックバス)、107:スレーブ側SCL(第2クロックバス)、110:マスタ側SDA(第1データバス)、111:スレーブ側SDA(第2データバス)、133:SCL処理部(第2信号処理手段)、143:SDA処理部(第1信号処理手段)、800:シミュレーション装置、801:第1プロセッサ、802:第2プロセッサ
図1
図2
図3
図4
図5
図6
図7
図8
図9