JP2009502072A - FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 - Google Patents
FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 Download PDFInfo
- Publication number
- JP2009502072A JP2009502072A JP2008521976A JP2008521976A JP2009502072A JP 2009502072 A JP2009502072 A JP 2009502072A JP 2008521976 A JP2008521976 A JP 2008521976A JP 2008521976 A JP2008521976 A JP 2008521976A JP 2009502072 A JP2009502072 A JP 2009502072A
- Authority
- JP
- Japan
- Prior art keywords
- data
- message
- flexray
- flexray communication
- communication module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40032—Details regarding a bus interface enhancer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40241—Flexray
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Communication Control (AREA)
- Multi Processors (AREA)
- Small-Scale Networks (AREA)
Abstract
本発明は、FlexRay通信接続(101)と連携するためのFlexRay通信モジュール(100)であって、メッセージが前記FlexRay通信接続(101)を介して伝送され、加入者装置インタフェース(107)を介して加入者装置(102)と接続されるモジュールに関する。FlexRay通信ネットワークにおける通信を最適な形で支援するため、FlexRay通信モジュール(100)は、加入者装置(102)とFlexRay通信接続(101)との間で伝送された又は伝送されるメッセージを保存するコンポーネント(105)及びステートマシンを有し、前記ステートマシンはコンポーネント(105)でのメッセージ保存、コンポーネント(105)からのメッセージ呼出し及びメッセージ伝送のための情報に関するシーケンスを設定し及び/又は呼び出すことによりメッセージ伝送を制御することを提案する。
【選択図】図1
【選択図】図1
Description
本発明は、FlexRay(登録商標)通信接続と連携するためのFlexRay通信モジュールであって、メッセージがFlexRay通信接続を介して伝送され、加入者インタフェースを介してFlexRay通信モジュールに組み込まれる加入者装置を有する、FlexRay通信接続と連携するためのFlexRay通信モジュールに関する。
また、本発明は、FlexRay加入者装置とFlexRay通信接続との間でメッセージを伝送する方法であって、FlexRay通信モジュールが通信接続と接続され、加入者装置が加入者インタフェースを介して通信モジュールに接続される方法に関する。
さらに、本発明は、前述の形式の方法を実現するための、前述の形式のFlexRay通信モジュールを含むFlexRay通信制御装置に関する。
通信システム及びバスシステムといった通信接続を利用した制御装置、センサ、及びアクチュエータのネットワーク化は、近代的な車両の製造、特に工作機械分野などの機械工学、及びオートメーション化の領域において近年急激に増加している。これらネットワーク化によれば、機能を複数の制御装置に分散させて相乗効果を引き出すことができる。即ち、ここでは機能分散型のシステムが関連する。様々なステーション間の通信は、バスシステムを介して、即ち通信システムを介して行われることが多くなっている。バスシステムによる通信とアクセス及び受信の仕組み、並びにエラー処理は、所定のプロトコルに基づいて制御される。例えば公知のプロトコルとして、現在FlexRayプロトコル仕様バージョン2.0又は2.1に基づく、FlexRayプロトコルが挙げられる。FlexRayは、特に車両に導入される高速で決定論的でフォールト・トレラントな(耐障害性を持つ)バスシステムである。FlexRayプロトコルは、構成要素、即ち加入者装置又は伝送メッセージに固定のタイムスロットを割り当てる時分割多重アクセス(TDMA)方式に基づいて機能する。固定のタイムスロットにおいて、加入者装置又は伝送メッセージには通信接続の排他的使用権が与えられる。その際、タイムスロットは設定されたサイクルで繰り返されるため、メッセージがバスを介して伝送される時点を事前に正確に予告することができ、バス使用権の取得も決定論的に行われる。バスシステムにおいてメッセージを伝送するための帯域幅の利用を最適化するため、FlexRayは、サイクルを静的な部分と動的な部分とに分割する。このとき、バスサイクルの先頭にある静的な部分に固定のタイムスロットが存在する。動的な部分では、タイムスロットは動的に設定される。動的部分では、タイムスロットが動的に設定される。動的な部分においては、短時間、即ちミニスロット(Minislot)の間にのみ排他的バス使用権が与えられる。ミニスロット内でバスアクセスが行われる場合に限れば、タイムスロットは必要な時間だけ追加で割り当てられる。即ち、帯域幅は実際に必要な場合に限り使用されるのである。その際、FlexRayは、物理的に接触しない二重のバスを介して最大10Mbit/sのデータ転送速度で通信する。この二重のチャネルは、特にOSI参照モデルの物理層に相当する。チャネルは、主として冗長的でフォールト・トレラントなメッセージ伝送に役立つ。しかし、それぞれ種類の異なるメッセージを伝送することも可能であり、そうした場合はデータ転送速度が倍になるであろう。FlexRayは、もちろん遅いデータ転送速度でも動作する。
同期機能を実現し、2つのメッセージの間に短い時間間隔を入れて帯域幅を最適化するため、通信ネットワーク上に分散する構成要素である加入者装置は、共通的な時間の基準となるグローバル時間を必要とする。時刻を同期させるために、サイクルの静的部分において同期メッセージが伝送される。その際、FlexRay仕様に準拠した特別なアルゴリズムによって、構成要素のローカル時計は、全てのローカル時計がグローバル時間に同期して稼動するように調整される。
FlexRayネットワークのノード、FlexRay加入者装置、又はホストは、加入者プロセッサ(即ちホストプロセッサ)と、FlexRayコントローラ又は通信制御装置と、バス監視用のバスガーディアンとを有している。その際、加入者プロセッサ(即ちホストプロセッサ)は、FlexRay通信制御装置を介して伝送されるデータを伝達・処理する。FlexRayネットワークでの通信のために、最大254バイトのメッセージ又はメッセージオブジェクトを構成することができる。
したがって、本発明の課題は、最適な方法でFlexRayネットワークでの通信をサポートするFlexRay通信モジュールを提供することにある。
本発明の課題は、特許請求の範囲の請求項1に記載の全ての構成要件を備えたFlexRay通信モジュールと、請求項6に記載のFlexRay通信制御装置と、請求項7に記載の方法によって解決される。本発明に係る通信モジュールは、加入者装置と通信接続との間でメッセージを伝送するためにメッセージ保存用の装置を備えることを特徴とする。その場合の伝送は、ステートマシンによるメッセージ保存・伝送用の情報に関して設定可能なシーケンスが設定され、又は呼び出されるように制御される。
本発明の特徴として、通信モジュールにおいて、ステートマシンがハードウェアに組み込まれ、及び/又はシーケンスがハードウェアに組み込まれる。
代わりに、FlexRay通信モジュールにおいて、加入者インタフェースを介してステートマシンを加入者装置によって自由にプログラムすることも可能である。特に本発明の特徴として、本発明において扱う情報には、アクセスタイプ、及び/又はアクセス方式、及び/又はアクセスアドレス、及び/又はデータ値、及び/又はデータに関する制御情報、及び/又は少なくとも1つのデータの防護に関する情報が含まれる。
本発明の特徴は、FlexRay通信接続と連携するための、メッセージをFlexRay通信接続を介して伝送するFlexRay通信モジュールを備えたFlexRay装置にも該当する。前記装置は、加入者インタフェースを介して加入者装置と通信モジュールとを連携させることと、加入者装置と通信モジュールとの間のメッセージ伝送用のメッセージ保存装置を備えることと、メッセージ保存・伝送用の情報に関する設定可能なシーケンスがステートマシンにより設定され又は呼び出されるように伝送が制御されることと、を特徴とする。
同様に、本発明の特徴は、メッセージを伝送する方法であって、FlexRay通信モジュールをFlexRay通信接続と連携させ、メッセージをFlexRay通信接続を介して伝送する方法にも該当する。前記方法は、加入者インタフェースを介して加入者装置を通信モジュールと接続させ、加入者装置と通信モジュールとの間のメッセージ伝送のためにメッセージ保存用装置にメッセージを保存することを可能にし、メッセージ保存・伝送用の情報に関する設定可能なシーケンスがステートマシンによって設定され又は呼び出されるように伝送を制御することを特徴とする。
本発明の特徴として、物理層として表現されるFlexRay通信接続との連携を行うためのFlexRay通信モジュールは、FlexRay通信ネットワークにおいてFlexRay通信モジュールに組み込まれる加入者装置を有し、メッセージはFlexRay通信ネットワークを介して伝送される。その際、FlexRay通信モジュールは、本発明の特徴として、伝送メッセージの少なくとも一部を保存する第一の装置と、第一の装置を加入者装置と接続させる第二の装置と、FlexRay通信接続としての物理層を第一の装置と接続させる第三の装置とを有する。
その際、第一の装置は、本発明の特徴として、メッセージハンドラとメッセージ記憶部とを有する。メッセージハンドラは、メッセージ記憶部へのデータアクセスに関連して、第一及び第二の装置のデータバスに関わる制御を行う。その際、本発明の特徴として、第一の装置のメッセージ記憶部はヘッダセグメントとデータセグメントに分割される。
本発明の特徴として、ホスト、即ちFlexRay加入者装置又はホストプロセッサに接続するための第二の装置は、入力バッファ及び出力バッファを有している。入力バッファ若しくは出力バッファ又は最適には両方のバッファは、有利な実施形態として、読出し及び/又は書込み専用に交互に切り替えられるサブバッファ(Teilpufferspeicher)とシャドウバッファ(Schattenspeicher)に分割され、データの完全性が保証される。サブバッファとそれに付随するシャドウバッファとを読出し又は書込みに交互に切り替えることは、本発明の特徴として、各アクセスの交換又は記憶装置の内容の交換によって実現される。
このとき、本発明の特徴として、各サブバッファと各シャドウバッファは、2つのFlexRayメッセージが1つずつ有するデータ領域及び/又はヘッダ領域を保存できるように構成される。
様々な加入者装置又はホストに適切に仕様を合わせられるように、第二の装置は、加入者装置に特化したサブモジュールと加入者装置から独立したサブモジュールとから構成されるインタフェースモジュールを含む。これにより、加入者装置との調整には加入者装置に特化したサブモジュールのみを変更すればよく、全体としてFlexRay通信モジュールの柔軟性が向上する。その際、サブモジュールは、当該インタフェースモジュール内でソフトウェアごとに実現される。つまり、各サブモジュールはソフトウェア機能として実現される。
FlexRayにおける冗長的伝送に応じて、第三の装置は、本発明の特徴として、第一のインタフェースモジュールと第二のインタフェースモジュールとを含む。また、第三の装置の内部は、それぞれ2つのデータ装置と接続する2つのデータバスに分割される。本発明の特徴として、第三の装置は、2つのデータバス及びそれぞれの2つのデータ装置を考慮して、第一のバッファと第二の2つのバッファをも含む。その際、第一及び第二のバッファは、2つのFlexRayメッセージの少なくとも1つのデータ領域が保存可能であるように構成される。本発明の特徴として、第三の装置の各インタフェースモジュールは、シフトレジスタとFlexRayプロトコル・ステートマシンとを含む。
FlexRayプロトコル仕様のうち特にバージョン2.0又は2.1は本発明に基づくFlexRay通信モジュールによって完全にサポートされ、例えば最大128個のメッセージ又はメッセージオブジェクトを構成することができる。その際、メッセージの各データフィールド又は各データ領域の大きさに従い、様々なサイズのメッセージオブジェクトを保存するための柔軟に構成可能なメッセージ記憶部が備えられる。したがって、本発明の特徴として、様々な長さのデータフィールドを有するメッセージ又はメッセージオブジェクトが構成される。その際、本発明の特徴として、メッセージ記憶部は先入先出法(FIFO:first in−first out)により構成され、構成可能な受信時の先入先出法(Empfangs−FIFO)が備えられる。記憶装置内の各メッセージ又は各メッセージオブジェクトは、受信バッファ若しくは送信バッファ又は構成可能な受信時の先入先出法の一部として構成される。同様に、FlexRayネットワークでのフレームID、チャネルID及びサイクルカウンタに基づく許容範囲のフィルタリングが可能である。したがって、本発明の特徴として、ネットワーク管理がサポートされる。さらに、本発明の特徴として、マスク可能なモジュール割込みも備えられる。
本発明のさらなる特徴及び有利な実施形態は、特許請求の範囲に記載の請求項の構成要件及び本明細書から明らかとなるであろう。
図1では、加入者装置又はホスト102をFlexRay通信接続101へ、即ちFlexRayの物理層へ連携させるためのFlexRay通信モジュール100が示されている。さらに、FlexRay通信モジュール100は、接続107を介して加入者装置又は加入者装置プロセッサ102と、また接続106を介して通信接続101と接続している。伝送時間及びデータの完全性について問題が発生しないように連携を行うため、図に示されている通り、FlexRay通信モジュールは本質的に3つのコンポーネントに区分される。ここで第一のコンポーネント105は、特にクリップボードなど、伝送メッセージの少なくとも一部分を保存するために用いられる。第二のコンポーネント104は、接続107及び108を介して、加入者装置102と前記第一のコンポーネント105との間を中継する。同様に第三のコンポーネント103は、接続106及び109を介して、加入者装置101と第一のコンポーネント105との間を中継する。これにより、メッセージの一部、特に第一のコンポーネント105内または第一のコンポーネント105から出力されるFlexRayメッセージの一部としてのデータの入力及び出力を、データの完全性を保証しながら最適な速度で非常に柔軟に行うことを実現する。
図2では、通信モジュール100が、好適な実施形態にとしてあらためて詳細に示されている。同様に、各接続106〜109が詳細に示されている。ここで第二のコンポーネント104は、入力バッファ(IBF)201、出力バッファ(OBF)202、並びに2つの構成要素203及び204から構成されるインタフェースモジュールを含む。第一のサブモジュール203は加入者装置から独立しており、第二のサブモジュール204は加入者装置に特化している。加入者装置に特化したサブモジュール(カスタマCPUインタフェース:CIF)204は、加入者装置に特化したホストCPU102、即ちカスタマ専用加入者装置をFlexRay通信モジュール100と接続させる。さらに、双方向のデータバス216と、アドレスバス217と、制御入力218とが備えられる。同様に、割込み出力219が備えられる。加入者装置に特化したサブモジュール204は、加入者装置から独立したサブモジュール203(汎用CPUインタフェース:GIF)と接続する。つまり、FlexRay−IPモデルとも呼ばれるFlexRay通信モジュールは、汎用の、即ち一般的なCPUインタフェースを有する。当該加入者装置に特化したサブモジュール、即ちカスタマCPUインタフェースCIFを介して、CPUインタフェースには多くの様々なカスタマに特化したホストCPUが接続される。これにより、加入者装置に応じて変更するのはサブモジュール204のみとなり、コストが明らかに低減される。
入力バッファ201及び出力バッファ202は、1つの記憶モジュール又は別々の記憶モジュールの中で構成することが可能である。入力バッファ201は、メッセージ記憶部300へ伝送するためのメッセージを一時的に格納する。ここで、入力バッファ201は、特に構成情報を含むヘッダセグメント、及びデータセグメント又はペイロードからそれぞれ成る2つの完全なメッセージを保存できるように構成されるのが好適である。この場合、入力バッファは2つの構成要素(サブバッファとシャドウバッファから)から構成される。これにより、入力バッファの2つの構成要素に交互に書込むことで、又はアクセスの切り替えを行うことで、加入者装置CPU102とメッセージ記憶部200との間の伝送をより高速に行うことができるようになる。同様に、出力バッファ202は、メッセージ記憶部300から加入者装置CPU102へ伝送するためのメッセージを一時的に格納する。ここで、出力バッファ202も、特に構成情報を含むヘッダセグメント、及びデータセグメント又はペイロードからそれぞれ成る2つの完全なメッセージを保存できるように構成される。また、出力バッファ202は2つの構成要素、サブバッファとシャドウバッファに分割される。これにより、2つの構成要素を交互に読込むことによって、又はアクセスの切り替えを行うことで、加入者装置又はホストCPU102とメッセージ記憶部200との間の伝送をより高速に行うことができるようになる。このブロック201〜204から成る第二のコンポーネント104は、図に示すように、第一のコンポーネント105に接続される。
コンポーネント105は、メッセージハンドラ(MHD)200とメッセージ記憶部300(Message RAM)とから構成される。メッセージハンドラは、入力バッファ201及び出力バッファ202と、メッセージ記憶部300との間のデータ転送を検証/制御する。同様に、メッセージハンドラは、第三のコンポーネント103を介する逆方向のデータ伝送を検証/制御する。メッセージ記憶部は、シングルポートRAMとして構成されるのが好適である。このRAM記憶装置は、メッセージ又はメッセージオブジェクト、即ち構成及び状態に関するデータを含む実質的なデータを保存する。メッセージ記憶部300の厳密な構造は、図3でより詳細に示される。
第三のコンポーネント103は、ブロック205〜208から構成される。FlexRay物理層の2つのチャネルに応じて、コンポーネント103は、2つずつのデータ方向を有する2つのデータバスに分割される。接続213及び214を参照すると明らかなように、RxA(受信)とTxA(送信)によるチャネルA、及びRxBとTxBによるチャネルBの2つのデータ方向が示されている。接続215は、任意の双方向の制御入力である。第三のコンポーネント103の接続は、チャネルBのための第一のバッファ205及びチャネルAのための第二のバッファ206を介して行われる。2つのバッファ(一時的バッファRAM:RAM A 及びRAM B)は、第一のコンポーネント105からの又は第一のコンポーネント105へのデータ伝送のためのバッファメモリ(緩衝記憶装置)として機能する。2つのチャネルに応じて、2つのバッファ205及び206は、それぞれインタフェースモジュール207及び208と接続される。インタフェースモジュール207及び208は、送信/受信シフトレジスタ及びFlexRayプロトコル有限ステートマシンから構成されるFlexRayプロトコル制御部又はバスプロトコル制御部を含む。したがって、双方のバッファ205及び206は、インタフェースモジュール又はFlexRayプロトコル制御部207及び208のシフトレジスタとメッセージ記憶部300との間のデータ伝送のための緩衝記憶装置として機能する。ここでも、本発明の特徴として、各バッファ205又は206によりデータフィールド、即ち2つのFlexRayメッセージのペイロードセグメント又はデータセグメントが保存される。
さらに、通信モジュール100内に、グローバル時間供給部(GTU)209が示されている。グローバル時間供給部は、FlexRayでのグローバル時間スロット、即ちマイクロティック(Mikrotick:μT)及びマクロティック(Makrotick:MT)を提示する役割を果たす。また、グローバル時間供給部209により、フォールト・トレラントなサイクルカウンタのタイミングの同期とFlexRayの静的及び動的セグメントにおける同期処理の制御が行われる。ブロック210は、システム全体制御部(System Universal Control:SUC)としてFlexRay通信制御装置の動作モードを判定/制御する。動作モードには、ウェイクアップ、スタートアップ、再統合又は統合、ノーマルオペレーション、及びパッシブオペレーションが含まれる。
ブロック211は、FlexRayプロトコル仕様v2.0に記載されているように、ネットワーク/エラー管理部(NEM)を示している。さらに、ブロック212は割込み制御部(INT)を示している。割込み制御部は、ステータス・エラー割込みフラグ(status and error interrupt flag)を管理し、加入者装置CPU102への割込み出力219を判定/制御する。さらに、ブロック212は、時間割込みを生成するために、1つの絶対的タイミングの生成器及び1つの相対的タイミングの生成器を含む。
FlexRayネットワークの通信においては、最大254バイトのメッセージオブジェクト又はメッセージ(メッセージバッファ)を構成することが可能である。メッセージ記憶部300は、典型的には最大128メッセージオブジェクトを保存できるメッセージRAM記憶装置(Message RAM)である。メッセージ自体の処理又は管理に関わる全機能は、メッセージハンドラ200に実装される。機能としては、典型的には許容範囲のフィルタリング、2つのFlexRayプロトコル制御ブロック207と208、及びメッセージ記憶部300、つまりメッセージRAMとの間のメッセージ転送、送信順序管理、及び構成データ又はステータスデータの準備などがある。
外部のCPU、即ち加入者装置プロセッサ102としての外部プロセッサは、加入者インタフェースを介し、加入者装置に特化した構成要素204によって、FlexRay通信モジュールのレジスタに直接アクセスすることができる。その際、複数のレジスタが使用される。レジスタは、FlexRayプロトコル制御部としてのインタフェースモジュール207及び208、メッセージハンドラ200、グローバル時間供給部209、システム全体制御部210、ネットワーク/エラー管理部211、割込み制御部212、並びにメッセージRAMとしてのメッセージ記憶部300へのアクセスを構成/制御し、対応するステータスを表現するために導入される。少なくともこのレジスタの構成要素に関しては、図4〜6及び図7〜9においてより詳細に説明する。前述の本発明の1つの実施形態に基づくFlexRay通信モジュールによって、FlexRay仕様v2.0又はv2.1が容易に実現される。それに伴い、対応するFlexRayの機能性を備えたASIC(特定用途向けIC)又はマイクロコントローラを容易に作製することができる。
図3では、メッセージ記憶部300を区分化した様子が詳細に示されている。FlexRayプロトコル仕様に要求されるFlexRay通信制御装置の機能を実現するためには、送信するメッセージを準備するメッセージ記憶部(送信バッファ)、及び正常に受信したメッセージを保存するためのメッセージ記憶部(受信バッファ)が必要である。FlexRayプロトコルは、データ領域であるペイロード領域が0〜54バイトのメッセージを許容する。図2で示されているように、メッセージ記憶部は、FlexRay通信モジュール100の構成要素である。後述の方法及びメッセージ記憶部に関連し、特にRAMを使用する場合の送信メッセージ及び受信メッセージの保存について以下に記載する。まず本発明の1つの実施形態に基づく仕組みによって、所定の容量を持つメッセージ記憶部に可変の数のメッセージを保存することができる。このとき保存可能なメッセージ数は、個々のメッセージのデータ領域の容量に依存する。これにより、メッセージのデータ領域の容量は制限されず、求められる記憶部の容量を最小限に抑えることができ、記憶部を効率よく最大限に活用することができる。以下、FlexRay通信制御装置のための、特にRAMによるメッセージ記憶部の可変的な区分化について詳しく説明する。
実装としてメッセージ記憶部は、固定のワード長をnビット(例えば8、16、32ビット等)に、所定のメモリ深度をmワードとして構成される(m、nは自然数)。その際、メッセージ記憶部300は、2つのセグメント、即ちヘッダセグメント(HS)とデータセグメント(DS)(Payload Section、 Payload Segment)とに分割される。これにより、メッセージ単位に1つのヘッダ領域(HB)及び1つのデータ領域(DB)が適用される。即ち、メッセージ0、1〜k(kは自然数)に対して、ヘッダ領域(HB)0、HB1〜HBk及びデータ領域DB0、DB1〜DBkが適用される。メッセージの中では、第一のデータと第二のデータは区別して扱われる。第一のデータとはFlexRayメッセージに関する構成データ及び/又はステータスデータに相当し、各ヘッダ領域(HB)(HB0、HB1…HBk)に設けられる。伝送対象の実質的なデータである第二のデータは、各データ領域DB(DB0、DB1…DBk)に適切に設けられる。このように、第一のデータについてはメッセージ単位で(ビット、バイト又はワードで測定される)第一のデータ量、またメッセージ内の第二のデータについては(同様にビット、バイト又はワードで測定される)第二のデータ量が発生する。第二のデータ量はメッセージ単位で異なっていてもよい。ヘッダセグメント(HS)とデータセグメント(DS)の分割は、メッセージ記憶部300において可変的に行われる。つまり2つの領域間に一定の境界は存在しない。本発明の1つの実施形態として、ヘッダセグメント(HS)とデータセグメント(DS)の分割は、メッセージ数k、実質的なデータ量としての第二のデータ量、メッセージ又はk個の全メッセージのデータ量に依存する。本発明の1つの実施形態としては、各メッセージの構成データKD0、KD1〜KDkにそれぞれ、データポインタDP0、DP1〜DPkが直接割り当てられる。本発明の1つの実施形態としては各ヘッダ領域(HB)(HB0、HB1〜HBk)に一定数のワード、ここでは2ワードが割り当てられ、構成データKD(KD0、KD1…KDk)とデータポインタ(DP)(DP0、DP1…DPk)が必ず同一のヘッダ領域(HB)内に備えられる。ヘッダ領域(HB)を有するヘッダセグメント(HS)の容量又は第一のデータ量は、保存されるk個のメッセージに依存する。さらに、ヘッダセグメント(HS)に続いて、実質的なメッセージデータD0、D1〜Dkを保存するためのデータセグメント(DS)が結合される。データセグメント(又はデータセクション)(DS)のデータ量は、そこに含まれるメッセージデータの各データ量に依存する。例えば、データ領域DB0では6ワード、DB1では1ワード、DBk30では2ワードなどとなる。各データポインタDP0、DP1〜DPkは、必ず各メッセージ0、1〜kのデータD0、D1〜Dkの始点、即ち各データ領域DB0、DB1〜DBkの開始アドレスを指す。これにより、メッセージ記憶部のヘッダセグメント(HS)とデータセグメント(DS)の分割を可変的に行うことができ、その分割はメッセージ数自体、メッセージの各データ量、及び第二のデータ量全体に依存することとなる。メッセージがより少ない数で構成された場合はヘッダセグメントはより小さくなり、メッセージ記憶部内の空き領域はデータセグメント(DS)に追加されてデータ保存のために使用される。こうした可変性によって、記憶部が効率よく最大限に活用されることが保証される。したがって、比較的小さな記憶装置を使用することも可能となる。特に空きデータセグメント(FDS)の容量は、保存されるk個のメッセージとメッセージの各第二のデータ量との組み合わせに応じて最小化され、場合によってはゼロとなる。
データポインタを使用する以外に、第一及び第二のデータ、即ち、構成データKD(KD0、KD1、…、DKk)及び実質的データD(D0、D1、…、Dk)を、所定の順序で保存してもよい。そうすることにより、ヘッダセグメント(HS)内のヘッダ領域(HB)(HB0〜HBk)の順序とデータセグメント内のデータ領域(DB)(DB0〜DBk)の順序はそれぞれ一致する。その場合は、状況によってデータポインタが必要とされない可能性がある。
本発明の特別な実施形態において、ヘッダセグメント(HS)及びデータセグメント(DS)内に保存されたデータの正確さを担保するため、メッセージ記憶部にエラー検出生成部、特にパリティビット生成部と、エラー検出判定部、特にパリティビット判定部が割り当てられる。その際、ワード又は領域(HB及び/又はDB)の単位でチェックサム、特にパリティビットが併せて構成される。さらなる別の検査識別子、例えばCRC(巡回冗長検査)又はECC(誤り符合訂正)等のより高度な識別子を用いて構成してもよい。これにより、メッセージ記憶部を固定的に分割することと比較して、以下の(本発明の1つの実施形態による)利点が挙げられる。
使用者は、プログラミングの際に比較的数が多くデータフィールドが小さいメッセージを使用するのか、又は比較的数の少なくデータフィールドが大きいメッセージを使用するのかを決定することができる。様々な容量のデータ領域を含むメッセージを構成する際に、実際の記憶容量を最も効率よく最大限に活用することが可能である。また、使用者は、1つのデータ記憶部の領域を様々なメッセージのために共用することができる。
集積回路により通信制御装置を実現する際、メッセージ記憶部の容量は、使用される記憶装置のメモリ深度をアプリケーションからの要求に合わせて調整することにより、調節される。その際、通信制御装置のその他の機能は変更されない。
図4〜6及び7〜9を参照しながら、ホストCPUのアクセスについて、即ち、バッファ装置201及び202を介した構成データ又はステータスデータ及び実質的データの書込みと読出しについてさらにより詳細に記述する。その際、データの完全性が保証されるのと同時に高い伝送速度が保証されるように、データ伝送に関する疎結合(Entkopplung)を確立することを目的とする。対応するプロセスの制御はメッセージハンドラ200を介して行われるが、それについては後ほど図10、11及び12においてあらためて詳細に記述する。
図4、5及び6では、まず、加入者装置CPU102のホストCPUによる、入力バッファ201を介したメッセージ記憶部300への書込みアクセスについてより詳細に説明する。図4では通信モジュール100が再度示されているが、参照しやすいように、ここでは通信モジュール100に関連する構成要素が示されている。ここでは、シーケンス制御の役割を果たすメッセージハンドラ200と2つの制御レジスタ403及び404が示されている。制御レジスタは、図に示されているように、通信モジュール100内のメッセージジハンドラ200の外部に配置されているが、メッセージハンドラ200自体の内部に含まれていてもよい。その際、符号403は入力要求レジスタ(Input Buffer Command Request Register)を、符号404は入力マスクレジスタ(Input Buffer Command Mask Register)を表している。ホストCPU102によるメッセージ記憶部(Message RAM)300への書込みアクセスは、即ち、中間に配置される入力バッファ201を介して行われる。この入力バッファ記憶装置201は、分割又は二重化される。つまり、サブバッファ400とサブバッファに付随するシャドウバッファ401として構成される。これにより、以下に述べるように、ホストCPU102によるメッセージ若しくはメッセージオブジェクト又はメッセージ記憶部300のデータへのアクセスが継続的に行われ、データの完全性及び高速化されたデータ伝送が保証される。アクセス制御は、入力要求レジスタ403及び入力マスクレジスタ404を介して行われる。レジスタ403では、コード0〜31によって、例えば32ビット幅のレジスタ403における各ビット位置が表される。同様に、レジスタ404でもレジスタ404におけるビット位置0〜31が表される。
本発明の1つの実施形態として、例えば、レジスタ403のビット位置0〜5、15、16〜21及び31は、シーケンス制御に関連して特別な機能を担っている。レジスタ403のビット位置0〜5には、メッセージ識別子としての識別子IBRH(Input Buffer Request Host)を登録することができる。同様に、レジスタ403のビット位置16〜21には、識別子IBRS(Input Buffer Request Shadow)を登録することができる。同様に、403のレジスタ位置15にはアクセス識別子としてIBSYHを、また403のレジスタ位置31にはIBSYSを登録することができる。着目すべきはレジスタ404の位置0〜2である。即ち、LHSH(Load Header Section Host)を含むビット位置0及びLDSH(Load Data Section Host)を含むビット位置1に加えて、データ識別子としてさらに別の識別子が登録される。このデータ識別子は、ここでは最も簡略化された形式、即ちそれぞれ1ビットで構成される。レジスタ404のビット位置2には、開始識別子として、STXRH(Set Transmission X Request Host)が書込まれる。続けて、入力バッファを介したメッセージ記憶部への書込みアクセスの処理について記載する。
ホストCPU102は、転送されるメッセージのデータを入力バッファ201に書込む。その際、ホストCPU102は、メッセージ記憶部のヘッダセグメント(HS)用のメッセージ構成及びヘッダデータ(KD)とメッセージ記憶部のデータセグメント(DS)用のメッセージの実質的な伝送対象データ(D)のいずれか、又は双方のデータを書込むことができる。構成データ及び/又は実質的データとしてのメッセージのどの部分が伝送されるべきなのかは、入力マスクレジスタ404内の特別なデータ識別子LHSH及びLDSHによって設定される。ここでLHSHは構成データKDとしてのヘッダデータが伝送されるべきかどうか、またLDSHはデータ(D)が伝送されるべきかどうかの設定を表す。入力バッファ201は2つの構成部分、即ちバッファ400の構成要素とそれに付随するシャドウバッファ401から構成され交互にアクセスが行われるので、LHSH及びLDSHに対応するものとして、シャドウバッファ401に関連する2つのさらなるデータ識別子領域が設けられる。その領域であるレジスタ404のビット位置16及び17にあるデータ識別子は、それぞれLHSS(Load Header Section Shadow)、LDSS(Load Data Section Shadow)と呼ばれる。これらデータ識別子によって、シャドウバッファ401に関連する伝送プロセスが制御される。
開始ビット又は開始識別子STXRHが、入力マスクバッファ404のビット位置2に設定されると、伝送される構成データ及び/又は実質的データがそれぞれメッセージ記憶部300に転送された後、自動的に対応するメッセージオブジェクトのための送信要求(Transmission Request)が設定される。即ち、この開始識別子STXRHにより伝送メッセージオブジェクトの自動送信が制御/開始される。
シャドウバッファに対応するものとして、開始識別子STXRS(Set Transmission X Request Shadow)がある。典型的には入力マスクバッファ404のビット位置18に含まれ、最も簡略化する場合は1ビットとして構成される。識別子STXRSは、シャドウバッファ401に関連して識別子STXRHと類似した機能を担う。
ホストCPU102が、メッセージ識別子を、特に入力バッファ201のデータの転送先であるメッセージ記憶部300内のメッセージオブジェクトのコードを入力要求レジスタ403のビット位置0〜5のIBRHに書込むと、半円の矢印が示すように、入力バッファ201のサブバッファ400とそれに付随するシャドウバッファ401の内容が交換(vertauscht)され、又はホストCPU102及びメッセージ記憶部300からの2つのバッファ400・401へのアクセスがそれぞれ交換される。このとき、典型的にはデータ転送、即ちメッセージ記憶部300へのデータ伝送も開始される。メッセージ記憶部300へのデータ伝送自体は、シャドウバッファ401から開始される。同時に、レジスタ領域IBRHとIBRSとが交換される。さらに、LHSH/LDSHと、LHSS/LDSSとが交換される。同様に、STXRHがSTXRSと交換される。ここで、IBRSは、メッセージの識別子、即ちシャドウバッファ401から転送中のメッセージオブジェクトを指すコードを示し、又はメッセージオブジェクトとしてメッセージ記憶部のどの領域がシャドウバッファ401の最新のデータ(KD及び/又はD)を含んでいるのかを示している。また、入力要求レジスタ403のビット位置31にある識別子(この場合もやはり1ビットなど)IBSYS(Input Buffer Busy Shadow)により、その都度の伝送の開始に、シャドウバッファ401が関与するかどうかが表される。したがって、例えばIBSYS=1の場合にはまさにシャドウバッファ401から伝送が行われるが、IBSYS=0の場合にはこれに該当しない。このIBSYSのビットは、シャドウバッファ401とメッセージ記憶部300との間でメッセージを転送中であることを示すために、例えばIBRH、即ちレジスタ403のビット位置0〜5に書込みを行うように構成される。メッセージ記憶部300へのデータ伝送が終了した後は、IBSYSはリセットされる。
シャドウバッファ401からのデータ転送が進行する間、ホストCPU102は、次に転送されるメッセージを入力バッファ又はサブバッファ400に書込むことが可能である。例えば、さらに別のアクセス識別子IBSYH(Input Buffer Busy Host)をレジスタ403のビット位置15で使用することで、識別子はより好適となる。シャドウバッファ401とメッセージ記憶部300との間で伝送が進行する間、即ちIBSYS=1である間に、ホストCPU102が、レジスタ403のビット位置0〜5のIBRHを書込むと、入力要求レジスタ403にIBSYHが設定される。進行中の転送/伝送が終了すると直ちに要求された転送が開始され(前述のSTXRHによる要求を参照)、ビットIBSYHがリセットされる。ビットIBSYSは、データがメッセージ記憶部に転送されることを表示するため、転送中は常に設定されたままである。ここで全実施形態において使用するビットは全て、1ビット以上の識別子として構成することが可能である。但し保存及び処理上の合理性から1ビットであることが好適である。
前述の仕組みによって、ホストCPU102は、ヘッダ領域(HB)及びデータ領域(DB)により構成されるメッセージ記憶部内のメッセージオブジェクトに、データを継続的に転送することができる。なお、ホストCPU102の入力バッファへのアクセス速度が、FlexRay IPモジュール、即ち通信モジュール100の内部転送速度より低いこと、又は同じであることを前提とする。
図7、8及び9では、ホストCPU又は加入者装置CPU102による、出力バッファ又は出力バッファ202を介した、メッセージ記憶部300に対する読出しアクセスについてより詳細に説明する。図7では、通信モジュール100が再度示されているが、参照しやすいように、ここでは通信モジュール100に関連する構成要素が示されている。ここでは、シーケンス制御の役割を果たすメッセージハンドラ200と2つの制御レジスタ703及び704が示されている。制御レジスタは、図に示されているように、通信モジュール100内のメッセージハンドラ300の外部に配置されているが、メッセージハンドラ200自体の内部に含まれていてもよい。その際、符号703は出力要求レジスタ(Output Buffer Command Request Register)を、符号704は出力マスクレジスタ(Output Buffer Command Mask Register)を表している。ホストCPU102によるメッセージ記憶部300に対する読出しアクセスは、中間に配置される出力バッファ202を介して行われる。この出力バッファ202も同様に分割又は二重化される。即ち、出力バッファ202はサブバッファ701とサブバッファに付随するシャドウバッファ700として構成される。これにより、以下に述べるように、ホストCPU102によるメッセージ若しくはメッセージオブジェクト又はメッセージ記憶部300のデータへのアクセスが継続的に行われ、データの完全性、メッセージ記憶部からホストへ逆方向に行われる高速化された伝送が保証される。アクセス制御は、出力要求レジスタ703及び出力マスクレジスタ704を介して行われる。レジスタ703においても、符号0〜31によって32ビット幅の典型的なレジスタの各ビット位置が表される。同様に、レジスタ704でもレジスタのビット位置0〜31が表される。
本発明の1つの実施形態として、例えばレジスタ703のビット位置0〜5、8、9、15、及び16〜21は、読出しアクセスのシーケンス制御に関して特別な機能を担っている。ここで、レジスタ703のビット位置0〜5には識別子OBRS(Output Buffer Request Shadow)をメッセージ識別子として登録できる。同様に、レジスタ703のビット位置16〜21には識別子OBRH(Output Buffer Request Host)を登録できる。アクセス識別子として、レジスタ703のビット位置15に識別子OBSYS(Output Buffer Busy Shadow)を登録できる。着目すべきなのは、出力マスクレジスタ704のビット位置0及び1である。即ち、RHSS(Read Header Section Host)を含むビット位置0、及びRDSS(Read Data Section Shadow)を含むビット位置1に加え、データ識別子としてさらに別の識別子が登録される。さらなる識別子として、典型的には、ビット位置16と17にRDSH(Read Data Section Host)とRHSH(Read Header Section Host)が設けられる。このデータ識別子は、ここでは最も簡略化された形式、即ちそれぞれ1ビットで構成される。レジスタ703のビット位置9には、開始識別子REQが登録される。さらに転送識別子VIEWが設けられ、典型的にはレジスタ703のビット位置8に登録される。
ホストCPU102は、要求するメッセージの識別子、特に要求するメッセージオブジェクトのコードをOBRSに、即ちレジスタ703のビット位置0〜5に書込みながら、メッセージ記憶部300のメッセージオブジェクトのデータを要求する。この場合も逆方向の伝送と同じく、ホストCPUは、ヘッダ領域におけるメッセージのステータスまたは構成及びヘッダデータ(KD)とデータ領域におけるメッセージの伝送対象の実質的データ(D)のいずれか、又は両データを読み込むことができる。ここでヘッダ領域及び/又はデータ領域のデータのどの部分を伝送するべきかは、逆方向の伝送と対比可能であるが、RHSS及びRDSSの設定により示される。即ち、RHSSはヘッダデータが読み込まれるべきかどうか、またRDSSは実質的データが読み込まれるべきかどうかを示す。
開始識別子は、メッセージ記憶部からシャドウバッファ700への伝送を開始する役割を果たす。即ち、識別子として最も簡略化されて1ビットが使用される場合、出力要求レジスタ703のビット位置9にビットREQを設定することによって、メッセージ記憶部300からシャドウバッファ700への伝送が開始される。伝送が進行中であることは、アクセス識別子によって、即ち再び最も簡略化される場合は1ビットのOBSYSによってレジスタ703で表示される。衝突(Kollision)を回避するために、好適にはビットREQのみが設定される。即ち、OBSYSが設定されていない場合には伝送は進行していないことを意味する。そのため、メッセージ記憶部300とシャドウバッファ700との間のメッセージ転送も行われる。その処理は実質的には、その逆方向の伝送と対比可能であるが、図4、5及び6で示されているのと同じ形(補完的なレジスタ配置)で制御/実行され、又は、変化させた実施形態として識別子を追加し、即ちレジスタ703のビット位置8に転送識別子VIEWを追加して実行される。この場合、まず伝送終了後にビットOBSYSがリセットされる。そして出力要求レジスタ703でビットVIEWが設定されると、サブバッファ701及びそれに付随するシャドウバッファ700の内容が交換され、又はサブバッファへのアクセスとシャドウバッファへのアクセスとが交換されることで、ホストCPU102は、メッセージ記憶部へ要求したメッセージオブジェクト、即ちサブバッファ701内の対応するメッセージを読出すことができるようになる。その際、図4〜6に示された逆方向の伝送と対比可能であるが、レジスタのセル(Registerzelle)OBRSとOBRHとが交換される。同様に、RHSSとRDSS、RHSHとRDSHがそれぞれ交換される。ここで安全性を高める仕組みとして、OBSYSが設定されていない場合、即ち伝送が進行していない場合に限りビットVIEWを設定するよう構成してもよい。
よって、ホストCPU102によるメッセージ記憶部300への読出しアクセスは、中間に配置される出力バッファ202を介して行われる。この出力バッファは、メッセージ記憶部300に保存されたメッセージオブジェクトへのホストCPU102からの継続的なアクセスを保証するため、入力バッファと同様に二重化され、又は2つの構成要素から構成される。ここでも高いデータの完全性と高速化された伝送という利点が実現される。
上記の入力及び出力バッファの使用によって、ホストCPUが、モジュール内部で待ち時間があるにも関わらず、中断することなくメッセージ記憶部にアクセスできることが保証される。
このようなデータの完全性を保証するため、データ伝送、特に通信モジュール100内での伝達はメッセージハンドラ200によって行われる。そこで、図10にメッセージハンドラ200を示す。メッセージハンドラは、その機能性において、複数のステートマシン又はステートオートマトン、即ち有限オートマトン、いわゆる有限ステートマシン(FSM:Finite−State−Machinen)として表すことができる。その際、少なくとも3つのステートマシンが、また特別な実施形態においては5つのステートマシンが備えられる。第一の有限ステートマシンは、IOBF−FSM(Input/Output Buffer State Machine)501である。このIOBF−FSMは、入力バッファ又は出力バッファに関連する伝送方向にしたがって、2つの有限ステートマシン、即ち、IBF−FSM(Input Buffer FSM)とOBF−FSM(Output Buffer FSM)に分割される。さらに、最大5つのステートオートマトン(IBF−FSM、 OBF−FSM、 TBF1−FSM、 TBF2−FSM、AFSM)を構成してもよい。しかし、全てに共通してIOBF−FSMが1つ備えられることが好ましい。少なくとも第二のステートマシンは、ここでの好適な実施形態として2つのブロック502と503に分割され、図2に示されているように記憶装置205及び206に関連して2つのチャネルA及びBを使用する。ここで、有限ステートマシンは、2つのチャネルA及びB使用するために設けられる。好適な実施形態としては、有限ステートマシンTBF1−FSM(Transient Buffer 1(206、RAM A) State Machine)502がチャネルAのために、TBF2−FSM(Transient Buffer 2(205、RAM B) State Machine)503がチャネルBのために設けられる。
好適な実施形態として、仲介有限ステートマシン(Arbiter−Finite−State−Machine)AFSM500は、3つの有限ステートマシン501〜503のアクセスを制御する役割を果たす。データ(KD及び/又はD)は、電圧制御発振器、水晶発振器等のクロック生成手段によって生成されたクロックに基づき、又はこの調節されたクロックを起点として、通信モジュールにより伝送される。ここでのクロックTは、モジュール内で生成され、又は外部からのバスクロック等として構成される。この仲介有限ステートマシンAFSM500は、3つの有限ステートマシン501〜503のうちの1つずつ交互に、特にクロック周期Tごとにメッセージ記憶部へのアクセス権を与える。即ち、利用可能な時間は、個々のステートマシン501〜503のアクセス要求に応じて、要求のあったステートオートマトンに分配される。1つの有限ステートマシンのみアクセス権の要求があった場合、このステートマシンが100%のアクセス時間、即ち全クロックTを獲得する。2つのステートマシンにアクセス権が要求される場合、それぞれの有限ステートマシンがアクセス時間を50%ずつ獲得する。さらに、3つのステートマシンにアクセス権が要求された場合、各有限ステートマシンがアクセス時間を3分の1ずつ獲得する。したがって、使用可能なバンド幅は最も効率よく最大限に活用される。
第一の有限ステートマシンIOBF−FSM501は、必要に応じて以下の動作を行う。
− 入力バッファ201からメッセージ記憶部300内の選択されたメッセージオブジェクトへのデータ転送。
− メッセージ記憶部300内の選択されたメッセージオブジェクトから出力バッファ202へのデータ転送。
− 入力バッファ201からメッセージ記憶部300内の選択されたメッセージオブジェクトへのデータ転送。
− メッセージ記憶部300内の選択されたメッセージオブジェクトから出力バッファ202へのデータ転送。
チャネルAのためのステートマシンTBF1−FSM502は、以下の動作を行う。
− メッセージ記憶部300内の選択されたメッセージオブジェクトからチャネルAのバッファ206へのデータ転送。
− バッファ206からメッセージ記憶部300内の選択されたメッセージオブジェクトへのデータ転送。
− メッセージ記憶部内の適切なメッセージオブジェクトの検索。受信時には、チャネルAで受信されたメッセージを保存するメッセージオブジェクト(受信バッファ)が、許容範囲のフィルタリングとして検索される。送信時には、次にチャネルAで送信されるメッセージオブジェクト(送信バッファ)が検索される。
− メッセージ記憶部300内の選択されたメッセージオブジェクトからチャネルAのバッファ206へのデータ転送。
− バッファ206からメッセージ記憶部300内の選択されたメッセージオブジェクトへのデータ転送。
− メッセージ記憶部内の適切なメッセージオブジェクトの検索。受信時には、チャネルAで受信されたメッセージを保存するメッセージオブジェクト(受信バッファ)が、許容範囲のフィルタリングとして検索される。送信時には、次にチャネルAで送信されるメッセージオブジェクト(送信バッファ)が検索される。
上記の動作と、チャネルBのための、ブロック503の有限ステートマシンTBF2−FSMの動作は類似している。このステートマシンは、メッセージ記憶部300内の選択されたメッセージオブジェクトからバッファ205へのチャネルBからのデータ転送と、バッファ205からメッセージ記憶部300内の選択されたメッセージオブジェクトへのデータ転送とを実行する。また、メッセージ記憶部内で適切なメッセージオブジェクトを検索する検索機能も、TBF1−FSMと類似している。受信の際、チャネルBで受信されたメッセージを保存するメッセージオブジェクト(受信バッファ)が、許容範囲のフィルタリングにおいて検索される。また、送信の際、次にチャネルBで送信されるメッセージ又はメッセージオブジェクト(送信バッファ)が検索される。
図11には伝送処理と伝送経路をあらためて示している。3つのステートマシン501〜503は、個々の構成要素間の各データ伝送を制御する。ここで、ホストCPU102、入力バッファ201及び出力バッファ202が再び示されている。また、メッセージ記憶部300、チャネルAのためのバッファ206とチャネルBのためのバッファ205が示されている。さらに、インタフェース207及び208が示されている。第一のステートマシンIOBF−FSM501は、入力バッファ201からメッセージ記憶部300へのデータ転送Z1Aとメッセージ記憶部300から出力バッファ202へのデータ転送Z1Bとを制御する。その際、データ伝送は32ビット等のワード長のデータバスを介して行われるが、さらに別のビット数を用いてもよい。このことは、メッセージ記憶部とバッファ206との間の伝送Z2の場合にも該当する。このデータ伝送は、チャネルAのためのステートマシンTBF1−FSM502によって制御される。メッセージ記憶部300とバッファ205との間の伝送Z3は、ステートオートマトンTBF2−FSM503によって制御される。その際にもデータ伝送は32ビット等のワード長のデータバスを介して行われるが、さらに別のビット数を用いてもよい。通常、前述の伝送経路を介して完全なメッセージオブジェクトをする転送には複数のクロック周期Tが必要となる。そこで、クロック周期Tに関する伝送時間の分配は、仲介するAFSM500によって行われる。図11には、メッセージハンドラ200によって制御される記憶装置間のデータバスが示されている。メッセージ記憶部に保存されたメッセージオブジェクトのデータの完全性を保証するため、図に示されたパスZ1A及びZ1B、Z2及びZ3のうちそれぞれ1つのパスでのみ、同時にデータが交換されるのが望ましい。
図12では、使用可能なシステムクロックTが、どのように仲介者AFSM500によって3つの要求元のステートオートマトンに分配されるかの例が示されている。第I段階において、オートマトン501及び502によるアクセス要求が行われる。この場合、全時間は半分ずつ、要求している双方のステートオートマトンに分配される。即ち、第I段階のクロック周期に関して、ステートオートマトン501はクロック周期T1及びT3においてアクセス権を獲得し、ステートオートマトン502はクロック周期T2及びT4においてアクセス権を獲得している。第II段階において、ステートマシン501のみがアクセスする場合は、3つのクロック周期の全て即ち100%のアクセス時間T5〜T7がIOBF−FSMに割り当てられる。第IIIの段階において、3つのステートオートマトン501〜503全てがアクセス要求を行い、全アクセス時間が3等分される。仲介者AFSMは、アクセス時間を、例えば、ステートマシン501がクロック周期T8及びT11において、ステートマシン502がクロック周期T9及びT12において、そしてステートマシン503がクロック周期T10及びT13においてアクセス権を獲得するように分配する。最後に第IVの段階において、2つのステートオートマトン502及び503による通信モジュールのチャネルA及びBへのアクセスが行われるので、クロック周期T14及びT16のアクセス権は有限ステートマシン502に、そしてクロック周期T15及びT17のアクセス権は有限ステートマシン503に分配される。
仲介オートマトンAFSM500は、3つのステートマシンのうち1つ以上がメッセージ記憶部300へのアクセスを要求した場合、アクセス権が要求元のステートマシンにクロック単位で交互に分配されるように調整を行う。このような処理方法によって、メッセージ記憶部に保存されたメッセージオブジェクトの完全性、即ちデータの完全性が保証される。例えば、ホストCPU102が、現在まさに受信メッセージを書込み中のメッセージオブジェクトを出力バッファ202を介して読出したいのであれば、どの要求が最初に出されたかに応じて古い状態又は新しい状態が読出される。このとき、メッセージ記憶部内のメッセージオブジェクトのアクセス自体の衝突は発生しない。
前述の方法により、ホストCPUは、実行中にメッセージ記憶部内のどの任意のメッセージオブジェクトをも読出し、又は書込むことができる。その際、選択されたメッセージオブジェクトは、ホストCPUがデータ交換に関与してアクセスしている間、FlexRayバスの2つのチャネルにおいてロック(バッファ・ロッキング)されることはないであろう。同時に、アクセスをクロック単位で連動させることにより、メッセージ記憶部に保存されたデータの完全性が保証され、全帯域幅を最大限に活用することによってデータ伝送速度が速められる。
(FlexRay ASCプロトコル ステップ2)
前述の仕組みにおいて、本発明の利点は、マイクロプロセッサ(ホスト)と特に内燃機関の制御に利用される、典型的にはFlexRay通信用の周辺装置との間のデータ伝送方法及び装置に特に関連する。このようなデータ伝送には、通常限られたリソースが使用される。即ち、帯域幅が制限されるのである。典型的には、シリアルインタフェースが利用される場合がこれに該当する。FlexRayコントローラのための非同期及び/又は同期インタフェース、特にシリアルインタフェース(ASC)107は、周辺装置としてのCPUインタフェース107を介して、コンポーネント104又は対応するサブモジュール204をホスト102と接続する。伝送される情報の関連性(Bedeutung)は、前述のFlexRayプロトコルなどの何らかのプロトコルによって設定されるのが好ましい(但しFlexRayプロトコルのみに限定されるわけではない)。通常、このようなプロトコルは以下の構成要素を含む。
1) アクセス方式(読出し/書込み)を示すフラグ
2) アクセス位置を示すアドレス
3a)伝送データのワード数のためのカウンタ、又は
3b)アクセス時にアドレスを加算し自動的に次のアクセスを行うかを識別するフラグ
4) 任意として加算されるアドレスの値
前述の仕組みにおいて、本発明の利点は、マイクロプロセッサ(ホスト)と特に内燃機関の制御に利用される、典型的にはFlexRay通信用の周辺装置との間のデータ伝送方法及び装置に特に関連する。このようなデータ伝送には、通常限られたリソースが使用される。即ち、帯域幅が制限されるのである。典型的には、シリアルインタフェースが利用される場合がこれに該当する。FlexRayコントローラのための非同期及び/又は同期インタフェース、特にシリアルインタフェース(ASC)107は、周辺装置としてのCPUインタフェース107を介して、コンポーネント104又は対応するサブモジュール204をホスト102と接続する。伝送される情報の関連性(Bedeutung)は、前述のFlexRayプロトコルなどの何らかのプロトコルによって設定されるのが好ましい(但しFlexRayプロトコルのみに限定されるわけではない)。通常、このようなプロトコルは以下の構成要素を含む。
1) アクセス方式(読出し/書込み)を示すフラグ
2) アクセス位置を示すアドレス
3a)伝送データのワード数のためのカウンタ、又は
3b)アクセス時にアドレスを加算し自動的に次のアクセスを行うかを識別するフラグ
4) 任意として加算されるアドレスの値
構成要素1)〜4)を含むプロトコル命令は、基本コマンド(einfaches Kommando)と呼ばれる。このようなコマンドは非常に使いやすく、伝達データを直列化して保存している場合、又は直列化して保存するべきである場合に効果的である。しかし、アクセスが順次(時系列に沿って)行われない場合にこの基本コマンドを用いると、オーバーヘッドが発生する。オーバーヘッドを処理するには、ホストCPUのメモリ及び計算リソースが必要となる。オーバーヘッドとは、データ伝送において第一義的に有効なデータに含まれず、伝達又は保存のための追加的情報として必要とされるデータを指す。
直接前後して続いていない(複数の)アドレス、又は他のアドレスとの間隔が不規則なアドレスにアクセスしなければならない場合、この基本コマンドを用いて新しいアドレス情報を複数回伝達しなければならない。
伝送の際に個々のビットに異常がある場合には、基本コマンドによって間違った場所にアクセスが行われ、又は読出しと書込みすら入れ替わってしまう可能性がある。
より高い処理性能を実現するために、本発明の1つの実施形態の枠組みとして、データ伝送のための追加的な情報を利用する。例えば、
*内部ステータス情報(レディ(ready)/ビジー状態/(busy state)/ビット(bits)等)
*ビットフィールドについての情報(境界等)
*(冗長性を低減する)所定の値
*(冗長性を低減する)基本コマンドの所定のシーケンス
*コマンド及びアドレスの正確性を保証する巡回冗長検査の結果
*内部ステータス情報(レディ(ready)/ビジー状態/(busy state)/ビット(bits)等)
*ビットフィールドについての情報(境界等)
*(冗長性を低減する)所定の値
*(冗長性を低減する)基本コマンドの所定のシーケンス
*コマンド及びアドレスの正確性を保証する巡回冗長検査の結果
アクセスが順次行われない場合の効率、及び書込みと読出しのアクセスが複合する場合の効率を上げるため、プロトコルは、ワイヤードロジックコントローラ(hardwired sequencer)又はプログラマブルロジックコントローラ(programmable sequencer)の形式で作成される。ワイヤードロジックコントローラはより少ないリソース(メモリ位置等)を使用し、コストが安価である。さらに、信頼性の面での利点があるため、より簡単に使用することができる。それに対して、プログラマブルロジックコントローラは、ワイヤードロジックコントローラよりも効率的で柔軟性が高い。
FlexRay通信モジュールを用いたデータ伝送を実践的に分析すると、最も使用されるシーケンス及び対応する基本コマンド群を見出すことができる。シーケンス及びコマンドをシーケンス制御として実装することで(ハードウェアに組み込み、又はプログラムする)、簡単な方法で呼び出すことができる。つまり、複数の基本コマンドが少なくとも1つの複合コマンドにまとめられ、各複合コマンドは内部に含まれる基本コマンドよりも短いコマンドで呼び出される。さらに、複合コマンドの実行に必要とされるリソースは、その内部に含まれる個々の基本コマンドを実行する場合よりも少なくて済む。
複合コマンドは、プロトコルに応じて、例えば以下の基本コマンドを含むことが可能である。
複合コマンド例a)
* (コマンドのビットフィールドで定義される)所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
* 所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
* レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* 進行中のシーケンスの終了を待つ。(ハードウェアはロックされている可能性がある。)
* (コマンドのビットフィールドで定義される)所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
* 所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
* レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* 進行中のシーケンスの終了を待つ。(ハードウェアはロックされている可能性がある。)
複合コマンド例b)
* レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* 1つ又は複数のビットの参照により進行中のシーケンスの終了を待つ。(ハードウェアはロックされている可能性がある)
* 内部データを転送バッファへ複写する。
* (コマンドのビットフィールドで定義される)所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
* 所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
* レジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* さらに別のレジスタのアドレスのいくつかのビットへの書込みを行う。ここでビット値は所定のビットフィールドからコマンドによって抽出される。残りのビットをパディングする。
* 1つ又は複数のビットの参照により進行中のシーケンスの終了を待つ。(ハードウェアはロックされている可能性がある)
* 内部データを転送バッファへ複写する。
* (コマンドのビットフィールドで定義される)所定のサイズのデータをレジスタの所定のアドレス領域へ伝送する。アドレスを加算する。
* 所定のサイズのデータをレジスタのさらに別の所定のアドレス領域へ伝送する。アドレスを加算する。
本発明の1つの実施形態を上位の視点から考察すると、複合コマンドによってステートマシンが構成され、複合コマンドの内部に含まれる基本コマンドの実行がステートマシンによって開始される。プログラマによる複合コマンドのモデルは、例えば、「バッファ読出し」(read buffer)又は「バッファ書込みと構成」(write buffer and configration)等となるであろう。以下に、「読出しバッファとステータス」という複合コマンドの例を示す。なお、求める機能を実現するため、16個の基本コマンドの代わりに、第一のブロックではFlxrEray_Read又はFlxrEray_Writeが、また第二のブロックでは、1つの複合コマンド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
// 読出しのためバッファのデータを割当て
// バッファ及びヘッダデータ(管理)を要求
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
個々の基本コマンドを実行するためには合計16回のアクセスが必要となるが、1つの複合コマンドを実行するためには1回のアクセスのみでよい。複合コマンドは、いわば一種の機能に相当し、その機能の枠組みにおいては、個々の基本コマンドは全て単純に連続的に実行されるのではない。むしろ、個々の基本コマンドの実行はシーケンスに関する(実践的に必要となる、又は理論的な)知識を応用し、複合コマンドの呼出しと実行の際には、個々の基本コマンド全てを呼出して順次実行する場合よりもホストCPUに求められるリソース(計算能力及びメモリ位置)と時間が少なくて済むように最適化される。そして、最適化されたバージョンが、複合コマンドとして保存される。
以下に、「書込みバッファ及びステータス」という複合コマンドの例を示す。なお、求める機能を実現するため、12個の基本コマンドの代わりに、第一のブロックではFlxrEray_Read又はFlxrEray_Writeが、また第二のブロックでは、1つの複合コマンド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
//入力バッファレジスタからメッセージ記憶部へ伝送
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
個々の基本コマンドを実行するためには合計12回のアクセスが必要となるが、1つの複合コマンドを実行するには1回のアクセスでよい。この例の場合も、個々の基本コマンドの実行は、複合コマンドの呼出し及び実行の際に、個々の基本コマンド全てを呼出して順次実行する場合よりもホストCPUに求められるリソース(計算能力及びメモリ位置)と時間が少なくて済むように最適化される。
特別な利用形態であるFlexRayに適合されたプロトコルを用いれば、ホストインタフェース102−107−104に関連する送信及び受信バッファに非常に好率よくアクセスすることができる。ここで設けられるインタフェースモジュールは、前述のように、構成要素203及び204から構成されている。このとき、詳細なトランザクション分析の結果として、最も利用頻度の高い複雑な動作が、少数の構成要素から成る基本コマンドのような表現で組み込まれる。
さらに、CRC又はパリティによって読出しアクセスと書込みアクセスとの取り違え又はアドレスの不正をコマンド実行前に非常に高い確率で検出することにより、異常なコマンドの実行又はエラーの伝播が予防されるようにコマンドの防護が行われる。
これについては様々な利点がある。第一に、本プロトコルは、データ構成、アクセス方式、及び対応するアドレスに関する知識をさらに別のワイヤードロジック式ステートオートマトンの形で有しているため、アクセスがより迅速になる。これによりデータの構成、アクセス方法、及び/又は対応するアドレスは自動的に準備され、もはやホストから伝送される必要はなく、またインタフェース107、具体的には接続216〜218を介して伝送される必要はない。
さらに、アクセス方式(読出し/書込み)は、前述のとおり既にこの装置の中に組み込まれており、もはや伝送される必要はない。
その代わり、前述の情報(データ構成、アクセス方式、及び/又はアドレス)に関する所定のシーケンスが呼び出され、それによりそれら情報の値が追加で与えられる。
本発明の1つの実施形態としては、このような所定のシーケンスを呼び出すために、プロトコルは以下の構成要素を含むように拡張される。この中で、呼び出されるシーケンスの性質を示す値を導入する。この値は、例えば“アクセスタイプマーカ”(Access Type Marker,ATM)と呼ばれ、以下に記述するアクセスタイプを表す。
本プロトコルは、さらにデータ防護のための情報、例えばCRC又はパリティを使用する。偶発的な伝送エラーが不正なアドレスへのアクセスやアクセス方式(読出し/書込み)の取り違えの原因にならないことを保証するため、この防護情報は少なくともコマンド部分(最初の3バイト等)に対して生成される。データ領域におけるエラーは、必要に応じて再読出しによって検出される。アドレス若しくはアクセス方式又はアクセスタイプマーカに対してはCRC又はパリティは使用できない。CRC又はパリティのデータ防護情報は、さらにシーケンスの最初の部分、即ちコマンド(6ビットのCRC等)に対しても生成される。
以下、このインタフェースのプロトコル、カスタマCPUインタフェース(プロトコル)の特徴を挙げる。
* 半二重8ビット同期駆動
* 9.38MBd(MBaud)、同期、パリティ検査なし
* バスクロック周波数(BCLK)32MHz
* 割込み要求バス
* コマンドワードに対するCRC
* バイト同期チェック
* ホストによる同期の再構成
* 非同期リセット
* 半二重8ビット同期駆動
* 9.38MBd(MBaud)、同期、パリティ検査なし
* バスクロック周波数(BCLK)32MHz
* 割込み要求バス
* コマンドワードに対するCRC
* バイト同期チェック
* ホストによる同期の再構成
* 非同期リセット
前記プロトコルは、例えば、シリアルインタフェース用の直列的な送信データ及び受信データを、32ビットの読出し及び書込みアクセスに変換することができる。この読出し及び書込みアクセスにより、同期トランザクションを介して、カスタマCPUインタフェース(CIF)の内部レジスタ、通信モジュール・コア(コア)のRAM、及び11又は12ビット等のアドレス空間にある通信モジュール・コアのレジスタの読出し、又は書込みが行われる。
図13では、通信接続101と加入者装置102との間のデータ伝送を実現するための、所定の構成可能なコマンドを送信及び受信するASCカスタマCPUインタフェース204の構造が簡略化されて示されている。受信は、受信部800におけるシフトレジスタ802によって、TXDクロック信号804の立ち上がりエッジが検知された際に行われる。8クロック分の周期の経過後、結果がレジスタrx_hold806に引き継がれる。また、レジスタrx_hold806内に新しいメッセージが含まれていることをステートマシン808に知らせるために、rdy信号が設定される。この時点で、バイト同期チェックが機能ブロック818で行われる。
送信部810は、送信部810がアクティブである限り、送信部のシフトレジスタ812のビット「0」をRXDバス814に接続する。TXDクロック信号804が立ち下がりエッジになるたびに、受信データがシフトレジスタ812に引き継がれ、レジスタ812内のデータが1フィールド桁送りされる。rdy信号が8クロック後に設定され、ステートマシン808は、新しいデータをレジスタtx_hold816からシフトレジスタ812にロードすることができる。
機能ブロック820内のアドレスデコーダは、通信モジュール100の内部CIFレジスタ822と外部記憶装置とを区別する。ステートマシン808はまず、コマンドの評価を開始する前に、3バイトのコマンドを読み込む。CRCの対象ビットが、ブロック826において検査される。コマンドにしたがって、書込み、読出しプロセス、アドレスアクセス又は簡単なバッファアクセスが開始される。機能ブロック“end stuff”824において、ASCコマンドを遮断する通信モジュール・コアのアクセス終了が検出され、最終的にFuellbyte(全バイト)!=0x00が返される。(CRC826又はバイト同期818において)異常がある場合、ステートマシン808は再同期状態(resync)828に入り、任意に割込み要求(IRQ)830を開始する。そして、ホストCPU102による再同期828を待つ。
図14の状態図では、可能な伝送が簡略化されて示されている。
ステートマシン808は、リセット後、状態IDLEにある。送信エラーが検出されると(バイト同期エラー又はCRCエラー)、ステートマシン808はPRE_RESYNC状態に設定される。
図中の各状態における簡略化された動作は、以下の通りである。
*IDLE 受信部を起動する。通信モジュール・コアの進行中のアクセスを終了する。全カウンタをクリアする等。
*PRE_RESYNC 受信部及び送信部を停止させる。ローカル信号及び状態をクリア又はリセットする。
*RESYNC_GAP ホストによる再同期の終了を待つ。
*CMD1 コマンドワードの第一のバイトの受信を待つ。
*CMD2 コマンドワードの第二のバイトの受信を待つ。
*CMD3 コマンドワードの最後のバイトの受信を待つ。CRC検査を行う。atm、rw、Buffer_id、addr、word_cnt及び実質的データ(ペイロード)の評価を行う。atm及びrwに応じて、リセット状態が設定されて全バイトが開始され、又は第一のワードが通信モジュール・コアから読出される。
*STUFF ホストへ0x00を送信する。eray_obusyがH(high)である限り送信を繰り返す(備考:E−Rayとは本発明の出願人による通信モジュール100の社内名称である。)
*LOAD 進行中の通信モジュール・コアからの読出しアクセスを終了する。送信部810を作動させる。
*DAV データが使用可能となる。第一のバイトをレジスタtx_hold816へ複写する。アドレスadrrを加算する。
*READ1 第二のバイトをレジスタtx_hold816へ複写する。
*READ2 第三のバイトをレジスタtx_hold816へ複写する。
*READ3 最後のバイトをレジスタtx_hold816へ複写する。
*READ4 word_cnt(ワードカウンタ)がゼロ以上の場合、word_cntを1減らす。
*SBAR 個々のバッファを読出す(Single Buffer Access Read)。アドレス(addr)を0x700に設定する(ヘッダ)。
*WRITE1 進行中の通信モジュール・コアへの書込みアクセスを終了する。第一のバイトをレジスタrx_hold_yyから複写する。
*WRITE2 第二のバイトをレジスタrx_hold_yyから複写する。
*WRITE3 第三のバイトをレジスタrx_hold_yyから複写する。
*WRITE4 最後のバイトをレジスタrx_hold_yyから複写する。ワードを通信モジュール・コアへ書込む。アドレス(addr)を加算する。ゼロ以上の場合、word_cnt(ワードカウンタ)を減らす。IBCM/IBCRアクセスを作動させる。受信部800を起動する。
*SBAW 進行中の通信モジュール・コアへの書込みアクセスを終了する。アドレス(addr)を0x0500(ヘッダ)に設定する。
*IDLE 受信部を起動する。通信モジュール・コアの進行中のアクセスを終了する。全カウンタをクリアする等。
*PRE_RESYNC 受信部及び送信部を停止させる。ローカル信号及び状態をクリア又はリセットする。
*RESYNC_GAP ホストによる再同期の終了を待つ。
*CMD1 コマンドワードの第一のバイトの受信を待つ。
*CMD2 コマンドワードの第二のバイトの受信を待つ。
*CMD3 コマンドワードの最後のバイトの受信を待つ。CRC検査を行う。atm、rw、Buffer_id、addr、word_cnt及び実質的データ(ペイロード)の評価を行う。atm及びrwに応じて、リセット状態が設定されて全バイトが開始され、又は第一のワードが通信モジュール・コアから読出される。
*STUFF ホストへ0x00を送信する。eray_obusyがH(high)である限り送信を繰り返す(備考:E−Rayとは本発明の出願人による通信モジュール100の社内名称である。)
*LOAD 進行中の通信モジュール・コアからの読出しアクセスを終了する。送信部810を作動させる。
*DAV データが使用可能となる。第一のバイトをレジスタtx_hold816へ複写する。アドレスadrrを加算する。
*READ1 第二のバイトをレジスタtx_hold816へ複写する。
*READ2 第三のバイトをレジスタtx_hold816へ複写する。
*READ3 最後のバイトをレジスタtx_hold816へ複写する。
*READ4 word_cnt(ワードカウンタ)がゼロ以上の場合、word_cntを1減らす。
*SBAR 個々のバッファを読出す(Single Buffer Access Read)。アドレス(addr)を0x700に設定する(ヘッダ)。
*WRITE1 進行中の通信モジュール・コアへの書込みアクセスを終了する。第一のバイトをレジスタrx_hold_yyから複写する。
*WRITE2 第二のバイトをレジスタrx_hold_yyから複写する。
*WRITE3 第三のバイトをレジスタrx_hold_yyから複写する。
*WRITE4 最後のバイトをレジスタrx_hold_yyから複写する。ワードを通信モジュール・コアへ書込む。アドレス(addr)を加算する。ゼロ以上の場合、word_cnt(ワードカウンタ)を減らす。IBCM/IBCRアクセスを作動させる。受信部800を起動する。
*SBAW 進行中の通信モジュール・コアへの書込みアクセスを終了する。アドレス(addr)を0x0500(ヘッダ)に設定する。
シングルバッファへのバッファ読出しアクセス(Single Buffer Access Read)が行われた場合、全バイトが「0」の信号がホストに送信されている間に、3つの通信モジュール・コアへのアクセスが行われていなければならない。シングルバッファへのバッファ書込みアクセス(Single Buffer Access Write)の後、ASCインタフェースは、2つのコアアクセスを実行しなければならない。
図15では、通信モジュール・コアへのアクセス(Single Buffer Access Read/Write)のためのステートマシン808が示されている。
コマンドの有効性を検査するため、コマンドワードは6ビットのCRC(巡回冗長検査)で検査される。コマンドワードは24ビット長で、18ビットのコマンドと6ビットのCRCから構成される。
*D[17:0] コマンドワードのデータ
*CRC[5:0] コマンドワードのCRC
*D[17:0] コマンドワードのデータ
*CRC[5:0] コマンドワードのCRC
CRCには、例えば、0で初期化された多項式 x6+x5+x4+x+l が使用される。
並列で実装が行われ、以下の方程式が導かれる。
CRC0 := D17^D15^D14^D13^D9^D8^D5^D4^D3^D1^D0;
CRCl := D17^D16^D13^D1O^D8^D6^D3^D2^D0;
CRC2 := D17^D14^D11^D9^D7^D4^D3^D1;
CRC3 := D15^D12^D10^D8^D5^D4^D2;
CRC4 := D17^D16^D15^D14^D11^D8^D6^D4^D1^D0;
CRC5 := D16^D14^D13^D12^D8^D7^D4^D3^D2^D0;
CRC0 := D17^D15^D14^D13^D9^D8^D5^D4^D3^D1^D0;
CRCl := D17^D16^D13^D1O^D8^D6^D3^D2^D0;
CRC2 := D17^D14^D11^D9^D7^D4^D3^D1;
CRC3 := D15^D12^D10^D8^D5^D4^D2;
CRC4 := D17^D16^D15^D14^D11^D8^D6^D4^D1^D0;
CRC5 := D16^D14^D13^D12^D8^D7^D4^D3^D2^D0;
(アドレスアクセス)
* atm[1:0] アクセスタイプ(アクセスタイプマーカ)“00”。
* rw 読出し(´1´)又は書込みアクセス (´0´)。
* addr[8:0] 開始アドレス。32ビットのワード境界で開始。2キロバイトのアドレス空間。
* word cnt[5:0] 転送されるワード数−1。
* CRC [5:0] コマンドワードについてのCRC。
* atm[1:0] アクセスタイプ(アクセスタイプマーカ)“00”。
* rw 読出し(´1´)又は書込みアクセス (´0´)。
* addr[8:0] 開始アドレス。32ビットのワード境界で開始。2キロバイトのアドレス空間。
* word cnt[5:0] 転送されるワード数−1。
* CRC [5:0] コマンドワードについてのCRC。
rw = ´0´の場合、プロトコルは、アドレス (addr)で始まる32ビットのワードを通信モジュール・コアに書込むため、4*(word_cnt+1)バイトの受信を待つ。rw = ´1´の場合、ASCインタフェースは、最初の32ビットのワードをアドレス(addr)に関連付けられた通信モジュール・コアから読出す。読出しには、バイト間での送信サイクルが遅延した場合よりも通常は長い時間が掛かる。したがって、ホストは、RxDバスの方向の(送信から受信への)切り替えを少なくとも2TxDサイクル遅らせなければならない。後続のバイトは全て、全く通常通りに伝送される。ASCインタフェースは、4*(word_cnt+1)バイトをホストCPUへ送信する。伝送終了後、ASCインタフェースは次のコマンドを待つ。
前述のように、アクセスタイプの例について記載する。
(シングルバッファアクセス(Single Buffer Access))
ホストCPUがASCインタフェースのプロトコルを介して読出したい場合、ASCインタフェースは、対応するバッファを通信モジュール・コアに要求しなければならない。この要求に対する応答には若干時間が掛かり、一定の時点には完了しない。応答の時点は、通信モジュール・コアの実際の負荷率に依存する。データの転送準備がまだ整っていないことをホストに示すため、データを待つ間ASCインタフェースは全バイトゼロ(0x00)のデータを送信する。データの転送準備が整い次第、ASCインタフェースは最終的にFuellbyte(全バイト)!=0x00を送信する。次のバイトは、伝送される第一のデータワードの開始桁のバイトである。
ホストCPUがASCインタフェースのプロトコルを介して読出したい場合、ASCインタフェースは、対応するバッファを通信モジュール・コアに要求しなければならない。この要求に対する応答には若干時間が掛かり、一定の時点には完了しない。応答の時点は、通信モジュール・コアの実際の負荷率に依存する。データの転送準備がまだ整っていないことをホストに示すため、データを待つ間ASCインタフェースは全バイトゼロ(0x00)のデータを送信する。データの転送準備が整い次第、ASCインタフェースは最終的にFuellbyte(全バイト)!=0x00を送信する。次のバイトは、伝送される第一のデータワードの開始桁のバイトである。
(ヘッダのみ)
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“10”。
* rw 読出し(´1´)又は書込みアクセス(´0´)。
* Buffer_ID[5:0] 32ビットのワード境界でアドレスを開始。2キロバイトのアドレス空間。
* stxrh バッファに書込まれる場合、IBCMに転送リクエストホスト (STXRH)を設定。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC。
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“10”。
* rw 読出し(´1´)又は書込みアクセス(´0´)。
* Buffer_ID[5:0] 32ビットのワード境界でアドレスを開始。2キロバイトのアドレス空間。
* stxrh バッファに書込まれる場合、IBCMに転送リクエストホスト (STXRH)を設定。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC。
rw =´0´の場合、ASCインタフェースのプロトコルは、アドレス0x0500(Header Input Buffer)から始まる32ビットのワードを通信モジュール・コアに書込むために、4*4(ヘッダ)バイトの受信を待つ。最後の書込みアクセス終了後、プロトコルによって以下の動作が行われる。
1.atm(LHSH)及びstxrhをアドレス0x0510(IBCM)に書込む。
2.バッファIDをアドレス0x0514(IBCR)に書込む。
1.atm(LHSH)及びstxrhをアドレス0x0510(IBCM)に書込む。
2.バッファIDをアドレス0x0514(IBCR)に書込む。
rw =´1´の場合、ASCインタフェースのプロトコルは、全バイト(0x00)をホストへ送信することを開始する。ASCインタフェースは、この時間を利用して、対応するヘッダを通信モジュール・コアに要求する。全バイトが送信される間、プロトコルによって以下の動作が行われる。
1.atm(ヘッダ)をアドレス0x0710(OBCM)に書込む。
2.バッファID及びREQをアドレス0x0714(OBCR)に書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは対応するヘッダを出力バッファへ複写する。
4.VIEWをアドレス0x0714(OBCR)へ書込む。
出力バッファ内の対応するヘッダを使用することは可能である。全バイトが送信された後、ASCインタフェースのプロトコルは、4*4(ヘッダ)バイトをホストへ送信する。このコマンドが完了した後、ASCインタフェースのプロトコルは次のコマンドを待つ。
1.atm(ヘッダ)をアドレス0x0710(OBCM)に書込む。
2.バッファID及びREQをアドレス0x0714(OBCR)に書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは対応するヘッダを出力バッファへ複写する。
4.VIEWをアドレス0x0714(OBCR)へ書込む。
出力バッファ内の対応するヘッダを使用することは可能である。全バイトが送信された後、ASCインタフェースのプロトコルは、4*4(ヘッダ)バイトをホストへ送信する。このコマンドが完了した後、ASCインタフェースのプロトコルは次のコマンドを待つ。
(実質的なデータのみ)
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“01”。
* rw 読出し(´1´)又は書込みアクセス(´0´)。
* 実質的データ[5:0] 32ビットのワード数+1。
* バッファID[5:0] 32ビットのワード境界でアドレスを開始。2キロバイトのアドレス空間。
* stxrh バッファが書込まれる場合、IBCで転送リクエストホスト (STXRH)を設定する。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC。
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“01”。
* rw 読出し(´1´)又は書込みアクセス(´0´)。
* 実質的データ[5:0] 32ビットのワード数+1。
* バッファID[5:0] 32ビットのワード境界でアドレスを開始。2キロバイトのアドレス空間。
* stxrh バッファが書込まれる場合、IBCで転送リクエストホスト (STXRH)を設定する。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC。
rw =´0´の場合、ASCインタフェースは、アドレス0x0400(Input Buffer)で始まる32ビットワードを通信モジュール・コアに書込むために、4* (実質的データ+1)バイトの受信を待つ。最後の書込みアクセスの後、ASCインタフェースのプロトコルによって以下の動作が行われる。
1.atm(LDSH)及びstxrhをアドレス0x0510(IBCM)に書込む。
2.バッファIDをアドレス0X0514(IBCR)に書込む。
1.atm(LDSH)及びstxrhをアドレス0x0510(IBCM)に書込む。
2.バッファIDをアドレス0X0514(IBCR)に書込む。
rw =´1´の場合、ASCインタフェースは全バイト(0x00)をホストに送信する。ASCインタフェースのプロトコルは、この時間を利用して、対応する実質的データを通信モジュール・コアに要求する。全バイトが送信される間、ASCインタフェースのプロトコルによって以下の動作が行われる。
1.atm(実質的データ)をアドレス0x0710(OBCM)へ書込む。
2.バッファID及びREQをアドレス0x0714(OBCR)へ書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは、対応する実質的データを出力バッファに複写する。
4.VIEWをアドレス0x0714(OBCR)に書込む。
1.atm(実質的データ)をアドレス0x0710(OBCM)へ書込む。
2.バッファID及びREQをアドレス0x0714(OBCR)へ書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは、対応する実質的データを出力バッファに複写する。
4.VIEWをアドレス0x0714(OBCR)に書込む。
出力バッファ内の対応する実質的データは使用可能である。全バイトが送信された後、プロトコルは、4*(実質的データ+1)バイトをホストへ送信する。このコマンドが完了した後、ASCインタフェースのプロトコルは次のコマンドを待つ。
(実質的データ及びヘッダ)
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“11”。
* rw 読出し(´1´)又は書込みアクセス (´0´)。
* 実質的データ[5:0] 32ビットのワード数+1。
* バッファID[5:0] 32ビットのワード境界でのアドレスを開始。2キロバイトのアドレス空間
* stxrh バッファが書込まれる場合、IBCMで転送リクエストホスト(STXRH)を設定する。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC
* atm[l:0] アクセスタイプ(アクセスタイプマーカ)“11”。
* rw 読出し(´1´)又は書込みアクセス (´0´)。
* 実質的データ[5:0] 32ビットのワード数+1。
* バッファID[5:0] 32ビットのワード境界でのアドレスを開始。2キロバイトのアドレス空間
* stxrh バッファが書込まれる場合、IBCMで転送リクエストホスト(STXRH)を設定する。
* rsv 予備として確保。全て´0´。
* CRC[5:0] コマンドワードについてのCRC
rw =´0´の場合、ASCインタフェースのプロトコルは、アドレス0x0400(Input Buffer)で始まる32ビットのワードを通信モジュール・コアに書込むために、4*(実質的データ+1)バイトの受信を待つ。また、アドレス0X0500(ヘッダ)で始まる32ビットのワードを通信モジュール・コアに書きこむために、4*4(ヘッダ)バイトの受信を待つ。最後の書込みアクセスの後、プロトコルによって以下の動作が行われる。
1.atm(LHSH、LDSH)及びstxrhをアドレス0X0510(IBCM)に書込む。
2.バッファIDをアドレス0x0514(IBCR)に書込む。
1.atm(LHSH、LDSH)及びstxrhをアドレス0X0510(IBCM)に書込む。
2.バッファIDをアドレス0x0514(IBCR)に書込む。
rw =´1´の場合、ASCインタフェースのプロトコルは、全バイト(0x00)をホストに送信する。プロトコルは、この時間を利用して対応する実質的データ及びヘッダを通信モジュール・コアに要求する。全バイトが送信される間、プロトコルによって以下の動作が行われる。
1.atm(実質的データ及びヘッダ)をアドレス0x0710(OBCM)に書込む。
2.バッファID及びREQをアドレス0X0714(OBCR)に書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは、対応する実質的データ及びヘッダを出力バッファに複写する。
4.VIEWをアドレス0X0714(OBCR)に書込む。
1.atm(実質的データ及びヘッダ)をアドレス0x0710(OBCM)に書込む。
2.バッファID及びREQをアドレス0X0714(OBCR)に書込む。
3.eray_obusyが再びL(low)になるまで待つ。eray_obusyがH(high)の間、通信モジュール・コアは、対応する実質的データ及びヘッダを出力バッファに複写する。
4.VIEWをアドレス0X0714(OBCR)に書込む。
出力バッファ内の対応する実質的データ及びヘッダは使用可能である。全バイトが送信された後、ASCインタフェースのプロトコルは、4*(実質的データ+1+4(ヘッダ))バイトをホストへ送信する。このコマンドが完了した後、ASCインタフェースは次のコマンドを待つ。
(再同期(Resynchronisation))
再同期は、特に決まったコマンドワードが割り当てられたコマンドではない。ホストCPUは、少なくとも29TxDサイクルの間に渡ってRxDバスをL(low)とし、ASCインタフェースを再同期状態に設定することができる。その際、TxDバスを事実上制御する必要はない。(ホストCPUが送信する)通常の実行において、RxDバスは、各ビットが送信された場合にH(high)となる。
再同期は、特に決まったコマンドワードが割り当てられたコマンドではない。ホストCPUは、少なくとも29TxDサイクルの間に渡ってRxDバスをL(low)とし、ASCインタフェースを再同期状態に設定することができる。その際、TxDバスを事実上制御する必要はない。(ホストCPUが送信する)通常の実行において、RxDバスは、各ビットが送信された場合にH(high)となる。
ASCインタフェースは進行中の動作を停止し、内部信号及び状態をクリアし、ホストCPUから伝送される次のコマンドを待つ。
本発明の好適な実施形態は、以下の図面を参照しながら詳細に説明されている。
通信モジュール、及び通信モジュールと物理層としての通信接続または通信/ホスト加入者装置との連携を示す概略図である。
1つの実施形態として、図1に基づく通信モジュール及び通信モジュールの連携を詳細に示す図である。
図1又は図2に基づく通信モジュールのメッセージ記憶部の構造を示す図である。
加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の1つである。
加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の1つである。
加入者装置から通信モジュールのメッセージ記憶部へデータアクセスする際の構成とプロセスを示す概略図の1つである。
通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の1つである。
通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の1つである。
通信モジュールのメッセージ記憶部から加入者装置へデータアクセスする際の構成とプロセスを示す概略図の1つである。
通信モジュールのメッセージハンドラ及びその内部に含まれる有限ステートマシンを示す概略図である。
通信モジュールの構成要素と、加入者装置と、メッセージハンドラによって制御される対応するデータバスとを再び示す概略図である。
図11のデータバスに関するアクセスの分配を示す図である。
通信モジュールと加入者装置との間の加入者インタフェースの実装を簡略化して示す図である。
本発明の1つの実施形態に基づくステートマシンを示すフローチャートである。
図14に基づくステートマシンの具体的なバッファアクセスの状態を示す図である。
100 FlexRay通信モジュール
101 FlexRay通信接続
102 ホストCPU(加入者装置プロセッサ)
103 第三のコンポーネント
104 第二のコンポーネント
105 第一のコンポーネント
106〜109 接続
101 FlexRay通信接続
102 ホストCPU(加入者装置プロセッサ)
103 第三のコンポーネント
104 第二のコンポーネント
105 第一のコンポーネント
106〜109 接続
Claims (14)
- FlexRay通信接続(101)と連携するためのFlexRay通信モジュール(100)であって、
メッセージが前記FlexRay通信接続(101)を介して伝送されることと、
加入者装置インタフェース(107)を介して加入者装置(102)と接続されることと、
前記加入者装置(102)と前記FlexRay通信接続(101)との間で伝送された又は伝送されるメッセージを保存するコンポーネント(105)及びステートマシンを有することと、
前記ステートマシンがメッセージ伝送を制御するために前記コンポーネント(105)によるメッセージ保存と、前記コンポーネント(105)からのメッセージ呼出しと、メッセージ伝送とに関する情報に関連付けられたシーケンスを構成し及び/又は呼び出すことと、
を備えるFlexRay通信モジュール(100)。 - 前記ステートマシンが、ハードウェアに組み込まれていることを特徴とする、請求項1に記載のFlexRay通信モジュール(100)。
- 前記シーケンスが、ハードウェアに組み込まれていることを特徴とする、請求項1又は請求項2に記載のFlexRay通信モジュール(100)。
- 前記ステートマシンが、前記加入者装置インタフェース(107)を介して前記加入者装置(102)によって自由にプログラムされることを特徴とする、請求項1に記載のFlexRay通信モジュール(100)。
- 前記情報が、アクセスタイプ、及び/又はアクセス方式、及び/又はアクセスアドレス、及び/又はデータ値、及び/又はデータに関する制御情報、及び/又は少なくとも1つのデータ防護のための情報を含んでいることを特徴とする、請求項1〜4のいずれかに記載のFlexRay通信モジュール(100)。
- FlexRay通信接続(101)と連携するためのFlexRay通信制御装置であって、
メッセージが前記FlexRay通信接続(101)を介して伝送されることと、
加入者装置インタフェース(107)を介して加入者装置(102)と接続されることと、
請求項1〜5のいずれかに記載のFlexRay通信モジュール(100)を有していることと、
を備えるFlexRay通信制御装置。 - FlexRay加入者装置(102)とFlexRay通信接続との間でメッセージを連携する方法であって、
FlexRay通信モジュール(100)を前記FlexRay通信接続(101)と接続させ、
前記加入者装置(102)を加入者装置インタフェース(107)を介して前記通信モジュール(100)に接続させ、
前記加入者装置(102)と前記FlexRay通信接続(101)との間で伝送された又は伝送されるメッセージを前記FlexRay通信モジュール(100)のコンポーネント(105)に一時的に保存し、
前記通信モジュール(100)のステートマシンにより前記コンポーネント(105)でのメッセージ保存と、前記コンポーネント(105)からのメッセージ呼出しと、メッセージ伝送とに関する情報に関連付けられたシーケンスを構成し及び/又は呼び出してメッセージ伝送を制御する、
方法。 - さらに前記FlexRay通信モジュール(100)において、前記加入者装置(102)と前記FlexRay通信接続(101)との間のデータ伝送の構成、開始及び制御のための基本コマンドを定義し、複数の基本コマンドを合わせた機能を各シーケンスが演じる、請求項7に記載の方法。
- さらに特に前記FlexRay通信モジュール(100)の詳細に関する予決定されたデータ伝送情報に基づき、前記シーケンスの機能を維持した状態のまま、呼出しの要求回数、前記加入者装置(102)に要求されるリソース(記憶装置及び計算能力)、及び/又は要求される処理時間を低減するように前記シーケンスのコマンドを最適化する、請求項8に記載の方法。
- 前記シーケンスのコマンドの最適化は、実質的データの伝送又はシーケンス実行の前に行われることを特徴とする、請求項9に記載の方法。
- 前記予決定された情報は、使用される伝送プロトコル又はさらに別の情報に基づいて実質的データの伝送又はシーケンス実行の前に理論的に求められることを特徴とする、請求項9又は請求項10のいずれかに記載の方法。
- 前記予決定された情報は、実質的データ伝送又はシーケンス実行の前に、対応するデータ伝送を実際に分析して求められることを特徴とする、請求項9又は請求項10のいずれかに記載の方法。
- 前記FlexRay通信モジュールにおける前記シーケンスが、実質的データ伝送又はシーケンス実行の前に、ハードウェアに組み込まれ又はプログラムされることを特徴とする、請求項7〜12のいずれかに記載の方法。
- 前記基本コマンドがそれぞれ、
アクセス方式(ブロック読出し/書込み、構成データ及び/又は実質的データ)用のフラグ(1又は複数ビット)と、
アクセス位置を示すアドレス(複数ビット)と、
伝送されるデータワード数のためのカウンタ、又はデータが前記FlexRay通信接続(101)を介したアクセスの後で送信されるべきかを設定するフラグと、
任意に巡回冗長検査(CRC)又はチェックサムと、
を有することを特徴とする、請求項7〜13のいずれかに記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102005034744 | 2005-07-21 | ||
DE102005048584A DE102005048584A1 (de) | 2005-07-21 | 2005-10-06 | FlexRay-Kommunikationsbaustein, FlexRay-Kommunikationscontroller und Verfahren zur Botschaftsübertragung zwischen einer FlexRay-Kommunikationsverbindung und einem FlexRay-Teilnehmer |
PCT/EP2006/064471 WO2007010024A1 (de) | 2005-07-21 | 2006-07-20 | Flexray-kommunikationsbaustein, flexray-kommunikationscontroller und verfahren zur botschaftsübertragung zwischen einer flexray-kommunikationsverbindung und einem flexray-teilnehmer |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009502072A true JP2009502072A (ja) | 2009-01-22 |
Family
ID=37255102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008521976A Pending JP2009502072A (ja) | 2005-07-21 | 2006-07-20 | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20090175290A1 (ja) |
EP (1) | EP1911213A1 (ja) |
JP (1) | JP2009502072A (ja) |
DE (1) | DE102005048584A1 (ja) |
RU (1) | RU2008106054A (ja) |
WO (1) | WO2007010024A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602004027024D1 (de) * | 2004-08-05 | 2010-06-17 | Bosch Gmbh Robert | Kommunikationskontrolleur für FlexRay-Netze |
DE102005048581B4 (de) | 2005-10-06 | 2022-06-09 | Robert Bosch Gmbh | Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle |
DE102008001739B4 (de) * | 2008-05-14 | 2016-08-18 | Robert Bosch Gmbh | Verfahren zum Steuern eines Zugriffs auf Bereiche eines Speichers aus mehreren Prozessen heraus und Kommunikations-Modul mit einem Nachrichten-Speicher zur Realisierung des Verfahrens |
US8964775B2 (en) | 2011-09-21 | 2015-02-24 | Nxp B.V. | System and method for encoding a slot table for a communications controller |
US8798090B2 (en) | 2011-09-21 | 2014-08-05 | Nxp B.V. | System and method for creating a slot table entry address for a communications device |
EP2665227B1 (de) * | 2012-05-18 | 2014-09-24 | Vector Informatik GmbH | Flexray-Gateway und Verfahren zum Betreiben eines Flexray-Gateways |
DE102012023395A1 (de) | 2012-11-29 | 2014-06-05 | Eads Deutschland Gmbh | Schnittstellenvorrichtung und Verfahren zum Austauschen von Nutzdaten |
US10284247B2 (en) | 2013-06-10 | 2019-05-07 | Nxp B.V. | System and method for bit processing in a central network component |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06214799A (ja) * | 1992-05-06 | 1994-08-05 | Internatl Business Mach Corp <Ibm> | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
US5680585A (en) * | 1995-03-31 | 1997-10-21 | Bay Networks, Inc. | Method and apparatus for defining data packet formats |
US6289498B1 (en) * | 1998-02-20 | 2001-09-11 | Lsi Logic Corporation | VDHL/Verilog expertise and gate synthesis automation system |
US20020038453A1 (en) * | 2000-08-09 | 2002-03-28 | Andrew Riddle | Method and system for software optimization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE10329179A1 (de) * | 2003-06-30 | 2005-03-17 | Volkswagen Ag | Anordnung und Verfahren zur Verwaltung eines Speichers |
DE102004038211A1 (de) * | 2004-08-05 | 2006-03-16 | Robert Bosch Gmbh | Botschaftsverwalter und Verfahren zur Steuerung des Zugriffs auf Daten eines Botschaftsspeichers eines Kommunikationsbausteins |
-
2005
- 2005-10-06 DE DE102005048584A patent/DE102005048584A1/de not_active Withdrawn
-
2006
- 2006-07-20 JP JP2008521976A patent/JP2009502072A/ja active Pending
- 2006-07-20 WO PCT/EP2006/064471 patent/WO2007010024A1/de active Application Filing
- 2006-07-20 RU RU2008106054/09A patent/RU2008106054A/ru not_active Application Discontinuation
- 2006-07-20 EP EP06777867A patent/EP1911213A1/de not_active Withdrawn
- 2006-07-20 US US11/989,281 patent/US20090175290A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06214799A (ja) * | 1992-05-06 | 1994-08-05 | Internatl Business Mach Corp <Ibm> | コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置 |
US5680585A (en) * | 1995-03-31 | 1997-10-21 | Bay Networks, Inc. | Method and apparatus for defining data packet formats |
US6289498B1 (en) * | 1998-02-20 | 2001-09-11 | Lsi Logic Corporation | VDHL/Verilog expertise and gate synthesis automation system |
US20020038453A1 (en) * | 2000-08-09 | 2002-03-28 | Andrew Riddle | Method and system for software optimization |
Also Published As
Publication number | Publication date |
---|---|
DE102005048584A1 (de) | 2007-01-25 |
WO2007010024A1 (de) | 2007-01-25 |
EP1911213A1 (de) | 2008-04-16 |
US20090175290A1 (en) | 2009-07-09 |
RU2008106054A (ru) | 2009-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2377729C2 (ru) | Способ и устройство для обращения к памяти сообщений коммуникационного модуля | |
KR101028898B1 (ko) | 플렉스레이 통신 장치 | |
RU2390053C2 (ru) | Диспетчер сообщений и способ управления доступом к данным в памяти сообщений коммуникационного компонента | |
US7801131B2 (en) | Method for transmitting data in messages via a communication link of a communication system, as well as a communication module, user of a communication system, and communication system for implementing this method | |
JP4903801B2 (ja) | FlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェース、およびFlexRay通信モジュールとFlexRay加入者装置とを繋ぐ加入者インタフェースを経由するメッセージの伝送方法 | |
US5619651A (en) | I/O data unit symmetry in a media access control/host system interface unit | |
JP2009511318A (ja) | マイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェース、FlexRay加入者装置、およびマイクロコントローラとFlexRay通信モジュールとを繋ぐ加入者インタフェースを経由するメッセージの伝送方法 | |
JP2009502072A (ja) | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 | |
JPH07282025A (ja) | クロック回路 | |
WO2004006540A2 (en) | System and method for packet transmission from fragmented buffer | |
US20090300254A1 (en) | Method for Connecting a Flexray user having a Microcontroller to a Flexray Communications line Via a Flexray Communications Control Device, and Flexray Communications Control Device, Flexray User, and Flexray Communications System for Realizing this Method | |
RU2398357C2 (ru) | Способ сохранения сообщений в памяти сообщений и соответствующая память сообщений | |
US9817784B2 (en) | Multi-port transmitter device for transmitting at least partly redundant data, an associated control system, an associated method and an associated computer program product | |
GB2377138A (en) | Ring Bus Structure For System On Chip Integrated Circuits | |
JP4410978B2 (ja) | データ転送装置及びその動作制御方法 | |
JP2004054419A (ja) | ノード間トランザクション処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20101203 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101214 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110705 |