(57)【要約】【課題】送信又は受信するデータ列の長さに関わらず最小の割込み回数でCPUが転送制御を行うことができる通信インターフェース装置を提供する。【解決手段】送信DMA３０は、メモリ２に一時記憶されたデータをメモリ２から送信バッファ３２へ転送させると共に、送信バッファ３２に記憶されるデータの終端に対応する指標を検出する。この指標が検出されたときにCPU１に対して割込み信号が発生する。受信DMA３１は、受信バッファ３３に記憶されたデータをメモリ２へ転送させると共に、受信バッファ３３から読み出されるデータの終端に対応する指標を検出する。この指標が検出されたときにCPU１に対して割込み信号が発生する。【選択図】図１
2008310486.tif 000002
【特許請求の範囲】
【請求項１】
CPUと外部デバイスとの間のデータ転送を制御する通信インターフェース装置であって、
前記CPUから前記外部デバイスに転送される第１のデータ及び前記外部デバイスから前記CPUに転送される第２のデータを一時記憶するメモリと、
前記外部デバイスへ送信される前記第１のデータを一時記憶する第１のバッファと、
前記メモリに一時記憶された前記第１のデータを前記メモリから前記第１のバッファへ転送させる第１の転送制御部と、
前記第１のバッファに記憶される前記第１のデータの終端に対応する第１の指標を検出する第１の指標検出部と、
前記第１の指標が検出されたときに前記CPUに対して第１の割込み信号を発生する第１の割込み発生部と、
前記外部デバイスから受信した前記第２のデータを一時記憶する第２のバッファと、
前記第２のバッファに記憶された前記第２のデータを前記メモリへ転送させる第２の転送制御部と、
前記第２のバッファから読み出される前記第２のデータの終端に対応する第２の指標を検出する第２の指標検出部と、
前記第２の指標が検出されたときに前記CPUに対して第２の割込み信号を発生する第２の割込み発生部と、
を有する通信インターフェース装置。
【請求項２】
前記CPUと第１及び第２のバッファとの間のバス幅をM、前記外部デバイスが扱うデータ幅をN（M≠N）としたときに、前記CPUはM≧2Nを単位として前記メモリにデータを格納することを特徴とする請求項１に記載の通信インターフェース装置。
【請求項３】
前記CPUから転送される前記第１のデータの転送先を前記メモリと前記第１のバッファの間で切り替える第１のセレクタと、
前記第１のバッファへの前記第１のデータの格納量が所定量を超えるまでは前記第１のバッファに前記第１のデータを転送し、前記第１のバッファへの前記第１のデータの格納量が所定量を越えてからは前記メモリに前記第１のデータを転送するように前記第１のセレクタを制御する送信制御部と、
を有することを特徴とする請求項1または請求項２に記載の通信インターフェース装置。
【請求項４】
前記第１のバッファへ転送される前記第１のデータの転送元を前記CPUと前記メモリの間で切り替える第２のセレクタを有し、
前記送信制御部は、前記CPUから出力される前記第１のデータに引き続いて、前記メモリに記憶された前記第１のデータを前記第１のバッファへ転送するように前記第２のセレクタを制御する
ことを特徴とする請求項３に記載の通信インターフェース装置。
【請求項５】
前記第２のバッファへの前記第２のデータの格納量が所定量を超えたときに前記第２のデータを前記メモリに格納する受信制御部を有することを特徴とする請求項1〜請求項４のいずれかに記載の通信インターフェース装置。
【請求項６】
前記CPUへ転送される前記第２のデータの転送元を前記第２のバッファと前記メモリとの間で切り替える第３のセレクタをさらに有し、前記受信制御部は、前記第２のバッファに一時記憶された前記第２のデータに引き続いて、前記メモリに記憶された前記第２のデータを前記CPUへ転送するように前記第３のセレクタを制御することを特徴とする請求項５に記載の通信インターフェース装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、CPUと外部デバイスとの間のデータ転送を制御する通信インターフェース装置に関する。
【背景技術】
【０００２】
各種電子機器の中にはASIC（特定用途向けIC）を備えたものがある。ASIC等の半導体集積回路は通信インターフェース装置を有し、この通信インターフェース装置を介して、機器内に設けられる他のデバイスや外部のPC等との間でデータの授受を行う。このような通信インターフェース装置として、メモリからシリアル通信用LSIへデータ転送を行うDMA（Direct Memory Access）と、シリアル通信用LSIからメモリへデータ転送を行うDMAとを備えることにより、データ処理単位（1バイト）毎の割込み処理若しくはステータスチェックによるCPU負荷の増大を防ぐものがある（例えば特許文献１参照）。
【特許文献１】特開平６−８９２４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特許文献１には、一回に送信又は受信するデータ列の長さが一回に転送可能な最大量よりも長い場合に、一回に転送可能な最大量の長さでデータ列を分割すると、分割したデータ列毎に割込みが発生してCPUの処理能力を低下させるという観点については記載されていない。また、CPUの持つデータバスの幅（ビット幅、例えば32ビット）が、外部デバイスの扱うデータ処理単位（例えば8ビット）と一致しない場合におけるデータ転送効率の低下という観点については記載されていない。
【０００４】
本発明は、上述した課題に鑑みてなされたものであって、送信又は受信するデータ列の長さに関わらず最小の割込み回数でCPUが転送制御を行うことができる通信インターフェース装置を提供することを第１の目的とする。また、本発明は、CPUのデータバス幅がデータの処理単位と一致しない場合におけるデータ転送効率の低下を防ぐことができる通信インターフェース装置を提供することを第２の目的とする。
【課題を解決するための手段】
【０００５】
本発明は、上記の課題を解決するためになされたもので、CPUと外部デバイスとの間のデータ転送を制御する通信インターフェース装置であって、前記CPUから前記外部デバイスに転送される第１のデータ及び前記外部デバイスから前記CPUに転送される第２のデータを一時記憶するメモリと、前記外部デバイスへ送信される前記第１のデータを一時記憶する第１のバッファ（図４の送信バッファ３２に対応）と、前記メモリに一時記憶された前記第１のデータを前記メモリから前記第１のバッファへ転送させる第１の転送制御部（図４のDMA制御部３０００に対応）と、前記第１のバッファに記憶される前記第１のデータの終端に対応する第１の指標を検出する第１の指標検出部（図４の比較部３００５に対応）と、前記第１の指標が検出されたときに前記CPUに対して第１の割込み信号を発生する第１の割込み発生部（図４のAND回路３０１１に対応）と、前記外部デバイスから受信した前記第２のデータを一時記憶する第２のバッファ（図４の受信バッファ３３に対応）と、前記第２のバッファに記憶された前記第２のデータを前記メモリへ転送させる第２の転送制御部（図５のDMA制御部３０２０に対応）と、前記第２のバッファから読み出される前記第２のデータの終端に対応する第２の指標を検出する第２の指標検出部（図５の比較部３０２５に対応）と、前記第２の指標が検出されたときに前記CPUに対して第２の割込み信号を発生する第２の割込み発生部（図５のAND回路３０３１に対応）とを有する通信インターフェース装置である。
【０００６】
また、本発明の通信インターフェース装置において、前記CPUと第１及び第２のバッファとの間のバス幅をM、前記外部デバイスが扱うデータ幅をN（M≠N）としたときに、前記CPUはM≧2Nを単位として前記メモリにデータを格納することを特徴とする。
【０００７】
また、本発明の通信インターフェース装置は、前記CPUから転送される前記第１のデータの転送先を前記メモリと前記第１のバッファの間で切り替える第１のセレクタ（図６のセレクタ３８に対応）と、前記第１のバッファへの前記第１のデータの格納量が所定量を超えるまでは前記第１のバッファに前記第１のデータを転送し、前記第１のバッファへの前記第１のデータの格納量が所定量を越えてからは前記メモリに前記第１のデータを転送するように前記第１のセレクタを制御する送信制御部（図６の送信バッファアクセス制御部３５に対応）とを有することを特徴とする。
【０００８】
また、本発明の通信インターフェース装置は、前記第１のバッファへ転送される前記第１のデータの転送元を前記CPUと前記メモリの間で切り替える第２のセレクタ（図６のセレクタ３９に対応）を有し、前記送信制御部は、前記CPUから出力される前記第１のデータに引き続いて、前記メモリに記憶された前記第１のデータを前記第１のバッファへ転送するように前記第２のセレクタを制御することを特徴とする。
【０００９】
また、本発明の通信インターフェース装置は、前記第２のバッファへの前記第２のデータの格納量が所定量を超えたときに前記第２のデータを前記メモリに格納する受信制御部（図６の受信バッファアクセス制御部３６に対応）を有することを特徴とする。
【００１０】
また、本発明の通信インターフェース装置は、前記CPUへ転送される前記第２のデータの転送元を前記第２のバッファと前記メモリとの間で切り替える第３のセレクタ（図６のセレクタ３７に対応）をさらに有し、前記受信制御部は、前記第２のバッファに一時記憶された前記第２のデータに引き続いて、前記メモリに記憶された前記第２のデータを前記CPUへ転送するように前記第３のセレクタを制御することを特徴とする。
【００１１】
上記において、括弧で括った部分の記述は、後述する本発明の実施形態と本発明の構成要素とを便宜的に対応付けるためのものであり、この記述によって本発明の内容が限定されるわけではない。
【発明の効果】
【００１２】
本発明によれば、データの終端に対応する指標が検出されたときにCPUに対する割込み信号が発生するので、送信又は受信するデータ列の長さに関わらず最小の割込み回数でCPUが転送制御を行うことができるという効果が得られる。また、本発明によれば、CPUのデータバス幅Mがデータの処理単位Nと一致しない場合に、CPUがM≧2Nを単位としてメモリにデータを格納することによって、データ転送の回数が低減するので、データ転送効率の低下を防ぐことができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照し、本発明の実施形態を説明する。
（第１の実施形態）
まず、本発明の第１の実施形態を説明する。図１は、本実施形態による通信インターフェース装置の構成を示している。本通信インターフェース装置は、CPU１、メモリ２（例えばSDRAM）、シリアルI/F３（シリアルインターフェース）、及びバス４を備えている。
【００１４】
CPU１は、汎用レジスタ１０、演算器１１、ロード・ストアユニット１２、パッキング回路１３、及びセレクタ１４を備えている。汎用レジスタ１０は、CPU１とシリアルI/F３の送信バッファ３２及び受信バッファ３３との間のバス幅に対応した数だけ設けられる。演算器１１は、汎用レジスタ１０に格納されている値を用いて演算を実行する。演算結果は汎用レジスタ１０に格納される。
【００１５】
ロード・ストアユニット１２は、シリアル通信で送信されるデータ以外の転送（CPU１からメモリ２へのデータ転送及びメモリ２からCPU１へのデータ転送）を実行する。パッキング回路１３は、CPU１から出力されるシリアル通信用の8ビットのデータを32ビットのデータに変換する。セレクタ１４は、ロード・ストアユニット１２とパッキング回路１３のうち一方を選択してメモリ２と接続する。
【００１６】
シリアルI/F３は、送信DMA３０、受信DMA３１、送信バッファ３２、受信バッファ３３、および各種のレジスタ３４を備えている。送信DMA３０はメモリ２から外部デバイスへのデータ転送を制御する。受信DMA３１は外部デバイスからメモリ２へのデータ転送を制御する。送信バッファ３２及び受信バッファ３３はそれぞれ送信用、受信用のバッファメモリである。レジスタ３４は、各種動作を制御するための値を記憶する。シリアルI/F３には図１では図示していない構成も含まれるが、その詳細は図４及び図５を参照して後述する。
【００１７】
次に、パッキング回路１３の構成及び動作を説明する。図２は、図１に示したパッキング回路１３の構成を示している。パッキング回路１３は、シフトレジスタ１３００，１３０１，１３０２、セレクタ１３０３、アドレス記憶部１３０４、インクリメント部１３０５、比較部１３０６、定数レジスタ１３０７、及びバスI/F１３０８（バスインターフェース）を備えている。
【００１８】
CPU１が備える汎用レジスタ１０から出力された8ビット単位のデータはシフトレジスタ１３００，１３０１，１３０２によって順次シフトされ、各シフトレジスタに格納されているデータがバスI/F１３０８へ出力される。また、データが格納されるメモリ２のアドレスが汎用レジスタ１０から出力され、セレクタ１３０３に入力される。セレクタ１３０３は、汎用レジスタ１０から出力されたアドレスと、インクリメント部１３０５から出力されたアドレスとのうち一方を選択して出力する。
【００１９】
セレクタ１３０３から出力されたアドレスはアドレス記憶部１３０４に一時記憶された後、出力される。アドレス記憶部１３０４から出力されたアドレスはインクリメント部１３０５及びバスI/F１３０８へ出力される。また、アドレス記憶部１３０４から出力されたアドレスの下位2ビットが比較部１３０６へ出力される。インクリメント部１３０５は、アドレス記憶部１３０４から出力されたアドレスをインクリメント（１を加算）してセレクタ１３０３へ出力する。比較部１３０６は、アドレス記憶部１３０４から出力されたアドレスの下位2ビットと、定数レジスタ１３０７から出力される定数‘3’とを比較し、比較結果に応じたイネーブル信号（‘0’または‘1’）をバスI/F１３０８へ出力する。バスI/F１３０８は、バス４と接続するインターフェースである。
【００２０】
図２に示したパッキング回路１３は例えば以下のように動作する。以下では、各8ビットのデータＡ，Ｂ，Ｃ，Ｄが汎用レジスタ１０から出力されるものとする。また、汎用レジスタ１０から出力される一連のデータ列の先頭のデータが格納されるメモリ２のアドレスは４の倍数であるものとする。先頭のデータＡが格納されるメモリ２のアドレスが汎用レジスタ１０から出力され、セレクタ１３０３に入力される。セレクタ１３０３は最初はこのアドレスを出力する。インクリメント部１３０５からインクリメント後のアドレス（データＢが格納されるメモリ２のアドレス）が入力されると、セレクタ１３０３はインクリメント後のアドレスを出力する。データＡのアドレスが出力された以降はデータＢ，Ｃ，Ｄのアドレスがセレクタ１３０３から順次出力される。
【００２１】
アドレス記憶部１３０４からデータＤのアドレスが出力された場合、その下位2ビットと‘3’が一致するので、比較部１３０６からイネーブル信号‘1’がバスI/F１３０８へ出力される。このとき、シフトレジスタ１３０２の出力はデータＡであり、シフトレジスタ１３０１の出力はデータＢであり、シフトレジスタ１３００の出力はデータＣであり、汎用レジスタ１０の出力はデータＤである。したがって、アドレスの下位2ビットと‘3’が一致したとき、バスI/F１３０８には32ビット分のデータが入力されていることになる。このとき、バスI/F１３０８はこれらの32ビット分のデータをバス４へ出力する。
【００２２】
図３は、パッキング回路１３の他の構成例を示している。図２に示した構成と比較して、ビットマスク部１３０９、加算部１３１０、セレクタ１３１１、比較部１３１２、定数レジスタ１３１３、及びOR回路１３１４が追加されている。
【００２３】
ビットマスク部１３０９は、アドレス記憶部１３０４から出力されたアドレスの下位2ビットをマスクして出力する。加算部１３１０は、ビットマスク部１３０９から出力されたアドレスに‘4’を加算して出力する。比較部１３１２は、汎用レジスタ１０から出力されたデータと、定数レジスタ１３１３から出力される定数‘0’とを比較し、比較結果に応じた信号（‘0’または‘1’）をセレクタ１３１１及びOR回路１３１４へ出力する。
【００２４】
セレクタ１３１１は、比較部１３１２から出力された信号に基づいて、インクリメント部１３０５から出力されたアドレスと、加算部１３１０から出力されたアドレスとのうち一方を選択して出力する。セレクタ１３１１から出力されたアドレスはセレクタ１３０３に入力される。OR回路１３１４は、比較部１３０６から出力された値と、比較部１３１２から出力された値とのOR演算の結果（‘0’または‘1’）をイネーブル信号としてバスI/F１３０８へ出力する。また、図示していないが、バスI/F１３０８に入力される４本のデータ信号線毎に、データの有効・無効を示すフラグが用意されている。バスI/F１３０８は、フラグが有効を示しているデータ信号線から入力されたデータのみをバス４へ出力する。
【００２５】
図３に示したパッキング回路１３は例えば以下のように動作する。以下では、各8ビットのデータＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，‘0’（NULL）が汎用レジスタ１０から出力されるものとする。一連のデータ列の終端に付加されている‘0’は、終端であることを示す指標である。また、汎用レジスタ１０から出力される一連のデータ列の先頭のデータが格納されるメモリ２のアドレスは４の倍数であるものとする。
【００２６】
データＡ，Ｂ，Ｃ，Ｄがパッキング回路１３に入力されたときの動作は前述した動作と同様である。ただし、このとき比較部１３１２から出力される信号は‘0’であり、このときセレクタ１３１１は、インクリメント部１３０５から出力されたアドレスを出力する。
【００２７】
また、データの有効・無効を示すフラグは初期状態では全て無効であり、データＡが入力されたときにデータＡのフラグが有効となる。続いて、データＢが入力されたときにはデータＡ，Ｂのフラグが有効となり、さらにデータＣが入力されたときにはデータＡ，Ｂ，Ｃのフラグが有効となる。データＤが入力されたときには全てのデータＡ，Ｂ，Ｃ，Ｄのフラグが有効となる。このとき、アドレス記憶部１３０４から出力されたアドレスの下位2ビットと‘3’が一致するので、比較部１３０６から‘1’が出力され、バスI/F１３０８にはイネーブル信号‘1’が入力される。このとき、バスI/F１３０８は32ビットのデータＡ，Ｂ，Ｃ，Ｄをバス４へ出力する。データの出力後、データの有効・無効を示すフラグは全て無効に設定される。
【００２８】
続いて、データＥ，Ｆ，‘0’がパッキング回路１３に順次入力され、‘0’が入力されたとき、データの終端を検出したことを示す信号‘1’が比較部１３１２から出力される。このとき、バスI/F１３０８にはデータＤ，Ｅ，Ｆ，‘0’が入力されているが、データＤのフラグが無効で、データＥ，Ｆ，‘0’のフラグが有効となっている。このとき、バスI/F１３０８はデータＥ，Ｆ，‘0’ と任意のデータ（Don't Care）を出力する。また、セレクタ１３１１は、加算部１３１０から出力されたアドレスをセレクタ１３０３へ出力する。セレクタ１３０３はこのアドレスをアドレス記憶部１３０４へ出力する。このアドレスは４の倍数であり、次に汎用レジスタ１０から出力されるデータ列の先頭データのアドレスを示すことになる。
【００２９】
次に、シリアルI/F３の構成及び動作を説明する。図４は、シリアルI/F３が備える構成のうち、データの送信に係る構成のみを示している。シリアルI/F３は、送信バッファ３２、DMA制御部３０００、バスI/F３００１（バスインターフェース）、ビット変換部３００２、シリアルI/F３００４（シリアルインターフェース）、比較部３００５、定数レジスタ３００６、送信先頭アドレスレジスタ３００７、送信データ量レジスタ３００８、割込みステータスレジスタ３００９、割込みイネーブルレジスタ３０１０、及びAND回路３０１１を備えている。
【００３０】
DMA制御部３０００はメモリ２から外部デバイスへのデータ転送を制御する。バスI/F３００１は、バス４と接続するインターフェースである。バスI/F３００１にはバス４から32ビットのデータが入力される。ビット変換部３００２は32ビットのデータを8ビットのデータ列に変換する。送信バッファ３２は、ビット変換部３００２によってビット変換が施された送信対象のデータ列を一時記憶する。シリアルI/F３００４は、外部デバイスと接続するインターフェースである。比較部３００５は、ビット変換部３００２から順次出力されるデータと、定数レジスタ３００６から出力される定数‘0’とを比較し、比較結果に応じた信号（‘0’または‘1’）を出力する。
【００３１】
送信先頭アドレスレジスタ３００７は、送信対象のデータが格納されているメモリ２の先頭アドレスを記憶する。送信データ量レジスタ３００８は、送信対象のデータ量を記憶する。割り込みステータスレジスタ３００９は、CPU１に対する割込み信号を発生する状態であるか否かを示す値を記憶する。割込みイネーブルレジスタ３０１０は、割込みの許可・不許可を示す値を記憶する。AND回路３０１１は、割込みステータスレジスタ３００９から出力された値と、割込みイネーブルレジスタ３０１０から出力された値とのAND演算の結果を割込み信号（‘0’または‘1’）としてCPU１へ出力する。
【００３２】
図４に示したシリアルI/F３は以下のように動作する。CPU１は送信対象のデータをメモリ２へ出力すると共に、各レジスタに値を格納する。すなわち、CPU１は送信先頭アドレスレジスタ３００７にデータの先頭アドレスを格納し、送信データ量レジスタ３００８にデータ量を格納し、割込みステータスレジスタ３００９に‘0’を格納し、割込みを許可するため割込みイネーブルレジスタ３０１０に‘1’を格納する。
【００３３】
続いて、DMA制御部３０００が起動し、データ転送制御を開始する。DMA制御部３０００は、送信バッファ３２の空き容量に応じて、データ転送の許可・不許可を示すイネーブル信号をバスI/F３００１へ出力し、送信バッファ３２へのデータ転送を制御する。送信バッファ３２へのデータ転送を許可する場合、DMA制御部３０００は、受信先頭アドレスレジスタ３００７に格納されているアドレスに基づいてアドレス信号を生成し、バスI/F３００１へ出力する。このアドレス信号に基づいてメモリ２からデータが転送され、バスI/F３００１に入力される。
【００３４】
バスI/F３００１に入力された32ビットのデータはビット変換部３００２によって8ビットのデータ列に変換され、送信バッファ３２に順次格納される。データの格納はDMA制御部３０００によって制御される。比較部３００５は、データの終端を示す‘0’が入力されるまでは信号‘0’を出力するが、‘0’が入力されたときに信号‘1’を出力する。DMA制御部３０００は、比較部３００５から信号‘1’が出力されたときに割込みステータスレジスタ３００９に‘1’を格納する。このとき、AND回路３０１１から割込み信号‘1’が出力され、CPU１に対して割込みが発生する。DMA制御部３０００は、送信バッファ３２に格納されているデータ量が、送信データ量レジスタ３００８に格納されているデータ量に達したときに、ビット変換部３００２へリセット信号を出力し、ビット変換部３００２の動作を停止させる。
【００３５】
図５は、シリアルI/F３が備える構成のうち、データの受信に係る構成のみを示している。シリアルI/F３は、受信バッファ３３、DMA制御部３０２０、バスI/F３０２１（バスインターフェース）、ビット変換部３０２２、シリアルI/F３０２４（シリアルインターフェース）、比較部３０２５、定数レジスタ３０２６、受信先頭アドレスレジスタ３０２７、受信データ量レジスタ３０２８、割込みステータスレジスタ３０２９、割込みイネーブルレジスタ３０３０、及びAND回路３０３１を備えている。
【００３６】
DMA制御部３０２０は外部デバイスからメモリ２へのデータ転送を制御する。バスI/F３０２１は、バス４と接続するインターフェースである。バスI/F３０２１は、ビット変換部３０２２から出力される32ビットのデータをバス４へ出力する。ビット変換部３０２２は8ビットのデータ列を32ビットのデータに変換する。受信バッファ３３は、シリアルI/F３０２４を介して外部デバイスから受信されたデータを一時記憶する。シリアルI/F３０２４は、外部デバイスと接続するインターフェースである。比較部３０２５は、ビット変換部３０２２から順次出力されるデータと、定数レジスタ３０２６から出力される定数‘0’とを比較し、比較結果に応じた信号（‘0’または‘1’）を出力する。
【００３７】
受信先頭アドレスレジスタ３０２７は、受信対象のデータが格納されたメモリ２の先頭アドレスを記憶する。受信データ量レジスタ３０２８は、受信されたデータ量を記憶する。割り込みステータスレジスタ３０２９は、CPU１に対する割込み信号を発生する状態であるか否かを示す値を記憶する。割込みイネーブルレジスタ３０３０は、割込みの許可・不許可を示す値を記憶する。AND回路３０３１は、割込みステータスレジスタ３０２９から出力された値と、割込みイネーブルレジスタ３０３０から出力された値とのAND演算の結果を割込み信号（‘0’または‘1’）としてCPU１へ出力する。
【００３８】
図５に示したシリアルI/F３は以下のように動作する。CPU１は割込みステータスレジスタ３０２９に‘0’を格納し、割込みを許可するため割込みイネーブルレジスタ３０３０に‘1’を格納する。続いて、DMA制御部３０２０が起動し、データ転送制御を開始する。シリアルI/F３０２１を介して外部デバイスから入力された8ビットのデータは受信バッファ３３に順次格納される。受信バッファ３３からのデータの読出しはDMA制御部３０２０によって制御される。受信バッファ３３から出力された8ビットのデータ列はビット変換部３０２２によって32ビットのデータに変換され、バスI/F３０２１へ出力される。
【００３９】
DMA制御部３０２０は、受信バッファ３３に格納されているデータ量に応じて、データ転送の許可・不許可を示すイネーブル信号をバスI/F３０２１へ出力し、メモリ２へのデータ転送を制御する。メモリ２へのデータ転送を許可する場合、DMA制御部３０２０はアドレス信号を生成し、バスI/F３０２１へ出力する。このアドレス信号に基づいてバスI/F３０２１からメモリ２へデータが転送される。また、DMA制御部３０２０は、先頭のデータが格納されたメモリ２のアドレスを受信先頭アドレスレジスタ３０２７に格納する。
【００４０】
比較部３０２５は、データの終端を示す‘0’が入力されるまでは信号‘0’を出力するが、‘0’が入力されたときに信号‘1’を出力する。DMA制御部３０２０は、比較部３０２５から信号‘1’が出力されたときに割込みステータスレジスタ３０２９に‘1’を格納する。このとき、AND回路３０３１から割込み信号‘1’が出力され、CPU１に対して割込みが発生する。
【００４１】
DMA制御部３０２０は、比較部３０２５から信号‘1’が出力されたときに、そのときまでに受信バッファ３３から出力されたデータの量を受信データ量レジスタ３０２８に格納する。また、DMA制御部３０２０はビット変換部３０２２へリセット信号を出力し、ビット変換部３０２２の動作を停止させる。CPU１は、受信先頭アドレスレジスタ３０２７に格納されているメモリ２のアドレスを読出しの開始アドレスとして、受信データ量レジスタ３０２８に格納されているデータ量に対応する分のデータをメモリ２から読み出す。
【００４２】
上述したように、本実施形態によれば、データの終端に対応する指標が検出されたときにCPU１に対する割込み信号‘1’が発生するので、送信又は受信するデータ列の長さに関わらず最小の割込み回数でCPU１が転送制御を行うことができる。また、CPU１のデータバス幅（Mビットとする）が外部デバイスのデータの処理単位（Nビットとする）と一致しない場合（M≠Nで特にM≧2N）に、CPU１がパッキング回路１３によりNビットのデータ列をMビットのデータに変換し、Mビット毎にメモリ２にデータを格納することによって、データ転送の回数が低減するので、データ転送効率の低下を防ぐことができる。MとNの関係は本実施形態ではM=32、N=8としたが、M=16、N=8等としてもよい。いずれにせよ、M≧2Nの関係が成り立てばよい。
【００４３】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。図６は、本実施形態による通信インターフェース装置の構成を示している。図６において、送信バッファアクセス制御部３５は、送信バッファ３２への送信データの転送を制御する。受信バッファアクセス制御部３６は、受信バッファ３３からの受信データの転送を制御する。セレクタ３７，３８，３９，４０はそれぞれデータの転送元又は転送先を選択する。シリアル通信以外の処理に係るデータもバス４を介して転送されるので、シリアル通信に係るデータの転送でバス４が占有されるのを極力減らすため、本実施形態による通信インターフェース装置は以下のように動作する。
【００４４】
まず、CPU１から出力されたデータを外部デバイスへ転送するときの通信インターフェース装置全体の動作を説明する。図７は、データ送信に係る通信インターフェース装置の状態遷移を示している。初期状態ＳＴ１００の後、送信バッファ３２のアドレスへのストア命令がCPU１によって発行されると、CPU１から出力されたデータが送信バッファ３２へ転送される状態ＳＴ１０１となる。送信バッファ３２に空きがある状態で送信バッファ３２のアドレスへのストア命令が発行されたときの通信インターフェース装置の状態は状態ＳＴ１０１のままである。
【００４５】
送信バッファ３２に格納されているデータ量が所定量以下である状態ＳＴ１０１において、送信バッファアクセス制御部３５はセレクタ３８，３９を以下のように制御する。すなわち、セレクタ３８はデータ転送先をバッファ３２に設定し、セレクタ３９はデータ転送元をCPU１に設定する。これによって、CPU１から出力されたデータは直接送信バッファ３２へ転送される（図８参照）。
【００４６】
送信バッファ３２に空きがない状態で送信バッファ３２のアドレスへのストア命令が発行されたときには、CPU１から出力されたデータがメモリ２へ転送される状態ＳＴ１０２となる。送信バッファ３２に格納されているデータ量が所定量を超えている状態ＳＴ１０２において、送信バッファアクセス制御部３５は送信バッファ３２からデータを出力させる。また、送信バッファアクセス制御部３５はセレクタ３８のデータ転送先をメモリ２に設定する。これによって、CPU１から出力されたデータはメモリ２へ転送される（図９参照）。
【００４７】
送信バッファ３２が空になったときには、CPU１からメモリ２へデータが転送されると共に、メモリ２から送信バッファ３２へデータが転送される状態ＳＴ１０３となる。送信バッファ３２に格納されているデータ量が０になった状態ＳＴ１０３において、送信バッファアクセス制御部３５はセレクタ３９のデータ転送元をメモリ２に設定し、送信DMA３０を起動する。送信DMA３０は、メモリ２に格納されたデータを送信バッファ３２へ転送する（図１０参照）。
【００４８】
状態ＳＴ１０３で送信バッファ３２がデータで満杯となったときには状態ＳＴ１０２となる。また、状態ＳＴ１０３でメモリ２が空になったときには状態ＳＴ１０１となる。
【００４９】
次に、外部デバイスから受信されたデータをCPU１へ転送するときの通信インターフェース装置全体の動作を説明する。図１１は、データ受信に係る通信インターフェース装置の状態遷移を示している。初期状態ＳＴ２００の後、外部デバイスから受信されたデータが受信バッファ３３に格納され、受信バッファ３３からCPU１へデータが転送される状態ＳＴ２０１となる。受信バッファ３３に空きがある状態でデータが受信されたときの通信インターフェース装置の状態は状態ＳＴ２０１のままである。受信バッファ３３に格納されているデータ量が所定量以下である状態ＳＴ２０１において、受信バッファアクセス制御部３６はセレクタ４０のデータ転送先を受信バッファ３３に設定すると共に、セレクタ３７のデータ転送元を受信バッファ３３に設定する。これによって、受信されたデータがCPU１へ転送される（図１２参照）。
【００５０】
受信バッファ３３に空きがない状態でデータが受信されたときには、受信されたデータが受信バッファ３３を介さずにメモリ２へ転送される状態ＳＴ２０２となる。受信バッファ３３に格納されているデータ量が所定量を超えている状態ＳＴ２０２において、受信バッファアクセス制御部３６はセレクタ３７のデータ転送元を受信バッファ３３に設定する。これによって、受信バッファ３３からCPU１へデータが転送される。また、受信バッファアクセス制御部３６はセレクタ４０のデータ転送先をメモリ２に設定し、受信DMA３１を起動する。受信DMA３１は、受信されたデータをメモリ２へ転送する（図１３参照）。
【００５１】
受信バッファ３３が空になったときには、受信されたデータが受信バッファ３３に格納されると共に、メモリ２からCPU１へデータが転送される状態ＳＴ２０３となる。受信バッファ３３に格納されているデータ量が０になった状態ＳＴ２０３において、受信バッファアクセス制御部３６はセレクタ４０のデータ転送先を受信バッファ３３に設定する。これによって、受信されたデータが受信バッファ３３に格納される。また、受信バッファアクセス制御部３６はセレクタ３７のデータ転送元をメモリ２に設定する。これによって、メモリ２に格納されたデータがCPU１へ転送される（図１４参照）。
【００５２】
上述したように、本実施形態によれば、シリアル通信に係るデータ転送を効率的に行うことができ、シリアル通信に係るデータの転送でバス４が占有されるのを極力減らすことができる。
【００５３】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【図面の簡単な説明】
【００５４】
【図１】本発明の第１の実施形態による通信インターフェース装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態による通信インターフェース装置が備えるパッキング回路の構成を示すブロック図である。
【図３】本発明の第１の実施形態による通信インターフェース装置が備えるパッキング回路の構成を示すブロック図である。
【図４】本発明の第１の実施形態による通信インターフェース装置が備えるシリアルI/Fの構成を示すブロック図である。
【図５】本発明の第１の実施形態による通信インターフェース装置が備えるシリアルI/Fの構成を示すブロック図である。
【図６】本発明の第２の実施形態による通信インターフェース装置の構成を示すブロック図である。
【図７】本発明の第２の実施形態による通信インターフェース装置の状態遷移図である。
【図８】本発明の第２の実施形態による通信インターフェース装置のデータ送信に係る動作を説明するためのブロック図である。
【図９】本発明の第２の実施形態による通信インターフェース装置のデータ送信に係る動作を説明するためのブロック図である。
【図１０】本発明の第２の実施形態による通信インターフェース装置のデータ送信に係る動作を説明するためのブロック図である。
【図１１】本発明の第２の実施形態による通信インターフェース装置の状態遷移図である。
【図１２】本発明の第２の実施形態による通信インターフェース装置のデータ受信に係る動作を説明するためのブロック図である。
【図１３】本発明の第２の実施形態による通信インターフェース装置のデータ受信に係る動作を説明するためのブロック図である。
【図１４】本発明の第２の実施形態による通信インターフェース装置のデータ受信に係る動作を説明するためのブロック図である。
【符号の説明】
【００５５】
１・・・CPU、２・・・メモリ、３・・・シリアルI/F、４・・・バス、１０・・・汎用レジスタ、１１・・・演算器、１２・・・ロード・ストアユニット、１３・・・パッキング回路、１４・・・セレクタ、３０・・・送信DMA、３１・・・受信DMA、３２・・・送信バッファ、３３・・・受信バッファ、３４・・・レジスタ、３５・・・送信バッファアクセス制御部、３６・・・受信バッファアクセス制御部、３７，３８，３９，４０・・・セレクタ
【図１】
2008310486.tif 000003
【図２】
2008310486.tif 000004
【図３】
2008310486.tif 000005
【図４】
2008310486.tif 000006
【図５】
2008310486.tif 000007
【図６】
2008310486.tif 000008
【図７】
2008310486.tif 000009
【図８】
2008310486.tif 000010
【図９】
2008310486.tif 000011
【図１０】
2008310486.tif 000012
【図１１】
2008310486.tif 000013
【図１２】
2008310486.tif 000014
【図１３】
2008310486.tif 000015
【図１４】
2008310486.tif 000016