(57)【要約】  無線通信装置は、受信データを一時保存する受信データＦＩＦＯと、受信データＦＩＦＯから受信データを読み出すデータ読出部とを具備する。データ読出部は、読み出すべき受信データが受信データＦＩＦＯに保存されているときは、保存された受信データを読み出して出力する。一方、読み出すべき受信データが受信データＦＩＦＯに保存されておらず、かつ所定の条件が成立するときは、データ読出部は、ダミーの受信データを出力する。また、読み出すべき受信データが受信データＦＩＦＯに保存されておらず、かつ上記所定の条件が成立しないときは、データ読出部は、エラーを出力する。
2012046760.tif 000002
【特許請求の範囲】
【請求項１】
受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置において前記ＦＩＦＯから受信データの読出を行うデータ読出装置であって、
前記受信データの読出要求を受け付ける読出要求受付部と、
前記読出要求受付部が前記読出要求を受け付けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件が成立する場合はダミーの受信データを出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ前記所定の条件が成立しない場合はエラーを出力するデータ出力部と、
を具備するデータ読出装置。
【請求項２】
前記データ出力部は、
前記ＦＩＦＯに入力された前記受信データの数から前記読出要求を受けた回数を減算した差である入出力数差を求める入出力数差算出部と、
前記読出要求受付部が前記読出要求を受け付けたときに、前記入出力数差が正の数である場合は前記ＦＩＦＯから保存された前記読み出すべき受信データを読み出して出力し、前記入出力数差が零または零と所定の閾値との間の値である場合は前記ダミーの受信データを出力し、前記入出力数差が前記閾値以下である場合はエラーを出力する要求処理部と、
を具備する請求項１に記載のデータ読出装置。
【請求項３】
前記データ出力部は、
前記ＦＩＦＯに入力された前記受信データの数から前記読出要求を受けた回数を減算した差である入出力数差を求める入出力数差算出部と、
前記入出力数差が零以下となったときに、前記入出力数差が零以下となっている継続時間を測定するタイマ部と、
前記読出要求受付部が前記読出要求を受け付けたときに、前記入出力数差が正の数である場合は前記ＦＩＦＯから保存された前記読み出すべき受信データを読み出して出力し、前記入出力数差が零以下かつ前記継続時間が所定の閾値よりも短い時間である場合は前記ダミーの受信データを出力し、前記入出力数差が零以下かつ前記継続時間が前記閾値と同じ時間または前記閾値より長い時間である場合はエラーを出力する要求処理部と、
を具備する請求項１に記載のデータ読出装置。
【請求項４】
前記データ出力部は、前記ダミーの受信データを出力すると前記ＦＩＦＯを構成するＲＡＭブロックのうち、受信データを読み出すべきＲＡＭブロックを、次のＲＡＭブロックに進めることを特徴とする請求項２または請求項３に記載のデータ読出装置。
【請求項５】
データを受信する受信部と、
前記受信部が受信した受信データを一時保存するファーストイン・ファーストアウトメモリ（ＦＩＦＯ）と、
前記ＦＩＦＯから前記受信データを読み出すデータ読出部と、
前記データ読出部に受信データを要求し、前記データ読出部から出力される受信データを処理する受信データ処理部と、
を具備し、
前記データ読出部は、前記データ処理部から受信データを要求されたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件が成立する場合はダミーの受信データを出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ前記所定の条件が成立しない場合はエラーを出力する、
通信装置。
【請求項６】
受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置におけるデータ読出方法であって、
受信部がデータを受信して前記ＦＩＦＯに保存する受信ステップと、
受信データ処理部がデータ読出部に前記ＦＩＦＯからの受信データの読出を要求する読出要求ステップと、
データ読出部が前記読出要求ステップにて受信データの読出要求を受けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件が成立する場合はダミーの受信データを出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ前記所定の条件が成立しない場合はエラーを出力するデータ出力ステップと、
を具備するデータ読出方法。
【請求項７】
受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置におけるデータ読出装置としてのコンピュータに、
データの要求を受けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件が成立する場合はダミーの受信データを出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ前記所定の条件が成立しない場合はエラーを出力するデータ出力ステップ、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信データをファーストイン・ファーストアウトメモリ（以下、ＦＩＦＯと称す）に一時保存する通信装置において一時保存された受信データをＦＩＦＯから読み出すデータ読出装置、このデータ読出装置を具備する通信装置、そのデータ読出装置のデータ読出方法およびプログラムに関する。
【背景技術】
【０００２】
無線通信装置などの通信装置によるデータ通信において、パケット単位でデータの通信を行うパケット通信が一般的に行われている。パケット通信を行う際、パケット単位のデータを受信した通信装置が、受信したデータを一時的にＦＩＦＯに保存した後、データ処理を行う方法が知られている。この方法を用いることにより、通信装置は、データを受信するタイミングとデータ処理を行うタイミングとの間の同期をとる必要がなく、データ処理を行うタイミングに自由度を持たせることが出来る。【０００３】
例えば、特許文献１では、ＴＶセットである受信装置が、受信するストリームデータを一時保存するＦＩＦＯと、ＦＩＦＯからデータを取り出すタイミングを示すカウンタとを備え、ＦＩＦＯに保存されたデータの量に応じてカウンタの計数速度を変化させる技術が開示されている。この技術によれば、送信側のクロック速度と受信側のクロック速度とが異なる場合にも、ＦＩＦＯのオーバーフローやアンダーフローの発生を回避し、データを欠落させること無く処理できる、すなわち、動画再生が途切れないようにできるとされている。【０００４】
ところで、パケットの不達により再送信が行われる通信システムでは、受信側の通信装置が、受信したパケットを本来送信されるべき順番に並べ替えた後にデータ処理を行う必要がある。ここで、パケットの不達により再送信が行われる場合、受信側の通信装置は、再送パケットを受信するまでパケットの並び替えを行うことができず、データ処理が遅れてしまうことがある。以下、図１０〜図１２を参照して、パケットの再送に伴うデータ処理の遅れについて説明する。【０００５】
図１０は、受信データを一時保存するＦＩＦＯを備えた通信装置の概略構成例を示す構成図である。図１０の無線通信装置１００１において、無線通信部１１００は、パケットを無線信号にて受信すると、受信された無線信号を復調し、復調されたパケットを受信／再送処理部１２１０に出力する。無線通信部１１００から出力されるパケットには、データが格納されているデータパケットと、無線通信に関するコマンド（制御情報）が格納されている制御パケットとがある。【０００６】
受信／再送処理部１２１０は、無線通信部１１００からパケットが出力されると、出力されたパケットがデータパケットである場合は、ペイロード領域からデータを取り出して受信データＦＩＦＯ１２２０に出力する。一方、無線通信部１１００から出力されたパケットが制御パケットである場合は、ペイロード領域からコマンドを取り出してコマンド処理部１３１０に出力する。【０００７】
また、受信／再送処理部１２１０は、パケットに含まれるシーケンス番号を参照してパケットの不達を検出する。受信／再送処理部１２１０がパケットの不達を検出した場合、送信／再送処理部１４３０が再送信要求信号を生成し、無線通信部１１００が、この再送信要求信号を変調して無線信号を相手側通信装置に送信する。
さらに、受信／再送処理部１２１０は、パケットの不達を検出した場合、データやコマンドを出力せずに受信／再送処理部１２１０の内部に一時保存する。受信／再送処理部１２１０は、パケットの再送を待って、一時保存したデータやコマンドを本来送信されるべき順番に並べ直し、並べ直した順番に従って、データを受信データＦＩＦＯ１２２０に出力し、コマンドをコマンド処理部１３１０に出力する。【０００８】
一方、受信データ処理部１２５０は、ほぼ一定時間ごとに受信データＦＩＦＯ１２２０からデータを読み出して処理する。その際、パケットの不達などにより、読み出すべきデータが受信データＦＩＦＯ１２２０に無い場合は、FIFO Emptyエラーを出力する。【０００９】
図１１は、パケットの不達によってFIFO Emptyエラーが生じる動作例を示すシーケンス図である。
図１１に示す例では、無線通信部１１００が、データパケットまたは制御パケットを、受信／再送処理部１２１０にほぼ定期的に出力する（シーケンスＳ１１０１、Ｓ１１１１、Ｓ１１３１、Ｓ１１４１、Ｓ１１６１、Ｓ１１７１）。【００１０】
シーケンスＳ１１２１では、無線通信部１１００が通信信号を受信できず、無線通信部１１００は、データパケット＃２を出力しない。その後、受信／再送処理部１２１０は、データパケット＃４の出力を受けた時点（シーケンスＳ１１４１）では、データパケット＃４に含まれるデータ＃４を受信データＦＩＦＯ１２２０に保存せずに、受信／再送処理部１２１０の内部に一時的に保存する。次に、受信／再送処理部１２１０は、データパケット＃２の再送（シーケンスＳ１１６１）を受けた後、本来送信されるべき順番であるデータ＃２、データ＃４の順に並べ直して、受信データＦＩＦＯ１２２０に保存する（シーケンスＳ１１６２、Ｓ１１６４）。【００１１】
一方、受信データ処理部１２５０は、受信データＦＩＦＯ１２２０から、ほぼ定期的にデータを読み出す（シーケンスＳ１２０１、Ｓ１２１１）。
受信データ処理部１２５０がシーケンスＳ１２０１にてデータ読出を行った時点では、受信データＦＩＦＯ１２２０には、すでにデータ＃０が書き込まれており（シーケンスＳ１１０２）、受信データ処理部１２５０は、データ＃０を取得できる（シーケンスＳ１２０２）。
これに対して、受信データ処理部１２５０がシーケンスＳ１２１１にてデータ読出を行った時点では、データパケット＃２の不達（シーケンスＳ１１２１）により、受信データＦＩＦＯ１２２０には読出可能なデータが保存されておらず、FIFO Emptyエラーが発生する（シーケンスＳ１２１２）。【００１２】
FIFO Emptyエラーが発生した場合、無線通信装置１００１は、例えば通信を一旦リセットして通信をやり直す。このように、FIFO Emptyエラーは、通信装置に一時的な不具合が発生して通信に支障が出た際にリセット等の処理を行う契機として有用であるが、FIFO Emptyエラーが頻発すると、通信装置がリセットを繰り返すなどして通信に大幅な遅延が生じるおそれがある。【００１３】
そこで、FIFO Emptyエラーの頻発を防ぐために、ＦＩＦＯからデータを読み出すタイミングに待ち時間を設ける方法が知られている。
図１２は、ＦＩＦＯからデータを読み出すタイミングに待ち時間を設けた通信装置の動作例を示すシーケンス図である。図１２の例では、受信データ処理部１２５０は、受信データＦＩＦＯ１２２０からのデータの読み出しタイミングを、所定の待ち時間ｔ１００１だけ遅らせている。これにより、受信データ処理部１２５０が、シーケンスＳ１４１１にてデータ読出を行う時点では、既に受信データＦＩＦＯ１２２０にデータ＃２が保存されており、受信データ処理部１２５０は、当該データ＃２を読み出すことができる。したがって、FIFO Emptyエラーは発生しない。
このように、無線通信装置１００１は、受信データＦＩＦＯ１２２０からデータを読み出すタイミングに待ち時間を設けることにより、FIFO Emptyエラーの頻発を防止している。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】日本国特開２００６−６７１５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
上述したように、ＦＩＦＯからデータを読み出すタイミングに待ち時間を設けることで、FIFO Emptyエラーの頻発を防ぐことができる。しかしながら、受信データ処理部がデータを取得するタイミングが遅くなってしまう。【００１６】
本発明は、このような事情を考慮してなされたものであり、その目的は、FIFO Emptyエラーの頻発を防ぎ、かつ、受信データ処理部が、より早くデータを取得できる通信装置を提供することにある。
【課題を解決するための手段】
【００１７】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるデータ読出装置は、受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置において前記ＦＩＦＯから受信データの読出を行うデータ読出装置であって、前記受信データの読出要求を受け付ける読出要求受付部と、前記読出要求受付部が前記読出要求を受け付けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件を満たす場合はダミーの受信データを出力するデータ出力部とを具備する。【００１８】
また、本発明の一態様による通信装置は、データを受信する受信部と、前記受信部が受信した受信データを一時保存するファーストイン・ファーストアウトメモリ（ＦＩＦＯ）と、前記ＦＩＦＯから前記受信データを読み出すデータ読出部と、前記データ読出部に受信データを要求し、前記データ読出部から出力される受信データを処理する受信データ処理部とを具備し、前記データ読出部は、前記データ処理部から受信データを要求されたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件を満たす場合はダミーの受信データを出力する。【００１９】
また、本発明の一態様によるデータ読出方法は、受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置におけるデータ読出方法であって、受信部がデータを受信して前記ＦＩＦＯに保存する受信ステップと、受信データ処理部がデータ読出部に前記ＦＩＦＯからの受信データの読出を要求する読出要求ステップと、データ読出部が前記読出要求ステップにて受信データの読出要求を受けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件を満たす場合はダミーの受信データを出力するデータ出力ステップとを具備する。【００２０】
また、本発明の一態様によるプログラムは、受信データがファーストイン・ファーストアウトメモリ（ＦＩＦＯ）に一時保存される通信装置におけるデータ読出装置としてのコンピュータに、データの要求を受けたときに、読み出すべき受信データが前記ＦＩＦＯに保存されている場合は保存された前記読み出すべき受信データを読み出して出力し、読み出すべき受信データが前記ＦＩＦＯに保存されておらずかつ所定の条件を満たす場合はダミーの受信データを出力するデータ出力ステップを実行させる。
【発明の効果】
【００２１】
本発明によれば、通信装置におけるFIFO Emptyエラーの頻発を防ぎ、かつその通信装置の受信データ処理部がより早くデータを取得できるという効果がある。
【図面の簡単な説明】
【００２２】
【図１】本発明の一実施形態における無線通信装置を示すブロック図である。
【図２】同実施形態において、無線通信部が受信するパケットのデータを示すデータ構成図である。
【図３】同実施形態において、受信データの入力を受けたときのファーストイン・ファーストアウトメモリ（ＦＩＦＯ）の保存データを示す図である。
【図４】同実施形態において、受信データの入力および読出要求を受けたときのＦＩＦＯの保存データを示す図である。
【図５】同実施形態において、図４の状態から、さらに受信データの入力を受けたときのＦＩＦＯの保存データを示す図である。
【図６】同実施形態において、無線信号を受信した際の無線通信装置の動作を示すシーケンス図である。
【図７】同実施形態における、データ読出部の動作を示すフローチャートである。
【図８】本発明の一変形例における無線通信装置を示すブロック図である。
【図９】同変形例における、データ読出部の動作を示すフローチャートである。
【図１０】受信データを一時保存するＦＩＦＯを備えた従来の通信装置を示す構成図である。
【図１１】図１０に示された通信装置において、パケットの不達によってFIFO Emptyエラーが生じる動作を示すシーケンス図である。
【図１２】ＦＩＦＯからデータを読み出すタイミングに待ち時間を設けた従来の通信装置の動作を示すシーケンス図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照して、本発明の実施形態について説明する。
図１は、本発明の一実施形態における無線通信装置の概略構成を示す構成図である。図１において、無線通信装置１は、無線通信部（受信部）１００とベースバンド処理部２００とを具備する。ベースバンド処理部２００は、受信／再送処理部２１０と、受信データＦＩＦＯ（ＦＩＦＯ）２２０と、データ読出部２３０と、受信データ処理部２５０と、コマンド処理部３１０と、送信データ処理部４１０と、送信データＦＩＦＯ４２０と、送信／再送処理部４３０と、を具備する。受信データＦＩＦＯ２２０は、受信データバッファ２２１と、入力ポインタ記憶部２２２と、出力ポインタ記憶部２２３とを具備する。データ読出部２３０は、読出要求受付部２３１と、データ出力部２４０とを具備する。データ出力部２４０は、入出力数差算出部２４１と、要求処理部２４２とを具備する。
【００２４】
無線通信部１００は、アンテナを備え、無線信号にてデータパケットや制御パケットを受信し、受信した無線信号に対して復調処理を行い、復調されたデータパケットや制御パケットをベースバンド処理部２００に出力する。
ベースバンド処理部２００は、無線通信部１００から出力されるデータパケットや制御パケットからパケット単位の受信データやコマンド（制御情報）を取り出し、取り出したコマンドに基づいて、通信データを復元する。
【００２５】
受信／再送処理部２１０は、無線通信部１００から出力されるデータパケットから受信データを取り出して受信データＦＩＦＯ２２０に書き込む。また、受信／再送処理部２１０は、無線通信部１００から出力される制御パケットからコマンドを取り出してコマンド処理部３１０に出力する。加えて、受信／再送処理部２１０は、パケットの不達やエラーパケットを検知した場合、送信／再送処理部２１０にその旨を通知する。さらに、受信／再送処理部２１０は、パケットの不達やエラーパケットを検知した場合、この検知の後に無線通信部１００から出力されるパケットから読み出した受信データやコマンドを出力せずに一時保存しておく。そして、受信／再送処理部２１０は、不達パケットやエラーパケットの再送を受けた後に、受信データおよびコマンドを、本来送信されるべき順番に並べ直してから、受信データＦＩＦＯへの受信データの書込、および、コマンド処理部３１０へのコマンドの出力を行う。
【００２６】
受信データＦＩＦＯ２２０は、受信／再送処理部２１０によって書き込まれる受信データを一時保存する。
受信データバッファ２２１は、受信／再送処理部２１０によって書き込まれる受信データを一時保存するための記憶領域が分割されたＲＡＭブロック（Random Access Memory Block）を有するバッファである。入力ポインタ記憶部２２２は、受信データバッファ２２１の有するＲＡＭブロックのうち、受信／再送処理部２１０が受信データを書き込むべきＲＡＭブロックを示すポインタである。
出力ポインタ記憶部２２３は、受信データバッファ２２１の有するＲＡＭブロックのうち、データ読出部２３０が読み出すべき受信データが保存されているＲＡＭブロックを示すポインタである。
【００２７】
データ読出部２３０は、受信データ処理部２５０から出力される受信データの読出要求に応じて、受信データＦＩＦＯ２２０から受信データを読み出す。
読出要求受付部２３１は、受信データの読出要求を受け付ける。
データ出力部２４０は、読出要求受付部２３１が読出要求を受け付けると、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されているときは、この保存された読み出すべき受信データを読み出して出力する。一方、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されていないときは、データ出力部２４０は、ダミーの受信データを出力する。なお、ここでいう「読み出すべき受信データ」は、受信データＦＩＦＯ２２０に保存されている受信データのうち、未だ受信データＦＩＦＯ２２０から読み出されておらず、かつ、その受信データの代わりにダミーの受信データが出力されていない受信データである。
入出力数差算出部２４１は、受信データＦＩＦＯ２２０に入力された受信データの数から読出要求を受けた数を減算した差である入出力数差を求める。
要求処理部２４２は、読出要求受付部２３１が読出要求を受け付けると、入出力数差が正の数（入出力数差＞０）であるときは受信データＦＩＦＯ２２０から受信データを読み出して出力し、入出力数差が零または零と所定の閾値との間の値（０≧入出力数差＞閾値）であるときは、ダミーの受信データを出力し、入出力数差が閾値以下（入出力数差≦閾値）であるときは、エラーを出力する。
【００２８】
受信データ処理部２５０は、データ読出部２３０に対して受信データの読出を要求し、データ読出部２３０から出力されるパケット単位の受信データから、通信データを復元する。
コマンド処理部３１０は、受信／再送処理部２１０から出力されるコマンドに基づいて、無線通信装置１の各部に制御情報を出力する。なお、ここでいう「コマンド」は、無線通信装置１が通信を行う際の通信方式を規定する制御情報であり、例えば、無線通信部１００が無線信号の変調や復調を行う際の変調方式などの情報が含まれている。
送信データ処理部４１０は、無線通信装置１が送信するデータをパケット単位に分割して送信データＦＩＦＯに書き込む。
送信データＦＩＦＯ４２０は、送信データ処理部４１０から書き込まれるパケット単位の送信データを一時保存する。
送信／再送処理部４３０は、受信／再送処理部２１０から出力される不達パケットやエラーパケットの通知に基づいて、パケットの再送を要求する再送要求を生成し、無線通信部１００に出力する。
【００２９】
図２は、無線通信部が受信するパケットのデータ構成の例を示すデータ構成図である。
本実施形態では、映像や音声やウェブデータなどの通信データと、無線通信装置１の各部の動作を制御するためのコマンドとが、いずれもパケット化されて通信される。
図２において、パケットＡ１００は、ヘッダ領域Ａ１１０とペイロード領域Ａ１２０とを含む。
ヘッダ領域Ａ１１０は、データ／制御フラグ領域Ａ１１１と、あて先情報領域Ａ１１２と、シーケンス番号領域Ａ１１３と、初送／再送フラグ領域Ａ１１４とを含む。
【００３０】
データ／制御フラグ領域Ａ１１１には、ペイロードの内容がデータかコマンドかを表すデータ／制御フラグが格納される。
あて先情報領域Ａ１１２には、パケットのあて先を示すアドレス情報が格納される。
シーケンス番号領域Ａ１１３には、パケットを識別するためのシーケンス番号が格納される。このシーケンス番号は、パケットの送信順を示し、受信側でパケットを送信順に並べ直すために用いられる。また、シーケンス番号は、パケットの再送要求を行う際に、再送対象のパケットを特定するために用いられる。
初送／再送フラグ領域Ａ１１４には、パケットが初送か再送かを示す初送／再送フラグが格納される。
ペイロード領域には、パケット単位に分割された通信データ、あるいは、コマンドが格納される。
【００３１】
次に、図３〜図５を参照して受信データＦＩＦＯ２２０が構成するＦＩＦＯのデータ構成について説明する。
図３は、１つの受信データの入力を受けたときの受信データＦＩＦＯ２２０の状態を示す図である。受信データＦＩＦＯ２２０の受信データバッファ２２１は、ｎ（ｎは正整数）個のＲＡＭブロックＲＢ＃０〜ＲＢ＃（ｎ−１）を具備する。ここで、ＲＡＭブロックは、受信データバッファ２２１が具備する記憶領域をｎ分割して得られる記憶領域であり、各ＲＡＭブロックは、１つのパケットに含まれる受信データを全て格納可能な容量を有する。
【００３２】
入力ポインタＰｉｎは、データ入力を行うＲＡＭブロックを指し示すポインタであり、受信データＦＩＦＯ２２０に入力された受信データの数（読出済みの受信データの数を含む）を示す。図３の例では、１つの受信データがＦＩＦＯに入力されており、入力ポインタＰｉｎの値は「１」となっている。この「１」は、次に受信データＦＩＦＯ２２０に入力される受信データの格納場所がＲＡＭブロック＃１であることを示している。
【００３３】
受信／再送処理部２１０から受信データが出力されると、入力ポインタＰｉｎの指し示すＲＡＭブロックに書き込まれ、入力ポインタＰｉｎの値に１が加算（インクリメント）される。また、入力ポインタＰｉｎが最後尾のＲＡＭブロックの番号であるｎ−１より大きくなる場合、入力ポインタＰｉｎの値は０に戻る。
【００３４】
出力ポインタＰｏｕｔは、データ出力を行うＲＡＭブロックを指し示すポインタであり、データ読出部２３０が受信データ処理部２５０から読出要求を受けた回数を示す。図３の例では、データ読出部２３０は未だ読出要求を受けておらず、出力ポインタＰｏｕｔの値は「０」となっている。この「０」は、次に受信データＦＩＦＯ２２０が読出要求を受けた際に読み出す受信データの格納場所がＲＡＭブロック＃０であることを示している。
【００３５】
データ読出部２３０が読出要求を受けると、出力ポインタＰｏｕｔの指し示すＲＡＭブロックの受信データが読み出され、出力ポインタＰｏｕｔの値に１が加算される。また、出力ポインタＰｏｕｔが最後尾のＲＡＭブロックの番号であるｎ−１より大きくなる場合、出力ポインタＰｏｕｔの値は０に戻る。
【００３６】
図４は、１つの受信データの入力を受け、読出要求を３回受けたときの受信データＦＩＦＯ２２０の状態を示す図である。
受信／再送処理部２１０が読出要求を受けると、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されていなくても、出力ポインタＰｏｕｔの値に１が加算される。
これにより、入力ポインタＰｉｎの値よりも出力ポインタＰｏｕｔの値が大きくなる。図４の例では、入力ポインタＰｉｎの値が「１」であるのに対して、出力ポインタＰｏｕｔの値は「３」となっている。
【００３７】
読み出すべき受信データが受信データＦＩＦＯ２２０に無い状態では、後述するように、データ読出部２３０は、読出要求に対してダミーの受信データを出力する。そして、入力ポインタＰｉｎの値よりも出力ポインタＰｏｕｔの値が大きい状態で、受信データＦＩＦＯ２２０に受信データが入力された場合、この入力された受信データの代わりにすでにダミーの受信データが出力されているので、この入力された受信データは読出済みの受信データとして扱われる。すなわち、データ読出部２３０がその受信データを読み出して出力することは無い。
例えば、図４の状態から受信データＦＩＦＯ２２０に受信データが入力された場合、入力ポインタＰｉｎの値は１を加算されて「２」となるが、その受信データがデータ読出部２３０によって読み出されることは無い。
【００３８】
なお、受信データＦＩＦＯ２２０は、巡回判定フラグを具備して、出力ポインタＰｏｕｔが入力ポインタＰｉｎよりも大きい値を取っている場合と、入力ポインタＰｉｎが出力ポインタＰｏｕｔよりも一周多く巡回した場合とを区別する。
例えば、受信データ処理部に１つのデータが書き込まれている場合、図４で説明したように、Ｐｉｎの値は「１」となる。
一方、受信データ処理部にｎ＋１個のデータが書き込まれている場合も、Ｐｉｎの値は「１」となる。そこで、受信データＦＩＦＯ２２０は、巡回判定フラグを具備し、Ｐｉｎの値がＰｏｕｔの値よりも大きい場合は、巡回判定フラグの値を「１」とし、Ｐｉｎの値がＰｏｕｔの値よりも小さい場合は、巡回判定フラグの値を「０」とする。
【００３９】
したがって、出力ポインタＰｏｕｔが入力ポインタＰｉｎよりも大きい値を取っている場合には巡回判定フラグの値は「０」となり、入力ポインタＰｉｎが出力ポインタＰｏｕｔよりも一周多く巡回した場合には巡回判定フラグの値は「１」となり、両者を区別することができる。
【００４０】
なお、入力ポインタＰｉｎの値よりも出力ポインタＰｏｕｔの値が大きい状態で、受信データＦＩＦＯ２２０に受信データが入力され、入力ポインタＰｉｎの値が出力ポインタＰｏｕｔの値よりも大きい状態となった場合は、データ読出部２３０は、読出要求に応じてその受信データを読み出す。
【００４１】
図５は、図４の状態から、受信データＦＩＦＯ２２０が３つの受信データの入力を受けたときの受信データＦＩＦＯ２２０の状態を示す図である。受信データＦＩＦＯ２２０が３つの受信データの入力を受けることにより、図４の状態でにおける入力ポインタＰｉｎの値「１」に、受信データ数の「３」が加算され、入力ポインタＰｉｎの値は「４」となる。
この図５の状態でデータ読出部２３０が読出要求を受けると、データ読出部２３０はＲＡＭブロック＃４に格納されている受信データを読み出して出力する。
【００４２】
次に、図６および図７を参照して、無線信号を受信した際の無線通信装置１の動作について説明する。まず、データ読出部２３０の動作について説明する。
図６は、無線信号を受信した際の無線通信装置１の動作例を示すシーケンス図である。
まず、無線通信部１００は、データパケット＃０を無線信号にて受信すると、その無線信号を復調し、復調されたデータパケット＃０を受信／再送処理部２１０に出力する（シーケンスＳ１０１）。
【００４３】
そして、受信／再送処理部２１０は、無線通信部１００から出力されたデータパケット＃０のペイロード領域から受信データ＃０を読み出して、受信データＦＩＦＯ２２０に書き込む（シーケンスＳ１０２）。具体的には、受信／再送処理部２１０は、受信データバッファ２２１のＲＡＭブロックのうち、入力ポインタＰｉｎの値「０」が示すＲＡＭブロック＃０に受信データを書き込み、入力ポインタＰｉｎの値に１を加算して「１」とする。これにより、受信データＦＩＦＯ２２０は、図３に示す状態となる。
【００４４】
その後、受信データ処理部２５０から読出要求受付部２３１に読出要求が出力されると（シーケンスＳ２０１）、読出要求受付部２３１は、その読出要求を入出力数差算出部２４１に出力し、入出力数差算出部２４１は、入力ポインタＰｉｎから出力ポインタＰｏｕｔを減算した差である入出力数差を算出し、算出した入出力数差を要求処理部２４２に出力する。そして、要求処理部２４２は、その入出力数差が、予め設定された閾値Ｒｅｇ１以下か否か、および、その入出力数差が０以下か否かを判定する。
【００４５】
ここでは、入出力数差は０よりも大きい「１」であり、これは、読み出すべき受信データが、受信データＦＩＦＯ２２０に保存されていることを示している。そこで、要求処理部２４２は、受信データバッファ２２１のＲＡＭブロックのうち、出力ポインタＰｏｕｔの値「０」が示すＲＡＭブロック＃０から受信データ＃０を読み出し（シーケンスＳ２０２、Ｓ２０３）、読み出した受信データ＃０を、受信データ処理部２５０に出力する（シーケンスＳ２０４）。
【００４６】
一方、受信／再送処理部２１０は、無線通信部１００から制御パケット＃１が出力されると（シーケンスＳ１１１）、制御パケット＃１のペイロード領域からコマンドを読み出して受信データＦＩＦＯ２２０に書き込む（シーケンスＳ１１２）。
その後、無線通信部１００は、データパケット＃２を含む無線信号を受信できず、制御パケット＃１の次に無線通信部１００から出力されるはずであったデータパケット＃２は出力されない（シーケンスＳ１２１）。
【００４７】
次に、無線通信部１００から制御パケット＃３が出力されると（シーケンスＳ１３１）、受信／再送処理部２１０は、制御パケット＃３のシーケンス番号を参照してパケット＃２が未達であったことを検出し、パケット＃２が未達であることを示す未達通知を送信／再送処理部４３０に出力する（シーケンスＳ１３２）。次に、送信／再送処理部４３０は、この未達通知に基づいて、パケット＃２のシーケンス番号を含む再送要求を生成し、無線通信部１００に出力する（シーケンスＳ１５１）。この再送要求の出力を受けた無線通信部１００は、出力された再送要求を変調処理して再送要求信号を生成し、相手側通信装置に送信する（シーケンスＳ１５１）。
【００４８】
また、受信／再送処理部２１０は、無線通信部１００から出力された制御パケット＃３のペイロード領域からコマンド＃３を読み出す。ただし、この時点ではパケット＃２が未達であるため、受信／再送処理部２１０はコマンド＃３をコマンド処理部３１０へ出力せずに、受信／再送処理部２１０内で一時保存する。
次に、受信／再送処理部２１０は、無線通信部１００からデータパケット＃４が出力されると（シーケンスＳ１４１）、データパケット＃４のペイロード領域からデータ＃４を読み出す。ただし、この時点ではパケット＃２が未達であるため、受信／再送処理部２１０はデータ＃４を受信データＦＩＦＯ２２０に出力せずに、受信／再送処理部２１０内で一時保存する。
【００４９】
また、シーケンスＳ１５１で送信した再送要求信号に基づいて、相手側通信装置からデータパケット＃２を含む無線信号が送信されると、無線通信部１００は、データパケット＃２の無線信号を受信し、この無線信号を復調してデータパケット＃２を取得し、取得したデータパケット＃２を受信／再送処理部２１０に出力する（シーケンスＳ１６１）。
次に、受信／再送処理部２１０は、無線通信部１００からデータパケット＃２が出力されると、データパケット＃２のシーケンス番号から不達データが再送されたことを検出する。
【００５０】
また、受信／再送処理部２１０は、データパケット＃２のペイロード領域から受信データ＃２を読み出す。そして、受信／再送処理部２１０は、データ＃２と、一時保存していたコマンド＃３とデータ＃４とを、本来の送信順であるデータ＃２、コマンド＃３、データ＃４の順に並べ替え、まず、データ＃２を受信データＦＩＦＯ２２０に出力し（シーケンスＳ１６２）、次にコマンド＃３をコマンド処理部３１０に出力し（シーケンスＳ１６３）、その後、データ＃４を受信データＦＩＦＯ２２０に出力する（シーケンスＳ１６４）。
【００５１】
また、受信／再送処理部２１０は、データパケット＃２の再送の後に送信されたデータパケット＃５の出力を無線通信部１００から受けると（シーケンスＳ１７１）、データパケット＃５からデータ＃５を読み出し、シーケンスＳ１６４にてデータ＃４を受信データＦＩＦＯ２２０に出力した後に、データ＃５を受信データＦＩＦＯ２２０に出力する（シーケンスＳ１７２）。
【００５２】
一方、シーケンスＳ１６２にてデータ＃２が受信データＦＩＦＯ２２０に保存される前に、受信データ処理部２５０から読出要求が出力されると（シーケンスＳ２１１）、読出要求受付部２３１は、出力された読出要求を入出力数差算出部２４１に出力し、入出力数差算出部２４１は、入力ポインタＰｉｎから出力ポインタＰｏｕｔを減算した差である入出力数差を算出し、算出した入出力数差を要求処理部２４２に出力する。そして、要求処理部２４２は、この入出力数差が閾値Ｒｅｇ１以下か否か、および、この入出力数差が０以下か否かを判定する。
【００５３】
この時点では、入出力数差は「０」であり、このことは、読み出すべき受信データが受信データＦＩＦＯ２２０に無いことを示している。一方、本実施形態では、閾値Ｒｅｇ１は、「−２０」に設定されており、入出力数差は閾値よりも大きい値となっている。このことは、FIFO Emptyエラーを出力せずにダミーの受信データであるゼロデータを出力すべきであることを示している。
そこで、要求処理部２４２は、受信データ処理部２５０にゼロデータを出力する（シーケンスＳ２１４）。
【００５４】
さらに、シーケンスＳ１６２にてデータ＃２が受信データＦＩＦＯ２２０に保存される前に、受信データ処理部２５０から読出要求が出力されると（シーケンスＳ２２１）、データ読出部２３０は、シーケンスＳ２１４の場合と同様に、受信データ処理部２５０にゼロデータを出力する（シーケンスＳ２１４）。この時点では、受信データＦＩＦＯ２２０に入力されたデータが１つ（シーケンスＳ１０２）であるのに対して読出要求は３回（シーケンスＳ２０１、Ｓ２１１、Ｓ２２１）行われており、受信データＦＩＦＯ２２０は、図４に示す状態となる。
【００５５】
そして、シーケンスＳ１７２にてデータ＃５が受信データＦＩＦＯ２２０に保存された後に、受信データ処理部２５０から読出要求が出力されると（シーケンスＳ２３１）、読出要求受付部２３１は、この読出要求を入出力数差算出部２４１に出力し、入出力数差算出部２４１は、入力ポインタＰｉｎから出力ポインタＰｏｕｔを減算した差である入出力数差を算出し、算出した入出力数差を要求処理部２４２に出力する。そして、要求処理部２４２は、この入出力数差が閾値Ｒｅｇ１以下か否か、および、この入出力数差が０以下か否かを判定する。
この時点では、受信データＦＩＦＯ２２０に保存されたデータは４つであり（データ＃０、＃２、＃４、＃５）、また、既に行われている読出要求は３回（シーケンスＳ２０１、Ｓ２１１、Ｓ２２１）である。したがって、入出力数差は０よりも大きい「１」となる。そこで、要求処理部２４２は、受信データバッファ２２１のＲＡＭブロックのうち、出力ポインタＰｏｕｔの値「３」が示すＲＡＭブロック＃３から受信データ＃５を読み出し（シーケンスＳ２３２、Ｓ２３３）、読み出した受信データ＃０を、受信データ処理部２５０に出力する（シーケンスＳ２３４）。
【００５６】
このように、要求処理部２４２は、パケット不達により受信データＦＩＦＯ２２０にデータが存在しない場合にゼロデータを出力することで、FIFO Emptyエラーの頻発を防いでいる。
【００５７】
図７は、データ読出部２３０の動作例を示すフローチャートである。
データ読出部２３０において、まず、読出要求受付部２３１は、受信データ処理部２５０からの読出要求を待ち受ける（ステップＳ３０１）。
受信データ処理部２５０から読出要求が出力されると、読出要求受付部２３１は、この読出要求を入出力数差算出部２４１に出力（転送）する。そして、入出力数差算出部２４１は、入力ポインタ記憶部２２２の記憶する入力ポインタＰｉｎの値から、出力ポインタ記憶部２２３の記憶する出力ポインタＰｏｕｔの値を減算することにより、ＦＩＦＯに入力された受信データの数から、読出要求を受けた回数を減算した差である入出力数差を求め、要求処理部２４２に出力する（ステップＳ３０２）。
入出力数差算出部２４１から入出力数差が出力されると、要求処理部２４２は、入出力数差が予め記憶する閾値Ｒｅｇ１以下か否かを判定する（ステップＳ３０３）。ここで、Ｒｅｇ１は、負の整数であり、例えば「−２０」に設定されている。
入出力数差がＲｅｇ１以下であると判定した場合（ステップＳ３０３：ＹＥＳ）、要求処理部２４２は、FIFO Emptyエラーを受信データ処理部２５０に出力する（ステップＳ３１１）。その後、図７に示された処理を終了する。
【００５８】
一方、ステップＳ３０３において入出力数差がＲｅｇ１より大きいと判定した場合（ステップＳ３０３：ＮＯ）、要求処理部２４２は、入出力数差が０以下か否かを判定する（ステップＳ３２１）。０以下であると判定した場合（ステップＳ３２１：ＹＥＳ）、要求処理部２４２は、ダミーの受信データとして例えばゼロデータを出力し（ステップＳ３３１）、出力ポインタＰｏｕｔの値に１を加算する（ステップＳ３３２）。なお、ここでいう「ゼロデータ」は、全てのビットの値が０のデータである。例えば、１つのパケットに含まれる受信データのサイズが１２ビット（ｂｉｔ）の場合は、０ｘ０００（値が「０」のビットが１２個並んだビット列）である。
一方、ステップＳ３２１において、入出力数差が０よりも大きいと判定した場合（ステップＳ３２１：ＮＯ）、受信データＦＩＦＯ２２０に、読み出すべき受信データが保存されていることになる。そこで、要求処理部２４２は、受信データＦＩＦＯ２２０の、出力ポインタＰｏｕｔの示すＲＡＭブロックから受信データを読み出し、読み出した受信データを受信データ処理部２５０に出力する（ステップＳ３４１）。その後、ステップＳ３３２へ進む。
【００５９】
このように、データ読出部２３０は、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されているときはそのデータを読み出して出力する。一方、読み出すべき受信データが受信データＦＩＦＯ２２０に無いときは、読出要求を受けた回数が受信データＦＩＦＯ２２０に入力されたデータの数よりも所定の閾値（−Ｒｅｇ１）以上多い場合は、FIFO Emptyエラーを出力し、読出要求を受けた回数から受信データＦＩＦＯ２２０に入力されたデータの数を引いた差がＲｅｇ１以下の場合は、ダミーの受信データを出力する。
【００６０】
これにより、データ読出部２３０は、再送要求が生じて受信データＦＩＦＯ２２０への受信データの書込が一時的に遅れた場合は、FIFO Emptyエラーを出力せず、一方、何らかの原因により、受信データＦＩＦＯ２２０に受信データが出力されない場合や受信データＦＩＦＯ２２０に出力される受信データの数が定常的に少ない場合は、FIFO Emptyエラーを出力する。
【００６１】
以上のように、データ読出部２３０が、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されているときは保存されたデータを読み出して出力し、読み出すべき受信データが受信データＦＩＦＯ２２０に無いときは、ダミーの受信データを出力することにより、FIFO Emptyエラーの発生頻度を防ぐことができる。また、受信データ処理部２５０が読出要求を出力するタイミングを遅延させる必要がないので、受信データ処理部２５０は、より早くデータを取得できる。
【００６２】
また、データ読出部２３０は、読み出すべき受信データが受信データＦＩＦＯ２２０に無い場合に、受信データＦＩＦＯ２２０に入力された受信データの数から読出要求を受けた回数を減算した差である入出力数差を求め、この入出力数差が閾値Ｒｅｇ１（負の整数）よりも大きいときはダミーの受信データを出力し、入出力数差が閾値Ｒｅｇ１以下であるときはFIFO Emptyエラーを出力するので、再送要求が生じて受信データＦＩＦＯ２２０への受信データの出力が一時的に遅れた場合は、FIFO Emptyエラーを出力せず、一方、受信データＦＩＦＯ２２０に受信データが出力されない場合や受信データＦＩＦＯ２２０に出力される受信データが定常的に少ない場合は、FIFO Emptyエラーを出力することができる。したがって、パケットの再送によって受信データＦＩＦＯ２２０へのデータ書込が一時的に遅れた場合にはFIFO Emptyエラーの発生を抑え、一方、パケットの再送以外の理由により、受信データＦＩＦＯ２２０にデータが書き込まれない場合や、受信データＦＩＦＯ２２０へのデータ書込が遅れた状態が継続する場合には、FIFO Emptyエラーとすることができる。
【００６３】
また、要求処理部２４２は、ダミーの受信データを出力すると、出力ポインタＰｏｕｔの値に「１」を加算することにより、出力ポインタＰｏｕｔの指し示す受信データを読み出すべきＲＡＭブロックを、次のＲＡＭブロックに進めるので、上述のように、受信データ処理部２５０が、より早くデータを取得可能とし、しかも、ダミーの受信データと実際の受信データとが重複して受信データ処理部２５０に出力されることを防止できる。
【００６４】
ここで、データ読出部２３０がダミーのデータを出力した場合、このデータに対応する本来のデータは受信データ処理部２５０に出力されない。例えば、図６の例において、データ読出部２３０は、シーケンスＳ２１４にてゼロデータを出力している。このゼロデータは、データ＃２の代わりに出力されるダミーのデータであり、無線通信部１００が受信するデータ＃２は、受信データ処理部２５０には出力されない。
しかし、無線通信部１００が受信するデータは、電波状況によっては失われる可能性のあるデータであり、無線通信装置の受信性能を大幅に劣化させるものではないと考えられる。
【００６５】
なお、受信データにゼロデータが含まれる場合、アプリケーションなどの上位のレベルにてデータ再送の要否を判定し、再送が必要なデータのみ再送要求が行われることが考えられる。この場合、パケットの再送要求によって受信データＦＩＦＯへのデータ書込が遅れるたびにFIFO Emptyエラーとして最初から通信をやり直すよりも、全体としての通信時間を短縮できる。
【００６６】
なお、Ｒｅｇ１＝０に設定されている場合、無線通信装置１は、一般的な無線通信装置と同様に、読み出すべき受信データが無いときは、FIFO Emptyエラー状態となる。そこで、無線通信装置１が、Ｒｅｇ１＝０に設定される通常モードと、Ｒｅｇ１が所定の閾値に設定される高速モードとを備え、両モードを切替可能としてもよい。あるいは、無線通信装置１が、Ｒｅｇ１の値として複数の閾値を予め記憶しておき、Ｒｅｇ１の値を変更可能としてもよい。
これにより、無線通信装置１のユーザが、無線通信装置１の通信環境に応じてFIFO Emptyエラーの発生頻度を調整することができる。
【００６７】
なお、データ読出部が、入出力数差が０以下となっている時間に基づいてFIFO Emptyエラーを出力するか否かを判定するようにしてもよい。
図８は、本発明の１変形例における無線通信装置の概略構成を示す構成図である。図８において、無線通信装置６は、無線通信部１００とベースバンド処理部７００とを具備する。ベースバンド処理部７００は、受信／再送処理部２１０と、受信データＦＩＦＯ２２０と、データ読出部７３０と、受信データ処理部２５０と、コマンド処理部３１０と、送信データ処理部４１０と、送信データＦＩＦＯ４２０と、送信／再送処理部４３０と、を具備する。受信データＦＩＦＯ２２０は、受信データバッファ２２１と、入力ポインタ記憶部２２２と、出力ポインタ記憶部２２３とを具備する。データ読出部７３０は、読出要求受付部２３１と、データ出力部７４０とを具備する。データ出力部７４０は、入出力数差算出部２４１と、要求処理部７４２と、タイマ部７４３とを具備する。
【００６８】
図８において、図１の各部と同様の機能を有する部分には同一の符号（１００、２１０、２２０〜２２３、２３１、２４１、２５０、３１０、４１０、４２０、４３０）を付し、説明を省略する。無線通信装置６は、タイマ部７４３を具備する点で、無線通信装置１（図１）と異なる。
【００６９】
タイマ部７４３は、FIFO Emptyエラーを出力するか否かの判定のために、入出力数差が０以下となっている継続時間を測定する。
要求処理部７４２は、読出要求を受けると、要求処理部２４２（図１）と同様に、入出力数差が０より大きいときは、受信データＦＩＦＯ２２０からデータを読み出して出力する。一方、入出力数差が０以下のときは、要求処理部７４２は、入出力数差が０以下となっている継続時間が、予め定められる閾値Ｒｅｇ２より短い時間であるときは、ダミーの受信データとして例えばゼロデータを出力し、その継続時間が閾値Ｒｅｇ２と同じ時間または閾値Ｒｅｇ２より長い時間であるときは、FIFO Emptyエラーを出力する。
【００７０】
図９は、データ読出部７３０の動作例を示すフローチャートである。
ステップＳ４０１〜Ｓ４０２は、図７のステップＳ３０１〜Ｓ３０２と同様である。
入出力数差算出部２４１から入出力数差が出力されると、要求処理部７４２は、入出力数差が０以下か否かを判定する（ステップＳ４１１）。入出力数差が０より大きいと判定した場合（ステップＳ４１１：ＮＯ）、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されていることになる。そこで、要求処理部７４２は、受信データＦＩＦＯ２２０の、出力ポインタＰｏｕｔの示すＲＡＭブロックから受信データを読み出し、読み出した受信データを受信データ処理部２５０に出力し（ステップＳ４４１）、出力ポインタＰｏｕｔの値に１を加算する（ステップＳ４４２）。その後、ステップＳ４０１に戻る。
【００７１】
一方、ステップＳ４４１において、入出力数差が０以下であると判定した場合（ステップＳ４１１：ＹＥＳ）、要求処理部７４２はタイマ部７４３にリセット信号を出力する。
次に、タイマ部７４３はリセット信号に従ってタイマカウント値を０にリセットし、タイマのカウントアップを開始する（ステップＳ４３１）。ステップＳ４３２〜Ｓ４３３は、図７のステップＳ３３１〜Ｓ３３２と同様である。続くステップＳ５０１〜Ｓ５１１は、ステップＳ４０１〜Ｓ４１１と同様である。
ステップＳ５１１において、入出力数差が０より大きいと判定した場合（ステップＳ５１１：ＮＯ）、ステップＳ５４１に進む。ステップＳ５４１〜Ｓ５４２は、ステップＳ４４１〜４４２と同様である。その後、ステップＳ４０１に戻る。
【００７２】
一方、ステップＳ５１１において、入出力数差が０以下であると判定した場合（ステップＳ５１１：ＹＥＳ）、要求処理部７４２は、タイマ部７４３からタイマカウント値を取得し、そのタイマカウント値が、予め定められた閾値Ｒｅｇ２より小さいか否かを判定する（ステップＳ５２１）。
タイマカウント値が閾値Ｒｅｇ２より小さいと判定した場合（ステップＳ５２１：ＹＥＳ）、入出力数差が０以下の状態の継続時間、すなわち、読み出すべき受信データが受信データＦＩＦＯに無い状態の継続時間が比較的短いことになる。この場合、ステップＳ４３２に遷移して受信データ処理部２５０にゼロデータを出力する。
【００７３】
一方、ステップＳ５２１において、タイマカウント値が閾値Ｒｅｇ２以上であると判定した場合（ステップＳ５２１：ＮＯ）、入出力数差が０以下の状態の継続時間、すなわち、読み出すべき受信データが受信データＦＩＦＯ２２０に無い状態の継続時間が比較的長いことになる。この場合、要求処理部７４２は、FIFO Emptyエラーを受信データ処理部２５０に出力する（ステップＳ５５１）。その後、図９に示された処理を終了する。
【００７４】
以上のように、データ読出部７３０は、読み出すべき受信データが受信データＦＩＦＯ２２０に保存されているときはその保存されたデータを読み出して出力する。一方、読み出すべき受信データが受信データＦＩＦＯ２２０に無いときは、この読み出すべき受信データが無い状態の継続時間が所定の閾値Ｒｅｇ２以上である場合は、FIFO Emptyエラーを出力し、読み出すべき受信データが無い状態の継続時間が所定の閾値Ｒｅｇ２より小さい場合は、ダミーの受信データを出力する。
【００７５】
これにより、データ読出部７３０は、データ読出部２３０（図１）と同様、再送要求が生じて受信データＦＩＦＯ２２０への受信データの出力が一時的に遅れた場合は、FIFO Emptyエラーを出力せず、一方、受信データＦＩＦＯ２２０に受信データが出力されない場合または受信データＦＩＦＯ２２０に出力される受信データが定常的に少ない場合は、FIFO Emptyエラーを出力する。
したがって、パケットの再送によって受信データＦＩＦＯ２２０へのデータ書込が一時的に遅れた場合にはFIFO Emptyエラーの発生を抑え、一方、パケットの再送以外の理由により、受信データＦＩＦＯ２２０へのデータ書込が遅れた状態が継続する場合には、FIFO Emptyエラーとすることができる。
【００７６】
なお、無線通信装置１の各部または無線通信装置６の各部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７７】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
本願は、２０１０年１０月７日に、日本に出願された特願２０１０−２２７２８１号に基づき優先権を主張し、その内容をここに援用する。
【産業上の利用可能性】
【００７８】
本発明は、受信データをＦＩＦＯに一時保存し、一時保存された受信データをＦＩＦＯから読み出す通信装置のデータ読出装置に適用することができる。本発明によれば、通信装置がFIFO Emptyエラーの頻発を防ぎ、かつ、その通信装置の受信データ処理部がより早くデータを取得できる。
【符号の説明】
【００７９】
１      無線通信装置１
１００  無線通信部
２００  ベースバンド処理部
２１０  受信／再送処理部
２２０  受信データＦＩＦＯ
２２１  受信データバッファ
２２２  入力ポインタ記憶部
２２３  出力ポインタ記憶部
２３０  データ読出部
２３１  読出要求受付部
２４０  データ出力部
２４１  入出力数差算出部
２４２  要求処理部
２５０  受信データ処理部
３１０  コマンド処理部
４１０  送信データ処理部
４２０  送信データＦＩＦＯ
４３０  送信／再送処理部
【図１】
2012046760.tif 000003
【図２】
2012046760.tif 000004
【図３】
2012046760.tif 000005
【図４】
2012046760.tif 000006
【図５】
2012046760.tif 000007
【図６】
2012046760.tif 000008
【図７】
2012046760.tif 000009
【図８】
2012046760.tif 000010
【図９】
2012046760.tif 000011
【図１０】
2012046760.tif 000012
【図１１】
2012046760.tif 000013
【図１２】
2012046760.tif 000014
【国際調査報告】
2012046760.tif 000015
2012046760.tif 000016
2012046760.tif 000017
2012046760.tif 000018