(57)【要約】【課題】  タイムスタンプ情報の参照を遅延なく行うことができ、フレームデータの処理遅延や、装置内での異常を素早く判定することができるゲートウェイ装置及びデータ管理方法を提供することを目的とする。【解決手段】  複数の通信チャネル間でフレームデータの転送制御を行う車載ゲートウェイ装置１であって、受信したフレームデータにタイムスタンプ情報を付加するタイムスタンプ部６１と、タイムスタンプ情報を参照して、フレームデータの処理遅延、又は装置の異常を判定し、フレームデータの送信時に、フレームデータに付加されたタイムスタンプ情報を削除するデータ廃棄部３００と、を有する構成としている。【選択図】        図１５
2008113096.tif 000002
【特許請求の範囲】
【請求項１】
通信チャネル間でフレームデータの転送制御を行うゲートウェイ装置であって、
受信したフレームデータにタイムスタンプ情報を付加するタイムスタンプ付加手段と、
前記タイムスタンプ情報を参照して、前記フレームデータの処理遅延、又は装置の異常を判定する判定手段と、
ルーティング後のフレームデータの出力時に、該フレームデータに付加されたタイムスタンプ情報を削除する削除手段と、
を有することを特徴とするゲートウェイ装置。
【請求項２】
前記タイムスタンプ付加手段は、複数の通信チャネルに共通で使用されることを特徴とする請求項１記載のゲートウェイ装置。
【請求項３】
前記判定手段によって処理遅延が発生していると判定されたフレームデータを廃棄するデータ廃棄手段を有することを特徴とする請求項１又は２記載のゲートウェイ装置。
【請求項４】
前記タイムスタンプ情報付きのフレームデータを、前記タイムスタンプ情報と、前記フレームデータとに分離する分離手段と、
前記分離手段によって分離されたフレームデータを蓄積する第１蓄積手段と、
前記分離手段によって分離されたタイムスタンプ情報を蓄積する第２蓄積手段とを有し、前記出力時には、前記第１蓄積手段に蓄積されたフレームデータを送信することを特徴とする請求項１から３のいずれか一項記載のゲートウェイ装置。
【請求項５】
前記タイムスタンプ情報として付加する時刻情報の分解能を変更する分解能変更手段を有することを特徴とする請求項１から４のいずれか一項記載のゲートウェイ装置。
【請求項６】
入力したフレームデータを、プログラム制御された制御部で処理するフレームデータと、ハードウェアで処理するフレームデータとに振り分ける振り分け部と、
振り分けられたフレームデータを転送先ごとに振り分けるプログラム制御された前記制御部と、
前記タイムスタンプ情報付きのフレームデータを転送先ごとに振り分ける検索エンジン部と、
を有することを特徴とする請求項１から５のいずれか一項記載のゲートウェイ装置。
【請求項７】
前記複数の通信チャネルから転送されたフレームデータを前記検索エンジン部に入力するタイミングを調整するセレクタ部を有することを特徴とする請求項６記載のゲートウェイ装置。
【請求項８】
受信したフレームデータにタイムスタンプ情報を付加するステップと、
前記タイムスタンプ情報を参照して、前記フレームデータの処理遅延、又は装置の異常を判定するステップと、
ルーティング後のフレームデータの出力時に、該フレームデータに付加されたタイムスタンプ情報を削除するステップと、
を有することを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載され、複数の通信ネットワーク間でのデータの中継を行うゲートウェイ装置及びそのゲートウェイ装置でのデータ管理方法に関する。
【背景技術】
【０００２】
近年、車両には図３３に示すようにエンジンＥＣＵ、ドア制御ＥＣＵ、エアバックＥＣＵ、オーディオＥＣＵ、ナビゲーションＥＣＵなど複数のＥＣＵが搭載されるようになってきている。これらのＥＣＵを車両に搭載された異なる通信方式及び異なる通信速度を有する複数のＬＡＮ間で通信させるには、その橋渡しをするゲートウェイ装置が必要となる。
【０００３】
ゲートウェイ装置は、ソフトウェア制御によって複数の異なるネットワーク間で授受されるデータの中継、通信プロトコルの変換、パケットフィルタリングなどのゲートウェイ機能を実現している。これにより、異なるネットワークに接続されたノード間で通信を行うことができる。
【０００４】
しかしながら、ＥＣＵ間で送受信される情報は増加の傾向にあり、そのため、１メッセージあたりの処理時間が増加し、ゲートウェイ装置内部での滞留時間がかかってしまうという問題が生じている。
【０００５】
特許文献１には、送信バッファにパケットと共にタイムスタンプを格納し、受信してから送信までの時間が長い場合にパケットの廃棄を行う技術が開示されている。
【０００６】
【特許文献１】特開平１０−１３４７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術は、タイムスタンプを送信バッファに一括して格納しておき、必要な時に送信バッファのタイムスタンプ情報を参照して、パケットを廃棄する。
複数のチャネルを備え、チャネル間でのデータ転送を実現するゲートウェイ装置においては、チャネルごとに設けられた処理部が一つの送信バッファを参照することになり、処理に遅れを生じてしまう。また、タイムスタンプを参照するときに、送信バッファのアドレス情報を各チャネルの処理装置で受け渡しする必要があり、処理が複雑になる。
【０００８】
本発明は上記事情に鑑みてなされたものであり、タイムスタンプ情報の参照を遅延なく行うことができ、フレームデータの処理遅延や、装置内での異常を素早く判定することができるゲートウェイ装置及びデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するために本発明のゲートウェイ装置は、通信チャネル間でフレームデータの転送制御を行うゲートウェイ装置であって、受信したフレームデータにタイムスタンプ情報を付加するタイムスタンプ付加手段と、前記タイムスタンプ情報を参照して、前記フレームデータの処理遅延、又は装置の異常を判定する判定手段と、ルーティング後のフレームデータの出力時に、該フレームデータに付加されたタイムスタンプ情報を削除する削除手段と、を有する構成としている。
このように本発明は、受信したフレームデータにタイムスタンプ情報を付加することで、フレームデータの処理遅延や、装置内での異常を判定することができる。
また、フレームデータ自体にタイムスタンプ情報を付加しているので、タイムスタンプ情報の参照を遅延なく行うことができ、フレームデータの処理遅延や、装置内での異常を素早く判定することができる。
また、フレームデータの送信時に、タイムスタンプ情報を削除しているので、送信先に不要な情報を付けたまま送信することがなく、送信先での処理時間を短縮することができる。
【００１０】
請求項２記載の発明は、請求項１記載の発明において、前記タイムスタンプ付加手段は、複数の通信チャネルに共通で使用されるとよい。
複数の通信チャネルで共通のタイムスタンプを使用することで、通信チャネル間でタイムスタンプの同期を取る手間を省くことができる。また、複数の通信チャネルごとにタイムスタンプ付加手段を設ける必要がないので、装置の構成を簡略化することができる。
【００１１】
請求項３記載の発明は、請求項１又は２記載の発明において、前記判定手段によって処理遅延が発生していると判定されたフレームデータを廃棄するデータ廃棄手段を有するとよい。
従って、処理遅延が発生し不要となったデータを廃棄することができる。
【００１２】
請求項４記載の発明は、請求項１から３のいずれか一項記載の発明において、前記タイムスタンプ情報付きのフレームデータを、前記タイムスタンプ情報と、前記フレームデータとに分離する分離手段と、前記分離手段によって分離されたフレームデータを蓄積する第１蓄積手段と、前記分離手段によって分離されたタイムスタンプ情報を蓄積する第２蓄積手段とを有し、前記出力時には、前記第１蓄積手段に蓄積されたフレームデータを送信するとよい。
タイムスタンプ情報と、フレームデータを別々の蓄積部に蓄積しておくことで、送信時にフレームデータだけを送信先に送信することができる。
【００１３】
請求項５記載の発明は、請求項１から４のいずれか一項に記載の発明において、前記タイムスタンプ情報として付加する時刻情報の分解能を変更する分解能変更手段を有するとよい。
時刻情報の分解能が変更可能であるので、フレームデータの種別に応じた処理遅延時間の管理が可能となる。
【００１４】
請求項６記載の発明は、請求項１から５のいずれか一項記載の発明において、入力したフレームデータを、プログラム制御された制御部で処理するフレームデータと、ハードウェアで処理するフレームデータとに振り分ける振り分け部と、振り分けられたフレームデータを転送先ごとに振り分けるプログラム制御された前記制御部と、前記タイムスタンプ情報付きのフレームデータを転送先ごとに振り分ける検索エンジン部と、を有することを特徴としている。
従って、フレームデータの転送先への振り分けを、プログラム制御と、ハードウェアとで実行することができる。
【００１５】
請求項７記載の発明は、請求項６記載の発明において、複数の通信チャネルから転送されたフレームデータを前記検索エンジン部に入力するタイミングを調整するセレクタ部を有しているとよい。
従って、複数の通信チャネルで検索エンジン部を共有することができる。
【００１６】
請求項８記載の発明は、受信したフレームデータにタイムスタンプ情報を付加するステップと、前記タイムスタンプ情報を参照して、前記フレームデータの処理遅延、又は装置の異常を判定するステップと、前記フレームデータの送信時に、該フレームデータに付加されたタイムスタンプ情報を削除するステップと、を有することを特徴としている。
このように本発明は、受信したフレームデータにタイムスタンプ情報を付加することで、フレームデータの処理遅延や、装置内での異常を判定することができる。
また、フレームデータに直接タイムスタンプ情報を付加しているので、タイムスタンプ情報の参照のために複雑な処理を行う必要がない。
また、フレームデータの送信時に、タイムスタンプ情報を削除しているので、送信先に不要な情報を付けたまま送信することがなく、送信先での処理時間を短縮することができる。
【発明の効果】
【００１７】
本発明によれば、タイムスタンプ情報の参照を遅延なく行うことができ、フレームデータの処理遅延や、装置内での異常を素早く判定することができる。
【発明を実施するための最良の形態】
【００１８】
添付図面を参照しながら本発明の最良の実施例を説明する。
【実施例１】
【００１９】
まず、図１を参照しながら本実施例の構成を説明する。図１には本発明のゲートウェイ装置をＣＡＮ（Controller Area Network）のプロトコルによって通信を行う車載ゲートウェイ装置に適用した実施例の構成が示されている。車載ゲートウェイ装置１は、ＣＰＵバス１６に、ＣＰＵ（本発明の制御部に該当）２、ＦＬＡＳＨ  ＲＯＭ(Read Only Memory)３、ＵＡＲＴ４（Universal Asynchronous Receiver Transmitter）、割込み制御部６、ＤＭＡコントローラ７、ＣＡＮインタフェース部８、複数のＣＡＮ（本実施例ではＣＡＮ＿０，ＣＡＮ＿１，ＣＡＮ＿２，ＣＡＮ＿３の４つのＣＡＮを示すが、ＣＡＮの数はこれに限定されるものではない）９、バスインタフェース部１０などが接続されている。バスインタフェース部１０には、検索エンジン部１１、マップメモリ１３、送信バッファ１４、受信制御部１５が接続されている。検索エンジン部１１、送信バッファ１４、受信制御部１５は、バスインタフェース部１０を介してＣＰＵバス１６にデータを入出力するデータ線で接続されている。また検索エンジン部１１と送信バッファ１４、検索エンジン部１１と受信制御部１５もデータ線で接続されている。また、受信制御部１５は、ＣＡＮインタフェース部８とデータ線で接続され、ＣＡＮインタフェース部８から直接データを入力できるようになっている。また、図１にはデータ線以外に制御信号を送受信する制御線も示されている。ＣＰＵ２は、この制御線に上記各機能部を制御する信号を出力する。またＤＭＡコントローラ７と検索エンジン部１１との間にも制御線が配線され、ＤＭＡコントローラ７は、ＣＰＵ２の制御によらず検索エンジン部１１からデータを読み出して転送先に転送する。なお、検索エンジン部１１と、マップメモリ１３と、送信バッファ１４と、受信制御部１５と、バスインタフェース部１０と、ＣＡＮインタフェース部８とを備える構成をゲートウェイハードマクロ部１７と呼ぶ。
【００２０】
ゲートウェイハードマクロ部１７には、主として以下に示す機能が備えられている。第１に、フレームデータの受信時にＣＡＮ９が発生する割込み信号をトリガにして、ＣＡＮ９のメッセージボックスからフレームデータを取り出す。第２に、受信したフレームデータのルーティングを行う。第３に、ルーティングエラーの検出やその他のエラーを検出する。この他に、ルーティング後のデータの送信機能などを設けても良い。
【００２１】
ＦＬＡＳＨ  ＲＯＭ３には、ＣＰＵ２がデータ伝送処理を含む各種処理の実行時に使用するデータ又はプログラムなどが記憶されている。ＣＰＵ２は、図１に示す車載ゲートウェイ装置１の全体を制御すると共に、検索エンジン部１１でルーティングされたフレームデータの送信処理を、プログラム制御によって行う。さらに、ＣＰＵ２は、ＦＬＡＳＨ  ＲＯＭ３に格納されたプログラムに従って、受信したフレームデータの転送先を振り分けるルーティングを行う。
【００２２】
ＵＡＲＴ４は、外部装置と接続し、外部装置から送られるパラレル信号をシリアル信号に変換したり、逆にシリアルデバイスから送られるシリアル信号をパラレル信号に変換したりする。
【００２３】
割込み制御部６は、検索エンジン部１１から出力される割込み信号のＣＰＵ２への出力を制御する。検索エンジン部１１は、送信ＦＩＦＯ（第１蓄積部）２１に予め設定された設定数のフレームが蓄積されたとき、送信ＦＩＦＯ２１がオーバーフローしたとき、検索エンジン部１１にルーティングエラーが生じたときに割込み信号をＣＰＵ２に出力する。ＤＭＡコントローラ７は、検索エンジン部１１によるルーティングによって送信ＦＩＦＯ２１に格納されたフレームデータをＣＰＵ２を介さずにＤＭＡ転送する。
【００２４】
複数のＣＡＮ９（ＣＡＮ＿０，ＣＡＮ＿１，ＣＡＮ＿２，ＣＡＮ＿３）は、各通信チャネルごとに設けられ、ＣＡＮバス（不図示）から受信したフレームデータを蓄積し、また検索エンジン部１１やＣＰＵ２でルーティング後のフレームデータを蓄積する。ルーティング後のフレームデータは、メッセージボックスから読み出され、ＣＡＮバスに出力される。またＣＡＮ９は、通信チャネルからフレームデータを受信すると、割り込み信号を検索エンジン部１１に出力する。
【００２５】
検索エンジン部１１は、ＣＡＮ９から出力された割り込み信号をトリガとして、ＣＡＮ９のメッセージボックスからフレームデータを取り出し、ＣＡＮインタフェース部８を介して受信制御部１５で一旦格納する。その後、所定のタイミングクロックで受信制御部１５からフレームデータを取り出し、ルーティング処理、データの中継先の情報検索などの処理を行う。また、ルーティング処理中に生じたエラーの検出機能も備えている。なお、マップメモリ１３に格納されるルーティングマップの詳細については後述する。
【００２６】
送信バッファ１４には、検索エンジン部１１でルーティングされたフレームデータが格納される。受信制御部１５には、ＣＡＮ９のメッセージボックスから読み出されたフレームデータが格納される。
【００２７】
次に図２を参照しながらゲートウェイハードマクロ部１７の構成について説明する。本実施例の車載ゲートウェイ装置１は、フレームデータのルーティングを、ＣＰＵ２によるソフトウェア制御５０と、ハードウェアとして設けたゲートウェイハードマクロ部１７とで並行して行う。
ゲートウェイハードマクロ部１７は、図２に示すように通信チャネルごとに設けられた振り分け部５１及びレジスタ５６と、セレクタ部５２と、タイムスタンプ部６１と、検索エンジン部１１と、マップメモリ１３と、送信ＦＩＦＯ２１とを有している。
【００２８】
振り分け部５１は、図２に示すように各通信チャネルごとに設けられ、ＣＡＮ９のメッセージボックス９からフレームデータを取り出して、フレームデータの出力先の振り分け処理を行う。振り分け部５１は、フレームデータに設定された宛先情報を参照して、フレームデータの転送先を、ソフトウェア制御部５０、セレクタ部５２、ソフトウェア制御部５０とセレクタ５２の両方のいずれかに設定する。なお、ソフトウェア制御部５０は、ＣＰＵ２がプログラム制御によって動作することで実現する機能部である。
このようにチャネル単位や選択したフレーム単位でデータの出力先を振り分けることで、ソフトウェア制御部５０による処理と、検索エンジン部１１によるハード処理を並行して行うことができる。
また、優先的にソフトウェア制御部５０に送るべきフレームデータを検索エンジン部１１を介さずに転送することができるので、ソフトウェア制御部５０での処理開始時間を早めることができる。
【００２９】
レジスタ５６には、ソフトウェア制御部５０によって設定された設定情報が格納されている。設定情報には、少なくとも車載ゲートウェイ装置の動作設定情報と、振り分けるための設定情報とが含まれる。振り分け部５１はこのレジスタ５６に格納された設定情報に従ってフレームデータの振り分け動作を行う。この設定情報を参照して動作を行うのは振り分け部５１だけであって、後段に設けられたセレクタ部５２、検索エンジン部１１、送信ＦＩＦＯ２１は、設定情報により動作を停止したりすることがない。このため、ゲートウェイの設定変更、通信チャネルの変更等が動的に行われても、ゲートウェイハードマクロ部１７内でフレームデータが消失するなどの問題を生じない。
【００３０】
検索エンジン部１１は、複数の通信チャネルで１つ設けられており、送信ＦＩＦＯ部２１は通信チャネルごとに設けられている。このような構成を実現するため、セレクタ部５２を検索エンジン部１１の前段に設けている。セレクタ部５２は、複数の通信チャネルからのフレームデータを入力し、検索エンジン部１１に出力するフレームデータを選択する。また。セレクタ部５２は、選択したフレームデータを検索エンジン部１１に出力するタイミングを制御している。複数の通信チャネルから同時にフレームデータが出力されても、セレクタ部５２が優先順位や到着順によってフレームデータを選択し、検索エンジン部１１に出力するタイミングを制御する。これにより、検索エンジン部１１を複数の通信チャネルで共有することが可能となる。
【００３１】
図３を参照しながら振り分け部５１の詳細な構成を説明する。振り分け部５１は、第１宛先振り分け部５９と、第２宛先振り分け部６０とを有している。
フレームデータは、ＣＡＮ９のメッセージ振り分け部５８によって、データのＩＤに応じて振り分けられ、メッセージボックス（０、１、２、３・・・・）に登録される。第１宛先振り分け部５９は、メッセージ振り分け部５８で振り分けられた場所（メッセージボックス０、１、２、３・・・・）に対しフレームデータの宛先をソフトウェア制御部５０や検索エンジン部１１に設定したり、ソフトウェア制御部５０と検索エンジン部１１の両方に設定する同報送信の設定を行う。また、ここで廃棄されるフレームデータもある。第２宛先振り分け部６０は、検索エンジン部１１の処理状況に応じて、検索エンジン部１１宛てであったフレームデータを強制的にソフトウェア制御部５０に変更したり、フレームデータを廃棄する設定を行う。
【００３２】
図４を参照しながらタイムスタンプ部６１の構成について説明する。
タイムスタンプ部６１は、セレクタ部５２に入力されるフレームデータにタイムスタンプを付加する。タイムスタンプ部６１は、図４に示すように分周回路６１１と、フリーランカウンタ６１２とを備えている。
分周回路６１１には、ＣＰＵ２から出力される機能イネーブル信号および分周比設定信号と、クロック信号とが入力される。分周回路６１１は、機能イネーブル信号がイネーブルになると、分周比設定信号の設定に従ってクロック信号を分周したものを基準に作るカウンタイネーブル信号をフリーランカウンタ６１２に出力する。
フリーランカウンタ６１２は、クロック信号と、分周回路６１１から出力されるカウンタイネーブル信号と、ＣＰＵ２からの機能イネーブル信号とを入力する。フリーランカウンタ６１２は、機能イネーブル信号がイネーブルになると、分周回路６１１から出力されるカウンタイネーブル信号をカウントして、タイムスタンプを出力する。
例えば、クロックが１６ＭＨｚで、フリーランカウンタが１６ビットの場合、分周設定が１／１２８では、計測できる最小時間は８［μｓ］、計測できる最大時間は、０．５２４［ｓ］となる。また、分周設定が１／１６３８４では、計測できる最小時間は１．０２４［ｍｓ］、計測できる最大時間は、６７．１［ｓ］となる。
【００３３】
図５に示すフローチャートを参照しながら、ＣＰＵ２によるタイムスタンプ部６１の初期設定手順について説明する。
ＣＰＵ２は、初期動作時にタイムスタンプ部６１に対し、計測すべき範囲と分解能に応じた分周比を設定する（ステップＳ１）、その後、機能イネーブル信号をイネーブルに設定して、タイムスタンプ部６１を動作させる（ステップＳ２）。
【００３４】
次に、図６を参照しながらセレクタ部５２の構成について説明する。セレクタ部５２は、通信チャネルごとに設けられたレジスタ５２１、５２２、５２３、５２４と、選択論理部５２５と、セレクタ５２６とを有している。
レジスタ５２１、５２２、５２３、５２４には各チャネルからのフレームデータと、各レジスタ５２１、５２２、５２３、５２４にフレームデータが入力されるタイミングを通知するタイミング通知信号と、タイムスタンプ部で発行されたタイムスタンプとが入力される。タイムスタンプ部６１で発行されたタイムスタンプは、レジスタ５２１、５２２、５２３、５２４においてフレームデータに付加される。
【００３５】
各レジスタ５２１、５２２、５２３、５２４から選択論理部５２５には、レジスタ５２１、５２２、５２３、５２４に有効なフレームデータが保持されているか否かを示すステータス信号が出力される。また、各レジスタ５２１、５２２、５２３、５２４は、タイムスタンプが付加されたフレームデータを所定タイミングでセレクタ５２６に出力する。選択論理部５２５は、各レジスタ５２１、５２２、５２３、５２４からのステータス信号をもとに、出力するフレームデータを選択する選択指示信号をセレクタ５２６に出力する。セレクタ５２６は、選択論理部５２５からの選択指示信号に従って、フレームデータを選択した後に後段の検索エンジン部１１に出力する。
【００３６】
次に、図７を参照しながら検索エンジン部１１の詳細な構成について説明する。検索エンジン部１１は、状態制御部７０、エントリ識別部７１、番号加算部７２、番号減算部７３、下限用セレクタ７４、上限用セレクタ７５、加算部７６、除算・保持部７７、メモリに構成されたテーブル７８、一致比較部７９、エントリチェック部８０を備えている。
【００３７】
状態制御部７０は、セレクタ部５２のフレーム出力信号を入力して、図７に示す各機能部を制御する。また、エントリ識別部７１から入力される検索回数値に従って、テーブル７８の検索を設定された回数だけ行うように制御する。
【００３８】
エントリ識別部７１の構成を図８に示す。エントリ識別部７１は、第１変換テーブル９２と、第２変換テーブル９３を備えている。なお、第１変換テーブル９２に入力される有効エントリ数設定値とは、宛先検索時に参照するルーティングマップに登録を行ったエントリ数を示している。
【００３９】
第１変換テーブル９２は、有効エントリ数設定値からメモリ７８の検索回数を設定した検索回数値を算出する。例えば、チャネルのエントリ数が２５６エントリ（ノード）であった場合、２の８乗であるので検索回数は＋１して９回となる。
【００４０】
第２変換テーブル９３は、有効エントリ数設定値を入力して、上限のエントリ番号と、下限のエントリ番号とを出力する。下限エントリ番号は、登録されたノードのＩＤ番号のうち最も値の小さい番号（０）であり、同様に上限エントリ番号は、そのチャネルに登録されたノードのＩＤ番号のうち最も値の大きな番号（有効エントリ数設定値）を示す。下限エントリ番号は下限用セレクタ７４に出力され、上限エントリ番号は上限用セレクタ７５に出力される。また、検索回数値は、状態制御部７０に出力される。
【００４１】
下限用セレクタ７４には、エントリ識別部７１から下限エントリ番号が入力される。下限用セレクタ７４は、状態制御部７０の制御に従って、前記下限エントリ番号、前回のエントリ番号、除算・保持部７７の出力に＋１したエントリ番号のいずれかを選択出力する。
同様に上限用セレクタ７５には、エントリ識別部７１から上限エントリ番号が入力される。上限用セレクタ７５は、状態制御部７０の制御に従って、前記上限エントリ番号、前回のエントリ番号、除算・保持部７７の出力に−１したエントリ番号のいずれかを選択出力する。
【００４２】
加算部７６は、上限用セレクタ７４のエントリ番号と、下限用セレクタ７５のエントリ番号とを加算する。除算・保持部７７は、加算部７６の加算値を２で除算し、除算結果を保持する。
【００４３】
ここで、図９を参照しながら本実施例の検索方法を説明する。本実施例では２分木検索を用いている。図９は２分木検索の方法を概念的に示している。検索対象のチャネルが使用するメモリの下限設定値をＮ、上限設定値Ｍとする。また、説明を簡単にするため有効エントリ数設定値を上限設定値とし、下限設定値を０とする。
２分木検索では、まず上限設定値と下限設定値の中間の値が演算される。すなわち、（Ｎ＋Ｍ）÷２（＝Ｃ１とする）が演算され、このアドレスのエントリデータと、受信データのＩＤとの比較が行われる。ここで例えば、受信データのＩＤがエントリデータよりも小さい値であった場合には、対象のエントリデータがメモリアドレスの高いほうに登録されていることになる。そのため、下限用セレクタ７４では、除算・保持部７７の保持している前回の値Ｃ１に＋１した値が選択される。また上限用セレクタ７５では前回の値Ｍがそのまま選択される。これらの制御は、状態制御部７０によって行われる。加算部７６でこれらの値が加算され、除算・保持部７７で２で除算することで（Ｃ１＋１＋Ｍ）÷２がＣ２として演算される。このようにして求めたエントリデータと、受信ＩＤとの大小比較によって次のアドレスが順次生成され、受信データのＩＤと一致するエントリデータをメモリ７８から検索する。
【００４４】
エントリチェック部８０は、テーブル７８から読み出したエントリデータが正常なデータであるか否かを判定する。判定結果は状態制御部７０に出力する。
一致比較部７９は、テーブル７８から読み出したエントリデータと、受信したデータのＩＤとを比較する。図１０に一致比較部７９の構成を示す。図１０に示すように一致比較部７９は、論理演算部９５と、一致比較演算部９６とを備えている。論理演算部９５は、受信データのＩＤに図１１に示すようにマスクを重ね合わせ、検索範囲を絞り込む。一致比較部７９は、マスクを重ね合わせたＩＤ番号と、読み出したエントリデータとを比較して、両者が一致しているか否かを判定する。
【００４５】
例えば、図１２（Ａ）に示すようにゲートウェイ装置に接続する４つのＣＡＮバスＡ，Ｂ，Ｃ，Ｄのノードに、ランダムなＩＤ番号（図に示す数値がＩＤ番号を表している）が付加されていると、図１２（Ａ）に示す例では、最大１２回比較を行って、ＩＤの一致を検出しなければならない。これに対して、図１２（Ｂ）に示すように同一バス上のノードに対して、上位数ビットを同じ値に設定しておくことで、４回の比較でどのチャネルからのデータであるのかを判定することができる。
【００４６】
次に、図１３に示すフローチャートを参照しながら検索エンジン部１１の処理手順を説明する。
検索を開始すると、状態制御部７０は検索回数をまず０にセットする（ステップＳ１１）。この処理と同期してエントリ識別部７１において、エントリ数に応じた検索回数値をセットする（ステップＳ１２）。検索回数値は、エントリ識別部７１から状態制御部７０に通知される。
【００４７】
次に、状態制御部７０は、検索回数とエントリ識別部７１から通知された検索回数値とを比較して（ステップＳ１３）、検索回数が検索回数値に満たない場合には（ステップＳ１３／ＹＥＳ）、初期値もしくは前回の大小比較情報を基にメモリのポインタアドレスを生成する（ステップＳ１４）。下限用セレクタ７４には、エントリ識別部７１から下限エントリ番号が入力される。同様に上限用セレクタ７５には、エントリ識別部７１から上限エントリ番号が入力される。加算器７６は、下限エントリ番号と上限エントリ番号とを加算する。除算・保持部７７は、加算された値を２で除算して保持する。この値がポインタのアドレスとなる。
【００４８】
ポインタのアドレスが生成されると、このポインタアドレスが示すエントリデータがメモリ７８から読み出される（ステップＳ１５）。次に、読み出されたエントリデータは、エントリチェック部８０に入力され、データが正常であるか否かが判定される（ステップＳ１６）。正常な値ではなかった場合には（ステップＳ１６／ＮＯ）、システムエラーとして処理される（ステップＳ２１）。また、エントリデータが正常であった場合には（ステップＳ１６／ＹＥＳ）、受信データのＩＤと、エントリデータとが一致するか否かが一致比較部７９で判定される（ステップＳ１７）。両者が一致しなかった場合には（ステップＳ１７／ＮＯ）、検索回数が１イクリメントされると共に、一致比較部７９の大小比較結果が状態制御部７０に出力され（ステップＳ１８）、ステップＳ１３からの処理を繰り返す。状態制御部７０は、大小比較結果に応じて下限用セレクタ７４、上限用セレクタ７３を制御し、前回の比較結果に応じたポインタアドレスが生成される。また、両者が一致した場合には（ステップＳ１７／ＹＥＳ）、一致したエントリデータの宛先情報がチェックされて（ステップＳ１９）、正常であると送信ＦＩＦＯ２１に書き込まれる（ステップＳ２０）。また、宛先情報が正常ではない場合には（ステップＳ１９／ＮＯ）、システムエラーとして処理されるか（ステップ２１）、フレームデータを廃棄する（ステップＳ２２）。さらに、状態制御部７０は、検索回数が検索回数値よりも大きくなると（ステップＳ１３／ＹＥＳ）、受信したフレームデータは廃棄される（ステップＳ２２）。
【００４９】
また、状態制御部７０は、フレームデータを受信していないアイドルの時に、マップ情報の正常性確認動作を行ってもよい。この処理について図１４に示すフローチャートを参照しながら説明する。
状態制御部７０は、フレームデータを受信していないアイドル時に（ステップＳ３１）、自立チェックを実行する（ステップＳ４４）。まず、状態制御部７０は、ポインタのアドレスを生成し（ステップＳ４５）、該当するアドレスに格納されたエントリデータを検索して取り出す（ステップＳ４６）。そして、取り出したエントリデータの正常性を判定する（ステップＳ４７）。検索したエントリデータが正常であると判定すると（ステップＳ４７／ＹＥＳ）、処理を終了する。またエラーを検出すると（ステップＳ４７／ＮＯ）、システムエラーとして処理する（ステップＳ４８）。
【００５０】
図１５には、送信ＦＩＦＯ２１と、フレームデータの処理遅延時間に応じて、フレームデータを廃棄する構成とを示している。
図１６に示すように送信ＦＩＦＯ２１は、タイムスタンプを格納するタイムスタンプ用ＦＩＦＯ２１０と、フレームデータを格納するデータ用ＦＩＦＯ２１１とを備えている。また、処理遅延時間に応じてデータを廃棄するデータ廃棄部３００には、比較部３０１と、Ｖａｌｉｄ部３０２とを有している。
【００５１】
検索エンジン部１１から出力されるタイムスタンプ付きのフレームデータは、分離部２２０によってタイムスタンプと、それ以外の領域とに分離され、タイムスタンプ用ＦＩＦＯ（以下、ＴＳ用ＦＩＦＯと略記する）２１０、データ用ＦＩＦＯ２１１にそれぞれ保持される。分離部２２０は、フレームデータの所定位置に挿入されたタイムスタンプを取り出して、ＴＳ用ＦＩＦＯ２１０に出力する。
また、Ｖａｌｉｄ部３０２には、タイムスタンプ用ＦＩＦＯ２１０、データ用ＦＩＦＯ２１１に保持されたデータが有効であることを示すＶａｌｉｄデータ（有効なデータには「１」が記録されている）が記録される。
【００５２】
比較部３０１には、タイムスタンプと、タイムアウト設定情報とが入力される。タイムスタンプは、タイムスタンプ部６１で発行される現在の時刻を示す情報である。また、タイムアウト設定情報は、ＣＰＵ２によって設定される情報であって、ゲートウェイハードマクロ部１７に入力したフレームデータが、ゲートウェイハードマクロ部１７から出力されるまでにかかる時間の遅延許容時間の設定である。
【００５３】
Ｖａｌｉｄ部３０２と、タイムスタンプ用ＦＩＦＯ２１０と、データ用ＦＩＦＯ２１１とは、それぞれ同一構成のＦＩＦＯで構成されている。
従って、データ用ＦＩＦＯ２１１に書き込まれたフレームデータのタイムスタンプ情報が、タイムスタンプ用ＦＩＦＯ２１０の同一領域に書き込まれている。同様に、フレームデータが有効なデータであるのか無効なデータであるのかを示すＶａｌｉｄデータが、Ｖａｌｉｄ部３０２の同一領域に書き込まれている。
比較部３０１は、Ｖａｌｉｄ部３０２に有効であることを示すデータが記録された領域のタイムスタンプをＴＳ用ＦＩＦＯ２１０から読み込んで、タイムスタンプ部６１から出力される現在の時刻を示すタイムスタンプ情報と比較する。ＴＳ用ＦＩＦＯ２１０に格納されたタイムスタンプの時刻と、現在の時刻との差がＣＰＵ２から通知されたタイムアウト設定情報を超えている場合、比較部３０１は、Ｖａｌｉｄ部３０２のＶａｌｉｄデータを無効なデータ（０を記録する）に変更する。Ｖａｌｉｄデータが無効なデータに変更されると、メッセージカウンタ３０３の値が１減算される。
ＣＰＵ２は、所定タイミングごとにメッセージカウンタ３０３の値を読み出す。メッセージカウンタ３０３の値が所定値となると、データ用ＦＩＦＯ２１１からフレームデータを読み出す。このとき、Ｖａｌｉｄ部３０２に無効を示すデータが記録されているフレームデータは、読み出されずに廃棄される。
【００５４】
なお、ＴＳ用ＦＩＦＯ２１０に格納されたタイムスタンプの時刻と、現在の時刻との差がＣＰＵ２から通知されたタイムアウト設定情報を超えると、比較部３０１で割り込み信号をＣＰＵ２に出力するようにしてもよい（このときの構成を図１６に示す）。ＣＰＵ２は割り込み信号を入力すると、データ用ＦＩＦＯ２１１に格納されたフレームデータを優先的に読み出す。
【００５５】
図１５、１６には、ゲートウェイハードマクロ部１７内での滞留時間がタイムアウト時間を超えたフレームデータをハードウェアによって廃棄する場合の構成を示したが、この他に、ＣＰＵ２によるソフト制御によって、滞留時間がタイムアウト時間を超えたフレームデータをソフトウェアによって廃棄することもできる。
図１７に示すフローチャートを参照しながら、滞留時間がタイムアウト時間を超えたフレームデータをＣＰＵ２で廃棄する手順を説明する。
ＣＰＵ２は、所定時間ごとにメッセージカウンタ３０３を参照して、送信ＦＩＦＯ２１に処理データが格納されているかを判定する（ステップＳ５１）。送信ＦＩＦＯ２１に処理データが格納されている場合には（ステップＳ５１／ＹＥＳ）、この処理データを送信ＦＩＦＯ２１から読み出すと共に（ステップＳ５２）、タイムスタンプ部６１から現在時刻を表すタイムスタンプ情報を読み出す（ステップＳ５３）。
ＣＰＵ２は、送信ＦＩＦＯ２１から読み出したフレームデータに付加されたタイムスタンプ情報と、タイムスタンプ部から読み出した現在時刻情報とを比較する（ステップＳ５４）。
タイムスタンプの時刻と、現在の時刻との差が第１基準値βよりも大きいと（ステップＳ５５／ＹＥＳ）、このフレームデータを廃棄する（ステップＳ５６）。また、タイムスタンプの時刻と、現在の時刻との差が第１基準値βよりも小さく、第２基準値αよりも大きい場合には（ステップＳ５７／ＹＥＳ）、このフレームデータの処理に遅延が生じていると判定し、このフレームデータを優先的に処理する（ステップＳ５８）。なお、第１基準値βは、第２基準値αよりも大きな値に設定されている。
さらに、タイムスタンプの時刻と、現在の時刻との差が第２基準値αよりも小さいには（ステップＳ５７／ＮＯ）、フレームデータの処理に遅延が生じていないと判定し、通常の処理を行う（ステップＳ５９）。
【００５６】
図１８には、ゲートウェイハードマクロ部１７を転送されるフレームデータの構成を示す。図１８（Ａ）は、セレクタ部５２に入力されるフレームデータの構成を示す。図１８（Ｂ）は、セレクタ部５２から検索エンジン部１１に出力されるタイムスタンプ付きのフレームデータの構成を示す。図１８（Ｃ）には、送信ＦＩＦＯ２１に書き込まれるタイムスタンプ付きののフレームデータの構成を示す。図１８（Ｄ）には、ＣＰＵ２が送信ＦＩＦＯから読み込むフレームデータの構成を示す。なお、図１８中に示す「＊」は複数ビットからなることを示す。
【００５７】
なお、フレームデータに付加するタイムスタンプ情報を、検索エンジン部１１で有効なフレームデータであると判定されたデータに対してだけ付加することもできる。この場合の構成を図１９に示す。ゲートウェイハードマクロ部１７内での滞留時間の計測という観点からは、図２に示す構成が厳密な滞留時間を計測することができるが、図１９に示す構成では、ハードウェアの規模を小さくすることができる。
また、フレームデータの廃棄は、ソフトウェアによる廃棄がメインで、ハードウェアで廃棄する場合には図１６に示す構成となる。
【実施例２】
【００５８】
添付図面を参照しながら本発明の第２実施例を説明する。
【００５９】
図２０に実施例２のゲートウェイハードマクロ部１７の構成を示す。ゲートウェイハードマクロ部１７は、図２０に示すように検索エンジン部１１、送信ＦＩＦＯ部２０を主な構成として備えている。送信ＦＩＦＯ部２０には、送信ＦＩＦＯ２１、メッセージカウンタ２２などが設けられる。送信ＦＩＦＯ部２０は、送信バッファ１４内に設けられる。図２０に示すように検索エンジン部１１は、複数の受信チャネルに対して１つ設けられている。また、送信ＦＩＦＯ２１とメッセージカウンタ２２は、１チャネルに２つずつ設けられる。本実施例では、通常送信専用、優先送信専用と機能に応じて送信ＦＩＦＯ２１を使い分けている。
【００６０】
ＣＡＮ９のメッセージボックスから取り出されたフレームデータは、一旦受信制御部１５で一端格納される。検索エンジン部１１は、その後、受信制御部１５からフレームデータを所定のタイミングで読み出してルーティングを行い、ルーティング後のデータを送信ＦＩＦＯ２１に格納する。なお、図２０に示すように各ＣＡＮ９に用意されるメッセージボックスは、受信用として１つ以上用意され、他のメッセージボックスは自由に使用される。
なお、本実施例においても、タイムスタンプ部６１が設けられており、検索エンジン部１１に入力したフレームデータにタイムスタンプを付加する。
タイムスタンプ部６１の構成は、図４と同一であって、ＣＰＵ２から出力される機能イネーブル信号及び分周比設定信号と、クロック信号とによって動作する。
【００６１】
次に、図２１を参照しながら検索エンジン部１１の構成について詳述する。検索エンジン部１１は、図２１に示すように検索制御部３０と、レジスタ部３１とを備えている。
【００６２】
検索制御部３０は、フレームデータのルーティングを行う機能部である。受信制御部１５に格納されたフレームデータを所定のタイミングで取り込み、ルーティングを行う。図２１には、検索制御部３０に取り込まれるデータが示されている。ＣＡＮ＿ＩＤ，ＤＬＣ，ＣＡＮ−ＤＡＴＡが検索制御部３０に取り込まれる。マップメモリ１３には、検索制御部３０がルーティングを行うためのルーティングマップが記録されている。ルーティングマップは、データを転送するチャネルごとに定義され、各チャネルで受信したデータを異なる１つ以上のチャネルに転送するための情報が定義されている。図２２にルーティングマップの一例を示す。図２２に示すように各エントリごとに、情報を記録したメモリのアドレス、フォーマットの種別を示すＩＤＥ、フレームの種別を示すＲＴＲ、ＩＤ、マスクインフォメーション、チャネルを示す情報、送信ＦＩＦＯの番号、送信チャネル番号、受信チャネル番号、その他の情報としてデータラベルが記録されている。
【００６３】
レジスタ部３１には、ＣＰＵ２によって設定される、検索制御部３０の設定情報が記録される。例えば、検索制御部３０の機能の停止、開始、リセットを指定する情報、チャネルごとに、検索制御部３０の有効と無効とを設定する情報、表１に示す各種エラーの定義情報、送信ＦＩＦＯ２１のオーバーフロー、ルーティングエラーが発生した場合に、その発生要因をＣＰＵ２に通知するか否かを設定する情報などが記録される。なお、送信ＦＩＦＯ２１のオーバーフローとは、送信ＦＩＦＯ２１に空き領域がない状態で、新たなデータが送信ＦＩＦＯに書き込まれ、最古側のＦＩＦＯ領域に最新のデータが上書きされてしまう状態をいう。また、ルーティングエラーとは、表１のＡに示すエラーであり、マップメモリに記載されている宛先チャネル情報がすべて０、または受信可能チャネル情報がすべて０である状態をいう。
【００６４】
【表１】
2008113096.tif 000003
【００６５】
次に、図２３を参照しながら検索制御部３０の構成について説明する。図２３に示すように検索制御部３０は、アドレス生成部３５、マップメモリＩ／Ｆ部３６、データ比較部３７の機能部を備えている。アドレス生成部３５は、アドレスカウンタを備え、マップメモリ１３のアドレスを順次生成する。マップメモリＩ／Ｆ部３６は、マップメモリ１３とのインタフェース部分であり、アドレス生成部３５により生成されたアドレスのデータをマップメモリから読み出してデータ比較部３７に出力する。データ比較部３７は、受信制御部１５から読み込んだデータ（ＣＡＮ＿ＩＤ）と一致するアドレスがマップメモリ１３のルーティングマップに登録されているか否かを比較し判定する。
【００６６】
図２４のタイミングチャートを参照しながら検索制御部３０の動作タイミングを説明する。ＣＡＮの受信データが受信制御部１５に格納されると、検索開始パルスが受信制御部１５からアドレス生成部３５に入力される。アドレス生成部３５は、この検索開始パルスをトリガとしてマップメモリ１３のアドレスを順次生成する（図２４に示すマップアドレス０、１、２・・・）。アドレス生成部３５で生成されたマップアドレスは、マップメモリＩ／Ｆ部３６に入力され、マップメモリＲＥＡＤ信号に同期してマップメモリ１３からマップデータが読み出される（図２４に示すマップデータ０、１、２・・・）。データ比較部３７は、受信したデータ（ＣＡＮ＿ＩＤ）と、マップメモリ１３から読み出したＩＤとを比較し、ＩＤの一致、不一致を判定する。不一致の場合には、データ比較部３７から検索継続リクエスト信号がアドレス生成部３５に出力され、データの比較が継続される。また一致した場合には、検索継続リクエスト信号がアドレス生成部３５に出力されなくなり、アドレス生成部３５からは、検索終了パルスが出力される。またデータ比較部３７ではデータ比較と合わせてルーティングマップのパリティチェックを実行する。ＩＤの一致したエントリに記録されたデータ（ＣＡＮ＿ＩＤ、マスク情報、宛先チャネル、送信ＦＩＦＯ番号、データラベル）のパリティチェックを実行する。パリティチェックエラーの場合には、エラーを示すＰａｒｉｔｙ＿ＥＲＲ信号をＣＰＵ２に出力する。
【００６７】
図２５のフローチャート及び図２６を参照しながら動作手順を説明する。なお、この制御手順はＣＰＵ２の制御手順ではなく、ゲートウェイハードマクロ部１７のハードウェアの動作を示す。また、図２６には、マップメモリ１３の記録するルーティングマップと、このルーティングマップを使用した検索制御部３０のルーティング手順とが概念的に示されている。フレームデータを受信すると（ステップＳ６１／ＹＥＳ、又は図２６に示すＡ：受信）、ＣＡＮ９は、受信したフレームデータをＣＡＮインタフェース部８へ出力し（ステップＳ６２）、ＣＡＮインタフェース部８から受信制御部１５にフレームデータが書き込まれる（ステップＳ６３）。ＣＡＮ９は、ＣＡＮ９の備えるメッセージボックス９にフレームデータを入力すると、検索エンジン部１１に対して割込み信号を出力する。検索エンジン部１１は、この割込み信号をトリガとして、メッセージボックスからフレームデータを取り出し（図２６のＢ）、受信制御部１５に格納する。検索エンジン部１１は、受信制御部１５からの検索開始パルス（ＳＣＨ＿ＳＴＲＴ）に同期してＣＡＮ＿ＩＤ、ＤＬＣ（データリンクコントロール）、データを取り出す（ステップＳ６４）。なお、受信制御部１５に記録されたフレームデータは、すべて検索対象となり検索エンジン部１１に入力される。図２７（Ａ）には、受信したフレームデータの構成が示されている。フレームデータは、図２７（Ａ）に示すようにＩＤＥ（フォーマット種別を示す）、ＲＴＲ（フレーム種別を示す）、ＥＰＣ（パリティチェックエラー結果）、標準ＩＤ又は拡張ＩＤ、Ｄａｔａ、Ｌａｂｅｌ０，Ｒｅｓ（Ｒｅｓｅｖｅｄ）、ＤＬＣ（データリンクコントロール）、Ｌａｂｅｌ１、Ｄａｔａ、タイムスタンプ、Ｄａｔａの各領域を有している。標準ＩＤ又は拡張ＩＤをＣＡＮ＿ＩＤと呼ぶ。
【００６８】
次に、検索エンジン部１１は、マップメモリ１３のデータに対してパリティチェックを行う（ステップＳ６５）（図２６のＣ参照）。マップメモリ１３の検索時には、２分木検索によって導き出されたアドレス値でマップメモリ情報を読み出す。このとき読み出すマップメモリデータがビット化けを起こしていないかどうかを判定するために、パリティチェックを行う。パリティチェック結果がエラーであった場合には（ステップＳ６５／ＹＥＳ）、ＣＰＵ２に対してルーティングエラー通知の割込み信号を出力する（ステップＳ８１）。その後、ＣＰＵでこのエラーを確認すると（ステップＳ８２／ＹＥＳ）、エラーフラグがクリアされる（ステップＳ８３）。
【００６９】
次に、検索エンジン部１１は、マップメモリ１３を検索して（ステップＳ６７）、受信したフレームデータがルーティング対象のデータであるか否かを判定する（ステップＳ６８）（図２６のＣ、Ｄ）。検索エンジン部１１は、フレームデータからＣＡＮ＿ＩＤ，ＤＬＣ，データを取り出し、受信したＣＡＮ＿ＩＤと一致するＩＤがルーティングマップに記録されているか否かを判定する（ステップＳ６８）。ＣＡＮ＿ＩＤと一致するＩＤがルーティングマップに記録されていない場合には（ステップＳ６８／ＮＯ）、検索終了か否かを判定する（ステップＳ６９）。検索終了ではない場合には（ステップＳ６９／ＮＯ）、ステップＳ６５のマップメモリ１３の検索を再度行い、ＣＡＮ＿ＩＤと一致するＩＤがマップメモリに登録されているか否かを判定する。また検索終了の場合には（ステップＳ６９／ＹＥＳ）、中継対象外のデータであるので図２８に示すようにデータを廃棄する（ステップＳ７０）。
【００７０】
また、図２６のＣに示すようにＣＡＮ＿ＩＤと一致するＩＤがルーティングマップに記録されている場合には（ステップＳ６８／ＹＥＳ、又は図２６に示すＥ：一致）、検索エンジン部１１は、フレームデータを格納する送信ＦＩＦＯの番号（図２６のＦ）と、フレームデータを転送する宛先チャネル情報とをマップメモリ１３から取得する（ステップＳ７１）（図２６のＧ）。検索エンジン部１１は、宛先チャネル情報を取得すると、宛先のチャネルは有効であるのか、無効であるのかを判定する。無効ではないと判定した場合には（ステップＳ７２／ＮＯ）、ＣＰＵ２に対してルーティングエラー通知の割込み信号を出力する（ステップＳ８１）。その後、ＣＰＵでこのエラーを確認すると（ステップＳ８２／ＹＥＳ）、エラーフラグがクリアされる（ステップＳ８３）。また、宛先のチャネルは有効である判定すると（ステップＳ７２／ＹＥＳ）、図２７（Ｂ）に示すようにフレームデータにデータラベルを付加して送信ＦＩＦＯ２１に出力される（図２６のＩ）。
【００７１】
送信ＦＩＦＯ２１にはフレームデータを格納できる段数の設定があり、この段数を超えてフレームデータを転送すると送信ＦＩＦＯ２１に空きがなくなる。送信ＦＩＦＯ２１に空きがない状態で（ステップＳ７３／ＮＯ）、フレームデータの書き込みが行われると、最古側の送信ＦＩＦＯ領域にフレームデータの最新値が上書きされ、送信ＦＩＦＯオーバーフローとなる（ステップＳ７４）。検索エンジン部１１は、送信ＦＩＦＯオーバーフローを判定すると、ＣＰＵ２に対してオーバーフローエラーの割込み信号を出力する（ステップＳ８１）。その後、ＣＰＵでこのエラーを確認すると（ステップＳ８２／ＹＥＳ）、エラーフラグがクリアされる（ステップＳ８３）。なお、検索エンジン部１１でフレームデータに付加されるデータラベルについては、後ほど詳述する。
【００７２】
また、送信ＦＩＦＯ２１に空き領域がある場合には（ステップＳ７３／ＹＥＳ）、ＦＩＦＯ調停部２３の調停によってフレームデータを送信ＦＩＦＯ２１に書き込み、メッセージカウンタ２２をカウントアップする（ステップＳ７５）。メッセージカウンタ２２のカウント値が予め設定した設定値となると（ステップＳ７７）、検索エンジン部１１はＣＰＵ２に対して割込み信号を出力する。この後、データの転送をＤＭＡコントローラ７の制御によって行う場合には（ステップＳ７７／ＹＥＳ）、データリクエスト信号（ＤＲＥＱ）をＤＭＡコントローラ７に出力する（ステップＳ７９）。ＤＭＡコントローラ７はこの信号を入力して、送信ＦＩＦＯ２１からのデータを送信する（ステップＳ８０）。また、ＣＰＵ２の制御によってデータ送信を行う場合には（ステップＳ７７／ＮＯ）、検索エンジン部１１は、ＣＰＵ２に対して送信割込み信号を出力する（ステップＳ７８）。ＣＰＵ２は、プログラム制御によるソフトウェア処理によってルーティングされたフレームデータを送信処理する（ステップＳ８０）。
【００７３】
図２９に送信ＦＩＦＯ２１の構成を示す。送信ＦＩＦＯ２１は、図２９に示すように各チャネルに３つの３２段送信ＦＩＦＯが設けられている。本実施例では、送信ＦＩＦＯ２１の一段につき１フレームの情報が格納されるものとする。なお、送信ＦＩＦＯ２１の段数、列数は、これに限定されるものではななく、入力するフレーム数、チャネル数、通信速度に応じて任意に変更することができる。
【００７４】
送信ＦＩＦＯ２１にバッファリングされたフレームデータは、メッセージカウンタ２２でカウントされ表示される。メッセージカウンタ２２のカウント値は、送信ＦＩＦＯ２１から取り出すことが保証されたフレーム数である。検索エンジン部１１は、メッセージカウンタ２２のカウント値がレジスタ部３１に設定された値となると、割込み信号をＣＰＵ２に出力する。ＣＰＵ２は、このカウント数だけ送信ＦＩＦＯ２１からフレームを取り出すことができる。ＣＰＵ２は割込み信号を受けて、プログラム制御によるソフトウェア処理によって該当するチャネルの全ＦＩＦＯのメッセージカウンタ２２のカウント値を読み出し、どの送信ＦＩＦＯを何回読み出すのかを検知する。また、何らかの原因で、送信ＦＩＦＯ２１からフレームデータが読み出されず送信ＦＩＦＯ２１が一杯になった場合には、図３０に示すように最も古い側のデータを廃棄した上で最新のデータを送信ＦＩＦＯ２１に書き込むようにする。
【００７５】
送信ＦＩＦＯ２１に記録されたフレームの受信制御部１５への書き込みは、プログラムによるソフトウェア処理か、ＤＭＡコントローラ７による転送制御によって行われる。なお、ゲートウェイ装置として画一化できない処理、例えば、フェール処理やＣＡＮ＿ＩＤやデータの加工処理等についてもソフトウェア処理によって行う。なお、このソフトウェア処理は、ＣＰＵ２がＲＯＭ３に記録されたプログラムを読み出し、このプログラムに従った処理を実行することで実現される。
【００７６】
図３１に、ＦＩＦＯ調停部２３と、送信ＦＩＦＯ２１との接続構成を示す。図３１に示すＦＩＦＯカウンタ制御部２４は、メッセージカウンタ２２の制御を行う。ＦＩＦＯ調停部２３は、複数の検索エンジン部１１からフレームデータが同時に出力された場合、設定された優先順位に従って、フレームデータを送信ＦＩＦＯ２１に出力する。
【００７７】
図３２には、ＣＡＮ９、ＣＡＮインタフェース部８、検索エンジン部１１、バスインタフェース部１０間での通信で出力される信号を示す。ＣＡＮ９からＣＡＮインタフェース部８には、ＩＲＱ１（ＣＡＮ＿１からの割込み信号）、ＷＲ１（レジスタ書き込み信号）、ＤＡＴＡｘＯ（レジスタ読み出し信号）、ＤＡＴＡｘＩ（レジスタ書き込み信号）が出力される。他のＣＡＮ＿２，ＣＡＮ＿３からも同様な信号が出力される。ＣＡＮインタフェース部８は、検索エンジン部１１に対して、ＳＴＡＲＴｘ（ルーティング開始信号）と、ＩＤｘ，ＤＬＣｘ，ＤＡＴＡｘと、ＥＮ（検索エンジン部１１の動作許可信号）とを出力する。
【００７８】
送信ＦＩＦＯ２１に所定数のフレームデータが蓄積されると、検索エンジン部１１からＣＰＵ２には、ＩＮＴｖ（ゲートウェイ割込み信号）が出力される。ＣＰＵ２は、ＲＤｖ（レジスタ読み出し信号）と、ＷＲｖ（レジスタ書き込み信号）とを出力して、メッセージカウンタ２２のカウント値を読み出す。その後、ＤＡＴＡｖＯ（レジスタ（送信ＦＩＦＯを含む）読み出しデータ）、ＤＡＴＡｖＩ（レジスタ（送信ＦＩＦＯを含む）書き込みデータ）等によってデータの書き込みや読み出しが行われる。
【００７９】
ここで、検索エンジン部１１で付加されるデータラベルについて説明する。データラベルは、検索エンジン部１１のハードウェア構成上意味を持たず、ルーティングには直接関係しないが、図２７（Ｂ）に示すようにフレームデータに付加して転送される。データラベルは８ビットで指定される。このデータラベルは、ルーティング処理時にフレームデータに付加され、送信ＦＩＦＯ２１に転送される。プログラム制御によるソフトウェア処理によってデータラベルを取得し、ＲＯＭ３に記録されているフレーム情報テーブルの参照用ポインタとして使用する。これによって、ソフトウェア処理でフレーム情報の再検索を行う必要がなくなり、ソフトウェアによる送信処理にかかる時間を短縮することができる。
【００８０】
上述した実施例は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。例えば、本発明は、ゲートウェイ装置を車両に搭載したものに有効であるが、車載用のゲートウェイ装置だけに限定されるものではない。
【図面の簡単な説明】
【００８１】
【図１】車載ゲートウェイ装置の構成を示すブロック図である。
【図２】ゲートウェイハードマクロ部の構成を示す図である。
【図３】振り分け部の構成を示すブロック図である。
【図４】タイムスタンプ部の構成を示すブロック図である。
【図５】タイムスタンプ部の初期設定時のＣＰＵの処理手順を示すフローチャートである。
【図６】セレクタ部の構成を示すブロック図である。
【図７】検索エンジン部の構成を示すブロック図である。
【図８】エントリ識別部の構成を示す図である。
【図９】２分木検索を説明するための図である。
【図１０】一致比較部の構成を示す図である。
【図１１】マスク処理を説明するための図である。
【図１２】マスク処理を説明するための図である。
【図１３】検索エンジン部の処理手順を示すフローチャートである。
【図１４】検索エンジン部の処理手順、特に自立チェックの手順を示すフローチャートである。
【図１５】送信ＦＩＦＯと、無効なフレームデータを廃棄するデータ廃棄部の構成を示す図である。
【図１６】送信ＦＩＦＯと、無効なフレームデータを廃棄するデータ廃棄部の他の構成を示す図である。
【図１７】ＣＰＵにより無効なフレームデータを廃棄する手順を示すフローチャートである。
【図１８】ゲートウェイハードマクロ部内で処理されるフレームデータの構成を示す図である。
【図１９】ゲートウェイハードマクロ部の他の構成を示す図である。
【図２０】ゲートウェイハードマクロ部の構成を示す図である。
【図２１】検索エンジン部の構成を示す図である。
【図２２】マップメモリに記録されたルーティングマップの一例を示す図である。
【図２３】検索制御部の構成を示す図である。
【図２４】検索制御部の動作タイミングを示すタイムチャートである。
【図２５】車載ゲートウェイ装置の動作手順を示すフローチャートである。
【図２６】検索制御部の動作を概念的に示す図である。
【図２７】フレームデータの構成を示す図である。
【図２８】検索エンジン部の動作を概念的に示す図である。
【図２９】１チャネル当たりの送信ＦＩＦＯを示す図である。
【図３０】ＦＩＦＯオーバーフロー時の処理を説明するための図である。
【図３１】送信ＦＩＦＯ部の構成を示す図である。
【図３２】ＣＡＮ、ＣＡＮインタフェース部、検索エンジン部、バスインタフェース部間のＣＡＮ通信で送信される信号を示す図である。
【図３３】複数のＥＣＵと車載ゲートウェイ装置との接続構成を示す図である。
【符号の説明】
【００８２】
１  車載ゲートウェイ装置
２  ＣＰＵ
３  ＦＬＡＳＨ  ＲＯＭ
４  ＵＡＲＴ
６  割込み制御部
７  ＤＭＡコントローラ
８  ＣＡＮインタフェース部
９  ＣＡＮ
１０  バスインタフェース部
１１  検索エンジン部
１３  マップメモリ
１４  送信バッファ
１５  受信制御部
１６  ＣＰＵバス
１７  ゲートウェイハードマクロ部
２０  送信ＦＩＦＯ部
２１  送信ＦＩＦＯ
２２  メッセージカウンタ
３０  検索制御部
３１  レジスタ部
３５  アドレス生成部
３６  マップメモリＩ／Ｆ部
３７  データ比較部
５１  振り分け部
５２  セレクタ部
５３  並列バッファ
５４  調停部
５５  フォーマット変換部
５６  レジスタ
６１  タイムスタンプ部
７０  状態制御部
７１  エントリ識別部
７９  一致比較部
８０  エントリチェック部
９１  選択部
９２  第１変換部
９３  第２変換部
９５  論理演算部
９６  一致比較演算部
１００  状態管理部
２００  状態監視ブロック
２１０  ＴＳ用ＦＩＦＯ
２１１  データ用ＦＩＦＯ
３００  データ廃棄部
３０１  比較部
３０２  Ｖａｌｉｄ部
３０３  メッセージカウンタ
５２１、５２２、５２３、５２４  レジスタ
５２５  選択論理部
５２６  セレクタ
６１１  分周回路
６１２  フリーランカウンタ
【図１】
2008113096.tif 000004
【図２】
2008113096.tif 000005
【図３】
2008113096.tif 000006
【図４】
2008113096.tif 000007
【図５】
2008113096.tif 000008
【図６】
2008113096.tif 000009
【図７】
2008113096.tif 000010
【図８】
2008113096.tif 000011
【図９】
2008113096.tif 000012
【図１０】
2008113096.tif 000013
【図１１】
2008113096.tif 000014
【図１２】
2008113096.tif 000015
【図１３】
2008113096.tif 000016
【図１４】
2008113096.tif 000017
【図１５】
2008113096.tif 000018
【図１６】
2008113096.tif 000019
【図１７】
2008113096.tif 000020
【図１８】
2008113096.tif 000021
【図１９】
2008113096.tif 000022
【図２０】
2008113096.tif 000023
【図２１】
2008113096.tif 000024
【図２２】
2008113096.tif 000025
【図２３】
2008113096.tif 000026
【図２４】
2008113096.tif 000027
【図２５】
2008113096.tif 000028
【図２６】
2008113096.tif 000029
【図２７】
2008113096.tif 000030
【図２８】
2008113096.tif 000031
【図２９】
2008113096.tif 000032
【図３０】
2008113096.tif 000033
【図３１】
2008113096.tif 000034
【図３２】
2008113096.tif 000035
【図３３】
2008113096.tif 000036