(57)【要約】【課題】  ＣＰＵの負担を小さく抑えたまま、適切な割込間隔で送信データが送信されて送信処理の効率が高められたデータ送信装置および適切な割込間隔で受信データが受信されて受信処理の効率が高められたデータ受信装置を提供する。【解決手段】  読出ポインタ２２の値から書込ポインタ２３の値を引算器２４で引き算してＦＩＦＯバッファ２１の空き状態を求め、ＦＩＦＯバッファ２１の空き領域が大きいほど早いタイミングで書込要求信号生成回路２６から書込要求信号を出力して、ＦＩＦＯバッファ２１に送信データを書き込む。【選択図】        図２
2004289805.tif 000002
【特許請求の範囲】
【請求項１】
送信データが格納される送信データバッファと、
前記送信データバッファに格納されたデータを送信するデータ送信部と、
前記送信データバッファの空き状態を監視する空き状態監視部と、
前記空き状態監視部に監視された前記送信データバッファの空き領域の大きさに応じて、空き領域が大きいほど早いタイミングで送信データの該送信データバッファへの書込を要求する書込要求部とを備えたことを特徴とするデータ送信装置。
【請求項２】
前記書込要求部が、
前記送信データバッファの空き領域の大きさを表わす、次の書込要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタと、
前記閾値レジスタに格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタと、
前記空き状態監視部により監視された前記送信データバッファの空き領域の大きさと前記閾値レジスタに格納された閾値とを比較し、該空き領域の大きさが該閾値に達したタイミングで該送信データバッファへの送信データの次の書込を要求する書込要求タイミング生成部と、
前記空き状態監視部により監視された前記送信データバッファの空き領域の大きさと前記基準値レジスタに格納された基準値とを比較し、該空き領域の大きさが該基準値を越えるか、該基準値と等しいか、あるいは該基準値未満であるかに応じて、それぞれ、前記閾値レジスタに格納された閾値を減少させ、同一に保持し、あるいは増加させる閾値書替部とを備えたことを特徴とする請求項１記載のデータ送信装置。
【請求項３】
受信データが格納される受信データバッファと、
前記受信データバッファに格納されるデータを受信するデータ受信部と、
前記受信データバッファの空き状態を監視する空き状態監視部と、
前記空き状態監視部に監視された前記受信データバッファの空き領域の大きさに応じて、空き領域が小さいほど早いタイミングで受信データの該受信データバッファからの読出を要求する読出要求部とを備えたことを特徴とするデータ受信装置。
【請求項４】
前記読出要求部が、
前記受信データバッファの空き領域の大きさを表わす、次の読出要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタと、
前記閾値レジスタに格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタと、
前記空き状態監視部により監視された前記受信データバッファの空き領域の大きさと前記閾値レジスタに格納された閾値とを比較し、該空き領域の大きさが該閾値にまで減少したタイミングで該受信データバッファからの受信データの次の読出を要求する読出要求タイミング生成部と、
前記空き状態監視部により監視された前記受信データバッファの空き領域の大きさと前記基準値レジスタに格納された基準値とを比較し、該空き領域の大きさが該基準値を越えるか、該基準値と等しいか、あるいは該基準値未満であるかに応じて、それぞれ、前記閾値レジスタに格納された閾値を減少させ、同一に保持し、あるいは増加させる閾値書替部とを備えたことを特徴とする請求項３記載のデータ受信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信データバッファに格納されたデータを送信するデータ送信装置および受信データバッファに格納されるデータを受信するデータ受信装置に関する。
【背景技術】
【０００２】
従来より、通信システムを構成するデータ送信装置において、送信データバッファとして先入れ先出し（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式のＦＩＦＯバッファを備え、そのＦＩＦＯバッファに格納された送信データが空の状態になると、ＣＰＵに対して書込要求としての割込信号を出力し、これを受けてＣＰＵが次の送信データをＦＩＦＯバッファに書き込むという手順で処理が行なわれている。このような場合において、送信データの書込処理と、この書込処理の優先度よりも高い優先度を持つ別の処理とが同時に発生した場合、送信データの書込処理は後回しにされるため、比較的長時間ＦＩＦＯバッファが空の状態のまま放置され、送信レートが悪化するという事態が発生する。このような事態を避けるために、ＦＩＦＯバッファが完全に空の状態にならないようにソフトウェアで定期的にＦＩＦＯバッファの状態を監視（ポーリング）し、ＦＩＦＯバッファが書込可能な状態にある場合は適宜送信データをＦＩＦＯバッファに書き込むといった対処が行なわれる。この定期的なポーリング動作は、優先順位が高く設定されたタイマ割込等で実現されるのが一般的である。しかしながら、このような場合、ＣＰＵの処理能力がポーリング動作に費やされることとなり、従って通信システム全体の処理能力が低下することとなり好ましい状態ではない。
【０００３】
そこで、ＦＩＦＯバッファへの書込要求用の割込信号の間隔を表わす値（ＦＩＦＯバッファ内の空きバッファ数の閾値）をソフトウェアで設定するレジスタを用意し、このレジスタに設定された閾値に応じてＦＩＦＯバッファが完全に空の状態になる前に発生する割込信号の間隔を可変させる機構をもたせた技術が提案されている（特許文献１参照）。
【０００４】
また、通信システムを構成するデータ受信装置において、受信データバッファとしてのＦＩＦＯバッファを備え、そのＦＩＦＯバッファに受信データが書き込まれると、ＣＰＵに対して読出要求としての割込信号を出力し、これを受けてＣＰＵが当該受信データを読み出すという手順で処理が行なわれている。このような場合において、受信データの読出処理と、この読出処理の優先度よりも高い優先度を持つ別の処理とが同時に発生した場合、受信データの読出処理は後回しにされるため、比較的長時間ＦＩＦＯバッファ内に受信データが放置され、さらにはそのＦＩＦＯバッファがフルに占有される状態が頻発することで、受信レートが悪化するという事態が発生する。このような事態を避けるために、ソフトウェアで定期的にＦＩＦＯバッファの状態をポーリングし、ＦＩＦＯバッファが読出可能な状態にある場合は適宜受信データをそのＦＩＦＯバッファから読み出すといった対処が行なわれる。この定期的なポーリング動作は、優先順位が高く設定されたタイマ割込等で実現されるのが一般的である。しかしながら、このような場合、ＣＰＵの処理能力がポーリング動作に費やされることとなり、従って通信システム全体の処理能力が低下することとなり好ましい状態ではない。
【０００５】
そこで、前述した特許文献１に提案された技術を適用して、ＦＩＦＯバッファへの読出要求用の割込信号の間隔を表わす値（ＦＩＦＯバッファの、受信データが占有するバッファ数の閾値）をソフトウェアで設定するレジスタを用意し、このレジスタに設定された閾値に応じてＦＩＦＯバッファが受信データで一杯の状態（フル状態）になる前に発生する割込信号の間隔を可変させる機構をもたせることが可能である。
【特許文献１】特開平１１−３０８２５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１に提案された技術では、送信処理にあたり、割込発生間隔が可変になっているものの、この割込発生間隔の制御は、ＣＰＵがソフトウェアを実行することにより行なわれるため、ＣＰＵの負担軽減に欠ける点がある。ここで、例えば送信するデータ量が多い場合には割込発生間隔が短くなるように制御するのでは、送信されるデータ量はシステム全体としてはミクロなパラメータであるため、システム全体として適切な制御を行なうことは困難であり、従ってシステム全体としての処理能力の低下防止に欠けることとなる。
【０００７】
しかし、送信データ量で制御することに代えて、送信の頻度や他の割込信号との優先度を、ＣＰＵがその動作中にダイナミックに知ることはＣＰＵの負担が大きくなりすぎて現実的ではない。即ち、ＣＰＵがソフトウェアを実行中に、ダイナミックに上記割込発生間隔を制御するのでは、ＣＰＵの負担が大きすぎるという問題がある。そこで、初期の設定段階で設定された閾値を変更しない、即ち初期の設定段階においてシステムの最適値として一度設定された割込発生間隔を固定するということが考えられるものの、これでは効率のよい送信処理を常に維持することは困難である。
【０００８】
また、上記特許文献１に提案された技術を受信処理に適用した場合、送信処理の場合と同様に、割込発生間隔が可変になるものの、この割込発生間隔の制御は、ＣＰＵがソフトウェアを実行することにより行なわれるため、ＣＰＵの負担軽減に欠ける点がある。ここで、例えば受信するデータ量が多い場合には割込発生間隔が短くなるように制御するのでは、受信されるデータ量はシステム全体としてはミクロなパラメータであるため、システム全体として適切な制御を行なうことは困難であり、従ってシステム全体としての処理能力の低下防止に欠けることとなる。
【０００９】
しかし、受信データ量で制御することに代えて、受信の頻度や他の割込信号との優先度を、ＣＰＵがその動作中にダイナミックに知ることはＣＰＵの負担が大きくなりすぎて現実的ではない。即ち、ＣＰＵがソフトウェアを実行中に、ダイナミックに上記割込発生間隔を制御するのでは、ＣＰＵの負担が大きすぎるという問題がある。そこで、初期の設定段階で設定された閾値を変更しない、即ち初期の設定段階においてシステムの最適値として一度設定された割込発生間隔を固定するということが考えられるものの、これでは効率のよい受信処理を常に維持することは困難である。
【００１０】
本発明は、上記事情に鑑み、ＣＰＵの負担を小さく抑えたまま、適切な割込間隔で送信データが送信されて送信処理の効率が高められたデータ送信装置および適切な割込間隔で受信データが読み出されて受信処理の効率が高められたデータ受信装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成する本発明のデータ送信装置は、
送信データが格納される送信データバッファと、
上記送信データバッファに格納されたデータを送信するデータ送信部と、
上記送信データバッファの空き状態を監視する空き状態監視部と、
上記空き状態監視部に監視された上記送信データバッファの空き領域の大きさに応じて、空き領域が大きいほど早いタイミングで送信データのその送信データバッファへの書込を要求する書込要求部とを備えたことを特徴とする。
【００１２】
本発明のデータ送信装置は、空き状態監視部で監視された送信データバッファの空き領域が大きいほど早いタイミングで送信データの送信データバッファへの書込を書込要求部で要求するものであるため、送信データバッファの、前回の書込時の空き状況を考慮した上で、次回の書込要求のための割込信号を発生させるタイミングを可変するにあたり、ＣＰＵがソフトウェアを実行してその都度閾値をレジスタに設定する必要はなく、またＣＰＵが動作中に送信の頻度や他の割込処理との優先度をダイナミックに知る必要もない。従って、ＣＰＵによる割込信号発生間隔の制御が排除されることとなり、ＣＰＵに大きな負荷を与えることなく送信データの送信データバッファへの書込要求のための適切な割込間隔が実現されて、送信処理のパフォーマンスを高めることができる。
【００１３】
ここで、本発明のデータ送信装置における上記書込要求部が、
上記送信データバッファの空き領域の大きさを表わす、次の書込要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタと、
上記閾値レジスタに格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタと、
上記空き状態監視部により監視された上記送信データバッファの空き領域の大きさと上記閾値レジスタに格納された閾値とを比較し、その空き領域の大きさがその閾値に達したタイミングでその送信データバッファへの送信データの次の書込を要求する書込要求タイミング生成部と、
上記空き状態監視部により監視された上記送信データバッファの空き領域の大きさと上記基準値レジスタに格納された基準値とを比較し、その空き領域の大きさがその基準値を越えるか、その基準値と等しいか、あるいはその基準値未満であるかに応じて、それぞれ、上記閾値レジスタに格納された閾値を減少させ、同一に保持し、あるいは増加させる閾値書替部とを備えたものであることが好ましい。
【００１４】
上記書込要求部をこのように構成すると、後述する実施形態に示すように、送信データバッファの空き領域が大きいほど早いタイミングで送信データの送信データバッファへの書込要求を、簡単な回路構成で実現することができる。
【００１５】
また、上記目的を達成する本発明のデータ受信装置は、
受信データが格納される受信データバッファと、
上記受信データバッファに格納されるデータを受信するデータ受信部と、
上記受信データバッファの空き状態を監視する空き状態監視部と、
上記空き状態監視部に監視された上記受信データバッファの空き領域の大きさに応じて、空き領域が小さいほど早いタイミングで受信データのその受信データバッファからの読出を要求する読出要求部とを備えたことを特徴とする。
【００１６】
本発明のデータ受信装置は、空き状態監視部で監視された受信データバッファの空き領域が小さいほど早いタイミングで受信データの受信データバッファからの読出を読出要求部で要求するものであるため、受信データバッファの、前回の読出時の空き状況を考慮した上で、次回の読出要求のための割込信号を発生させるタイミングを可変するにあたり、ＣＰＵがソフトウェアを実行してその都度閾値をレジスタに設定する必要はなく、またＣＰＵが動作中に受信の頻度や他の割込処理との優先度をダイナミックに知る必要もない。従って、ＣＰＵによる割込信号発生間隔の制御が排除されることとなり、ＣＰＵに大きな負荷を与えることなく受信データの受信データバッファからの読出要求のための適切な割込間隔が実現されて、受信処理のパフォーマンスを高めることができる。
【００１７】
ここで、本発明のデータ受信装置における上記読出要求部が、
上記受信データバッファの空き領域の大きさを表わす、次の読出要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタと、
上記閾値レジスタに格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタと、
上記空き状態監視部により監視された上記受信データバッファの空き領域の大きさと上記閾値レジスタに格納された閾値とを比較し、その空き領域の大きさがその閾値にまで減少したタイミングでその受信データバッファからの受信データの次の読出を要求する読出要求タイミング生成部と、
上記空き状態監視部により監視された上記受信データバッファの空き領域の大きさと上記基準値レジスタに格納された基準値とを比較し、その空き領域の大きさがその基準値を越えるか、その基準値と等しいか、あるいはその基準値未満であるかに応じて、それぞれ、上記閾値レジスタに格納された閾値を減少させ、同一に保持し、あるいは増加させる閾値書替部とを備えたものであることが好ましい。
【００１８】
上記読出要求部をこのように構成すると、後述する実施形態に示すように、受信データバッファの空き領域が小さいほど早いタイミングで受信データの受信データバッファからの読出要求を、簡単な回路構成で実現することができる。
【発明の効果】
【００１９】
本発明のデータ送信装置によれば、ＣＰＵの負担を小さく抑えたまま、適切な割込間隔で送信データが送信されて送信処理の効率を高めることができる。また、本発明のデータ受信装置によれば、ＣＰＵの負担を小さく抑えたまま、適切な割込間隔で受信データが読み出されて受信処理の効率を高めることができる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施形態について説明する。
【００２１】
図１は、本発明の一実施形態のデータ送信装置および本発明の一実施形態のデータ受信装置の双方が組み込まれたシリアル通信システムの構成を示す図である。
【００２２】
図１に示すシリアル通信システム１には、ＣＰＵインターフェース部１０と、送信データバッファ部２０と、データ送信部３０と、データ受信部４０と、受信データバッファ部５０とが備えられている。ＣＰＵインターフェース部１０は、割込信号発生部１１を有する。尚、本発明の一実施形態のデータ送信装置は、ＣＰＵインターフェース部１０の一部と、送信データバッファ部２０と、データ送信部３０とから構成されている。また、本発明の一実施形態のデータ受信装置は、ＣＰＵインターフェース部１０の他の一部と、受信データバッファ部５０と、データ受信部４０とから構成されている。
【００２３】
ＣＰＵインターフェース部１０は、アドレスバス、データバス、およびコントロールバスを介して図示しないＣＰＵと接続されている。このＣＰＵインターフェース部１０は、後述する送信データバッファ部２０からの書込要求信号を割込信号発生部１１に入力し、ＣＰＵに向けて割込要求を行ない、そのＣＰＵからデータバスを介して供給されるパラレルの送信データを送信データバッファ部２０に向けて出力する。また、このＣＰＵインターフェース部１０は、後述する受信データバッファ部５０からパラレルの受信データを読み出してデータバスに出力する。
【００２４】
送信データバッファ部２０には、ＣＰＵインターフェース部１０から出力されるパラレルの送信データが格納されるＦＩＦＯバッファ（本発明にいう送信データバッファの一例に相当）等が備えられている。このＦＩＦＯバッファを含む送信データバッファ部２０の構成については後述する。
【００２５】
データ送信部３０は、上記ＦＩＦＯバッファに格納されたパラレルの送信データをシリアルのデータに変換し、図示しない周辺装置に向けて出力する。
【００２６】
データ受信部４０には、周辺装置からのシリアルデータが入力される。このデータ受信部４０は、入力されたシリアルデータをパラレルのデータに変換して受信データバッファ部５０に出力する。
【００２７】
受信データバッファ部５０には、データ受信部４０から出力されるパラレルの受信データが格納されるＦＩＦＯバッファ（本発明にいう受信データバッファの一例に相当）等が備えられている。このＦＩＦＯバッファを含む受信データのバッファ部５０の構成については後述する。
【００２８】
先ず、本発明の一実施形態のデータ送信装置について説明する。
【００２９】
図２は、図１に示す送信データバッファ部の構成を示す図である。
【００３０】
図２に示す送信データバッファ部２０には、ＦＩＦＯバッファ２１（本発明のデータ送信装置における送信データバッファの一例）と、読出ポインタ２２と、書込ポインタ２３と、引算器２４と、ポインタ制御回路２５と、書込要求信号生成回路２６とが備えられている。ここで、読出ポインタ２２，書込ポインタ２３，引算器２４が、本発明のデータ送信装置における空き状態監視部の役割を担うものである。また、書込要求信号生成回路２６が、本発明のデータ送信装置における書込要求部の一例に相当する。
【００３１】
図２に示すＦＩＦＯバッファ２１は、先入れ先出し（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式の送信データバッファであり、このＦＩＦＯバッファ２１は、循環式で利用される８段のバッファ部から構成されている。各バッファ部には、１バイト分の送信データが記憶される。記憶された送信データは１バイト単位でデータ送信部３０に出力される。
【００３２】
読出ポインタ２２は、このシリアル通信システム１における次の送信処理タイミングの際に、データ送信部３０に出力すべきデータの位置（ＦＩＦＯバッファ２１を構成するバッファ部の位置）を指し示すレジスタであり、１回の送信処理が完了する毎に１だけカウントアップされる。
【００３３】
書込ポインタ２３は、ＣＰＵから次に書き込まれる送信データの位置（ＦＩＦＯバッファ２１を構成するバッファ部の位置）を指し示すレジスタであり、書き込みが行なわれる毎に１だけカウントアップされる。これら読出ポインタ２２と書込ポインタ２３が指し示す位置の差異によってＦＩＦＯバッファ２１の空き状態を知ることができる。ここで、後述する「フルフラグ」が論理‘０’で、且つ読出ポインタ２２と書込ポインタ２３の値が一致している場合は、ＦＩＦＯバッファ２１は完全に空の状態であり、従って送信すべきデータは無いこととなる。また、読出ポインタ２２と書込ポインタ２３双方の値が一致していない場合は、その差分が、ＦＩＦＯバッファ２１の空いている段数となる。この差分は、引算器２４で計算される。具体的には、引算器２４は、「読出ポインタ２２の値−書込ポインタ２３の値」を計算する。但し、引き算結果が負になる場合は、詳細は後述するが、ＦＩＦＯバッファ２１の総段数「８」と負の引き算結果を足した値が最終結果となる。
【００３４】
ポインタ制御回路２５は、読出ポインタ２２と書込ポインタ２３双方の制御を行なう。このポインタ制御回路２５では、書込ポインタ２３と読出ポインタ２２の値が、書込動作により一致した場合に「フルフラグ」を論理‘１’とし、ＣＰＵに対して更なる送信データの書き込みを禁止する。この「フルフラグ」は一度論理‘１’にセットされた場合、次に両者の値に差が生じた場合に論理‘０’にクリアされる。このような動作は、一般的なＦＩＦＯバッファ装置の動作と同じである。
【００３５】
書込要求信号生成回路２６は、ＣＰＵに向けて出力する割込信号に反映させるために、割込信号発生部１１に送出する書込要求信号を生成する回路である。以下、図３を参照して説明する。
【００３６】
図３は、書込要求信号生成回路の回路図である。
【００３７】
図３に示す書込要求信号生成回路２６には、ＦＩＦＯバッファ２１の空き領域の大きさを表わす、次の書込要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタ２６＿１が備えられている。
【００３８】
また、書込要求信号生成回路２６には、閾値レジスタ２６＿１に格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタ２６＿２が備えられている。
【００３９】
さらに、書込要求信号生成回路２６には、引算器２４により計算されたＦＩＦＯバッファ２１の空き領域の大きさと閾値レジスタ２６＿１に格納された閾値とを比較し、空き領域の大きさが閾値に達したタイミングでＦＩＦＯバッファ２１への送信データの次の書込を要求する比較器２６＿３１，フリップフロップ２６＿３２，２６＿３３，アンドゲート２６＿３４からなる書込要求タイミング生成部２６＿３が備えられている。
【００４０】
また、書込要求信号生成回路２６には、書込要求タイミング生成部２６＿３からの書込の要求である書込要求信号に応じてＦＩＦＯバッファ２１に送信データを書き込むタイミングで、引算器２４で計算されたＦＩＦＯバッファ２１の空き領域の大きさと基準値レジスタ２６＿２に格納された基準値とを比較し、空き領域の大きさが基準値を越えるか、基準値と等しいか、あるいは基準値未満であるかに応じて、それぞれ、閾値レジスタ２６＿１に格納された閾値を減少させ、同一に保持し、あるいは増加させるインクリメンタ２６＿４１，デクリメンタ２６＿４２，切替器２６＿４３，切替信号生成回路２６＿４４からなる閾値書替部２６＿４が備えられている。
【００４１】
さらに、書込要求信号生成回路２６には、後述する基準値レジスタ書込信号に応じて、データバスと基準値レジスタ２６＿２に格納された基準値とを切り替える切替器２６＿５と、引算器２４の値と基準値レジスタ２６＿２に格納された基準値とを比較して比較結果を切替信号生成回路２６＿４４に出力する比較器２６＿６が備えられている。さらに詳細に説明する。
【００４２】
基準値レジスタ２６＿２は３ビット＜２：０＞構成のレジスタであり、この基準値レジスタ２６＿２には、ＣＰＵに対する送信データ書込要求の割込信号である書込要求信号を発行する間隔を調整する基準となる基準値が設定される。この基準値と、引算器２４の値（ＦＩＦＯバッファ２１の空き段数）とが、比較器２６＿６により比較され、ＣＰＵが送信データを書き込んだ時に次の割込信号発生間隔を決定する閾値レジスタ２６＿１に設定する閾値を選択するために用いられる。ＣＰＵからデータバス経由で基準値レジスタ２６＿２に対して書き込みが行なわれる際に、基準値レジスタ書込信号が有効となり、切替器２６＿５を介して基準値が設定される。この基準値は保持し続ける。換言すれば、基準値レジスタ２６＿２は、割込信号発生間隔を長くしたり短くしたりする調節を行なう際の判断基準となる、ＦＩＦＯバッファ２１に残っていてもよい送信データ数を設定するものである。例えば、基準値レジスタ２６＿２の設定値が‘２’の場合、ＣＰＵからの送信データのＦＩＦＯバッファ２１への書込を要求した時点でのＦＩＦＯバッファ２１内の送信データの残りが‘２’であれば、割込信号発生間隔を変更せず、送信データの残りが‘２’よりも大きい場合は割込信号発生間隔を長くするように制御される。また、送信データの残りが‘２’よりも小さい場合は割込信号発生間隔を短くするように制御される。尚、通常は基準レジスタ２６＿２の値は、ＣＰＵによりシステム起動時に１度だけ設定すればよい。
【００４３】
閾値レジスタ２６＿１は３ビット＜２：０＞構成のレジスタであり、この閾値レジスタ２６＿１には、ＦＩＦＯバッファ２１が何段空いたら書込要求信号を生成するのかを示す閾値が設定される。この閾値と引算器２４の値とが比較器２６＿３１により比較され、比較結果の値が「閾値レジスタ２６＿１の値≦引算器２４の値」の場合は、比較器２６＿３１から論理‘１’の信号がフリップフロップ２６＿３２に向けて出力される。
【００４４】
切替器２６＿４３は、データバスの値、閾値レジスタ２６＿１の値、その値をインクリメンタ２６＿４１で＋１した値、およびその値をデクリメンタ２６＿４２で−１した値を切り替えて、閾値レジスタ２６＿１に入力する。
【００４５】
切替信号生成回路２６＿４４は、切替器２６＿４３を切り替えるための信号を生成する。この切替信号生成回路２６＿４４は、基準値レジスタ書込信号が有効な場合にはデータバスの値が閾値レジスタ２６＿１に入力されるように選択する。また、書込要求信号発生後最初のＦＩＦＯバッファ２１への書込時に、比較器２６＿６からの比較結果が、「基準値レジスタ２６＿２の値＞引算器２４の値」の場合は、インクリメンタ２６＿４１の値が闘値レジスタ２６＿１に入力されるように選択する（但し、閾値レジスタ２６＿１の値が最大値‘７’の場合は、閾値レジスタ２６＿１の値がその閾値レジスタ２６＿１に入力されるように選択する）。さらに、書込要求信号発生後最初のＦＩＦＯバッファ２１への書込時に比較器２６＿６からの比較結果が、「基準値レジスタ２６＿２の値＝引算器２４の値」の場合は、閾値レジスタ２６＿１の値がその閾値レジスタ２６＿１に入力されるように選択する。また、書込要求信号発生後最初のＦＩＦＯバッファ２１への書込時に比較器２６＿６の比較結果が、「基準値レジスタ２６＿２の値＜引算器２４の値」の場合は、デクリメンタ２６＿４２の値が閾値レジスタ２６＿１に入力されるように選択する（但し、閾値レジスタ２６＿１の値が最小値‘０’の場合は、閾値レジスタ２６＿１の値がその閾値レジスタ２６＿１に入力されるように選択する）。尚、上述した以外の定常状態の場合は、閾値レジスタ２６＿１の値がその閾値レジスタ２６＿１に入力されるように選択することにより、その値を保持する。
【００４６】
図３に示す、書込要求タイミング生成部２６＿３を構成するフリップフロップ２６＿３２，２６＿３３，アンドゲート２６＿３４からなる回路は、一般的なエッジ検出回路であり、後述する図５に示すように、比較器２６＿３１の比較結果が、「閾値レジスタ２６＿１の値＞引算器２４の値」から「閾値レジスタ２６＿１の値≦引算器２４の値」になった場合に、１システムクロック幅のパルスを発生し、このパルスを割込信号発生部１１（図１参照）に与え、これが最終的にはＣＰＵへの割込信号となる。次に、図４〜図８を参照して本実施形態のデータ送信装置における動作について説明する。
【００４７】
図４は、図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例１を模擬した図である。
【００４８】
この動作例１では、ＣＰＵへの割込信号発生間隔を短くするための制御が行なわれる。図４に示すＦＩＦＯバッファ２１は、０〜７とナンバリングされた８段のバッファ部で構成されている。尚、斜線で示すバッファ部２，３には送信データが格納されている。書込ポインタ２３の現在の値は‘４’であり、読出ポインタ２２の現在の値は‘２’である。また、ＦＩＦＯバッファ２１の左右には、これらの値‘４’‘２’を指し示す矢印が付されている。ここでは、基準値レジスタ２６＿２には基準値‘４’が設定されているものとする。
【００４９】
最初の時点では、闘値レジスタ２６＿１の値が‘４’、書込ポインタ２３の値が‘４’、読出ポインタ２２の値が‘２’である。この状態で書込要求信号に基づく割込みにより、最初の送信データのＦＩＦＯバッファ２１への書込動作がＣＰＵで行なわれる。すると、引算器２４の結果は、「読出ポインタ２２の値（‘２’）−書込ポインタ２３の値（‘４’）＝‘−２’」なので、８−２＝６となり、ＦＩＦＯバッファ２１の空き領域の大きさは‘６’（６段分のバッファ部０，１，４，５，６，７）である。この動作例１は、割込みの発生からＣＰＵによる最初の書込みまでに有した時間がＦＩＦＯバッファ２１における送信処理（２段分の送信処理）よりも長い場合に相当する。基準値レジスタ２６＿２の値は‘４’であるから、比較器２６＿６の比較結果は、「基準値レジスタ２６＿２の値＜引算器２４の値」となり、従って切替器２６＿４３はデクリメンタ２６＿４２を選択する信号を出力し、闘値レジスタ２６＿１には新たな値として‘３’が設定される。これにより、ＣＰＵに対して行なわれる割込間隔が前回よりも短くなったことになる。その後、ＣＰＵからＦＩＦＯバッファ２１に送信データが書き込まれて、そのＦＩＦＯバッファ２１がフル状態になりフルフラグとして論理‘１’が出力され、これにより書込みが終了する。次いで、送信が行なわれてＦＩＦＯバッファ２１に空き状態が生じ始める。
【００５０】
図５は、図４に示す動作例１において、ＣＰＵからＦＩＦＯバッファに送信データが書き込まれてフル状態になり、その後の送信によりＦＩＦＯバッファに空き状態が生じ始めるまでの様子を示すタイミングチャートである。
【００５１】
尚、このタイミングチャートでは、書込終了後から送信処理がすぐに開始されている。引算器２４の出力結果が値‘２’から値‘３’になった時点で新たに書込要求信号としてのパルス信号が出力される。ここで、点線で示すように、闘値レジスタ２６＿１に新たな値として‘３’が設定されずに値‘４’の状態のままでは、書込要求信号は、引算器２４の出力結果が値‘３’から値‘４’になった時点で出力される。このように閾値レジスタ２６＿１に値‘４’を設定していたままの場合と比較し、ＣＰＵに対する割込間隔が短くなったのがわかる。
【００５２】
図６は、図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例２を模擬した図である。
【００５３】
この動作例２では、ＣＰＵへの割込信号発生間隔を維持するための制御が行なわれる。ここでは、闘値レジスタ２６＿１の値が‘３’、書込ポインタ２３の値が‘２’、読出ポインタ２２の値が‘６’である。この状態で書込要求信号に基づく割込みにより、最初の送信データのＦＩＦＯバッファ２１への書込動作がＣＰＵで行なわれる。引算器２４の結果は、「読出ポインタ２２の値（‘６’）−書込ポインタ２３の値（‘２’）＝‘４’」である。基準値レジスタ２６＿２の値は‘４’であるので、基準値レジスタ２６＿２の値＝引算結果となり、切替器２６＿４３は闘値レジスタ２６＿１の値‘３’をそのまま選択する信号を出力し、これにより闘値レジスタ２６＿１は値‘３’を保持する。その後、ＣＰＵからＦＩＦＯバッファ２１に送信データが書き込まれて、そのＦＩＦＯバッファ２１がフル状態になりフルフラグが出力され、これにより書込みが終了する。次いで、送信が行なわれてＦＩＦＯバッファ２１に空き状態が生じ始め、引算器２４の出力結果が値‘２’から値‘３’になった時点で書込要求信号としてのパルス信号が出力される。
【００５４】
図７は、図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例３を模擬した図である。
【００５５】
この動作例３では、ＣＰＵへの割込信号発生間隔を長くするための制御が行なわれる。ここでは、闘値レジスタ２６＿１の値が‘３’、書込ポインタ２３の値が‘０’、読出ポインタ２２の値が‘３’である。この状態で書込要求信号に基づく割込みにより、最初の送信データのＦＩＦＯバッファ２１への書込動作がＣＰＵで行なわれる。引算器２４の結果は、「読出ポインタ２２の値（‘３’）−書込ポインタ２３の値（‘０’）＝‘３’」である。この動作例３は、割込みの発生からＣＰＵによる最初の書込みまでに有した時間がＦＩＦＯバッファ２１における送信処理（１段分の送信処理）よりも速い場合に相当する。基準値レジスタ２６＿２の値は‘４’であるので、基準値レジスタ２６＿２の値＞引算結果となり、切替器２６＿４３はインクリメンタ２６＿４１を選択する信号を出力し、闘値レジスタ２６＿１には新たな値として‘４’が設定される。これにより、ＣＰＵに対して行なわれる割込間隔が前回よりも長くなったことになる。その後、ＣＰＵからＦＩＦＯバッファ２１に送信データが書き込まれて、そのＦＩＦＯバッファ２１がフル状態になりフルフラグとして論理‘１’が出力され、これにより書込みが終了する。次いで、送信が行なわれてＦＩＦＯバッファ２１に空き状態が生じ始める。
【００５６】
図８は、図７に示す動作例３において、ＣＰＵからＦＩＦＯバッファに送信データが書き込まれてフル状態になり、その後の送信によりＦＩＦＯバッファに空き状態が生じ始めるまでの様子を示すタイミングチャートである。
【００５７】
尚、このタイミングチャートでは、書込終了後から送信処理がすぐに開始されている。引算器２４の出力結果が値‘３’から値‘４’になった時点で新たに書込要求信号としてのパルス信号が出力される。ここで、点線で示すように、闘値レジスタ２６＿１に新たな値として‘４’が設定されずに値‘３’の状態のままでは、書込要求信号は、引算器２４の出力結果が値‘２’から値‘３’になった時点で出力される。このように閾値レジスタ２６＿１に値‘３’を設定していたままの場合と比較し、ＣＰＵに対する割込間隔が長くなったのがわかる。
【００５８】
次に、本発明の一実施形態のデータ受信装置について説明する。
【００５９】
図９は、図１に示す受信データバッファ部の構成を示す図である。
【００６０】
図９に示す受信データバッファ部５０には、ＦＩＦＯバッファ５１（本発明のデータ受信装置における受信データバッファの一例）と、読出ポインタ５２と、書込ポインタ５３と、引算器５４と、ポインタ制御回路５５と、読出要求信号生成回路５６とが備えられている。ここで、読出ポインタ５２，書込ポインタ５３，引算器５４が、本発明のデータ受信装置における空き状態監視部の役割を担うものである。また、読出要求信号生成回路５６が、本発明のデータ受信装置における読出要求部の一例に相当する。
【００６１】
図９に示すＦＩＦＯバッファ５１は、先入れ先出し（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式の受信データバッファであり、このＦＩＦＯバッファ５１は、循環式で利用される８段のバッファ部から構成されている。各バッファ部には、データ受信部４０からの受信データが１バイト単位で記憶される。記憶された受信データは、図示しないＣＰＵからの読み出しによりその値がデータバスに出力される。
【００６２】
書込ポインタ５３は、データ受信部４０から受け取った、次の受信処理タイミングの際に保存される受信データの位置（ＦＩＦＯバッファ５１を構成するバッファ部の位置）を指し示すレジスタであり、１回の受信処理が完了する毎に１だけカウントアップされる。      
【００６３】
読出ポインタ５２は、次にＣＰＵから読み出される受信データの位置（ＦＩＦＯバッファ５１を構成するバッファ部の位置）を指し示すレジスタであり、読み出しが行なわれる毎に１だけカウントアップされる。これら書込ポインタ５３と読出ポインタ５２が指し示す位置の差異によってＦＩＦＯバッファ５１の占有状態を知ることができる。ここで、後述する「エンプティフラグ」が論理‘１’で、且つ読出ポインタ５２と書込ポインタ５３の値が一致している場合は、ＦＩＦＯバッファ５１は完全に空の状態であり、従って読み出すべきデータは無いこととなる。また、読出ポインタ５２と書込ポインタ５３双方の値が一致していない場合は、その差分が、ＦＩＦＯバッファ５１の、占有されているバッファ段数となる。この差分は、引算器５４で計算される。具体的には、引算器５４は、「書込ポインタ５３の値−読出ポインタ５２の値」を計算する。但し、引き算結果が負になる場合は、詳細は後述するが、ＦＩＦＯバッファ５１の総段数「８」と負の引き算結果を足した値が最終結果となる。
【００６４】
ポインタ制御回路５５は、書込ポインタ５３と読出ポインタ５２双方の制御を行なう。このポインタ制御回路５５では、書込ポインタ５３と読出ポインタ５２の値が、書込動作により一致した場合に「エンプティフラグ」を論理‘１’とし、ＣＰＵに対して更なる受信データの読み出しを禁止する。この「エンプティフラグ」は一度論理‘１’にセットされた場合、次に両者の値に差が生じた場合に論理‘０’にクリアされる。このような動作は、一般的なＦＩＦＯバッファ装置の動作と同じである。
【００６５】
読出要求信号生成回路５６は、ＣＰＵに向けて出力する割込信号に反映させるために、割込信号発生部１１に送出する読出要求信号を生成する回路である。以下、図１０を参照して説明する。
【００６６】
図１０は、読出要求信号生成回路の回路図である。
【００６７】
図１０に示す読出要求信号生成回路５６には、ＦＩＦＯバッファ５１の占有領域の大きさを表わす、次の読出要求を行なうか否かの判定基準として用いられる閾値を更新自在に格納しておく閾値レジスタ５６＿１が備えられている。
【００６８】
また、読出要求信号生成回路５６には、閾値レジスタ５６＿１に格納された閾値の増減の基準となる基準値を格納しておく基準値レジスタ５６＿２が備えられている。
【００６９】
さらに、読出要求信号生成回路５６には、引算器５４により計算されたＦＩＦＯバッファ５１の占有領域の大きさと閾値レジスタ５６＿１に格納された閾値とを比較し、占有領域の大きさが閾値に達したタイミングでＦＩＦＯバッファ５１に格納された受信データの次の読出しを要求する比較器５６＿３１，フリップフロップ５６＿３２，５６＿３３，アンドゲート５６＿３４からなる読出要求タイミング生成部５６＿３が備えられている。
【００７０】
また、読出要求信号生成回路５６には、読出要求タイミング生成部５６＿３からの読出しの要求である読出要求信号に応じてＦＩＦＯバッファ５１の受信データを読み出すタイミングで、引算器５４で計算されたＦＩＦＯバッファ５１の占有領域の大きさと基準値レジスタ５６＿２に格納された基準値とを比較し、占有領域の大きさが基準値を越えるか、基準値と等しいか、あるいは基準値未満であるかに応じて、それぞれ、閾値レジスタ５６＿１に格納された閾値を減少させ、同一に保持し、あるいは増加させるインクリメンタ５６＿４１，デクリメンタ５６＿４２，切替器５６＿４３，切替信号生成回路５６＿４４からなる閾値書替部５６＿４が備えられている。
【００７１】
さらに、読出要求信号生成回路５６には、後述する基準値レジスタ書込信号に応じて、データバスと基準値レジスタ５６＿２に格納された基準値とを切り替える切替器５６＿５と、引算器５４の値と基準値レジスタ５６＿２に格納された基準値とを比較して比較結果を切替信号生成回路５６＿４４に出力する比較器５６＿６が備えられている。さらに詳細に説明する。
【００７２】
基準値レジスタ５６＿２は３ビット＜２：０＞構成のレジスタであり、この基準値レジスタ５６＿２には、ＣＰＵに対する受信データ読出要求の割込信号である読出要求信号を発行する間隔を調整する基準となる基準値が設定される。この基準値と、引算器５４の値（ＦＩＦＯバッファ５１の空き段数）とが、比較器５６＿６により比較され、ＣＰＵが受信データを読み出した時に次の割込信号発生間隔を決定する閾値レジスタ５６＿１に設定する閾値を選択するために用いられる。ＣＰＵからデータバス経由で基準値レジスタ５６＿２に対して書き込みが行なわれる際に、基準値レジスタ書込信号が有効となり、切替器５６＿５を介して基準値が設定される。この基準値は保持し続ける。換言すれば、基準値レジスタ５６＿２は、割込信号発生間隔を長くしたり短くしたりする調節を行なう際の判断基準となる、ＦＩＦＯバッファ５１に残っていてもよい受信データ数を設定するものである。例えば、基準値レジスタ５６＿２の設定値が‘２’の場合、ＣＰＵからの受信データのＦＩＦＯバッファ５１からの読出を要求した時点でのＦＩＦＯバッファ５１内の受信データの残りが‘２’であれば、割込信号発生間隔を変更せず、受信データの残りが‘２’よりも大きい（空き領域が小さい）場合は割込信号発生間隔を短くするように制御される。また、受信データの残りが‘２’よりも小さい（空き領域が大きい）場合は割込信号発生間隔を長くするように制御される。尚、通常は基準レジスタ５６＿２の値は、ＣＰＵによりシステム起動時に１度だけ設定すればよい。
【００７３】
閾値レジスタ５６＿１は３ビット＜２：０＞構成のレジスタであり、この閾値レジスタ５６＿１には、ＦＩＦＯバッファ５１が何段埋まったら読出要求信号を生成するのかを示す閾値が設定される。この閾値と引算器２４の値とが比較器５６＿３１により比較され、比較結果の値が「閾値レジスタ５６＿１の値≦引算器５４の値」の場合は、比較器５６＿３１から論理‘１’の信号がフリップフロップ５６＿３２に向けて出力される。
【００７４】
切替器５６＿４３は、データバスの値、閾値レジスタ５６＿１の値、その値をインクリメンタ５６＿４１で＋１した値、およびその値をデクリメンタ５６＿４２で−１した値を切り替えて、閾値レジスタ５６＿１に入力する。
【００７５】
切替信号生成回路５６＿４４は、切替器５６＿４３を切り替えるための信号を生成する。この切替信号生成回路５６＿４４は、基準値レジスタ書込信号が有効な場合にはデータバスの値が閾値レジスタ５６＿１に入力されるように選択する。また、読出要求信号発生後最初のＦＩＦＯバッファ５１からの読出時に、比較器５６＿６からの比較結果が、「基準値レジスタ５６＿２の値＞引算器５４の値」の場合は、インクリメンタ５６＿４１の値が闘値レジスタ５６＿１に入力されるように選択する（但し、閾値レジスタ５６＿１の値が最大値‘７’の場合は、閾値レジスタ５６＿１の値がその閾値レジスタ５６＿１に入力されるように選択する）。さらに、読出要求信号発生後最初のＦＩＦＯバッファ５１からの読出時に比較器５６＿６からの比較結果が、「基準値レジスタ５６＿２の値＝引算器５４の値」の場合は、閾値レジスタ５６＿１の値がその閾値レジスタ５６＿１に入力されるように選択する。また、読出要求信号発生後最初のＦＩＦＯバッファ５１からの読出時に比較器５６＿６の比較結果が、「基準値レジスタ５６＿２の値＜引算器５４の値」の場合は、デクリメンタ５６＿４２の値が閾値レジスタ５６＿１に入力されるように選択する（但し、閾値レジスタ５６＿１の値が最小値‘０’の場合は、閾値レジスタ５６＿１の値がその閾値レジスタ５６＿１に入力されるように選択する）。尚、上述した以外の定常状態の場合は、閾値レジスタ５６＿１の値がその閾値レジスタ５６＿１に入力されるように選択することにより、その値を保持する。
【００７６】
図１０に示す、読出要求タイミング生成部５６＿３を構成するフリップフロップ５６＿３２，５６＿３３，アンドゲート５６＿３４からなる回路は、一般的なエッジ検出回路であり、後述する図１２に示すように、比較器５６＿３１の比較結果が、「閾値レジスタ５６＿１の値＞引算器５４の値」から「閾値レジスタ５６＿１の値≦引算器５４の値」になった場合に、１システムクロック幅のパルスを発生し、このパルスを割込信号発生部１１（図１参照）に与え、これが最終的にはＣＰＵへの割込信号となる。次に、図１１〜図１５を参照して本実施形態のデータ受信装置における動作について説明する。
【００７７】
図１１は、図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例１を模擬した図である。
【００７８】
この動作例１では、ＣＰＵへの割込信号発生間隔を短くするための制御が行なわれる。図９に示すＦＩＦＯバッファ５１は、０〜７とナンバリングされた８段のバッファ部で構成されている。尚、斜線で示すバッファ部０，１,４〜７には受信データが格納されている。読出ポインタ５２の現在の値は‘４’であり、書込ポインタ５３の現在の値は‘２’である。また、ＦＩＦＯバッファ５１の左右には、これらの値‘４’‘２’を指し示す矢印が付されている。ここでは、基準値レジスタ５６＿２には基準値‘４’が設定されているものとする。
【００７９】
最初の時点では、闘値レジスタ５６＿１の値が‘４’、読出ポインタ５２の値が‘４’、書込ポインタ５３の値が‘２’である。この状態で先の読出要求信号に基づく割込みにより、最初の受信データのＦＩＦＯバッファ５１からの読出動作がＣＰＵで行なわれる。すると、引算器５４の結果は、「書込ポインタ５３の値（‘２’）−読出ポインタ５２の値（‘４’）＝‘−２’」なので、８−２＝６となる。この動作例１は、割込みの発生からＣＰＵによる最初の読出しまでに有した時間がＦＩＦＯバッファ５１における受信処理（２段分の受信処理）よりも長い場合に相当する。基準値レジスタ５６＿２の値は‘４’であるから、比較器５６＿６の比較結果は、「基準値レジスタ５６＿２の値＜引算器５４の値」となり、従って切替器５６＿４３はデクリメンタ５６＿４２を選択する信号を出力し、闘値レジスタ５６＿１には新たな値として‘３’が設定される。これにより、ＣＰＵに対して行なわれる割込間隔が前回よりも短くなったことになる。その後、ＣＰＵでＦＩＦＯバッファ５１からの受信データが読み出されて、そのＦＩＦＯバッファ５１が空の状態になりエンプティフラグとして論理‘１’が出力され、これにより読出が終了する。次いで、ＦＩＦＯバッファ５１への受信データの蓄積（書込み）が生じ始める。
【００８０】
図１２は、図１１に示す動作例１において、ＣＰＵでＦＩＦＯバッファからの受信データが読み出されてエンプティ状態になり、その後の受信によりＦＩＦＯバッファ５１に受信データの蓄積が生じ始めるまでの様子を示すタイミングチャートである。
【００８１】
尚、このタイミングチャートでは、読出終了後から受信処理がすぐに開始されている。引算器５４の出力結果が値‘２’から値‘３’になった時点で新たに読出要求信号としてのパルス信号が出力される。ここで、点線で示すように、闘値レジスタ５６＿１に新たな値として‘３’が設定されずに値‘４’の状態のままでは、読出要求信号は、引算器５４の出力結果が値‘３’から値‘４’になった時点で出力される。このように閾値レジスタ５６＿１に値‘４’を設定していたままの場合と比較し、ＣＰＵに対する割込間隔が短くなったのがわかる。
【００８２】
図１３は、図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例２を模擬した図である。
【００８３】
この動作例２では、ＣＰＵへの割込信号発生間隔を維持するための制御が行なわれる。ここでは、闘値レジスタ５６＿１の値が‘３’、読出ポインタ５２の値が‘２’、書込ポインタ５３の値が‘６’である。この状態で読出要求信号に基づく割込みにより、最初の受信データのＦＩＦＯバッファ５１からの読出動作がＣＰＵで行なわれる。引算器５４の結果は、「書込ポインタ５３の値（‘６’）−読出ポインタ５２の値（‘２’）＝‘４’」である。基準値レジスタ５６＿２の値は‘４’であるので、基準値レジスタ５６＿２の値＝引算結果となり、切替器５６＿４３は闘値レジスタ５６＿１の値‘３’をそのまま選択する信号を出力し、これにより闘値レジスタ５６＿１は値‘３’を保持する。その後、ＣＰＵでＦＩＦＯバッファ５１から受信データが読み出されて、そのＦＩＦＯバッファ５１が空の状態になり、読出しが終了する。次いで、受信が行なわれてＦＩＦＯバッファ５１に受信データの蓄積が生じ始め、引算器５４の出力結果が値‘２’から値‘３’になった時点で読出要求信号としてのパルス信号が出力される。
【００８４】
図１４は、図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例３を模擬した図である。
【００８５】
この動作例３では、ＣＰＵへの割込信号発生間隔を長くするための制御が行なわれる。ここでは、闘値レジスタ５６＿１の値が‘３’、読出ポインタ５２の値が‘０’、書込ポインタ５３の値が‘３’である。この状態で読出要求信号に基づく割込みにより、最初の受信データのＦＩＦＯバッファ５１からの読出動作がＣＰＵで行なわれる。引算器５４の結果は、「書込ポインタ５３の値（‘３’）−読出ポインタ５２の値（‘０’）＝‘３’」である。この動作例３は、割込みの発生からＣＰＵによる最初の書込みまでに有した時間がＦＩＦＯバッファ５１における受信処理（１段分の受信処理）よりも速い場合に相当する。基準値レジスタ５６＿２の値は‘４’であるので、基準値レジスタ５６＿２の値＞引算結果となり、切替器５６＿４３はインクリメンタ５６＿４１を選択する信号を出力し、闘値レジスタ５６＿１には新たな値として‘４’が設定される。これにより、ＣＰＵに対して行なわれる割込間隔が前回よりも長くなったことになる。その後、ＣＰＵでＦＩＦＯバッファ５１から受信データが読み出されて、そのＦＩＦＯバッファ５１が空の状態になり、読出しが終了する。次いで、受信が行なわれてＦＩＦＯバッファ５１に受信データの蓄積が生じ始める。
【００８６】
図１５は、図１４に示す動作例３において、ＣＰＵでＦＩＦＯバッファから受信データが読み出されて空の状態になり、その後の受信によりＦＩＦＯバッファに受信データの蓄積が生じ始めるまでの様子を示すタイミングチャートである。
【００８７】
尚、このタイミングチャートでは、読出終了後から受信処理がすぐに開始されている。引算器５４の出力結果が値‘３’から値‘４’になった時点で新たに読出要求信号としてのパルス信号が出力される。ここで、点線で示すように、闘値レジスタ５６＿１に新たな値として‘４’が設定されずに値‘３’の状態のままでは、読出要求信号は、引算器５４の出力結果が値‘２’から値‘３’になった時点で出力される。このように閾値レジスタ５６＿１に値‘３’を設定していたままの場合と比較し、ＣＰＵに対する割込間隔が長くなったのがわかる。
【図面の簡単な説明】
【００８８】
【図１】本発明の一実施形態のデータ送信装置および本発明の一実施形態のデータ受信装置の双方が組み込まれたシリアル通信システムの構成を示す図である。
【図２】図１に示す送信データバッファ部の構成を示す図である。
【図３】書込要求信号生成回路の回路図である。
【図４】図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例１を模擬した図である。
【図５】図４に示す動作例１におけるタイミングチャートである。
【図６】図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例２を模擬した図である。
【図７】図２に示すＦＩＦＯバッファの、書込ポインタと読出ポインタによる動作例３を模擬した図である。
【図８】図７に示す動作例３におけるタイミングチャートである。
【図９】図１に示す受信データバッファ部の構成を示す図である。
【図１０】読出要求信号生成回路の回路図である。
【図１１】図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例１を模擬した図である。
【図１２】図１１に示す動作例１におけるタイミングチャートである。
【図１３】図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例２を模擬した図である。
【図１４】図９に示すＦＩＦＯバッファの、読出ポインタと書込ポインタによる動作例３を模擬した図である。
【図１５】図１４に示す動作例３におけるタイミングチャートである。
【符号の説明】
【００８９】
１  シリアル通信システム
１０  ＣＰＵインターフェース部
１１  割込信号発生部
２０  送信データバッファ部
２１,５１  ＦＩＦＯバッファ
２２,５２  読出ポインタ
２３,５３  書込ポインタ
２４,５４  引算器
２５,５５  ポインタ制御回路
２６  書込要求信号生成回路
２６＿１,５６＿１  閾値レジスタ
２６＿２,５６＿２  基準値レジスタ
２６＿３  書込要求タイミング生成部
２６＿３１，２６＿６,５６＿３１，５６＿６  比較器
２６＿３２，２６＿３３,５６＿３２，５６＿３３  フリップフロップ
２６＿３４,５６＿３４  アンドゲート
２６＿４,５６＿４  閾値書替部
２６＿４１,５６＿４１  インクリメンタ
２６＿４２,５６＿４２  デクリメンタ
２６＿４３，２６＿５,５６＿４３，５６＿５  切替器
２６＿４４,５６＿４４  切替信号生成回路
３０  データ送信部
４０  データ受信部
５０  受信データバッファ部
５６  読出要求信号生成回路
５６＿３  読出要求タイミング生成部
【図１】
2004289805.tif 000003
【図２】
2004289805.tif 000004
【図３】
2004289805.tif 000005
【図４】
2004289805.tif 000006
【図５】
2004289805.tif 000007
【図６】
2004289805.tif 000008
【図７】
2004289805.tif 000009
【図８】
2004289805.tif 000010
【図９】
2004289805.tif 000011
【図１０】
2004289805.tif 000012
【図１１】
2004289805.tif 000013
【図１２】
2004289805.tif 000014
【図１３】
2004289805.tif 000015
【図１４】
2004289805.tif 000016
【図１５】
2004289805.tif 000017