以下に添付図面を参照して、実施形態にかかるインターフェース回路を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態にかかるインターフェース回路100について説明する前に、基本の形態にかかるインターフェース回路1について説明する。
インターフェース回路1は、システムに対して外部モジュールが外部接続される際にインターフェース動作を行う。例えば、インターフェース回路1は、図8に示すシステムSYS1に実装される。システムSYS1は、例えば、携帯端末のシステム、又はパーソナルコンピュータのシステムである。システムSYS1には、外部モジュールOMが外部接続される。外部モジュールOMは、例えば、カメラモジュール又はコントローラモジュールである。
具体的には、システムSYS1は、バス2、インターフェース回路1、コントローラ3、メモリ4、及びインターフェース(I/F)6を備える。
バス2は、インターフェース回路1、コントローラ3、メモリ4、及びインターフェース(I/F)6を相互に接続して信号を転送する。バス2は、外部モジュールOMからクロックを受けて、そのクロックに同期して信号(クロック、データ)を転送する。すなわち、バス2は、外部モジュールOMから受けたクロックに同期して転送動作を行うバス規格に従ったものである。このようなバス規格は、例えば、MIPI(Mobile Industry Processor Interface)、MDDI(Mobile Display Digital Interface)、又はI2C(Inter−Integrated Circuit)などである。例えば、バス2は、クロック用のバス2c及びデータ用のバス2dを含む。
インターフェース回路1は、外部モジュールOMからクロック及びデータを受け、受けたクロック及びデータをバス2経由でコントローラ3等へ転送する。
例えば、外部モジュールOMがカメラモジュールである場合、カメラモジュールは、レンズ、イメージセンサ、及びクロックジェネレータ等を有する。カメラモジュールは、クロックに同期して被写体を撮像し、撮像された画像(静止画又は動画)の画像データとクロックとをインターフェース回路1へ供給する。このとき、インターフェース回路1は、例えば、カメラシリアルインターフェースである。
あるいは、例えば、外部モジュールOMがコントローラモジュールである場合、コントローラモジュールは、コントローラ、及びクロックジェネレータ等を有する。コントローラモジュールは、クロックに同期して制御動作を行い、コントローラ3に指示すべき制御内容を決定し、決定された制御内容に従った制御データとクロックとをインターフェース回路1へ供給する。このとき、インターフェース回路1は、例えば、コントローラシリアルインターフェースである。
インターフェース回路1は、出力端子OT1を介してバス2に接続されているとともに、複数の入力端子IT1〜IT4の少なくとも一部を介して外部モジュールOMが外部接続される。複数の入力端子IT1〜IT4は、上記のバス規格に対応して、クロック用の入力端子IT1とデータ用の入力端子IT2〜IT4とを含む。図8では、クロック用の入力端子IT1とデータ用の入力端子IT2とを介して外部モジュールOMが接続された状態が例示されている。
例えば、インターフェース回路1は、物理層インターフェース(PHY)11及び転送部12を有する。
物理層インターフェース11は、外部モジュールOMからクロック及びデータを受け、受けたクロック及びデータを転送部12へ出力する。物理層インターフェース11は、クロックインターフェースCIF及びデータインターフェースDIFa〜DIFcを有する。
クロックインターフェースCIFは、入力端子IT1を介して外部モジュールOMからクロックを受ける。クロックインターフェースCIFは、そのクロックに同期して、クロックを転送する。すなわち、クロックインターフェースCIFは、受けたクロックを転送動作用のクロックとして用いるとともに、クロック自体を転送する。クロックインターフェースCIFは、例えば、クロックに同期して信号(クロック)を転送する複数段のシフトレジスタ(図示せず)を用いて構成することができる。シフトレジスタの各段は、例えば、Dラッチ(図示せず)などを用いることができる。クロックインターフェースCIFは、転送されたクロックを、転送部12へ出力するとともに、データインターフェースDIFa〜DIFcへそれぞれ出力する。クロックインターフェースCIFは、クロックを受けて転送する伝送レーンとして機能するので、クロックレーンとも呼ばれる。
データインターフェースDIFaは、入力端子IT2を介して外部モジュールOMからデータを受け、クロックインターフェースCIFからクロックを受ける。データインターフェースDIFaは、クロックに同期して、データを転送する。データインターフェースDIFaは、例えば、クロックに同期してデータを転送する複数段のシフトレジスタ(図示せず)を用いて構成することができる。シフトレジスタの各段は、例えば、Dラッチ(図示せず)などを用いることができる。データインターフェースDIFaは、転送されたデータを、転送部12へ出力する。データインターフェースDIFaは、データを受けて転送する伝送レーンとして機能するので、データレーンとも呼ばれる。
なお、データインターフェースDIFb,DIFcについても、データインターフェースDIFaと同様である。
転送部12は、クロック及びデータを物理層インターフェース11から受ける。転送部12は、クロック及びデータをそれぞれ出力端子OT1経由でバス2へ出力する。転送部12は、転送レーンTL0を有する。
転送レーンTL0は、端子TL0aを介してクロックインターフェースCIFからクロックを受け、端子TL0b〜TL0dを介してデータインターフェースDIFa〜DIFcからデータを受ける。転送レーンTL0は、クロックを転送してクロック用のバス2cへ出力し、データを転送してデータ用のバス2dへ出力する。転送レーンTL0は、例えば、複数のデータを受けた場合、調停処理を行って処理順を決定し、決定された処理順に従って、複数のデータを順次にデータ用のバス2dへ出力する。処理順は、例えば、端子TL0b〜TL0dについてサイクリックに(ラウンドロビン的に)選択するものでもよいし、FIFO(First In, First Out)的に選択するものでもよい。
コントローラ3は、ファームウェアFWに従って、システムSYS1の各部を制御する。コントローラ3は、レジスタ5を有する。ファームウェアFWは、予め、インターフェース6を介してメモリ4に書き込まれている。コントローラ3は、システムSYS1が起動された際に、ファームウェアFWをメモリ4から読み出して、読み出されたファームウェアFWに従って制御信号群CSを生成し、生成された制御信号群CSをレジスタ5に格納する。コントローラ3は、制御信号群CSを用いて、データを処理したり各種の制御を行ったりする。
例えば、外部モジュールOMがカメラモジュールである場合、コントローラ3は、インターフェース回路1からバス2経由で画像データを受け、画像データに対して画像処理を施し、処理後の画像データをメモリ4等に格納する。
あるいは、例えば、外部モジュールOMがコントローラモジュールである場合、コントローラ3は、インターフェース回路1からバス2経由で制御データを受け、制御データに従って制御動作(例えば、外部モジュールOMにおけるコントローラとの協調制御動作など)を行う。
なお、システムSYS1では、図8に示すように、バス2、インターフェース回路1−1、コントローラ3、メモリ4、レジスタ5、及びインターフェース(I/F)6が1つのチップCHIP1に搭載されている。
システムSYS1では、インターフェース回路1−1に複数の外部モジュールOM−1〜OM−4を外部接続したいと要求されることがある。このとき、バス規格の制約により、複数の外部モジュールOM−1〜OM−4を、それぞれ、クロックインターフェース及びデータインターフェースに接続する必要がある。しかし、インターフェース回路1−1には、1つのクロックインターフェースCIFしか設けられていないため、バス規格に従いながら複数の外部モジュールOM−1〜OM−4を外部接続することが困難である。すなわち、インターフェース回路1−1は、1つの外部モジュールOM−1しか接続できず、外部接続の個数について自由度が低い傾向にある。
バス規格に従いながらこの要求を満たすためには、システムSYS1に対して、足りないクロックインターフェースCIFの個数分、インターフェース回路を追加する必要がある。例えば、インターフェース回路1−2〜1−4を追加する必要がある。このとき、インターフェース回路1−1は、既にチップCHIP1に搭載されているので、追加するインターフェース回路1−2〜1−4は、それぞれ、別のチップCHIP2〜CHIP4に搭載させて追加する必要がある。この場合、複数のインターフェース回路1−1〜1−4の全体としてチップ面積が増大しやすく、複数のインターフェース回路1−1〜1−4をシステムSYS1の筐体内にコンパクトに実装することが困難になる。
そこで、実施形態では、図1に示すように、インターフェース回路100の構成を工夫することで、チップ面積の増大を抑制しながら外部接続の個数についての自由度を向上させることを目指す。以下では、基本の形態と異なる部分を中心に説明する。
具体的には、システムSYS100は、複数のインターフェース回路1−1〜1−4(図8参照)に代えて、1つのインターフェース回路100を備える。インターフェース回路100は、外部接続される外部モジュールOMの個数に応じて、内部的な構成を切り替えることができる(図2、図4、図6参照)。
なお、システムSYS100では、図1に示すように、バス2、インターフェース回路100、コントローラ3、メモリ4、及びインターフェース(I/F)6が1つのチップCHIP100に搭載されている。
インターフェース回路100は、図2に示すように、物理層インターフェース11及び転送部12(図8参照)に代えて、物理層インターフェース(PHY)111及び転送部112を備える。
物理層インターフェース111は、複数のユニットUN0〜UN3を有する。転送部112は、複数の転送レーンTL0〜TL3を有する。複数の転送レーンTL0〜TL3は、複数のユニットUN0〜UN3に対応している。
まず、複数のユニットUN0〜UN3において共通する構成について説明する。
各ユニットUN0〜UN3は、クロックインターフェースCIF0〜CIF3、データインターフェースDIF0〜DIF3、及びセレクタSL0〜SL3を有する。
各クロックインターフェースCIF0,CIF1,CIF2,CIF3は、その入力ノードCIF0a,CIF1a,CIF2a,CIF3aが、対応する入力端子ITc1,ITc2,ITc3,ITc4に接続されている。各クロックインターフェースCIF0,CIF1,CIF2,CIF3は、対応する入力端子ITc1,ITc2,ITc3,ITc4を介してクロックを受けた場合に、クロックを転送する。各クロックインターフェースCIF0,CIF1,CIF2,CIF3は、制御ノードCIF0b,CIF1b,CIF2b,CIF3bで受けた制御信号に応じて、入力ノードCIF0a,CIF1a,CIF2a,CIF3aをイネーブル状態とディスエーブル状態とで切り替えることができる。
各データインターフェースDIF0,DIF1,DIF2,DIF3は、その入力ノードDIF0a,DIF1a,DIF2a,DIF3aが、対応する入力端子ITd1,ITc2,ITc3,ITd4に接続されており、そのクロックノードDIF0b,DIF1b,DIF2b,DIF3bが、対応するセレクタSL0,SL1,SL2,SL3の出力側に接続されている。各データインターフェースDIF0,DIF1,DIF2,DIF3は、対応する入力端子ITd1,ITc2,ITc3,ITd4を介してデータを受けた場合に、クロックノードDIF0b,DIF1b,DIF2b,DIF3bで受けたクロックに同期してデータを転送する。各データインターフェースDIF0,DIF1,DIF2,DIF3は、制御ノードDIF0c,DIF1c,DIF2c,DIF3cで受けた制御信号に応じて、入力ノードDIF0a,DIF1a,DIF2a,DIF3aをイネーブル状態とディスエーブル状態とで切り替えることができる。
各セレクタSL0,SL1,SL2,SL3は、その出力ノードSL0a,SL1a,SL2a,SL3aが、対応するデータインターフェースDIF0,DIF1,DFI2,DIF3に接続されている。各セレクタSL0,SL1,SL2,SL3は、クロックを選択して、対応するデータインターフェースDIF0,DIF1,DFI2,DIF3へクロックを供給する。これにより、データインターフェースDIF0,DIF1,DFI2,DIF3がクロックに同期してデータを転送するようにすることができる。各セレクタSL0,SL1,SL2,SL3は、制御ノードSL0c,SL1c,SL2c,SL3cで受けた制御信号に応じて、セレクト動作を行い、クロックを選択する。
次に、複数のユニットUN0〜UN3において異なる構成について説明する。
ユニットUN0におけるクロックインターフェースCIF0は、その出力ノードCIF0cが、転送レーンTL0及びセレクタSL0〜SL3に接続されている。ユニットUN0におけるセレクタSL0は、その入力ノードSL0bが、クロックインターフェースCIF0の出力ノードCIF0cに接続され、他のクロックインターフェースCIF1,CIF2,CIF3の出力ノードCIF1c,CIF2c,CIF3cに接続されていない。これにより、ユニット(第1のユニット)UN0におけるセレクタSL0は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを常に選択してユニットUN0のデータインターフェースDIF0へ供給する。
ユニットUN1におけるクロックインターフェースCIF1は、その出力ノードCIF1cが、転送レーンTL1及びセレクタSL1に接続されている。ユニットUN1におけるセレクタSL1は、その入力ノードSL1c,SL1bが、クロックインターフェースCIF0の出力ノードCIF0c又はクロックインターフェースCIF1の出力ノードCIF1cに接続され、残りのクロックインターフェースCIF2,CIF3の出力ノードCIF2c,CIF3cに接続されていない。これにより、ユニット(第2のユニット)UN1におけるセレクタSL1は、ユニット(第1のユニット)UN0のクロックインターフェースCIF0から転送されたクロックとユニット(第2のユニット)UN1のクロックインターフェースCIF1から転送されたクロックとのいずれかを選択してユニット(第2のユニット)UN1のデータインターフェースDIF1へ供給する。
ユニットUN2におけるクロックインターフェースCIF2は、その出力ノードCIF2cが、転送レーンTL2及びセレクタSL2,SL3に接続されている。ユニットUN2におけるセレクタSL2は、その入力ノードSL2c,SL2bが、クロックインターフェースCIF0の出力ノードCIF0c又はクロックインターフェースCIF2の出力ノードCIF2cに接続され、残りのクロックインターフェースCIF1,CIF3の出力ノードCIF1c,CIF3cに接続されていない。これにより、ユニット(第2のユニット)UN2におけるセレクタSL2は、ユニット(第1のユニット)UN0のクロックインターフェースCIF0から転送されたクロックとユニット(第2のユニット)UN2のクロックインターフェースCIF2から転送されたクロックとのいずれかを選択してユニット(第2のユニット)UN2のデータインターフェースDIF2へ供給する。
ユニットUN3におけるクロックインターフェースCIF3は、その出力ノードCIF3cが、転送レーンTL3及びセレクタSL3に接続されている。ユニットUN3におけるセレクタSL3は、その入力ノードSL3d,SL3c,SL3bが、クロックインターフェースCIF0の出力ノードCIF0c、クロックインターフェースCIF2の出力ノードCIF2c、又はクロックインターフェースCIF3の出力ノードCIF3cに接続され、残りのクロックインターフェースCIF1の出力ノードCIF1cに接続されていない。これにより、ユニット(第3のユニット)UN3のセレクタSL3は、ユニット(第1のユニット)UN0のクロックインターフェースCIF0から転送されたクロックとユニット(第2のユニット)UN2のクロックインターフェースCIF2から転送されたクロックとユニット(第3のユニット)UN3のクロックインターフェースCIF3から転送されたクロックとのいずれかを選択してユニット(第3のユニット)UN3のデータインターフェースDIF3へ供給する。
次に、インターフェース回路100の内部的な構成の切り替えについて説明する。
例えば、図1に示すように、外部接続される外部モジュールOMの個数の候補に対応して、システムSYS100にインストールされる候補となる複数のファームウェアFW1〜FW3が準備されている。ユーザは、インターフェース回路100に外部接続すべき外部モジュールOMの個数に応じて、複数のファームウェアFW1〜FW3のいずれかを選択してインターフェース6経由でメモリ4に書き込む。
例えば、図2に示すように、インターフェース回路100に4個の外部モジュールOM−1〜OM−4を接続したい場合、ファームウェアFW1が選択されインターフェース6(図1参照)経由でメモリ4に書き込まれる。図2は、ファームウェアFW1が選択された場合におけるインターフェース回路100の回路構成を示す図である。コントローラ3は、システムSYS100が起動された際に、ファームウェアFW1をメモリ4から読み出して、ファームウェアFW1に従った制御信号群CS1をレジスタ5に格納する。コントローラ3は、レジスタ5に格納された制御信号群CS1に従って、4個の外部モジュールOM−1〜OM−4を接続するための構成に切り替えるように、インターフェース回路100を制御する。例えば、コントローラ3は、インターフェース回路100において、図2に実線で示すラインをアクティブにするとともに、図2に一点鎖線で示すラインをノンアクティブにするように、インターフェース回路100を制御する。
具体的には、セレクタSL0は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、入力ノードSL0b及び他の入力ノード(図示せず)のうち入力ノードSL0bを選択する。これにより、セレクタSL0は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN0のデータインターフェースDIF0へ出力ノードSL0a経由で供給する。
セレクタSL1は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL1b,SL1cのうち入力ノードSL1bを選択する。これにより、セレクタSL1は、ユニットUN1のクロックインターフェースCIF1から転送されたクロックを選択してユニットUN1のデータインターフェースDIF1へ出力ノードSL1a経由で供給する。例えば、セレクタSL1は、入力ノードSL1cをハイインピーダンス状態にし、クロックインターフェースCIF0に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL2は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL2b,SL2cのうち入力ノードSL2bを選択する。これにより、セレクタSL2は、ユニットUN2のクロックインターフェースCIF2から転送されたクロックを選択してユニットUN2のデータインターフェースDIF2へ出力ノードSL2a経由で供給する。例えば、セレクタSL2は、入力ノードSL2cをハイインピーダンス状態にし、クロックインターフェースCIF0に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL3は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL3b〜SL3dのうち入力ノードSL3bを選択する。これにより、セレクタSL3は、ユニットUN3のクロックインターフェースCIF3から転送されたクロックを選択してユニットUN3のデータインターフェースDIF3へ出力ノードSL3a経由で供給する。例えば、セレクタSL3は、入力ノードSL3cをハイインピーダンス状態にし、クロックインターフェースCIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。セレクタSL3は、入力ノードSL3dをハイインピーダンス状態にし、クロックインターフェースCIF0に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL0は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF0に接続された入力ノードTL0aとデータインターフェースDIF0に接続された入力ノードTL0bとをイネーブルする。転送レーンTL0は、制御信号に従って、データインターフェースDIF1〜DIF3に接続された入力ノードTL0c〜TL0eをそれぞれディスエーブルする。例えば、転送レーンTL0は、入力ノードTL0c〜TL0eをそれぞれハイインピーダンス状態にし、データインターフェースDIF1〜DIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL1は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF1に接続された入力ノードTL1aとデータインターフェースDIF1に接続された入力ノードTL0cとをイネーブルする。転送レーンTL1は、制御信号に従って、データインターフェースDIF2に接続された入力ノードTL1bをディスエーブルする。例えば、転送レーンTL1は、入力ノードTL1bをハイインピーダンス状態にし、データインターフェースDIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL2は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF2に接続された入力ノードTL2aとデータインターフェースDIF2に接続された入力ノードTL2bとをイネーブルする。転送レーンTL2は、制御信号に従って、データインターフェースDIF3に接続された入力ノードTL2cをディスエーブルする。例えば、転送レーンTL2は、入力ノードTL2cをハイインピーダンス状態にし、データインターフェースDIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL3は、ファームウェアFW1に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF3に接続された入力ノードTL3aとデータインターフェースDIF3に接続された入力ノードTL3bとをイネーブルする。
このとき、複数のユニットUN0〜UN3のレイアウトは、図3に示すように構成されている。図3は、ファームウェアFW1が選択された場合における複数のユニットUN0〜UN3のレイアウト構成及びクロックの伝送経路を示す図である。
複数のユニットUN0,UN1,UN2,UN3は、それぞれ、例えば、図3に示すようなユニット配置領域AUN0,AUN1,AUN2,AUN3に配置される。複数のユニットUN0〜UN3は、チップCHIP100においてチップエッジCE近傍に配置される。複数のユニット配置領域AUN0〜AUN3は、チップエッジCE近傍において、チップエッジCEに沿った方向に配列される。複数のユニット配置領域AUN0〜AUN3は、チップエッジCE近傍において、チップエッジCEに沿った方向に配列される。例えば、図3に示すように、チップエッジCEに沿って図3における左から右へ、ユニット配置領域AUN1,AUN0,AUN2,AUN3が順に配列されている。すなわち、複数のユニットUN0〜UN3の配列において、ユニットUN0及びユニットUN2が、ユニットUN1及びユニットUN3よりチップエッジCEに沿った方向における中央側に配置されている。
各ユニット配置領域AUN0〜AUN3では、例えば、クロックインターフェース配置領域ACIF0〜ACIF3がデータインターフェース配置領域ADIF0〜ADIF3を間にしてセレクタ配置領域ASL0〜ASL3の反対側に配されている。クロックインターフェース配置領域ACIF0〜ACIF3は、それぞれ、クロックインターフェースCIF0〜CIF3(図2参照)が配置される領域である。データインターフェース配置領域ADIF0〜ADIF3は、それぞれ、データインターフェースDIF0〜DIF3(図2参照)が配置される領域である。セレクタ配置領域ASL0〜ASL3は、それぞれ、セレクタSL0〜SL3(図2参照)が配置される領域である。データインターフェース配置領域ADIF0〜ADIF3は、チップエッジCEに沿った方向において、クロックインターフェース配置領域ACIF0〜ACIF3及びセレクタ配置領域ASL0〜ASL3の間に配されている。すなわち、複数のユニットUN0〜UN3は、同様なレイアウト構成を繰り返し配置することで実現可能である。
インターフェース回路100の内部的な構成が図2に示すように切り替えられている場合、クロックの伝送経路を模式的に示すと、図3に矢印で示すようになる。なお、実際には、レイアウト上の制約やプロセス上の制約などによりクロックは必ずしも平面的且つ直線的に伝送されるわけではないが、図3では、クロックが伝送される方向を直線近似した場合の伝送経路を所定の平面(例えば、半導体基板の表面)に投影して直線的に矢印で示している。また、図3では、クロックの伝送経路上で分岐するノードを模式的に△で示している。
例えば、クロックインターフェース配置領域ACIF0〜ACIF3に配置されたクロックインターフェースCIF0〜CIF3のそれぞれにクロックが入力される。そして、クロックインターフェースCIF0〜CIF3から転送されたクロックは、転送レーンTL0〜TL3(図2参照)へ出力される。それとともに、クロックインターフェースCIF0〜CIF3から転送されたクロックは、セレクタ配置領域ASL0〜ASL3に配置されたセレクタSL0〜SL3(図2参照)のセレクト動作により、データインターフェース配置領域ADIF0〜ADIF3に配置されたデータインターフェースDIF0〜DIF3(図2参照)へ出力される。
このとき、各ユニット配置領域AUN0〜AUN3内のレイアウト構成、すなわち各ユニットUN0〜UN3のレイアウト構成が同様であるので、チップエッジCEに沿った方向におけるクロックの伝送経路(伝送配線)の長さSTL0〜STL3を各ユニット配置領域AUN0〜AUN3の間で互いに略均等にすることができる。これにより、各ユニットUN0〜UN3の間で特性(例えば、伝送時間など)を容易に揃えることができる。
あるいは、例えば、図4に示すように、インターフェース回路100に2個の外部モジュールOM−1,OM−2を接続したい場合、ファームウェアFW2が選択されインターフェース6(図1参照)経由でメモリ4に書き込まれる。図4は、ファームウェアFW2が選択された場合におけるインターフェース回路100の回路構成を示す図である。コントローラ3は、システムSYS100が起動された際に、ファームウェアFW2をメモリ4から読み出して、ファームウェアFW2に従った制御信号群CS2をレジスタ5に格納する。コントローラ3は、レジスタ5に格納された制御信号群CS2に従って、2個の外部モジュールOM−1,OM−2を接続するための構成に切り替えるように、インターフェース回路100を制御する。例えば、コントローラ3は、インターフェース回路100において、図4に実線で示すラインをアクティブにするとともに、図4に一点鎖線で示すラインをノンアクティブにするように、インターフェース回路100を制御する。
具体的には、セレクタSL0は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、入力ノードSL0b及び他の入力ノード(図示せず)のうち入力ノードSL0bを選択する。これにより、セレクタSL0は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN0のデータインターフェースDIF0へ出力ノードSL0a経由で供給する。
セレクタSL1は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL1b,SL1cのうち入力ノードSL1cを選択する。これにより、セレクタSL1は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN1のデータインターフェースDIF1へ出力ノードSL1a経由で供給する。例えば、セレクタSL1は、入力ノードSL1bをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL2は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL2b,SL2cのうち入力ノードSL2bを選択する。これにより、セレクタSL2は、ユニットUN2のクロックインターフェースCIF2から転送されたクロックを選択してユニットUN2のデータインターフェースDIF2へ出力ノードSL2a経由で供給する。例えば、セレクタSL2は、入力ノードSL2cをハイインピーダンス状態にし、クロックインターフェースCIF0に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL3は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL3b〜SL3dのうち入力ノードSL3cを選択する。これにより、セレクタSL3は、ユニットUN2のクロックインターフェースCIF2から転送されたクロックを選択してユニットUN3のデータインターフェースDIF3へ出力ノードSL3a経由で供給する。例えば、セレクタSL3は、入力ノードSL3bをハイインピーダンス状態にし、クロックインターフェースCIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。セレクタSL3は、入力ノードSL3dをハイインピーダンス状態にし、クロックインターフェースCIF0に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
クロックインターフェースCIF1は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、入力ノードCIF1aをディスエーブルする。例えば、クロックインターフェースCIF1は、入力ノードCIF1aをハイインピーダンス状態にし、入力端子ITc2に接続されたラインと入力端子ITc2とをノンアクティブにする。
クロックインターフェースCIF3は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、入力ノードCIF3aをディスエーブルする。例えば、クロックインターフェースCIF3は、入力ノードCIF3aをハイインピーダンス状態にし、入力端子ITc4に接続されたラインと入力端子ITc4とをノンアクティブにする。
転送レーンTL0は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF0に接続された入力ノードTL0aとデータインターフェースDIF0,DIF1に接続された入力ノードTL0b,TL0cとをイネーブルする。転送レーンTL0は、制御信号に従って、データインターフェースDIF2,DIF3に接続された入力ノードTL0d,TL0eをそれぞれディスエーブルする。例えば、転送レーンTL0は、入力ノードTL0d,TL0eをそれぞれハイインピーダンス状態にし、データインターフェースDIF2,DIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL1は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF1に接続された入力ノードTL1aとデータインターフェースDIF1,DIF2に接続された入力ノードTL1b,TL1cとをディスエーブルする。例えば、転送レーンTL1は、入力ノードTL1aをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。転送レーンTL1は、入力ノードTL1b,TL1cをハイインピーダンス状態にし、データインターフェースDIF1,DIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL2は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF2に接続された入力ノードTL2aとデータインターフェースDIF2,DIF3に接続された入力ノードTL2b,TL2cとをイネーブルする。
転送レーンTL3は、ファームウェアFW2に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF3に接続された入力ノードTL3aとデータインターフェースDIF3に接続された入力ノードTL3bとをディスエーブルする。例えば、転送レーンTL3は、入力ノードTL3aをハイインピーダンス状態にし、クロックインターフェースCIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。転送レーンTL3は、入力ノードTL3bをハイインピーダンス状態にし、データインターフェースDIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
なお、インターフェース回路100では、各外部モジュールOM−1,OM−2に対して、データインターフェース(データレーン)を2レーン設けることができるので、データ転送レートを容易に向上できる。
また、インターフェース回路100では、クロックインターフェースCIF0,CIF2のクロックが選択され、クロックインターフェースCIF1,CIF3のクロックが非選択である。図2及び図4を比較すると、インターフェース回路100では、クロックを選択する際の優先度について、下記の数式1が成り立つことが分かる。
(クロックインターフェースCIF0,CIF2のクロックの優先度)
>(クロックインターフェースCIF1,CIF3のクロックの優先度)
・・・(数式1)
なお、クロックを選択する際の優先度とは、インターフェース回路100に外部接続される外部モジュールOMの個数が変更される際に、どのクロックインターフェースからのクロックをセレクタが優先的に選択するのかを決定するための指標である。例えば、クロックインターフェースCIF0,CIF2のクロックは、外部接続される外部モジュールOMが4個の場合(図2の場合)と外部接続される外部モジュールOMが2個の場合(図4の場合)とで一貫して選択されている。一方、クロックインターフェースCIF1,CIF3のクロックは、外部接続される外部モジュールOMが4個の場合(図2の場合)に選択されているが、外部接続される外部モジュールOMが2個の場合(図4の場合)にどのセレクタからも選択されていない。すなわち、クロックを選択する際の優先度について、上記の数式1が成り立つことが分かる。
インターフェース回路100の内部的な構成が図4に示すように切り替えられている場合、クロックの伝送経路は、図5に矢印で示すようになる。図5は、ファームウェアFW2が選択された場合における複数のユニットUN0〜UN3のレイアウト構成及びクロックの伝送経路を示す図である。なお、図5では、クロックが伝送される方向を直線近似した場合の伝送経路を所定の平面(例えば、半導体基板の表面)に投影して直線的に矢印で示している。また、図5では、クロックの伝送経路上で分岐するノードを模式的に△で示している。
例えば、クロックインターフェース配置領域ACIF0,ACIF2に配置されたクロックインターフェースCIF0,CIF2のそれぞれにクロックが入力される。そして、クロックインターフェースCIF0から転送されたクロックは、転送レーンTL0(図4参照)へ出力される。それとともに、クロックインターフェースCIF0から転送されたクロックは、セレクタ配置領域ASL0,ASL1に配置されたセレクタSL0,SL1(図2参照)のセレクト動作により、データインターフェース配置領域ADIF0,ADIF1に配置されたデータインターフェースDIF0,DIF1(図4参照)へ出力される。クロックインターフェースCIF2から転送されたクロックは、転送レーンTL2(図4参照)へ出力される。それとともに、クロックインターフェースCIF2から転送されたクロックは、セレクタ配置領域ASL2,ASL3に配置されたセレクタSL2,SL3(図4参照)のセレクト動作により、データインターフェース配置領域ADIF2,ADIF3に配置されたデータインターフェースDIF2,DIF3(図4参照)へ出力される。
このとき、ユニット配置領域AUN0,AUN2が、ユニット配置領域AUN1,AUN3よりもチップエッジCEに沿った方向における中央側に配置される。すなわち、優先度の高いクロックを転送するクロックインターフェースCIF0,CIF2を有するユニットUN0,UN2が、より低い優先度で選択されるクロックを転送するクロックインターフェースCIF1,CIF3を有するユニットUN1,UN3よりもチップエッジCEに沿った方向における中央側に配置される。これにより、各ユニットUN0〜UN3のクロックの伝送経路(伝送配線)の長さSTL0〜STL3のうち、少なくともユニットUN0,UN2,UN3のクロックの伝送経路の長さSTL0,STL2,STL3を互いに略均等にすることができる。また、ユニットUN0,UN2,UN3のクロックの伝送経路の長さSTL0,STL2,STL3と、ユニットUN1のクロックの伝送経路の長さSTL1との差をユニット1個に対応したものに抑えることができる。これにより、各ユニットUN0〜UN3の間で特性(例えば、伝送時間など)を容易に揃えることができる。
あるいは、例えば、図6に示すように、インターフェース回路100に1個の外部モジュールOM−1を接続したい場合、ファームウェアFW3が選択されインターフェース6(図1参照)経由でメモリ4に書き込まれる。図6は、ファームウェアFW3が選択された場合におけるインターフェース回路100の回路構成を示す図である。コントローラ3は、システムSYS100が起動された際に、ファームウェアFW3をメモリ4から読み出して、ファームウェアFW3に従った制御信号群CS3をレジスタ5に格納する。コントローラ3は、レジスタ5に格納された制御信号群CS3に従って、1個の外部モジュールOM−1を接続するための構成に切り替えるように、インターフェース回路100を制御する。例えば、コントローラ3は、インターフェース回路100において、図6に実線で示すラインをアクティブにするとともに、図6に一点鎖線で示すラインをノンアクティブにするように、インターフェース回路100を制御する。
具体的には、セレクタSL0は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、入力ノードSL0b及び他の入力ノード(図示せず)のうち入力ノードSL0bを選択する。これにより、セレクタSL0は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN0のデータインターフェースDIF0へ出力ノードSL0a経由で供給する。
セレクタSL1は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL1b,SL1cのうち入力ノードSL1cを選択する。これにより、セレクタSL1は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN1のデータインターフェースDIF1へ出力ノードSL1a経由で供給する。例えば、セレクタSL1は、入力ノードSL1bをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL2は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL2b,SL2cのうち入力ノードSL2cを選択する。これにより、セレクタSL2は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN2のデータインターフェースDIF2へ出力ノードSL2a経由で供給する。例えば、セレクタSL2は、入力ノードSL2bをハイインピーダンス状態にし、クロックインターフェースCIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
セレクタSL3は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、複数の入力ノードSL3b〜SL3dのうち入力ノードSL3dを選択する。これにより、セレクタSL3は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを選択してユニットUN3のデータインターフェースDIF3へ出力ノードSL3a経由で供給する。例えば、セレクタSL3は、入力ノードSL3bをハイインピーダンス状態にし、クロックインターフェースCIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。セレクタSL3は、入力ノードSL3cをハイインピーダンス状態にし、クロックインターフェースCIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
クロックインターフェースCIF1は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、入力ノードCIF1aをディスエーブルする。例えば、クロックインターフェースCIF1は、入力ノードCIF1aをハイインピーダンス状態にし、入力端子ITc2に接続されたラインと入力端子ITc2とをノンアクティブにする。
クロックインターフェースCIF2は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、入力ノードCIF2aをディスエーブルする。例えば、クロックインターフェースCIF2は、入力ノードCIF2aをハイインピーダンス状態にし、入力端子ITc3に接続されたラインと入力端子ITc3とをノンアクティブにする。
クロックインターフェースCIF3は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、入力ノードCIF3aをディスエーブルする。例えば、クロックインターフェースCIF3は、入力ノードCIF3aをハイインピーダンス状態にし、入力端子ITc4に接続されたラインと入力端子ITc4とをノンアクティブにする。
転送レーンTL0は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF0に接続された入力ノードTL0aとデータインターフェースDIF0〜DIF3に接続された入力ノードTL0b〜TL0eとをイネーブルする。
転送レーンTL1は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF1に接続された入力ノードTL1aとデータインターフェースDIF1,DIF2に接続された入力ノードTL1b,TL1cとをディスエーブルする。例えば、転送レーンTL1は、入力ノードTL1aをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。転送レーンTL1は、入力ノードTL1b,TL1cをハイインピーダンス状態にし、データインターフェースDIF1,DIF2に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL2は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF2に接続された入力ノードTL2aとデータインターフェースDIF2,DIF3に接続された入力ノードTL2b,TL2cとをディスエーブルする。例えば、転送レーンTL2は、入力ノードTL2aをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。転送レーンTL2は、入力ノードTL2b,TL2cをハイインピーダンス状態にし、データインターフェースDIF2,DIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
転送レーンTL3は、ファームウェアFW3に応じてコントローラ3から受けた制御信号に従って、クロックインターフェースCIF3に接続された入力ノードTL3aとデータインターフェースDIF3に接続された入力ノードTL3bとをディスエーブルする。例えば、転送レーンTL3は、入力ノードTL3aをハイインピーダンス状態にし、クロックインターフェースCIF1に接続されたラインのうち一点鎖線の部分をノンアクティブにする。転送レーンTL3は、入力ノードTL3bをハイインピーダンス状態にし、データインターフェースDIF3に接続されたラインのうち一点鎖線の部分をノンアクティブにする。
なお、インターフェース回路100では、外部モジュールOM−1に対して、データインターフェース(データレーン)を4レーン設けることができるので、データ転送レートを容易に向上できる。
また、インターフェース回路100では、クロックインターフェースCIF0のクロックが選択され、クロックインターフェースCIF1〜CIF3のクロックが非選択である。図2、図4、及び図6を比較すると、インターフェース回路100では、クロックを選択する際の優先度について、下記の数式2が成り立つことが分かる。
(クロックインターフェースCIF0のクロックの優先度)
>(クロックインターフェースCIF2のクロックの優先度)
>(クロックインターフェースCIF0,CIF3のクロックの優先度)
・・・(数式2)
なお、クロックを選択する際の優先度とは、インターフェース回路100に外部接続される外部モジュールOMの個数が変更される際に、どのクロックインターフェースからのクロックをセレクタが優先的に選択するのかを決定するための指標である。例えば、クロックインターフェースCIF0のクロックは、外部接続される外部モジュールOMが4個の場合(図2の場合)と外部接続される外部モジュールOMが2個の場合(図4の場合)と外部接続される外部モジュールOMが1個の場合(図6の場合)とで一貫して選択されている。クロックインターフェースCIF2のクロックは、外部接続される外部モジュールOMが4個の場合(図2の場合)と外部接続される外部モジュールOMが2個の場合(図4の場合)とで一貫して選択されているが、外部接続される外部モジュールOMが1個の場合(図6の場合)にどのセレクタからも選択されていない。また、クロックインターフェースCIF1,CIF3のクロックは、外部接続される外部モジュールOMが4個の場合(図2の場合)に選択されているが、外部接続される外部モジュールOMが2個の場合(図4の場合)及び外部接続される外部モジュールOMが1個の場合(図6の場合)にどのセレクタからも選択されていない。すなわち、クロックを選択する際の優先度について、上記の数式2が成り立つことが分かる。
すなわち、クロックの優先度が高いとは、インターフェース回路100に外部接続される外部モジュールOMの個数が変更されても各ユニットのセレクタから選択されやすいことを示している。
ここで、インターフェース回路100において転送動作を行うクロックインターフェースの数を少なくできればインターフェース回路100の消費電力を低減できるため好ましい。しかし、インターフェース回路100に複数の外部モジュールOMが外部接続される場合、複数の外部モジュールOMのそれぞれから供給されるクロックの周期が異なる可能性がある。このとき、ある外部モジュールOMから供給されたデータを異なる外部モジュールOMのクロックを用いて転送してしまうと、そのデータを適正なタイミングで転送することが困難になり、データ化け等の転送エラーが発生する可能性がある。そこで、ある外部モジュールOMから供給されたデータの転送に用いるクロックはその同じ外部モジュールOMから供給されたクロックとする必要がある。その制約のもとで、転送動作を行うクロックインターフェースの数を可能な限り少なくするために、本実施形態では、クロックを選択する際の優先度という指標を導入し、その指標に従って各セレクタのセレクト動作を制御している。
インターフェース回路100の内部的な構成が図6に示すように切り替えられている場合、クロックの伝送経路は、図7に矢印で示すようになる。図7は、ファームウェアFW3が選択された場合における複数のユニットUN0〜UN3のレイアウト構成及びクロックの伝送経路を示す図である。なお、図7では、クロックが伝送される方向を直線近似した場合の伝送経路を所定の平面(例えば、半導体基板の表面)に投影して直線的に矢印で示している。また、図7では、クロックの伝送経路上で分岐するノードを模式的に△で示している。
例えば、クロックインターフェース配置領域ACIF0に配置されたクロックインターフェースCIF0にクロックが入力される。そして、クロックインターフェースCIF0から転送されたクロックは、転送レーンTL0(図6参照)へ出力される。それとともに、クロックインターフェースCIF0から転送されたクロックは、セレクタ配置領域ASL0〜ASL3に配置されたセレクタSL0〜SL3(図6参照)のセレクト動作により、データインターフェース配置領域ADIF0〜ADIF3に配置されたデータインターフェースDIF0〜DIF3(図6参照)へ出力される。
このとき、ユニット配置領域AUN0,AUN2が、ユニット配置領域AUN1,AUN3よりもチップエッジCEに沿った方向における中央側に配置される。すなわち、優先度の高いクロックを転送するクロックインターフェースCIF0,CIF2を有するユニットUN0,UN2が、より低い優先度で選択されるクロックを転送するクロックインターフェースCIF1,CIF3を有するユニットUN1,UN3よりもチップエッジCEに沿った方向における中央側に配置される。さらに、ユニット配置領域AUN0,AUN2を比較すると、ユニット配置領域AUN0がユニット配置領域AUN2よりもチップエッジCEに沿った方向における中央側に配置されている。すなわち、ユニットUN2より優先度の高いユニットUN0の方が、ユニットUN2よりもチップエッジCEに沿った方向における中央側に配置される。これにより、各ユニットUN0〜UN3のクロックの伝送経路(伝送配線)の長さSTL0〜STL3のうち、少なくともユニットUN0,UN2のクロックの伝送経路の長さSTL0,STL2を互いに略均等にすることができ、少なくともユニットUN1,UN3のクロックの伝送経路の長さSTL1,STL3を互いに略均等にすることができる。また、ユニットUN0,UN2のクロックの伝送経路の長さSTL0,STL2と、ユニットUN1,UN3のクロックの伝送経路の長さSTL1,STL3との差をユニット1個に対応したものに抑えることができる。これにより、各ユニットUN0〜UN3の間で特性(例えば、伝送時間など)を容易に揃えることができる。
以上のように、実施形態では、インターフェース回路100において、複数のユニットUN0〜UN3のそれぞれが、クロックインターフェースCIF0〜CIF3、データインターフェースDIF0〜DIF3、及びセレクタSL0〜SL3を有する。セレクタSL0〜SL3は、データインターフェースDIF0〜DIF3がクロックに同期してデータを転送するように、クロックを選択してデータインターフェースDIF0〜DIF3へ供給する。これにより、インターフェース回路100は、外部接続される外部モジュールOMの個数に応じて、内部的な構成を切り替えることができる。したがって、別のチップCHIP2〜CHIP4(図8参照)を追加することなくインターフェース回路100に複数の外部モジュールOM−1〜OM−4を外部接続させることができるので、チップ面積の増大を抑制しながら外部接続の個数についての自由度を向上できる。
また、実施形態では、インターフェース回路100の複数のユニットUN0〜UN3において、ユニットUN0のセレクタSL0は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックを常に選択してユニットUN0のデータインターフェースDIF0へ供給する。ユニットUN1,UN2のセレクタSL1,SL2は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックとユニットUN1,UN2のクロックインターフェースCIF1,CIF2から転送されたクロックとのいずれかを選択してユニットUN1,US2のデータインターフェースDIF1,DIF2へ供給する。ユニットUN3のセレクタSL3は、ユニットUN0のクロックインターフェースCIF0から転送されたクロックとユニットUN2のクロックインターフェースCIF2から転送されたクロックとユニットUN3のクロックインターフェースCIF3から転送されたクロックとのいずれかを選択してユニットUN3のデータインターフェースDIF3へ供給する。これにより、外部接続される外部モジュールOMの個数に応じて内部的な構成を切り替えるようにインターフェース回路100を構成することができる。
また、実施形態では、インターフェース回路100において、優先度の高いクロックを転送するクロックインターフェースを有するユニットが、より低い優先度で選択されるクロックを転送するクロックインターフェースを有するユニットよりもチップエッジに沿った方向における中央側に配置される。例えば、ユニットUN0がユニットUN2よりもチップエッジに沿った方向における中央側に配置される。例えば、ユニットUN0がユニットUN1,UN3よりもチップエッジに沿った方向における中央側に配置される。例えば、ユニットUN2がユニットUN1,UN3よりもチップエッジに沿った方向における中央側に配置される。これにより、インターフェース回路100に外部接続される外部モジュールの個数が変わった場合に、各ユニットUN0〜UN3のクロックの伝送経路の長さSTL0〜STL3を互いに略均等にでき、あるいは、互いの差をユニット1個に対応したものに抑えることができる。これにより、インターフェース回路100に外部接続される外部モジュールの個数が変わった場合に、各ユニットUN0〜UN3の間で特性(例えば、伝送時間など)を容易に揃えることができる。
また、実施形態では、インターフェース回路100が1つのチップCHIP100に搭載されている。例えば、コントローラ3、インターフェース回路100、及びバス3は、1つのチップCHIP100に搭載されている。これにより、チップ面積の増大を容易に抑制できる。
なお、インターフェース回路100には、3個の外部モジュールが外部接続されてもよい。このとき、例えば、ユニットUN0,UN1が図2に示す構成に切り替えられ、ユニットUN2,UN3が図4に示す構成に切り替えられてもよい。あるいは、例えば、ユニットUN0,UN1が図4に示す構成に切り替えられ、ユニットUN2,UN3が図2に示す構成に切り替えられてもよい。あるいは、インターフェース回路100は、図4に示す構成に切り替えられた状態で、ユニットUN0に外部モジュールOM−1が接続され、ユニットUN1〜UN3に外部モジュールOM−2が接続されてもよい。
あるいは、インターフェース回路100は、外部接続が要求される外部モジュールの個数に応じて4個より多くのユニットを備えてもよい。この場合も、上記と同様の考え方で、外部接続される外部モジュールOMの個数に応じて、内部的な構成を切り替えることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。