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