(57)【特許請求の範囲】
【請求項１】
プロセッサと、外部データバスと通信するよう接続された所定の数の端子とからなる集積回路において、該集積回路はさらに、
バス設定期間中に外部アドレスバスを介して外部メモリへ初期アドレスを供給するバスコントローラからなり、該バスコントローラは、前記外部データバスを介して該外部メモリからバス設定情報をフェッチし、該フェッチは該所定の数の端子より少ない数の端子を用いるものであり、該バスコントローラは、該プロセッサが前記外部アドレスバスおよび外部データバスを介してデータを通信できるように該集積回路を設定するものであり、
前記バス設定情報は、前記バス設定期間の開始直後には前記プロセッサが実行しない命令に埋め込まれていることを特徴とする集積回路。
【請求項２】
請求項１に記載の集積回路において、該バス設定期間は、該集積回路のリセットにより開始されることを特徴とする集積回路。
【請求項３】
請求項１に記載の集積回路において、該設定は、該集積回路が該外部アドレスバスおよび外部データバスと通信するためのデータ端子の数を選択することを含むことを特徴とする集積回路。
【請求項４】
プロセッサと、選択された外部データバスの形式と通信するよう設定された所定の数の端子とからなる集積回路において、該集積回路はさらに、
バス設定期間中に外部アドレスバスを介して外部メモリへ初期アドレス以外の所定のアドレスを供給するバスコントローラからなり、該バスコントローラは、前記外部データバスを介して該外部メモリからバス設定情報をフェッチし、該フェッチは該所定の数の端子より少ない数の端子を用いるものであり、該バスコントローラは、該プロセッサが前記外部アドレスバスおよび外部データバスを介してデータを通信できるように該集積回路を設定するものであり、
前記外部メモリにおける前記所定のアドレスに前記バス設定情報が格納されていることを特徴とする集積回路。
【請求項５】
請求項４に記載の集積回路において、該メモリは不揮発性メモリであることを特徴とする集積回路。
【請求項６】
請求項４に記載の集積回路において、該バス設定期間は、該集積回路の起動により開始されることを特徴とする集積回路。
【請求項７】
プロセッサと、外部データバスと通信するよう接続された所定の数の端子とからなる集積回路を設定する方法であって、該方法は、
バス設定期間中に外部アドレスバスを介して外部メモリへ初期アドレスを供給し、前記外部データバスを介して該外部メモリからバス設定情報をフェッチするものであり、該フェッチは該所定の数の端子より少ない数の端子を用いるものであり、さらに、該プロセッサが前記外部アドレスバスおよび外部データバスを介してデータを通信できるように該集積回路を設定し、そして、
前記バス設定情報は、前記バス設定期間の開始直後には前記プロセッサが実行しない命令に埋め込まれていることを特徴とする方法。
【請求項８】
請求項７に記載の方法において、該設定は、該集積回路が該外部アドレスバスおよび外部データバスと通信するためのアドレスビットの数を選択することを含むことを特徴とする方法。
【請求項９】
請求項７に記載の方法において、該端子は多重化されたアドレス・データ端子からなることを特徴とする方法。
【請求項１０】
プロセッサと、選択された外部データバスの形式と通信するよう設定された所定の数の端子とからなる集積回路を設定する方法であって、該方法は、
バス設定期間中に外部アドレスバスを介して外部メモリへ初期アドレス以外の所定のアドレスを供給し、前記外部データバスを介して該外部メモリからバス設定情報をフェッチするものであり、該フェッチは該所定の数の端子より少ない数の端子を用いるものであり、さらに、該プロセッサが前記外部アドレスバスおよび外部データバスを介してデータを通信できるように該集積回路を設定し、そして、
前記外部メモリにおける前記所定のアドレスに前記バス設定情報が格納されていることを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路をバスに応じて使用するようにプログラマブルに設定することに関する。
【０００２】
【従来の技術】
例えばマイクロプロセッサ、マイクロコントローラ、およびディジタル信号プロセッサなどのような集積回路（ＩＣ）プロセッサは一般に、複数の導線からなるバスを通じて外部デバイスとアドレスおよびデータの通信を行う。このようなバスは一般に、メモリサイズに応じて、データバスの場合は８、１６、３２または６４本の導線を有し、アドレスバスの場合はおそらくは２０〜３０本の導線を有する。バス中の導線の本数をバスの「幅」という。多くの場合、データバスとアドレスバスは分かれている。他の場合、アドレスとデータは、同じバス導線上に時間多重化される。場合によって、プロセッサは、複数のバス幅とインタフェース可能であることが望ましい。例えば、マイクロコントローラは、低コストのシステムでは８線のデータバスとインタフェースし、高性能のシステムではその代わりに１６線のデータバスとインタフェースすることもある。しかし、通常は、システム故障を引き起こす可能性のある壊れたデータや不正な命令を避けるために、どのようなタイプのバスとインタフェースしなければならないかをシステム起動前にプロセッサに指示する必要がある。
【０００３】
【発明が解決しようとする課題】
選択したバスタイプとインタフェースするようにプロセッサを設定することは、高電圧源または低電圧源（ＶDDまたはＶSS）に接続された集積回路端子を用いて実行可能である。しかし、この方法は、他の機能を有しない余分な集積回路端子を必要とする。また、周知のように、プロセッサは、二重使用機能を有する端子に接続された外部のプルアップ抵抗またはプルダウン抵抗を用いて設定することができる。例えば、このような端子は、システム起動時の初期設定期間中にサンプリングしてから、初期設定期間後に入力端子または出力端子として使用可能である。しかし、この方法は、プリント回路板上に設定抵抗のためのスペースを必要とする。このようなスペースは、微細ピッチパッケージおよびさまざまなフリップチップ技術により導線間隔が微細になるとともに高くつくものとなる。さらに、外部抵抗の使用は、ＪＴＡＧ（ＩＥＥＥ標準１１４９．１）のような回路板組み込み試験を複雑にし、システム動作中の電力消費につながる。また、初期設定期間を用いて制御信号モードを例えばアクティブ論理ハイまたはアクティブ論理ローに設定することも知られている。
【０００４】
【課題を解決するための手段】
本発明によれば、異なるタイプの外部バスとインタフェースするように集積回路プロセッサを設定することが可能となる。設定データがメモリ（代表的には不揮発性メモリ）に記憶され、設定期間中にプロセッサに転送される。一般に、設定期間は、初期起動シーケンス中にあるが、他のときにあってもよい。
【０００５】
【発明の実施の形態】
以下の説明は、設定可能プロセッサおよびそのプロセッサを含むシステムに関するものである。設定期間中に、記憶されている設定データがプロセッサに転送され、与えられたバス幅を有するバスとインタフェースするようにプロセッサを設定するために使用される。設定データは、読み出し専用メモリ（ＲＯＭ）、電気的消去可能読み出し専用メモリ（ＥＥＰＲＯＭ）、またはさまざまな形式のプログラマブル読み出し専用メモリ（ＰＲＯＭ）に記憶しておき、初期起動時に取り出される（フェッチされる）ようにすることが可能である。あるいは、設定データは、例えば電池でバックアップされたＣＭＯＳメモリ、強誘電体メモリ、またはさまざまな形式の磁気メモリに記憶しておくことも可能である。このようなメモリは、記憶している情報がシステム電源を取り外した後でも保持されるため、「不揮発性」であるということにする。多くの場合、設定メモリは、他の設計の考慮によって既に必要とされている構成要素である。従って、本発明を実装するためには追加の構成要素は不要である。さらに、一般に、追加のＩＣ端子（「ピン」）も不要である。
【０００６】
図１に、本発明の実施例を示す。集積回路は、バスコントローラ１０１を有するプロセッサ１００を含む。プロセッサは８ビットメモリ１０２および１６ビットメモリ１０３に接続される。プロセッサ１００は、本実施例ではマイクロコントローラであり、アドレスバス１０４に接続された２４個のアドレス端子と、制御ライン１０５に接続された制御端子と、データバス１０６に接続された１６個のデータ端子を有する。アドレスバス１０４は、アドレスライン２３〜１を含む第１部分１０７と、アドレスライン０を含む第２部分１０８を有する。８ビットメモリ１０２は、ライン１１１を介して最低アドレスライン１０８（ADDR[0]）に接続され、ライン１１２を介して第１部分１０７の少なくともいくつかの高アドレスラインに接続される。１６ビットメモリ１０３は、ライン１１３を介して第１部分１０７の少なくともいくつかの高アドレスラインに接続されるが、ライン１０８（ADDR[0]）には接続されない。データバスは、データライン０〜７を含む８ビット第１部分１０９と、データライン８〜１５を含む８ビット第２部分１１０を有する。８ビットメモリ１０２のデータ入出力端子はライン１１４を介して第１部分１０９に接続され、１６ビットメモリ１０３のデータ入出力端子はライン１１５および１１６を介してそれぞれ第１部分１０９および第２部分１１０に接続される。制御ライン１１７および１１８は、共通のリード／ライト信号と、個別のチップイネーブル信号をそれぞれメモリ１０２および１０３に供給する。本実施例では、バスコントローラは、チップイネーブル信号ＣＥ０を用いて、１６ビットメモリ１０３を設定メモリとして選択する。しかし、別の実施例では、８ビットメモリ１０２がＣＥ１によって設定メモリとして選択される。制御バス１１８の制御ラインは「バイトイネーブルハイ（ＢＥ１）信号も１６ビットメモリ１０３に供給し、アドレス／制御ライン１２０は「バイトイネーブルロー（ＢＥ０）信号を１６ビットメモリ１０３に供給することにより、上位および下位の８ビットサブユニットへの独立な書き込み（ライト）が可能となる。（本明細書中では、反転信号の表示（記号の上のバー）を下線で代用する。）
【０００７】
本発明の実施例の動作を以下で説明する（他の動作および回路も可能である）。システム起動（あるいはシステムリセット）後、プロセッサは（例えば４バイトの）データの初期フェッチ要求を発行する。このフェッチは、返値が実質的にはプロセッサによって捨てられ、正しい命令としては使用されないようなダミーフェッチであることも可能である。しかし、バスコントローラ１０１（最初は８ビットモードにある）は、トランザクションを８ビットのフェッチに分解し、読み出した第１バイトの少なくとも１ビットを用いて、設定レジスタ１１９内のバスサイズ設定を変更する。ダミーフェッチが完了した後、プロセッサは真のフェッチをリセットベクタ位置へ発行する。その後、この真のフェッチは、正しい８ビットモードまたは１６ビットモードになっているバス制御ロジックによって適切に処理される。プロセッサ命令は、例えば命令の最下位ビット（ビット０）の値によって示されるところに従い、長さ１６ビットまたは３２ビットである。多くの１６ビット命令は対応する３２ビット命令を有するため、要求されたバスサイズを指定する可変ビットとして命令サイズビット（ビット０）を使用することが実現可能である。これは、最初の「ダミー」フェッチと２番目の「真の」フェッチを同じメモリアドレスへのものとして、設計を単純化することができることを意味する。
【０００８】
本発明の技術によれば、複数のビットを初期化することも可能である。これについては以下の実施例で詳細に説明する。
【０００９】
【実施例】
設定フェッチは３ビットを使用する。これらのビットはすべて、バス１０９から受信される、アドレス０からの設定フェッチの第１バイト（図２参照）からのものである。これらのビットはそれぞれ、設定レジスタ１１０内のビットに対応する。設定レジスタ１１０内の各ビットは、設定フェッチ前（例えばリセット時）には０に設定されている。プロセッサは、位置０ｘ００００００（１６進表記）への設定フェッチの後に最初のフェッチを発行し、その後に通常通りに命令の実行を開始する。従って、この場合、設定ビットは、アドレス０の正しい命令の一部である。図２に、以下のような、レジスタ１１９を設定するために使用されるビットを示す。
ビット７は、ＣＥ０によって選択されるメモリのデータ幅を決定する。０＝８ビット、１＝１６ビットである。
ビット５は、データバスの物理サイズを決定する。０＝８ビット、１＝１６ビットである。
ビット４は、与えられたＩＣ端子（ＢＥ１／DATA OUT）が次のように使用されることを決定する。０＝その端子を汎用入出力として使用、１＝その端子をＢＥ１として使用、である。
【００１０】
注意すべき点であるが、物理バスが８ビットの場合、他の８個の集積回路端子は汎用入出力端子として使用可能である。当業者には明らかなように、８ビットアクセスは、８ビットデバイスでは単一のアクセスで実行可能であるが、１６ビットアクセスは８ビットデバイスの２回のアクセスを必要とする。
【００１１】
上記のように、３ビットは正しい命令ワードに埋め込まれる。実施例では、これは１６ビットの「真の場合にジャンプ」命令であり、上記のビット４、５および７は変位フィールドに埋め込まれる。しかし、リセット時には、プログラムステータスワード内のジャンプ条件フラグはクリアされているため、このジャンプは実際には行われない。上記よりさらに多くのビットを最初のフェッチで初期化したい場合には、ダミーフェッチは、リセットベクタアドレス以外のあらかじめ定義された位置へのものとすることも可能である。従って、ダミーフェッチによってフェッチされるビットは、実際の命令ワードの一部である必要はない。これにより、さらに多くの制御レジスタビットを起動時に初期化することが可能となる。また、上記の設定期間は一般にシステム起動期間中にあるが、他のときとすることも可能である。例えば、与えられたバス幅を有するプラグイン回路カードを挿入することにより設定期間をトリガし、システムが異なるバス幅を有する回路カードとインタフェースすることも可能である。
【００１２】
与えられた物理バスサイズ（例えば８線または１６線）で使用するためにプロセッサを設定するバスコントローラで使用される回路を図３に示す。図示した論理ゲートは複数導線のバスにおける例示的に単一のユニットである。導線は、適宜、単一のラインということも、バスということもある。この回路は、８個の集積回路端子（「ピン」）を、汎用入出力ピンとして用いるか、それとも、図１のデータバスの一部として用いるかを選択する。バスサイズ設定ビット（上記の例のビット５）はライン３０１に送られる。ライン３０１は、マルチプレクサ３０２の制御入力およびＯＲゲート３０３の入力に接続される。バスサイズ設定ビットが１である場合、ライン３０１はハイであり、内部バス３０４が多重化出力バス３０６、インバータ３０７、トライステート出力バッファ３０９、および外部バス導線３１１に接続されるように選択する。ライン３０１がハイであり、ライトライン３１７が活性化されている（ハイである）場合、ＡＮＤゲート３１４の出力はハイである。従って、ＯＲゲート３０３の出力はハイとなり、出力バッファ制御ラインＣＬ３１０に高電圧がかかり、補制御ラインＣＬＢ３０８には低電圧がかかることにより、出力バッファ３０９がイネーブルされる。バスサイズ設定ビットが０の場合、ライン３０１はローであり、ライン３０５上のパラレルポートデータ（ビット７〜０）が外部バス３１１に送られるように選択する。
【００１３】
図３の各パラレルポートビットごとのデータフロー（入出力）の向きは、バス３１２のいずれの導線がハイであるかによって、以下のように決定される。ライン３０１がローの場合、インバータ３１５の出力はハイであることにより、与えられた向き制御導線３１２上の電圧がＡＮＤゲート３１６を通過してバス３１０の導線上の電圧を制御する。バス３１０のハイ導線は対応するバッファ３０９を活性化することにより、対応する外部バス導線３１１を出力としてドライブする。バス３１０のロー導線は、対応するバッファ３０９を高出力インピーダンス状態（「トライステート」）にすることにより、対応する外部バス導線３１１が、入力バッファ３１３を通じて入力として作用するようにする。
【００１４】
以上、異なる幅のデータバスとインタフェースするようにプロセッサを設定することについて説明した。しかし、アドレスバスの設定を制御するために他のコントローラ回路を有することも可能である。例えば、「バイトイネーブル」（ＢＥ）信号を用いて、複数バイトのデータ幅を有するメモリ内の与えられたバイトをアドレスすることは、メモリ技術の当業者には周知である。たとえば、ＢＥ０信号を用いて、１６本のデータラインを有するメモリ（「１６ビットメモリ」）内の下位バイトをアドレスすることが可能である。同様に、ＢＥ１信号を用いて上位バイトをアドレスすることが可能である。これらの信号の使用は、上記の例ではビット４および７の制御下でなされ、制御回路は、図３の回路と同様にマルチプレクサで実装可能である。実施例の２４線の場合、アドレスバスは２３個のアドレスビットＡ［２３：１］を供給し、ＢＥ１およびＢＥ０は別の導線（例えば１０５、１０８）によって供給される。他方、例えば８本のデータラインを有するメモリ（「８ビットメモリ」）のような他のメモリタイプでは、すべてのアドレスバス導線（１０７、１０８）がアドレスビット（実施例の２４線の場合はＡ［２３：０］）を供給する。
【００１５】
Ａ０（アドレス０）またはＢＥ０のいずれをメモリに供給するかを選択するのに適した回路を図４に示す。アドレスビットＡ［２３：０］を運ぶ内部アドレスバス４０１は、アドレスビットＡ［２３：１］を供給するアドレスバス４０２と、ビットＡ［０］を運ぶアドレスライン４０３に分割される。ライン４０３は、マルチプレクサ４０４の入力に接続される。ライン４０５上の内部ＢＥ０信号は、マルチプレクサの他方の入力に接続される。マルチプレクサ４０４はライン４０６によって制御される。ライン４０６は、８ビットメモリがアクセスされる場合に０であり、１６ビットメモリがアクセスされる場合に１であり、それぞれＡ［０］またはＢＥ０をライン４０７に接続する。
【００１６】
ＢＥ１が供給されるかどうかを選択するのに適した回路を図５に示す。ライン５０１上のＢＥ１イネーブル信号はマルチプレクサ５０２を制御するために使用される。マルチプレクサ５０２は、入力ライン５０３上のＢＥ１信号と、入力ライン５０４上のDATA OUT信号を受信する。マルチプレクサ出力ライン５０５は、選択した信号をインバータ５０６およびトライステート出力バッファ５０７に供給する。ＢＥ１イネーブル信号は、ＯＲゲート５０８の入力にも供給される。ＯＲゲート５０８は、ライン５０９上の「ビット９」向き制御信号を受信する。従って、ＢＥ１イネーブルがハイ（「１」）である場合、ＯＲゲート５０８はバッファ制御ライン５１０にハイ信号を出力する。さらに、補（ロー）信号がバッファ制御ライン５１１に出力され、トライステートバッファ５０７はライン５１２上にＢＥ１信号をドライブするようにイネーブルされる。ＢＥ１イネーブルがロー（「０」）である場合、ライン５０４上のパラレルポートDATA OUT信号がマルチプレクサ５０２によって選択され、トライステートバッファ５０７に供給される。続いて、バッファ５０７は、ＯＲゲート５０８の入力に接続されたライン５０９上のビット９向き制御信号によって制御される。ライン５０９がハイである場合、前のようにライン５１０はハイ（そしてライン５１１はロー）であり、DATA OUT信号はライン５１２上でバッファ５０７によってドライブされる。注意すべき点であるが、ライン５０９上のビット９向き制御信号がロー（「０」）である場合、ＯＲゲート５０８はバッファ制御ライン５１０上にロー信号を出力し（そして相補的なハイ信号がライン５１１に供給され）、バッファ５０７は高インピーダンス出力状態をとる。これにより、ライン５１２は、集積回路上の他のデバイス（図示せず）への入力ラインとして作用することが可能となる。
【００１７】
以上、図３、図４および図５の実施例の回路で、本発明の技術によりＩＣ端子がいかにして二重目的で使用されるかを示した。しかし、この機能を実装する際には、他のさまざまな論理回路が使用可能である。また、注意すべき点であるが、上記の実施例ではアドレスバスとデータバスが別々であるが、当業者には明らかなように、本発明の技術は、多重化されたアドレス／データバスに適用することも可能である。上記のようなデータバスとアドレスバスの設定に加えて、本発明は、他の設定目的のためにも使用可能である。例えば、アドレスライン、制御ライン、あるいはデータラインの極性（アクティブハイまたはアクティブロー）を、本発明の技術によって設定することが可能である。また、制御信号モードも設定可能である。例えば、モトローラ型のマイクロプロセッサとインタフェースする場合のようにリード／ライト信号およびチップ選択信号を使用することや、インテル型のマイクロプロセッサとインタフェースする場合のようにリード信号およびライト信号を使用することが可能である。これらは、上記のデータバスおよびアドレスバスに加えて、あるいはこれらのバスの代わりに、設定可能である。本発明の技術によって集積回路を設定するために使用可能なすべてのこのようなパラメータは「設定情報」であるとみなされる。
【００１８】
本発明の技術によってさまざまな設定が実行可能であるが、設定メモリ内のデータ自体は、設定期間中にバスコントローラによって使用可能な形式でなければならない。上記の設定期間後、集積回路内のプロセッサは、外部バスとの通信に関して通常動作用に設定される。その後、例えば当業者によって一般に「ブートシーケンス」と呼ばれるもののような、他の設定を実行することが可能である。
【００１９】
【発明の効果】
以上述べたごとく、本発明によれば、異なるタイプの外部バスとインタフェースするように集積回路プロセッサを設定することが可能となる。
【図面の簡単な説明】
【図１】本発明の技術を実装するシステムの実施例の図である。
【図２】本発明の技術を実装する際に用いられる命令ワードに埋め込まれた設定データを示す図である。
【図３】本発明の技術を実装する際に用いられる回路の実施例の図である。
【図４】本発明の技術を実装する際に用いられる回路の実施例の図である。
【図５】本発明の技術を実装する際に用いられる回路の実施例の図である。
【符号の説明】
１００  プロセッサ
１０１  バスコントローラ
１０２  ８ビットメモリ
１０３  １６ビットメモリ
１０４  アドレスバス
１０５  制御ライン
１０６  データバス
１０７  アドレスバス第１部分
１０８  アドレスバス第２部分
１０９  データバス８ビット第１部分
１１０  データバス８ビット第２部分
１１１  ライン
１１２  ライン
１１３  ライン
１１４  ライン
１１５  ライン
１１６  ライン
１１７  制御ライン
１１８  制御ライン
１１９  設定レジスタ
１２０  アドレス／制御ライン
３０１  ライン
３０２  マルチプレクサ
３０３  ＯＲゲート
３０４  内部バス
３０６  多重化出力バス
３０７  インバータ
３０８  補制御ラインＣＬＢ
３０９  トライステート出力バッファ
３１０  出力バッファ制御ラインＣＬ
３１１  外部バス導線
３１２  向き制御導線
３１３  入力バッファ
３１４  ＡＮＤゲート
３１５  インバータ
３１６  ＡＮＤゲート
３１７  ライトライン
４０１  内部アドレスバス
４０２  アドレスバス
４０３  アドレスライン
４０４  マルチプレクサ
４０５  ライン
４０６  ライン
４０７  ライン
５０１  ライン
５０２  マルチプレクサ
５０３  入力ライン
５０４  入力ライン
５０５  マルチプレクサ出力ライン
５０６  インバータ
５０７  トライステート出力バッファ
５０８  ＯＲゲート
５０９  ライン
５１０  バッファ制御ライン
５１１  バッファ制御ライン
５１２  ライン
【図１】
0003811231.tif 000002
【図２】
0003811231.tif 000003
【図３】
0003811231.tif 000004
【図４】
0003811231.tif 000005
【図５】
0003811231.tif 000006