(57)【要約】【課題】カーナビゲーションシステムなどのシリアル通信を多く使用するシステムにおいて、ＣＰＵの負荷を軽減することができるシリアル通信装置を提供する。【解決手段】シリアル通信の制御手法に着目し、シリアル通信におけるデータ受信にＤＭＡコントローラ１２を使用し、あらかじめ受信用ＤＭＡコントローラ１２の転送回数に１回の受信データ数よりも多い回数を設定すると共に、一定期間データを受信しなかった場合にタイムアウト割り込みを発生させる機能をシリアルインターフェース１１に付加することにより、ＣＰＵ１４に負荷をかけないでシリアル通信を制御・実行する。【選択図】        図１
2004295701.tif 000002
【特許請求の範囲】
【請求項１】
データを受信するシリアルインターフェースと、
前記シリアルインターフェースが受信したデータを前記シリアルインターフェースから第１のメモリへ転送するＤＭＡコントローラとを有し、
前記ＤＭＡコントローラは、前記シリアルインターフェースが前記データを受信する前に起動されることを特徴とするシリアル通信装置。
【請求項２】
請求項１記載のシリアル通信装置であって、
前記ＤＭＡコントローラは、１回に受信されるデータ数より多い回数を転送回数として設定し、前記シリアルインターフェースから前記第１のメモリへの転送データ数が前記設定された転送回数に達した時にＣＰＵへＤＭＡ転送終了割り込み信号を出力することを特徴とするシリアル通信装置。
【請求項３】
請求項２記載のシリアル通信装置であって、
前記シリアルインターフェースは、前記データの受信開始後、前記データの受信が一定期間停止した時に前記ＣＰＵへ受信タイムアウト割り込み信号を出力することを特徴とするシリアル通信装置。
【請求項４】
請求項３記載のシリアル通信装置であって、
前記ＤＭＡコントローラは、前記ＤＭＡ転送終了割り込み信号又は前記受信タイムアウト割り込み信号をトリガとして、前記第１のメモリへ転送された前記受信データを第２のメモリへ再転送することを特徴とするシリアル通信装置。
【請求項５】
請求項２〜４のいずれか１項に記載のシリアル通信装置であって、
前記第１のメモリは２以上のメモリ領域からなり、
前記ＤＭＡコントローラは、連続転送機能を有し、前記ＤＭＡ転送終了割り込み信号又は前記受信タイムアウト割り込み信号をトリガとして、前記シリアルインターフェースが受信したデータの転送先を前記２以上のメモリ領域の間で交互に切り替えて前記シリアルインターフェースから前記第１のメモリへ前記データを転送することを特徴とするシリアル通信装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シリアル通信装置に関し、特にカーナビゲーションシステムなどのシリアル通信を多く使用するシステムに適用して有効な技術に関する。
【０００２】
【従来の技術】
例えば、本発明者が検討した技術として、カーナビゲーションシステムなどのシリアル通信装置においては以下の技術が考えられる。
【０００３】
すなわち、シリアルデータを所定回数の読み込みタイミングでデータを受信・確定する通信装置において、この読み込みタイミングを決定する通信処理周期を計測し、この読み込みタイミングが通信装置内の他の割り込み処理等により遅れた場合、データの確定ができなくなることを防止するために、通信装置は上述の読み込みタイミングを早めていた（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開平８−３１４５１３号公報
【０００５】
【発明が解決しようとする課題】
ところで、前記のようなシリアル通信装置の技術について、本発明者が検討した結果、以下のようなことが明らかとなった。
【０００６】
処理の遅れを検出してから読み込みタイミングを変更するため、データ読み込みに遅延が生じてしまう。また基本的な処理はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）が実行するため、シリアルデータ受信処理が多い場合にタイミング変更処理が増え、結果的にＣＰＵの負荷を減らすことができない。
【０００７】
そこで、本発明の目的は、カーナビゲーションシステムなどのシリアル通信を多く使用するシステムにおいて、ＣＰＵの負荷を軽減することができるシリアル通信装置を提供するものである。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１０】
すなわち、本発明によるシリアル通信装置は、シリアル通信の制御手法に着目し、シリアル通信におけるデータ受信にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを使用し、あらかじめ受信用ＤＭＡコントローラ（以下、「ＤＭＡＣ」という）の転送回数に１回の受信データ数よりも多い回数を設定すると共に、一定期間データを受信しなかった場合にタイムアウト割り込みを発生させる機能をシリアルインターフェース（以下、「ＳＣＩＦ」という）に付加することにより、ＣＰＵに負荷をかけないでシリアル通信を制御・実行するものである。具体的には、以下のとおりである。
【００１１】
（１）ＣＰＵ負荷を軽減するため、ＳＣＩＦとＤＭＡＣにて動作をさせる。
【００１２】
（２）データを受信する前に受信用ＤＭＡＣを起動しておく。
【００１３】
（３）あらかじめ受信用ＤＭＡＣの転送回数に１回の受信データ数より多い回数を設定する。これによりＣＰＵのＤＭＡ転送回数を設定する頻度を抑え、ＣＰＵの処理を軽減できる。
【００１４】
（４）データを受信したら、ＳＣＩＦ内の受信ＦＩＦＯ（Ｆｉｒｓｔ−ｉｎ  Ｆｉｒｓｔ−ｏｕｔ）データフルＤＭＡ転送要求をトリガに受信ＦＩＦＯからＤＭＡ転送用バッファ領域（第１のメモリ）にデータを転送する。
【００１５】
（５）ＤＭＡ転送回数分のデータを受信したら、ＤＭＡ転送終了割り込みをトリガに受信データ（ＤＭＡ転送用バッファ領域に転送されたデータ）をアプリケーションかドライバが使用可能なワーク領域（第２のメモリ）に転送する。
【００１６】
（６）ＤＭＡ転送回数分のデータを受信する前に一定期間、データを受信しなかった場合、タイムアウト割り込みをトリガに受信データ（ＤＭＡ転送用バッファ領域に転送されたデータ）をアプリケーションかドライバが使用可能なワーク領域（第２のメモリ）に転送する。
【００１７】
（７）また受信用ＤＭＡＣとして、連続転送機能を有するＤＭＡＣを使用し、ＤＭＡ転送用バッファ領域を２以上の領域に分割し、ＤＭＡ転送先を交互に切り替えることにより、シリアル受信データの取りこぼしを防止することができる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部材には同一の符号を付し、その繰り返しの説明は省略する。
【００１９】
（実施の形態１）
図１は本発明の実施の形態１においてシリアル通信装置を含むシステムの構成及びデータ受信処理フローを示す図であり、（ａ）はデータ受信が停止する前に設定回数のＤＭＡ転送が終了した場合、（ｂ）はデータ受信が途中で停止した場合を示す。図２は本実施の形態１において、シリアル通信のデータ受信処理フローを示す図である。図３は本実施の形態１において、ＳＣＩＦ内部の受信タイムアウト割り込み信号発生部の構成及び処理フローを示す図、図４は受信タイムアウト割り込み信号発生部の処理フローである。
【００２０】
まず、図１により、本実施の形態１のシリアル通信装置の構成の一例を説明する。本実施の形態１のシリアル通信装置は、例えばＳＣＩＦ１１，ＤＭＡＣ１２などからなり、お互いに接続されている。また、ＳＣＩＦ１１は外部のシリアル通信機器１３と接続されシリアルデータを受信する。ＳＣＩＦ１１，ＤＭＡＣ１２はバスや割り込み信号ラインなどを介してＣＰＵ１４，メモリ１５などと接続され、システムを構成している。
【００２１】
ＳＣＩＦ１１は外部のシリアル通信機器１３とシリアル通信を実行するためのインターフェースであり、受信ＦＩＦＯ（図示せず）、受信タイムアウト割り込み信号発生部（図示せず）などを含む。受信ＦＩＦＯはシリアル通信機器１３から受信したシリアルデータを一時的に保存する先入れ先出し方式のバッファメモリである。受信タイムアウト割り込み信号発生部については、図３及び図４を用いて後述する。
【００２２】
ＤＭＡＣ１２はＣＰＵ１４に代わって、ＳＣＩＦ１１・メモリ１５間並びにメモリ１５・メモリ１５間のデータ転送（ＤＭＡ転送）を制御するコントローラである。
【００２３】
ＣＰＵ１４はシステムの演算処理・制御などを行う中央処理装置である。
【００２４】
メモリ１５は書き込み・読み出し・消去可能なメモリであり、ＤＭＡ転送用バッファ領域１６（第１のメモリ）、アプリ・ドライバ用ワーク領域１７（第２のメモリ）などを含む。ＤＭＡ転送用バッファ領域１６はＳＣＩＦ１１から転送されたデータを一時的に保存するメモリ内のバッファ領域である。アプリ・ドライバ用ワーク領域１７はアプリケーション、ドライバなどのプログラムが使用可能なメモリ内のワーク領域である。
【００２５】
メモリ１８は読み出し専用メモリであり、ＣＰＵ１４が実行するアプリケーション、ドライバなどのプログラム並びにデータを含む。
【００２６】
次に、図１及び図２により、本実施の形態１のシリアル通信装置において、シリアル通信のデータ受信処理フローを説明する。
【００２７】
本実施の形態１では、シリアル通信における受信データの受信ＦＩＦＯからメモリ１５へのデータ転送にＤＭＡＣ１２を使用する。
【００２８】
あらかじめ、受信用ＤＭＡＣ１２の転送回数に１回の受信データ数より多い回数を設定する（ステップＳ１０１）。転送回数は可能な限り大きめに設定するのが望ましい。これにより、ＣＰＵ１４のＤＭＡ転送回数を設定する頻度を抑え、ＣＰＵ１４の処理を軽減することができる。転送回数以外には、転送するデータのアクセスサイズ、転送元アドレス、転送先アドレス、転送開始・停止のトリガ、割り込み信号の通知の有無などを設定する。
【００２９】
データを受信する前に受信用ＤＭＡＣ１２を起動し、データ転送トリガ待ちの状態にする（ステップＳ１０２）。
【００３０】
シリアル通信でデータを受信し、ＳＣＩＦ１１内の受信ＦＩＦＯにデータが格納される（ステップＳ１０３）。
【００３１】
受信ＦＩＦＯ内の受信データ数が受信トリガ設定数以上になったら、ＳＣＩＦ１１からデータ受信用ＤＭＡＣ１２に対して受信ＦＩＦＯデータフルＤＭＡ転送要求が出力される（ステップＳ１０４，Ｓ１０５）。受信トリガ設定数はシリアル通信開始前の初期設定時にＳＣＩＦ１１内で設定される。
【００３２】
ＤＭＡ転送要求をトリガにして、受信ＦＩＦＯからメモリ１５内のＤＭＡ転送用バッファ領域１６にＤＭＡＣ１２で受信データをＤＭＡ転送する（ステップＳ１０６）。
【００３３】
設定したＤＭＡ転送回数未満のデータ数をＤＭＡ転送したが、データ受信が継続されている場合は、ステップＳ１０３へ戻る（ステップＳ１０７，Ｓ１０８）。
【００３４】
設定したＤＭＡ転送回数分のデータ数をＤＭＡ転送した場合は、ＤＭＡ転送終了割り込みをＤＭＡＣ１２がＣＰＵ１４に出す（ステップＳ１０７，Ｓ１０９、図１（ａ））。
【００３５】
設定したＤＭＡ転送回数未満のデータ数をＤＭＡ転送したが、一定期間データ受信が停止した場合は、受信タイムアウト割り込みをＳＣＩＦ１１がＣＰＵ１４に出す（ステップＳ１０８，Ｓ１１０、図１（ｂ））。受信タイムアウト割り込み信号が出し続けとなるのを防止するため、一度受信タイムアウト割り込みを発生させた場合に、次のデータを受信するまでは受信タイムアウト割り込みを発生させない仕組みを設ける。また、シリアル通信においてなんらかのエラーが発生している時は、受信タイムアウト割り込みを発生させない仕組みを設ける。さらに、シリアル通信においてなんらかのエラーが発生している時に、受信タイムアウト割り込みを発生させるか、発生させないかの選択ができる仕組みを設ける。
【００３６】
もし、受信タイムアウトの判定及び通知の機能がなかったら、データ受信が停止したか否かをＣＰＵ１４でＳＣＩＦ１１の受信ＦＩＦＯをポーリングして確認する必要があり、ＣＰＵ１４の処理が増大することとなる。受信タイムアウト割り込み信号発生の処理フローについては、図３及び図４により後述する。
【００３７】
ＤＭＡ転送終了又は受信タイムアウト割り込みをトリガにして、ＤＭＡ転送用バッファ領域１６に転送されたデータをアプリ・ドライバ用ワーク領域１７に転送する（ステップＳ１１１）。
【００３８】
シリアル通信を継続する場合はステップＳ１０１へ戻る（ステップＳ１１２）。
【００３９】
次に、図３により、本実施の形態１のシリアル通信装置において、ＳＣＩＦ１１内部の受信タイムアウト割り込み信号発生部の構成の一例を説明する。
【００４０】
受信タイムアウト割り込み信号発生部は、受信判定部２１、タイマカウンタ２２、タイムアウト設定値２３、カウンタオーバーフロー判定部２４などから構成される。受信判定部２１は外部のシリアル通信機器１３から受信データ信号（ＲＸＤ）を受信しタイマカウンタ２２へカウント開始トリガを出力し、タイマカウンタ２２はカウンタオーバーフロー判定部２４へカウンタの値を出力し、タイムアウト設定値２３はカウンタオーバーフロー判定部２４へタイムアウトの設定値を出力し、カウンタオーバーフロー判定部２４はタイマカウンタがオーバーフローした時ＣＰＵ１４へ受信タイムアウト割り込み信号を出力する。
【００４１】
次に、図３及び図４により、受信タイムアウト割り込み信号発生の処理フローを説明する。
【００４２】
あらかじめ、タイムアウト設定値２３において受信タイムアウト割り込みを発生するまでの期間を設定する（ステップＳ２０１）。この期間を可変にするのであれば、設定用のレジスタが必要となる。設定値は、設定用のレジスタに書き込むかあるいは固定値であってもよい。
【００４３】
データを受信したら、受信が開始されたか否かを受信判定部２１で判定する（ステップＳ２０２，Ｓ２０３）。この判定はデータを受信ごとに毎回判定する。
【００４４】
データ受信が開始されたら、受信判定部２１からタイマカウンタ２２へカウント開始要求の信号を出力する（ステップＳ２０４）。この信号が入ると、タイマカウンタ２２の値はクリアされ、新たにゼロからカウントが開始される（ステップＳ２０５）。
【００４５】
カウンタオーバーフロー判定部２４で、カウンタ値とタイムアウト設定値を比較する（ステップＳ２０６，Ｓ２０７）。
【００４６】
カウンタ値がタイムアウト設定値よりも大きくなったら、カウンタオーバーフロー判定部２４からＣＰＵ１４へ受信タイムアウト割り込み信号を出力する（ステップＳ２０８）。
【００４７】
（実施の形態２）
図５は本発明の実施の形態２においてシリアル通信装置を含むシステムの構成及びデータ受信処理フローを示す図であり、データ受信が停止する前に設定回数のＤＭＡ転送が終了した場合を示す。図６は本実施の形態２において、シリアル通信のデータ受信処理フローを示す図であり、データ受信が停止する前に設定回数のＤＭＡ転送が終了した場合及びデータ受信が途中で停止した場合を示す。
【００４８】
本実施の形態２のシリアル通信装置は、前記実施の形態１のＤＭＡＣ１２として連続転送モード付きＤＭＡＣをデータ転送に使用したものである。連続転送モード付きＤＭＡＣは、前記実施の形態１のＤＭＡ転送用バッファ領域１６において２面のＤＭＡ転送用バッファ１６ａ，１６ｂにデータを交互に転送する。転送データがＤＭＡ転送用バッファの１面を満たすと、ＤＭＡ転送終了割り込みをＣＰＵ１４に出力し、データの転送先をＤＭＡ転送用バッファのもう１面に切り替えるので、ＤＭＡ転送を継続することが可能である。
【００４９】
次に、図５及び図６により、本実施の形態２のシリアル通信装置において、シリアル通信のデータ受信処理フローを説明する。
【００５０】
本実施の形態２では、シリアル通信における受信データの受信ＦＩＦＯからメモリ１５へのデータ転送に２チャネルのＤＭＡＣ１２ａ，１２ｂを使用する。
【００５１】
あらかじめ、受信用の連続転送モード付きＤＭＡＣ１２ａの転送回数に１回の受信データ数より多い回数を設定する（ステップＳ３０１）。これにより、ＣＰＵ１４のＤＭＡ転送回数を設定する頻度を抑え、ＣＰＵ１４の処理が軽減できる。このとき、転送回数は可能な限り大きめに設定するのが望ましい。また、２面のＤＭＡ転送用バッファ１６ａ，１６ｂを転送先として設定する。
【００５２】
データを受信する前に受信用ＤＭＡＣ１２ａ，１２ｂを起動し、データ転送トリガ待ちの状態にする（ステップＳ３０２）。
【００５３】
シリアル通信でデータを受信し、受信ＦＩＦＯにデータが格納される（ステップＳ３０３）。
【００５４】
受信ＦＩＦＯ内の受信データ数が受信トリガ設定数以上になったら、ＳＣＩＦ１１から受信ＦＩＦＯデータフルＤＭＡ転送要求信号がデータ受信用ＤＭＡＣ１２ａに出力される（ステップＳ３０４，Ｓ３０５）。
【００５５】
ＤＭＡ転送要求をトリガにして、受信ＦＩＦＯからメモリ１５内のＤＭＡ転送用バッファ１６ａの領域にＤＭＡＣ１２ａで受信データをＤＭＡ転送する（ステップＳ３０６）。
【００５６】
設定したＤＭＡ転送回数未満のデータ数をＤＭＡ転送用バッファ１６ａにＤＭＡ転送したが、データ受信が継続されている場合は、ステップＳ３０３へ戻る（ステップＳ３０７，Ｓ３０８）。
【００５７】
設定したＤＭＡ転送回数のデータ数をＤＭＡ転送用バッファ１６ａにＤＭＡ転送した場合は、ＤＭＡ転送終了割り込みをＤＭＡＣ１２ａがＣＰＵ１４に出す（ステップＳ３０７，Ｓ３０９）。この時、ＤＭＡ転送は停止中だが、シリアルデータの受信は続いている可能性がある。
【００５８】
設定したＤＭＡ転送回数未満のデータ数をＤＭＡ転送したが、一定期間データ受信が停止した場合は、受信タイムアウト割り込みをＳＣＩＦ１１がＣＰＵ１４に出す（ステップＳ３０８，Ｓ３１０）。受信タイムアウト割り込み信号が出し続けとなるのを防止するため、一度受信タイムアウト割り込みを発生させた場合に、次のデータを受信するまでは受信タイムアウト割り込みを発生させない仕組みを設ける。
【００５９】
ＤＭＡ転送終了または受信タイムアウト割り込みをトリガにして、データの転送先をもう１面のＤＭＡ転送用バッファ１６ｂに切り替えてＤＭＡＣ１２ａを起動する（ステップＳ３１１，Ｓ３０２、図５下段）。ＤＭＡ転送用バッファを別領域に切り替えることでＤＭＡ転送を連続して行うことができる。連続転送モードを使用してＤＭＡ転送を短期間で再開することで、割り込み発生による処理から次のＤＭＡ転送を起動するまでの期間に起こり得るシリアル受信データの取りこぼしを防ぐことができる。
【００６０】
ＤＭＡ転送終了または受信タイムアウト割り込みをトリガにして、ＤＭＡ転送用バッファ１６ａかもう１面のＤＭＡ転送用バッファ１６ｂのどちらかに転送されたシリアル受信データをアプリケーションかドライバが使用可能なワーク領域であるアプリ・ドライバ用ワーク領域１７に転送する（ステップＳ３１２）。転送にはシリアル受信データの転送で使用したＤＭＡＣ１２ａとは別チャネルのＤＭＡＣ１２ｂを使用する。
【００６１】
シリアル通信を継続する場合はステップＳ３０１へ戻る（ステップＳ３１３）。
【００６２】
従って、本実施の形態２のシリアル通信装置によれば、２面のＤＭＡ転送用バッファ１６ａ，１６ｂを交互に切り替えて受信データを転送するので、割り込み発生による処理から次のＤＭＡ転送を起動するまでの期間に起こり得るシリアル受信データの取りこぼしを防止することができる。
【００６３】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００６４】
例えば、前記実施の形態においては、カーナビゲーションシステムなどのシリアル通信を多用するシステムについて説明したが、これに限定されるものではなく、他のシリアル通信を使用するシステムについても適用可能である。
【００６５】
【発明の効果】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下のとおりである。
【００６６】
（１）シリアル通信におけるデータ受信をＣＰＵに代えてＤＭＡコントローラで行い、またＣＰＵがＤＭＡコントローラの転送回数を設定する頻度も抑えられるため、ＣＰＵの負荷を軽減することができる。
【００６７】
（２）シリアル通信におけるデータ受信でＣＰＵの負荷が軽減されるため、シリアル通信インターフェースのチャネル数を増やした場合であっても、ＣＰＵ過負荷によるシステムの誤動作を防止することができる。
【００６８】
（３）シリアル通信におけるデータ受信が停止しデータ転送が実施されない場合にタイムアウト割り込みを発生させるので、受信したデータを確実に取り込むことができる。
【００６９】
（４）タイムアウト割り込みを発生させる条件を設定したので、無用なタイムアウト割り込み発生を防ぐことができ、ＣＰＵの負荷を軽減することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１においてシリアル通信装置を含むシステムの構成及びデータ受信処理フローを示す図であり、（ａ）はデータ受信が停止する前に設定回数のＤＭＡ転送が終了した場合、（ｂ）はデータ受信が途中で停止した場合を示す。
【図２】本発明の実施の形態１においてシリアル通信のデータ受信処理フローを示すフローチャートである。
【図３】本発明の実施の形態１においてＳＣＩＦ内部の受信タイムアウト割り込み信号発生部の構成及び処理フローを示す図である。
【図４】本発明の実施の形態１においてＳＣＩＦ内部の受信タイムアウト割り込み信号発生部の処理フローを示すフローチャートである。
【図５】本発明の実施の形態２においてシリアル通信装置を含むシステムの構成及びデータ受信処理フローを示す図であり、データ受信が停止する前に設定回数のＤＭＡ転送が終了した場合とデータ受信が途中で停止した場合を示す。
【図６】本発明の実施の形態２においてシリアル通信のデータ受信処理フローを示すフローチャートである。
【符号の説明】
１１    シリアルインターフェース（ＳＣＩＦ）
１２，１２ａ，１２ｂ    ＤＭＡコントローラ（ＤＭＡＣ）
１３    シリアル通信機器
１４    ＣＰＵ
１５，１８    メモリ
１６    第１のメモリ（ＤＭＡ転送用バッファ領域）
１６ａ，１６ｂ    第１のメモリ（ＤＭＡ転送用バッファ）
１７    第２のメモリ（アプリ・ドライバ用ワーク領域）
２１    受信判定部
２２    タイマカウンタ
２３    タイムアウト設定値
２４    カウンタオーバーフロー判定部
【図１】
2004295701.tif 000003
【図２】
2004295701.tif 000004
【図３】
2004295701.tif 000005
【図４】
2004295701.tif 000006
【図５】
2004295701.tif 000007
【図６】
2004295701.tif 000008