(57)【特許請求の範囲】
【請求項１】
プロセッサと、
複数個の周辺機器と、
プログラマブル周辺機器相互接続器と、
イベント発生装置と、
ソフトウェアを記憶するメモリと、を備えたマイクロコントローラであって、
前記イベント発生装置は、前記プロセッサによってアドレス可能なイベント発生レジスタを備え、
前記イベント発生装置は、前記プログラマブル周辺機器相互接続器に接続され、
前記イベント発生装置は、前記イベント発生レジスタの内容に対する所定の変更を検出することができて、このような所定の変更を検出すると前記プログラマブル周辺機器相互接続器にイベントを伝えるように設定され、
前記周辺機器の各々は、前記プログラマブル周辺機器相互接続器に接続され、
前記周辺機器の各々は、それぞれのタスクを実行することによって前記プログラマブル周辺機器相互接続器からのタスク信号に対処するように構成され、
前記プログラマブル周辺機器相互接続器は、各々が前記イベント発生装置のイベントを前記周辺機器の一つに属するタスクにマッピングさせる複数のマッピング関係を格納できるマッピングメモリにアクセスするように構成され、
前記プログラマブル周辺機器相互接続器は、前記イベント発生装置のイベントから前記周辺機器の一つに属するタスクへのマッピング関係が前記マッピングメモリに格納されているとき、前記プログラマブル周辺機器相互接続器がタスク信号を前記周辺機器に送信することによって前記イベント発生装置からのイベントの信号に対処するように構成され、
前記プログラマブル周辺機器相互接続器は、前記マッピングメモリが前記イベント発生装置の一つのイベントから二つ以上の異なるタスクへのマッピング関係を格納しているとき、前記イベントの信号を受信してから所定の最大時間内に前記二つ以上のタスク信号をそれぞれ送信するように構成され、
前記ソフトウェアは、（ｉ）前記イベント発生装置の一つのイベントから少なくとも二つの異なる周辺機器タスクへのマッピング関係を前記マッピングメモリに格納し、（ｉｉ）前記イベント発生レジスタの前記内容に対する前記所定の変更を行うための、前記プロセッサによって実行可能な命令を含み、
前記イベント発生装置は、タイミング機構を有さず、
前記イベント発生装置は、入力については、(ｉ) クロック入力、および一つ以上の入力レジスタだけから入力するか、（ｉｉ）クロック入力、一つ以上の入力レジスタ、および一つ以上のタスク回線だけから入力するか、のいずれかであり、
前記イベント発生装置は、出力については、（ｉ）前記プログラマブル周辺機器相互接続器への一つ以上のイベント回線だけに出力するか、（ｉｉ）前記プログラマブル周辺機器相互接続器への一つ以上のイベント回線、および前記プロセッサへの一つ以上の割り込み回線だけに出力するか、（ｉｉｉ）前記プログラマブル周辺機器相互接続器への一つ以上のイベント回線、および一つ以上の出力レジスタだけに出力するか、（ｉｖ）前記プログラマブル周辺機器相互接続器への一つ以上のイベント回線、前記プロセッサへの一つ以上の割り込み回線、および一つ以上の出力レジスタだけに出力するか、のいずれかである
ことを特徴とするマイクロコントローラ。
【請求項２】
前記所定の最大時間は、１０マイクロ秒以下である
ことを特徴とする、請求項１に記載のマイクロコントローラ。
【請求項３】
前記プログラマブル周辺機器相互接続器は、それぞれの前記二つ以上のタスク信号を同時に送信するように設定される
ことを特徴とする、請求項１または２に記載のマイクロコントローラ。
【請求項４】
起こり得るすべてのマッピング関係について、前記プログラマブル周辺機器相互接続器がイベントの信号を受信してから前記イベントにマッピングされた二つ以上のタスク信号を送信するまでに一定の時間遅延が存在する
ことを特徴とする、請求項３に記載のマイクロコントローラ。
【請求項５】
イベントを前記プログラマブル周辺機器相互接続器に伝えるように構成された、イベント発生を行う一つ以上の周辺機器を備え、前記プログラマブル周辺機器相互接続器は、第一周辺機器のイベントと第二周辺機器のタスクとの間のマッピング関係が前記マッピングメモリに格納されていると、前記第一周辺機器からの前記イベントの信号に対処して前記第二周辺機器にタスク信号を送信することによってチャンネルを形成するように設定される
ことを特徴とする、請求項１乃至請求項４のいずれかに記載のマイクロコントローラ。
【請求項６】
前記イベント発生装置は、複数の異なるイベントを伝えるように設定される
ことを特徴とする、請求項１乃至請求項５のいずれかに記載のマイクロコントローラ。
【請求項７】
前記イベント発生装置は、前記プロセッサによってアドレス可能な複数のイベント発生レジスタを有しており、各イベント発生レジスタは、それぞれ異なるイベントと関係付けられる
ことを特徴とする、請求項６に記載のマイクロコントローラ。
【請求項８】
前記イベント発生装置は、前記プログラマブル周辺機器相互接続器からタスク信号を受信できる
ことを特徴とする、請求項１乃至請求項７のいずれかに記載のマイクロコントローラ。
【請求項９】
前記プログラマブル周辺機器相互接続器は、イベントおよびタスクごとのそれぞれの回線によって前記周辺機器および前記イベント発生装置に接続される
ことを特徴とする、請求項１乃至請求項８のいずれかに記載のマイクロコントローラ。
【請求項１０】
前記イベント発生装置は、前記プロセッサによってアドレス可能で前記イベント発生装置のイベントと関係付けられた、少なくとも一つのイベントレジスタを備える
ことを特徴とする、請求項１乃至請求項９のいずれかに記載のマイクロコントローラ。
【請求項１１】
前記イベントレジスタは、前記イベント発生レジスタとは別個であり、前記イベント発生装置は、前記イベント発生レジスタの内容に対して所定の変更が行われると前記イベントレジスタの内容に対して所定の変更がもたらされるように構成される
ことを特徴とする、請求項１０に記載のマイクロコントローラ。
【請求項１２】
イベントを伝えるときに割り込みを前記プロセッサに送信するための回路を備える
ことを特徴とする、請求項１乃至請求項１１のいずれかに記載のマイクロコントローラ。
【請求項１３】
各々が割り込み回線群によって前記プロセッサに接続された複数のイベント発生装置を備え、各割り込み回線群がそれぞれ異なる割り込み優先レベルを有する
ことを特徴とする、請求項１乃至請求項１２のいずれかに記載のマイクロコントローラ。
【請求項１４】
プロセッサと、
複数の周辺機器と、
プログラマブル周辺機器相互接続器と、
割り込み発生装置と、を備えたマイクロコントローラであって、
前記周辺機器のうちのイベント発生周辺機器は、前記プログラマブル周辺機器相互接続器にイベントを伝えるように構成され、
前記割り込み発生装置は、前記プログラマブル周辺機器相互接続器からタスク信号を受信すると、前記プロセッサに割り込みを送信するように設定され、
前記プログラマブル周辺機器相互接続器は、（ｉ）前記イベント発生周辺機器のイベントと（ｉｉ）前記割り込み発生装置との間のマッピング関係を格納できるマッピングメモリにアクセスするように構成され、
前記プログラマブル周辺機器相互接続器は、前記イベント発生周辺機器のイベントと前記割り込み発生装置のタスクとの間のマッピング関係が前記マッピングメモリに格納されていると、前記タスクの実行を求めるタスク信号を前記割り込み発生装置に送信して前記割り込み発生装置に前記プロセッサへの割り込みを送信させることによって前記イベント発生周辺機器からの前記イベントの信号に対処するように構成され、
前記割り込み発生装置は、タイミング機構を有さず、
前記割り込み発生装置は、入力については、(ｉ) クロック入力、および一つ以上の入力レジスタだけから入力するか、（ｉｉ）クロック入力、一つ以上の入力レジスタ、および一つ以上のタスク回線だけから入力するか、のいずれかである
ことを特徴とするマイクロコントローラ。
【請求項１５】
前記割り込み発生装置は、イベント発生レジスタの内容に対する所定の変更を検出するように設定され、当該の所定の変更を検出すると、前記プログラマブル周辺機器相互接続器にイベントを伝えるイベント発生装置でもある
ことを特徴とする、請求項１４に記載のマイクロコントローラ。
【請求項１６】
前記割り込み発生装置は、前記タスク信号を受信してから所定の最大時間内に前記割り込みを送信するように設定される
ことを特徴とする、請求項１４または１５に記載のマイクロコントローラ。
【請求項１７】
前記割り込み発生装置は、前記タスク信号の受信後に一定時間遅延してから前記割り込みを送信するように設定される
ことを特徴とする、請求項１４乃至請求項１６のいずれかに記載のマイクロコントローラ。
【請求項１８】
各々が割り込み回線群によって前記プロセッサに接続された複数の割り込み発生装置を備え、各割り込み回線群がそれぞれ異なる割り込み優先レベルを有する
ことを特徴とする、請求項１４乃至請求項１７のいずれかに記載のマイクロコントローラ。
【請求項１９】
前記プロセッサによって実行可能であって、前記イベント発生周辺機器のイベントから前記割り込み発生装置のタスクへのマッピング関係を前記マッピングメモリに格納する命令を含むソフトウェアを格納するメモリを備える
ことを特徴とする、請求項１４乃至請求項１８のいずれかに記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコントローラに関する。
【背景技術】
【０００２】
マイクロコントローラは、多くの場合、無線デバイスなどのタイミングが重要な用途に使用される。一つ以上の周辺機器に関与する二つのタスクがマイクロコントローラのプロセッサから原則として同時に起動されることが重要となり得る場合がある。当該デバイスは、例えば、シリアルインターフェース経由の通信を起動すると共に、正確に同時にタイマをスタートさせる必要があることがある。この処理は、通常、最初のタスクを起動するようプロセッサに命令し、その直後に他のタスクを起動するようプロセッサに命令することによって行われる。しかしながら、たとえこれらの処理が隣り合うソフトウェア命令を使用して実行されたとしても、プロセッサが、最初のタスクをトリガした後であるが二番目のタスクをトリガする前に割り込みを受信することが起こり得る。これは、望ましくない動作につながることがある。
【０００３】
この問題は、緊急時には特定の割り込みをマスクしたり、異なる割り込みには異なる優先順位を設定したりすることによって、ある程度軽減することができる。しかし、これらの手法のいずれも完全ではなく、ソフトウェアもその分だけ複雑になる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、上述した手法の代わりとなる手法を提供するものである。
【課題を解決するための手段】
【０００５】
第一の態様からみると、本発明は、
プロセッサと、
複数の周辺機器と、
プログラマブル周辺機器相互接続器と、
イベント発生装置と、
ソフトウェアを格納するメモリと、を備えたマイクロコントローラを提供するものであって、
前記イベント発生装置は、前記プロセッサによってアドレス可能なイベント発生レジスタを備え、
前記イベント発生装置は、前記プログラマブル周辺機器相互接続器に接続され、
前記イベント発生装置は、前記イベント発生レジスタの内容に対する所定の変更を検出することができて、このような所定の変更を検出すると前記プログラマブル周辺機器相互接続器にイベントを伝えるように設定され、
前記周辺機器の各々は、前記プログラマブル周辺機器相互接続器に接続され、
前記周辺機器の各々は、それぞれのタスクを実行することによって前記プログラマブル周辺機器相互接続器からのタスク信号に対処するように構成され、
前記プログラマブル周辺機器相互接続器は、各々が前記イベント発生装置のイベントを前記周辺機器の一つに属するタスクにマッピングさせる複数のマッピング関係を格納できるマッピングメモリにアクセスするように構成され、
前記プログラマブル周辺機器相互接続器は、前記イベント発生装置のイベントから前記周辺機器の一つに属するタスクへのマッピング関係が前記マッピングメモリに格納されているとき、前記プログラマブル周辺機器相互接続器がタスク信号を前記周辺機器に送信することによって前記イベント発生装置からのイベントの信号に対処するように構成され、
前記プログラマブル周辺機器相互接続器は、前記マッピングメモリが前記イベント発生装置の一つのイベントから二つ以上の異なるタスクへのマッピング関係を格納しているとき、前記イベントの信号を受信してから所定の最大時間内に前記二つ以上のタスクの信号をそれぞれ送信するように構成され、
前記ソフトウェアは、（ｉ）前記イベント発生装置の一つのイベントから少なくとも二つの異なる周辺機器タスクへのマッピング関係を前記マッピングメモリに格納し、（ｉｉ）前記イベント発生レジスタの前記内容に対する前記所定の変更を行うための、前記プロセッサによって実行可能な命令を含む。
【０００６】
したがって、本発明によれば、前記ソフトウェアが実行されると、二つ以上の周辺機器タスクがアトミックに、かつ、所定の最大時間枠内にトリガされることが当業者であれば理解されるであろう。単一のプロセッサ書き込み命令のみを使用して前記周辺機器タスクを起動するので、二つの前記周辺機器タスクをトリガすることがプロセッサ割り込みによって中断されるリスクは存在しない。
【０００７】
前記所定の最大時間は、任意の値を有することができるが、１０マイクロ秒以下であるのが好ましく、より好ましくは１マイクロ秒以下であって、最も好ましくは０．１マイクロ秒以下である。前記所定の最大時間は、二つ以上のタスクが実用上同時にトリガされるものとみなすことができるように、十分に小さいことが好ましい。前記所定の最大時間は、１００プロセッサクロックサイクル未満であってもよく、より好ましくは１０または５クロックサイクル未満であってもよい。いくつかの実施形態においては、１プロセッサクロックサイクル未満であってもよい。前記所定の最大時間は、すべてのマッピング関係に対して一定であることが好ましい。前記プログラマブル周辺機器相互接続器は、それぞれの前記二つ以上のタスク信号を同時（例えば、前記プログラマブル周辺機器相互接続器または前記プロセッサに供給されるクロック信号の１サイクル内）に送信するように設定されることが好ましい。この場合は、起こり得るすべてのマッピング関係について、前記プログラマブル周辺機器相互接続器がイベントの信号を受信してから当該イベントにマッピングされた二つ以上のタスク信号を送信するまでに一定の時間遅延が存在することが好ましい。
【０００８】
前記プログラマブル周辺機器相互接続器は、例えば、本出願人による国際公開ＷＯ２０１３／０８８１２１号に記載されているように、既に公知である。いくつかの好ましい実施形態において、前記プログラマブル周辺機器相互接続器は、その内容全体が参照により本明細書に組み込まれた国際公開ＷＯ２０１３／０８８１２１号に記載されているプログラマブル周辺機器相互接続器と、必須ではないが、実質的に同一である。
【０００９】
前記プログラマブル周辺機器相互接続器は、周辺機器間チャンネルのプログラミングもサポートすることが好ましい。いくつかの実施形態において、前記マイクロコントローラは、イベントを前記プログラマブル周辺機器相互接続器（ＰＰＩ）に伝えるように構成された、イベント発生が可能な一つ以上の周辺機器も備える。前記プログラマブル周辺機器相互接続器は、第一周辺機器のイベントと第二周辺機器のタスクとの間のマッピング関係を格納することができ、第一周辺機器のイベントと第二周辺機器のタスクとの間のマッピング関係がメモリに格納されていると、相互接続が第一周辺機器からのイベントの信号に対処して第二周辺機器にタスク信号を送信することによってチャンネルを形成できるように設定されることが好ましい。このようにして、前記プログラマブル周辺機器相互接続器は、イベント発生周辺機器とインターフェースをとるのと同じように、前記イベント発生装置と適宜インターフェースをとってもよい。いくつかの実施形態において、前記イベント発生装置は、一種のイベント発生周辺機器とみなしてもよい。
【００１０】
前記周辺機器は、何らか特定のタイプのものに限定されず、例えば、タイマ、ＵＡＲＴ、電圧比較器、暗号エンジン、アナログデジタル変換器（ＡＤＣ）、デジタルアナログ変換器（ＤＡＣ）、無線送信機、無線受信機などの周辺機器を含んでもよい。当業者によく知られているように、何らかの入力、状態変化、基準を満たすなどが発生すると、例えば、タイマが目標値に到達すると、周辺機器からイベントが知らされてもよい。前記タスクは、インターフェースを介してデータを送信するなど、前記周辺機器によって実行できる何らかの機能または動作であってもよい。
【００１１】
前記イベント発生装置は、単一タイプのイベントのみを伝えるように設けてもよいが、複数の異なるイベントを伝えられるのが好ましい。これらのイベントは、それぞれ異なるイベント回線を介するかそれぞれ異なるイベントレジスタを使用して知らされてもよい。前記イベント発生装置は、前記プロセッサによってアドレス可能な複数のイベント発生レジスタを有してもよい。各イベント発生レジスタは、それぞれ異なるイベントと関係付けられてもよい。前記異なるイベントは、例えば、前記イベント発生レジスタのアドレスを識別子として使用したり何か別な所定の一連の識別子を使用したりすることによって、格納されたマッピング関係の中で一意的に識別され得ることが好ましい。
【００１２】
従来の周辺機器のようにイベントが当該周辺機器における何らかの状態変化（例えば、何らかの動作の完了）を表すのとは違って、前記イベント発生装置からのイベントは、固有の意味を有さない代わりに、前記プロセッサ（または他の構成要素）が当該イベントを前記イベント発生レジスタに書き込むことによって意味が付与されることが理解されるであろう。
【００１３】
前記ＰＰＩは、イベント信号およびタスク信号を送信できる、イベントおよびタスクごとのそれぞれの回線、すなわち、各イベントまたはタスクごとに一つの回線、によって前記周辺機器および／または前記イベント発生装置に接続してもよい。前記イベント信号およびタスク信号は、パルスまたは符号化された値であってもよい。入力回線は、前記ＰＰＩ内部の一つ以上のマルチプレクサに、例えば、チャンネルごとに一つのマルチプレクサに、接続されてもよい。出力回線は、前記ＰＰＩ内部の一つ以上のデマルチプレクサから、例えば、チャンネルごとに一つのデマルチプレクサから、出されてもよい。前記ＰＰＩは、メモリに格納されたマッピング関係に従ってチャンネルのマルチプレクサおよびデマルチプレクサを設定したり制御したりするように構成してもよい。
【００１４】
いくつかの実施形態において、前記ＰＰＩは、例えば、メモリマップドＩ／Ｏ（ＭＭＩＯ）を使用するアドレスバスを介するなど、バスを介して、前記周辺機器および／または前記イベント発生装置のタスクレジスタか、前記イベントレジスタか、または両者にアクセスしてもよい。したがって、前記ＰＰＩは、関係付けられた前記イベントレジスタの内容変更を通じてイベント信号を受信してもよいし、および／または、関係付けられた前記タスクレジスタの内容を変更することによってタスク信号を送信してもよい。前記ＰＰＩは、前記プロセッサも接続されるバス（例えば、アドレスバス、データバス、および制御バスから成るシステムバス）に接続してもよい。同じバスで、前記周辺機器および／または前記イベント発生装置を前記プロセッサに接続してもよい。前記ＰＰＩは、例えば、定期的にポーリングするなど周期的に前記イベントレジスタを読み出したり、前記イベント発生周辺機器または前記イベント発生装置からの割り込みを受信したりして、イベントレジスタの内容変更を検出してもよい。前記ＰＰＩは、割り込みを受信すると、対応するイベントレジスタの内容を読み出してもよい。
【００１５】
イベントレジスタまたはタスクレジスタは、単一ビット（つまり、フラグまたはバイナリ信号を伝えるために）を含んでもよいし、例えば８、１６または３２ビットなど複数のビットを含んでもよい。
【００１６】
前記イベント発生装置は、イベント信号回線を介して前記プログラマブル周辺機器相互接続器（ＰＰＩ）にイベントを伝えてもよい。あるいは、レジスタに対する変更を通じて前記イベントを伝えてもよく、この場合に前記ＰＰＩは前記変更を検出するため、周期的に前記レジスタをポーリングするように構成されてもよい。このレジスタは、前記イベント発生レジスタそれ自体であってもよいし、前記イベント発生装置用の別個のイベントレジスタであってもよい。
【００１７】
いくつかの実施形態において、マッピング関係内のタスク識別情報は、国際公開ＷＯ２０１３／０８８１２１号に記載されているように、前記タスクと関係付けられた、タスクレジスタのアドレスである。しかしながら、これは必須ではなく、タスク受信側周辺機器のタスク識別情報は、例えば、（ｉ）周辺機器識別子と、（ｉｉ）（前記周辺機器に存在するか否か分からない）関係付けられたタスクレジスタのアドレスとは無関係な、タスク識別子または信号回線識別子と、を含んでもよい。
【００１８】
タスク受信側周辺機器は、前記プロセッサによってアドレス可能でタスクと関係付けられたタスクレジスタを備え、前記タスクレジスタの内容変更が発生すると当該タスクを実行するように構成されてもよい。したがって、第一周辺機器のイベントと第二周辺機器のタスクとの間のマッピング関係は、（ｉ）前記第一周辺機器の前記イベントの識別情報と、（ｉｉ）前記タスクと関係付けられたタスクレジスタのアドレスと、を含んでもよい。前記ＰＰＩは、第一周辺機器のイベントと第二周辺機器のタスクとの間のマッピング関係がメモリに格納されていれば、前記第一周辺機器から前記イベント信号を受信すると前記第二周辺機器にタスク信号を送信することによってチャンネルを形成するように構成されてもよい。
【００１９】
イベント発生側周辺機器は、前記プロセッサによってアドレス可能でイベントと関係付けられたイベントレジスタを備えてもよい。前記イベントレジスタは、前記周辺機器と関係付けられて集積回路上で直接隣接した論理回路に配置されてもよいが、これは必須ではなく、前記周辺機器の他の構成要素からある程度離れて据え付けられてもよい。これはタスクレジスタにもあてはまる。前記した両レジスタは、任意の適切なメモリ構造を備えていてもよい。前記周辺機器は、イベントを伝えるとき、例えば、イベントを伝えるときは常に前記イベントレジスタにバイナリ「１」を書き込むことによって、前記イベントレジスタの内容を変更してもよい。
【００２０】
いくつかの実施形態において、マッピング関係にある第一周辺機器のイベント識別情報は、前記イベントと関係付けられたイベントレジスタのアドレスである。このようにすれば、二つのレジスタアドレス、すなわち、イベントレジスタアドレスおよびタスクレジスタアドレスをメモリに格納するだけで、チャンネルを構成することができる。前記プロセッサで実行されるソフトウェアは、機能呼出しを介してこの格納処理を実行するかもしれないし、当該マッピング関係が格納されている前記メモリにアドレスを直接に書き込むかもしれない。必須ではないが、前記第一周辺機器の前記イベント識別情報は、存在するか否か分からない、関係付けられたイベントレジスタのアドレスとは無関係な、周辺機器識別子およびイベント、または信号回線識別子を含むことができる。
【００２１】
前記イベント発生装置は、前記プロセッサによってアドレス可能で前記イベント発生装置のイベントと関係付けられた少なくとも一つのイベントレジスタを備えることが好ましい。いくつかの実施形態において、前記イベント発生レジスタは、前記イベントレジスタである。他の実施形態において、前記イベントレジスタは、前記イベント発生レジスタとは別個である（すなわち、異なるアドレスを有する）。前記イベント発生装置は、前記イベント発生レジスタに対して所定の変更が行われると前記イベントレジスタに対して所定の変更をもたらすことができるように構成してもよい。いくつかの実施形態において、前記イベント発生レジスタは、前記イベント発生装置用のタスクレジスタであってもよい。前記イベント発生装置は、複数のイベント発生レジスタおよび複数のイベントレジスタを備えてもよい。各イベント発生レジスタは、前記イベント発生レジスタの一つに対して変更が行われると前記イベントレジスタのうち関係付けられた一つに対して変更をもたらすように、前記イベントレジスタのそれぞれと関係付けられてもよい。
【００２２】
前記イベント発生装置は、例えば、特定のイベントを伝える前に、おそらく所定の順番で、二つの異なるイベント発生レジスタ内の所定の変更を必要とするような、二つ以上のイベント発生レジスタを一つのイベントと関係付ける論理回路を含んでもよい。換言すれば、前記イベント発生装置は、二つ以上のイベント発生レジスタに関する基準が満たされると、またはその場合のみ、イベント信号を送信する論理回路を含んでもよい。このような論理回路は、固定（すなわち、配線接続）されてもよいし、プログラマブルであってもよい。
【００２３】
いくつかの実施形態において、前記イベント発生装置は、前記プログラマブル周辺機器相互接続器からタスク信号を（例えば、タスク回線を介して、または前記イベント発生レジスタの内容に対して変更を行うことによって）受信し、前記プログラマブル周辺機器相互接続器にイベントを伝えることによって対処することができる。こうすれば、より詳細を以下に説明するように、前記イベント発生装置が、イベントを伝えるときに割り込みも前記プロセッサに送信するように構成される場合に、有用であり得る。
【００２４】
前記イベント発生装置のイベントは、前記イベント発生周辺機器のイベントが識別されるのと同じように、例えば、関係付けられたイベントレジスタのアドレスによって、または前記イベントに特有の何か他の識別子によって、マッピング関係内で識別してもよい。
【００２５】
前記ＰＰＩは、一つ以上のマッピング関係を使用して周辺機器間の接続を規定するようにプログラムされるか構成されるという意味においてプログラマブルである。前記ＰＰＩは、ソフトウェア命令を実行するために自らの処理装置を備えてもよいが、必ずしもそうする必要はない。
【００２６】
前記マッピングメモリにあるマッピング関係は、任意の適切な書式で記載されてもよい。いくつかの実施形態において、イベントレジスタのアドレスおよびタスクレジスタのアドレス、またはこれらのレジスタへのポインタが、配列や表やデータベース内の関連項目として格納されてもよい。例えば、前記ＰＰＩは、各々が異なるチャンネルに対応する多くの行と、イベントレジスタを識別する第一列およびタスクレジスタを識別する第二列からなる二つの列を有する表を保持してもよい。このような配列や表は論理的構築物であってもよく、メモリ内のデータの何らかの特定の物理的な位置に必ずしも限定される必要はないことが理解されるであろう。前記ＰＰＩは、タスクレジスタのアドレスを格納するための第一レジスタ群およびイベントレジスタのアドレスを格納するための第二レジスタ群を備えてもよい。各群には等しい数のレジスタが存在してもよい。第一レジスタ群のレジスタは、第二レジスタ群の対応するレジスタによって管理されるデマルチプレクサに接続されるマルチプレクサを管理することによって、チャンネルを規定してもよい。
【００２７】
前記メモリは、例えば、シリコンチップの別個の領域または異なるチップ上にあるなど、前記ＰＰＩから独立していてもよいが、アクセス時間を短縮できる、前記ＰＰＩと一体化された構成要素であることが好ましい。前記メモリは、揮発性（例えば、ＲＡＭ）であっても、不揮発性（例えば、  ＥＥＰＲＯＭまたはフラッシュ）であってもよい。前記マッピング関係は、前記プロセッサによってアドレス可能なことが好ましい一つ以上のレジスタに格納されることが好ましい。前記ＰＰＩによって形成される各チャンネルは、相互に関係付けられた一つのイベントエンドポイントレジスタおよび一つのタスクエンドポイントレジスタを有してもよく、これらは、それぞれ、イベントレジスタのアドレスおよびタスクレジスタのアドレスを格納するのに適切である。一部の前記チャンネルは、これらのレジスタを使用して他のタイプのイベント識別子および／またはタスク識別子を格納してもよい。
【００２８】
一つ以上の前記マッピング関係が、前記ＰＰＩによって、前記プロセッサによって、またはこれらの両方によって前記メモリに書き込まれてもよい。前記プロセッサは、前記ＰＰＩに適切な前記マッピング関係を格納するよう命令することによって、周辺機器間のチャンネルを間接的に確立してもよい。
【００２９】
前記ＰＰＩは、一つ以上の検索表を含むかアクセスできることが好ましく、この検索表を用いてマッピング関係からレジスタアドレスを検索して、このレジスタアドレスに対応する特定のイベント回線かタスク回線（またはイベントポートかタスクポート）を決定することができる。次に、前記ＰＰＩは、（例えば、マルチプレクサまたはデマルチプレクサを適宜管理することによって）チャンネルの入力または出力として当該の回線またはポートを選択してもよい。前記検索表は、任意の適切な書式であればよく、必ずしもメモリ内の物理的な表として実装する必要はない。
【００３０】
前記ＰＰＩは、例えば、１、８、１６、３２またはそれ以上の任意の数のチャンネルをサポートしてもよい。チャンネルは、前記ＰＰＩへのイベント入力ポート（回線）と前記ＰＰＩからのタスク出力ポート（回線）との間の何らかの物理的な（例えば、電気的な）接続または論理的な接続であってもよい。チャンネルは、（例えば、複数の論理ゲートを用いてチャンネル経路に沿って枝分かれやフォーク状分岐を規定するなど）一つ以上の入力と一つ以上の出力につなげることができる。
【００３１】
前記ＰＰＩは、チャンネルを有効および／または無効にできる機構を備えることが好ましい。前記ＰＰＩは、一つのビットが各チャンネルと関係付けられるビットフィールドレジスタを備え、前記ビットフィールドレジスタ内の関係付けられたビットが所定の値（例えば、バイナリ１）に設定された場合にチャンネルを有効にするように構成されてもよい。
【００３２】
イベント発生周辺機器は、二つ以上のイベントレジスタを有してもよい。同様に、タスク受信側周辺機器は、二つ以上のタスクレジスタを有してもよい。
【００３３】
既に説明したように、前記ＰＰＩは、おそらく別々のタスク受信側周辺機器に、二つ以上のタスク信号を送信することによって一つのイベント信号に対処するように構成可能である。いくつかの実施形態では、これを、各々が（例えば、イベントレジスタアドレスによって特定される）イベントを（例えば、それぞれのタスクレジスタアドレスによって特定される）それぞれ別のタスクにマッピングする、複数のマッピング関係を前記マッピングメモリに格納することによって達成してもよい。他の実施形態では、これを、一つのイベントを二つ以上のタスクに直接にマッピングする単一のマッピング関係を格納することによって、例えば、一つの列が前記イベント用であり二つ以上の別の列がそれぞれのタスク用である三つ以上の列を含む表を前記マッピングメモリに格納することによって、達成してもよい。
【００３４】
前記イベント発生装置は、前記ＰＰＩへの一つ以上のイベント回線、前記プロセッサへのゼロ個以上の割り込み回線、およびゼロ個以上のレジスタ以外の出力は全く有さないことが好ましい。当該装置は、クロック入力、一つ以上のレジスタ、およびゼロ個以上のタスク回線以外の入力は全く有さないことが好ましい。当該装置は、通常、従来の周辺機器よりも遥かに単純である。当該装置は、構成要素の数またはゲートの数という観点で、前記マイクロコントローラにある任意の他の周辺機器よりも小さいことが好ましい。当該装置は、（タイマ周辺機器とは異なり）タイミング機構は全く有しないことが好ましい。当該装置は、（例えば、任意のデータを受信し送信するための、他の構成要素やデバイスへの接続を有する、シリアルインターフェースやデジタルアナログ変換器とは異なり）ゼロ個以上のイベントレジスタ、タスクレジスタ、および構成レジスタ以外のデータ入力機構は全く有しないことが好ましい。
【００３５】
前記イベント発生装置は、イベントを伝えるときに割り込みを前記プロセッサに送信するための回路を備えてもよい。前記割り込みは、マスク可能割り込みであってもマスク不可能割り込みであってもよい。当該割り込みは、特定のイベントを伝えるときに前記プロセッサへの割り込みの送信を有効および／または無効にするための入力を有してもよい。前記イベント発生装置は、前記イベント発生レジスタの内容に対する変更を検出すると割り込みを前記プロセッサに送信するよう前記イベント発生装置を構成するための一つ以上の構成レジスタを備えてもよい。当該装置は、マスク可能割り込みおよびマスク不可能割り込みをそれぞれ構成するための別個の構成レジスタを備えてもよい。
【００３６】
割り込みを前記プロセッサに送信する能力は、前記イベント発生装置が前記プログラマブル周辺機器相互接続器からタスク信号を受信するための入力端子を備えるときに特に有用である。この結果、周辺機器にイベントが発生すると前記イベント発生装置が割り込みを前記プロセッサに送信することができるように、前記プログラマブル周辺機器相互接続器をプログラムすることができる。これは、前記周辺機器が割り込み自体を送信できない場合、または前記周辺機器には限られた数の割り込み（例えば、一つの割り込み）しか割り当てられなかった場合、つまり、前記周辺機器からのすべての割り込みは限られた数の割り込みサービスルーティン（例えば、一つの割り込みサービスルーティン）で処理する必要がある場合に、有用であり得る。前記周辺機器は、自分の代わりに前記ＰＰＩおよび前記イベント発生装置を用いて割り込みを前記プロセッサに送信することによって、前記プロセッサに送信することが可能な（例えば、異なる割り込み番号をもつ）異なる割り込みの数を効果的に増やすことができる。こうすれば、割り込みサービスルーティンのプログラミングを簡単にすることができる。また、異なる優先レベルでの割り込みをサポートするプロセッサに対して、前記イベント発生装置を使用することなく前記周辺機器が利用可能であった割り込みレベルの数よりも多い複数の異なる割り込みレベルで周辺機器が当該プロセッサへの割り込みを行うことを可能にすることもできる。
【００３７】
例えば、ある周辺機器が、１００マイクロ秒ごとに発生する「ＮＥＷＶＡＬＵＥ」と呼ばれる一つのイベントおよび何か誤りがあるときのみに伝える「ＥＲＲＯＲ」と呼ばれる別のイベントを有しているとする。しかしながら、当該周辺機器は、一本しか前記プロセッサへの割り込み回線を有さないので、「ＥＲＲＯＲ」イベントが発生してもより高い優先順位で割り込むことはできない。しかしながら、当該周辺機器からの「ＥＲＲＯＲ」イベントの信号によって前記ＰＰＩが前記イベント発生装置のタスク回線を有効にするように当該周辺機器と前記イベント発生装置との間のＰＰＩチャンネルを構成し、そのタスク回線を介して信号を受信すると高優先順位の割り込みを前記プロセッサに送信するように前記イベント発生装置を設定することによって、当該周辺機器には、「ＥＲＲＯＲ」割り込みを高優先順位で前記プロセッサに送信する能力を付与することができる。こうすれば、前記プロセッサは、前記「ＥＲＲＯＲ」イベントに迅速に対処することができる。
【００３８】
いくつかの実施形態において、前記マイクロコントローラは、各々が割り込み回線群によって前記プロセッサに接続された複数のイベント発生装置を備え、各割り込み回線群がそれぞれ異なる割り込み優先レベルを有していてもよい。あるいは、一つのイベント発生装置は、第一優先レベルで割り込みを送信するのに使用できる一つ以上のタスク（またはイベント）と、第二優先レベルで割り込みを送信するのに使用できる一つ以上の他のタスク（またはイベント）と、を有してもよい。前記タスク（またはイベント）と前記割り込み優先レベルとの間の関連性は、固定してもよいし、（例えば、前記イベント発生装置の一つ以上のレジスタ値に従って）設定可能であってもよい。
【００３９】
前記プログラマブル周辺機器相互接続器に接続された装置を使用してプロセッサ割り込みを発生するこの着想は、それ自体の権利として新規的かつ進歩的であり、したがって、別の態様からみると、本発明は、
プロセッサと、
複数の周辺機器と、
プログラマブル周辺機器相互接続器と、
割り込み発生装置と、を備えたマイクロコントローラを提供するものであって、  
前記周辺機器のうちのイベント発生周辺機器は、前記プログラマブル周辺機器相互接続器にイベントを伝えるように構成され、
前記割り込み発生装置は、前記プログラマブル周辺機器相互接続器からタスク信号を受信すると、前記プロセッサに割り込みを送信するように設定され、
前記プログラマブル周辺機器相互接続器は、（ｉ）第一周辺機器のイベントと（ｉｉ）前記割り込み発生装置すなわち第二周辺機器のタスクとの間のマッピング関係を格納できるメモリにアクセスするように構成され、
前記プログラマブル周辺機器相互接続器は、第一周辺機器のイベントと前記割り込み発生装置のタスクとの間のマッピング関係がメモリに格納されていると、前記タスク宛のタスク信号を前記割り込み発生装置に送信することによって前記第一周辺機器からの前記イベントの信号に対処するように構成される。
【００４０】
先行する態様および実施形態のいずれかの任意の特徴は、この態様の特徴であってもよい。特に、前記割り込み発生装置は、イベント発生装置であってもよい。したがって、イベント発生レジスタの内容に対する所定の変更を検出するように設定され、当該の所定の変更を検出すると、前記プログラマブル周辺機器相互接続器にイベントを伝えてもよい。これは、前述したようなイベント発生装置であってもよい。前記割り込み発生装置は、本明細書に記載された前記イベント発生装置の特徴のいずれかを有してもよい。前記プログラマブル周辺機器相互接続器（ＰＰＩ）は、前述した前記ＰＰＩの特徴のいずれかを有してもよい。
【００４１】
前記割り込み発生装置は、タスク回線によって前記プログラマブル周辺機器相互接続器に接続され、前記タスク回線を介して前記タスク信号を送信してもよい。その代わりに、
前記割り込み発生装置は、前記プログラマブル周辺機器相互接続器によって監視されるタスクレジスタに書き込んでもよい。
【００４２】
前記イベント発生周辺機器は、イベント回線を介して前記プログラマブル周辺機器相互接続器にイベントを伝えるように構成してもよい。その代わりに、前記イベント発生周辺機器は、前記プログラマブル周辺機器相互接続器によって監視されるイベントレジスタに書き込んでもよい。
【００４３】
前記割り込み発生装置は、タスク信号を受信するとすぐに、できれば前記タスク信号を受信してから所定の最大時間内か、タスク信号の受信後に一定時間遅延してから前記割り込みを送信するように設定されることが好ましい。
【００４４】
前記マイクロコントローラは、前記プロセッサによって実行可能であって、前記イベント発生周辺機器のイベントから前記割り込み発生装置のタスクへのマッピング関係を前記マッピングメモリに格納する命令を含むソフトウェアを格納するメモリを備えてもよい。
【００４５】
前記した態様のいずれかにおいて、前記イベント発生レジスタ（単数または複数）は前記イベント発生装置の一部であるが、前記マイクロコントローラでの物理的な位置を限定するものではないことが理解されるであろう。前記イベント発生レジスタは、例えば、バスを介して前記プロセッサからアドレス可能であることが好ましい。当該レジスタは、前記プロセッサによって書き込んだり読み出したりできることが好ましい。各イベント発生レジスタは、メモリの連続領域を占有してもよいし、複数の位置にわたって分散してもよい。本明細書で参照するレジスタは、（おそらく、より大きなビットフィールド内の）単一ビット長のみであってもよいし、複数のビット（例えば、３２ビットワード）を含んでもよい。
【００４６】
前記マイクロコントローラは、ＲＡＭおよび／またはフラッシュメモリなどの、揮発性および／または不揮発性メモリから成ることが好ましい。前記メモリの一部は、プログラムコードを格納してもよい。
【００４７】
前記プロセッサは、任意の適切なプロセッサであればよい。いくつかの実施形態においては、  ＡＲＭ（登録商標）のＣｏｒｔｅｘ（登録商標）シリーズのプロセッサなど、ＡＲＭ（登録商標）からのプロセッサである。前記マイクロコントローラは、プロセッサバスおよび周辺機器用バスなど、複数のバスを備えてもよい。前記イベント発生装置は、一つ以上のバスに接続されることが好ましい。
【００４８】
前記マイクロコントローラは、動作するためには、当然ながら、例えば水晶発振機、コンデンサなど、いくつかのオフチップ構成要素を必要としてもよいが、集積デバイスであることが好ましい。これらの構成要素は、前記マイクロコントローラの一部とみなすこともできるし、前記マイクロコントローラと区別できるものとみなすこともできる。
【００４９】
前記割り込み発生装置や前記イベント発生装置は、前記マイクロコントローラ内で、前記プロセッサと区別できる、別個のハードウェアモジュールであることが好ましい。前記割り込み発生装置や前記イベント発生装置は、本明細書に記載された機能を提供するように設定され、トランジスタ、抵抗、コンデンサなどを含むアナログおよび／またはデジタル構成要素を備えてもよい。前記マイクロコントローラは、当然ながら、タスク回線やイベント回線によって前記プログラマブル周辺機器相互接続器に接続されない他の周辺機器を有してもよい。
【００５０】
いくつかの実施形態において、前記マイクロコントローラは、無線送受信機を備える。これは、ラジオオンチップデバイスであってもよい。
【００５１】
ここで、ほんの一例として、以下の添付図面を参照しながら、本発明の特定の好ましい実施形態を記載することにする。
【図面の簡単な説明】
【００５２】
【図１】本発明を具現化する最初のシステムの構成要素を示す概略図である。
【図２】周辺機器レジスタ同士のマッピング関係を格納するメモリ構造を示す表である。
【図３】本発明を具現化する二番目のシステムでＰＰＩに接続された数個の周辺機器の概略図である。
【図４】ＰＰＩ内部の特定のチャンネルに関する構成要素の概略図である。
【図５】イベント発生装置を示す概略図である。
【発明を実施するための形態】
【００５３】
図１は、中央処理装置（ＣＰＵ）６と、メインメモリ８と、論理エリア１２および内部メモリ１４を有するＰＰＩ１０と、を備えるマイクロコントローラ（ＭＣＵ）２（例えば、集積回路またはマルチチップモジュール）を示す。ＣＰＵ６とＰＰＩ１０とは、共にバス１６に接続される。
【００５４】
バス１６にはイベント発生装置１７および五つの典型的な周辺機器、すなわち、タイマ１８、デジタルアナログ変換器（ＤＡＣ）２０、ＵＡＲＴ２２、ハードウェア暗号エンジン２４、電圧比較器２６も接続される。
【００５５】
タイマ１８は、出力イベントレジスタ２８と、オーバーフローイベントレジスタ３０と、入力タスクレジスタ３２と、を有する。ＤＡＣ２０は、二つの変換終了イベントレジスタ３６、３８および二つのトリガタスクレジスタ４０、４２を有する。ＵＡＲＴ２２は、ＲＸ受信イベントレジスタ４４と、ＴＸ完了イベントレジスタ４６と、ＲＸトリガタスクレジスタ４８と、ＴＸトリガタスクレジスタ５０と、を有する。ハードウェア暗号化エンジン２４は、暗号化完了イベントレジスタ５２およびトリガタスクレジスタ５４を有し、電圧比較器２６は、単一コンパレータ出力イベントレジスタ５６を有する。一部のレジスタは単一ビットレジスタであり、それ以外のレジスタはマルチビット値を保持することができる。当然ながら、他の実施形態は異なる周辺機器を有し、これらの周辺機器は、任意の数のイベントレジスタまたはタスクレジスタを有してもよい。
【００５６】
イベント発生装置１７は、第一イベントレジスタ５７と、第二イベントレジスタ５９と、第一タスクレジスタ６１と、第二タスクレジスタ６３と、を有する。当然ながら、他の実施形態は、異なる数のイベントレジスタまたはタスクレジスタを有してもよい。この実施形態では、イベント発生装置１７は、第一タスクが第一イベントをトリガし、第二タスクが第二イベントをトリガするように設定される。他の実施形態では、タスクをイベントにマッピングする、より複雑な論理回路が存在してもよい。
【００５７】
周辺機器１８〜２６およびイベント発生装置１７のレジスタは、メインメモリ８およびＰＰＩメモリ１４からなるメモリアドレス空間を共有し、メモリマップドＩ／Ｏを使用してＰＰＩ論理回路１２、および選択的にＣＰＵ６、からこれらのメモリをアクセスすることができる。
【００５８】
バス１６は、図示したように単一バスであってもよいし、二つ以上の別個のバスで形成してもよい。
【００５９】
使用中に、ＣＰＵ６は、例えば、ＤＡＣ変換が完了した後にＵＡＲＴ２２がデータを伝送するように、ＤＡＣ２０変換終了イベントの一つをＵＡＲＴ２２トリガタスクにつなぐチャンネルを生成するようにＰＰＩ１０に命令してもよい。ＰＰＩ１０は、この命令を受信すると、メモリ１４に保持された表に新たなエントリを作成して、ＤＡＣ２０変換終了レジスタ３６のアドレスとＵＡＲＴ２２トリガタスクレジスタ４８のアドレスとを結び付ける。
【００６０】
ＣＰＵ６は、例えば、イベント発生装置１７の第一イベントレジスタ５７をＵＡＲＴ２２のＴＸトリガタスクレジスタ５０につなげるチャンネル、およびイベント発生装置１７の同じ第一イベントレジスタ５７をタイマ１８の入力タスクレジスタ３２につなげる別のチャンネルを生成するようＰＰＩ１０に命令することもあり得る。こうすれば、ＣＰＵ６は、イベント発生装置１７の第一タスクレジスタ６１に「１」のビットを書き込むことによって、ＵＡＲＴ２２が伝送を開始するのと同時にタイマ１８をスタートさせることができる。この処理は、アトミックである、すなわち、ＣＰＵ６割り込みによって割り込まれない。
【００６１】
図２は、ＰＰＩのメモリ１４に格納され得る典型的な論理データ構造を示す。これは多くの行を有し、各々が、マッピング番号と、イベントレジスタアドレスと、タスクレジスタアドレスと、を含む。
【００６２】
ＰＰＩ論理回路１２は、表にリストされたあらゆるイベントレジスタを周期的にポーリングして、レジスタにおける値が変化したときを決定するように構成される。変化を検出すると、ＰＰＩ論理回路１２は、表内で特定のイベントレジスタにマッピングされたすべてのタスクレジスタにその新たな値（またはバイナリ「１」など所定の値）を書き込む。
【００６３】
ＰＰＩ論理１２回路は、選択的に、イベントレジスタ内の新たな値について何らかの処理を行い、その値ではなく、前記処理の結果を一つ以上のタスクレジスタに書き込むように構成してもよい。例えば、イベントレジスタがマルチビット値を含む場合、ＰＰＩ論理回路１２は、以前の値よりも大きいかどうかを判定し、メモリ１４内のマッピング関係に従って、一つのビットを単一ビットタスクレジスタに書き込むこともあり得る。ＰＰＩ１０は、（もしあれば）どの処理をＣＰＵ６に実行させるかについて命令されることもある。処理のタイプは、別の列としてマッピング表内に格納してもよい。
【００６４】
ＣＰＵ６は、チャンネルを無効化したい場合、ＰＰＩのメモリ１４に格納された表内の関連するエントリを消去させることによって直接的にこれを実施できる。（当然ながら、状況次第では命令してもよいが）周辺機器に直接に命令する必要はない。
【００６５】
図３〜図５は、ＰＰＩ１０が、イベント信号およびタスク信号ごとにそれぞれ個別の回線によって周辺機器１８〜２６およびイベント発生装置１７に接続された一連の実施形態に関する。これは、前述のようなメモリマップド入出力を使用する代わりの手段として行ってもよいし、ＭＣＵ２が両方の通信モードをサポートする（例えば、ＣＰＵ６がレジスタを介して周辺機器と情報を交換できて、ＰＰＩ１０が専用線を介して周辺機器と情報を交換できるようにする）ことも考えられる。
【００６６】
図３は、（上述と同じＰＰＩ１０であっても異なるＰＰＩであってもよい）ＰＰＩに接続されたｍ個の周辺機器を示している。イベント発生装置１７は、これらの目的のための別の周辺機器とみなすことができる。ＰＰＩは、相互に関係付けられたイベントエンドポイントレジスタ（ＥＥＰ）およびタスクエンドポイントレジスタ（ＴＥＰ）を各々が有するｎ個のチャンネルを提供する。これらのレジスタは、各々、周辺機器の一つにあるレジスタのアドレスを保持することができる。
【００６７】
図４は、これらのｎ個のチャンネルの一つと関係付けられた構成要素のより詳細を提供する。チャンネルの各々は、同様の構成要素群を有する。チャンネルのＥＥＰは、周辺機器イベントレジスタアドレス群と、当該チャンネルと関係付けられてＰＰＩ内のマルチプレクサ（ＭＵＸ）への複数の入力の一つに関連する内部イベント回線識別子と、を相互参照するイベント信号検索表に結び付けられる。ＰＰＩは、ＥＥＰに含有されるアドレスと関係付けられた入力を選択するようＭＵＸを設定するように構成される。
【００６８】
同様に、チャンネルのＴＥＰは、周辺機器タスクレジスタアドレス群と、当該チャンネルと関係付けられてＰＰＩ内のデマルチプレクサ（ＤＥＭＵＸ）からの複数の出力の一つに関連する内部タスク回線識別子と、を相互参照するタスク信号検索表に結び付けられる。ＰＰＩは、ＴＥＰに含有されるアドレスと関係付けられた出力を選択するようＤＥＭＵＸを設定するように構成される。
【００６９】
二つの周辺機器Ａ、Ｂが、チャンネルのＭＵＸに接続される。これらのうちの一つは、イベント発生装置であってもよい。周辺機器Ａは、各々がＭＵＸへの独自の回線を有する二つのイベント信号ＡＥ０、ＡＥ１を提供することが可能である。周辺機器Ｂは、これもＭＵＸへの回線を有する単一イベント信号ＢＥ０を提供することが可能である。同様の回線が、他のｎ−１個のチャンネル（図示せず）のマルチプレクサに接続されることになる。
【００７０】
チャンネルのＤＥＭＵＸは三本の出力回線に接続されて、一本は周辺機器Ａのタスク入力ＡＴ０につながり、二本は周辺機器Ｂの異なるタスク入力ＢＴ０、ＢＴ１につながる。
【００７１】
ＰＰＩ内では、ＭＵＸからの出力は、スイッチを介してＤＥＭＵＸへの入力に接続される。スイッチが閉じられると当該接続が形成され、ＭＵＸによって選択された周辺機器の一つからのイベント信号（例えば、パルス）がＤＥＭＵＸに、そしてそこから周辺機器の一つに属する、選択されたタスク入力に渡される。スイッチの状態は、ＣＰＵ（図示せず）によって書き込み可能なレジスタによって制御される。
【００７２】
いくつかの代替的な設定では、一つのチャンネルは、各々が当該チャンネルのＭＵＸからの出力に接続された複数のデマルチプレクサを有してもよい。こうすれば、単一イベントが複数の周辺機器タスクをトリガするようにフォーク状に設定することができる。
【００７３】
ＰＰＩは、チャンネルから入力イベントを受信してから所定の最大時間内に複数のタスク信号を出すように設定される。いくつかの実施形態において、この時間遅延は、すべてのチャンネルに対して一定である。異なるチャンネルやフォーク状に分かれたチャンネルの信号は、並行して処理される。
【００７４】
図５は、イベント発生装置１７の内部を具象的に図示したものである。
【００７５】
特定のタスクｎについて、イベント発生装置１７は、タスクｎをトリガするためにタスク信号を送信できる入力タスク回線６４によってＰＰＩ１０に接続される。イベント発生装置１７は、ＣＰＵ６で実行されるファームウェアがバイナリ「１」をタスクレジスタ６６に書き込む場合、タスクをトリガするために信号を送信する、タスクｎと関係付けられたタスクレジスタ６６も有する。タスクレジスタ６６の内容は、ＰＰＩがタスク回線６４を介してタスク信号を送信するとイベント発生装置１７によって自動的に更新されてもよい。ＰＰＩからのタスク回線６４とタスクレジスタ６６の状態を示す出力とは、論理ＯＲゲート６８で組み合わされて、イベント発生装置１７のコア７０に送信される。
【００７６】
簡単な実施形態では、コア７０は、一対一のマッピングで各タスクｎをそれぞれのイベントｎに単純に接続する。より複雑な実施形態では、コア７０は、例えば、「イベント１」を伝える前に「タスク１」と「タスク２」との両方をこの順番でトリガすることを要求するように、一つ以上のタスクを一つ以上のイベントと関係付ける論理回路を備えてもよい。
【００７７】
コア７０は、イベントｍについてのイベント信号を出力することができる。これによって、関係付けられたイベントレジスタ７２の内容が、（例えば、単一ビットレジスタの内容をバイナリ「０」からバイナリ「１」に変えることによって）イベントが伝えられたことを示すように変えられる。また、同じイベント信号は、分割されて、イベント出力回線７４を介してＰＰＩ１０に送信される。
【００７８】
イベントレジスタ７２へのこの変更によって、信号が割り込み信号回線７６を介してＣＰＵ６の割り込みコントローラに送られるように構成することもできる。この割り込み信号が送信されるか否かは、ＣＰＵ６によって書き込むことができる、割り込み有効化レジスタ７８の状態に依存する。イベントｎに対応するビット位置にバイナリ「１」が書き込まれた場合、スイッチ８０が閉じられ、割り込み信号が送信されることになる。
【００７９】
ＣＰＵ６は、イベント発生装置１７を、ＰＰＩ１０と組み合わせながら、多くの異なる形で使用することができる。
【００８０】
例えば、ＣＰＵ６は、イベント発生装置１７からイベントｎに対する信号を受信すると二つ以上の周辺機器タスクをトリガするようにＰＰＩ１０を構成してもよい。すると、ＣＰＵ６は、イベント発生装置１７のタスクレジスタ６６に「１」のビットを書き込むことによって、イベント発生装置１７に、ｎ番目のイベント信号回線７４を介してＰＰＩ１０にイベント信号を送信させることができる。その結果、ＰＰＩ１０は、すべてのタスクを同時にかつアトミックにトリガすることになる。
【００８１】
別の例では、ＣＰＵ６は、ｍ番目の割り込み信号回線７６を有効にして、周辺機器のイベントからイベント発生装置１７に至るｍ番目の入力タスク回線へのチャンネルを確立する、ＰＰＩ１０用のマッピング関係を作成してもよい。すると、周辺機器は、当該周辺機器をＰＰＩ１０に接続する適切なイベント回線を介して当該イベントをＰＰＩ１０に伝えることによって、割り込みをＣＰＵ６に送信することができる。こうすれば、当該周辺機器は、ＣＰＵ６への独自の割り込み回線に割り当てられた優先順位とは異なる優先順位でＣＰＵ６に割り込むことができる。
【００８２】
一つ以上の特定の実施形態を記載することによって本発明を説明してきたが、これらの実施形態に限定されるものではなく、添付する特許請求の範囲の範囲内において、多数の変形および変更が可能であることが当業者であれば理解されるであろう。
【図１】
0006803859.tif 000002
【図２】
0006803859.tif 000003
【図３】
0006803859.tif 000004
【図４】
0006803859.tif 000005
【図５】
0006803859.tif 000006