(57)【要約】【課題】  専用回路を用いることなく、より小さなチップ面積を用いて、機能を動的に変更することが可能な半導体デバイスを提供する。【解決手段】  プログラムシーケンサ１１、データバッファ１２１，１２２、カウンタ１３、及びセレクタ１５の各機能モジュールを備えたインタフェース回路１において、これら各部が有する入力用ポートに３：１のセレクタ１５を配設し、各機能モジュールが有する入力用ポート及び出力用ポートを相互に結線しておく。インタフェース回路１において、セレクタ１５の選択状態を変更することにより、各機能モジュールの接続状態を任意に変更することにより、特定の目的に適合した半導体デバイスを実現する。【選択図】  図７
2005328419.tif 000002
【特許請求の範囲】
【請求項１】
入力用ポートと出力用ポートとのいずれか若しくは両方を有する複数の機能モジュールと、
前記複数の機能モジュールのうち一つの機能モジュールが有する一つの出力用ポートと、前記複数の機能モジュールのうち別の機能モジュールが有する一つまたは複数の入力用ポートと、を各々接続する複数の信号ラインと、
前記信号ラインの使用状態を変更する変更手段と、を含んでなる回路を備えたことを特徴とする半導体デバイス。
【請求項２】
前記回路において、前記複数の機能モジュールは、プログラムシーケンサと、このプログラムシーケンサにより制御される他の機能モジュールとによって構成されることを特徴とする請求項１記載の半導体デバイス。
【請求項３】
前記回路において、前記複数の機能モジュールは、前記プログラムシーケンサにより制御される１以上のデータバッファ及び１以上のカウンタとを含むことを特徴とする請求項２記載の半導体デバイス。
【請求項４】
前記変更手段は、前記機能モジュールが有する入力用ポートに配設されるセレクタであって、
前記セレクタは、Ｎ個の入力ポートと１個の出力ポートとを備えたＮ：１のセレクタであり、前記Ｎ個の入力ポートのうち少なくとも１個以上の入力ポートには前記信号ラインが接続され、前記１個の出力ポートは前記機能モジュールが有する入力用ポートに接続されることを特徴とする請求項１から３のいずれかに記載の半導体デバイス。
【請求項５】
前記回路とともにＣＰＵを備え、前記回路が、当該半導体デバイスに外部接続される装置と前記ＣＰＵとの間におけるインタフェース回路として機能することを特徴とする請求項１から４のいずれかに記載の半導体デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、構成変更可能な回路を備える半導体デバイスに関する。
【背景技術】
【０００２】
従来、特定の目的に合わせた半導体デバイスとして、ＡＳＩＣ（Application Specific Integrated Circuit：特定用途向け集積回路）が知られている。ＡＳＩＣは汎用性が低いので、生産量が少ないと単価が非常に高くなってしまう。そこで、プログラミングによって配線を変更できる半導体デバイスを用いることがあった。
このような半導体デバイスとしては、例えば、異なる機能を有する複数の専用回路をチップ上に配置しておき、これら複数の専用回路の接続状態を設定することにより、必要な専用回路を選択して利用するものがあった（例えば、特許文献１参照。）。
【特許文献１】特開平１１−２８９０５１号公報
【０００３】
特許文献１に開示されたプログラマブルコントローラは、シリアルインタフェース回路、ＳＣＳＩ（Small Computer System Interface）インタフェース回路、イーサネット（登録商標）インタフェース回路等の複数種類のインタフェース回路が実装され、これらインタフェース回路への配線を目的に合わせて接続・切断することが可能である。そして、例えば、シリアルインタフェース回路が必要な場合はシリアルインタフェース回路をＭＰＵ（Micro Processing Unit）に接続して他のインタフェース回路を切断する等、実装されたインタフェース回路の中から所望の回路を選択することで、所望の半導体デバイスを実現しようとするものである。
【０００４】
また、プログラミングによって配線の変更が可能な半導体デバイスとして、ＦＰＧＡ（Field Programmable Gate Array）が知られている。ＦＰＧＡは、トランジスタやフリップフロップ等の基本回路素子を多数備え、これら各基本回路素子間の接続をプログラミングによって設定・変更できる。基本回路素子の接続状態を任意に設定することで特定の機能を実現するため、専用回路を用いる場合に比べて自由度が高いという利点がある。また、基本回路素子間の接続状態はメモリに記憶され、メモリを書き換えることで、基本回路素子間の接続状態を変更させることが可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されたように、異なる機能を有する複数の専用回路をチップ上に用意し、これら複数の回路の中から必要な回路を選択して利用する場合、当然のことながら、目的とする機能に対応する回路がチップ上に実装されていなければならない。従って、広汎な用途に対応できるようにするためには、より多数の回路を実装する必要があるが、多数の回路を実装するには大きなチップ面積を必要とする。このため、汎用性を高めようとするとデバイスが大型化してしまい、コストが増大するという問題があった。
また、実装される多数の回路のうち実際に利用される回路は一部であって、大半の回路は利用されないので、多くの回路を実装した物ほど効率が悪いという問題があった。
【０００６】
一方、ＦＰＧＡは、多数の基本回路素子を搭載すれば汎用性が高まるという利点があるが、搭載する基本回路素子の数が多くなるほど、接続状態を記憶するために大容量のメモリを必要とし、コストが高くなるという問題があった。すなわち、比較的高度な機能を有する半導体デバイスにおける基本回路素子レベルの接続ラインは膨大な数であり、接続状態は極めて複雑である。従って、これら全ての接続ラインの状態を記憶するためには、非常に大きな容量を有するメモリが必要であった。また、多くの基本回路素子と大容量のメモリとを実装するため、チップ面積がＡＳＩＣ等に比べて非常に大きく、高コスト化を招いていた。
さらに、ＦＰＧＡのプログラミングを行う場合、目的の回路を基本回路素子レベルで設計しなければならない。このため、膨大な作業量と時間が必要になり、コスト増を招く可能性があった。また、最適な回路設計をしないと余分な基本回路素子が多数発生し、極めて効率が悪くなるという問題があった。
【０００７】
本発明の目的は、専用回路を用いることなく、より小さなチップ面積を用いて、機能を動的に変更可能な半導体デバイスを提供することにより、特定の目的に合わせた半導体デバイスを容易に実現できるようにすることである。
【課題を解決するための手段】
【０００８】
本発明の半導体デバイスは、入力用ポートと出力用ポートとのいずれか若しくは両方を有する複数の機能モジュールと、前記複数の機能モジュールのうち一つの機能モジュールが有する一つの前記出力用ポートと、前記複数の機能モジュールのうち別の前記機能モジュールが有する一つまたは複数の前記入力用ポートと、を各々接続する複数の信号ラインと、前記信号ラインの使用状態を変更する変更手段と、を含んでなる回路を備えたことを特徴とする。
【０００９】
また、本発明において、前記回路における前記複数の機能モジュールが、プログラムシーケンサと、このプログラムシーケンサにより制御される他の機能モジュールとによって構成されるようにしても良い。
【００１０】
また、本発明において、前記回路における前記複数の機能モジュールが、前記プログラムシーケンサにより制御される１以上のデータバッファ及び１以上のカウンタとを含む構成としても良い。
【００１１】
また、本発明において、前記回路における前記変更手段が、前記機能モジュールが有する入力用ポートに配設されるセレクタであって、前記セレクタは、Ｎ個の入力ポートと１個の出力ポートとを備えたＮ：１のセレクタ（Ｎは正の整数）であり、前記Ｎ個の入力ポートのうち少なくとも１個以上の入力ポートには前記信号ラインが接続され、前記１個の出力ポートは前記機能モジュールが有する入力ポートに接続されるものとしても良い。
【００１２】
また、本発明において、前記回路とともにＣＰＵ（Central Processing Unit）を備え、前記回路が、当該半導体デバイスに外部接続される装置と前記ＣＰＵとの間におけるインタフェース回路として機能する構成としても良い。
【発明の効果】
【００１３】
本発明によれば、入力用ポートと出力用ポートとのいずれか若しくは両方を有する複数の機能モジュールと、複数の機能モジュールのうち一つの機能モジュールが有する一つの出力用ポートと、複数の機能モジュールのうち別の機能モジュールが有する一つまたは複数の入力用ポートと、を各々接続する複数の信号ラインとを備え、信号ラインの使用状態を変更手段によって変更するので、複数の機能モジュール間における出力用ポートと入力用ポートとの接続状態を変更することにより、複数の機能モジュールを任意に接続することができるので、所望の機能を有する半導体装置を容易に実現することができる。
【００１４】
ここで、機能モジュールとは、プログラムシーケンサや、プログラムシーケンサにより制御されるカウンタ、データバッファ等であり、これらの機能モジュールを組み合わせることによって、インタフェース回路等の各種の回路を実現できる。このため、予め複数の専用回路を搭載する半導体装置と同様に、所望の機能を有する回路を実現することができる。また、各機能モジュールは様々な回路に用いることが可能な汎用性の高いものであるから、特定の機能を有する専用回路を用いる場合のように多数の余分な回路が生じることがない。このため、例えばチップ面積を必要最小限に抑えることができ、低コスト化を図ることができる。さらに、機能モジュールの接続状態の設計は、トランジスタ等の基本回路素子レベルにおけるプログラミングのような複雑な設計作業を必要としないので、極めて容易に所望の半導体装置を実現できる。
【００１５】
また、本発明の半導体装置が備える回路における機能モジュールは、いずれも、少数の基本回路素子により実現可能である。例えば、プログラムシーケンサは、マイクロコードに従ってバッファメモリやカウンタ等のシーケンス制御を行うものであって、ＣＰＵのようにメモリに格納されたデータの演算処理を実行するものではないから、ゲート数及び回路規模はＣＰＵに比べて非常に小さい。従って、本発明の半導体装置は、複数の機能モジュールを搭載していても、少ないゲート数及び小さなチップ面積で済むので、低コストで製造可能である。
【００１６】
また、汎用的な機能モジュールの組み合わせによって所望の機能を有する回路を実現することで、あらゆる機能に対応させることが可能であり、将来において、現在は知られていない機能をも実現することが可能である。
例えば、本発明の半導体デバイスにおいて、回路とともにＣＰＵを実装し、この回路を、当該半導体デバイスに外部接続される装置とＣＰＵとの間におけるインタフェース回路として機能させる場合、様々なインタフェース規格に容易に適合させることができる上、新たなインタフェース規格が出現した場合にも容易に対応可能である。特に、インタフェース規格は多種多様であり、将来において新たな規格が出現する可能性が極めて高いので、本発明の半導体装置を用いることにより、インタフェース回路を含む装置全体の設計変更等を回避することができる。
【００１７】
つまり、本発明によれば、内部の接続状態を変更することで所望の機能を実現する半導体装置において、高い自由度と、設計容易性とを確保しつつ、無駄を抑えて低コスト化を図ることができる。
【００１８】
また、本発明において、出力用ポートと入力用ポートとを結線する信号ラインの接続状態を変更する変更手段が、機能モジュールが有する入力用ポートに配設されるセレクタであって、このセレクタが、Ｎ個の入力ポートと１個の出力ポートとを備えたＮ：１のセレクタであり、セレクタのＮ個の入力ポートのうち少なくとも１個以上の入力ポートには信号ラインが接続され、セレクタの１個の出力ポートが機能モジュールが有する入力用ポートに接続される構成とすれば、セレクタにおいて複数の信号ラインから一つの信号ラインを選択することで、機能モジュールの入力用ポートに、任意の機能モジュールの出力用ポートから出力される信号を入力させることができる。また、セレクタが有するＮ個の入力ポートのうち１個の入力ポートに、信号ラインを接続しないようにしておけば、セレクタにおいてどの信号ラインも選択しない状態を実現できる。この場合、機能モジュールの入力用ポートに他の機能モジュールからの信号を入力させないようにできる。このように、セレクタにおける選択状態を切り換えることにより、機能モジュール間の接続状態を容易に変更できる。また、予め、セレクタが有するＮ個の入力ポートに、それぞれ別の信号ラインを接続しておくことができるので、機能モジュール間の接続状態を高い自由度で変更することができる。さらに、機能モジュール間の接続状態は各セレクタにおける選択状態により決定される。従って、機能モジュール間の接続状態を記憶するために大容量のメモリ等を用意する必要がないので、低コスト化を図ることが可能である。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面に基づき説明する。
図１は、本発明を適用した実施の形態における半導体デバイス３の構成を示す図である。
半導体デバイス３には、ＣＰＵ２と、インタフェース回路１とが実装されており、インタフェース回路１は半導体デバイス３の外部の装置に接続され、当該外部の装置とＣＰＵ２との間における入出力インタフェースとして機能する。
ＣＰＵ２は、インタフェース回路１に対して設定や起動トリガの出力等の制御を実行し、インタフェース回路１は、ＣＰＵ２に対して、半導体デバイス３に外部接続された装置から受信したデータや終了通知等を出力する。
【００２０】
ここで、図２及び図３を参照してインタフェース回路１の構成について説明する。
図２は、インタフェース回路１の内部構成を示す概略ブロック図である。また、図３はインタフェース回路１の各部の構成を示す図であり、（ａ）はプログラムシーケンサ１１の構成を示し、（ｂ）はデータバッファ１２１の構成を示し、（ｃ）はカウンタ１３の構成を示し、（ｄ）は入出力切換器１４１の構成を示す。
インタフェース回路１は、プログラムシーケンサ（ＰＳ：Programmable Sequencer）１１、データバッファ（ＤＢ：Data Buffer）１２１，１２２、カウンタ（ＣＣＭ）１３及び入出力切換器（ＩＯＢ）１４１，１４２，１４３，１４４の各機能モジュールにより構成される。
【００２１】
プログラムシーケンサ１１は、マイクロコードと呼ばれるプログラムを記憶する記憶装置（図示略）を内蔵し、この記憶装置に記憶したプログラムに従って、インタフェース回路１の各機能モジュールのシーケンス制御を実行する。プログラムシーケンサ１１は、ＣＰＵ２（図１）によって、上記記憶装置（図示略）にプログラムを書き込むための入力インタフェース（図示略）を備える。
【００２２】
また、図３（ａ）に示すように、プログラムシーケンサ１１は、データバッファ１２１，１２２、カウンタ１３、及び入出力切換器１４１，１４２，１４３，１４４の各部から信号が入力される入力ポートin 0，in 1，…in Nを備える。これら各ポートには、後述するセレクタ１５が配設される。
さらに、プログラムシーケンサ１１は、データバッファ１２１，１２２、カウンタ１３、及び入出力切換器１４１，１４２，１４３，１４４の各部に対して制御信号を出力するため、出力ポートout 0，out 1，…out Nを備える。
【００２３】
データバッファ１２１，１２２は、所定の容量のデータを記憶するバッファメモリであって、ＣＰＵ２（図１）によってデータを書き込むための入力インタフェース（図示略）を備える。
図３（ｂ）に示すように、データバッファ１２１は、入力用のshift_inポート、shift_enポート、及び、出力用のshift_outポートを備える。データバッファ１２１は、記憶しているデータのＭＳＢ（Most Significant Bit）をshift_outポートから出力する。また、データバッファ１２１は、shift_enポートにパルス信号が入力されると、記憶しているデータをシフトする。すなわち、データのＭＳＢが破棄され、ｘビット目のデータは（ｘ−１）ビット目のデータに書き換えられ、shift_inポートへの入力信号がＬＳＢ（Least Significant Bit）となる。
なお、データバッファ１２１のshift_inポート及びshift_enポートには、後述するセレクタ１５が配設される。
データバッファ１２２は、データバッファ１２１と同一に構成される。
【００２４】
カウンタ１３は、ＣＰＵ２（図１）によってカウント値とカウント最大値を設定するためのインタフェース（図示略）を備える。
図３（ｃ）に示すように、カウンタ１３は入力用のcount_enポート、及び、出力用のmaxポートを備える。カウンタ１３は、count_enポートに入力されるパルス信号に従ってカウントアップし、カウント値が最大値に達すると、maxポートの出力を‘Hi’に切り換える。なお、カウンタ１３のcount_enポートには、後述するセレクタ１５が配設される。
【００２５】
入出力切換器１４１，１４２，１４３，１４４は、ＣＰＵ２（図１）によって設定を行うための入力インタフェース（図示略）を備え、ＣＰＵ２の設定に従って、入力側または出力側として動作する。
図３（ｄ）には、一例として入出力切換器１４１の構成を示す。この図３（ｄ）に示すように、入出力切換器１４１は、入出力用のdtポート、入力用のdinポート、及び、出力用のdoutポートを備える。
入力側として動作する場合、入出力切換器１４１は、dtポートに入力された値をdoutポートから出力する。また、出力側として動作する場合、入出力切換器１４１は、dinポートに入力された値をdtポートから出力する。
なお、入出力切換器１４１のdinポートには、後述するセレクタ１５が配設される。
入出力切換器１４２，１４３，１４４は、それぞれ、入出力切換器１４１と同一に構成される。
【００２６】
ここで、セレクタ１５について図４を参照して説明する。図４に示すセレクタ１５は、０〜Ｎの番号が付された入力用のＮ個のポートと、１個の出力用のoutポートとを備えた、Ｎ：１セレクタである。
セレクタ１５は、制御信号用の入力インタフェース（図示略）を備え、この入力インタフェース（図示略）に入力される制御信号に従って、入力ポート０〜Ｎのうちいずれか１のポートを選択し、選択されたポートへの入力をoutポートから出力する。従ってセレクタ１５が有する入力ポートに接続された信号ラインのうち、選択されたポートに接続された信号ラインのみが、セレクタ１５の出力ポートに接続され、他のポートに接続された信号ラインは切断される。
【００２７】
なお、以下に説明する図５及び図７においては、図４中に「Ｘ」と表示する位置に、選択中のポートの番号を表示する。例えば、図４の「Ｘ」に代えて「０」と表示した場合、セレクタ１５において、入力用のＮ個のポートから番号「０」が付されたポートが選択されたことを示す。また、図４の「Ｘ」に代えて「Ｕ」と表示した場合は、入力ポートが選択されていないことを示す。この場合、セレクタ１５のoutポートからの出力は‘Lo’に固定される。
【００２８】
図５は、インタフェース回路１における各機能モジュールの結線状態を示す図である。図５において、各機能モジュールとセレクタ１５との間の実線は、信号ラインを示す。
なお、図５，７の各図面及び以下の説明において、セレクタ１５は、３個の入力ポートと１個の出力ポートとを備える３：１のセレクタとする。また、プログラムシーケンサ１１は、４個の入力ポートin 0，in 1，in 2，in 3と、４個の出力ポートout 0，out 1，out 2，out 3とを備えるものとする。
【００２９】
図５に示すインタフェース回路１においては、プログラムシーケンサ１１、データバッファ１２１，１２２、カウンタ１３、及び、入出力切換器１４１，１４２，１４３，１４４が、それぞれ、次に述べるように結線される。
【００３０】
プログラムシーケンサ１１が備えるin 0ポートには、カウンタ１３のmaxポート、入出力切換器１４１のdoutポート、及び、データバッファ１２１のshift_outポートがセレクタ１５を介して結線される。
プログラムシーケンサ１１が備えるin 1ポートには、カウンタ１３のmaxポート、入出力切換器１４２のdoutポート、及び、入出力切換器１４３のdoutポートがセレクタ１５を介して結線される。
プログラムシーケンサ１１が備えるin 2ポートには、カウンタ１３のmaxポート、入出力切換器１４２のdoutポート、及び、入出力切換器１４３のdoutポートがセレクタ１５を介して結線される。
プログラムシーケンサ１１が備えるin 3ポートには、カウンタ１３のmaxポート、入出力切換器１４４のdoutポート、及び、データバッファ１２２のshift_outポートがセレクタ１５を介して結線される。
【００３１】
また、プログラムシーケンサ１１が備えるout 0ポートは、入出力切換器１４１のdinポート、データバッファ１２１のshift_enポート、データバッファ１２２のshift_enポート、及び、カウンタ１３のcount_enポートに結線される。
プログラムシーケンサ１１が備えるout 1ポートは、入出力切換器１４２のdinポート、データバッファ１２１のshift_enポート、データバッファ１２２のshift_enポート、及び、カウンタ１３のcount_enポートに結線される。
プログラムシーケンサ１１が備えるout 2ポートは、入出力切換器１４３のdinポート、及び、カウンタ１３のcount_enポートに結線される。
プログラムシーケンサ１１が備えるout 3ポートは、入出力切換器１４４のdinポート、及び、データバッファ１２１のshift_enポートに結線される。
【００３２】
カウンタ１３が備えるcount_enポートには、プログラムシーケンサ１１のout 0ポート、out 1ポート、及び、out 2ポートがセレクタ１５を介して結線される。また、カウンタ１３が備えるmaxポートは、プログラムシーケンサ１１のin 0ポート、in 1ポート、in 2ポート、in 3ポート、及び、データバッファ１２２のshift_enポートに結線される。
【００３３】
入出力切換器１４１が備えるdinポートには、データバッファ１２１のshift_outポート、データバッファ１２２のshift_outポート、及び、プログラムシーケンサ１１のout 0ポートがセレクタ１５を介して結線され、入出力切換器１４１が備えるdoutポートは、データバッファ１２１のshift_inポート、及び、プログラムシーケンサ１１のin 0ポートに結線される。
【００３４】
入出力切換器１４２が備えるdinポートには、データバッファ１２１のshift_outポート、データバッファ１２２のshift_outポート、及び、プログラムシーケンサ１１のout 1ポートがセレクタ１５を介して結線され、入出力切換器１４２が備えるdoutポートは、データバッファ１２１のshift_inポート、データバッファ１２２のshift_inポート、プログラムシーケンサ１１のin 1ポート、及びプログラムシーケンサ１１のin 2ポートに結線される。
【００３５】
入出力切換器１４３が備えるdinポートには、データバッファ１２１のshift_outポート、データバッファ１２２のshift_outポート、及び、プログラムシーケンサ１１のout 2ポートがセレクタ１５を介して結線され、入出力切換器１４３が備えるdoutポートは、データバッファ１２１のshift_inポート、データバッファ１２２のshift_inポート、プログラムシーケンサ１１のin 1ポート、及び、プログラムシーケンサ１１のin 2ポートに結線される。
【００３６】
入出力切換器１４４が備えるdinポートには、データバッファ１２１のshift_outポート、データバッファ１２２のshift_outポート、及び、プログラムシーケンサ１１のout 3ポートがセレクタ１５を介して結線され、入出力切換器１４４が備えるdoutポートは、プログラムシーケンサ１１のin 3ポート、及びデータバッファ１２２のshift_inポートに結線される。
【００３７】
データバッファ１２１が備えるshift_inポートには、入出力切換器１４１のdoutポート、入出力切換器１４２のdoutポート、及び、入出力切換器１４３のdoutポートがセレクタ１５を介して結線され、データバッファ１２１が備えるshift_enポートには、プログラムシーケンサ１１のout 0ポート、out 1ポート、及び、out 3ポートがセレクタ１５を介して結線される。また、データバッファ１２１が備えるshift_outポートは、入出力切換器１４１のdinポート、入出力切換器１４２のdinポート、入出力切換器１４３のdinポート、及び、入出力切換器１４４のdinポートに結線される。
【００３８】
データバッファ１２２が備えるshift_inポートには、入出力切換器１４２のdoutポート、入出力切換器１４３のdoutポート、及び、入出力切換器１４４のdoutポートがセレクタ１５を介して結線され、データバッファ１２２が備えるshift_enポートには、プログラムシーケンサ１１のout 0ポート、プログラムシーケンサ１１のout 1ポート、及び、カウンタ１３のmaxポートがセレクタ１５を介して結線される。また、データバッファ１２２が備えるshift_outポートは、入出力切換器１４１のdinポート、入出力切換器１４２のdinポート、入出力切換器１４３のdinポート、及び、入出力切換器１４４のdinポートに結線される。
【００３９】
このように、インタフェース回路１が備える機能モジュール、すなわちプログラムシーケンサ１１，カウンタ１３，データバッファ１２１，データバッファ１２２，入出力切換器１４１，入出力切換器１４２，入出力切換器１４３，入出力切換器１４４が有する出力ポートは、それぞれ信号ラインを介して、他の機能モジュールが備える入力ポートに配されたセレクタ１５に結線される。
そして、各入力ポートに配されたセレクタ１５は、結線された３の信号ラインの中で１の信号ラインのみを選択し、当該入力ポートに接続する。従って、セレクタ１５における選択状態を切り換えることにより、インタフェース回路１を構成するプログラムシーケンサ１１，カウンタ１３，データバッファ１２１，データバッファ１２２，入出力切換器１４１，入出力切換器１４２，入出力切換器１４３，入出力切換器１４４の各機能モジュールを、任意に接続することができる。
これにより、インタフェース回路１を構成するプログラムシーケンサ１１，カウンタ１３，データバッファ１２１，データバッファ１２２，入出力切換器１４１，入出力切換器１４２，入出力切換器１４３，入出力切換器１４４を適宜組み合わせて、所望の機能を有するインタフェース回路を実現できる。
【００４０】
［実施例］
ここで、インタフェース回路１においてセレクタ１５の接続状態を設定した具体的な例について、実施例として説明する。
本実施例では、所定の通信プロトコルに従ってデータを送受信する２つの装置のうち、一方の装置におけるインタフェース回路を、半導体デバイス３によって実現する。
【００４１】
図６は、本実施例における通信プロトコルを示すタイミングチャートであり、図７は、本実施例におけるインタフェース回路１の各部の接続状態を示す回路図であり、図８は、本実施例における半導体デバイス３の動作を示す図であり、図９は、図８のステップＳ１６におけるプログラムシーケンサ１１の動作を詳細に示すフローチャートである。
なお、図７においては、図５に示す信号ラインのうち、セレクタ１５により選択された信号ラインのみを実線として示し、セレクタ１５の設定により選択されなかった信号ライン（すなわち、未使用の信号ライン）を破線で示す。
【００４２】
まず、本実施例における通信プロトコルについて説明する。図６に示す通信プロトコルは、データ伝送に２本の信号線を用い、制御信号の伝送に２本の信号線を用いる。
この通信プロトコルに従って互いに通信を行う２つの装置を、装置Ａ及び装置Ｂとした場合、図６に示す信号ＤＩＮは装置Ａから装置Ｂに送信され、信号ＤＯＵＴは装置Ｂから装置Ａに送信される。従って、装置Ｂの側から見れば、信号ＤＩＮは入力データであり、信号ＤＯＵＴは出力データである。
また、信号ＥＮは、装置Ａによってドライブされるデータイネーブル信号であり、信号ＲＤＹは装置Ｂによってドライブされる通信レディ信号である。
【００４３】
まず、装置Ｂが信号ＲＤＹを‘Hi’にして、データを受信可能であることを装置Ａに通知する。装置Ａは、信号ＲＤＹが‘Hi’になった後、任意の時点で信号ＥＮを‘Hi’に切り換える。装置Ｂは、信号ＥＮの立ち上がりを検知した後、速やかに信号ＲＤＹを‘Lo’に切り換える。
【００４４】
そして、装置Ａ及び装置Ｂは、信号ＥＮに従って各々８ビットのデータを送信する。信号ＤＩＮ及び信号ＤＯＵＴは任意の時点で出力可能であるが、信号ＤＩＮ及び信号ＤＯＵＴは、信号ＥＮの立ち上がりにおいて有効な値であり、かつ、信号ＥＮの立ち上がりから立ち下がりまで保持されなければならない。これにより、装置Ａ及び装置Ｂは、信号ＥＮに同期して信号ＤＩＮ又は信号ＤＯＵＴの値を取得することにより、データを受信できる。
【００４５】
本実施例においては、図６に示す通信プロトコルを実行する場合の、装置Ｂを半導体デバイス３（図１）を用いて実現する。この場合、インタフェース回路１は、図６に示す各信号線とＣＰＵ２（図１）とを接続するインタフェースとして機能する。
上記機能を実現するため、インタフェース回路１は、セレクタ１５の選択状態を設定することにより、図７に示す接続状態となる。
【００４６】
図７に示す接続状態においては、入出力切換器１４１は出力側に設定され、dinポートに入力された信号をdtポートへ出力する。入出力切換器１４１のdtポートは、図６の信号ＤＯＵＴを伝送するための信号線に接続され、入出力切換器１４１のdinポートに配設されたセレクタ１５においては、入力ポート０が選択される。つまり、入出力切換器１４１は、データバッファ１２１のshift_outポートから入力される信号を図６の信号ＤＯＵＴとして出力する。
【００４７】
また、入出力切換器１４４は出力側に設定され、dinポートに入力された信号をdtポートへ出力する。入出力切換器１４４のdtポートは、図６の信号ＲＤＹを伝送するための信号線に接続され、入出力切換器１４４のdinポートに配設されたセレクタ１５においては入力ポート２が選択される。つまり、入出力切換器１４４は、プログラムシーケンサ１１のout 3から入力される信号を、図６の信号ＲＤＹとして出力する。
【００４８】
入出力切換器１４２及び入出力切換器１４３は入力側に設定され、信号の出力を行わないので、入出力切換器１４２及び入出力切換器１４３のdinポートに配設されたセレクタ１５は未選択（図７中に「Ｕ」と表記）に設定される。
入出力切換器１４２のdtポートは図６の信号ＤＩＮを伝送するための信号線に接続され、入出力切換器１４２はdtポートに入力された信号をdoutポートから出力する。入出力切換器１４２のdoutポートはデータバッファ１２２のshift_inポートに接続されるので、入出力切換器１４２は、入力された信号ＤＩＮをデータバッファ１２２へ出力する。
また、入出力切換器１４３のdtポートは図６の信号ＥＮを伝送するための信号線に接続され、入出力切換器１４３はdtポートに入力された信号をdoutポートから出力する。入出力切換器１４３のdoutポートはプログラムシーケンサ１１のin 1ポートに接続されるので、入出力切換器１４３は、入力された信号ＥＮをプログラムシーケンサ１１へ出力する。
【００４９】
データバッファ１２１は、内部に記憶しているデータを入出力切換器１４１へ出力するので、shift_inポートへの入力は不要である。従って、データバッファ１２１のshift_inポートに配設されたセレクタ１５は未選択状態に設定される。データバッファ１２１のshift_enポートに配設されたセレクタ１５においては入力ポート０が選択され、プログラムシーケンサ１１のout 0ポートが接続される。このため、データバッファ１２１は、プログラムシーケンサ１１のout 0ポートから入力される制御信号に従ってシフトする。
また、データバッファ１２２は、入出力切換器１４２を介して入力される信号ＤＩＮを記憶するので、データバッファ１２２のshift_inポートに配設されたセレクタ１５においては入力ポート０が選択され、入出力切換器１４２のdoutポートが接続される。また、データバッファ１２２のshift_enポートに配設されたセレクタ１５においては、入力ポート０が選択され、プログラムシーケンサ１１のout 0ポートが接続される。このため、データバッファ１２２は、データバッファ１２１と同様に、プログラムシーケンサ１１のout 0ポートからの制御信号に従ってシフトする。
【００５０】
プログラムシーケンサ１１が備える入力ポートのうち、in 2ポート及びin 3ポートは未選択状態となっている。
また、プログラムシーケンサ１１のin 0ポートに配設されたセレクタ１５においては入力ポート０が選択されており、プログラムシーケンサ１１のin 0ポートにはカウンタ１３のmaxポートからの信号が入力される。プログラムシーケンサ１１のin 1ポートに配設されたセレクタ１５においては入力ポート２が選択され、入出力切換器１４３のdoutポートが接続される。つまり、プログラムシーケンサ１１のin 1ポートには、入出力切換器１４３を介して信号ＥＮが入力される。
【００５１】
プログラムシーケンサ１１が備える出力ポートのうち、out 0ポートは、データバッファ１２１のshift_enポート、データバッファ１２２のshift_enポート、及び、カウンタ１３のcount_enポートに接続され、これらのポートに制御信号を出力する。
また、プログラムシーケンサ１１のout 3ポートは入出力切換器１４４のdinポートに接続されており、プログラムシーケンサ１１は入出力切換器１４４を介して信号ＲＤＹを出力する。
【００５２】
カウンタ１３のcount_enポートに配設されたセレクタ１５においては入力ポート０が選択され、プログラムシーケンサ１１のout 0ポートが接続される。また、カウンタ１３のmaxポートはプログラムシーケンサ１１のin 0ポートへ接続される。つまり、カウンタ１３は、プログラムシーケンサ１１から入力される制御信号に同期してカウントを実行し、カウント値が最大値に達した時点で、プログラムシーケンサ１１に制御信号を出力する。
【００５３】
本実施例において、図７に示すように構成されるインタフェース回路１を用いる場合の半導体の動作について、図８及び図９を参照して説明する。
まず、半導体デバイス３が備えるＣＰＵ２により、インタフェース回路１におけるセレクタ１５の選択状態が設定される（ステップＳ１１）。
【００５４】
続いて、ＣＰＵ２によって、インタフェース回路１が備える入出力切換器１４１，１４２，１４３，１４４について、それぞれ、入力側か出力側かの設定が行われる（ステップＳ１２）。
その後、ＣＰＵ２は、プログラムシーケンサ１１にプログラムをロードさせ、プログラムシーケンサ１１が備える記憶装置（図示略）に記憶させる（ステップＳ１３）。
【００５５】
ＣＰＵ２は、図６の信号ＤＯＵＴを出力するデータバッファ１２１に、送信すべきデータをロードさせる（ステップＳ１４）。
続いて、ＣＰＵ２は、カウンタ１３に対してカウント値の初期値及び最大値を設定する（ステップＳ１５）。初期値は「０」に設定される。また、本実施例では図６に示す通信プロトコルに従って８ビットのデータを送受信するため、最大値は「８」に設定される。
【００５６】
そして、プログラムシーケンサ１１の動作により、図６の通信プロトコルに従ってデータを送受信する（ステップＳ１６）。
プログラムシーケンサ１１の動作が終了すると、ＣＰＵ２は、図６の信号ＤＩＮを記憶したデータバッファ１２２からデータを取得し（ステップＳ１７）、全ての通信が完了したか否かを判別する（ステップＳ１８）。続いて別のデータを送受信する場合、ＣＰＵ２はステップＳ１４に戻って処理を続行し、全てのデータの送受信が完了した場合は、本処理を終了する。
【００５７】
ここで、ステップＳ１６（図８）におけるプログラムシーケンサ１１の動作について図９を参照して説明する。
プログラムシーケンサ１１は、まず、out 3ポートから出力する信号を‘Hi’に切り換える（ステップＳ２１）。図７を参照して説明したように、プログラムシーケンサ１１のout 3ポートの出力は、入出力切換器１４４を介して図６の信号ＲＤＹとなる。従って、ステップＳ２１の動作によって信号ＲＤＹが‘Hi’になる。
【００５８】
続いて、プログラムシーケンサ１１は、in 1ポートに入力される信号のレベルが‘Hi’になるまで待機する（ステップＳ２２）。プログラムシーケンサ１１のin 1ポートには、入出力切換器１４３を介して図６の信号ＥＮが入力されるので、ステップＳ２２においては、信号ＥＮが‘Hi’になるまで待機することとなる。
【００５９】
ここで、信号ＥＮが‘Hi’になると、プログラムシーケンサ１１は、out 3ポートから出力する信号を‘Lo’に切り換える（ステップＳ２３）。これにより、信号ＲＤＹが‘Lo’に切り換えられる。
【００６０】
次に、プログラムシーケンサ１１は、out 0ポートからパルス信号を出力する（ステップＳ２４）。Out 3ポートからの出力信号はデータバッファ１２１，データバッファ１２２のshift_enポート、及び、カウンタ１３のcount_enポートに入力される。
つまり、ステップＳ２４の動作により、データバッファ１２１及びデータバッファ１２２がシフトされ、カウンタ１３がカウントアップされる。これにより、データバッファ１２１に格納されたデータが入出力切換器１４１を介して信号ＤＯＵＴとして出力され、信号ＤＩＮとして入力されたデータがデータバッファ１２２に記憶され、カウンタ１３のカウント値が、１ビットのデータの処理に対応して１カウントアップされる。
【００６１】
そして、プログラムシーケンサ１１は、in 1ポートへの入力信号が‘Lo’になるまで、すなわち、信号ＥＮが‘Lo’になるまで待機する（ステップＳ２５）。
信号ＥＮが‘Lo’に切り換えられると、プログラムシーケンサ１１は、in 0ポートへの入力信号が‘Hi’であるか否か、すなわち、カウンタ１３のカウント値が最大値に達したか否かを判別する（ステップＳ２６）。
ここで、in 0ポートへの入力信号が‘Lo’であった場合、８ビット分のデータの送受信が完了していないので、次のビットのデータを送受信するためにステップＳ２１に戻る。
また、in 0ポートへの入力信号が‘Hi’であった場合、８ビット分のデータの送受信が完了しているので、プログラムシーケンサ１１は処理を終了し、終了信号をＣＰＵ２（図１）に出力する。
【００６２】
以上のように、本発明を適用した実施の形態によれば、セレクタ１５における選択状態を変更することにより、インタフェース回路１を構成する各機能モジュールの接続状態を任意に設定・変更して、所望の機能を有する半導体デバイスを実現できる。
ここで、インタフェース回路１の機能モジュールは、いずれも様々な回路に用いることが可能な汎用性の高いものであるから、特定の機能を有する専用回路を用いる場合のように多数の余分な回路が生じることがない。このため、半導体デバイス３のチップ面積を必要最小限に抑えることができ、低コスト化を図ることができる。さらに、インタフェース回路１における機能モジュールの接続状態の設計は、トランジスタ等の基本回路素子レベルにおけるプログラミングのような複雑な設計作業を必要としないので、極めて容易に所望の半導体装置を実現できる。
【００６３】
また、インタフェース回路１を構成する機能モジュールは、いずれも、比較的少数の基本回路素子により実現可能である。従って、インタフェース回路１及びインタフェース回路１を搭載する半導体デバイス３は、少ないゲート数及び小さなチップ面積で実現可能である。
【００６４】
さらに、インタフェース回路１は、汎用性を有する機能モジュールによって構成され、セレクタ１５における選択状態を変更することによって異なる機能を実現することができ
るので、あらゆる機能に対応させることが可能であり、将来において、現在は知られていない機能をも実現することが可能である。すなわち、インタフェース回路１は、セレクタ１５の選択状態を変更することで、図６に示す通信プロトコルだけでなく、従来は未知であったインタフェース規格を含む様々なインタフェース規格に容易に適合させることができる。特に、インタフェース規格は多種多様であり、将来において新たな規格が出現する可能性が極めて高いが、インタフェース回路１を用いた場合は、新たなインタフェース規格に合わせてインタフェース回路１の機能を変更すれば良いので、半導体デバイス３を含む装置全体の設計変更等を回避することができる。
【００６５】
また、インタフェース回路１においては、各機能モジュール間の接続状態をセレクタ１５によって容易に変更できる。セレクタ１５は、接続された信号ラインのうちいずれか１の信号ラインを選択するだけでなく、未選択状態をとり得るので、ある機能モジュールの入力ポートに、信号が入力されないようにすることも可能である。つまり、インタフェース回路１における機能モジュールの接続状態を如何様にも変更できるので、設計の自由度が非常に高いという利点がある。
【００６６】
なお、上記実施の形態においては、本発明を適用したインタフェース回路について説明したが、本発明はこれに限定されるものではなく、その他の用途に用いられる半導体デバイスに適用することも勿論可能である。
また、上記実施の形態において記載した「Ｎ」は任意の正の整数を示し、特定の数に限定されない。また、上記実施例において、図６のタイミングチャートにおける各信号の周期や継続時間等については任意であり、適用対象の装置に合わせて設定すれば良い。
さらに、上記実施の形態においては、インタフェース回路１を、ＣＰＵ２とともに半導体デバイス３に搭載されるものとして説明したが、本発明はこれに限定されるものではなく、具体的な実装形態は任意に変更可能であり、その他の細部構成についても適宜変更可能であることは勿論である。
【図面の簡単な説明】
【００６７】
【図１】本発明を適用した実施の形態における半導体デバイスの構成を示す図である。
【図２】図１に示すインタフェース回路の内部構成を示す概略ブロック図である。
【図３】図２に示すインタフェース回路の各部の構成を示す図であり、（ａ）はプログラムシーケンサの構成を示し、（ｂ）はデータバッファの構成を示し、（ｃ）はカウンタの構成を示し、（ｄ）は入出力切換器の構成を示す。
【図４】図３に示すセレクタの構成を示す図である。
【図５】図１に示すインタフェース回路における各部の接続状態を示す図である。
【図６】本実施例における通信プロトコルを示すタイミングチャートである。
【図７】実施例におけるインタフェース回路の各部の接続状態を示す回路図である。
【図８】実施例における半導体デバイスの動作を示すフローチャートである。
【図９】図８のステップＳ１６におけるプログラムシーケンサの動作を詳細に示すフローチャートである。
【符号の説明】
【００６８】
１  インタフェース回路
１１  プログラムシーケンサ
１２１，１２２  データバッファ
１３  カウンタ
１４１，１４２，１４３，１４４  入出力切換器
１５  セレクタ
２  ＣＰＵ
３  半導体デバイス
【図１】
2005328419.tif 000003
【図２】
2005328419.tif 000004
【図３】
2005328419.tif 000005
【図４】
2005328419.tif 000006
【図５】
2005328419.tif 000007
【図６】
2005328419.tif 000008
【図７】
2005328419.tif 000009
【図８】
2005328419.tif 000010
【図９】
2005328419.tif 000011