(57)【要約】  本発明は、ＦｌｅｘＲａｙ通信接続（１０１）と連携するためのＦｌｅｘＲａｙ通信モジュール（１００）であって、メッセージが前記ＦｌｅｘＲａｙ通信接続（１０１）を介して伝送され、加入者装置インタフェース（１０７）を介して加入者装置（１０２）と接続されるモジュールに関する。ＦｌｅｘＲａｙ通信ネットワークにおける通信を最適な形で支援するため、ＦｌｅｘＲａｙ通信モジュール（１００）は、加入者装置（１０２）とＦｌｅｘＲａｙ通信接続（１０１）との間で伝送された又は伝送されるメッセージを保存するコンポーネント（１０５）及びステートマシンを有し、前記ステートマシンはコンポーネント（１０５）でのメッセージ保存、コンポーネント（１０５）からのメッセージ呼出し及びメッセージ伝送のための情報に関するシーケンスを設定し及び／又は呼び出すことによりメッセージ伝送を制御することを提案する。【選択図】図１
2009502072.tif 000002
【特許請求の範囲】
【請求項１】
ＦｌｅｘＲａｙ通信接続（１０１）と連携するためのＦｌｅｘＲａｙ通信モジュール（１００）であって、
メッセージが前記ＦｌｅｘＲａｙ通信接続（１０１）を介して伝送されることと、
加入者装置インタフェース（１０７）を介して加入者装置（１０２）と接続されることと、
前記加入者装置（１０２）と前記ＦｌｅｘＲａｙ通信接続（１０１）との間で伝送された又は伝送されるメッセージを保存するコンポーネント（１０５）及びステートマシンを有することと、
前記ステートマシンがメッセージ伝送を制御するために前記コンポーネント（１０５）によるメッセージ保存と、前記コンポーネント（１０５）からのメッセージ呼出しと、メッセージ伝送とに関する情報に関連付けられたシーケンスを構成し及び／又は呼び出すことと、
を備えるＦｌｅｘＲａｙ通信モジュール（１００）。
【請求項２】
前記ステートマシンが、ハードウェアに組み込まれていることを特徴とする、請求項１に記載のＦｌｅｘＲａｙ通信モジュール（１００）。
【請求項３】
前記シーケンスが、ハードウェアに組み込まれていることを特徴とする、請求項１又は請求項２に記載のＦｌｅｘＲａｙ通信モジュール（１００）。
【請求項４】
前記ステートマシンが、前記加入者装置インタフェース（１０７）を介して前記加入者装置（１０２）によって自由にプログラムされることを特徴とする、請求項１に記載のＦｌｅｘＲａｙ通信モジュール（１００）。
【請求項５】
前記情報が、アクセスタイプ、及び／又はアクセス方式、及び／又はアクセスアドレス、及び／又はデータ値、及び／又はデータに関する制御情報、及び／又は少なくとも１つのデータ防護のための情報を含んでいることを特徴とする、請求項１〜４のいずれかに記載のＦｌｅｘＲａｙ通信モジュール（１００）。
【請求項６】
ＦｌｅｘＲａｙ通信接続（１０１）と連携するためのＦｌｅｘＲａｙ通信制御装置であって、
メッセージが前記ＦｌｅｘＲａｙ通信接続（１０１）を介して伝送されることと、
加入者装置インタフェース（１０７）を介して加入者装置（１０２）と接続されることと、
請求項１〜５のいずれかに記載のＦｌｅｘＲａｙ通信モジュール（１００）を有していることと、
を備えるＦｌｅｘＲａｙ通信制御装置。
【請求項７】
ＦｌｅｘＲａｙ加入者装置（１０２）とＦｌｅｘＲａｙ通信接続との間でメッセージを連携する方法であって、
ＦｌｅｘＲａｙ通信モジュール（１００）を前記ＦｌｅｘＲａｙ通信接続（１０１）と接続させ、
前記加入者装置（１０２）を加入者装置インタフェース（１０７）を介して前記通信モジュール（１００）に接続させ、
前記加入者装置（１０２）と前記ＦｌｅｘＲａｙ通信接続（１０１）との間で伝送された又は伝送されるメッセージを前記ＦｌｅｘＲａｙ通信モジュール（１００）のコンポーネント（１０５）に一時的に保存し、
前記通信モジュール（１００）のステートマシンにより前記コンポーネント（１０５）でのメッセージ保存と、前記コンポーネント（１０５）からのメッセージ呼出しと、メッセージ伝送とに関する情報に関連付けられたシーケンスを構成し及び／又は呼び出してメッセージ伝送を制御する、
方法。
【請求項８】
さらに前記ＦｌｅｘＲａｙ通信モジュール（１００）において、前記加入者装置（１０２）と前記ＦｌｅｘＲａｙ通信接続（１０１）との間のデータ伝送の構成、開始及び制御のための基本コマンドを定義し、複数の基本コマンドを合わせた機能を各シーケンスが演じる、請求項７に記載の方法。
【請求項９】
さらに特に前記ＦｌｅｘＲａｙ通信モジュール（１００）の詳細に関する予決定されたデータ伝送情報に基づき、前記シーケンスの機能を維持した状態のまま、呼出しの要求回数、前記加入者装置（１０２）に要求されるリソース（記憶装置及び計算能力）、及び／又は要求される処理時間を低減するように前記シーケンスのコマンドを最適化する、請求項８に記載の方法。
【請求項１０】
前記シーケンスのコマンドの最適化は、実質的データの伝送又はシーケンス実行の前に行われることを特徴とする、請求項９に記載の方法。
【請求項１１】
前記予決定された情報は、使用される伝送プロトコル又はさらに別の情報に基づいて実質的データの伝送又はシーケンス実行の前に理論的に求められることを特徴とする、請求項９又は請求項１０のいずれかに記載の方法。
【請求項１２】
前記予決定された情報は、実質的データ伝送又はシーケンス実行の前に、対応するデータ伝送を実際に分析して求められることを特徴とする、請求項９又は請求項１０のいずれかに記載の方法。
【請求項１３】
前記ＦｌｅｘＲａｙ通信モジュールにおける前記シーケンスが、実質的データ伝送又はシーケンス実行の前に、ハードウェアに組み込まれ又はプログラムされることを特徴とする、請求項７〜１２のいずれかに記載の方法。
【請求項１４】
前記基本コマンドがそれぞれ、
アクセス方式（ブロック読出し／書込み、構成データ及び／又は実質的データ）用のフラグ（１又は複数ビット）と、
アクセス位置を示すアドレス（複数ビット）と、
伝送されるデータワード数のためのカウンタ、又はデータが前記ＦｌｅｘＲａｙ通信接続（１０１）を介したアクセスの後で送信されるべきかを設定するフラグと、
任意に巡回冗長検査（ＣＲＣ）又はチェックサムと、
を有することを特徴とする、請求項７〜１３のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦｌｅｘＲａｙ（登録商標）通信接続と連携するためのＦｌｅｘＲａｙ通信モジュールであって、メッセージがＦｌｅｘＲａｙ通信接続を介して伝送され、加入者インタフェースを介してＦｌｅｘＲａｙ通信モジュールに組み込まれる加入者装置を有する、ＦｌｅｘＲａｙ通信接続と連携するためのＦｌｅｘＲａｙ通信モジュールに関する。
【０００２】
また、本発明は、ＦｌｅｘＲａｙ加入者装置とＦｌｅｘＲａｙ通信接続との間でメッセージを伝送する方法であって、ＦｌｅｘＲａｙ通信モジュールが通信接続と接続され、加入者装置が加入者インタフェースを介して通信モジュールに接続される方法に関する。
【０００３】
さらに、本発明は、前述の形式の方法を実現するための、前述の形式のＦｌｅｘＲａｙ通信モジュールを含むＦｌｅｘＲａｙ通信制御装置に関する。
【背景技術】
【０００４】
通信システム及びバスシステムといった通信接続を利用した制御装置、センサ、及びアクチュエータのネットワーク化は、近代的な車両の製造、特に工作機械分野などの機械工学、及びオートメーション化の領域において近年急激に増加している。これらネットワーク化によれば、機能を複数の制御装置に分散させて相乗効果を引き出すことができる。即ち、ここでは機能分散型のシステムが関連する。様々なステーション間の通信は、バスシステムを介して、即ち通信システムを介して行われることが多くなっている。バスシステムによる通信とアクセス及び受信の仕組み、並びにエラー処理は、所定のプロトコルに基づいて制御される。例えば公知のプロトコルとして、現在ＦｌｅｘＲａｙプロトコル仕様バージョン２．０又は２．１に基づく、ＦｌｅｘＲａｙプロトコルが挙げられる。ＦｌｅｘＲａｙは、特に車両に導入される高速で決定論的でフォールト・トレラントな（耐障害性を持つ）バスシステムである。ＦｌｅｘＲａｙプロトコルは、構成要素、即ち加入者装置又は伝送メッセージに固定のタイムスロットを割り当てる時分割多重アクセス（ＴＤＭＡ）方式に基づいて機能する。固定のタイムスロットにおいて、加入者装置又は伝送メッセージには通信接続の排他的使用権が与えられる。その際、タイムスロットは設定されたサイクルで繰り返されるため、メッセージがバスを介して伝送される時点を事前に正確に予告することができ、バス使用権の取得も決定論的に行われる。バスシステムにおいてメッセージを伝送するための帯域幅の利用を最適化するため、ＦｌｅｘＲａｙは、サイクルを静的な部分と動的な部分とに分割する。このとき、バスサイクルの先頭にある静的な部分に固定のタイムスロットが存在する。動的な部分では、タイムスロットは動的に設定される。動的部分では、タイムスロットが動的に設定される。動的な部分においては、短時間、即ちミニスロット（Ｍｉｎｉｓｌｏｔ）の間にのみ排他的バス使用権が与えられる。ミニスロット内でバスアクセスが行われる場合に限れば、タイムスロットは必要な時間だけ追加で割り当てられる。即ち、帯域幅は実際に必要な場合に限り使用されるのである。その際、ＦｌｅｘＲａｙは、物理的に接触しない二重のバスを介して最大１０Ｍｂｉｔ／ｓのデータ転送速度で通信する。この二重のチャネルは、特にＯＳＩ参照モデルの物理層に相当する。チャネルは、主として冗長的でフォールト・トレラントなメッセージ伝送に役立つ。しかし、それぞれ種類の異なるメッセージを伝送することも可能であり、そうした場合はデータ転送速度が倍になるであろう。ＦｌｅｘＲａｙは、もちろん遅いデータ転送速度でも動作する。
【０００５】
同期機能を実現し、２つのメッセージの間に短い時間間隔を入れて帯域幅を最適化するため、通信ネットワーク上に分散する構成要素である加入者装置は、共通的な時間の基準となるグローバル時間を必要とする。時刻を同期させるために、サイクルの静的部分において同期メッセージが伝送される。その際、ＦｌｅｘＲａｙ仕様に準拠した特別なアルゴリズムによって、構成要素のローカル時計は、全てのローカル時計がグローバル時間に同期して稼動するように調整される。
【０００６】
ＦｌｅｘＲａｙネットワークのノード、ＦｌｅｘＲａｙ加入者装置、又はホストは、加入者プロセッサ（即ちホストプロセッサ）と、ＦｌｅｘＲａｙコントローラ又は通信制御装置と、バス監視用のバスガーディアンとを有している。その際、加入者プロセッサ（即ちホストプロセッサ）は、ＦｌｅｘＲａｙ通信制御装置を介して伝送されるデータを伝達・処理する。ＦｌｅｘＲａｙネットワークでの通信のために、最大254バイトのメッセージ又はメッセージオブジェクトを構成することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、本発明の課題は、最適な方法でＦｌｅｘＲａｙネットワークでの通信をサポートするＦｌｅｘＲａｙ通信モジュールを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の課題は、特許請求の範囲の請求項１に記載の全ての構成要件を備えたＦｌｅｘＲａｙ通信モジュールと、請求項６に記載のＦｌｅｘＲａｙ通信制御装置と、請求項７に記載の方法によって解決される。本発明に係る通信モジュールは、加入者装置と通信接続との間でメッセージを伝送するためにメッセージ保存用の装置を備えることを特徴とする。その場合の伝送は、ステートマシンによるメッセージ保存・伝送用の情報に関して設定可能なシーケンスが設定され、又は呼び出されるように制御される。
【０００９】
本発明の特徴として、通信モジュールにおいて、ステートマシンがハードウェアに組み込まれ、及び／又はシーケンスがハードウェアに組み込まれる。
【００１０】
代わりに、ＦｌｅｘＲａｙ通信モジュールにおいて、加入者インタフェースを介してステートマシンを加入者装置によって自由にプログラムすることも可能である。特に本発明の特徴として、本発明において扱う情報には、アクセスタイプ、及び／又はアクセス方式、及び／又はアクセスアドレス、及び／又はデータ値、及び／又はデータに関する制御情報、及び／又は少なくとも１つのデータの防護に関する情報が含まれる。
【００１１】
本発明の特徴は、ＦｌｅｘＲａｙ通信接続と連携するための、メッセージをＦｌｅｘＲａｙ通信接続を介して伝送するＦｌｅｘＲａｙ通信モジュールを備えたＦｌｅｘＲａｙ装置にも該当する。前記装置は、加入者インタフェースを介して加入者装置と通信モジュールとを連携させることと、加入者装置と通信モジュールとの間のメッセージ伝送用のメッセージ保存装置を備えることと、メッセージ保存・伝送用の情報に関する設定可能なシーケンスがステートマシンにより設定され又は呼び出されるように伝送が制御されることと、を特徴とする。
【００１２】
同様に、本発明の特徴は、メッセージを伝送する方法であって、ＦｌｅｘＲａｙ通信モジュールをＦｌｅｘＲａｙ通信接続と連携させ、メッセージをＦｌｅｘＲａｙ通信接続を介して伝送する方法にも該当する。前記方法は、加入者インタフェースを介して加入者装置を通信モジュールと接続させ、加入者装置と通信モジュールとの間のメッセージ伝送のためにメッセージ保存用装置にメッセージを保存することを可能にし、メッセージ保存・伝送用の情報に関する設定可能なシーケンスがステートマシンによって設定され又は呼び出されるように伝送を制御することを特徴とする。
【００１３】
本発明の特徴として、物理層として表現されるＦｌｅｘＲａｙ通信接続との連携を行うためのＦｌｅｘＲａｙ通信モジュールは、ＦｌｅｘＲａｙ通信ネットワークにおいてＦｌｅｘＲａｙ通信モジュールに組み込まれる加入者装置を有し、メッセージはＦｌｅｘＲａｙ通信ネットワークを介して伝送される。その際、ＦｌｅｘＲａｙ通信モジュールは、本発明の特徴として、伝送メッセージの少なくとも一部を保存する第一の装置と、第一の装置を加入者装置と接続させる第二の装置と、ＦｌｅｘＲａｙ通信接続としての物理層を第一の装置と接続させる第三の装置とを有する。
【００１４】
その際、第一の装置は、本発明の特徴として、メッセージハンドラとメッセージ記憶部とを有する。メッセージハンドラは、メッセージ記憶部へのデータアクセスに関連して、第一及び第二の装置のデータバスに関わる制御を行う。その際、本発明の特徴として、第一の装置のメッセージ記憶部はヘッダセグメントとデータセグメントに分割される。
【００１５】
本発明の特徴として、ホスト、即ちＦｌｅｘＲａｙ加入者装置又はホストプロセッサに接続するための第二の装置は、入力バッファ及び出力バッファを有している。入力バッファ若しくは出力バッファ又は最適には両方のバッファは、有利な実施形態として、読出し及び／又は書込み専用に交互に切り替えられるサブバッファ（Ｔｅｉｌｐｕｆｆｅｒｓｐｅｉｃｈｅｒ）とシャドウバッファ（Ｓｃｈａｔｔｅｎｓｐｅｉｃｈｅｒ）に分割され、データの完全性が保証される。サブバッファとそれに付随するシャドウバッファとを読出し又は書込みに交互に切り替えることは、本発明の特徴として、各アクセスの交換又は記憶装置の内容の交換によって実現される。
【００１６】
このとき、本発明の特徴として、各サブバッファと各シャドウバッファは、２つのＦｌｅｘＲａｙメッセージが１つずつ有するデータ領域及び／又はヘッダ領域を保存できるように構成される。
【００１７】
様々な加入者装置又はホストに適切に仕様を合わせられるように、第二の装置は、加入者装置に特化したサブモジュールと加入者装置から独立したサブモジュールとから構成されるインタフェースモジュールを含む。これにより、加入者装置との調整には加入者装置に特化したサブモジュールのみを変更すればよく、全体としてＦｌｅｘＲａｙ通信モジュールの柔軟性が向上する。その際、サブモジュールは、当該インタフェースモジュール内でソフトウェアごとに実現される。つまり、各サブモジュールはソフトウェア機能として実現される。
【００１８】
ＦｌｅｘＲａｙにおける冗長的伝送に応じて、第三の装置は、本発明の特徴として、第一のインタフェースモジュールと第二のインタフェースモジュールとを含む。また、第三の装置の内部は、それぞれ２つのデータ装置と接続する２つのデータバスに分割される。本発明の特徴として、第三の装置は、２つのデータバス及びそれぞれの２つのデータ装置を考慮して、第一のバッファと第二の２つのバッファをも含む。その際、第一及び第二のバッファは、2つのＦｌｅｘＲａｙメッセージの少なくとも１つのデータ領域が保存可能であるように構成される。本発明の特徴として、第三の装置の各インタフェースモジュールは、シフトレジスタとＦｌｅｘＲａｙプロトコル・ステートマシンとを含む。
【００１９】
ＦｌｅｘＲａｙプロトコル仕様のうち特にバージョン２．０又は２．1は本発明に基づくＦｌｅｘＲａｙ通信モジュールによって完全にサポートされ、例えば最大１２８個のメッセージ又はメッセージオブジェクトを構成することができる。その際、メッセージの各データフィールド又は各データ領域の大きさに従い、様々なサイズのメッセージオブジェクトを保存するための柔軟に構成可能なメッセージ記憶部が備えられる。したがって、本発明の特徴として、様々な長さのデータフィールドを有するメッセージ又はメッセージオブジェクトが構成される。その際、本発明の特徴として、メッセージ記憶部は先入先出法（ＦＩＦＯ：ｆｉｒｓｔ  ｉｎ−ｆｉｒｓｔ  ｏｕｔ）により構成され、構成可能な受信時の先入先出法（Ｅｍｐｆａｎｇｓ−ＦＩＦＯ）が備えられる。記憶装置内の各メッセージ又は各メッセージオブジェクトは、受信バッファ若しくは送信バッファ又は構成可能な受信時の先入先出法の一部として構成される。同様に、ＦｌｅｘＲａｙネットワークでのフレームＩＤ、チャネルＩＤ及びサイクルカウンタに基づく許容範囲のフィルタリングが可能である。したがって、本発明の特徴として、ネットワーク管理がサポートされる。さらに、本発明の特徴として、マスク可能なモジュール割込みも備えられる。
【００２０】
本発明のさらなる特徴及び有利な実施形態は、特許請求の範囲に記載の請求項の構成要件及び本明細書から明らかとなるであろう。
【発明を実施するための最良の実施形態】
【００２１】
図１では、加入者装置又はホスト１０２をＦｌｅｘＲａｙ通信接続１０１へ、即ちＦｌｅｘＲａｙの物理層へ連携させるためのＦｌｅｘＲａｙ通信モジュール１００が示されている。さらに、ＦｌｅｘＲａｙ通信モジュール１００は、接続１０７を介して加入者装置又は加入者装置プロセッサ１０２と、また接続１０６を介して通信接続１０１と接続している。伝送時間及びデータの完全性について問題が発生しないように連携を行うため、図に示されている通り、ＦｌｅｘＲａｙ通信モジュールは本質的に３つのコンポーネントに区分される。ここで第一のコンポーネント１０５は、特にクリップボードなど、伝送メッセージの少なくとも一部分を保存するために用いられる。第二のコンポーネント１０４は、接続１０７及び１０８を介して、加入者装置１０２と前記第一のコンポーネント１０５との間を中継する。同様に第三のコンポーネント１０３は、接続１０６及び１０９を介して、加入者装置１０１と第一のコンポーネント１０５との間を中継する。これにより、メッセージの一部、特に第一のコンポーネント１０５内または第一のコンポーネント１０５から出力されるＦｌｅｘＲａｙメッセージの一部としてのデータの入力及び出力を、データの完全性を保証しながら最適な速度で非常に柔軟に行うことを実現する。
【００２２】
図２では、通信モジュール１００が、好適な実施形態にとしてあらためて詳細に示されている。同様に、各接続１０６〜１０９が詳細に示されている。ここで第二のコンポーネント１０４は、入力バッファ（ＩＢＦ）２０１、出力バッファ（ＯＢＦ）２０２、並びに２つの構成要素２０３及び２０４から構成されるインタフェースモジュールを含む。第一のサブモジュール２０３は加入者装置から独立しており、第二のサブモジュール２０４は加入者装置に特化している。加入者装置に特化したサブモジュール（カスタマＣＰＵインタフェース：ＣＩＦ）２０４は、加入者装置に特化したホストＣＰＵ１０２、即ちカスタマ専用加入者装置をＦｌｅｘＲａｙ通信モジュール１００と接続させる。さらに、双方向のデータバス２１６と、アドレスバス２１７と、制御入力２１８とが備えられる。同様に、割込み出力２１９が備えられる。加入者装置に特化したサブモジュール２０４は、加入者装置から独立したサブモジュール２０３（汎用ＣＰＵインタフェース：ＧＩＦ）と接続する。つまり、ＦｌｅｘＲａｙ−ＩＰモデルとも呼ばれるＦｌｅｘＲａｙ通信モジュールは、汎用の、即ち一般的なＣＰＵインタフェースを有する。当該加入者装置に特化したサブモジュール、即ちカスタマＣＰＵインタフェースＣＩＦを介して、ＣＰＵインタフェースには多くの様々なカスタマに特化したホストＣＰＵが接続される。これにより、加入者装置に応じて変更するのはサブモジュール２０４のみとなり、コストが明らかに低減される。
【００２３】
入力バッファ２０１及び出力バッファ２０２は、１つの記憶モジュール又は別々の記憶モジュールの中で構成することが可能である。入力バッファ２０１は、メッセージ記憶部３００へ伝送するためのメッセージを一時的に格納する。ここで、入力バッファ２０１は、特に構成情報を含むヘッダセグメント、及びデータセグメント又はペイロードからそれぞれ成る２つの完全なメッセージを保存できるように構成されるのが好適である。この場合、入力バッファは２つの構成要素（サブバッファとシャドウバッファから）から構成される。これにより、入力バッファの２つの構成要素に交互に書込むことで、又はアクセスの切り替えを行うことで、加入者装置ＣＰＵ１０２とメッセージ記憶部２００との間の伝送をより高速に行うことができるようになる。同様に、出力バッファ２０２は、メッセージ記憶部３００から加入者装置ＣＰＵ１０２へ伝送するためのメッセージを一時的に格納する。ここで、出力バッファ２０２も、特に構成情報を含むヘッダセグメント、及びデータセグメント又はペイロードからそれぞれ成る２つの完全なメッセージを保存できるように構成される。また、出力バッファ２０２は２つの構成要素、サブバッファとシャドウバッファに分割される。これにより、２つの構成要素を交互に読込むことによって、又はアクセスの切り替えを行うことで、加入者装置又はホストＣＰＵ１０２とメッセージ記憶部２００との間の伝送をより高速に行うことができるようになる。このブロック２０１〜２０４から成る第二のコンポーネント１０４は、図に示すように、第一のコンポーネント１０５に接続される。
【００２４】
コンポーネント１０５は、メッセージハンドラ（ＭＨＤ）２００とメッセージ記憶部３００（Ｍｅｓｓａｇｅ  ＲＡＭ）とから構成される。メッセージハンドラは、入力バッファ２０１及び出力バッファ２０２と、メッセージ記憶部３００との間のデータ転送を検証／制御する。同様に、メッセージハンドラは、第三のコンポーネント１０３を介する逆方向のデータ伝送を検証／制御する。メッセージ記憶部は、シングルポートＲＡＭとして構成されるのが好適である。このＲＡＭ記憶装置は、メッセージ又はメッセージオブジェクト、即ち構成及び状態に関するデータを含む実質的なデータを保存する。メッセージ記憶部３００の厳密な構造は、図３でより詳細に示される。
【００２５】
第三のコンポーネント１０３は、ブロック２０５〜２０８から構成される。ＦｌｅｘＲａｙ物理層の２つのチャネルに応じて、コンポーネント１０３は、２つずつのデータ方向を有する２つのデータバスに分割される。接続２１３及び２１４を参照すると明らかなように、ＲｘＡ（受信）とＴｘＡ（送信）によるチャネルＡ、及びＲｘＢとＴｘＢによるチャネルＢの２つのデータ方向が示されている。接続２１５は、任意の双方向の制御入力である。第三のコンポーネント１０３の接続は、チャネルＢのための第一のバッファ２０５及びチャネルＡのための第二のバッファ２０６を介して行われる。２つのバッファ（一時的バッファＲＡＭ：ＲＡＭ  Ａ  及びＲＡＭ  Ｂ）は、第一のコンポーネント１０５からの又は第一のコンポーネント１０５へのデータ伝送のためのバッファメモリ（緩衝記憶装置）として機能する。２つのチャネルに応じて、２つのバッファ２０５及び２０６は、それぞれインタフェースモジュール２０７及び２０８と接続される。インタフェースモジュール２０７及び２０８は、送信／受信シフトレジスタ及びＦｌｅｘＲａｙプロトコル有限ステートマシンから構成されるＦｌｅｘＲａｙプロトコル制御部又はバスプロトコル制御部を含む。したがって、双方のバッファ２０５及び２０６は、インタフェースモジュール又はＦｌｅｘＲａｙプロトコル制御部２０７及び２０８のシフトレジスタとメッセージ記憶部３００との間のデータ伝送のための緩衝記憶装置として機能する。ここでも、本発明の特徴として、各バッファ２０５又は２０６によりデータフィールド、即ち２つのＦｌｅｘＲａｙメッセージのペイロードセグメント又はデータセグメントが保存される。
【００２６】
さらに、通信モジュール１００内に、グローバル時間供給部（ＧＴＵ）２０９が示されている。グローバル時間供給部は、ＦｌｅｘＲａｙでのグローバル時間スロット、即ちマイクロティック（Ｍｉｋｒｏｔｉｃｋ：μＴ）及びマクロティック（Ｍａｋｒｏｔｉｃｋ：ＭＴ）を提示する役割を果たす。また、グローバル時間供給部２０９により、フォールト・トレラントなサイクルカウンタのタイミングの同期とＦｌｅｘＲａｙの静的及び動的セグメントにおける同期処理の制御が行われる。ブロック２１０は、システム全体制御部（Ｓｙｓｔｅｍ  Ｕｎｉｖｅｒｓａｌ  Ｃｏｎｔｒｏｌ：ＳＵＣ）としてＦｌｅｘＲａｙ通信制御装置の動作モードを判定／制御する。動作モードには、ウェイクアップ、スタートアップ、再統合又は統合、ノーマルオペレーション、及びパッシブオペレーションが含まれる。
【００２７】
ブロック２１１は、ＦｌｅｘＲａｙプロトコル仕様ｖ２．０に記載されているように、ネットワーク／エラー管理部（ＮＥＭ）を示している。さらに、ブロック２１２は割込み制御部（ＩＮＴ）を示している。割込み制御部は、ステータス・エラー割込みフラグ（ｓｔａｔｕｓ  ａｎｄ  ｅｒｒｏｒ  ｉｎｔｅｒｒｕｐｔ  ｆｌａｇ）を管理し、加入者装置ＣＰＵ１０２への割込み出力２１９を判定／制御する。さらに、ブロック２１２は、時間割込みを生成するために、１つの絶対的タイミングの生成器及び１つの相対的タイミングの生成器を含む。
【００２８】
ＦｌｅｘＲａｙネットワークの通信においては、最大２５４バイトのメッセージオブジェクト又はメッセージ（メッセージバッファ）を構成することが可能である。メッセージ記憶部３００は、典型的には最大１２８メッセージオブジェクトを保存できるメッセージＲＡＭ記憶装置（Ｍｅｓｓａｇｅ  ＲＡＭ）である。メッセージ自体の処理又は管理に関わる全機能は、メッセージハンドラ２００に実装される。機能としては、典型的には許容範囲のフィルタリング、２つのＦｌｅｘＲａｙプロトコル制御ブロック２０７と２０８、及びメッセージ記憶部３００、つまりメッセージＲＡＭとの間のメッセージ転送、送信順序管理、及び構成データ又はステータスデータの準備などがある。
【００２９】
外部のＣＰＵ、即ち加入者装置プロセッサ１０２としての外部プロセッサは、加入者インタフェースを介し、加入者装置に特化した構成要素２０４によって、ＦｌｅｘＲａｙ通信モジュールのレジスタに直接アクセスすることができる。その際、複数のレジスタが使用される。レジスタは、ＦｌｅｘＲａｙプロトコル制御部としてのインタフェースモジュール２０７及び２０８、メッセージハンドラ２００、グローバル時間供給部２０９、システム全体制御部２１０、ネットワーク／エラー管理部２１１、割込み制御部２１２、並びにメッセージＲＡＭとしてのメッセージ記憶部３００へのアクセスを構成／制御し、対応するステータスを表現するために導入される。少なくともこのレジスタの構成要素に関しては、図４〜６及び図７〜９においてより詳細に説明する。前述の本発明の１つの実施形態に基づくＦｌｅｘＲａｙ通信モジュールによって、ＦｌｅｘＲａｙ仕様ｖ２．０又はｖ２．１が容易に実現される。それに伴い、対応するＦｌｅｘＲａｙの機能性を備えたＡＳＩＣ（特定用途向けＩＣ）又はマイクロコントローラを容易に作製することができる。
【００３０】
図３では、メッセージ記憶部３００を区分化した様子が詳細に示されている。ＦｌｅｘＲａｙプロトコル仕様に要求されるＦｌｅｘＲａｙ通信制御装置の機能を実現するためには、送信するメッセージを準備するメッセージ記憶部（送信バッファ）、及び正常に受信したメッセージを保存するためのメッセージ記憶部（受信バッファ）が必要である。ＦｌｅｘＲａｙプロトコルは、データ領域であるペイロード領域が０〜５４バイトのメッセージを許容する。図２で示されているように、メッセージ記憶部は、ＦｌｅｘＲａｙ通信モジュール１００の構成要素である。後述の方法及びメッセージ記憶部に関連し、特にＲＡＭを使用する場合の送信メッセージ及び受信メッセージの保存について以下に記載する。まず本発明の１つの実施形態に基づく仕組みによって、所定の容量を持つメッセージ記憶部に可変の数のメッセージを保存することができる。このとき保存可能なメッセージ数は、個々のメッセージのデータ領域の容量に依存する。これにより、メッセージのデータ領域の容量は制限されず、求められる記憶部の容量を最小限に抑えることができ、記憶部を効率よく最大限に活用することができる。以下、ＦｌｅｘＲａｙ通信制御装置のための、特にＲＡＭによるメッセージ記憶部の可変的な区分化について詳しく説明する。
【００３１】
実装としてメッセージ記憶部は、固定のワード長をｎビット（例えば８、１６、３２ビット等）に、所定のメモリ深度をｍワードとして構成される（ｍ、ｎは自然数）。その際、メッセージ記憶部３００は、２つのセグメント、即ちヘッダセグメント（ＨＳ）とデータセグメント（ＤＳ）（Ｐａｙｌｏａｄ  Ｓｅｃｔｉｏｎ、  Ｐａｙｌｏａｄ  Ｓｅｇｍｅｎｔ）とに分割される。これにより、メッセージ単位に１つのヘッダ領域（ＨＢ）及び１つのデータ領域（ＤＢ）が適用される。即ち、メッセージ０、１〜ｋ（ｋは自然数）に対して、ヘッダ領域（ＨＢ）０、ＨＢ１〜ＨＢｋ及びデータ領域ＤＢ０、ＤＢ１〜ＤＢｋが適用される。メッセージの中では、第一のデータと第二のデータは区別して扱われる。第一のデータとはＦｌｅｘＲａｙメッセージに関する構成データ及び／又はステータスデータに相当し、各ヘッダ領域（ＨＢ）（ＨＢ０、ＨＢ１…ＨＢｋ）に設けられる。伝送対象の実質的なデータである第二のデータは、各データ領域ＤＢ（ＤＢ０、ＤＢ１…ＤＢｋ）に適切に設けられる。このように、第一のデータについてはメッセージ単位で（ビット、バイト又はワードで測定される）第一のデータ量、またメッセージ内の第二のデータについては（同様にビット、バイト又はワードで測定される）第二のデータ量が発生する。第二のデータ量はメッセージ単位で異なっていてもよい。ヘッダセグメント（ＨＳ）とデータセグメント（ＤＳ）の分割は、メッセージ記憶部３００において可変的に行われる。つまり２つの領域間に一定の境界は存在しない。本発明の１つの実施形態として、ヘッダセグメント（ＨＳ）とデータセグメント（ＤＳ）の分割は、メッセージ数ｋ、実質的なデータ量としての第二のデータ量、メッセージ又はｋ個の全メッセージのデータ量に依存する。本発明の１つの実施形態としては、各メッセージの構成データＫＤ０、ＫＤ１〜ＫＤｋにそれぞれ、データポインタＤＰ０、ＤＰ１〜ＤＰｋが直接割り当てられる。本発明の１つの実施形態としては各ヘッダ領域（ＨＢ）（ＨＢ０、ＨＢ１〜ＨＢｋ）に一定数のワード、ここでは２ワードが割り当てられ、構成データＫＤ（ＫＤ０、ＫＤ１…ＫＤｋ）とデータポインタ（ＤＰ）（ＤＰ０、ＤＰ１…ＤＰｋ）が必ず同一のヘッダ領域（ＨＢ）内に備えられる。ヘッダ領域（ＨＢ）を有するヘッダセグメント（ＨＳ）の容量又は第一のデータ量は、保存されるｋ個のメッセージに依存する。さらに、ヘッダセグメント（ＨＳ）に続いて、実質的なメッセージデータＤ０、Ｄ１〜Ｄｋを保存するためのデータセグメント（ＤＳ）が結合される。データセグメント（又はデータセクション）（ＤＳ）のデータ量は、そこに含まれるメッセージデータの各データ量に依存する。例えば、データ領域ＤＢ０では６ワード、ＤＢ１では１ワード、ＤＢｋ３０では２ワードなどとなる。各データポインタＤＰ０、ＤＰ１〜ＤＰｋは、必ず各メッセージ０、1〜ｋのデータＤ０、Ｄ１〜Ｄｋの始点、即ち各データ領域ＤＢ０、ＤＢ１〜ＤＢｋの開始アドレスを指す。これにより、メッセージ記憶部のヘッダセグメント（ＨＳ）とデータセグメント（ＤＳ）の分割を可変的に行うことができ、その分割はメッセージ数自体、メッセージの各データ量、及び第二のデータ��全体に依存することとなる。メッセージがより少ない数で構成された場合はヘッダセグメントはより小さくなり、メッセージ記憶部内の空き領域はデータセグメント（ＤＳ）に追加されてデータ保存のために使用される。こうした可変性によって、記憶部が効率よく最大限に活用されることが保証される。したがって、比較的小さな記憶装置を使用することも可能となる。特に空きデータセグメント（ＦＤＳ）の容量は、保存されるｋ個のメッセージとメッセージの各第二のデータ量との組み合わせに応じて最小化され、場合によってはゼロとなる。
【００３２】
データポインタを使用する以外に、第一及び第二のデータ、即ち、構成データＫＤ（ＫＤ０、ＫＤ１、…、ＤＫｋ）及び実質的データＤ（Ｄ０、Ｄ１、…、Ｄｋ）を、所定の順序で保存してもよい。そうすることにより、ヘッダセグメント（ＨＳ）内のヘッダ領域（ＨＢ）（ＨＢ０〜ＨＢｋ）の順序とデータセグメント内のデータ領域（ＤＢ）（ＤＢ０〜ＤＢｋ）の順序はそれぞれ一致する。その場合は、状況によってデータポインタが必要とされない可能性がある。
【００３３】
本発明の特別な実施形態において、ヘッダセグメント（ＨＳ）及びデータセグメント（ＤＳ）内に保存されたデータの正確さを担保するため、メッセージ記憶部にエラー検出生成部、特にパリティビット生成部と、エラー検出判定部、特にパリティビット判定部が割り当てられる。その際、ワード又は領域（ＨＢ及び／又はＤＢ）の単位でチェックサム、特にパリティビットが併せて構成される。さらなる別の検査識別子、例えばＣＲＣ（巡回冗長検査）又はＥＣＣ（誤り符合訂正）等のより高度な識別子を用いて構成してもよい。これにより、メッセージ記憶部を固定的に分割することと比較して、以下の（本発明の１つの実施形態による）利点が挙げられる。
【００３４】
使用者は、プログラミングの際に比較的数が多くデータフィールドが小さいメッセージを使用するのか、又は比較的数の少なくデータフィールドが大きいメッセージを使用するのかを決定することができる。様々な容量のデータ領域を含むメッセージを構成する際に、実際の記憶容量を最も効率よく最大限に活用することが可能である。また、使用者は、１つのデータ記憶部の領域を様々なメッセージのために共用することができる。
【００３５】
集積回路により通信制御装置を実現する際、メッセージ記憶部の容量は、使用される記憶装置のメモリ深度をアプリケーションからの要求に合わせて調整することにより、調節される。その際、通信制御装置のその他の機能は変更されない。
【００３６】
図４〜６及び７〜９を参照しながら、ホストＣＰＵのアクセスについて、即ち、バッファ装置２０１及び２０２を介した構成データ又はステータスデータ及び実質的データの書込みと読出しについてさらにより詳細に記述する。その際、データの完全性が保証されるのと同時に高い伝送速度が保証されるように、データ伝送に関する疎結合（Ｅｎｔｋｏｐｐｌｕｎｇ）を確立することを目的とする。対応するプロセスの制御はメッセージハンドラ２００を介して行われるが、それについては後ほど図１０、１１及び１２においてあらためて詳細に記述する。
【００３７】
図４、５及び６では、まず、加入者装置ＣＰＵ１０２のホストＣＰＵによる、入力バッファ２０１を介したメッセージ記憶部３００への書込みアクセスについてより詳細に説明する。図４では通信モジュール１００が再度示されているが、参照しやすいように、ここでは通信モジュール１００に関連する構成要素が示されている。ここでは、シーケンス制御の役割を果たすメッセージハンドラ２００と２つの制御レジスタ４０３及び４０４が示されている。制御レジスタは、図に示されているように、通信モジュール１００内のメッセージジハンドラ２００の外部に配置されているが、メッセージハンドラ２００自体の内部に含まれていてもよい。その際、符号４０３は入力要求レジスタ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｃｏｍｍａｎｄ  Ｒｅｑｕｅｓｔ  Ｒｅｇｉｓｔｅｒ）を、符号４０４は入力マスクレジスタ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｃｏｍｍａｎｄ  Ｍａｓｋ  Ｒｅｇｉｓｔｅｒ）を表している。ホストＣＰＵ１０２によるメッセージ記憶部（Ｍｅｓｓａｇｅ  ＲＡＭ）３００への書込みアクセスは、即ち、中間に配置される入力バッファ２０１を介して行われる。この入力バッファ記憶装置２０１は、分割又は二重化される。つまり、サブバッファ４００とサブバッファに付随するシャドウバッファ４０１として構成される。これにより、以下に述べるように、ホストＣＰＵ１０２によるメッセージ若しくはメッセージオブジェクト又はメッセージ記憶部３００のデータへのアクセスが継続的に行われ、データの完全性及び高速化されたデータ伝送が保証される。アクセス制御は、入力要求レジスタ４０３及び入力マスクレジスタ４０４を介して行われる。レジスタ４０３では、コード０〜３１によって、例えば３２ビット幅のレジスタ４０３における各ビット位置が表される。同様に、レジスタ４０４でもレジスタ４０４におけるビット位置０〜３１が表される。
【００３８】
本発明の１つの実施形態として、例えば、レジスタ４０３のビット位置０〜５、１５、１６〜２１及び３１は、シーケンス制御に関連して特別な機能を担っている。レジスタ４０３のビット位置０〜５には、メッセージ識別子としての識別子ＩＢＲＨ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｒｅｑｕｅｓｔ  Ｈｏｓｔ）を登録することができる。同様に、レジスタ４０３のビット位置１６〜２１には、識別子ＩＢＲＳ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｒｅｑｕｅｓｔ  Ｓｈａｄｏｗ）を登録することができる。同様に、４０３のレジスタ位置１５にはアクセス識別子としてＩＢＳＹＨを、また４０３のレジスタ位置３１にはＩＢＳＹＳを登録することができる。着目すべきはレジスタ４０４の位置０〜２である。即ち、ＬＨＳＨ（Ｌｏａｄ  Ｈｅａｄｅｒ  Ｓｅｃｔｉｏｎ  Ｈｏｓｔ）を含むビット位置０及びＬＤＳＨ（Ｌｏａｄ  Ｄａｔａ  Ｓｅｃｔｉｏｎ  Ｈｏｓｔ）を含むビット位置１に加えて、データ識別子としてさらに別の識別子が登録される。このデータ識別子は、ここでは最も簡略化された形式、即ちそれぞれ１ビットで構成される。レジスタ４０４のビット位置２には、開始識別子として、ＳＴＸＲＨ（Ｓｅｔ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｘ  Ｒｅｑｕｅｓｔ  Ｈｏｓｔ）が書込まれる。続けて、入力バッファを介したメッセージ記憶部への書込みアクセスの処理について記載する。
【００３９】
ホストＣＰＵ１０２は、転送されるメッセージのデータを入力バッファ２０１に書込む。その際、ホストＣＰＵ１０２は、メッセージ記憶部のヘッダセグメント（ＨＳ）用のメッセージ構成及びヘッダデータ（ＫＤ）とメッセージ記憶部のデータセグメント（ＤＳ）用のメッセージの実質的な伝送対象データ（Ｄ）のいずれか、又は双方のデータを書込むことができる。構成データ及び／又は実質的データとしてのメッセージのどの部分が伝送されるべきなのかは、入力マスクレジスタ４０４内の特別なデータ識別子ＬＨＳＨ及びＬＤＳＨによって設定される。ここでＬＨＳＨは構成データＫＤとしてのヘッダデータが伝送されるべきかどうか、またＬＤＳＨはデータ（Ｄ）が伝送されるべきかどうかの設定を表す。入力バッファ２０１は２つの構成部分、即ちバッファ４００の構成要素とそれに付随するシャドウバッファ４０１から構成され交互にアクセスが行われるので、ＬＨＳＨ及びＬＤＳＨに対応するものとして、シャドウバッファ４０１に関連する２つのさらなるデータ識別子領域が設けられる。その領域であるレジスタ４０４のビット位置１６及び１７にあるデータ識別子は、それぞれＬＨＳＳ（Ｌｏａｄ  Ｈｅａｄｅｒ  Ｓｅｃｔｉｏｎ  Ｓｈａｄｏｗ）、ＬＤＳＳ（Ｌｏａｄ  Ｄａｔａ  Ｓｅｃｔｉｏｎ  Ｓｈａｄｏｗ）と呼ばれる。これらデータ識別子によって、シャドウバッファ４０１に関連する伝送プロセスが制御される。
【００４０】
開始ビット又は開始識別子ＳＴＸＲＨが、入力マスクバッファ４０４のビット位置２に設定されると、伝送される構成データ及び／又は実質的データがそれぞれメッセージ記憶部３００に転送された後、自動的に対応するメッセージオブジェクトのための送信要求（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｒｅｑｕｅｓｔ）が設定される。即ち、この開始識別子ＳＴＸＲＨにより伝送メッセージオブジェクトの自動送信が制御／開始される。
【００４１】
シャドウバッファに対応するものとして、開始識別子ＳＴＸＲＳ（Ｓｅｔ  Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｘ  Ｒｅｑｕｅｓｔ  Ｓｈａｄｏｗ）がある。典型的には入力マスクバッファ４０４のビット位置１８に含まれ、最も簡略化する場合は1ビットとして構成される。識別子ＳＴＸＲＳは、シャドウバッファ４０１に関連して識別子ＳＴＸＲＨと類似した機能を担う。
【００４２】
ホストＣＰＵ１０２が、メッセージ識別子を、特に入力バッファ２０１のデータの転送先であるメッセージ記憶部３００内のメッセージオブジェクトのコードを入力要求レジスタ４０３のビット位置０〜５のＩＢＲＨに書込むと、半円の矢印が示すように、入力バッファ２０１のサブバッファ４００とそれに付随するシャドウバッファ４０１の内容が交換（ｖｅｒｔａｕｓｃｈｔ）され、又はホストＣＰＵ１０２及びメッセージ記憶部３００からの２つのバッファ４００・４０１へのアクセスがそれぞれ交換される。このとき、典型的にはデータ転送、即ちメッセージ記憶部３００へのデータ伝送も開始される。メッセージ記憶部３００へのデータ伝送自体は、シャドウバッファ４０１から開始される。同時に、レジスタ領域ＩＢＲＨとＩＢＲＳとが交換される。さらに、ＬＨＳＨ／ＬＤＳＨと、ＬＨＳＳ／ＬＤＳＳとが交換される。同様に、ＳＴＸＲＨがＳＴＸＲＳと交換される。ここで、ＩＢＲＳは、メッセージの識別子、即ちシャドウバッファ４０１から転送中のメッセージオブジェクトを指すコードを示し、又はメッセージオブジェクトとしてメッセージ記憶部のどの領域がシャドウバッファ４０１の最新のデータ（ＫＤ及び／又はＤ）を含んでいるのかを示している。また、入力要求レジスタ４０３のビット位置３１にある識別子（この場合もやはり1ビットなど）ＩＢＳＹＳ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｂｕｓｙ  Ｓｈａｄｏｗ）により、その都度の伝送の開始に、シャドウバッファ４０１が関与するかどうかが表される。したがって、例えばＩＢＳＹＳ＝１の場合にはまさにシャドウバッファ４０１から伝送が行われるが、ＩＢＳＹＳ＝０の場合にはこれに該当しない。このＩＢＳＹＳのビットは、シャドウバッファ４０１とメッセージ記憶部３００との間でメッセージを転送中であることを示すために、例えばＩＢＲＨ、即ちレジスタ４０３のビット位置０〜５に書込みを行うように構成される。メッセージ記憶部３００へのデータ伝送が終了した後は、ＩＢＳＹＳはリセットされる。
【００４３】
シャドウバッファ４０１からのデータ転送が進行する間、ホストＣＰＵ１０２は、次に転送されるメッセージを入力バッファ又はサブバッファ４００に書込むことが可能である。例えば、さらに別のアクセス識別子ＩＢＳＹＨ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  Ｂｕｓｙ  Ｈｏｓｔ）をレジスタ４０３のビット位置１５で使用することで、識別子はより好適となる。シャドウバッファ４０１とメッセージ記憶部３００との間で伝送が進行する間、即ちＩＢＳＹＳ＝1である間に、ホストＣＰＵ１０２が、レジスタ４０３のビット位置０〜５のＩＢＲＨを書込むと、入力要求レジスタ４０３にＩＢＳＹＨが設定される。進行中の転送／伝送が終了すると直ちに要求された転送が開始され（前述のＳＴＸＲＨによる要求を参照）、ビットＩＢＳＹＨがリセットされる。ビットＩＢＳＹＳは、データがメッセージ記憶部に転送されることを表示するため、転送中は常に設定されたままである。ここで全実施形態において使用するビットは全て、１ビット以上の識別子として構成することが可能である。但し保存及び処理上の合理性から1ビットであることが好適である。
【００４４】
前述の仕組みによって、ホストＣＰＵ１０２は、ヘッダ領域（ＨＢ）及びデータ領域（ＤＢ）により構成されるメッセージ記憶部内のメッセージオブジェクトに、データを継続的に転送することができる。なお、ホストＣＰＵ１０２の入力バッファへのアクセス速度が、ＦｌｅｘＲａｙ  ＩＰモジュール、即ち通信モジュール１００の内部転送速度より低いこと、又は同じであることを前提とする。
【００４５】
図７、８及び９では、ホストＣＰＵ又は加入者装置ＣＰＵ１０２による、出力バッファ又は出力バッファ２０２を介した、メッセージ記憶部３００に対する読出しアクセスについてより詳細に説明する。図７では、通信モジュール１００が再度示されているが、参照しやすいように、ここでは通信モジュール１００に関連する構成要素が示されている。ここでは、シーケンス制御の役割を果たすメッセージハンドラ２００と２つの制御レジスタ７０３及び７０４が示されている。制御レジスタは、図に示されているように、通信モジュール１００内のメッセージハンドラ３００の外部に配置されているが、メッセージハンドラ２００自体の内部に含まれていてもよい。その際、符号７０３は出力要求レジスタ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｃｏｍｍａｎｄ  Ｒｅｑｕｅｓｔ  Ｒｅｇｉｓｔｅｒ）を、符号７０４は出力マスクレジスタ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｃｏｍｍａｎｄ  Ｍａｓｋ  Ｒｅｇｉｓｔｅｒ）を表している。ホストＣＰＵ１０２によるメッセージ記憶部３００に対する読出しアクセスは、中間に配置される出力バッファ２０２を介して行われる。この出力バッファ２０２も同様に分割又は二重化される。即ち、出力バッファ２０２はサブバッファ７０１とサブバッファに付随するシャドウバッファ７００として構成される。これにより、以下に述べるように、ホストＣＰＵ１０２によるメッセージ若しくはメッセージオブジェクト又はメッセージ記憶部３００のデータへのアクセスが継続的に行われ、データの完全性、メッセージ記憶部からホストへ逆方向に行われる高速化された伝送が保証される。アクセス制御は、出力要求レジスタ７０３及び出力マスクレジスタ７０４を介して行われる。レジスタ７０３においても、符号０〜３１によって３２ビット幅の典型的なレジスタの各ビット位置が表される。同様に、レジスタ７０４でもレジスタのビット位置０〜３１が表される。
【００４６】
本発明の１つの実施形態として、例えばレジスタ７０３のビット位置０〜５、８、９、１５、及び１６〜２１は、読出しアクセスのシーケンス制御に関して特別な機能を担っている。ここで、レジスタ７０３のビット位置０〜５には識別子ＯＢＲＳ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｒｅｑｕｅｓｔ  Ｓｈａｄｏｗ）をメッセージ識別子として登録できる。同様に、レジスタ７０３のビット位置１６〜２１には識別子ＯＢＲＨ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｒｅｑｕｅｓｔ  Ｈｏｓｔ）を登録できる。アクセス識別子として、レジスタ７０３のビット位置１５に識別子ＯＢＳＹＳ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｂｕｓｙ  Ｓｈａｄｏｗ）を登録できる。着目すべきなのは、出力マスクレジスタ７０４のビット位置０及び１である。即ち、ＲＨＳＳ（Ｒｅａｄ  Ｈｅａｄｅｒ  Ｓｅｃｔｉｏｎ  Ｈｏｓｔ）を含むビット位置０、及びＲＤＳＳ（Ｒｅａｄ  Ｄａｔａ  Ｓｅｃｔｉｏｎ  Ｓｈａｄｏｗ）を含むビット位置１に加え、データ識別子としてさらに別の識別子が登録される。さらなる識別子として、典型的には、ビット位置１６と１７にＲＤＳＨ（Ｒｅａｄ  Ｄａｔａ  Ｓｅｃｔｉｏｎ  Ｈｏｓｔ）とＲＨＳＨ（Ｒｅａｄ  Ｈｅａｄｅｒ  Ｓｅｃｔｉｏｎ  Ｈｏｓｔ）が設けられる。このデータ識別子は、ここでは最も簡略化された形式、即ちそれぞれ１ビットで構成される。レジスタ７０３のビット位置9には、開始識別子ＲＥＱが登録される。さらに転送識別子ＶＩＥＷが設けられ、典型的にはレジスタ７０３のビット位置８に登録される。
【００４７】
ホストＣＰＵ１０２は、要求するメッセージの識別子、特に要求するメッセージオブジェクトのコードをＯＢＲＳに、即ちレジスタ７０３のビット位置０〜５に書込みながら、メッセージ記憶部３００のメッセージオブジェクトのデータを要求する。この場合も逆方向の伝送と同じく、ホストＣＰＵは、ヘッダ領域におけるメッセージのステータスまたは構成及びヘッダデータ（ＫＤ）とデータ領域におけるメッセージの伝送対象の実質的データ（Ｄ）のいずれか、又は両データを読み込むことができる。ここでヘッダ領域及び／又はデータ領域のデータのどの部分を伝送するべきかは、逆方向の伝送と対比可能であるが、ＲＨＳＳ及びＲＤＳＳの設定により示される。即ち、ＲＨＳＳはヘッダデータが読み込まれるべきかどうか、またＲＤＳＳは実質的データが読み込まれるべきかどうかを示す。
【００４８】
開始識別子は、メッセージ記憶部からシャドウバッファ７００への伝送を開始する役割を果たす。即ち、識別子として最も簡略化されて１ビットが使用される場合、出力要求レジスタ７０３のビット位置９にビットＲＥＱを設定することによって、メッセージ記憶部３００からシャドウバッファ７００への伝送が開始される。伝送が進行中であることは、アクセス識別子によって、即ち再び最も簡略化される場合は１ビットのＯＢＳＹＳによってレジスタ７０３で表示される。衝突（Ｋｏｌｌｉｓｉｏｎ）を回避するために、好適にはビットＲＥＱのみが設定される。即ち、ＯＢＳＹＳが設定されていない場合には伝送は進行していないことを意味する。そのため、メッセージ記憶部３００とシャドウバッファ７００との間のメッセージ転送も行われる。その処理は実質的には、その逆方向の伝送と対比可能であるが、図４、５及び６で示されているのと同じ形（補完的なレジスタ配置）で制御／実行され、又は、変化させた実施形態として識別子を追加し、即ちレジスタ７０３のビット位置８に転送識別子VIEWを追加して実行される。この場合、まず伝送終了後にビットＯＢＳＹＳがリセットされる。そして出力要求レジスタ７０３でビットＶＩＥＷが設定されると、サブバッファ７０１及びそれに付随するシャドウバッファ７００の内容が交換され、又はサブバッファへのアクセスとシャドウバッファへのアクセスとが交換されることで、ホストＣＰＵ１０２は、メッセージ記憶部へ要求したメッセージオブジェクト、即ちサブバッファ７０１内の対応するメッセージを読出すことができるようになる。その際、図４〜６に示された逆方向の伝送と対比可能であるが、レジスタのセル（Ｒｅｇｉｓｔｅｒｚｅｌｌｅ）ＯＢＲＳとＯＢＲＨとが交換される。同様に、ＲＨＳＳとＲＤＳＳ、ＲＨＳＨとＲＤＳＨがそれぞれ交換される。ここで安全性を高める仕組みとして、ＯＢＳＹＳが設定されていない場合、即ち伝送が進行していない場合に限りビットＶＩＥＷを設定するよう構成してもよい。
【００４９】
よって、ホストCPU１０２によるメッセージ記憶部３００への読出しアクセスは、中間に配置される出力バッファ２０２を介して行われる。この出力バッファは、メッセージ記憶部３００に保存されたメッセージオブジェクトへのホストCＰＵ１０２からの継続的なアクセスを保証するため、入力バッファと同様に二重化され、又は２つの構成要素から構成される。ここでも高いデータの完全性と高速化された伝送という利点が実現される。
【００５０】
上記の入力及び出力バッファの使用によって、ホストＣＰＵが、モジュール内部で待ち時間があるにも関わらず、中断することなくメッセージ記憶部にアクセスできることが保証される。
【００５１】
このようなデータの完全性を保証するため、データ伝送、特に通信モジュール１００内での伝達はメッセージハンドラ２００によって行われる。そこで、図１０にメッセージハンドラ２００を示す。メッセージハンドラは、その機能性において、複数のステートマシン又はステートオートマトン、即ち有限オートマトン、いわゆる有限ステートマシン（ＦＳＭ：Ｆｉｎｉｔｅ−Ｓｔａｔｅ−Ｍａｃｈｉｎｅｎ）として表すことができる。その際、少なくとも３つのステートマシンが、また特別な実施形態においては５つのステートマシンが備えられる。第一の有限ステートマシンは、ＩＯＢＦ−ＦＳＭ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）５０１である。このＩＯＢＦ−ＦＳＭは、入力バッファ又は出力バッファに関連する伝送方向にしたがって、２つの有限ステートマシン、即ち、ＩＢＦ−ＦＳＭ（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ  ＦＳＭ）とＯＢＦ−ＦＳＭ（Ｏｕｔｐｕｔ  Ｂｕｆｆｅｒ  ＦＳＭ）に分割される。さらに、最大５つのステートオートマトン（ＩＢＦ−ＦＳＭ、  ＯＢＦ−ＦＳＭ、  ＴＢＦ１−ＦＳＭ、  ＴＢＦ２−ＦＳＭ、ＡＦＳＭ）を構成してもよい。しかし、全てに共通してＩＯＢＦ−ＦＳＭが１つ備えられることが好ましい。少なくとも第二のステートマシンは、ここでの好適な実施形態として２つのブロック５０２と５０３に分割され、図２に示されているように記憶装置２０５及び２０６に関連して２つのチャネルＡ及びＢを使用する。ここで、有限ステートマシンは、２つのチャネルＡ及びＢ使用するために設けられる。好適な実施形態としては、有限ステートマシンＴＢＦ１−ＦＳＭ（Ｔｒａｎｓｉｅｎｔ  Ｂｕｆｆｅｒ  １（２０６、ＲＡＭ  Ａ）  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）５０２がチャネルＡのために、ＴＢＦ２−ＦＳＭ（Ｔｒａｎｓｉｅｎｔ  Ｂｕｆｆｅｒ  ２（２０５、ＲＡＭ  Ｂ）  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ）５０３がチャネルＢのために設けられる。
【００５２】
好適な実施形態として、仲介有限ステートマシン（Ａｒｂｉｔｅｒ−Ｆｉｎｉｔｅ−Ｓｔａｔｅ−Ｍａｃｈｉｎｅ）ＡＦＳＭ５００は、３つの有限ステートマシン５０１〜５０３のアクセスを制御する役割を果たす。データ（ＫＤ及び／又はＤ）は、電圧制御発振器、水晶発振器等のクロック生成手段によって生成されたクロックに基づき、又はこの調節されたクロックを起点として、通信モジュールにより伝送される。ここでのクロックＴは、モジュール内で生成され、又は外部からのバスクロック等として構成される。この仲介有限ステートマシンＡＦＳＭ５００は、３つの有限ステートマシン５０１〜５０３のうちの１つずつ交互に、特にクロック周期Ｔごとにメッセージ記憶部へのアクセス権を与える。即ち、利用可能な時間は、個々のステートマシン５０１〜５０３のアクセス要求に応じて、要求のあったステートオートマトンに分配される。１つの有限ステートマシンのみアクセス権の要求があった場合、このステートマシンが１００％のアクセス時間、即ち全クロックＴを獲得する。２つのステートマシンにアクセス権が要求される場合、それぞれの有限ステートマシンがアクセス時間を５０％ずつ獲得する。さらに、３つのステートマシンにアクセス権が要求された場合、各有限ステートマシンがアクセス時間を３分の１ずつ獲得する。したがって、使用可能なバンド幅は最も効率よく最大限に活用される。
【００５３】
第一の有限ステートマシンＩＯＢＦ−ＦＳＭ５０１は、必要に応じて以下の動作を行う。
−  入力バッファ２０１からメッセージ記憶部３００内の選択されたメッセージオブジェクトへのデータ転送。
−  メッセージ記憶部３００内の選択されたメッセージオブジェクトから出力バッファ２０２へのデータ転送。
【００５４】
チャネルＡのためのステートマシンＴＢＦ１−ＦＳＭ５０２は、以下の動作を行う。
−  メッセージ記憶部３００内の選択されたメッセージオブジェクトからチャネルＡのバッファ２０６へのデータ転送。
−  バッファ２０６からメッセージ記憶部３００内の選択されたメッセージオブジェクトへのデータ転送。
−  メッセージ記憶部内の適切なメッセージオブジェクトの検索。受信時には、チャネルＡで受信されたメッセージを保存するメッセージオブジェクト（受信バッファ）が、許容範囲のフィルタリングとして検索される。送信時には、次にチャネルＡで送信されるメッセージオブジェクト（送信バッファ）が検索される。
【００５５】
上記の動作と、チャネルＢのための、ブロック５０３の有限ステートマシンＴＢＦ２−ＦＳMの動作は類似している。このステートマシンは、メッセージ記憶部３００内の選択されたメッセージオブジェクトからバッファ２０５へのチャネルＢからのデータ転送と、バッファ２０５からメッセージ記憶部３００内の選択されたメッセージオブジェクトへのデータ転送とを実行する。また、メッセージ記憶部内で適切なメッセージオブジェクトを検索する検索機能も、ＴＢＦ１−ＦＳＭと類似している。受信の際、チャネルＢで受信されたメッセージを保存するメッセージオブジェクト（受信バッファ）が、許容範囲のフィルタリングにおいて検索される。また、送信の際、次にチャネルＢで送信されるメッセージ又はメッセージオブジェクト（送信バッファ）が検索される。
【００５６】
図１１には伝送処理と伝送経路をあらためて示している。３つのステートマシン５０１〜５０３は、個々の構成要素間の各データ伝送を制御する。ここで、ホストＣＰＵ１０２、入力バッファ２０１及び出力バッファ２０２が再び示されている。また、メッセージ記憶部３００、チャネルＡのためのバッファ２０６とチャネルＢのためのバッファ２０５が示されている。さらに、インタフェース２０７及び２０８が示されている。第一のステートマシンＩＯＢＦ−ＦＳＭ５０１は、入力バッファ２０１からメッセージ記憶部３００へのデータ転送Ｚ１Ａとメッセージ記憶部３００から出力バッファ２０２へのデータ転送Ｚ１Ｂとを制御する。その際、データ伝送は３２ビット等のワード長のデータバスを介して行われるが、さらに別のビット数を用いてもよい。このことは、メッセージ記憶部とバッファ２０６との間の伝送Ｚ２の場合にも該当する。このデータ伝送は、チャネルAのためのステートマシンＴＢＦ１−ＦＳＭ５０２によって制御される。メッセージ記憶部３００とバッファ２０５との間の伝送Ｚ３は、ステートオートマトンＴＢＦ２−ＦＳＭ５０３によって制御される。その際にもデータ伝送は３２ビット等のワード長のデータバスを介して行われるが、さらに別のビット数を用いてもよい。通常、前述の伝送経路を介して完全なメッセージオブジェクトをする転送には複数のクロック周期Ｔが必要となる。そこで、クロック周期Ｔに関する伝送時間の分配は、仲介するＡＦＳＭ５００によって行われる。図１１には、メッセージハンドラ２００によって制御される記憶装置間のデータバスが示されている。メッセージ記憶部に保存されたメッセージオブジェクトのデータの完全性を保証するため、図に示されたパスＺ１Ａ及びＺ１Ｂ、Ｚ２及びＺ３のうちそれぞれ１つのパスでのみ、同時にデータが交換されるのが望ましい。
【００５７】
図１２では、使用可能なシステムクロックＴが、どのように仲介者ＡＦＳＭ５００によって３つの要求元のステートオートマトンに分配されるかの例が示されている。第Ｉ段階において、オートマトン５０１及び５０２によるアクセス要求が行われる。この場合、全時間は半分ずつ、要求している双方のステートオートマトンに分配される。即ち、第Ｉ段階のクロック周期に関して、ステートオートマトン５０１はクロック周期Ｔ１及びＴ３においてアクセス権を獲得し、ステートオートマトン５０２はクロック周期Ｔ２及びＴ４においてアクセス権を獲得している。第ＩＩ段階において、ステートマシン５０１のみがアクセスする場合は、３つのクロック周期の全て即ち１００％のアクセス時間Ｔ５〜Ｔ７がＩＯＢＦ−ＦＳＭに割り当てられる。第ＩＩＩの段階において、３つのステートオートマトン５０１〜５０３全てがアクセス要求を行い、全アクセス時間が３等分される。仲介者ＡＦＳＭは、アクセス時間を、例えば、ステートマシン５０１がクロック周期Ｔ８及びＴ１１において、ステートマシン５０２がクロック周期Ｔ９及びＴ１２において、そしてステートマシン５０３がクロック周期Ｔ１０及びＴ１３においてアクセス権を獲得するように分配する。最後に第ＩＶの段階において、２つのステートオートマトン５０２及び５０３による通信モジュールのチャネルA及びBへのアクセスが行われるので、クロック周期Ｔ１４及びＴ１６のアクセス権は有限ステートマシン５０２に、そしてクロック周期Ｔ１５及びＴ１７のアクセス権は有限ステートマシン５０３に分配される。
【００５８】
仲介オートマトンＡＦＳＭ５００は、３つのステートマシンのうち１つ以上がメッセージ記憶部３００へのアクセスを要求した場合、アクセス権が要求元のステートマシンにクロック単位で交互に分配されるように調整を行う。このような処理方法によって、メッセージ記憶部に保存されたメッセージオブジェクトの完全性、即ちデータの完全性が保証される。例えば、ホストＣＰＵ１０２が、現在まさに受信メッセージを書込み中のメッセージオブジェクトを出力バッファ２０２を介して読出したいのであれば、どの要求が最初に出されたかに応じて古い状態又は新しい状態が読出される。このとき、メッセージ記憶部内のメッセージオブジェクトのアクセス自体の衝突は発生しない。
【００５９】
前述の方法により、ホストＣＰＵは、実行中にメッセージ記憶部内のどの任意のメッセージオブジェクトをも読出し、又は書込むことができる。その際、選択されたメッセージオブジェクトは、ホストＣＰＵがデータ交換に関与してアクセスしている間、ＦｌｅｘＲａｙバスの２つのチャネルにおいてロック（バッファ・ロッキング）されることはないであろう。同時に、アクセスをクロック単位で連動させることにより、メッセージ記憶部に保存されたデータの完全性が保証され、全帯域幅を最大限に活用することによってデータ伝送速度が速められる。
【００６０】
（ＦｌｅｘＲａｙ  ＡＳＣプロトコル  ステップ２）
前述の仕組みにおいて、本発明の利点は、マイクロプロセッサ（ホスト）と特に内燃機関の制御に利用される、典型的にはＦｌｅｘＲａｙ通信用の周辺装置との間のデータ伝送方法及び装置に特に関連する。このようなデータ伝送には、通常限られたリソースが使用される。即ち、帯域幅が制限されるのである。典型的には、シリアルインタフェースが利用される場合がこれに該当する。ＦｌｅｘＲａｙコントローラのための非同期及び／又は同期インタフェース、特にシリアルインタフェース（ＡＳＣ）１０７は、周辺装置としてのＣＰＵインタフェース１０７を介して、コンポーネント１０４又は対応するサブモジュール２０４をホスト１０２と接続する。伝送される情報の関連性（Ｂｅｄｅｕｔｕｎｇ）は、前述のＦｌｅｘＲａｙプロトコルなどの何らかのプロトコルによって設定されるのが好ましい（但しＦｌｅｘＲａｙプロトコルのみに限定されるわけではない）。通常、このようなプロトコルは以下の構成要素を含む。
１）       アクセス方式（読出し／書込み）を示すフラグ
２）       アクセス位置を示すアドレス
３ａ）伝送データのワード数のためのカウンタ、又は
３ｂ）アクセス時にアドレスを加算し自動的に次のアクセスを行うかを識別するフラグ
４）       任意として加算されるアドレスの値
【００６１】
構成要素１）〜４）を含むプロトコル命令は、基本コマンド（ｅｉｎｆａｃｈｅｓ  Ｋｏｍｍａｎｄｏ）と呼ばれる。このようなコマンドは非常に使いやすく、伝達データを直列化して保存している場合、又は直列化して保存するべきである場合に効果的である。しかし、アクセスが順次（時系列に沿って）行われない場合にこの基本コマンドを用いると、オーバーヘッドが発生する。オーバーヘッドを処理するには、ホストＣＰＵのメモリ及び計算リソースが必要となる。オーバーヘッドとは、データ伝送において第一義的に有効なデータに含まれず、伝達又は保存のための追加的情報として必要とされるデータを指す。
【００６２】
直接前後して続いていない（複数の）アドレス、又は他のアドレスとの間隔が不規則なアドレスにアクセスしなければならない場合、この基本コマンドを用いて新しいアドレス情報を複数回伝達しなければならない。
【００６３】
伝送の際に個々のビットに異常がある場合には、基本コマンドによって間違った場所にアクセスが行われ、又は読出しと書込みすら入れ替わってしまう可能性がある。
【００６４】
より高い処理性能を実現するために、本発明の１つの実施形態の枠組みとして、データ伝送のための追加的な情報を利用する。例えば、
＊内部ステータス情報（レディ（ｒｅａｄｙ）／ビジー状態／（ｂｕｓｙ  ｓｔａｔｅ）／ビット（ｂｉｔｓ）等）
＊ビットフィールドについての情報（境界等）
＊（冗長性を低減する）所定の値
＊（冗長性を低減する）基本コマンドの所定のシーケンス
＊コマンド及びアドレスの正確性を保証する巡回冗長検査の結果
【００６５】
アクセスが順次行われない場合の効率、及び書込みと読出しのアクセスが複合する場合の効率を上げるため、プロトコルは、ワイヤードロジックコントローラ（ｈａｒｄｗｉｒｅｄ  ｓｅｑｕｅｎｃｅｒ）又はプログラマブルロジックコントローラ（ｐｒｏｇｒａｍｍａｂｌｅ  ｓｅｑｕｅｎｃｅｒ）の形式で作成される。ワイヤードロジックコントローラはより少ないリソース（メモリ位置等）を使用し、コストが安価である。さらに、信頼性の面での利点があるため、より簡単に使用することができる。それに対して、プログラマブルロジックコントローラは、ワイヤードロジックコントローラよりも効率的で柔軟性が高い。
【００６６】
ＦｌｅｘＲａｙ通信モジュールを用いたデータ伝送を実践的に分析すると、最も使用されるシーケンス及び対応する基本コマンド群を見出すことができる。シーケンス及びコマンドをシーケンス制御として実装することで（ハードウェアに組み込み、又はプログラムする）、簡単な方法で呼び出すことができる。つまり、複数の基本コマンドが少なくとも１つの複合コマンドにまとめられ、各複合コマンドは内部に含まれる基本コマンドよりも短いコマンドで呼び出される。さらに、複合コマンドの実行に必要とされるリソースは、その内部に含まれる個々の基本コマンドを実行する場合よりも少なくて済む。
【００６７】
複合コマンドは、プロトコルに応じて、例えば以下の基本コマンドを含むことが可能である。
【００６８】
複合コマンド例ａ）
＊           （コマンドのビットフィールドで定義される）所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
＊           所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
＊           レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
＊           さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
＊           進行中のシーケンスの終了を待つ。（ハードウェアはロックされている可能性がある。）
【００６９】
複合コマンド例ｂ）
＊           レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
＊           さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
＊           1つ又は複数のビットの参照により進行中のシーケンスの終了を待つ。（ハードウェアはロックされている可能性がある）
＊           内部データを転送バッファへ複写する。
＊           （コマンドのビットフィールドで定義される）所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
＊           所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
【００７０】
本発明の１つの実施形態を上位の視点から考察すると、複合コマンドによってステートマシンが構成され、複合コマンドの内部に含まれる基本コマンドの実行がステートマシンによって開始される。プログラマによる複合コマンドのモデルは、例えば、「バッファ読出し」（ｒｅａｄ  ｂｕｆｆｅｒ）又は「バッファ書込みと構成」（ｗｒｉｔｅ  ｂｕｆｆｅｒ  ａｎｄ  ｃｏｎｆｉｇｒａｔｉｏｎ）等となるであろう。以下に、「読出しバッファとステータス」という複合コマンドの例を示す。なお、求める機能を実現するため、１６個の基本コマンドの代わりに、第一のブロックではFlxrEray_Read又はFlxrEray_Writeが、また第二のブロックでは、１つの複合コマンドFlxrEray_AscReadOutputBufferが必要となる。
【００７１】
#if  (FLXR_INTERFACE_TYPE  ==  Blockl)
//  読出しのためバッファのデータを割当て
//  バッファ及びヘッダデータ（管理）を要求
while  (0ul  !=  (FlxrEray_Read(0x0714)  &  0x00008000ul)  )
{
；
}
FlxrEray_Write(0x0710,  mask_value);  
FlxrEray_Write(0x0714,  cmd_value);  
while  (  (  (wait_obsys  !=  0ul)  ||  (view  ==  1ul))  &&
(  (FlxrEray_Read(0x0714)  &  0x00008000ul)  !=  0ul))
{
；
}
//  バッファを可視化
while  (0ul  !=  (FlxrEray_Read(0x0714)  &  0x00008000ul)  )
{
；
}
FlxrEray_Write(0x0710,  mask_valuel);
FlxrEray_Write(0x0714,  cmd_valuel);  
while  (  (  (wait_obsys  !=  0ul)  ||  (view  ==  1ul))  &&
(  (FlxrEray_Read(0x0714)  &  0x00008000ul)  !=  0ul))
{
；
}
FlxrEray_ReceivedFrames[msgBudIdx_u32]  .headerSection.  
headerSectionl.valHDR1  =  FlxrEray_Read  (RDHS1);
FlxrEray_ReceivedFrames[msgBudIdx_u32]  .headerSection.  
headerSection2.valHDR2  =  FlxrEray_Read  (RDHS2);  
FlxrEray_ReceivedFrames[msgBudIdx_u32]  .headerSection.  
headerSection3.valHDR3  =  FlxrEray_Read  (RDHS3);
FlxrEray_ReceivedFrames[msgBudIdx_u32]  .reg_MBS  .MBS_u32
=  FlxrEray_Read  (MBS);  
//  フレームがない又はフレームに異常がある場合、データを複写しない
//  実質的データ:
FlxrEray_ReceivedFrames[msgBudIdx_u32].Data[0]
=  FlxrEray_Read  (RDDS1);
FlxrEray_ReceivedFrames[msgBudIdx_u32].Data[1]
=  FlxrEray_Read  (RDDS2);
FlxrEray_ReceivedFrames[msgBudIdx_u32].Data[2]
=  FlxrEray_Read  (RDDS3);
FlxrEray_ReceivedFrames[msgBudIdx_u32].Data[3]
=  FlxrEray_Read  (RDDS4);
#elif  (FLXR_INTERFACE_TYPE  ==  Block2)
FlxrEray_AscReadOutputBuffer  (messageTable[msgBudIdx_u32].
index_u8,  &FlxrEray_ReceivedFrames[msgBudIdx_u32].Data[0],  4ul);
#endif
【００７２】
個々の基本コマンドを実行するためには合計１６回のアクセスが必要となるが、１つの複合コマンドを実行するためには１回のアクセスのみでよい。複合コマンドは、いわば一種の機能に相当し、その機能の枠組みにおいては、個々の基本コマンドは全て単純に連続的に実行されるのではない。むしろ、個々の基本コマンドの実行はシーケンスに関する（実践的に必要となる、又は理論的な）知識を応用し、複合コマンドの呼出しと実行の際には、個々の基本コマンド全てを呼出して順次実行する場合よりもホストＣＰＵに求められるリソース（計算能力及びメモリ位置）と時間が少なくて済むように最適化される。そして、最適化されたバージョンが、複合コマンドとして保存される。
【００７３】
以下に、「書込みバッファ及びステータス」という複合コマンドの例を示す。なお、求める機能を実現するため、１２個の基本コマンドの代わりに、第一のブロックではFlxrEray_Read又はFlxrEray_Writeが、また第二のブロックでは、１つの複合コマンドFlxrEray_AscWriteInputBufferが必要となる。
【００７４】
#if  (FLXR_INTERFACE_TYPE  ==  MLI)
//入力バッファレジスタからメッセージ記憶部へ伝送
FlxrEray_Write(WRHS1,  FlxrE-
ray_TransmitFrames[i_u32].headerSection.headerSection1.valH
DR1);
FlxrEray_Write(WRHS2,  FlxrE-
ray_TransmitFrames[i_u32].headerSection.headerSection2.valH
DR2);
FlxrEray_Write(WRHS3,  FlxrE-
ray_TransmitFrames[i_u32].headerSection.headerSection3.valH
DR3);
//  ダミーの実質的データの伝送のため
if  (1ul  ==  cfg)
{
//  ダミーデータ領域に書込む
FlxrEray_Write(WRDS1,  FlxrE-
ray_TransmitFrames[i_u32].Data[0]);
FlxrEray_Write(WRDS2,  FlxrE-
ray_TransmitFrames[i_u32].Data[l]);
FlxrEray_Write(WRDS3,  FlxrE-
ray_TransmitFrames[i_u32].Data[2]);
FlxrEray_Write(WRDS4,  FlxrE-
Ray_TransmitFrames[i_u32].Data[3]);
}
//  IBSYH  (ホストバッファ)  =  ‘0’になるまで待機、IBCRは、IBSYH  (ホストバッファ)  =  ‘1’  である限り新しいコマンドを受け付けない
while  (0ul  !=  (FlxrEray_Read(IBCR)  &  0x00008000ul)  )
{
;
}
//  コマンド−マスクを設定
FlxrEray_Write(IBCM,  value);
//  目標のメッセージ記憶部をプログラムし、伝送を開始
FlxrEray_Write(IBCR,  ibrh  &  Ox3Ful);
//  必要に応じて、IBSYHを待つ（ホスト）
while  (  (wait_ibsyh  !=  0ul)  &&  (  (FlxrEray_Read(IBCR)  &
0x00008000ul)  !=  0ul  )  )
{
;
}
//  必要に応じて、IBSYSを待つ（シャドウバッファ）  
while  (  (wait_ibsys  !=  0ul  )  &&  (  (FlxrEray_Read(IBCR)  &
0x80000000ul)  !=  0ul  )  )
{
;
}
#elif  (FLXR_INTERFACE_TYPE  ==  ASC)  
FlxrEray_AscWriteInputBuffer  (bufferlndex,  
&FlxrEray_TransmitFrames[i_u32].Data[0]  ,  4ul);
#endif
【００７５】
個々の基本コマンドを実行するためには合計１２回のアクセスが必要となるが、１つの複合コマンドを実行するには１回のアクセスでよい。この例の場合も、個々の基本コマンドの実行は、複合コマンドの呼出し及び実行の際に、個々の基本コマンド全てを呼出して順次実行する場合よりもホストＣＰＵに求められるリソース（計算能力及びメモリ位置）と時間が少なくて済むように最適化される。
【００７６】
特別な利用形態であるＦｌｅｘＲａｙに適合されたプロトコルを用いれば、ホストインタフェース１０２−１０７−１０４に関連する送信及び受信バッファに非常に好率よくアクセスすることができる。ここで設けられるインタフェースモジュールは、前述のように、構成要素２０３及び２０４から構成されている。このとき、詳細なトランザクション分析の結果として、最も利用頻度の高い複雑な動作が、少数の構成要素から成る基本コマンドのような表現で組み込まれる。
【００７７】
さらに、ＣＲＣ又はパリティによって読出しアクセスと書込みアクセスとの取り違え又はアドレスの不正をコマンド実行前に非常に高い確率で検出することにより、異常なコマンドの実行又はエラーの伝播が予防されるようにコマンドの防護が行われる。
【００７８】
これについては様々な利点がある。第一に、本プロトコルは、データ構成、アクセス方式、及び対応するアドレスに関する知識をさらに別のワイヤードロジック式ステートオートマトンの形で有しているため、アクセスがより迅速になる。これによりデータの構成、アクセス方法、及び／又は対応するアドレスは自動的に準備され、もはやホストから伝送される必要はなく、またインタフェース１０７、具体的には接続２１６〜２１８を介して伝送される必要はない。
【００７９】
さらに、アクセス方式（読出し／書込み）は、前述のとおり既にこの装置の中に組み込まれており、もはや伝送される必要はない。
【００８０】
その代わり、前述の情報（データ構成、アクセス方式、及び／又はアドレス）に関する所定のシーケンスが呼び出され、それによりそれら情報の値が追加で与えられる。
【００８１】
本発明の１つの実施形態としては、このような所定のシーケンスを呼び出すために、プロトコルは以下の構成要素を含むように拡張される。この中で、呼び出されるシーケンスの性質を示す値を導入する。この値は、例えば“アクセスタイプマーカ”（Ａｃｃｅｓｓ  Ｔｙｐｅ  Ｍａｒｋｅｒ，ＡＴＭ）と呼ばれ、以下に記述するアクセスタイプを表す。
【００８２】
本プロトコルは、さらにデータ防護のための情報、例えばＣＲＣ又はパリティを使用する。偶発的な伝送エラーが不正なアドレスへのアクセスやアクセス方式（読出し／書込み）の取り違えの原因にならないことを保証するため、この防護情報は少なくともコマンド部分（最初の３バイト等）に対して生成される。データ領域におけるエラーは、必要に応じて再読出しによって検出される。アドレス若しくはアクセス方式又はアクセスタイプマーカに対してはＣＲＣ又はパリティは使用できない。ＣＲＣ又はパリティのデータ防護情報は、さらにシーケンスの最初の部分、即ちコマンド（６ビットのＣＲＣ等）に対しても生成される。
【００８３】
2009502072.tif 000003
【００８４】
以下、このインタフェースのプロトコル、カスタマＣＰＵインタフェース（プロトコル）の特徴を挙げる。
＊           半二重８ビット同期駆動
＊           ９．３８ＭＢｄ（ＭＢａｕｄ）、同期、パリティ検査なし
＊           バスクロック周波数（ＢＣＬＫ）３２ＭＨｚ
＊           割込み要求バス
＊           コマンドワードに対するＣＲＣ
＊           バイト同期チェック
＊           ホストによる同期の再構成
＊           非同期リセット
【００８５】
前記プロトコルは、例えば、シリアルインタフェース用の直列的な送信データ及び受信データを、３２ビットの読出し及び書込みアクセスに変換することができる。この読出し及び書込みアクセスにより、同期トランザクションを介して、カスタマＣＰＵインタフェース（ＣＩＦ）の内部レジスタ、通信モジュール・コア（コア）のＲＡＭ、及び１１又は１２ビット等のアドレス空間にある通信モジュール・コアのレジスタの読出し、又は書込みが行われる。
【００８６】
図１３では、通信接続１０１と加入者装置１０２との間のデータ伝送を実現するための、所定の構成可能なコマンドを送信及び受信するＡＳＣカスタマＣＰＵインタフェース２０４の構造が簡略化されて示されている。受信は、受信部８００におけるシフトレジスタ８０２によって、ＴＸＤクロック信号８０４の立ち上がりエッジが検知された際に行われる。８クロック分の周期の経過後、結果がレジスタｒｘ＿ｈｏｌｄ８０６に引き継がれる。また、レジスタｒｘ＿ｈｏｌｄ８０６内に新しいメッセージが含まれていることをステートマシン８０８に知らせるために、ｒｄｙ信号が設定される。この時点で、バイト同期チェックが機能ブロック８１８で行われる。
【００８７】
送信部８１０は、送信部８１０がアクティブである限り、送信部のシフトレジスタ８１２のビット「０」をＲＸＤバス８１４に接続する。ＴＸＤクロック信号８０４が立ち下がりエッジになるたびに、受信データがシフトレジスタ８１２に引き継がれ、レジスタ８１２内のデータが１フィールド桁送りされる。ｒｄｙ信号が８クロック後に設定され、ステートマシン８０８は、新しいデータをレジスタｔｘ＿ｈｏｌｄ８１６からシフトレジスタ８１２にロードすることができる。
【００８８】
機能ブロック８２０内のアドレスデコーダは、通信モジュール１００の内部ＣＩＦレジスタ８２２と外部記憶装置とを区別する。ステートマシン８０８はまず、コマンドの評価を開始する前に、3バイトのコマンドを読み込む。ＣＲＣの対象ビットが、ブロック８２６において検査される。コマンドにしたがって、書込み、読出しプロセス、アドレスアクセス又は簡単なバッファアクセスが開始される。機能ブロック“ｅｎｄ  ｓｔｕｆｆ”８２４において、ＡＳＣコマンドを遮断する通信モジュール・コアのアクセス終了が検出され、最終的にＦｕｅｌｌｂｙｔｅ（全バイト）！＝０ｘ００が返される。（ＣＲＣ８２６又はバイト同期８１８において）異常がある場合、ステートマシン８０８は再同期状態（ｒｅｓｙｎｃ）８２８に入り、任意に割込み要求（ＩＲＱ）８３０を開始する。そして、ホストＣＰＵ１０２による再同期８２８を待つ。
【００８９】
図１４の状態図では、可能な伝送が簡略化されて示されている。
【００９０】
ステートマシン８０８は、リセット後、状態ＩＤＬＥにある。送信エラーが検出されると（バイト同期エラー又はＣＲＣエラー）、ステートマシン８０８はPRE_RESYNC状態に設定される。
【００９１】
図中の各状態における簡略化された動作は、以下の通りである。
＊ＩＤＬＥ      受信部を起動する。通信モジュール・コアの進行中のアクセスを終了する。全カウンタをクリアする等。
＊ＰＲＥ＿ＲＥＳＹＮＣ      受信部及び送信部を停止させる。ローカル信号及び状態をクリア又はリセットする。
＊ＲＥＳＹＮＣ＿ＧＡＰ        ホストによる再同期の終了を待つ。
＊ＣＭＤ１           コマンドワードの第一のバイトの受信を待つ。
＊ＣＭＤ２           コマンドワードの第二のバイトの受信を待つ。
＊ＣＭＤ３           コマンドワードの最後のバイトの受信を待つ。ＣＲＣ検査を行う。ａｔｍ、ｒｗ、Ｂｕｆｆｅｒ＿ｉｄ、ａｄｄｒ、ｗｏｒｄ＿ｃｎｔ及び実質的データ（ペイロード）の評価を行う。ａｔｍ及びｒｗに応じて、リセット状態が設定されて全バイトが開始され、又は第一のワードが通信モジュール・コアから読出される。
＊ＳＴＵＦＦ      ホストへ０ｘ００を送信する。ｅｒａｙ＿ｏｂｕｓｙがＨ（ｈｉｇｈ）である限り送信を繰り返す（備考：Ｅ−Ｒａｙとは本発明の出願人による通信モジュール１００の社内名称である。）
＊ＬＯＡＤ      進行中の通信モジュール・コアからの読出しアクセスを終了する。送信部８１０を作動させる。
＊ＤＡＶ      データが使用可能となる。第一のバイトをレジスタｔｘ＿ｈｏｌｄ８１６へ複写する。アドレスａｄｒｒを加算する。
＊ＲＥＡＤ１      第二のバイトをレジスタｔｘ＿ｈｏｌｄ８１６へ複写する。
＊ＲＥＡＤ２      第三のバイトをレジスタｔｘ＿ｈｏｌｄ８１６へ複写する。
＊ＲＥＡＤ３      最後のバイトをレジスタｔｘ＿ｈｏｌｄ８１６へ複写する。
＊ＲＥＡＤ４      ｗｏｒｄ＿ｃｎｔ（ワードカウンタ）がゼロ以上の場合、ｗｏｒｄ＿ｃｎｔを１減らす。
＊ＳＢＡＲ      個々のバッファを読出す（Ｓｉｎｇｌｅ  Ｂｕｆｆｅｒ  Ａｃｃｅｓｓ  Ｒｅａｄ）。アドレス（ａｄｄｒ）を０ｘ７００に設定する（ヘッダ）。
＊ＷＲＩＴＥ１      進行中の通信モジュール・コアへの書込みアクセスを終了する。第一のバイトをレジスタｒｘ＿ｈｏｌｄ＿ｙｙから複写する。
＊ＷＲＩＴＥ２      第二のバイトをレジスタｒｘ＿ｈｏｌｄ＿ｙｙから複写する。
＊ＷＲＩＴＥ３      第三のバイトをレジスタｒｘ＿ｈｏｌｄ＿ｙｙから複写する。
＊ＷＲＩＴＥ４      最後のバイトをレジスタｒｘ＿ｈｏｌｄ＿ｙｙから複写する。ワードを通信モジュール・コアへ書込む。アドレス（ａｄｄｒ）を加算する。ゼロ以上の場合、ｗｏｒｄ＿ｃｎｔ（ワードカウンタ）を減らす。ＩＢＣＭ／ＩＢＣＲアクセスを作動させる。受信部８００を起動する。
＊ＳＢＡＷ      進行中の通信モジュール・コアへの書込みアクセスを終了する。アドレス（ａｄｄｒ）を０ｘ０５００（ヘッダ）に設定する。
【００９２】
シングルバッファへのバッファ読出しアクセス（Ｓｉｎｇｌｅ  Ｂｕｆｆｅｒ  Ａｃｃｅｓｓ  Ｒｅａｄ）が行われた場合、全バイトが「０」の信号がホストに送信されている間に、３つの通信モジュール・コアへのアクセスが行われていなければならない。シングルバッファへのバッファ書込みアクセス（Ｓｉｎｇｌｅ  Ｂｕｆｆｅｒ  Ａｃｃｅｓｓ  Ｗｒｉｔｅ）の後、ＡＳＣインタフェースは、２つのコアアクセスを実行しなければならない。
【００９３】
図１５では、通信モジュール・コアへのアクセス（Ｓｉｎｇｌｅ  Ｂｕｆｆｅｒ  Ａｃｃｅｓｓ  Ｒｅａｄ／Ｗｒｉｔｅ）のためのステートマシン８０８が示されている。
【００９４】
コマンドの有効性を検査するため、コマンドワードは６ビットのＣＲＣ（巡回冗長検査）で検査される。コマンドワードは２４ビット長で、１８ビットのコマンドと６ビットのＣＲＣから構成される。
＊Ｄ［１７：０］      コマンドワードのデータ
＊ＣＲＣ［５：０］      コマンドワードのＣＲＣ
【００９５】
ＣＲＣには、例えば、０で初期化された多項式  ｘ６＋ｘ５＋ｘ４＋ｘ＋ｌ  が使用される。
【００９６】
並列で実装が行われ、以下の方程式が導かれる。
ＣＲＣ０  ：＝  Ｄ１７＾Ｄ１５＾Ｄ１４＾Ｄ１３＾Ｄ９＾Ｄ８＾Ｄ５＾Ｄ４＾Ｄ３＾Ｄ１＾Ｄ０；  
ＣＲＣｌ  ：＝  Ｄ１７＾Ｄ１６＾Ｄ１３＾Ｄ１Ｏ＾Ｄ８＾Ｄ６＾Ｄ３＾Ｄ２＾Ｄ０；  
ＣＲＣ２  ：＝  Ｄ１７＾Ｄ１４＾Ｄ１１＾Ｄ９＾Ｄ７＾Ｄ４＾Ｄ３＾Ｄ１；  
ＣＲＣ３  ：＝  Ｄ１５＾Ｄ１２＾Ｄ１０＾Ｄ８＾Ｄ５＾Ｄ４＾Ｄ２；  
ＣＲＣ４  ：＝  Ｄ１７＾Ｄ１６＾Ｄ１５＾Ｄ１４＾Ｄ１１＾Ｄ８＾Ｄ６＾Ｄ４＾Ｄ１＾Ｄ０；  
ＣＲＣ５  ：＝  Ｄ１６＾Ｄ１４＾Ｄ１３＾Ｄ１２＾Ｄ８＾Ｄ７＾Ｄ４＾Ｄ３＾Ｄ２＾Ｄ０；
【００９７】
（アドレスアクセス）
＊  ａｔｍ［１：０］      アクセスタイプ（アクセスタイプマーカ）“００”。
＊  ｒｗ      読出し（´１´）又は書込みアクセス  （´０´）。
＊  ａｄｄｒ［８：０］      開始アドレス。３２ビットのワード境界で開始。２キロバイトのアドレス空間。
＊  ｗｏｒｄ  ｃｎｔ［５：０］      転送されるワード数−１。
＊  ＣＲＣ  ［５：０］      コマンドワードについてのＣＲＣ。
【００９８】
ｒｗ  ＝  ´０´の場合、プロトコルは、アドレス  （ａｄｄｒ）で始まる３２ビットのワードを通信モジュール・コアに書込むため、４＊（ｗｏｒｄ＿ｃｎｔ＋１）バイトの受信を待つ。ｒｗ  ＝  ´１´の場合、ＡＳＣインタフェースは、最初の３２ビットのワードをアドレス（ａｄｄｒ）に関連付けられた通信モジュール・コアから読出す。読出しには、バイト間での送信サイクルが遅延した場合よりも通常は長い時間が掛かる。したがって、ホストは、ＲｘＤバスの方向の（送信から受信への）切り替えを少なくとも２ＴｘＤサイクル遅らせなければならない。後続のバイトは全て、全く通常通りに伝送される。ＡＳＣインタフェースは、４＊（ｗｏｒｄ＿ｃｎｔ＋１）バイトをホストＣＰＵへ送信する。伝送終了後、ＡＳＣインタフェースは次のコマンドを待つ。
【００９９】
前述のように、アクセスタイプの例について記載する。
【０１００】
（シングルバッファアクセス（Ｓｉｎｇｌｅ  Ｂｕｆｆｅｒ  Ａｃｃｅｓｓ））
ホストＣＰＵがＡＳＣインタフェースのプロトコルを介して読出したい場合、ＡＳＣインタフェースは、対応するバッファを通信モジュール・コアに要求しなければならない。この要求に対する応答には若干時間が掛かり、一定の時点には完了しない。応答の時点は、通信モジュール・コアの実際の負荷率に依存する。データの転送準備がまだ整っていないことをホストに示すため、データを待つ間ＡＳＣインタフェースは全バイトゼロ（０ｘ００）のデータを送信する。データの転送準備が整い次第、ＡＳＣインタフェースは最終的にＦｕｅｌｌｂｙｔｅ（全バイト）！＝０ｘ００を送信する。次のバイトは、伝送される第一のデータワードの開始桁のバイトである。
【０１０１】
（ヘッダのみ）
＊  ａｔｍ［ｌ：０］      アクセスタイプ（アクセスタイプマーカ）“１０”。
＊  ｒｗ      読出し（´１´）又は書込みアクセス（´０´）。
＊  Ｂｕｆｆｅｒ＿ＩＤ［５：０］      ３２ビットのワード境界でアドレスを開始。２キロバイトのアドレス空間。
＊  ｓｔｘｒｈ      バッファに書込まれる場合、ＩＢＣＭに転送リクエストホスト  （ＳＴＸＲＨ）を設定。
＊  ｒｓｖ      予備として確保。全て´０´。
＊  ＣＲＣ［５：０］      コマンドワードについてのＣＲＣ。
【０１０２】
ｒｗ  ＝´０´の場合、ＡＳＣインタフェースのプロトコルは、アドレス０ｘ０５００（Ｈｅａｄｅｒ  Ｉｎｐｕｔ  Ｂｕｆｆｅｒ）から始まる３２ビットのワードを通信モジュール・コアに書込むために、４＊４（ヘッダ）バイトの受信を待つ。最後の書込みアクセス終了後、プロトコルによって以下の動作が行われる。
１．ａｔｍ（ＬＨＳＨ）及びｓｔｘｒｈをアドレス０ｘ０５１０（ＩＢＣＭ）に書込む。
２．バッファＩＤをアドレス０ｘ０５１４（ＩＢＣＲ）に書込む。
【０１０３】
ｒｗ  ＝´１´の場合、ＡＳＣインタフェースのプロトコルは、全バイト（０ｘ００）をホストへ送信することを開始する。ＡＳＣインタフェースは、この時間を利用して、対応するヘッダを通信モジュール・コアに要求する。全バイトが送信される間、プロトコルによって以下の動作が行われる。
１．ａｔｍ（ヘッダ）をアドレス０ｘ０７１０（ＯＢＣＭ）に書込む。
２．バッファＩＤ及びＲＥＱをアドレス０ｘ０７１４（ＯＢＣＲ）に書込む。
３．ｅｒａｙ＿ｏｂｕｓｙが再びＬ（ｌｏｗ）になるまで待つ。ｅｒａｙ＿ｏｂｕｓｙがＨ（ｈｉｇｈ）の間、通信モジュール・コアは対応するヘッダを出力バッファへ複写する。
４．ＶＩＥＷをアドレス０ｘ０７１４（ＯＢＣＲ）へ書込む。
出力バッファ内の対応するヘッダを使用することは可能である。全バイトが送信された後、ＡＳＣインタフェースのプロトコルは、４＊４（ヘッダ）バイトをホストへ送信する。このコマンドが完了した後、ＡＳＣインタフェースのプロトコルは次のコマンドを待つ。
【０１０４】
（実質的なデータのみ）
＊  ａｔｍ［ｌ：０］      アクセスタイプ（アクセスタイプマーカ）“０１”。
＊  ｒｗ      読出し（´１´）又は書込みアクセス（´０´）。
＊  実質的データ［５：０］      ３２ビットのワード数＋１。
＊  バッファＩＤ［５：０］      ３２ビットのワード境界でアドレスを開始。２キロバイトのアドレス空間。
＊  ｓｔｘｒｈ      バッファが書込まれる場合、ＩＢＣで転送リクエストホスト  （ＳＴＸＲＨ）を設定する。
＊  ｒｓｖ      予備として確保。全て´０´。
＊  ＣＲＣ［５：０］      コマンドワードについてのＣＲＣ。
【０１０５】
ｒｗ  ＝´０´の場合、ＡＳＣインタフェースは、アドレス０ｘ０４００（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ）で始まる３２ビットワードを通信モジュール・コアに書込むために、４＊  （実質的データ＋１）バイトの受信を待つ。最後の書込みアクセスの後、ＡＳＣインタフェースのプロトコルによって以下の動作が行われる。
１．ａｔｍ（ＬＤＳＨ）及びｓｔｘｒｈをアドレス０ｘ０５１０（ＩＢＣＭ）に書込む。
２．バッファＩＤをアドレス０Ｘ０５１４（ＩＢＣＲ）に書込む。
【０１０６】
ｒｗ  ＝´１´の場合、ＡＳＣインタフェースは全バイト（０ｘ００）をホストに送信する。ＡＳＣインタフェースのプロトコルは、この時間を利用して、対応する実質的データを通信モジュール・コアに要求する。全バイトが送信される間、ＡＳＣインタフェースのプロトコルによって以下の動作が行われる。  
１．ａｔｍ（実質的データ）をアドレス０ｘ０７１０（ＯＢＣＭ）へ書込む。
２．バッファＩＤ及びＲＥＱをアドレス０ｘ０７１４（ＯＢＣＲ）へ書込む。
３．ｅｒａｙ＿ｏｂｕｓｙが再びＬ（ｌｏｗ）になるまで待つ。ｅｒａｙ＿ｏｂｕｓｙがＨ（ｈｉｇｈ）の間、通信モジュール・コアは、対応する実質的データを出力バッファに複写する。
４．ＶＩＥＷをアドレス０ｘ０７１４（ＯＢＣＲ）に書込む。
【０１０７】
出力バッファ内の対応する実質的データは使用可能である。全バイトが送信された後、プロトコルは、４＊（実質的データ＋１）バイトをホストへ送信する。このコマンドが完了した後、ＡＳＣインタフェースのプロトコルは次のコマンドを待つ。
【０１０８】
（実質的データ及びヘッダ）
＊  ａｔｍ［ｌ：０］      アクセスタイプ（アクセスタイプマーカ）“１１”。
＊  ｒｗ      読出し（´１´）又は書込みアクセス  （´０´）。
＊  実質的データ［５：０］    ３２ビットのワード数＋１。
＊  バッファＩＤ［５：０］    ３２ビットのワード境界でのアドレスを開始。２キロバイトのアドレス空間
＊  ｓｔｘｒｈ      バッファが書込まれる場合、ＩＢＣＭで転送リクエストホスト（ＳＴＸＲＨ）を設定する。
＊  ｒｓｖ      予備として確保。全て´０´。
＊  ＣＲＣ［５：０］      コマンドワードについてのＣＲＣ
【０１０９】
ｒｗ  ＝´０´の場合、ＡＳＣインタフェースのプロトコルは、アドレス０ｘ０４００（Ｉｎｐｕｔ  Ｂｕｆｆｅｒ）で始まる３２ビットのワードを通信モジュール・コアに書込むために、４＊（実質的データ＋１）バイトの受信を待つ。また、アドレス０Ｘ０５００（ヘッダ）で始まる３２ビットのワードを通信モジュール・コアに書きこむために、４＊４（ヘッダ）バイトの受信を待つ。最後の書込みアクセスの後、プロトコルによって以下の動作が行われる。
１．ａｔｍ（ＬＨＳＨ、ＬＤＳＨ）及びｓｔｘｒｈをアドレス０Ｘ０５１０（ＩＢＣＭ）に書込む。  
２．バッファＩＤをアドレス０ｘ０５１４（ＩＢＣＲ）に書込む。
【０１１０】
ｒｗ  ＝´１´の場合、ＡＳＣインタフェースのプロトコルは、全バイト（０ｘ００）をホストに送信する。プロトコルは、この時間を利用して対応する実質的データ及びヘッダを通信モジュール・コアに要求する。全バイトが送信される間、プロトコルによって以下の動作が行われる。
１．ａｔｍ（実質的データ及びヘッダ）をアドレス０ｘ０７１０（ＯＢＣＭ）に書込む。
２．バッファＩＤ及びＲＥＱをアドレス０Ｘ０７１４（ＯＢＣＲ）に書込む。
３．ｅｒａｙ＿ｏｂｕｓｙが再びＬ（ｌｏｗ）になるまで待つ。ｅｒａｙ＿ｏｂｕｓｙがＨ（ｈｉｇｈ）の間、通信モジュール・コアは、対応する実質的データ及びヘッダを出力バッファに複写する。
４．ＶＩＥＷをアドレス０Ｘ０７１４（ＯＢＣＲ）に書込む。
【０１１１】
出力バッファ内の対応する実質的データ及びヘッダは使用可能である。全バイトが送信された後、ＡＳＣインタフェースのプロトコルは、４＊（実質的データ＋１＋４（ヘッダ））バイトをホストへ送信する。このコマンドが完了した後、ＡＳＣインタフェースは次のコマンドを待つ。
【０１１２】
（再同期（Ｒｅｓｙｎｃｈｒｏｎｉｓａｔｉｏｎ））
再同期は、特に決まったコマンドワードが割り当てられたコマンドではない。ホストＣＰＵは、少なくとも２９ＴｘＤサイクルの間に渡ってＲｘＤバスをＬ（ｌｏｗ）とし、ＡＳＣインタフェースを再同期状態に設定することができる。その際、ＴｘＤバスを事実上制御する必要はない。（ホストＣＰＵが送信する）通常の実行において、ＲｘＤバスは、各ビットが送信された場合にＨ（ｈｉｇｈ）となる。
【０１１３】
ＡＳＣインタフェースは進行中の動作を停止し、内部信号及び状態をクリアし、ホストＣＰＵから伝送される次のコマンドを待つ。
【図面の簡単な説明】
【０１１４】
本発明の好適な実施形態は、以下の図面を参照しながら詳細に説明されている。
【図１】通信モジュール、及び通信モジュールと物理層としての通信接続または通信／ホスト加入者装置との連携を示す概略図である。
【図２】１つの実施形態として、図１に基づく通信モジュール及び通信モジュールの連携を詳細に示す図である。
【図３】図１又は図２に基づく通信モジュールのメッセージ記憶部の構造を示す図である。
【図４】加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図５】加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図６】加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図７】通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図８】通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図９】通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の１つである。
【図１０】通信モジュールのメッセージハンドラ及びその内部に含まれる有限ステートマシンを示す概略図である。
【図１１】通信モジュールの構成要素と、加入者装置と、メッセージハンドラによって制御される対応するデータバスとを再び示す概略図である。
【図１２】図１１のデータバスに関するアクセスの分配を示す図である。
【図１３】通信モジュールと加入者装置との間の加入者インタフェースの実装を簡略化して示す図である。
【図１４】本発明の１つの実施形態に基づくステートマシンを示すフローチャートである。
【図１５】図１４に基づくステートマシンの具体的なバッファアクセスの状態を示す図である。
【符号の説明】
【０１１５】
１００          ＦｌｅｘＲａｙ通信モジュール
１０１          ＦｌｅｘＲａｙ通信接続
１０２          ホストＣＰＵ（加入者装置プロセッサ）
１０３          第三のコンポーネント
１０４          第二のコンポーネント
１０５          第一のコンポーネント
１０６〜１０９  接続
【図１】
2009502072.tif 000004
【図２】
2009502072.tif 000005
【図３】
2009502072.tif 000006
【図４】
2009502072.tif 000007
【図５】
2009502072.tif 000008
【図６】
2009502072.tif 000009
【図７】
2009502072.tif 000010
【図８】
2009502072.tif 000011
【図９】
2009502072.tif 000012
【図１０】
2009502072.tif 000013
【図１１】
2009502072.tif 000014
【図１２】
2009502072.tif 000015
【図１３】
2009502072.tif 000016
【図１４】
2009502072.tif 000017
【図１５】
2009502072.tif 000018
【国際調査報告】
2009502072.tif 000019
2009502072.tif 000020
2009502072.tif 000021
2009502072.tif 000022
2009502072.tif 000023
2009502072.tif 000024