"通信媒体上で通信を行うデバイスであって、該デバイスは、前記通信媒体上でメッセージの受信及び送信を行う媒体接続装置MAUと、受信されたメッセージに格納されたデータの処理と、送信されるメッセージに格納されるデータの生成とを行う中央処理装置CPUと、前記MAUと前記CPUとを接続する通信コントローラであって、データキューと、受信メッセージオブジェクトのキューとを含み、前記データキューが、前記通信媒体上で受信された複数のメッセージを格納し、前記受信メッセージオブジェクトがそれぞれ、前記データキューにおける、対応するメッセージに関する情報を格納している、通信コントローラとを備えていることを特徴とするデバイス。請求項1に記載のデバイスであって、前記データキューは、書込ポインタと読込ポインタとを含み、前記書込ポインタは、前記通信媒体から受信された新たなメッセージを格納するための前記データキューにおける記憶位置に対応し、前記読込ポインタは、前記CPUが前記データキューからメッセージを読み込むための前記データキューにおける記憶位置に対応していることを特徴とするデバイス。請求項2に記載のデバイスであって、前記書込ポインタ及び前記読込ポインタは、先入れ先出しFIFOキューとして前記データキューを実行することを特徴とするデバイス。請求項2に記載のデバイスであって、各受信メッセージオブジェクトは、前記CPUにおけるソフトウェアによって読込可能なオーバーフロー属性であって、前記通信媒体からメッセージを受信中に、前記データキューにオーバーフローが発生したか否かを示すオーバーフロー属性と、前記CPUにおけるソフトウェアによって読込可能なアンダーフロー属性であって、データの不足によって前記データキューからの読込が失敗したか否かを示すアンダーフロー属性と、前記CPUにおけるソフトウェアによって読込可能なデータ準備完了属性であって、前記データキューがほぼ満杯であることを示すデータ準備完了属性と、前記データキューからの位置情報を格納する終了位置属性と、前記受信メッセージオブジェクトの選択及び有効化を行う有効フラグとを含んでいることを特徴とするデバイス。請求項4に記載のデバイスであって、メッセージが前記通信媒体上で受信されると、前記書込ポインタの値が、対応する受信メッセージオブジェクトにおける終了位置属性に継続的に転送されることを特徴とするデバイス。請求項4に記載のデバイスであって、前記アンダーフロー属性は、前記読込ポインタが前記終了位置属性と同一の値を有しているときに、受信メッセージオブジェクトに設定されることを特徴とするデバイス。請求項4に記載のデバイスであって、前記データキューは、該データキューが予め決められた閾値となっている深さよりも大きい深さに達すると、前記データ準備完了の信号を設定することを特徴とするデバイス。請求項1に記載のデバイスであって、前記データキューは、リングバッファに格納されていることを特徴とするデバイス。通信媒体上で受信したメッセージを処理する通信コントローラであって、該通信コントローラは、前記通信媒体から受信されたメッセージを格納する受信データメモリであって、前記メッセージが、書込ポインタ位置の前記受信データメモリに書き込まれ、読込ポインタ位置の前記受信データメモリから読み込まれる、受信データメモリと、該受信データメモリに格納されたメッセージに関連する情報を格納する複数の受信メッセージオブジェクトであって、各受信メッセージオブジェクトが前記受信データメモリに格納されたメッセージに対応している、複数の受信メッセージオブジェクトとを備えていることを特徴とする通信コントローラ。請求項9に記載の通信コントローラであって、さらに、前記受信データメモリにおける有効なメッセージを該有効なメッセージに対応する受信メッセージオブジェクトに関連付けるメッセージキューマネージャを備えていることを特徴とする通信コントローラ。請求項10に記載の通信コントローラであって、前記有効なメッセージが前記通信媒体から受信されると、前記書込ポインタの値が、対応する受信メッセージオブジェクトにおける終了位置の値に継続的に転送されることを特徴とする通信コントローラ。請求項11に記載の通信コントローラであって、前記受信データメモリは、前記読込ポインタが前記有効な受信メッセージオブジェクトにおける前記終了位置の値と同一の値を有するときに、前記有効なメッセージに対応する前記受信メッセージオブジェクトにアンダーフロー属性を設定することを特徴とする通信コントローラ。請求項9に記載の通信コントローラであって、前記受信データメモリは、該受信データメモリが容量限度に近づいたときに、全ての受信メッセージオブジェクトにデータ準備完了属性を設定することを特徴とする通信コントローラ。請求項9に記載の通信コントローラであって、前記書込ポインタ及び前記読込ポインタは、読込処理中及び書込処理中に記憶位置を変更し、先入れ先出しFIFOキューとして前記データキューを実行することを特徴とする通信コントローラ。プロセス制御ネットワーク上のデバイスによって受信されたメッセージを処理する方法であって、該方法は、前記プロセス制御ネットワークからメッセージを受信することと、前記メッセージに関連する情報を格納する受信メッセージオブジェクトを更新することと、データキューを格納する受信データメモリに前記メッセージを書き込むこととを含んでいることを特徴とする方法。請求項15に記載の方法であって、前記メッセージを書き込むことは、受信メッセージオブジェクトキューにおける第1の取得可能な受信メッセージオブジェクトに有効フラグを設定することと、前記受信データメモリにおける書込ポインタ位置を判定することと、前記書込ポインタ位置で始まる前記受信データメモリに前記メッセージを書き込むことと、前記メッセージが前記受信データメモリに書き込まれるまで前記書込ポインタ位置をインクリメントすることとを含んでいることを特徴とする方法。請求項16に記載の方法であって、さらに、前記受信データメモリがほぼ満杯の場合に、前記受信メッセージオブジェクトにデータ準備完了属性を設定することを含んでいることを特徴とする方法。請求項16に記載の方法であって、さらに、前記プロセス制御ネットワークからメッセージを受信中に、前記受信データメモリが満杯になると、オーバーフロー属性を前記受信メッセージオブジェクトに設定することを含んでいることを特徴とする方法。請求項16に記載の方法であって、さらに、前記メッセージが前記プロセス制御ネットワークから受信されると、前記書込ポインタの値を前記受信メッセージオブジェクトにおける終了位置属性に転送することを含んでいることを特徴とする方法。請求項15に記載の方法であって、受信メッセージオブジェクトを更新することは、メッセージ割込要求IRQsと、メッセージエラーと、メッセージ状態と、受信データメモリ情報とを含む前記受信メッセージオブジェクトに保持された複数の属性を更新することを含んでいることを特徴とする方法。請求項15に記載の方法であって、さらに、前記メッセージを先入れ先出しFIFOの順序で中央処理装置CPUに供給することを含んでいることを特徴とする方法。請求項21に記載の方法であって、前記メッセージをCPUに供給することは、受信メッセージオブジェクトキューの前部に受信メッセージオブジェクトの有効フラグを設定することと、前記受信データメモリおける読込ポインタ位置を判定することと、前記読込ポインタで始まる前記メッセージを前記CPUに転送することと、前記メッセージが前記CPUに転送されるまで前記読込ポインタ位置をインクリメントすることと、前記受信メッセージオブジェクトキューから前記受信メッセージオブジェクトを削除することとを含んでいることを特徴とする方法。請求項22に記載の方法であって、さらに、前記読込ポインタが前記受信メッセージオブジェクトにおける終了位置属性と同一の値を有しているときに、前記受信メッセージオブジェクトにアンダーフロー属性を設定することを含んでいることを特徴とする方法。フィールドバスは、膨大な量のプロセスデータをディジタル通信するという有用な能力を発揮する。したがって、フィールドバス通信の効果を最大限にすることが可能なプロセス制御デバイスの開発を継続する必要がある。発明の概要本発明は、ネットワーク上のデバイスに用いられる通信コントローラであって、通信媒体上で受信したメッセージを処理する。通信コントローラは、データキューと、受信メッセージオブジェクトのキューとを含んでいる。データキューは、通信媒体上で受信した複数のメッセージを格納する。受信メッセージは、好ましくは、受信データメモリの書込ポインタ位置に書き込まれ、受信データメモリの読込ポインタ位置から読み込まれる。また、通信コントローラは、複数の受信メッセージオブジェクトを含んでいる。各受信メッセージオブジェクトは、データキューにおける、対応するメッセージに関する情報を格納している。各受信メッセージオブジェクトは、好ましくは、オーバーフローと、アンダーフローと、データ準備完了と、終了位置と、有効フラグとを含む複数の属性を格納している。オーバーフロー属性は、通信媒体からメッセージを受信中に、データキューにオーバーフローが発生したか否かを示す。アンダーフロー属性は、データの不足によって、データキューからの読込に失敗したか否かを示す。データ準備完了属性は、デバイスに保存された、閾値となっているキュー深さに基づいて、データキューがほぼ満杯であることを示す。終了位置属性は、データキューからの位置情報を格納する。有効フラグは、受信メッセージオブジェクトを選択し、選択した受信メッセージオブジェクトを有効化する。詳細な説明<プロセス制御システムの概要>本発明は、プロセス制御システムにおける現場計器と他のデバイスとに用いられる通信コントローラに関する。通信コントローラの用途は、メッセージとタイマ管理とのリンク層処理の大部分を実行することで、アプリケーションプロセッサもしくはCPUを解放し、アプリケーションプロセッサもしくはCPUが他の機能を実行できるようにすることである。本詳細な説明のために、ファウンデーションフィールドバス通信プロトコルを用いるシステムを背景にして通信コントローラを説明する。ただし、通信コントローラは、パケットに基づいた通信プロトコルに対して一般的適用性を有している。フィールドバス物理層は、物理層プロトコルデータユニットPhPDUの形式で通信プロトコルデータを送受信する物理手段の電気的特性を定義している。さらに、フィールドバス物理層は、シンボル符号化、メッセージフレーム化、エラー検出方法を定義している。ISAフィールドバス規格は、3つの信号伝送速度と2つの結合モードとを定義している。本説明のため、ISAのS50.02規格第2部における第11節に定義されたH1物理層を背景にして本発明を説明する。この節は、低電力の選択肢を有した、31.25Kbps、電圧モード、導線媒体を対象としている。この選択肢によれば、通信媒体に接続されたデバイスは、通信媒体から動作電力の供給を受けることができる。物理層は、危険な環境のための固有の安全要求に合致させることができる。このプロトコルは、規格によって定義された電圧及び電流の制限に従って、低級ツイストペア線で動作し、多数のデバイスに対応するものである。図1は、一般的なプロセス制御システム10を示している。このプロセス制御システム10は、セグメント12と、電源14と、5つのデバイスとを備えている。尚、5つのデバイスは、リンクアクティブスケジューラLASデバイス20、リンクマスタLMデバイス22、基本デバイス24,26,28である。セグメント12は、1対の導線上で32基のデバイスまで対応することができる。一般的に、セグメント12は、ループ実行速度と、電力と、固有の安全要求とに基づいて、4~16基のデバイスを有することになる。LASデバイス20は、セグメント12上のデバイス間でなされる全ての通信の主要スケジュールを維持する。LASデバイス20は、コンペルデータCDと、データリンクプロトコルデータユニットDLPDUsとを各デバイスへ送信し、各デバイスが、その後に返信するようにスケジュールされる巡回データを返信することで全体的な通信の信頼性を向上させる。LASデバイス20は、セグメント12上のデータリンク時刻DL時刻の局部的な起点として機能する。DLPDUは、セグメント12をわたって通信されるPhPDUメッセージのデータ内容である。LMデバイス22は、万が一、LASデバイス20が故障した場合、もしくは正常に動作しなくなった場合に、LASデバイス20の役割を引き継ぐように構成されている。図1には、LMデバイス22しか図示されていないが、複数のリンクマスタデバイスをセグメント上に設けることができる。複数のリンクマスタデバイスを設けることによって、リンクアクティブスケジューラと第1のリンクマスタとの双方が故障しても、第2のリンクマスタがリンクアクティブスケジューラを引き継ぐことができる。リンクアクティブスケジューラがいったん機能しなくなると、リンクマスタがリンクアクティブスケジューラの機能を引き継ぐ。各デバイスは、VTNと称する固有のアドレスを有している。尚、VTNは、ローカルノードIDThis_Nodeを表す。図1に示す例では、LASデバイス20は、VTN=20というアドレス;LMデバイス22は、VTN=22というアドレス;基本デバイス24は、VTN=A5というアドレス;基本デバイス26は、VTN=F3というアドレス;基本デバイス28は、VTN=F5というアドレスを有している。LASデバイス20は、セグメント12上の全てのデバイスにパストークンPTメッセージとプローブノードPNメッセージとを送信する。他のデバイスLASデバイス22及び基本デバイス24,26,28はそれぞれ、リターントークンRTメッセージとプローブレスポンスPRメッセージとをLASデバイス20に適宜返信する。基本デバイス24,26,28はそれぞれ、LASデバイス20によって送信された各々に対するPTメッセージとPNメッセージとを確認する必要があるだけである。PTメッセージ及びPNメッセージは、符号化された宛先アドレスDAをDLPDUの第2バイトに有している。LASデバイス20は、セグメント12上の全てのデバイスに対して、トークンPTの転送、もしくはノードPNの調査を1つづつ行う。基本デバイス24,26,28は、各々の固有アドレスDA=VTNと一致する宛先アドレスを有するPTメッセージを受信すると、LASデバイス20に対してRTメッセージで応答する。基本デバイス24,26,28は、DA=VTNを有するPNDLPDUを受信すると、PRメッセージで応答することを要求される。LASデバイス20からのPTメッセージ、PNメッセージ、及びLASデバイス20へのRTメッセージ、PRメッセージの送信によって、特定の基本デバイス24,26,28が受信や応答する必要がない種々のメッセージがセグメント12上に生成される。基本デバイス24,26,28はそれぞれ、その特定のデバイス宛のPTメッセージ及びPNメッセージに応答する必要があるだけである。LASデバイス20からの他のデバイス宛のPTメッセージ及びPNメッセージ、さらに、他のデバイスからのLASデバイス20宛のRTメッセージ及びPRメッセージに頻繁に割り込まれることにより、これら妨害割込を処理する過度の処理時間が生じ得る。基本デバイス24,26,28のために、DLPDUフィルタリングを用いて、基本デバイスが処理しなければならない割込の数を低減できる。他方、LASデバイス20は、セグメント12上の各メッセージを処理しなければならない。セグメント12上の全てのデバイスは、データをマンチェスタ符号化ベースバンド信号としてセグメント12上に送信する。マンチェスタ符号化によって、0及び1は、ビット周期内で起こるロウからハイへの変化と、ハイからロウへの変化とでそれぞれ表される。フィールドバスでは、公称ビット時間は32マイクロ秒μ秒であり、16μ秒で変化を生じる。マンチェスタ符号化法は、拡張され、非データプラスN、非データマイナスN-といった2つの追加シンボルを含んでいる。但し、ビット周期中に変化は起こらず、マンチェスタ符号化ベースバンド信号は、ハイNもしくはロウN-のままとなる。<メッセージフォーマット>図2に、メッセージをセグメント12上に送信するのに用いられる物理層プロトコルデータユニットPhPDUのフォーマットを示す。PhPDUは、プリアンブルと、スタートデリミタSDと、データリンクプロトコルデータユニットDLPDUと、エンドデリミタEDとを含んでいる。プリアンブルは、PhPDUメッセージの最初の数ビットである。フィールドバス仕様では、1~8バイトのプリアンブルが許容されている。メッセージを受信するデバイスは、プリアンブルを用いて、到来するメッセージと同期する。図2に示すように、プリアンブルにおける最初のバイト列は、10101010となっている。スタートデリミタSDは、プリアンブルの直後に続く。1つのメッセージにつき1つのSDがある。フィールドバス仕様では、SDは、非文字データN及びN-を有している必要がある。この非文字データは、常に、相互補完関係にある一対としてSDメッセージに現れる。この符号化方法によって、SDは独特のものとなり、SDとメッセージのデータ部分DLPDUとの混同が生じることがない。図2に示すSDの列は、1NN-10N-N0となっている。DLPDUは、可変長メッセージである。DLPDUは、その最初のバイトとしてフレーム制御FCバイトを含み、その最後の2バイトとしてフレームチェックシーケンスFCSチェックサムを含んでいる。DLPDUの長さは、可変であり、最小3バイトRTメッセージの場合から例えばおおよそ300バイトのジャバリミットまでである。エンドデリミタEDは、DLPDUに続く。EDは、セグメント12上へ送信されたあらゆるPhPDUメッセージの最後のバイトを表している。SDと同様に、EDは、相互補完関係にある一対の非文字データを含んでいる。この符号化方法によって、EDは独特のものとなり、EDとDLPDUとの混同が生じることがない。図2に示すエンドデリミタの列は、1NN-NN-101となっている。また、図2は、キャリア検出信号を示している。キャリア検出信号の用途は、a到来するPhPDUメッセージがセグメント12上へ送出される時期、もしくはbデバイスがセグメント12上にメッセージを送信している時期を示すことである。送信開始SOTは、送信イネーブルTxEが有効になったとき、つまり、PhPDUメッセージのプリアンブルがセグメント12へ最初に送出されたときに発生する。活動開始SOAは、キャリア検出信号が有効になり、キャリア検出信号が少なくとも1ビット時間、もしくは2ビット時間おおよそ16~32μ秒の間、安定したのちに発生する。この時間は、メッセージを受信するデバイスの内部クロックに対して、いつキャリア検出が有効になるかに依存する。キャリア検出信号が安定したのちに活動開始SOAが発生することによって、デバイスの通信コントローラは、プリアンブルの前半で起こる可能性が非常に高いノイズ異常を無視できる。追加時間は、ビット境界との同期に用いられ、それによりセグメント12上の短いノイズバーストが活動として誤解釈される可能性が排除される。送信メッセージの場合、送信イネーブルがいったん有効になるとつまり、PhPDUのプリアンブルがセグメント12へ送出されると、SOAが発生する。メッセージ開始SOMは、受信メッセージのFCバイトが検出されたときの最初のビットの始まりで発生する。SOM_xmtは、メッセージ送信開始であり、送信メッセージのFCバイトが検出されたときの最初のビットの始まりで発生する。SOMfは、フィルタ処理された受信DLPDUのSOMである。SOMfは、デバイス内の通信コントローラが、到来するメッセージをフィルタ処理するか判定するのに十分な情報を検出すると発生する。メッセージ終了EOMは、EDにおける最後のビットの終わりが受信メッセージに現れると発生する。送信終了EOTは、送信メッセージにおけるEDの最後のビットの終わりで発生する。活動終了EOAは、キャリア検出信号が無効になったときに発生する。EOAは、送信DLPDU及び受信DLPDUの双方で発生する。<デバイスアーキテクチャ>図3は、基本デバイス24における通信部のブロック図を示している。尚、基本デバイス24における通信部は、デバイス20-28の各々のアーキテクチャを代表するものである。基本デバイス24は、中央処理装置CPU30と、ランダムアクセスメモリRAM32と、フラッシュメモリ34と、通信コントローラ36と、媒体接続装置MAU38とを備えている。図3に示す本実施形態では、CPU30は、モトローラ社製68LC302、モトローラ社製Mcore2075、モトローラ社製PowerPC850、アトメル社製ThumbプロセッサAT91M40800などといったマイクロプロセッサである。CPU30は、8ビット以上のプロセッサである。図3に示す本実施形態では、通信コントローラ36は、特定用途向け集積回路ASIC素子であり、MAU38とCPU30との間のインターフェイスとして機能する。通信コントローラ36は、フィールドバスセグメント12に接続された外部のアナログ回路との間で符号化されたマンチェスタデータの送受信を行う。通信コントローラ36は、MAU38からシリアルデータを受信したのち、受信したデータを符号化し、符号化したデータをバイトに変換して、プリアンブル、SD、EDそして、任意にFCSバイトを除去し、リンク層が読み取るメッセージデータを供給する。データ送信に向け、通信コントローラ36は、リンク層からDLPDUデータのバイトを受信して、プリアンブルとSDとを付加し、任意にFCSの生成を行い、EDを付加する。通信コントローラ36は、続いてシリアルに符号化されたマンチェスタデータを形成し、マンチェスタデータは、フィールドバスセグメント12上への送信のためにMAU38へ送信される。通信コントローラ36とMAU38との間の通信は、RxS、RxA、TxS、TxEといった4つの信号を介して確立される。尚、RxSは、受信されたマンチェスタ符号化シリアルデータである。RxAは、受信データのキャリア検出信号である。TxSは、送信された符号化シリアルデータである。TxEは、送信イネーブル信号である。本発明の他の実施形態では、通信コントローラ36は、CPU30と同一の集積回路上に形成され得る。さらに、いくつかの実施形態において、RAM32及びフラッシュメモリ34もCPU30と一体化されてもよい。LASデバイス20の場合、CPU30、RAM32、フラッシュメモリ34は、プロセス制御システム10のホストコンピュータシステムの一部であってもよい。MAU38は、フィールドバスセグメント12とのネットワーク接続を確立する。MAU38は、集積回路であってもよいし、個別の素子を用いてMAU38を形成することもできる。<通信コントローラ36>図4は、通信コントローラ36の機能ブロック図である。本実施形態では、通信コントローラ36は、デバウンス回路42と、ディジタル位相同期回路PLL44と、フロントエンドステートマシン46と、受信メッセージフィルタリング48と、受信先入れ先出しFIFOメモリ50と、送信ステートマシン52と、送信FIFOメモリ54と、送信ドライバ回路56と、受信/送信事象マネージャ58と、レジスタ群60と、クロック生成回路62と、発振器64と、タイマ群68と、CPUインターフェイス回路70とを備えている。到来するメッセージをMAU38が検出すると、RxA入力にて、キャリア検出信号が通信コントローラ36へ供給され、RxS入力にて、到来する非同期のマンチェスタデータが供給される。RxA入力及びRxS入力は、フロントエンドステートマシン46へ送出される。ディジタルPLL44は、到来するシリアルマンチェスタ符号化データからクロックを正常化してクロックを再生する。そして、この再生されたクロックは、フロントエンドステートマシン46のタイミングを決定するのに用いられる。フロントエンドステートマシン46は、到来するシリアルビットストリームRxSを検出する。フロントエンドステートマシン46は、プリアンブル、SD、EDを除去し、DLPDUを受信FIFOメモリ50へ格納する。フロントエンドステートマシン46は、受信メッセージフィルタリング48とともに、特定のフレーム制御、加えて、他のデバイス宛のプローブノードPNメッセージ、パストークンPTメッセージを除外するように構成され得る。フロントエンドステートマシン46は、受信FIFOメモリ50へ書き込まれたバイト数のトラックを保持する。FCSは、各メッセージの終わりに自動的に確認され、任意に受信FIFOメモリ50へ格納され得る。また、フロントエンドステートマシン46は、フロントエンドステートマシン46が検出した特定の事象を表す信号を送出する。この信号としては、SOM事象パルス、SOMf事象パルス、EOM事象パルス、SOA事象パルス、EOA事象パルスがある。フロントエンドステートマシン46は、RxA線が有効になると作動する。そして、フロントエンドステートマシン46は、プリアンブル領域のエッジに同期し、RxS信号のマンチェスタ符号化データを復号する。SOA事象は、フロントエンドステートマシン46が起動したことを示す。プリアンブルが検出されると、フロントエンドステートマシン46は、スタートデリミタSD列を待つ。SDが検出されると、フロントエンドステートマシン46は、シリアルデータストリームをオクテットに変換し、シリアルデータストリームを8ビットのバイト毎に受信FIFOメモリ50に書き込む。フロントエンドステートマシン46は、エンドデリミタEDが検出されるまで、もしくは受信FIFOメモリ50が満杯になるまで、データの新たなオクテットを受信FIFO50に書き込み続ける。EDが検出されると、フロントエンドステートマシン46は、RxA線が無効になるのを待つ。尚、RxA線が無効になることは、EOA事象によって示される。RxA線が無効になることで、フロントエンドステートマシン46は初期状態に復帰する。フロントエンドステートマシン46は、フィールドバスセグメント12上の次の活動までつまり、再度RxAにてキャリア検出信号が供給されるまで初期状態のままでいる。フィルタリング回路は、基本デバイスにとって重要ではないメッセージに関するIRQ負荷を軽減するために基本デバイスに用いられている。対照的に、LASとして構成されたデバイスは、セグメント上の全てのメッセージを受信しなければならないため、フィルタリングを無効にしなければならない。フィルタリングが無効であると、全ての受信メッセージが受信FIFOメモリ50へ格納されるようになり、全ての受信メッセージがレジスタ群60、そしてCPU60へと転送されるようになる。SOMfは、フィルタ処理された受信DLPDUのメッセージ開始信号である。SOMfは、到来するメッセージがフィルタ処理されることを判定するのに十分な情報を受信メッセージが検出したとフロントエンドステートマシン46が判定すると発生する。フィルタリングが有効になると、フィルタ処理されたメッセージは受信FIFOメモリ50に格納されない。フィルタ処理されたメッセージによって、SOMfが生成されないようになり、事象やIRQが発生しないようになる。フィルタ処理されたメッセージの例としては、リターントークンRT、アイドル、要求インターバルRI、プローブ応答PRDLPDUメッセージがあり、これらのメッセージは、常に拒否されるようになる。これらは、フレーム制御FCバイトに基づいて特定される。パストークンPTメッセージ及びプローブノードPNメッセージは、メッセージの宛先アドレスがデバイスのアドレスと一致した場合に受信されるようになる。宛先アドレスが一致しない場合には、PTメッセージ及びPNメッセージは拒否される。FCバイトに基づいてメッセージの種類に関してフィルタリングできることと、宛先アドレスに基づいてメッセージの種類に関してフィルタリングできることとによって、CPU30が処理しなければならない割込要求IRQsの数が制限され、それによってソフトウェア割込の負荷が軽減される。フロントエンドステートマシン46及び受信FIFOメモリ50は、MAU38からのシリアルデータフレームを構文解析するのに用いられる。CPU30は、受信FIFOメモリ50からデータを読み込み、読み込んだデータをCPU30のローカルメモリ空間に格納して、受信DLPDUを復号する。受信FIFOメモリ50は、8ビット幅を1バイトとした63バイトである。受信FIFOメモリ50は、3つまでの完全な受信メッセージ合計63バイトまでの全てのDLPDUバイトを格納することになる。フロントエンドステートマシン46は、フィルタ処理されたRxS信号からシリアルデータストリームを復号し、復号したシリアルデータストリームを8ビット並列形式のバイトに変換する。バイトの形成ののち、フロントエンドステートマシン46は、書込ポインタによって指し示された場所へ符号化データを格納する書込パルスを生成する。書込動作が完了したのち、書込ポインタは、次のDLPDUバイトを格納するようにインクリメントされる。CPU30は、受信FIFOメモリ50に対する読込ポインタと連動する。レジスタ群60の受信FIFOレジスタ実際のDLPDUデータを含んでいるからのあらゆる読込によって、8ビットデータは、受信FIFOメモリ50からデータバス上に直ちに送出され、CPU30に読み込まれる。読込動作が完了したのち、読込ポインタはインクリメントされる。読込ポインタのインクリメントは、受信FIFOメモリ50が空になるまで継続され得る。受信FIFOメモリ50にてオーバーフロー状態が発生するのを防止するため、レジスタ群60には、受信FIFOメモリ50が満杯状態に近づくとIRQの生成を許可するレジスタがある。IRQ生成の閾値は変更可能である。送信ステートマシン52は、送信FIFOメモリ54から送信されるDLPDUデータを読み込む。プリアンブル、SD、EDが自動的に挿入される。送信ステートマシン52を起動するためには、PDU間トリガー、もしくはその代わりに次回定期事象トリガーが有効となって、送信動作を開始する必要がある。送信ステートマシン52は、送信されたバイト数のトラックを保持する。アンダーフローもしくは送信カウント違反があると、エラー状態が指し示される。FCSは、DLPDUの最後の2バイトとして任意に自動送信され得る。送信ステートマシン52は、MAU38へのTxS線上のインターフェイス回路70を介して供給され、フィールドバスセグメント12上に送出されるマンチェスタシリアルデータを符号化する。また、送信ステートマシン52は、EDの最後のビットが発生して最初のプリアンブルにおける最初のビットが送信されたときに送信イネーブルTxE線を有効状態にする。また、送信ステートマシン52は、TxE線を有効状態にするときに、送信開始SOT事象信号を生成し、TxE線が無効に復帰するときに、送信終了EOT事象信号を生成する。送信FIFOメモリ54は、送信されるべきメッセージに必要とされる全てのDLPDUバイトである合計63バイトまでを格納することになる。変更可能な閾値は、送信FIFOメモリ54がほぼ空になる時期をCPU30に伝えるIRQを送信するように設定され得る。63バイトよりも多くのバイトが送信される必要がある場合には、CPU30は、送信FIFOメモリ54により多くのデータを追加できるようにすることを通知される。CPU30への通知は、全てのDLPDUのバイトが書き込まれるまで継続する。CPU30が書込ポインタを用いて送信FIFO54に書込を行う一方で、送信ステートマシン52が読込ポインタを用いて送信FIFOメモリ54からバイトを読み込む。通信コントローラ36は、事象発生時に機能し、多数の事象の発生を処理できなければならない。事象の例としては、受信メッセージのSOM、EOM、あるいはEOA、またあるいは送信メッセージのEOTがある。受信/送信事象マネージャ58は、3つの受信メッセージと1つの送信メッセージとの合計までで起こる全ての事象を管理する。図4に示すように、受信/送信事象マネージャ58は、rcvmsg1、rcvmsg2、rcvmsg3と称される3つの受信メッセージオブジェクトと、xmtmsgと称される1つの送信メッセージオブジェクトとを備えている。さらに、受信/送信事象マネージャ58は、メッセージキューマネージャMsgQmngr80と、事象マネージャEventMngr82と、送信マネージャxmtmngr84と、事象MUX86とを備えている。受信FIFOメモリ50は、3つまでの完全な受信メッセージのDLPDUバイトを格納することができる。これら3つのメッセージはそれぞれ、対応するオブジェクトrcvmsg1と、rcvmsg2と、rcvmsg3とを備えている。各オブジェクトは、全てのIRQの状態と、メッセージエラーと、各オブジェクトに対応する受信メッセージのために発生するタイムスタンプとを含んでいる。この情報は、メッセージの事象データを構成する。全てのIRQの状態、メッセージエラー、送信メッセージのために発生するタイムスタンプは、xmtmsgオブジェクトに格納される。格納情報は、送信メッセージの事象データを構成する。MsgQmngr80は、3つの受信メッセージの選定及び有効化を制御する。一度につき1つの受信メッセージオブジェクトのみが有効になることができる。MsgQmngr80によって、事象は、有効になっている受信メッセージと連動できる。CPU30によって他の3つの受信メッセージが認識される前に4つ目のメッセージが受信された場合には、MsgQmngr80は、事象データが読み込まれるまで、もしくは事象データが認識されるまで、さらなるいずれのメッセージの受信も無効とする。EventMngr82は、事象の発生順序を管理する。事象が発生すると、事象マネージャ82は、各事象に発生順序識別子OOO_IDを割り当てる。発生順序識別子を各事象に割り当てることにより、CPU30は、事象が発生する毎に事象を1つづつ読み込むことができる。CPU30は、各事象の発生時に各事象を認識しなければならない。第1の事象が認識されたのち、第1の事象に続く事象は、CPU30が読み込めるように待機されるようになる。Xmtmngr84は、PDU間トリガーInterPDU_trigと次回定期事象トリガーとを監視して、送信トリガーコマンドXmt_Trig_Cmdを送信ステートマシン52に発行し、次のメッセージの送信を開始させる。通信コントローラ36は、レジスタ群60を備えている。CPU30は、REG00~REG3Fと称されたレジスタに書込や読込を行うことができる。また、割込IRQsは、レジスタ群60を介して処理される。クロック生成回路62は、外部クロックを受信し、この外部クロックを使用するか、もしくはクロック生成回路62内部の発振器64からのクロック信号で通信コントローラ36に必要な全てのクロック信号を生成する。クロック生成回路62は、好ましくは、クロック生成回路62のノードタイマ及びオクテットタイマの双方のクロックレートを更新する能力を備えている。クロックレートを更新できることによって、通信コントローラ36は、当該通信コントローラ36のノード時刻とリンクアドレススケジューラLAS20との関係を同期させることができる。オクテット時刻は、内部メッセージタイミングを図るために用いられる一方、ノード時刻は、フィールドバスセグメント12全体で共通の時刻の検出値を共有するために用いられる。タイマ群68は、異なる時刻の検出値を表す2つのグループに分割される。第1セットのタイマ群は、セグメントタイマ群と称され、CPU30のソフトウェア制御のもとで、クロック生成回路62によって生成される可変クロックレートに基づいて動作する。第2セットのタイマ群は、メッセージタイマ群と称され、固定レートクロックで動作する。通信コントローラ36には、2つのセグメントタイマがある。第1セグメントタイマは、ノードタイマであり、ノードタイマは、31.25μ秒32kHzのクロックレートを有している。ノードタイマは、次回機能ブロック実行時刻と、リンク予定時刻VLSTと、データリンク時刻DL-Timeとを提供するために用いられる。第2セグメントタイマは、オクテットタイマであり、オクテットタイマは、2μ秒500kHzのクロックレートを有している。オクテットタイマは、次回定期事象トリガー次回定期事象トリガーは、特定時刻でメッセージを送信するために送信ステートマシン52に接続しているに用いられる。クロックレートが調節されると、ノードタイマ及びオクテットタイマは、同じレートで互いに追従するようになる。つまり、ノードタイマとオクテットタイマとを駆動するクロック信号は、共通の可変クロックから得られている。メッセージタイマ群は、フィールドバスメッセージ事象送信及び受信に基づいて、起動及び停止する。メッセージタイマ群は、非活動タイマと、PDU間遅延タイマと、受信応答タイマと、送信応答タイマと、デリゲートトークン復帰タイマとを備えている。非活動タイマは、デクリメントカウンタである。非活動タイマは、2つのPhPDU間のアイドル時間を測定するのに用いられる。非活動タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント12上のあらゆる送信メッセージとに作用する。非活動タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。非活動タイマの起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な設定時点から決定される。非活動タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連した事象を介して解除もしくは停止され得る。非活動タイマがいったん0に到達もしくは失効すると、IRQが生成される。非活動タイマは、IRQが認識されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが認識されるまで非活動タイマに作用しない。PDU間遅延タイマは、インクリメントカウンタである。PDU間遅延タイマは、VMID閾値レジスタとともに用いられ、送信メッセージもしくは受信メッセージの間の無送信最小時間もしくは隙間時間を保証するフィールドバスVMID最小PDU間遅延を実現する。PDU間遅延タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント上のあらゆる送信メッセージとに作用される。フィールドバス活動がないときには、PDU間遅延タイマは、インクリメントを継続する。カウント値がレジスタ群60の1つに格納された、予め決められた値以上になると、PDU間トリガー信号が有効になる。PDU間トリガー信号は、PDU間遅延時間に達したことを判定するのに用いられる。PDU間トリガー信号は、xmtmngr84に接続し、DLPDUの送信を開始できるという命令を与える。受信応答タイマは、デクリメントカウンタである。受信応答タイマは、加入デバイスがコンペルデータCDDLPDUに対する即時応答を監視できるようにするために用いられる。また、受信応答タイマは、デバイスがオンラインされるときに当該デバイスが当該デバイスのアドレスを監視するのに用いられる。受信応答タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。受信応答タイマ起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な16ビットの設定時点から決定される。受信応答タイマのデクリメントは、SOM事象もしくはSOT事象のいずれか一方を介して解除もしくは停止され得る。受信応答タイマがいったん0に到達もしくは失効すると、IRQが生成される。受信応答タイマでは、IRQが生成されるためには、IRQが有効化される必要がある。受信応答タイマは、IRQが確認されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが確認されるまで受信応答タイマに作用しない。送信応答タイマは、デクリメントカウンタである。送信応答タイマによって、デバイスは、種々のDLPDUつまり、コンペルデータ、パストークンの送信後の即時応答を監視することができる。送信応答タイマは、起動を命令されると、16μ秒毎にデクリメントを行う。送信応答タイマの起動点は、レジスタ群60の1つに予め読み込まれた変更可能な設定点から決定される。送信応答タイマのデクリメントは、プローブノードPNのSOM事象もしくはSOT事象を除く送信されたあらゆるDLPDUのSOM事象もしくはSOT事象のいずれか一方を介して、解除もしくは停止され得る。送信応答タイマがいったん0に到達もしくは失効すると、IRQが生成される。送信応答タイマは、IRQが認識されるまで0のままとなる。IRQがハイのままであると、発生するさらなるメッセージ事象は、このIRQが認識されるまで送信応答タイマに作用しない。デリゲートトークン復帰タイマは、デクリメントカウンタである。デリゲートトークン復帰タイマは、他のデバイスからのデリゲートトークンを受信するアイドル時間を監視するのに用いられる。デリゲートトークン復帰タイマは、フィルタ処理された受信メッセージ及びフィルタ処理されていない受信メッセージの双方と、フィールドバスセグメント12上のあらゆる送信メッセージとに作用する。デリゲートトークン復帰タイマは、起動を命令されると、16μ秒毎にデクリメントを行うようになる。デリゲートトークン復帰タイマの起動時点は、レジスタ群60の1つに予め読み込まれた変更可能な設定時点から決定される。デリゲートトークン復帰タイマのデクリメントは、受信メッセージもしくは送信メッセージのいずれか一方に関連する事象を介して解除もしくは停止され得る。デリゲートトークン復帰タイマがいったん0に到達もしくは失効すると、IRQが生成される。デリゲートトークン復帰タイマは、このIRQが認識されるまで0のままとなる。IRQがハイのままであると、さらなるメッセージ事象が発生しても、このIRQが認識されるまでデリゲートトークン復帰タイマは作用されない。<低遅延のデータパケット処理>セグメント12から情報のパケットを受信しているときに、データパケットを受信FIFOメモリ50に待機させることで、ソフトウェア遅延が発生する。データパケット自体に加え、通信コントローラ36は、受信状態例えば、パケットのバイトがネットワークから依然として受信中であるか否かという状態に関する情報を保持しなければならない。通信コントローラ36は、多数のデータのパケットを受信FIFO50に待機させる能力があるため、データパケットを受信状態に関連する情報と関連付けることができることが不可欠である。通信コントロールシステムのハードウェアは、一般的に、例えば、CPU30におけるソフトウェアによって外部から提供される、データパケットを受信状態に関連する情報と関連付けるという必要な動作を模擬するように設計され得る。図5は、セグメント12上のMAU38によって受信されたデータパケットの処理を管理する受信/送信事象マネージャ58の機能ブロック図である。受信/送信事象マネージャ58は、メッセージキューマネージャMsgQmngr80と、事象MUX86と、受信メッセージオブジェクトキュー100と、マルチプレクサ102,106,108とを含んでいる。受信メッセージオブジェクトキュー100は、rcvmsg1、rcvmsg2、rcvmsg3と称された、3つの受信メッセージオブジェクトのための空間を含んでいる。MsgQmngr80は、MUX102を介して、受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3に接続されている。マルチプレクサ106,108は、本発明の範囲外であるものの、受信/送信事象マネージャ50における各種部品間の接続を図示するために図5に表されている。MUX106は、レジスタ群60におけるレジスタReg15からの入力に基づいて、受信メッセージオブジェクトとMUX108とに出力を供給し、MUX108の出力は、MsgQmngr80に入力される。また、MUX106の出力は、ORゲート110を介して、MsgQmngr80に入力される。事象マネージャ82及び送信マネージャ84は、図4では受信/送信事象マネージャ58内に表されているものの、説明を明確にするために、図5では省略されている。また、図5に表されているのは、有効なメッセージの受信メッセージオブジェクト及び送信メッセージオブジェクトに関連付けられた事象データを格納するレジスタ群60の部分Reg15~Reg1Fである。受信/送信事象マネージャ58によって、CPU30は、順に発生した各メッセージの各々に関連付けられた受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3を読み込むことができる。有効なメッセージの受信メッセージオブジェクトは、レジスタ群60を介して、具体的にはレジスタReg15~Reg1Fにおいて、CPU30が読込可能である。有効なメッセージの送信メッセージオブジェクトは、レジスタReg16,Reg17,Reg1Bにおいて、MAU38が送信可能である。各受信メッセージオブジェクトは、メッセージIRQと、エラーと、状態と、受信FIFOメモリ50に関する情報及びデータとの組み合わせを格納している。受信FIFOメモリ50に関する情報及びデータは、ソフトウェアによって読込可能な種々の属性を含んでおり、種々の属性は、オブジェクトが対応するメッセージの受信状態に関連している。これらの属性としては、オーバーフローと、アンダーフローと、データ準備完了と、終了位置と、有効フラグとがある。オーバーフロー属性は、設定されると、ネットワークからメッセージを受信中に、受信FIFOメモリ50のオーバーフローが発生したことを示す論理的属性である。アンダーフロー属性は、データの不足によって、受信FIFOメモリ50から読み込む最後の試みが失敗したことを示す論理的属性である。データ準備完了属性は、受信FIFOメモリ50が満杯状態に近づいており、受信FIFOメモリ50のオーバーフローを防止するために受信FIFO50の読込が必要であることを示す論理的属性である。終了位置属性は、受信FIFOメモリ50からの位置情報を格納する整数属性である。受信メッセージオブジェクトの有効フラグは、有効フラグに対応するメッセージが有効中であるときにMsgQmngr80によって設定される。MsgQmngr80は、3つの受信メッセージの選択及び有効化を制御する。MsgQmngr80は、MUX102を介して選択されたときの受信メッセージオブジェクトの有効フラグRcvMsg1_sel信号、RcvMsg2_sel信号、RcvMsg3_sel信号を介して制御される。したがって、一度につき1つの受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3のみが有効になり得る。MsgQmngr80によって、事象は、有効な受信メッセージと関連付けられ得る。作動時に、MAU38は、セグメント12からメッセージを受信する。メッセージがセグメント12から受信されると、受信メッセージオブジェクトキュー100における受信メッセージオブジェクトの有効フラグが設定される。例えば、MAU38がメッセージを受信したときに、受信FIFOメモリ50にデータが一切格納されていない場合には、MsgQmngr80によって、RcvMsg1_sel信号が設定されることで、受信メッセージオブジェクトキュー100におけるrcvmsg1が有効になる。フロントエンドステートマシン46は、シリアルデータストリームを復号し、シリアルデータストリームを8ビットパラレル形式のバイトに変換する。バイトの形成後、フロントエンドステートマシン46は、書込ポインタによって指し示された、受信FIFO50における記憶位置に、符号化されたデータを格納する書込パルスを生成する。メッセージDLPDUデータが受信FIFOメモリ50に書き込まれているときに、受信FIFOメモリ50に対する書込ポインタの現在の位置が、有効な受信メッセージオブジェクトの終了位置属性に継続的に転送され、書込ポインタは、各バイトが書き込まれた後に引き続いてインクリメントされる。受信メッセージオブジェクトが受信メッセージオブジェクトキュー100に加えられた順序と同じ順序でデータが受信FIFOメモリ50に加えられるため、受信FIFOメモリ50と受信メッセージオブジェクトキュー100との間で一致した順序が維持される。フロントエンドステートマシン46から受信FIFOメモリ50へデータを転送している最中に、受信FIFOメモリ50は、当該受信FIFOメモリ50が当該受信FIFOメモリ50の63バイトの格納限度に近づいているか否かを継続的に監視する。受信FIFOメモリ50における未読バイト数がデータ準備完了属性の閾値と一致、もしくは閾値よりも大きい場合には、有効な受信メッセージオブジェクトによってIRQが生成される。このIRQは、有効な受信メッセージオブジェクトにおけるデータ準備完了属性を設定する。データ準備完了IRQを生成するための閾値は、変更可能である。データ準備完了属性は、受信FIFOメモリ50からデータが読み込まれた後に引き続いて、ソフトウェアによってクリアされ得る。データが受信FIFOメモリ50から読み込まれる前に受信FIFOメモリ50が満杯になると、受信FIFOメモリ50は、全ての受信メッセージオブジェクトに信号を送信して、オーバーフロー属性を設定する。オーバーフロー属性を設定することで、データキューからデータが読み込まれ、ソフトウェアがオーバーフロー属性をクリアするまで、受信FIFOメモリ50にさらなるデータが書き込まれるのを防止するようになる。有効な受信メッセージオブジェクトのみにオーバーフロー属性が設定されるようになるため、ソフトウェアは、どの受信メッセージオブジェクトrcvmsg1、もしくはrcvmsg2、もしくはrcvmsg3がオーバーフロー状態であったのかを判定することができる。MsgQmngr80は、3つの受信メッセージの選択及び有効化を制御する。3つのメッセージのうちの少なくとも1つがCPU30によって認識される前に4つ目のメッセージが受信されている場合には、MsgQmngr80は、事象データが読込もしくは認識されるまで、RcvMsgQMux_enbを強制的にロウ無効に設定することで、さらなるメッセージが受信されるのを無効にする。RcvMsgQMux_enbを強制的にロウ無効に設定することで、全てのRcvMsg_sel信号がロウとなる。4つ目の受信メッセージが到来するのをMsgQmngr80に防止させることで、受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3の破損が防止される。CPU30は、受信メッセージオブジェクトキュー100に位置する3つの受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3を通して、受信FIFOメモリ50に対する読込ポインタと連動する。CPU30が、格納されたDLPDUデータを受信FIFOメモリ50から読み込む準備が完了すると、CPU30におけるソフトウェアは、レジスタ群30におけるレジスタReg1Dを介して、GetDataByte_inコマンドを生成する。レジスタReg1Dからのあらゆる読込によって、受信FIFOメモリ50からのデータが、CPU30による読込のために直ちにデータバス上に置かれる。GetDataByte_in信号は、3つの受信メッセージオブジェクトの全てに入力される。一度につき、3つの受信メッセージオブジェクトのうちの1つだけが、CPU30で読込可能もしくは確認可能である。EventMUX_sel2:0信号は、MUX106を介して読み込まれる、CPU30にとって現在確認可能な受信メッセージオブジェクトを選択する。RcvMsg1_visible、RcvMsg2_visible、RcvMsg3_visibleといった3つの確認可能信号があり、これら信号はそれぞれ、受信メッセージオブジェクトrcvmsg1、rcvmsg2、rcvmsg3に対応している。例えば、RcvMsg1_visibleが有効な場合には、受信メッセージオブジェクトrcvmsg1から出力されるGetDataByte1信号が生成されることになる。GetDataByte1信号によって、受信FIFOメモリ50に対する読込ポインタが、1つの位置分インクリメントされる。GetDataByte2及びGetDataByte3は、GetDataByte1と同時にCPU30で確認することができないため、無効のままとなる。3つのGetDataByte出力のうちの1つが常に有効になっているため、3つのGetDataByteはORゲート114を通過して、読込ポインタのインクリメントパルスを生成する。続いて受信メッセージオブジェクトrcvmsg1からの読込動作が実行されると、読込ポインタは、rcvmsg1の終了位置の値と比較される。この比較によって、CPU30は、受信FIFOメモリ50における、rcvmsg1に関連付けられた特定のメッセージのバイト数を把握することができる。読込ポインタの値が終了位置の値と等しいと、確認可能な受信メッセージオブジェクトが取得可能なデータがなく、受信FIFOメモリ50は、確認可能な受信メッセージオブジェクトに関して空であると見なされる。確認可能な受信メッセージオブジェクトが取得可能なデータがないときには、内部的な空フラグが有効となる。空フラグが有効のときに追加の読込コマンドが生成される場合には、確認可能な受信メッセージオブジェクトのアンダーフロー属性が設定されることになる。このアンダーフロー属性は、レジスタ群60におけるレジスタReg17で読込可能である。空フラグによって、読込ポインタのインクリメントが発生するのを防止し、これによって、適切なポインタ位置と、DLPDUデータの関連付けの完全性とが維持される。受信FIFOメモリ50が最大3つの異なる受信メッセージオブジェクトに関連付けられたDLPDUデータを格納しているときに、適切なポインタ位置と、DLPDUデータの関連付けの完全性とが維持されることは、非常に重要である。CPU30は、レジスタ群60におけるReg1Fの読込動作を実行することによって、受信FIFOメモリ50から読み出す、確認可能な受信メッセージオブジェクトのバイト数を判定することが可能である。レジスタReg1Fから読み出される値は、終了位置と読込ポインタとの間における位置の差である。例えば、受信メッセージオブジェクトrcvmsg1が確認可能であり、CPU30がレジスタReg1Fから08hを読み込む場合には、CPU30は、rcvmsg1に関連付けられた全てのDLPDUデータの読込を完了するのに、Reg1Dを介して8回の読込動作が必要になるものと考えられる。8回の読込動作によって、確実に、確認可能な受信メッセージオブジェクトに関連付けられた全てのDLPDUデータが受信FIFOメモリ50から適切に読み出される。CPU30は、確認可能な受信メッセージオブジェクトに関して、レジスタ群60のレジスタReg15~Reg1Fを読み込み、続いて、これらレジスタからの情報に基づいて、対応する動作を行う。確認可能な受信メッセージ情報オブジェクトに関する全ての情報IRQ状態、エラー状態、DLPDUデータ、タイムスタンプ値などがCPU30によって処理された後、Event_Ack事象認識信号が生成され、CPU30が受信メッセージオブジェクトキュー100における確認可能な受信メッセージオブジェクトに関連付けられたデータの削除を完了したことを合図する。このEvent_Ack信号は、レジスタ群60におけるレジスタReg15への書込動作を実行することによって生成されるものであり、事象マネージャ82と受信FIFOメモリ50に入力され、EventMUX_sel2:0信号を更新する。EventMUX_sel2:0信号の更新によって、受信メッセージオブジェクトキュー100における次の受信メッセージオブジェクトの認識可能な信号つまり、rcvmsg2が有効になり、次の受信メッセージオブジェクトに関する事象データレジスタ群60が、CPU30にとって認識可能になる。そして、前述の読込順序が、次の受信メッセージオブジェクトのために実行され得る。要約すれば、ネットワーク上で受信したメッセージをハードウェアで処理する従来のやり方では、受信メッセージを格納するための個別のデータキュー要素と、メッセージに関する情報を格納するための、各個別のデータキュー要素に関連付けられた受信メッセージオブジェクトとが必要になる。さらに、ソフトウェア遅延を考慮して、ハードウェア設計者は、大きなデータキューを設けて、メッセージがネットワークから受信されたときにデータキューのオーバーフローが生じるのを回避しなければならない。大きなデータキューを設けるやり方では、データキュー深さの要求に起因する拡張性の問題を被ることになる。本発明は、通信コントローラであって、単一のデータキューと、受信メッセージオブジェクトのキューとを含んでいる。データキューは、通信媒体上で受信されたメッセージを格納する。受信メッセージは、好ましくは、書込ポインタ位置の受信データメモリに書き込まれ、読込ポインタ位置の受信データメモリから読み込まれる。また、通信コントローラは、受信メッセージオブジェクトを含んでいる。各受信メッセージオブジェクトは、データキューにおける、対応するメッセージに関する情報を格納している。つまり、いかなる余分なデータキューのオーバーヘッドを招くことのない規模となり得るキューの一案を表している。さらに、データキュー格納要求全体に大きな影響を与えることなく、未知のソフトウェア遅延を考慮して、データキュー深さを大きくすることができる。本発明は、好ましい実施形態を参照しながら説明されているが、当業者は、本発明の精神及び範囲を逸脱することなく、形態の変更及び詳細な変更が可能であることを認識するであろう。"