(57)【要約】有限状態機械と、シフトレジスタからのビットのシフトを制御することのできるクロック発生器と、シリアル出力のデータビットの番号付きカウントを維持することのできるビットカウンタを備えるシフトレジスタとを有する、高速プログラマブルシリアルポート。クロック発生器およびシフトレジスタは、有限状態機械の負担を軽減し、それによってデータのスループットと、複数のデータプロトコルに従うデータを提供する能力を改善する。
2005502126.tif 000002
【特許請求の範囲】
【請求項１】
第１のシフトレジスタモジュールおよび有限状態機械を有するプログラマブルシリアルポートにおいて使用するためのクロック発生器において、
前記第１のシフトレジスタモジュールへの第１の出力チャネルであって、前記第１のシフトレジスタに、所定の数のパルスを含む第１のクロック信号を、所定の速度で、前記パルス数および前記速度を決定する少なくとも１つの命令に応答して、供給する前記第１の出力チャネルと、
少なくとも１つの命令を受け取る入力チャネルであって、前記少なくとも１つの命令が、前記所定のパルス数および前記所定の速度を示す、前記入力チャネルとを含む、クロック発生器。
【請求項２】
第２のシフトレジスタモジュールへの第２の出力チャネルをさらに含み、該第２の出力チャネルが、少なくとも１つの命令に応答して、所定の数のパルスを含む第２のクロック信号を所定の速度で供給する、請求項１に記載のクロック発生器。
【請求項３】
有限状態機械への第２の出力チャネルをさらに含み、該第２の出力チャネルが前記有限状態機械に第２のクロック信号を供給する、請求項１に記載のクロック発生器。
【請求項４】
第２の出力チャネルに結合されて、第２のクロック信号が通過するようにされたゲートをさらに含み、該ゲートは、所定の数のパルスと、所定の速度とを示す命令の、少なくとも１つによって制御可能である、請求項３に記載のクロック発生器。
【請求項５】
第２の出力チャネルに結合されて第２のクロック信号を受け取るとともに、第１の出力チャネルに結合されて第１のクロック信号を供給する、分割器をさらに含み、前記第２のクロック信号が分割されて第１のクロック信号を形成する、請求項４に記載のクロック発生器。
【請求項６】
第１の複数ビットのパラレル入力を受け取る入力チャネルと第２の複数ビットのシリアル出力を供給するためのシリアル出力チャネルとを有する第１のシフトレジスタを含み、命令に応答して前記シフトレジスタを制御する少なくとも１つのレジスタをさらに有する、第１のシフトレジスタモジュールを制御する、シフトレジスタ制御モジュールであって、
前記命令を供給する第１の有限状態機械と、
該第１の有限状態機械に結合されて、該第１の有限状態機械からの少なくとも１つの命令に応答して、前記第１のシフトレジスタに第１の複数クロックパルスを含む第１のクロック信号を供給する、クロック発生器とを含み、前記第２の複数ビットのシリアル出力が、前記第１のシフトレジスタモジュールに供給される前記命令の少なくとも１つと前記第１のクロック信号とに応答して生成される、前記シフトレジスタ制御モジュール。
【請求項７】
第１の有限状態機械が、クロック発生器によって供給される第２の信号によってクロックを供給される、請求項６に記載のシフトレジスタ制御モジュール。
【請求項８】
クロック発生器が、命令の少なくとも１つによって制御可能なゲートを介して、第１の有限状態機械に結合されている、請求項７に記載のシフトレジスタ制御モジュール。
【請求項９】
第１の有限状態機械に結合されて第２のクロック信号を受け取り、第１のシフトレジスタに結合されて第１のクロック信号を供給する分割器をさらに含み、前記第２のクロック信号が分割されて第１のクロック信号を形成する、請求項８に記載のシフトレジスタ制御モジュール。
【請求項１０】
少なくとも１つのプログラム命令が、有限状態機械からのものである、請求項６に記載のシフトレジスタ制御モジュール。
【請求項１１】
有限状態機械が、複数のシリアル通信プロトコルに対応する命令を供給するように構成、かつ配設されている、請求項６に記載のシフトレジスタ制御モジュール。
【請求項１２】
第１の複数ビットのパラレル入力を受け取る第１のチャネルと、第２の複数ビットのシリアル出力を供給する第１の出力チャネルとを有するシフトレジスタを含み、さらに命令に応答して前記シフトレジスタモジュールを制御するレジスタをさらに有する、第１のシフトレジスタモジュールと、
前記命令を供給する有限状態機械であって、前記命令を前記シフトレジスタモジュールに供給して、前記シフトレジスタの動作を制御する前記有限状態機械と、
該有限状態機械に結合されて、前記有限状態機械からの前記命令の少なくとも１つに応答して前記第１のシフトレジスタモジュールに、第１の複数クロックパルスを含む第１のクロック信号を供給する、クロック発生器とを含み、前記第２の複数ビットのシリアル出力が、前記シフトレジスタモジュールに供給される前記命令の少なくとも１つと前記第１のクロック信号とに応答して生成される、プログラマブルシリアルポート。
【請求項１３】
クロック発生器が、第１の有限状態機械への第２の出力チャネルを含み、該チャネルが、前記第１の有限状態機械に第２のクロック信号を供給し、前記信号が第２の複数クロックパルスを含む、請求項１２に記載のプログラマブルシリアルポート。
【請求項１４】
クロック発生器が、命令の少なくとも１つによって制御可能なゲートを介して、第１の有限状態機械に結合されている、請求項１２に記載のプログラマブルシリアルポート。
【請求項１５】
シフトレジスタがシリアル出力を供給する間、ゲートを制御して第２のクロック信号を阻止することが可能である、請求項１４に記載のプログラマブルシリアルポート。
【請求項１６】
第２の出力チャネルに結合されて第２のクロック信号を受け取るとともに、第１の出力チャネルに結合されて第１のクロック信号を供給する、分割器をさらに含み、前記第２のクロック信号が分割されて前記第１のクロック信号が形成される、請求項１３に記載のプログラマブルシリアルポート。
【請求項１７】
有限状態機械が、複数のシリアル通信プロトコルに対応する命令を供給するように構成、かつ配設されている、請求項１２に記載のプログラマブルシリアルポート。
【請求項１８】
第２の複数ビットのそれぞれが、第２の複数パルスのクロックパルスに応答して出力される、請求項１２に記載のプログラマブルシリアルポート。
【請求項１９】
シフトレジスタモジュールがビットカウンタをさらに含み、該ビットカウンタが、第２の複数ビットのシリアル出力の番号付きカウントを維持するように構成されている、請求項１２に記載のプログラマブルシリアルポート。
【請求項２０】
ビットカウンタが、第２の複数パルスのクロックパルスに応答して減分される、請求項１９に記載のプログラマブルシリアルポート。
【請求項２１】
第２の複数ビットのそれぞれが、データビット、パリティビットおよびストップビットの１つである、請求項２０に記載のプログラマブルシリアルポート。
【請求項２２】
第２の複数ビットのそれぞれが、ビットカウントに基づいて選択される、請求項２１に記載のプログラマブルシリアルポート。
【請求項２３】
シフトレジスタモジュールが、さらにパリティ発生器を含む、請求項１２に記載のプログラマブルシリアルポート。
【請求項２４】
シフトレジスタモジュールが、第２の複数パルスのクロックパルスに応答してパリティ発生器からのパリティビットを出力する、請求項２３に記載のプログラマブルシリアルポート。
【請求項２５】
第１の出力チャネルに結合されてシリアル出力の電気的パラメータを制御するプログラマブル分割器をさらに含む、請求項１２に記載のプログラマブルシリアルポート。
【請求項２６】
第１の有限状態機械に結合されて前記有限状態機械に割込みを発生させる、割込み処理モジュールをさらに含む、請求項１２に記載のプログラマブルシリアルポート。
【請求項２７】
第２のシフトレジスタモジュールをさらに含み、クロック発生器が、前記第２のシフトレジスタモジュールを結合して、第２の複数クロックパルスを含む第２のクロック信号を供給し、前記第２のシフトレジスタモジュールが、前記第２のクロック信号に応答して第２のシリアル出力を供給する、請求項１２に記載のプログラマブルシリアルポート。
【請求項２８】
複数ビットのパラレル入力を受け取る入力チャネルと複数ビットのシリアル出力を供給するシリアル出力チャネルとを有するシフトレジスタモジュールであって、前記シリアル出力を供給するシフトレジスタとビットカウンタを含み、該ビットカウンタが複数ビットのシリアル出力の番号付きカウントを維持するように構成されており、前記シリアル出力および前記ビットカウンタが命令に応答する、前記シフトレジスタモジュールと、
前記シフトレジスタモジュールに結合されて前記シフトレジスタモジュールに前記命令を供給する有限状態機械を含む、プログラマブルシリアルポート。
【請求項２９】
ビットカウンタがクロックパルスに応答して減分される、請求項２８に記載のプログラマブルシリアルポート。
【請求項３０】
シフトレジスタモジュールが、パリティ発生器をさらに含む、請求項２８に記載のプログラマブルシリアルポート。
【請求項３１】
シフトレジスタモジュールが、番号付きカウントに応答してパリティビットを供給する、請求項３０に記載のプログラマブルシリアルポート。
【請求項３２】
シリアル出力に対応する複数ビットのそれぞれが、データビット、パリティビット、およびストップビットの１つである、請求項２８に記載のプログラマブルシリアルポート。
【請求項３３】
シリアル出力に対応する複数ビットのそれぞれが、番号付きカウントに基づいて選択される、請求項３１に記載のプログラマブルシリアルポート。
【請求項３４】
第１の複数ビットを含み、複数のシリアル通信プロトコルの選択された１つに従うシリアル出力を供給する第１のシフトレジスタを含み、クロック発生器および有限状態機械に結合されている、前記第１のシフトレジスタモジュールを制御する方法であって、
選択されたプロトコルに従って、複数の命令順序から有限状態機械によって実行される命令順序を選択するステップであって、命令順序のそれぞれが、プロトコルに対応する前記ステップと、
前記選択された命令順序の命令に従ってクロック発生器を制御して、前記有限状態機械によってさらに制御することなく、第１の複数クロックパルスを前記シフトレジスタモジュールに供給するステップと、
前記クロックパルスおよび前記命令順序の実行に応答して、第１の複数ビットに対応する第２の複数ビットを出力するステップとを含む、前記方法。
【請求項３５】
第２の複数ビットのカウントを維持するステップをさらに含む、請求項３４に記載のシフトレジスタモジュールの制御方法。
【請求項３６】
カウントに応答して、パリティビットを選択的に出力するステップをさらに含む、請求項３５に記載のシフトレジスタモジュールの制御方法。
【請求項３７】
第３の複数ビットを含む第２のシフトレジスタモジュールに、前記第３の複数クロックパルスを提供するクロック発生器を制御するステップと、前記クロックパルスに応答して前記第３の複数ビットに対応する第４の複数ビットを出力するステップをさらに含む、請求項３４に記載のシフトレジスタモジュールの制御方法。
【請求項３８】
クロック発生器を制御して、第２の複数クロックパルスを供給して、状態機械による命令順序の実行を制御するステップをさらに含む、請求項３４に記載のシフトレジスタモジュールの制御方法。
【請求項３９】
第２の複数クロックパルスを阻止するステップをさらに含み、第２の複数ビットを出力中は、複数の命令の実行が停止される、請求項３８に記載のシフトレジスタモジュールの制御方法。
【請求項４０】
命令に従ってクロック発生器を制御するステップが、パルス数およびクロック速度を指定することを含む、請求項３４に記載のシフトレジスタモジュールの制御方法。
【発明の詳細な説明】
【０００１】
関係する出願
本発明は、３５Ｕ．Ｓ．Ｃ．１１９（ｅ）の下で、２００１年８月２９日出願の、アレンらの「ディジタルベースバンドプロセッサ（"DIGITAL BASEBAND PROCESSOR," by Allen, et al.）」という名称の米国特許仮出願第６０／３１５，６５５号の利益を主張するものである。
発明の分野
本発明は、一般にプログラマブルシリアルポートに関し、より具体的には、高速プログラマブルシリアルポートに関する。
【０００２】
発明の背景
電子回路およびデータ通信の分野において、多くのシリアルポート装置が知られている。例えば、このような装置としては、選択されたシリアル通信プロトコル（例えば、汎用非同期送受信（ＵＡＲＴ）装置）のデータを送信、受信するための静的な(static)シリアルポート、および設定可能な(configurable)シリアルポート（例えば、ソフトウエア制御シリアルポートを備えるマイクロプロセッサ）が挙げられる。設定可能なシリアルポートは、単一のシリアルポートで複数のプロトコルを利用する可能性をもたらす。静的および設定可能なシリアルポートは広範囲の用途に使用されており、それには、ディスプレイ装置との通信、モデムとの通信、ユニバーサルシステムコネクタ（ＵＳＣ）としての機能が含まれる。
多数のシリアル通信プロトコル（本明細書においてはプロトコルとも呼ぶ）が公布されており（例えば、ＵＡＲＴ、１２Ｃ、ＨＣ１１、ＩＲＤａ、その他）、それぞれが、シリアルポート間でデータのシリアルビットを通信するための具体的なパラメータを定義している。プロトコルを定義するパラメータには、受信または送信するビットのタイミング、電気的パラメータ（例えば、信号極性、オープンソースまたはオープンコレクタ出力インピーダンスなどのラインドライバ特性、その他）、およびビット意味および列の論理定義などの要素が含まれる。
【０００３】
設定可能なシリアルポートの一例としては、Motorola社のM68HC 11マイクロコントローラファミリが提供されており、これには当該分野においてMotorola同期シリアル周辺インターフェイス（ＳＰＩ（Synchronous Serial Peripheral Interface））と呼ばれるプログラマブルシリアルポートがある。このようなシリアルインターフェイスは、いくつかの理由で欠点がある。例えば、プロセッサがシリアルポートを制御するためにソフトウエアを実行しなくてはならず、また信号経路を介して送るべき、すべてのデータビットはプロセッサを通過するために、プロセッサを使用してタスクを実施するときにプロセッサに課せられる負荷を超えて、プロセッサに負荷が与えられる。また、シリアルハードウエアはプロセッサの電力消費部であるので、たとえシリアルポートが非稼動であっても、プロセッサがソフトウエアプログラムを実行しているときにはいつでも、追加の電力が消費される。
【０００４】
マイクロコントローラ制御プログラマブルシリアルポートの代替選択肢として、有限状態機械を実装するプログラマブルシリアルポートが開発さており、これは、プロセッサからシリアルポートの多くの機能を制御しなくてはならないという負荷から取り除くものである。そのようなプログラマブルシリアルポートの例が、２００年１１月３日出願の、Sorensonによる「ジェネリックシリアルポートアーキテクチャおよびシステム（GENERIC SERIAL PORT ARCHITECTURE AND SYSTEM）」という名称の米国特許出願第０９／７０６，４５０号に記載されている。
図１は、そのようなプログラマブルシリアルポート１００のブロック図である。図１では、送信モードで動作しているときに、シフトレジスタ１１０は、バッファ１２０からチャネル１０２上でデータビットのパラレルセットを受け取り、有限状態機械（ＦＳＭ）１２０の制御の下で、（ドライバ１８０を介して）チャネル１０４上でシリアル出力としてビットを出力する。逆に、受信モードで動作しているときには、シフトレジスタ１１０は、チャネル１０４上でシリアル入力を受け取り、チャネル１０２上でデータビットのパラレルセットを出力する。
【０００５】
本明細書においては、「有限状態機械」の用語は、既存状態を記憶し、入力（例えば、命令または指令）を受け取ると、新規の状態に変化、および／または決定性動作を引き起こすか、または既存の状態および入力に応答して出力を発生させる、任意の装置（例えば、プログラムカウンタおよび複数のその他のレジスタ）として定義する。ＦＳＭは、従来型のマイクロプロセッサに付随する算術論理ユニット（ＡＬＵ）またはその他の回路を含まなくてもよいが、本明細書において定義するＦＳＭの用語は、そのような回路または要素を含むデバイスを除外するものではない。
【０００６】
プログラマブルシリアルポート１００においては、２つまたは３つ以上のプロトコルを実施するための規則に対応する命令は、メモリ１３０に記憶される。メモリ１３０からの命令を使用して、ＦＳＭ１２０はコントローラ１５０によって選択されたプロトコルに対応する命令を実行し、指定されたプロトコルによる出力をチャネル１０４上に供給する。ビットの処理は、パラレルチャネル１０２内での位置、またはチャネル１０２上で受信、もしくは送信されるシリアルビット列における位置に依存することが多いので、ビットカウンタ１７０は、転送されるビットの番号付けしたカウントを供ＦＳＭ１２０に給して、選択されたプロトコルに従った出力の提供を容易にする。出力は、通常、ドライバ１８０中に誘導されて、特定の電気的パラメータを有する（またはそれに適合した）出力が提供される。従来型のＦＳＭ方式プログラマブルシリアルポート（例えば、プログラマブルシリアルポート１００）においては、選択されたプロトコルに従った出力を提供する命令の実行には、ＦＳＭ１２０が、クロック発生器１６０からクロックパルスを受け取り、シフトレジスタ１１０にクロックパルスを供給して、シフトレジスタ１１０からチャネル１０４またはバッファ１２０への各ビットの出力を制御することが必要であり、また場合によっては、ＦＳＭが、ビットカウンタ１７０によって提供されるビットカウントを維持し、処理することが必要となる。
【０００７】
選択されたプロトコルに従う出力を供給するには、出力を指定された時刻に供給することが必要である。例えば、いくつかのプロトコルにおいては、チャネル１０４上の出力は、プログラマブルシリアルポート１００によるタイミング信号（例えば、チャネル１９０上の上昇エッジ）の受領に続く、指定された時間内に行わなくてはならない。クロック信号の受領と、出力の供給との間の時間間隔が非常に短いことがあるので、出力を達成する命令セットは、短時間での実行が可能でなくてはならないか、またはシリアルポートが不適切なデータ出力速度を有するか、また場合によっては、ある出力プロトコルの使用を禁止されることがある。
【０００８】
図２は、従来型のプログラマブルシリアルポートが、標準出力（例えば、ＵＡＲＴ互換出力）を達成するための、一般的な命令セットのフローチャート２００である。ステップ２０５において、ＦＳＭは、シフトレジスタがデータ（すなわち、パラレルセットのデータ）で一杯であることの指示を待つ。ステップ２１０において、ＦＳＭは、ドライバに開始状態（例えば、論理値１またはゼロ）をロードする。ステップ２２０において、ＦＳＭは、ビットカウンタを初期化（例えば初期ビットカウントをロード）する。ステップ２４０において、ＦＳＭは、それによってデータがシフトレジスタからシフトされるループを定義するコードラインを識別する。ステップ２５０および２６０それぞれにおいて、最初のデータビットが送られてプロトコルに対して必要な数のクロックサイクルだけ維持されて、ビットカウンタがＦＳＭによって減分される。後続のデータビットが送られて、ビットカウンタがゼロに達するまで、ビットカウンタがＦＳＭによって減分される（ステップ２７０）。すべてのデータビットが送られた後に、ステップ２８０において、ＦＳＭはパリティビットを送る。最後に、ステップ２９０において、ドライバが停止状態に設定される。
【０００９】
より速い実行速度を達成する１つの方法は、ＦＳＭが命令を実行するクロック速度を増大し、それによって所与の時間間隔（例えば、タイミング信号とシリアルデータビットの出力開始の間の時間間隔）において、より多数の命令を実行することである。しかしながら、クロック速度を上げると、より高速で高価な電子構成要素が必要となる。さらに、クロック速度を上げると、電力消費が増大する可能性がある。したがって、比較的低いクロック速度を維持しながら、任意の必要入力（例えば、タイミング信号）を受け取って処理し、比較的速い速度で任意の必要出力を供給することのできるプログラマブルシリアルポートが必要である。さらに、広範囲のプロトコルに従って出力を供給し、かつ入力を受け入れることのできる、プログラマブルシリアルポートが必要である。
【００１０】
発明の概要
本発明の態様は、ＦＳＭ、ＦＳＭで制御してＦＳＭ命令に従うプログラムクロック信号生成することのできるクロック発生器、プログラムクロック信号に従うデータビット出力を生成することのできるシフトレジスタモジュール、および任意のＦＳＭビット動作を有し、かつ出力データビットの番号付きカウント(numbered count)を維持する、プログラマブルシリアルポートを目的とする。したがって、選択されたプロトコルに従う出力を達成するためにＦＳＭが実行する命令の数は、比較的少なく、ＦＳＭによってクロック発生器を比較的高いレベルで制御することができるので、出力を達成するための全体実行時間は比較的短い。
【００１１】
本発明の第１の態様は、第１のシフトレジスタモジュールと有限状態機械を有するプログラマブルシリアルポートにおいて使用するためのクロック発生器において、第１のシフトレジスタモジュールへの第１の出力チャネルであって、前記第１のシフトレジスタに、所定の数のパルスを含む第１のクロック信号を、前記パルス数および前記速度を決定する少なくとも１つの命令に応答して、所定の速度で供給する前記第１の出力チャネルと、少なくとも１つの命令を受け取る入力チャネルであって、前記少なくとも１つの命令が、前記所定のパルス数および前記所定の速度を示す、前記入力チャネルとを含む、クロック発生器である。
【００１２】
クロック発生器は、第２のシフトレジスタモジュールへの第２の出力チャネルをさらに含み、該第２の出力チャネルが、少なくとも１つの命令に応答して、所定の数のパルスを含む第２のクロック信号を所定の速度で供給することができる。任意選択で、クロック発生器は、有限状態機械への第２の出力チャネルをさらに含み、該第２の出力チャネルが前記有限状態機械に第２のクロック信号を供給することができる。いくつかの実施態様においては、クロック発生器は、第２の出力チャネルに結合されて、第２のクロック信号が通過するようにしたゲートをさらに含み、前記ゲートは、所定の数のパルスと、所定の速度とを示す、少なくとも１つの命令によって制御可能である。本発明の第１の態様の別の実施例においては、クロック発生器は、第２の出力チャネルに結合されて第２のクロック信号を受け取るとともに、第１の出力チャネルに結合されて第１のクロック信号を供給する、分割器をさらに含み、前記第２のクロック信号が分割されて第１のクロック信号を形成する。
【００１３】
本発明の第２の態様は、第１の複数のビットのパラレル入力を受け取る入力チャネルと第２の複数のビットのシリアル出力を供給するためのシリアル出力チャネルとを有する第１のシフトレジスタを含み、命令に応答して前記シフトレジスタを制御する少なくとも１つのレジスタをさらに有する、第１のシフトレジスタモジュールを制御する、シフトレジスタ制御モジュールであって、前記命令を供給する第１の有限状態機械と、該第１の有限状態機械に結合されて、第１の複数クロックパルスを含む第１のクロック信号を、前記第１の有限状態機械からの少なくとも１つの命令に応答して前記第１のシフトレジスタに供給する、クロック発生器とを含み、前記第２の複数ビットのシリアル出力が、前記第１のシフトレジスタモジュールに供給される前記命令の少なくとも１つと前記第１のクロック信号とに応答して生成される、前記シフトレジスタ制御モジュールである。
【００１４】
第１の有限状態機械は、クロック発生器によって供給される第２の信号によってクロックを提供されてもよい。いくつかの実施態様においては、クロック発生器は、命令の少なくとも１つによって制御可能なゲートを介して、第１の有限状態機械に結合されている。任意選択で、シフトレジスタ制御モジュールは、第１の有限状態機械に結合されて第２のクロック信号を受け取り、第１のシフトレジスタに結合されて第１のクロック信号を供給する分割器をさらに含み、前記第２のクロック信号が分割されて第１のクロック信号を形成する。本発明の第２の態様の、いくつかの実施例においては、シフトレジスタ制御モジュールは、少なくとも１つのプログラム命令は、有限状態機械からのものであり、またいくつかの実施例においては、有限状態機械は、複数のシリアル通信プロトコルに対応する命令を供給するように構成、かつ配設されている。
【００１５】
第１の複数ビットのパラレル入力を受け取る第１のチャネルと、第２の複数ビットのシリアル出力を供給する第１の出力チャネルとを有するシフトレジスタを含み、さらに命令に応答して前記シフトレジスタモジュールを制御するレジスタをさらに有する、第１のシフトレジスタモジュールと、前記命令を供給する有限状態機械であって、前記命令を前記シフトレジスタモジュールに供給して、前記シフトレジスタの動作を制御する前記有限状態機械と、該有限状態機械に結合されて、第１の複数クロックパルスを含む第１のクロック信号を、前記有限状態機械からの前記命令の少なくとも１つに応答して前記第１のシフトレジスタモジュールに供給する、クロック発生器とを含み、前記第２の複数ビットのシリアル出力が、前記シフトレジスタモジュールに供給される前記命令の少なくとも１つと前記第１のクロック信号とに応答して生成される、プログラマブルシリアルポート。
【００１６】
任意選択で、クロック発生器が、第１の有限状態機械への第２の出力チャネルを含み、該チャネルが、前記第１の有限状態機械に第２のクロック信号を供給し、前記信号が第２の複数クロックパルスを含む。いくつかの実施例においては、クロック発生器は、命令の少なくとも１つによって制御可能なゲートを介して、第１の有限状態機械に結合されている。シフトレジスタがシリアル出力を供給する間、ゲートを制御して第２のクロック信号を阻止することが可能である。
【００１７】
いくつかの実施例においては、プログラマブルシリアルポートは、第２の出力チャネルに結合されて第２のクロック信号を受け取るとともに、第１の出力チャネルに結合されて第１のクロック信号を供給する、分割器をさらに含み、前記第２のクロック信号が分割されて前記第１のクロック信号が形成される。有限状態機械は、複数のシリアル通信プロトコルに対応する命令を供給するように構成、かつ配設することができる。第２の複数ビットのそれぞれは、第２の複数パルスのクロックパルスに応答して出力することができる。
いくつかの実施例においては、シフトレジスタモジュールは、ビットカウンタをさらに含み、該ビットカウンタが、第２の複数ビットの、シリアル出力の番号付きカウントを維持するように構成されている。任意選択で、ビットカウンタは、第２の複数パルスにクロックパルスに応答して減分される。第２の複数ビットのそれぞれは、データビット、パリティビットおよびストップビットの１つである。任意選択で、第２の複数ビットのそれぞれは、ビットカウントに基づいて選択される。
【００１８】
シフトレジスタモジュールは、さらにパリティ発生器を含むことができる。いくつかの実施例においては、シフトレジスタモジュールは、第２の複数パルスのクロックパルスに応答してパリティ発生器からのパリティビットを出力することができる。プログラマブルシリアルポートは、第１の出力チャネルに結合されてシリアル出力の電気的パラメータを制御するプログラマブル分割器をさらに含むことができる。割込み処理モジュールを、第１の有限状態機械に結合して前記有限状態機械に割込みを発生させることができる。プログラマブルシリアルポートは、第２のシフトレジスタモジュールをさらに含み、クロック発生器が、前記第２のシフトレジスタモジュールを結合して、第２の複数クロックパルスを含む第２のクロック信号を供給し、前記第２のシフトレジスタモジュールが、前記第２のクロック信号に応答して第２のシリアル出力を供給することができる。
【００１９】
本発明の第４の態様は、複数ビットのパラレル入力を受け取る入力チャネルと複数ビットのシリアル出力を供給するシリアル出力チャネルとを有するシフトレジスタモジュールであって、前記シリアル出力を供給するシフトレジスタとビットカウンタを含み、該ビットカウンタが複数ビットのシリアル出力の番号付きカウントを維持するように構成されており、前記シリアル出力および前記ビットカウンタが命令に応答する、前記シフトレジスタモジュールと、前記シフトレジスタモジュールに結合されて前記シフトレジスタモジュールに前記命令を供給する有限状態機械を含む、プログラマブルシリアルポートである。ビットカウンタは、クロックパルスに応答して減分することができる。いくつかの実施例においては、シフトレジスタモジュールは、パリティ発生器をさらに含む。シフトレジスタモジュールは、番号付きカウントに応答してパリティビットを供給することができる。シリアル出力に対応する複数ビットのそれぞれは、データビット、パリティビット、およびストップビットの１つとすることができる。任意選択で、シリアル出力に対応する複数ビットのそれぞれは、番号付きカウントに基づいて選択される。
【００２０】
本発明の第５の態様は、第１の複数ビットを含み、複数のシリアル通信プロトコルの選択された１つに従うシリアル出力を供給する第１のシフトレジスタを含み、クロック発生器および有限状態機械に結合されている、前記第１のシフトレジスタモジュールを制御する方法であって、選択されたプロトコルに従って、複数の命令順序から有限状態機械によって実行される命令順序を選択するステップであって、命令順序のそれぞれが、プロトコルに対応する前記ステップと、前記選択された命令順序の命令に従ってクロック発生器を制御して、前記有限状態機械によってさらに制御することなく、第１の複数クロックパルスを前記シフトレジスタモジュールに供給するステップと、前記クロックパルスおよび前記命令順序の実行に応答して、第１の複数ビットに対応する第２の複数ビットを出力するステップとを含む前記方法である。
【００２１】
シフトレジスタモジュールの制御方法は、第２の複数ビットのカウントを維持するステップをさらに含むことができる。シフトレジスタモジュールの制御方法は、カウントに応答して、パリティビットを選択的に出力するステップをさらに含むことができる。シフトレジスタモジュールの制御方法のいくつかの実施例は、第３の複数ビットを含む第２のシフトレジスタモジュールに、前記第３の複数クロックパルスを提供するクロック発生器を制御するステップと、前記クロックパルスに応答して前記第３の複数ビットに対応する第４の複数ビットを出力するステップをさらに含む。
【００２２】
任意選択で、シフトレジスタモジュールの制御方法は、クロック発生器を制御して、第２の複数クロックパルスを供給して、状態機械による命令順序の実行を制御するステップをさらに含む。いくつかの実施例においては、シフトレジスタモジュールの制御方法は、第２の複数クロックパルスを阻止するステップをさらに含み、第２の複数ビットを出力中は、複数の命令の実行が停止される。命令に従ってクロック発生器を制御するステップは、パルス数およびクロック速度を指定することを含むことができる。
【００２３】
詳細な説明
本発明を説明するための、非限定の実施態様を添付の図面を参照して例として説明する。記述においては、異なる図における同一構成要素を指定するのに、同一参照番号を使用する。
図３Ａは、本発明の少なくともいつくかの態様によるプログラマブルシリアルポート３００の第１の例示的実施態様を示す機能ブロック図である。プログラマブルシリアルポート３００は、複数のビットからなるデータビットのパラレルセット（例えば、１バイトのデータ）をチャネル３０２上で転送し、第１の複数ビットに対応する第２の複数ビットのシリアル出力をチャネル３０４上に供給する。プログラマブルシリアルポート３００は、チャネル３０４上のシリアル入力を受け取り、チャネル３０２上でパラレル出力を供給するのにも使用することができる。さらに、プログラマブルシリアルポート３００は、単向（simplex）モードまたは半二重（half duplex）モードで動作することができる。シリアル入力／パラレル出力動作は、通常、さらに詳しい説明をしなくても明白であるので、以下の論述においては、主としてパラレル入力／シリアル出力動作モードに重点を置く。
【００２４】
プログラマブルシリアルポート３００は、有限状態機械３２０、クロック発生器３６０（本明細書では、クロックパルス発生器とも呼ぶ）、シフトレジスタモジュール３１２、およびドライバ３８０を含む。（従来式の）コントローラ３５０は、例えば、プログラマブルシリアルポート３００を含む上記の構成要素のいずれかを初期化し、シリアル通信を行うプロトコルを選択し、かつバッファ３２０を充填することによって、プログラマブルシリアルポート３００のいくつかの機能を制御する。
【００２５】
より詳細を以下に記述するように、ＦＳＭ３２０は、シフトレジスタ３１２およびクロック発生器６０に命令を供給することによって、それぞれの構成レジスタを制御することを含めて、それぞれの動作を制御する。またＦＳＭ３２０は、コントローラ３５０によって選択されたプロトコルプログラムに対応する命令を実行する。例えば、コントローラは、メモリ３３０に記憶された選択されたプロトコルプログラムに対応する命令セットのプログラムコードライン番号を供給する。このメモリには、それぞれが異なるプロトコルに対応する複数の命令を含めることができる。シフトレジスタモジュール３１２は、複数ビットのパラレル入力をバッファからチャネル３０２上で受け取り、この複数のビットに対応するシリアル出力をドライバ３８０に供給する。シフトレジスタモジュール３１２は、チャネル３０２上で受け取るデータをシリアル化するシフトレジスタ３１０と、ビットカウンタ３７０とを含む。ビットカウンタ３７０は、シフトレジスタモジュール３１２によって出力されるシリアルデータのビットの番号付きカウントを維持するように構成されている。
【００２６】
クロック発生器３６０は有限状態機械３２０に結合されて、有限状態機械３２０からの少なくとも１つの命令に応答して、１つまたは２つ以上のクロックパルスを、シフトレジスタ３１０に供給する。クロックは、データのシフトレジスタモジュール３１２へのシフトおよびそこからのシフトの制御タイミングをパルスで送る。クロック発生器３６０は、有限状態機械３２０からの少なくとも１つの命令を受け取る入力チャネル、および有限状態機械３２０へクロックパルスを供給する出力チャネルを有する。例えば、少なくとも１つの命令に応答して、クロック発生器３６０はシフトレジスタ３１０に、所定の数のクロックパルスを、所定の速度で、所定の時刻（または所定の遅延の後に）に、供給することができる。いくつかの実施態様においては、有限状態機械３２０は、単一の指令をクロック発生器３６０に供給して、所定の数のパルスを、所定の速度で生成して、クロック発生器を制御するのに必要な実行時間量を低減することができる。したがって、選択されたプロトコルに従う出力を達成するために、ＦＳＭによって実行される命令の数は、比較的少なく、かつ出力を達成するための全実行時間は比較的短く、したがって、プログラマブルシリアルポート３００は、広範なプロトコルに従って、出力を供給し、かつ入力を受容することができる。ＦＳＭ３２０およびクロック発生器３６０は共に、シフトレジスタモジュール３１２を制御するための、シフトレジスタ制御モジュール３５５を形成する。
【００２７】
クロック発生器３６０から受け取るクロックパルス（これより先に、他の目的で別のパルスが先行する場合がある）に応答して、シフトレジスタモジュール３１２は、ドライバ３８０に単一のデータビットを出力し、ビットカウンタ３７０が（プロトコルが最上位ビットまたは最下位ビットのいずれを最初に転送するかを指定するかに応じて）減分または増分される。シフトレジスタ３１２は、選択されたプロトコルに対して、カウンタがゼロに達した後に受け取る最初のクロックパルスによって、自動的にパリティビットが出力されて、カウンタがゼロに達した後に受け取る２番目のクロックによってストップビットが出力されるように構成することができる。
【００２８】
図３Ｂは、自動的にパリティビットまたはストップビットを出力するように構成されたシフトレジスタモジュール３１２からの例示的な出力ビット列３９０のタイミング図２を示す。出力ビット列３９０に加えて、ビットカウンタ３７０（図３Ａに示す）の対応するビットカウント３９２およびクロック発生器３６０（図３Ａに示す）からのクロック信号３９４を示してある。この例示的なビット列３９０において、データビットは、クロック信号３９４の上昇エッジにおいて出力されると仮定されている。（ビットカウント１〜４に対応する）上昇エッジ３９６ａ〜ｄのそれぞれを受け取ると、対応するデータビットがそれぞれ、出力される。ビットカウントがゼロのときに最初の上昇エッジ３９６ｅを受け取ると、パリティビットが出力され、ビットカウントがゼロのときに２番目の上昇エッジ３９６ｆを受け取ると、ストップビットが出力される。
【００２９】
図３Ａを再び参照すると、ドライバ３８０はチャネル３０４に結合されて、選択されたプロトコルが必要とするラインドライブおよび受信回路およびパラメータを供給する。例えば、ドライバ３８０は、オープンソースまたはオープンコレクタラインドライバ回路などの、所望のラインドライバ回路タイプの選択、出力信号の極性の選択、および高インピーダンス状態の選択を可能にする。さらに、ドライバ３８０は、データ供給源（例えば、固定論理値（すなわち、１または０）における出力、ＦＳＭからの入力／出力、シフトレジスタからの入力／出力）の選択を可能にする。ドライバはまた、データ・イン／データ・アウト不一致を検出することができる。さらに、半二重モードにおいて、ドライバ３８０は、チャネル３０４上で送受信するデータを多重化することができる。ドライバ３８０は、好ましくは、図のライン３８１に供給されるプロトコル選択信号に応答してプログラマブルとして、プロトコルに関係する選択および動作を可能にする。プロトコル選択信号は、コントローラ３５０から直接的または間接的に送られる。ドライバ３８０を、出力チャネル３０４を有するように示してあるが、ドライバ３８０は、クロック信号（単数または複数）のような１つまたは２つ以上の追加出力を供給することができることを理解されたい。
【００３０】
図４Ａは、本発明の少なくともいくつかの態様による、プログラマブルシリアルポート４００の、第２の例示的実施態様を示す機能ブロック図である。プログラマブルシリアルポート４００は、ドライバ４８０、２つの有限状態機械４２０，４２１，シフトレジスタモジュール４１２，４１３，およびクロック発生器４６０，４６１を含む。シフトレジスタモジュール４１２，４１３は、対応するシフトレジスタ４１０，４１１およびビットカウンタ４７０，４７１を有する。シフトレジスタ４１０，４１１は、バッファ４２２，４２３からパラレルデータビットを受け取り、それぞれ、チャネル４０４，４０５にシリアル出力を供給する。
【００３１】
上述のように、コントローラ４５０は、例えば、プログラマブルシリアルポート４００を含む上記の構成要素のいずれかを初期化し、かつそれにしたがって入力および出力を処理するプロトコルを選択することによって、プログラマブルシリアルポート４００のいくつかの機能を制御する。
プログラマブルシリアルポート４００は、シフトレジスタモジュール４１２，４１３をそれぞれ経由するデータの同時送受信を可能にするように構成されている、したがってプログラマブルシリアルポート４００は、全二重（full duplex）通信または半二重（half-duplex）通信が可能である。全二重通信を達成するためには、シフトレジスタモジュール４１２，４１３が同時に動作して、それぞれデータを送受信し、半二重モードで動作させるためには、シフトレジスタモジュール４１２，４１３は、交互時間サイクルでデータを送受信する。
【００３２】
いくつかの実施態様においては、プログラマブルシリアルポート４００は、ＦＳＭ４２０，４２１とそれぞれ関連する２つの事象カウンタ４８０，４８１を含む。事象カウンタ４８０，４８１は、クロック信号またはＦＭＳ４２０，４２１からの信号などの入力に応答して、増分または減分するレジスタである。カウンタ４８０，４８１は、ＦＳＭまたはその他の発生源（例えば、クロック）からの入力に応答して、増分または減分するように構成可能である。例えば、カウントレジスタ値は、Ｃｏｍｐａｒｅ命令（以下に述べる）を介してアクセスすることが可能であり、さらにカウントレジスタはハードワイヤ化して、イベントが発生する（例えば、カウンタ４８０，４８１がゼロに減分されるか、またはレジスタにオーバフローが発生する）時に、関連するＦＳＭに出力を供給することができる。いくつかの実施態様においては、指定された命令（Ｄｅｌａｙ命令、Ｗａｉｔ指令または電力節減モードを呼び出すＣｌｏｃｋ指令（このような命令のそれぞれを以下に記述する））を実行すると、ＦＭＳが、カウンタ４８０，４８１がゼロに減分されたことを示す出力を、事象カウンタ４８０，４８１から受け取るまで、ＦＳＭクロック信号７０５，７０６（図７参照）が、ゲート７０８，７０９によってゲート制御される。
【００３３】
いくつかの実施態様においては、プログラマブルシリアルポート４００は、状態レジスタ４９５およびコンパレータ４９０を含めることができる。状態レジスタ４９５は、プログラマブルシリアルポート４００の、その他任意の構成要素の状態を示す（例えば、１つのビットは特定のレジスタが満杯、空、またはオーバフローの状態であることを示したり、あるいはパリティビットエラーを示すことができる）データを受け取ることができる。ＦＳＭ４２０，４２１は、例えば、状態レジスタの任意のビット、または事象カウンタ４８０，４８１カウント値に基づいて、条件付き動作を実行することができる。コンパレータ４９０を含めることによって、ＦＳＭ４２０，４２１による条件付動作を容易にすることができる。例えば、コンパレータ４９０は、状態レジスタ内のデータ値を比較することができる。
【００３４】
任意選択で、割込み処理モジュール４５５，４５６によって、割込み処理を行うことができる。図４Ｂを参照すると、例示的な割込み処理モジュール４５５を示してある。割込み処理モジュールは、少なくとも第１のオペランドに従って、ＦＳＭに選択的に割込むように、定義、構成、かつ配設されている。割込み処理モジュールは、マルチプレクサ４６２，４６３を制御するために、第１の割込み選択レジスタ４５７を備え、これらのマルチプレクサ４６２，４６３はそれぞれ第１オペランドおよび第２のオペランドを、オペレータモジュール４６４に供給する。例えば、第１のオペランドおよび第２のオペランドを、状態レジスタ４９５の選択されたビットとするか、または第１のオペランドと第２のオペランドの１つを、選択されたデータ値とすることができる。オペランドモジュール４６４は、選択されたオペランド上の選択された動作を実行し、出力（例えば、それらの値の論理ＡＮＤまたは論理ＯＲ）を生成する。割込み構成レジスタ４６６を使用して、割込みの動作許可、入力または出力の反転、および検出されたレベルまたはエッジの受領時に比較を実行するかどうかを制御することができる。割込み構成レジスタには、ＡＮＤゲート４６９を制御するための、割込み許可ビットを含めることによって、ＦＳＭに割込みを供給してＦＳＭへの割込みさせるべきかどうかを判定することができる。
【００３５】
割込みを受け取ると、ＦＳＭは割込みアドレスレジスタ４６７に指定されたアドレス（すなわち、割込みベクトル）で開始されるルーチンに入る。任意選択で、割込みを受け取ると、ＦＳＭは、割込みの発生時に有限状態機械が実行していたプログラムラインにＦＳＭが復帰することを可能にするための、リターンアドレスをリターンレジスタ４６８内に記憶してもよい。
図５は、本発明の少なくともいくつかの態様による、転送レジスタシフトモジュール５００の例示的実施態様の概略図である。シフトレジスタモジュール５００は、本明細書においては、チャネル５０２上で受け取るデータをシリアル化するための、少なくとも１つのシフトレジスタ５１０を含む。任意選択で、シフトレジスタ５００は、ビットカウンタモジュール５７０、転送論理５２０、および転送構成レジスタ５０６を含む。ビットカウンタ５７２は、シフトレジスタモジュール５００が出力するシリアルデータビットの番号付きカウントを維持するように構成されている。
【００３６】
シフトレジスタモジュール５００は、チャネル５０２上のバッファ（例えば、図２ ４のバッファ４２０）から、またはチャネル５０５上でＦＭＳ４２０（図４に示す）によって割り当てられたメモリ位置などの代替供給源から、１組のパラレルデータビットを受け取る。パラレル入力の供給源は、マルチプレクサ５０４によって決定される。シフトレジスタモジュール５００は、チャネル５０３上のパラレルビットセットに対応するシリアル出力を供給する。例えば、出力はドライバ３８０（図３Ａ参照）に供給される。
シフトレジスタ５１０は、選択されたパラレル入力をシリアル化する。本明細書において定義するシフトレジスタ５１０は、従来式シフトレジスタまたはデータのシリアル化に適する、その他任意の構造（例えば、マルチプレクサに結合されて、パラレルの入力データビットの組に対応するシリアルビットを選択的に出力するバッファ）を含むことを理解されたい。
【００３７】
転送論理５２０は、ストップビットを生成するマルチプレクサ５２２と、そのストップビットを出力として供給するマルチプレクサ５２３とを含む。さらに、転送論理５２０は、パリティ発生器５２４と、出力すべきパリティビットを供給するマルチプレクサ５２５とを含む。マルチプレクサ５２２は、転送構成レジスタ５０６によって指定される制御信号によって決定される、論理レベルハイまた論理レベルローを選択する。データビットマルチプレクサ５２６によって、シフトレジスタモジュール５００は、チャネル５０３を介するデータ出力の供給源を制御することが可能となる。例えば、所与のプロトコルにおいて、あるビットを、シフトレジスタ５１０、ＦＳＭ４２０から供給するように指定するか、または論理レベルハイもしくは論理レベルローとして選択することができる。パリティビット発生器５２４は、データビットマルチプレクサ５２６から出力されるデータビット値を受け取り、パリティビットを計算する。
【００３８】
上記のように、本発明の態様によれば、シフトレジスタモジュール５００は、クロックパルス５７２の受領に応答して自動的に減分される。データビットの伝送の終了後に（プロトコルで要求される場合には）、パリティビットが自動的に出力され、ビットカウンタがゼロに達した後、所定の数のクロックサイクルを受領した後に、ＦＳＭがさらなる命令を実行する必要なしに、自動的にストップ状態になる。したがって、選択されたプロトコルに従う出力を達成するためにＦＳＭが実行する命令の数は、比較的少なく、出力を達成するための全体実行時間は比較的短く、したがって、プログラマブルシリアルポートは、広範なプロトコルに従う出力を供給するとともに入力を受容することができる。
【００３９】
上記の自動出力を達成するために、ビットカウンタモジュール５７０は、ビットカウンタ５７４、コンパレータ５７２、カウントアナライザ５７６、経路コントローラ５７８、および以下に述べるその他の論理を含む。経路コントローラ５７８は、カウント値を受け取り、シフトレジスタ５１０および転送論理５２０を制御して、選択されたプロトコルに従ってチャネル５０３上に出力を自動的に供給する。構成レジスタ５０６は、コントローラ４５０（図４に示す）によって供給されるデータを格納し、選択されたプロトコルに従って、上記の構成要素のそれぞれを配設かつ制御する。
【００４０】
構成レジスタ５０６からの入力５０６ａによる指示が、選択されたプロトコルが最上位ビットまたは最下位ビットのいずれを最初に送ることを要求するかに応じて、マルチプレクサ５８０によって、初期カウント値がビットカウンタ５７４に供給される。最上位ビットが最初に送られる場合には、マルチプレクサ５８０は、データサイズ（すなわち、チャネル５０２によって供給される特定の組のデータビット内の、データビットの総数）に等しい初期カウント値を供給し、ビットカウンタ５７４がゼロに減分される。また、最下位ビットが最初に送られる場合には、マルチプレクサ５８０は、ゼロに等しい初期カウント値を供給し、ビットカウンタ５７４は、データサイズに等しい値に増分される。各クロックパルスに対して、経路コントローラ５７８は、データ値、パリティビットまたはストップビットを送るかどうかを、ビットカウンタ５７４からのカウントに基づいて選択する。
【００４１】
クロックパルス５７２を受け取ると、ビットカウンタ５７４は、選択されたプロトコルに基づいて、そのカウントを増分または減分する。経路コントローラ５７８は、そのカウント値をビットカウンタ５７４から受け取る。経路コントローラ５７８は、カウント値を構成レジスタ５０６からの入力０６ａと比較して、シフトレジスタ５１０からのデータビット、パリティビットまたはストップビットを出力チャネル５０３に供給するように、マルチプレクサ５２３，５２６，５２５を構成すべきかどうかを判定する。１番目のゼロカウント値を受け取ると、経路コントローラ５７８は、マルチプレクサ５２３，５２６，５２５を制御して、最下位データビット、パリティビットまたはストップビットを出力する。２番目のゼロカウントを受け取ると、経路コントローラ５２８は、マルチプレクサ５２３，５２６，５２５を制御して、入力５０６ａがパリティビットを送るべきことを示す場合には、パリティビットを供給し、また第２のゼロカウントを受け取ると、経路コントローラ５７８は、マルチプレクサ５２３，５２６，５２５を制御して、入力５０６ａがストップビットを送るべきことを示す場合には、ストップビットを供給する。経路コントローラ５７８は、シフトレジスタ５１０にカウント値を供給し、これを出力すべきデータビットに対するポインタとして使用することができる。したがって、シフトレジスタ内のデータビットのそれぞれは、クロックパルスに応答して出力される。
【００４２】
コンパレータ５７２は、送られたビット数が、データサイズに一致するかどうかを判定する（例えば、最下位ビットが最初に転送される場合には、コンパレータ５７２は、カウンタ値がデータサイズに等しいかどうかを判定する）。コンパレータ５７２からの出力は、カウントアナライザ５７５に供給されて、カウントアナライザ５７２は、入力５０６ａとコンパレータの出力を組み合わせて、ビットカウンタ５７４の次の値を決定する。コンパレータ５７２が、データサイズと一致するビット数が送られたことを示すまで、ビットカウントは適宜に増分（または減分）される。データサイズと一致するビット数が送られたことを示す出力を、コンパレータ５７２から受け取ると、カウントアナライザ５７６は、パリティビットが必要であるか（例えば、カウンタがゼロに達した後に、カウンタを第１のパルスの間、ゼロのままにすることができる）どうかを判定するか、またはストップビットが必要である（例えば、カウンタがゼロに達した後に２番目のパルスの間、ゼロのままにすることができる）ことを示し、循環モードを設定する（すなわち、パリティビットおよびストップビットが設定された後に、カウンタが初期値にリセットされる）かどうを判定する。
【００４３】
図６は、プログラマブルポートに使用することのできるドライバ４８０の例を示す概略図である。図示した例示的な実施例においては、６つの入力／出力ドライバ回路、すなわち転送データドライバ回路６０１、転送クロックドライバ回路６０２、受信データドライバ回路６０３、受信クロックドライバ回路６０４、および２つの構成可能入力／出力回路６０５，６０６が設けられている。例えば、構成可能入力／出力回路６０５，６０６は、各受信および送信ポートに１つの、イネーブル信号を供給するか、またはスレーブクロック信号（以下に記述）として使用される信号を受け取るのに使用することができる。
この回路は、任意の従来型入力／出力ドライバ回路とすることができる。例えば、この回路は、ソース／レシーバ（例えば、論理１またはゼロで電源、ＦＳＭからの入力／出力、またはシフトレジスタからの出力）の選択、出力信号の極性の選択、高インピーダンス状態の選択、データ・イン／データ・アウト不一致の検出およびパリティビット演算を可能にする。任意選択で、スイッチ６１０を含めて、プログラマブルデータポートを配置することのできる、集積回路の６つの出力ピン６２１〜６２６にいずれかに入力／出力をマッピングできるようにすることもできる。
【００４４】
図７は、本発明の態様による少なくともいくつかのプログラマブルシリアルポートと共に使用するクロック発生器７００の一実施態様の例を示す概略図である。クロック発生器７００は、複数のクロック発生源からマスタクロック信号を選択、例えば、マスタクロック信号を、マイクロコントローラ（例えば、図４のマイクロコントローラ４５０）から入力されるシステムクロック７０２、またはマスタクロック信号７０３として使用するのに好適な任意のパルス発生源から入力される補助クロック７０３から選択して、出力クロック信号を供給することができる。このような出力クロック信号としては、第１および第２のＦＳＭ（例えば、図４のＦＳＭ４２０，４２１）への出力クロック信号７０５および７０６、第１および第２のシフトレジスタモジュール（例えば、シフトレジスタモジュール４１２および４１３）への出力クロック信号７２６，７３６ならびにドライバ（例えば、図４のドライバ４８０）への出力クロック信号７２７，７３７が挙げられる。
【００４５】
ＦＳＭクロック発生器モジュール７１０は、マスタクロック信号７０４を受け取り、出力チャネル７０５，７０６上のそれぞれの状態機械に、クロック信号出力７０５，７０６に供給して、状態機械による命令実行を制御する。出力クロック７０５，７０６は、出力チャネル７０５，７０６に結合されたＦＳＭ分割器７１２によって、マスタクロック信号７０４を基準にして分割または位相遅延させるか、あるいは（マルチプレクサ７１４に加えられる制御信号に応じて）ＦＭＳ分割器７１２をバイパスすることによって、クロック信号出力７０５，７０６をマスタクロック信号７０４と同じにすることができる。ゲート７０８，７０９は、それぞれ出力チャネル７０７，７０８に結合して、出力クロック信号７０５，７０６をゲート制御することができる。例えば、ゲート７０８，７０９は、それぞれ、以下に記述する電力節減モードを有効にするための、Ｗａｉｔ命令、Ｄｅｌａｙ命令またはＣｌｏｃｋ命令の実行によって得られる、「制御」というラベルをつけた入力７０８ａ，７０９ａによって全体的に示されているＦＳＭ４２０，４２１からの制御信号によって、制御（すなわちゲート制御）することができる。
【００４６】
ＦＳＭクロック発生器７１０は、マスタクロック７０４のクロック発生源を決定する構成レジスタ７０７と、分割器７１２が使用する分割係数、およびクロック発生源に対する、出力クロック信号７０５，７０６の位相を含む。制御入力７０８ａ，７０９ａは、いくつかの実施態様においては、構成レジスタの内容によって設定することもできる。
転送クロック発生器モジュール７２０は、ＦＳＭクロック発生器モジュール７１０および交番クロック入力（例えば、非同期スレーブクロック信号７２１、論理ハイ、および論理ロー信号）からの信号出力７０５ａを受け取り、（複数のクロックパルスを含む）クロック信号出力７２６および７２７を転送シフトレジスタ（図４の４１２）およびドライバ（例えば、図４のドライバ４８０）にそれぞれ供給する。転送分割器７２２および転送分割器７２４は、ＦＳＭクロック発生器モジュール７１０のゲート制御されない出力７０５ａを分割するとともに、転送シフトレジスタに結合されて、クロック信号出力７２６を供給する。マルチプレクサ７２５は、スレーブクロック信号７２１、論理レベルハイおよび論理レベルローの中での選択を行い、マルチプレクサ７４５は、マルチプレクサ７２５の出力と、転送分割器７２２の出力との間での選択を行い、クロック信号出力７２６を供給する。マルチプレクサ７２３は、転送分割器７２４の出力およびマルチプレクサ７４５の出力との間で選択を行い、クロック信号出力７２７を供給する。したがって、マルチプレクサ７２３を適宜に構成することによって、転送シフトレジスタおよび転送ドライバを同一のクロック信号でドライブすることができる。
【００４７】
転送クロック構成レジスタ７２８は、分割器７２２，７４４の分割係数、および出力のスタート極性、ストップ極性を、クロックが電力節減モードで動作しているかどうか（すなわち、転送クロック動作の間、ＦＳＭクロック発生器が切られているかどうか）によらず、またＦＳＭクロックの動作を動作の終了時に開始するか、または（図８Ａ，８Ｂを参照して以下に詳細に記述する理由によって）１クロックサイクル早く開始するかによらず、制御する。転送クロック分割器レジスタ７２９は、転送クロック信号のデューティサイクルを制御する。例えば、転送クロック分割器に、高レベル分割比および低レベル分割比を含めて、クロック信号７２６，７２７が高レベルおよび低レベルにあるサイクル数を特定することによって、デューティサイクルを特定することができる。当業者であれば、このような高レベルおよび低レベル分割比の実現を理解するであろう。したがって、さらなる詳細は本明細書には含めない。
【００４８】
受信クロック発生器モジュール７３０は、ＦＳＭクロック発生器モジュール７１０からの信号出力７０５ａと代替クロック入力（例えば、非同期スレーブクロック信号７３１、論理ハイ、および論理ロー信号）とを受け取り、クロック信号出力７３６，７３７を受信シフトレジスタ（図４の４１３）およびドライバ（例えば、図４のドライバ４８０）に、それぞれ供給する。受信分割器７３２および受信分割器７３４は、ＦＳＭクロック発生器モジュール７１０の非ゲート制御出力７０５ａを分割する。マルチプレクサ７３５は、スレーブクロック信号７３１、論理レベルハイおよび論理レベルローの中で選択を行い、マルチプレクサ７４６は、マルチプレクサ７３５の出力と転送分割器７３２の出力との間で選択を行い、クロック信号出力７３６を供給する。マルチプレクサ７３３は、転送分割器７３４の出力とマルチプレクサ７４６の出力の間で選択を行い、クロック信号出力７３７を供給する。したがって、マルチプレクサ４３３を適正に構成することによって、転送シフトレジスタおよび転送ドライバを同一のクロック信号でドライブすることができる。
【００４９】
受信クロック構成レジスタ７３８は、分割器７３２，７３４の分割係数、および出力のスタート極性とともにストップ極性を制御する。受信クロック分割器レジスタ７３７は、転送クロック信号のデューティサイクルを制御する。例えば、受信クロック分割レジスタ７３７に、高レベル分割比および低レベル分割比を含めて、クロック信号７３６および７３７が、高レベルおよび低レベルにあるサイクル数を特定することによって、デューティサイクルを決定することができる。当業者であれば、このような高レベルおよび低レベル分割比の実装を理解するであろう。したがって、これ以上の詳細はここでは記述しない。
クロック発生器７００を使用することによって、第１のＦＳＭおよび第２のＦＳＭを含むプログラマブルシリアルポート（例えば、図４のプログラマブルシリアルポート４００）を、動作させて全二重動作を達成することができる。代替手法として、第１のＦＳＭおよび第２のＦＳＭを有するクロック発生器７００を、転送クロック信号および、転送および受信が交番するクロック間隔で発生するように形成される受信信号を有する半二重モードで、動作させることができる。
【００５０】
図８Ａおよび８Ｂは、２つの例示的なクロッキング選択のタイミング図である。各タイミング図は、マスタクロック８０２、シフトレジスタ制御クロック８０４、または８１４（すなわち、転送クロック信号または受信クロック信号）、および対応するＦＳＭクロック信号８０６、８１６を示す。さらに、Ｃｌｏｃｋ命令が実行される、クロックサイクルの表示８１０または８２０を、クロック命令に続いて命令の実行が行われる（「次の命令」とも呼ばれる）クロックサイクルの表示８０５または８１５と共に示してある。
図８Ａは、標準モードにおいて１クロックパルスを生成するクロック発生器用の例示的なクロック発生器出力を示す。標準モードにおいて、ＦＳＭクロック信号８０６は、シフトレジスタ制御クロック信号８０４が生成されるときの時間周期中に生成される。したがって、Ｃｌｏｃｋ命令に続く命令は、Ｃｌｏｃｋ命令が実行されるクロックサイクル８１０の直後のマスタクロックサイクル８０５中に実行される。
【００５１】
この例示タイミング図は、１のオフ状態８２１およびゼロのスタート状態８２３を達成するように構成された構成レジスタを有するクロック発生器に対応する。さらに、低レベルおよび高レベル分割係数を、８サイクルの内の２つがハイとなるように選択することによって、４分の１のデューティサイクルを達成することができる。
図８Ｂは、電力節減モードで動作しているクロック発生器に対するクロック発生器出力を示す。電力節減モードにおいては、シフトレジスタ制御クロック信号８１４が生成される間、ＦＳＭクロック信号８１６は、一時停止される。電力節減モードは、電力消費の低減を可能にする。例えば、電力節減モードは、選択されたプロトコルが、シフトレジスタ制御クロックが生成される間に、命令を実行することを必要としない場合に、使用することができる。
【００５２】
電力節減モードは、ゲート７０８，７０９（図７に示す）を使用して、対応するシフトレジスタモジュールが出力を供給する間に、ＦＳＭクロック信号の出力を阻止することによって達成される。Ｃｌｏｃｋ命令の実行中に、制御レジスタ７２８，７３８が電力節減モードに構成されると、ゲート７０８および／または７０９が、信号７０５，７０６を、それぞれ、阻止し、適当なサイクル数を終了すると、ゲート７０８，７０９はＦＳＭクロック信号の阻止を停止する。
図８Ｂにおいて、シフトレジスタ制御信号８１６は、シフトレジスタ制御クロック８１４に持続時間において２つの周期を供給する（領域８２５で示すように）。クロック信号は、３２％のデューティサイクル、ゼロのオフ状態８２２および１のスタート状態８２４を有する。
【００５３】
命令の復号および実行には２クロックサイクルを要するので、次の命令の実行は、シフトレジスタ制御クロック信号８１４の終了８３０の後、２番目のクロックサイクル８１５で行われる。（次の命令の復号は、終了８３０に続く１番目のクロックサイクル８３１中に行われる。）したがって、いくつかの実施態様においては、シフトレジスタクロック出力の終了８３０前に、ＦＳＭクロック信号８１６の阻止を１サイクル停止させるように、ゲート７０８および／または７０９を制御してもよい。これによって、次の命令を、シフトレジスタクロック生成が完了して直後のクロックサイクルにおいて、実行することができる。
【００５４】
図９は、標準出力（例えば、ＵＡＲＴ互換出力）を達成するための、本発明のいくつかの態様によるプログラマブルシリアルポート用の例示的な命令順序のフローチャート９００である。ステップ９０５において、ＦＳＭは、シフトレジスタからのシフトレジスタがデータで一杯である指示を待つ。ステップ９１０において、ＦＳＭはドライバにスタート状態をロードする。ステップ９２０において、ビットカウンタが初期化される。ステップ９３０において、ＦＭＳはビットカウンタをシフトレジスタにロードする。ステップ９５０のおいて、１番目のデータビットが送られて、プロトコルが必要とするサイクル数だけ論理値が保持される。ステップ９６０において、パルス数と分割器のための分割係数を定義するクロック発生器に、クロック命令が送られる。最後に、ステップ９９０において、ドライバがストップ状態に設定される。
【００５５】
本明細書に示す方法および装置によれば、（図２を参照して前述した）従来型プログラマブルシリアルポート用のプログラムのフローチャートと異なり、選択された出力を提供するのにＦＳＭが実行する必要のある命令数が低減されるので、所与のデータ出力を達成するのに要する実行時間が、大幅に減少する。例えば、図２においては、ＦＳＭは、シフトレジスタに各データビットを出力するために、指令を送ることが必要である（図２のステップ２７０）。対照的に、図９においては、単一の指令が、クロック発生器（例えば、図３のクロック発生器３６０）に送られて、分割率によって決まる速度で、所定の数のパルスが生成される。
【００５６】
クロック発生器はシフトレジスタに結合されているので、シフトレジスタは、クロック発生器からのクロックパルスに応答して、データビットを出力し、それによってＦＳＭは、シフトレジスタに各データビット出力を供給するように指令する必要から開放される。また、図２のおいて、ＦＳＭは、ビットカウンタを減分して（ステップ２６０）、出力されるデータビットの番号付きカウントを維持する。図９においては対照的に、シフトレジスタは、クロック発生器からクロックパルスを受け取るのに応答して自動的に減分されるビットカウンタを有するので、ＦＳＭはカウンタを減分するための命令を実行する必要がない。さらに、シフトレジスタは、（プロトコルが必要とする場合には）パリティビットを出力して、ビットが送られた後でクロックサイクルを受領すると、ＦＳＭがさらに命令を実行する必要なく、ステップ状態に入るように配設されている。
【００５７】
以下に示す命令のリストは、ＦＳＭ４１０および４１１（図４に示す）によって実行される例示的な命令セットである。図１０Ａおよび１０Ｂは、リストに示すそれぞれの命令の、１つの例示的なバイナリ実装の組を示す表である。このリストには、機能的記述とともに、図１０Ａおよび１０Ｂに示す、対応するバイナリ実装１０００に対する、対応するバイナリ実装中に含まれるビットの説明が含まれる。図１０Ａおよび１０Ｂにおけるバイナリ実装は、（図１０Ａを参照して以下に示すように）選択された命令をパラレルに実行することができる、復号および実行アーキテクチャとともに実装するのに適しているので、以下に示すリスト中のいくつかの命令は、図１０Ａ（ビット位置０〜７での使用）と１０Ｂ（ビット位置１５〜８での使用）にそれぞれ１つ示す、２つのバイナリ実装に対応する。
【００５８】
図１０Ａおよび１０Ｂを参照すると、それぞれの命令は、（バイナリ実装１０００において論理値１または０で示される）動作コード１００４および１つまたは２つ以上のデータフィールドおよび／またはアドレスフィールドからなっている。
以下の命令リストは、５つのタイプの命令を含む。それは、構成命令、動作制御命令、フロー制御命令、タイミング制御命令、クロック制御命令、条件命令である。プログラマブルシリアルビットポートは、任意公知のフェッチ、復号および実行スキームを有するＦＳＭを使用して実現することができる。例えば、列挙された命令は、シリアルに実行することができる。いくつかの実施態様においては、命令は、以下に記述するようにパラレルに実行される。
【００５９】
【表１】
2005502126.tif 000003
【００６０】
【表２】
2005502126.tif 000004
【００６１】
【表３】
2005502126.tif 000005
【００６２】
【表４】
2005502126.tif 000006
【００６３】
【表５】
2005502126.tif 000007
【００６４】
【表６】
2005502126.tif 000008
【００６５】
プロトコルを実装するための構成レジスタの内容および命令は、手操作で直接生成するか、または任意好適なツールを用いて高レベル入力からコンパイルすることができる。本発明の態様によるプログラマブルシリアルポートに使用する命令順序は、任意好適なメモリ構成に配置することができる。図１１Ａは、本発明に使用するのに好適な１つのメモリ構成１１００を示す概略図であり、メモリ構成１１００は、（図１０Ａおよび１０Ｂを参照して上述したように）８ビットおよび１６ビット命令の組合せを含む、命令セットの使用に対応し、各クロックサイクルにおいて、所定のフェッチの間に部分命令をフェッチすることなく、１６ビットフェッチを行うことが可能となる。例示的なメモリ構成１１００は、メモリライン１１０２、１１０４、１１０６、１１０８からなり、それぞれのメモリラインが１６ビットセグメントに分割されている。
【００６６】
いくつかの実施態様においては、最初の８ビット命令１１０２ａは、最上位ビットを位置１５にして位置１５から始まる、８ビットメモリセグメント１１２０に配置されており、第２の８ビット命令１１０２ｂは、次の８ビットメモリセグメント１１３５（すなわち、ライン１１０２の位置７から始まる）に配置されている。メモリ１１０４の第２のラインは、１６ビット命令１１０４ａが占有している。
第１のライン１１０２と同様に、ライン１１０４は、最上位ビットを位置１５にして、位置１５から始まる、８ビットメモリセグメントに配置された、第１の８ビット命令１１０６ａを有する。しかしながら、次の命令は、１６ビット命令（１１０８ａ）であるので、ライン１１０６の第２の命令１１０６ｂは、（上記の）Ｎｕｌｌ命令が選択され、部分命令（すなわち、１６ビット命令の半分）を含む１６ビットフェッチを回避している。したがって、そのようなアーキテクチャに使用するコンパイラは、好ましくは、８ビットＮＵＬＬ命令１１０６ｂを、ライン１１０６の８ビットメモリセグメント１１３５に挿入する。好ましくは、Ｎｕｌｌ命令は、非実行命令である（すなわち、単に位置保持命令である）。
【００６７】
図１１Ｂは、図１１Ａのメモリ構成１１００に使用するのに好適な、例示的ＦＳＭ復号および実行アーキテクチャ１１５０の概略図である。復号および実行アーキテクチャ１１５０は、予備復号器（pre-decoder）１１６０および２つの復号器１１７０、１１７５を含む。
前述のように、２段階復号および実行アーキテクチャ１１５０は、上述のように、各クロックサイクルに命令の１６ビットをフェッチする。既知の技法を用いて、予備復号器１１６０は、（上記の図１１Ａに示す）メモリのライン１１０２、１１０４、１１０６に対応する命令の動作コードを調べる。予備復号器１１６０は、１６ビットが、１６ビット命令、パラレルに実行すべき２つの８ビット命令、またはシリアルに実行すべき２つの８ビット命令を含むかどうかを判定する。
メモリ位置１１３０の位置に、図１０Ｂに示す命令が（例えば、その動作コートを識別することによって判定されて）存在することは、位置１１３０および１１３５に位置する８ビット命令を、パラレルに実行しなくてはならないことを示す。その他の命令が存在することは、１６ビット命令またはパラレルに実行すべき２つの８ビット命令が存在することを示す。
【００６８】
メモリ１１０２、１１０４、１１０６（図１１Ａを参照）の特定のラインが、単一の１６ビット命令を含む場合には、１６ビットが復号器１１７０に供給される。メモリ１１０２、１１０４、１１０６の特定のラインが、シリアルに実行すべき２つの８ビット命令を含む場合には、第１の命令に対応する８ビットが第１のサイクルに供給され、次のサイクルで８ビットが供給されて、第１の命令が第１のクロックサイクルで実行され、第２の命令が次のクロックサイクルで実行される。さらにメモリ１１０２、１１０４、１１０６の特定のラインが、パラレルに実行すべき２つの８ビット命令を含む場合には、第１のクロックサイクルにおいて、復号器１１７０が、第１の命令を受け取り、復号器１１７５が第２の命令を受け取る。
【００６９】
本発明の概念および、いくつかの例示的な実施態様について記述したが、当業者であれば、本発明は種々な方法によって実施することが可能であり、また修正や改善を思いつくであろうことは、当業者には明白であろう。したがって、用いた例は限定を意図するものではない。本発明は、添付のクレイムおよびその等価物の要求する限りにおいて限定されるものである。また、「含む」、「備える」、または「有する」という用語を使用する場合は、その用語の後に列挙する項目およびその等価物とともに、列挙した項目の、前後または中間の追加項目も含むものと理解すべきである。
【図面の簡単な説明】
【００７０】
【図１】従来型プログラマブルシリアルポートを示すブロック図である。
【図２】標準的出力（例えば、ＵＡＲＴ互換出力）を達成するための、従来型プログラマブルシリアルポート用の一般的な命令セットを示すフローチャートである。
【図３Ａ】本発明の少なくともいくつかの態様による、プログラマブルシリアルポートの第１の例示的実施態様の機能図である。
【図３Ｂ】自動的にパリティビットおよびストップビットを出力するように構成されたシフトレジスタからの例示的な出力ビットストリームのためのタイミング図である。
【図４Ａ】本発明の少なくともいくつかの態様による、プログラマブルシリアルポートの第２の例示的実施態様を示す機能図である。
【図４Ｂ】例示的な割込み処理モジュールの概略図である。
【図５】本発明の少なくともいくつかの態様による、転送レジスタシフトモジュールの例示的な実施態様の概略図である。
【００７１】
【図６】プログラマブルポートに使用することのできる、ドライバ（例えば、図３Ａのドライバ）の例を示す概略図である。
【図７】本発明の態様による、少なくともいくつかのプログラマブルシリアルポートに使用するクロック発生器の実施態様の一例を示す概略図である。
【図８Ａ】標準モードにおいて１クロックパルスを発生するクロック発生器用の、例示的なクロック発生器出力を示す図である。
【図８Ｂ】電力節減モードにおいて動作中のクロック発生器用の、クロック発生器出力を示す図である。
【図９】標準的な出力（例えば、ＵＡＲＴ互換出力）を達成するために、本発明のいくつかの態様によるプログラマブルシリアルポート用の例示的な命令順序のフローチャートである。
【図１０Ａ】本発明の使用に好適な１つのメモリ構成を示す図である。
【図１０Ｂ】図１０Ａのメモリ構成に使用するのに適する例示的なＦＳＭ復号アーキテクチャの概略図である。
【図１１Ａ】命令セットのバイナリ実装の１つの例示的なセットを示す表である。
【図１１Ｂ】命令セットのバイナリ実装の１つの例示的なセットを示す表である。
【図１】
2005502126.tif 000009
【図２】
2005502126.tif 000010
【図３Ａ】
2005502126.tif 000011
【図３Ｂ】
2005502126.tif 000012
【図４Ａ】
2005502126.tif 000013
【図４Ｂ】
2005502126.tif 000014
【図５】
2005502126.tif 000015
【図６】
2005502126.tif 000016
【図７】
2005502126.tif 000017
【図８Ａ】
2005502126.tif 000018
【図８Ｂ】
2005502126.tif 000019
【図９】
2005502126.tif 000020
【図１０Ａ】
2005502126.tif 000021
【図１０Ｂ】
2005502126.tif 000022
【図１１Ａ】
2005502126.tif 000023
【図１１Ｂ】
2005502126.tif 000024
【国際公開パンフレット】
2005502126.tif 000025
2005502126.tif 000026
2005502126.tif 000027
2005502126.tif 000028
2005502126.tif 000029
2005502126.tif 000030
2005502126.tif 000031
2005502126.tif 000032
2005502126.tif 000033
2005502126.tif 000034
2005502126.tif 000035
2005502126.tif 000036
2005502126.tif 000037
2005502126.tif 000038
2005502126.tif 000039
2005502126.tif 000040
2005502126.tif 000041
2005502126.tif 000042
2005502126.tif 000043
2005502126.tif 000044
2005502126.tif 000045
2005502126.tif 000046
2005502126.tif 000047
2005502126.tif 000048
2005502126.tif 000049
2005502126.tif 000050
2005502126.tif 000051
2005502126.tif 000052
2005502126.tif 000053
2005502126.tif 000054
2005502126.tif 000055
2005502126.tif 000056
2005502126.tif 000057
2005502126.tif 000058
2005502126.tif 000059
2005502126.tif 000060
2005502126.tif 000061
2005502126.tif 000062
2005502126.tif 000063
2005502126.tif 000064
2005502126.tif 000065
2005502126.tif 000066
2005502126.tif 000067
2005502126.tif 000068
2005502126.tif 000069
2005502126.tif 000070
2005502126.tif 000071
2005502126.tif 000072
2005502126.tif 000073
【国際公開パンフレット（コレクトバージョン）】
2005502126.tif 000074
2005502126.tif 000075
【国際調査報告】
2005502126.tif 000076
2005502126.tif 000077
2005502126.tif 000078
2005502126.tif 000079
2005502126.tif 000080