JP2004056348A - データ転送装置 - Google Patents
データ転送装置 Download PDFInfo
- Publication number
- JP2004056348A JP2004056348A JP2002209428A JP2002209428A JP2004056348A JP 2004056348 A JP2004056348 A JP 2004056348A JP 2002209428 A JP2002209428 A JP 2002209428A JP 2002209428 A JP2002209428 A JP 2002209428A JP 2004056348 A JP2004056348 A JP 2004056348A
- Authority
- JP
- Japan
- Prior art keywords
- block
- buffer
- host
- transmission
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】バッファでの同一ブロックの保持時間の短縮、又はブロック再送の高速化を通し、ホストとの間の実質的なブロック転送時間を短縮し、それにより高速ネットワーク等に容易に対応し、かつデータ転送について高い信頼性を維持するデータ転送装置を提供する。
【解決手段】無線インタフェースカード10Aでは、無線モジュール1が外部ネットワークからパケットPを受信し、パケットバッファ1aへ蓄積する。受信バッファ制御部2Aはパケットバッファ1a内のパケットPからデータを一ブロックBRずつ分離し、受信バッファ2aへ転送する。転送バッファ制御部3AはそのブロックBRを受信バッファ2aから転送バッファ3aへ転送し、更に転送バッファ3aからホストHへ送出する。それにより、再送用ブロックを転送バッファ3aに保持し、受信バッファ2aにはパケットバッファ1aから次のブロックを直ちに転送する。
【選択図】 図1
【解決手段】無線インタフェースカード10Aでは、無線モジュール1が外部ネットワークからパケットPを受信し、パケットバッファ1aへ蓄積する。受信バッファ制御部2Aはパケットバッファ1a内のパケットPからデータを一ブロックBRずつ分離し、受信バッファ2aへ転送する。転送バッファ制御部3AはそのブロックBRを受信バッファ2aから転送バッファ3aへ転送し、更に転送バッファ3aからホストHへ送出する。それにより、再送用ブロックを転送バッファ3aに保持し、受信バッファ2aにはパケットバッファ1aから次のブロックを直ちに転送する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、ホストと外部との間で無線等により伝送されるデータを中継するためのデータ転送装置に関する。
【0002】
【従来の技術】
パーソナルコンピュータ、携帯電話、携帯情報端末(PDA)等の情報処理機器、及びディジタルテレビ等の情報家電では、LAN、インターネット、又はディジタル放送等を通し伝送される映像音声データを、リアルタイムにかつスムーズに処理できることが、特に重要である。従って、情報処理機器等の本体(ホスト)とネットワーク等との間のインタフェースとして機能する装置(以下、データ転送装置という)には、高速でかつスムーズなデータ転送能力が求められる。
【0003】
ネットワーク等、特に無線LANでは、データ伝送速度がホストのデータ処理速度より一般にかなり小さい。更に、ネットワーク等での伝送データ形態(例えば、フォーマット及び伝送単位)は、ホスト内部でのデータ形態とは一般に異なる。
データ転送装置は内部にバッファを備える。ホスト又はネットワーク等の一方からデータが入力されるとき、その入力データはバッファへ一時記憶される。バッファ内のデータは、送出先であるホスト又はネットワーク等の他方に適したデータ形態へ変換され、その送出先に適したデータ転送速度で送出される。こうして、データ転送装置はホストとネットワーク等との間で、それぞれのデータ処理速度及びデータ形態の相違を調整し、スムーズなデータ交換を実現する。
【0004】
データ転送装置には、様々な機種のホスト間で汎用のものがある。汎用型装置には、特にカード形状の小型のもの(以下、インタフェースカードという)がある。インタフェースカードは小型であるので、主に携帯用情報処理機器での使用に有利である。
インタフェースカードには、例えば無線モジュールを含むもの(以下、無線インタフェースカードという)がある。無線インタフェースカードはホストと外部の無線LAN等との間で無線によるデータ交換を実現する。
図11は、ホストHと外部の無線LAN等との間でのデータ交換時、従来の無線インタフェースカード100内でのデータの流れを示すブロック図である。
無線インタフェースカード100は、無線モジュール1、受信バッファ制御部2、送信バッファ制御部5、及びホストインタフェース4を有する。
【0005】
無線モジュール1は、アンテナAとパケットバッファ1aとを含む。
無線モジュール1はアンテナAを通し、外部の無線LAN等から伝送データPを受信し、逆にその無線LAN等へ伝送データPを送信する。伝送データPは通常、パケットごとに伝送される。ここで、一パケット当たりのデータ量は固定でも可変でも良い。
パケットバッファ1aは例えばSRAMであり、そのデータ容量は一パケット当たりの最大データ量より十分に大きい。アンテナAを通し受信された伝送データは順次、パケットバッファ1aへ蓄積される。
【0006】
受信バッファ制御部2は受信バッファ2aを含む。受信バッファ2aは例えば先入れ先出し(FIFO)メモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(以下、ブロックという)に実質的に等しい。ここで、一ブロックのサイズは一パケットのサイズより一般に小さい。
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2はそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2は割込信号Intを、ホストインタフェース4を通しホストHへ送出する。それにより、ホストHに対し、受信バッファからのデータ読み出しを要求する。
【0007】
ホストインタフェース4は例えば、コマンド線CMD、複数のデータ線DAT、及びクロック線CLKを含むバス6でホストHへ接続される。そのバス6を通し、ホストインタフェース4は、受信バッファ制御部2又は送信バッファ制御部5とホストHとの間で交換される信号を、例えば次のように中継する。
受信バッファ制御部2により出力された割込信号Int又はブロックBRは、データ線DATを通しホストHへ送出される。送信バッファ制御部5により出力されたビジー信号Bsyも同様に、データ線DATを通しホストHへ送出される。
更に、データ線DATを通しホストHから送信対象ブロックBTが受信されるとき、その送信対象ブロックBTは送信バッファ制御部5へ転送される。
【0008】
ホストHから発行されたコマンドは、コマンド線CMDを通し受信され、解読される。その解読を通し、コマンドが正常に受信されたか否か、が判断され、それぞれの判断結果を示すレスポンス(ACK又はNAK)が、コマンド線CMDを通しホストHへ返信される。
正常に受信されたコマンドが、特に読み出し命令R又は書き込み命令Wであるとき、そのコマンドはその宛先アドレスに応じ、受信バッファ制御部2又は送信バッファ制御部5へ通知される。
ホストHとの間でのデータ通信時、ホストインタフェース4はクロック線CLKを通し、伝送クロックをホストHから受信する。ホストHとホストインタフェース4との間のデータ通信は、その伝送クロックに従い、同期通信で実行される。
【0009】
送信バッファ制御部5は送信バッファ5aを含む。送信バッファ5aは例えばFIFOメモリであり、一ブロックに実質的に等しい一定のデータ容量を持つ。
ホストHから送出された送信対象ブロックBTがホストインタフェース4により受信されるとき、送信バッファ制御部5はその送信対象ブロックBTを、送信バッファ5aへ転送する。
送信バッファ5aが満杯になるとき、送信バッファ制御部5は送信対象ブロックBTを、送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。
無線モジュール1は、送信バッファ5aから転送される送信対象ブロックBTをパケットバッファ1aへ蓄積する。更に、そのように蓄積された複数の送信対象ブロックBTから一つのパケットPを構成し、アンテナAを通し、外部の無線LAN等へ無線で送信する。
【0010】
図12は、無線インタフェースカード100からホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図12では、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は無線インタフェースカード100からホストHへの伝送(以下、上り方向伝送という)を、右向きの矢印はその逆の伝送(以下、下り方向伝送という)を、それぞれ示す。
図13は、同じブロック転送時、無線インタフェースカード100でのデータの流れを模式的に示す図である。
【0011】
図12の(a)、及び図13の(a)と(b)は、ブロック転送の開始時に対応する。図13の(a)に示されるように、無線モジュール1は、アンテナAを通し受信した伝送データPをパケットバッファ1aへ順次蓄積する。伝送データPの一つのパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2は、図13の(b)に示されるように、その一パケットP1の先頭から一ブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2は、図12の(a)に示されるように、ホストHへの割込信号Intをアサートする。
【0012】
割込信号Intは、例えば図12の(a)に示されるように、データ線DATの一本を通しホストHへ伝送される。ホストHは割込信号Intの受信時、コマンド線CMDを通し割込解除信号CLRをホストインタフェース4へ送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrをホストHへ、コマンド線CMDを通し返信する。それと共に、受信バッファ制御部2へ割込解除信号CLRを通知する。それにより、受信バッファ制御部2は割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0013】
ホストHはコマンド線CMDを通し、読み出し命令Rをホストインタフェース4へ送出する。ホストインタフェース4は、その読み出し命令Rに対するレスポンスrを返信すると共に、受信バッファ制御部2へその読み出し命令Rを通知する。それにより、受信バッファ制御部2はデータ線DATを通し、受信バッファ2aに蓄積された一ブロックB1をホストHへ送出する(図13の(c)参照)。
【0014】
ホストHは転送された一ブロックB1に対し、誤り検出を実行する。誤り検出の終了時、ホストHは、図12の(a)に示されるように、書き込み命令Wをホストインタフェース4へ送出し、ホストインタフェース4からのレスポンスrを待つ。そのレスポンスrがホストインタフェース4による書き込み命令Wの正常な受信を示すとき、ホストHはその書き込み対象データとして誤り検出結果を、ホストインタフェース4へデータ線DATを通し送出する。
受信バッファ制御部2はホストインタフェース4を通し、その誤り検出結果を受信する。更に、それに対する応答として、受信された誤り検出結果を示すデータについて行った誤り検出の結果crcを、データ線DATを通しホストHへ返送する。
【0015】
ホストHから「符号誤りなし(OK)」を示す誤り検出結果が正常に受信されるとき、図13の(d)に示されるように、受信バッファ制御部2はパケットバッファ1aから次のブロックB2を受信バッファ2aへ転送する。その後、ホストHから新たな読み出し命令Rを受信した時、受信バッファ2aからホストHへ、次のブロックB2を送出する。
【0016】
ホストHから「符号誤り有り(NG)」を示す誤り検出結果が正常に受信されるとき、図12の(b)及び図13の(e)に示されるように、受信バッファ制御部2は受信バッファ2aに記憶された元のブロックB1をそのまま保持する。その後、ホストHから新たな読み出し命令Rを受信した時、受信バッファ2aからホストHへ、同じブロックB1を再送する。
【0017】
図14は、無線インタフェースカード100からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、受信バッファ制御部2、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、受信バッファ2aからホストHへの一ブロック当たりの転送時間(以下、ブロック転送時間という)は、パケットバッファ1aから受信バッファ2aへのブロック転送時間と、一般に同程度として良い。
【0018】
図14に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S6に分割される。更に、それぞれのステップの間に割り込みステップSintとエラーチェックステップSWとが、以下のように挿入される。
<ステップS1>
パケットバッファ1aに記憶されたパケットの先頭から最初のブロックB1が、無線モジュール1から受信バッファ制御部2へ転送される。
【0019】
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2は割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2へ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2へ通知される。その通知時、受信バッファ制御部2は割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0020】
<ステップS2>
割込解除信号CLRがホストインタフェース4により正常に受信された時、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。ホストインタフェース4はその読み出し命令Rを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4はその読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ最初のブロックB1を送出する。
【0021】
<エラーチェックステップSW>
ホストHは転送されたブロックB1の符号誤りをチェックする。更に、書き込み命令Wを発行し、その誤り検出結果の送出を通知する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを受信バッファ制御部2へ通知する。
【0022】
書き込み命令Wがホストインタフェース4により正常に受信された時、ホストHは誤り検出結果を受信バッファ制御部2へ送出する。誤り検出結果は書き込み命令Wの書き込み対象データとして、データ線DATを通し伝送される。従って、ホストインタフェース4はその誤り検出結果を受信バッファ制御部2へ単に中継する。受信バッファ制御部2は、誤り検出結果を示すデータを受信し、その符号誤りをチェックする。更に、そのチェック結果crcを、ホストインタフェース4とデータ線DATとを通しホストHへ返信する。
【0023】
ホストHからの誤り検出結果が正常に受信される時、受信バッファ制御部2はその誤り検出結果に応じ、次にホストHへ送出すべきブロックを選択し、受信バッファ2aに保持する。すなわち、第二のブロックB2をパケットバッファ1aから受信バッファ2aへ転送し、又は最初のブロックB1を受信バッファ2aに維持する。
図14では、ステップS2で転送された最初のブロックB1に対し、ホストHによる誤り検出結果は「符号誤り有り(NG)」を示す。従って、受信バッファ制御部2は、最初のブロックB1をそのまま、受信バッファ2aに維持する。
【0024】
<ステップS3>
直前のエラーチェックステップSWで受信バッファ制御部2から返信されたチェック結果crcが、誤り検出結果NGの受信バッファ制御部2による正常な受信を示すとき、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。その読み出し命令Rが正常に受信されたか否かを、ホストインタフェース4はチェックし、そのチェック結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4はその読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ、最初のブロックB1を再送する。
【0025】
<エラーチェックステップSW>
ホストHは先のエラーチェックステップSWと同様に、再送されたブロックB1に対し符号誤りをチェックし、その結果を受信バッファ制御部2へ通知する。受信バッファ制御部2はその誤り検出結果に応じ、上記と同様なブロック選択を実行する。
このように、受信バッファ制御部2からホストHへ一ブロックが転送されるごとに、エラーチェックステップSWが実行される。
図14では、再送されたブロックB1に対し、誤り検出結果は「符号誤りなし(OK)」を示す。
【0026】
<ステップS4>
誤り検出結果OKの正常な受信時、受信バッファ制御部2は、無線モジュール1のパケットバッファ1aに記憶されたパケットから第二のブロックB2を分離し、受信バッファ2aへ転送する。
<ステップS5>
直前のエラーチェックステップSWで受信バッファ制御部2から返信されたチェック結果crcが、誤り検出結果OKの受信バッファ制御部2による正常な受信を示すとき、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。ホストインタフェース4はその読み出し命令Rを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4は読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ第二のブロックB2を送出する。
【0027】
<エラーチェックステップSW>
第二のブロックB2について、エラーチェックステップSWが上記のものと同様に実行される。
図14では、第二のブロックB2に対し、誤り検出結果は「符号誤りなし(OK)」を示す。
<ステップS6>
誤り検出結果OKの正常な受信時、受信バッファ制御部2は、無線モジュール1のパケットバッファ1aに記憶されたパケットから第三のブロックB3を分離し、受信バッファ2aへ転送する。
以下、同様なステップが繰り返される。
【0028】
上記のように、従来の無線インタフェースカード100は、パケットバッファ1aと受信バッファ2aとの二種類のバッファを利用し、外部の無線LAN等からの伝送データPのパケットをブロックごとに分割し、ホストHへ転送する。それにより無線LAN等での伝送データ形態(パケット)をホストHでのデータ形態(ブロック)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、データ転送速度を制御する。こうして、ホストHは無線LAN等からデータをスムーズに受信する。
【0029】
ホストHは上記の通り、転送されたブロックの符号誤りの有無を、書き込み命令Wの書き込み対象データとして、受信バッファ制御部2へ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、受信バッファ制御部2は同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、従来の無線インタフェースカード100は、ホストHによるデータ受信について、信頼性を高く維持する。
【0030】
図15は、ホストHから無線インタフェースカード100へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図15では図12と同様に、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は上り方向伝送を、右向きの矢印は下り方向伝送を、それぞれ示す。
【0031】
図15の(a)はブロック転送の開始時に対応する。ホストHはコマンド線CMDを通し、書き込み命令Wをホストインタフェース4へ送出する。ホストインタフェース4はその書き込み命令Wに対し、レスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ、ホストインタフェース4とデータ線DATとを通し返送する。
【0032】
送信バッファ制御部5は、誤り検出結果crcの送出から所定時間、ビジー信号Bsyをアサートする。それにより、ホストHによる書き込み命令Wの発行間隔、すなわち、送信バッファ5aの更新間隔を所定の大きさ以上に維持し、上書きによる送信対象ブロックの損傷を防ぐ。
【0033】
ホストHは返送された誤り検出結果crcから、最初のブロックB1について、転送エラーの有無を判断する。誤り検出結果crcが転送成功を示すとき、ホストHは新たな書き込み命令Wを、ビジー信号Bsyのネゲート時に、ホストインタフェース4へ送出する。ホストインタフェース4は、その書き込み命令Wに対しレスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ、二番目のブロックB2を送出する。ホストインタフェース4は、その二番目のブロックB2を送信バッファ制御部5へ中継する。送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ返送し、所定時間ビジー信号Bsyをアサートする。
【0034】
ホストHは返送された誤り検出結果crcから、二番目のブロックB2について、転送エラーの有無を判断する。誤り検出結果crcが転送成功を示すとき、ホストHは更に新たな書き込み命令Wを、ビジー信号Bsyのネゲート時に、ホストインタフェース4へ送出する。
以降、送信対象ブロックのそれぞれについて、上記と同様な操作が繰り返される。
【0035】
送信バッファ制御部5からホストHへ返送された誤り検出結果crcが転送エラーを示すとき、次のようにブロックの再送が行われる。
図15の(b)は、最初のブロックB1の再送時のタイミング図である。
送信バッファ制御部5は上記の説明の通り、ホストHから転送された最初のブロックB1に対し誤り検出を行う。その結果、符号誤りが検出されたとき、送信バッファ制御部5は受信済の最初のブロックB1を破棄する。更に、「符号誤り有り」を示す誤り検出結果crcを、ホストHへ返送する。
最初のブロックB1が符号誤りを含むことをその誤り検出結果crcが示すとき、ホストHは再送通知信号RTYをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はその再送通知信号RTYに対し、レスポンスrを送出する。
【0036】
再送通知信号RTYの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその再送通知信号RTYを通知する。
ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ返送する。
こうして、最初のブロックB1の再送が完了する。
【0037】
図16はホストHから無線インタフェースカード100へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号についてのフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、ホストHから送信バッファ5aへのブロック転送時間は、送信バッファ5aからパケットバッファ1aへのブロック転送時間と、一般に同程度として良い。
【0038】
図16に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップT1〜T5に分割される。更に、それぞれのステップの間に、エラー通知ステップTE及び再送通知ステップTWが以下のように挿入される。
【0039】
<ステップT1>
ホストHは書き込み命令Wをホストインタフェース4へ送出する。ホストインタフェース4はその書き込み命令Wに対し、レスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB1を送信バッファ5aに蓄積する。
【0040】
<エラー通知ステップTE>
送信バッファ制御部5は、送信バッファ5aに蓄積した最初のブロックB1に対し誤り検出を行う。ここで、最初のブロックB1について、転送エラーがあったとする。送信バッファ制御部5は、その誤り検出結果NGをホストHへ返送する。更に、誤り検出結果NGの送出から所定時間後、ビジー信号Bsyをネゲートする。
【0041】
<再送通知ステップTW>
ホストHは、ビジー信号Bsyのネゲート時、再送通知信号RTYをホストインタフェース4へ送出する。ホストインタフェース4はその再送通知信号RTYに対し、レスポンスrを送出する。
再送通知信号RTYの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその再送通知信号RTYを通知する。そのとき、送信バッファ制御部5は、受信済の最初のブロックB1を破棄する。
【0042】
<ステップT2>
再送通知信号RTYがホストインタフェース4により正常に受信された時、ホストHは書き込み命令Wを送信バッファ制御部5へ送出する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積する。
【0043】
<ステップT3>
送信バッファ制御部5は、送信バッファ5aに蓄積した再送ブロックB1に対し誤り検出を行う。ここで、再送ブロックB1は正常に転送され、符号誤りを含まなかったとする。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、再送ブロックB1を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
【0044】
<ステップT4>
ビジー信号Bsyのネゲート時、ホストHは書き込み命令Wを送信バッファ制御部5へ送出する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ、第二のブロックB2を送出する。ホストインタフェース4はそのブロックB2を送信バッファ制御部5へ中継し、送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積する。
【0045】
<ステップT5>
送信バッファ制御部5は、送信バッファ5aに蓄積した第二のブロックB2に対し誤り検出を行う。ここで、第二のブロックB2は正常に転送され、符号誤りを含まなかったとする。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、第二のブロックB2を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
以下、同様なステップが繰り返される。
無線モジュール1は、パケットバッファ1aへ蓄積された複数の送信対象ブロックから一つのパケットを構成し、外部の無線LAN等へ送出する。
【0046】
上記のように、従来の無線インタフェースカード100は、送信バッファ5aとパケットバッファ1aとの二種類のバッファを利用し、ホストHから受信した複数の送信対象ブロックを一つのパケットにまとめ、外部の無線LAN等へ送出する。それにより、ホストHとの間での通信データ形態(ブロック)を無線LAN等での伝送データ形態(パケット)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、データ転送速度を制御する。こうして、ホストHは無線LAN等へデータをスムーズに送信する。
【0047】
送信バッファ制御部5は上記の通り、転送されたブロックの符号誤りの有無をホストHへ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、ホストHは同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、従来の無線インタフェースカード100は、ホストHによるデータ送信について、信頼性を高く維持する。
【0048】
【発明が解決しようとする課題】
従来のデータ転送装置は、外部から受信したデータをホストへ転送するとき、上記の無線インタフェースカード100のように、一ブロックを転送するごとにホストからの書き込み命令を待つ。その書き込み命令に伴って転送される誤り検出結果に応じ、次に転送すべきブロックとして、前回と同じもの又は次のもののいずれかを選択する。
そのとき、受信バッファは、ホストへ転送し終えた一ブロックを、ホストからの誤り検出結果の返送まで、保持し続けなければならなかった。その誤り検出結果が「符号誤り有り」を示すとき、受信バッファはそのブロックを更に、正常に再送し終えるまで維持しなければならなかった。こうして、従来のデータ転送装置では、受信バッファによる同一ブロックの保持時間を、ある限度を超えては短縮できなかった。
【0049】
一方、従来のデータ転送装置は、ホストへのブロック転送と並行し、ネットワーク等からの伝送データを専用のバッファへ蓄積し続ける。例えば図13に示されるように、受信バッファ制御部2によるブロックB1の転送と並行し、無線モジュール1は伝送データPの次のパケットP2をパケットバッファ1aの空き領域へ蓄積する。パケットバッファ1aからの伝送データPの溢れを防ぐには、受信バッファによる同一ブロックの保持時間を、従来のものより更に短縮しなければならなかった。
【0050】
従来のデータ転送装置では、ホストから外部へデータを送信するとき、上記の無線インタフェースカード100のように、複数のブロックをパケットバッファ1aに集め、それらから一つのパケットを構成し、外部へ送出する。従って、外部への実質的なデータ送信速度の向上には、ホストからのブロック転送の実質的な高速化が求められた。それには、ホストからのブロック転送について、特にブロック再送を更に、迅速にしなければならなかった。
【0051】
本発明は、バッファでの同一ブロックの保持時間の短縮、又はブロック再送の高速化を通し、ホストとの間の実質的なブロック転送時間を短縮し、それにより高速ネットワーク等に容易に対応し、かつデータ転送について高い信頼性を維持するデータ転送装置、の提供を目的とする。
【0052】
【課題を解決するための手段】
本発明の一つの観点によるデータ転送装置は、
(A) (a) パケットバッファを含み、(b) 外部から伝送されたパケットを受信し、パケットバッファへ一時記憶するための伝送データ受信部;
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ受信バッファを含み、(b) パケットバッファへ一時記憶されたパケットをブロックごとに分割し、受信バッファへ転送するための受信バッファ制御部;及び、
(C) (a) ブロックと実質的に等しいサイズを持つ副バッファを含み、(b) ブロックを受信バッファから副バッファへ転送するための副バッファ制御部;
を有し、
(D) ホストからブロック送出命令を受信するとき、受信バッファから副バッファへ未送ブロックを転送し、かつ受信バッファ又は副バッファのいずれかからホストへその未送ブロックを送出し;
(E) ホストからブロック再送命令を受信するとき、副バッファからホストへ送出済ブロックを再送し;
(F) ブロックの一つを受信バッファから副バッファへ転送し終えた時と実質上同時に、次のブロックをパケットバッファから受信バッファへ転送し始める。
ここで、受信バッファ及び副バッファは、好ましくはFIFOメモリである。
【0053】
データ転送装置からホストへのブロック転送にエラーがあるとき、ホストは一般に、そのデータ転送装置に対し送出済ブロックの再送を指示する。そのとき、上記のデータ転送装置は、副バッファから送出済ブロックを再送する。従って、受信バッファは送出済ブロックを保持しなくても良く、特に副バッファへそのブロックを転送した後、直ちに次の未送ブロックを上書きされても良い。
それにより、上記のデータ転送装置では、ホストへのブロック転送の開始時、最初のブロックに続き二番目のブロックが、最初のブロックの再送の有無に関わらず、直ちにパケットバッファから受信バッファへ転送される。
その結果、上記のデータ転送装置では、パケット内の最初の二つのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる最初のブロックの保持時間が短い。こうして、パケットバッファでは、その最初の二つのブロックに相当する記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0054】
上記のデータ転送装置は、上記のブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、更に副バッファからホストへ送出しても良い。そのとき、副バッファからホストへのその未送ブロックの送出と実質上並行し、パケットバッファから受信バッファへ次の未送ブロックが転送される。その結果、ホストへ一ブロックを送出し終えた時、副バッファにはその送出済ブロックが保持され、受信バッファには次の未送ブロックが保持される。
ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。例えば、読み出し命令の宛先を受信バッファ又は副バッファのいずれかに指定するだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0055】
上記のデータ転送装置は、上記のブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、同時にその未送ブロックを受信バッファからホストへ送出しても良い。このデータ転送装置では、最初の二つのブロックだけでなく全てのブロックについて、ホストへの一ブロックの転送終了時、その転送エラーの有無に関わらず、次の未送ブロックが直ちにパケットバッファから受信バッファへ転送される。その転送の間にホストからブロック再送命令を受信したとき、副バッファから送出済ブロックが再送される。
その結果、上記のデータ転送装置では、パケット内の全てのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる同一ブロックの保持時間が短い。こうして、パケットバッファでは記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0056】
上記のデータ転送装置では、未送ブロックは受信バッファから送出され、送出済ブロックは副バッファから再送される。ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。例えば、読み出し命令の宛先を受信バッファ又は副バッファのいずれかに指定するだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0057】
ホストからの指示が、次の未送ブロックの転送又は送出済ブロックの再送のいずれであるのかを、上記のデータ転送装置は好ましくは次のように判断する。
ホストから読み出し命令を受信し、その宛先アドレスが、(a) 受信バッファに対応するとき、その読み出し命令をブロック送出命令とみなし、(b) 副バッファに対応するとき、その読み出し命令をブロック再送命令とみなす。
その他に、ホストから読み出し命令を受信するとき、その宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別しても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
上記の判断により、ホストは共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ブロック転送に対する制御について、ホストの負担を軽減できる。
【0058】
本発明の別の観点によるデータ転送装置は、
(A) パケットバッファを含み、外部から伝送されたパケットを受信し、そのパケットをパケットバッファへ一時記憶するための伝送データ受信部;及び、
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つブロックバッファを含み、(b) パケットバッファへ一時記憶されたパケットをブロックごとに分割し、ブロックバッファへ転送し、(c) ホストから読み出し命令を受信するとき、その宛先アドレスに応じブロックバッファから、パケットの未送ブロックをホストへ送出し、又は送出済ブロックをホストへ再送するためのバッファ制御部;
を有する。
【0059】
ここで、ホストからの読み出し命令は、その宛先アドレスとして、好ましくはブロックバッファを指定するものと特定のものとのいずれかを含む。上記のデータ転送装置はそのとき、ブロックバッファのアドレスを宛先アドレスとして含む読み出し命令をブロック送出命令とみなし、特定の宛先アドレスを含む読み出し命令をブロック再送命令とみなす。
その他に、上記のデータ転送装置は、読み出し命令の宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック再送命令とみなしても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0060】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0061】
本発明の更に別の観点によるデータ転送装置は、
(A) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ送信バッファを含み、(b) ホストから書き込み命令と外部への送信対象ブロックとを受信するとき、その送信対象ブロックを送信バッファへ書き込み、(c) 書き込み命令の宛先アドレスに応じ、送信バッファに保持された送信対象ブロックを、未送ブロック又は再送ブロックのいずれかとして識別するための送信バッファ制御部;及び、
(B) (a) パケットバッファを含み、(b) 送信対象ブロックを送信バッファからパケットバッファへ転送し、(c) 複数の送信対象ブロックから一つのパケットを構成し、パケットごとに外部へ送信するための伝送データ送信部;
を有する。
【0062】
ここで、ホストからの書き込み命令は、その宛先アドレスとして、好ましくは送信バッファを指定するものと特定のものとのいずれかを含む。上記のデータ転送装置はそのとき、送信バッファのアドレスを宛先アドレスとして含む書き込み命令を次ブロックの送出通知とみなし、特定の宛先アドレスを含む書き込み命令をブロック再送通知とみなす。
その他に、上記のデータ転送装置は、書き込み命令の宛先アドレスを示すデータの特定ビットに基づき、その書き込み命令をブロック再送通知とみなしても良い。例えば、その特定ビットが「1」のとき、その書き込み命令がブロック再送通知とみなされ、「0」のとき次ブロックの送出通知とみなされても良い。
【0063】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の書き込み命令の宛先アドレスを付け替えるだけで、次の送信対象ブロックの転送又は送出済ブロックの再送をそれぞれ通知できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、送出済ブロックの再送を予め通知するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0064】
【発明の実施の形態】
以下、本発明の最適な実施の形態について、その好ましい実施例を挙げて、図面を参照しつつ説明する。
【0065】
《実施例1》
図1は、外部無線LANからホストHへのデータ転送時、本発明の実施例1による無線インタフェースカード10A内でのデータの流れを示すブロック図である。無線インタフェースカード10Aはデータ転送装置であり、例えば外部無線LANを通し伝送されるデータPを受信し、ホストHへ転送する。
無線インタフェースカード10Aは無線モジュール1、受信バッファ制御部2A、転送バッファ制御部3A、及びホストインタフェース4を有する。
【0066】
無線モジュール1は、例えばブルートゥース(Bluetooth、登録商標)の通信方式に従う。無線モジュール1はアンテナAとパケットバッファ1aとを含む。アンテナAは無線LANから伝送データPを受信する。伝送データPは通常、所定のパケットごとに伝送される。ここで、一パケット当たりのデータ量は一般に可変であり、平均約1kBである。更に、それぞれのパケットは約400kbpsで伝送される。
無線モジュール1はブルートゥース(登録商標)の他に、固定パケット長を用いる通信方式に従っても良い。
パケットバッファ1aは好ましくはSRAMであり、そのデータ容量は一パケット当たりの最大データ量より十分に大きく、例えば2kBである。アンテナAを通し受信された伝送データPは順次、パケットバッファ1aへ蓄積される。一パケット当たりの蓄積時間は、平均約20m秒程度である。
【0067】
受信バッファ制御部2Aは受信バッファ2aを含む。受信バッファ2aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(以下、ブロックという)に実質的に等しく、例えば512Bである。
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2Aはそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。パケットバッファ1aから受信バッファ2aへのブロック転送は、無線インタフェースカード10Aの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、パケットバッファ1aから受信バッファ2aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
受信バッファ2aが満杯になるとき、受信バッファ制御部2Aは、転送バッファ制御部3A及びホストインタフェース4を通しホストHへ割込信号Intを送出し、ホストHによるブロックの読み出しを要求する。
【0068】
転送バッファ制御部3Aは転送バッファ3aを含む。転送バッファ3aは受信バッファ2aと同様にFIFOメモリであり、そのデータ容量は一ブロックと実質的に等しく、512Bである。
ホストHからの読み出し命令Rの受信時、転送バッファ制御部3Aはその読み出し命令Rの宛先アドレスに応じ、受信バッファ2a又は転送バッファ3aのいずれかからホストHへブロックを転送する。
【0069】
例えば、宛先アドレスが転送バッファ3aに対応するとき、転送バッファ制御部3Aは転送バッファ3aからブロックを転送する。一方、宛先アドレスが受信バッファ2aに対応するとき、転送バッファ制御部3Aは、まず受信バッファ2aから新たなブロックBRを転送バッファ3aへ転送し、続いて転送バッファ3aからホストHへそのブロックBRを転送する。
その他に、転送バッファ制御部3Aは、宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、ブロックの転送元を識別しても良い。すなわち、最上位ビットが「0」のときは受信バッファ2aからブロックを転送し、「1」のときは転送バッファ3aからブロックを転送しても良い。
以下、宛先アドレスを受信バッファ2aに対応させた読み出し命令Rをブロック送出命令Rnとし、宛先アドレスを転送バッファ3aに対応させた読み出し命令Rをブロック再送命令Rtとする。
【0070】
受信バッファ2aから転送バッファ3aへのブロック転送は、無線インタフェースカード10Aの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、受信バッファ2aから転送バッファ3aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
【0071】
ホストインタフェース4は、コマンド線CMD、クロック線CLK、及び複数のデータ線DATを含むバス6でホストHと接続され、ホストHと、受信バッファ制御部2A又は転送バッファ制御部3Aとの間で交換される信号を中継する。
ホストインタフェース4は特に、ホストHから発行されたコマンドを、コマンド線CMDを通し受信し、解読する。更に、その解読を通し、コマンドが正常に受信されたか否かを判断し、それぞれの判断結果を示すレスポンス(ACK又はNAK)を、コマンド線CMDを通しホストHへ返信する。
【0072】
ホストインタフェース4は例えば、データ線DATの一本を通し、受信バッファ制御部2Aからの割込信号IntをホストHへ送出する。その割込信号Intに応じ、ホストHから発行された読み出し命令Rをコマンド線CMDを通し受信し、転送バッファ制御部3Aへ通知する。更に、その通知を受け、転送バッファ3aから送出されたブロックBRを、データ線DATを通しホストHへ送出する。
【0073】
ホストインタフェース4とホストHとの間のデータ通信は、ホストHによる伝送クロックに従い、同期通信で実行される。そのとき、伝送クロックはクロック線CLKを通し、ホストHからホストインタフェース4へ伝送される。伝送クロック周波数はホストHの機種及び使用状況により、0近くから最大約25MHzまで変動し得る。約25MHzの伝送クロック周波数では、転送バッファ3aからホストHへのブロック転送は、一ブロック当たり約50μ秒で実行される。
【0074】
図2は、無線インタフェースカード10AからホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図2では、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は無線インタフェースカード10AからホストHへの伝送(以下、上り方向伝送という)を、右向きの矢印はその逆方向の伝送(以下、下り方向伝送という)をそれぞれ示す。
図3は、同じブロック転送時、パケットバッファ1a、受信バッファ2a、及び転送バッファ3a間でのブロック転送を模式的に示す図である。
【0075】
図2と図3とは共にブロック転送の開始時に対応する。図3の(a)に示されるように、無線モジュール1はアンテナAを通し受信した伝送データPを、パケットバッファ1aへ順次蓄積する。伝送データPの最初のパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2Aは、図3の(b)に示されるように、そのパケットP1の先頭から最初のブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2Aは、ホストHに対する割込信号Intをアサートする。
【0076】
割込信号Intは図2に示されるように、データ線DATの一本を通しホストHへ送出される。ホストHは割込信号Intの受信時、割込解除信号CLRをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrを、コマンド線CMDを通しホストHへ返信する。それと共に、受信バッファ制御部2Aへ割込解除信号CLRを通知する。受信バッファ制御部2Aは割込解除信号CLRの受信時、割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0077】
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、ブロック送出命令Rnに対するレスポンスrを返信すると共に、転送バッファ制御部3A及び受信バッファ制御部2Aへブロック送出命令Rnを通知する。
転送バッファ制御部3Aはブロック送出命令Rnの受信時、図3の(c)に示されるように、受信バッファ2aから転送バッファ3aへ最初のブロックB1を転送する。その転送が終了した時直ちに、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。それらの転送と並行し、パケットバッファ1aの空き領域へは伝送データPの新たなパケットP2が蓄積される。
【0078】
転送バッファ制御部3Aは更に、図2及び図3の(d)に示されるように、転送バッファ3aから最初のブロックB1を、データ線DATを通しホストHへ送出する。
ホストHは転送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果が「符号誤りなし」を示すとき、ホストHはブロック送出命令Rnを発行し、次のブロックの送出を指示する。一方、誤り検出の結果が「符号誤り有り」を示すとき、ホストHはブロック再送命令Rtを発行し、最初のブロックB1の再送を指示する。
【0079】
図2では、最初に転送された最初のブロックB1が符号誤りを含むときが例示される。
ホストHはコマンド線CMDを通し、ブロック再送命令Rtをホストインタフェース4へ送出する。ホストインタフェース4はブロック再送命令Rtに対するレスポンスrを返信すると共に、転送バッファ制御部3Aへブロック再送命令Rtを通知する。転送バッファ制御部3Aは最初のブロックB1を、その転送後も転送バッファ2aに保持する。図3の(e)に示されるように、転送バッファ制御部3Aはブロック再送命令Rtの受信時、転送バッファ3aから最初のブロックB1をホストHへ再送する。
【0080】
ホストHは再送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果に応じ、ホストHは次に発行すべき読み出し命令を、ブロック送出命令Rn又はブロック再送命令Rtのいずれかに決定する。
図2では、再送された最初のブロックB1が符号誤りを含まないときが例示される。
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4はブロック送出命令Rnに対するレスポンスrを返信すると共に、転送バッファ制御部3Aへブロック送出命令Rnを通知する。
図3の(f)に示されるように、転送バッファ制御部3Aはブロック送出命令Rnの受信時、受信バッファ2aから転送バッファ3aへ次のブロックB2を転送する。その転送が終了した時直ちに、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ更にその次のブロックB3を転送する。
こうして、実施例1による無線インタフェースカード10Aはブロック転送を実行する。
【0081】
図4は、無線インタフェースカード10AからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHによる伝送クロック、及び無線インタフェースカード10Aの内部クロックが約15〜25MHz程度の周波数であるとき、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1のそれぞれの間での一ブロック当たりの転送時間(以下、ブロック転送時間という)はいずれも約50〜70μ秒程度であり、実質上等しいとみなせる。
【0082】
図4に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S8に分割される。
<ステップS1>
パケットバッファ1aに蓄積されたパケットの先頭から最初のブロックB1が分離され、無線モジュール1から受信バッファ制御部2Aへ転送される。
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2AはホストHに対する割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2Aへ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2Aへ通知される。その通知時、受信バッファ制御部2Aは割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0083】
<ステップS2>
ホストHはブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、そのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを、転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは、受信バッファ2aから転送バッファ3aへ最初のブロックB1を転送する。
<ステップS3>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ最初のブロックB1を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
【0084】
<ステップS4>
ホストHは転送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、転送バッファ3aはデータをそのまま保持する。一方、受信バッファ2aは次のブロックB2を保持する。
【0085】
図4では、ホストHは最初のブロックB1に対し「符号誤り有り」と判断し、ブロック再送命令Rtを発行する。ホストインタフェース4はそのブロック再送命令Rtを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック再送命令Rtの正常な受信時、ホストインタフェース4はそのブロック再送命令Rtを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは転送バッファ3aから最初のブロックB1をホストHへ再送する。
【0086】
<ステップS5>
ホストHは再送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、受信バッファ2aと転送バッファ3aとはデータをそのまま保持する。
【0087】
図4では、ホストHは再送された最初のブロックB1に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは受信バッファ2aから転送バッファ3aへ次のブロックB2を転送する。
【0088】
<ステップS6>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ次のブロックB2を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ更に次のブロックB3を転送する。
<ステップS7>
ホストHは転送された次のブロックB2に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
図4では、ホストHは次のブロックB2に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは受信バッファ2aから転送バッファ3aへ、更に次のブロックB3を転送する。
【0089】
<ステップS8>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ更に次のブロックB3を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックBR4を転送する。
以下、同様なステップが繰り返される。
【0090】
実施例1による無線インタフェースカード10Aは上記の通り、パケットバッファ1aと受信バッファ2aとの他に、副バッファとして転送バッファ3aを有する。無線インタフェースカード10Aはブロックを、受信バッファ2aから一旦転送バッファ3aへ転送し、転送バッファ3aからホストHへ送出する。それにより、転送バッファ3aで送出済ブロックを保持し、受信バッファ2aでは次の未送ブロックを保持する。
ホストHは、読み出し命令の宛先アドレスを受信バッファ2a又は転送バッファ3aのいずれかに対応させるだけで、共通の読み出し命令をブロック送出命令Rn又はブロック再送命令Rtとして使い分けできる。従って、ホストHは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送のいずれかを指示するためだけのハンドシェイクを行わなくても良い。実際、図4に示される実施例1でのフロー図には、図14に示される従来のデータ転送装置でのフロー図とは異なり、エラーチェックステップSWが含まれない。
【0091】
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストに対し、無線インタフェースカード10Aはスムーズなブロック転送を実現できる。
【0092】
実施例1による無線インタフェースカード10Aでは、図4のステップS3に示されるように、最初のブロックB1が転送バッファ3aからホストHへ送出されると同時に、次のブロックB2がパケットバッファ1aから受信バッファ2aへ転送される。その二番目のブロックB2の転送は特に、最初のブロックB1がホストHにより正常に受信されたか否かに関わらない。従って、最初のブロックB1のホストHへの送出にエラーが生じても、ステップS3の終了時には二番目のブロックB2までがパケットバッファ1aから受信バッファ2aへ転送し終わる。このブロック転送は、図14に示される従来のものより、一ステップだけ速い。そのことは、実施例1では受信バッファ2aによる最初のブロックB1の保持時間がせいぜい一ステップ程度に限られることから理解される。
【0093】
こうして、実施例1による無線インタフェースカード10Aでは、ブロック転送の開始時、最初の二つのブロックに対するパケットバッファ1aから受信バッファ2aへの転送が、従来の装置より実質的に速い。従って、パケットバッファ1aでの空き領域が素早く、かつ大きく確保されるので、パケットバッファ1aからパケットのデータが溢れない。その結果、データ転送の信頼性を向上できる。
【0094】
《実施例2》
図5は、外部無線LANからホストHへのデータ転送時、本発明の実施例2による無線インタフェースカード10B内でのデータの流れを示すブロック図である。無線インタフェースカード10Bは、実施例1による無線インタフェースカード10Aと同様なデータ転送装置である。
無線インタフェースカード10Bは無線モジュール1、受信バッファ制御部2B、コピーバッファ制御部3B、及びホストインタフェース4を有する。
無線モジュール1、ホストインタフェース4、及びバス6は実施例1によるものと同様であるので、それらの説明は実施例1でのものを援用する。
【0095】
受信バッファ制御部2Bは受信バッファ2aを含む。受信バッファ2aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(ブロック)に実質的に等しく、例えば512Bである。
コピーバッファ制御部3Bはコピーバッファ3bを含む。コピーバッファ3bは受信バッファ2aと同様にFIFOメモリであり、そのデータ容量は一ブロックと実質的に等しく、例えば512Bである。
【0096】
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2Bはそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。パケットバッファ1aから受信バッファ2aへのブロック転送は、無線インタフェースカード10Bの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、パケットバッファ1aから受信バッファ2aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
受信バッファ2aが満杯になるとき、受信バッファ制御部2Bは、ホストインタフェース4を通しホストHへ割込信号Intを送出し、ホストHによるブロックの読み出しを要求する。
【0097】
ホストHからのブロック送出命令Rnが受信される時、受信バッファ制御部2Bは受信バッファ2aからホストHへブロックBRを転送する。その転送と同時に、同じブロックBRを受信バッファ2aからコピーバッファ3bへ転送する。受信バッファ2aからコピーバッファ3bへのブロック転送は、無線インタフェースカード10Bの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、受信バッファ2aからコピーバッファ3bへのブロック転送は、一ブロック当たり約70μ秒で実行される。
【0098】
コピーバッファ3bには、受信バッファ2aからホストHへ送出されたブロックBRのコピー、すなわち送出済ブロックが保持される。一方、受信バッファ2aには、一ブロックのホストHへの送出後直ちに、次の未送ブロックが転送される。こうして、コピーバッファ3bには送出済ブロックが保持されると共に、受信バッファ2aには次の未送ブロックが保持される。従って、ホストHからのブロック再送命令Rtが受信される時、コピーバッファ制御部3Bがコピーバッファ3bからホストHへ送出済ブロックBsを送出する。
【0099】
ブロック送出命令とブロック再送命令とは、実施例1と同様に、共通の読み出し命令の宛先アドレスで識別される。ホストインタフェース4はホストHから正常に受信された読み出し命令を解読し、その宛先アドレスに応じ、受信バッファ制御部2Bへブロック送出命令Rnとして、又はコピーバッファ制御部3Bへブロック再送命令Rtとして、それぞれ通知する。
例えば、宛先アドレスが受信バッファ2aに対応するとき、その読み出し命令をブロック送出命令Rnとみなす。一方、宛先アドレスがコピーバッファ3bに対応するとき、その読み出し命令をブロック再送命令Rtとみなす。
ホストインタフェース4はその他に、読み出し命令により含まれ、宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、ブロックの転送元バッファを識別しても良い。例えば最上位ビットが「0」のときはその読み出し命令をブロック送出命令Rnとみなす。一方、最上位ビットが「1」のときはその読み出し命令をブロック再送命令Rtとみなす。
【0100】
実施例2による無線インタフェースカード10BからホストHへのブロック転送時に、ホストインタフェース4とホストHとの間で交換される信号のタイミングは、図2に示される実施例1によるものと同様である。従って、実施例2での信号のタイミングについては図2を参照する。
図6は、同じブロック転送時、パケットバッファ1a、受信バッファ2a、及びコピーバッファ3b間でのブロック転送を模式的に示す図である。
【0101】
図2と図6とは共にブロック転送の開始時に対応する。図6の(a)に示されるように、無線モジュール1はアンテナAを通し受信した伝送データPを、パケットバッファ1aへ順次蓄積する。伝送データPの最初のパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2Bは、図6の(b)に示されるように、そのパケットP1の先頭から最初のブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2Bは、ホストHに対する割込信号Intをアサートする。
【0102】
割込信号Intは図2に示されるように、データ線DATの一本を通しホストHへ送出される。ホストHは割込信号Intの受信時、割込解除信号CLRをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrを、コマンド線CMDを通しホストHへ返信する。それと共に、受信バッファ制御部2Bへ割込解除信号CLRを通知する。受信バッファ制御部2Bは割込解除信号CLRの受信時、割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0103】
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4はブロック送出命令Rnに対するレスポンスrを返信すると共に、受信バッファ制御部2Bへブロック送出命令Rnを通知する。
受信バッファ制御部2Bはブロック送出命令Rnの受信時、図6の(c)に示されるように、受信バッファ2aからホストインタフェース4を通しホストHへ、最初のブロックB1を送出する。それと同時に、コピーバッファ3bへも、最初のブロックB1を転送する。更に、その転送終了時直ちに、パケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
上記の転送と並行し、パケットバッファ1aの空き領域へは伝送データPの新たなパケットP2が蓄積される。
【0104】
ホストHは転送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果が「符号誤りなし」を示すとき、ホストHはブロック送出命令Rnを発行する。一方、誤り検出の結果が「符号誤り有り」を示すとき、ホストHはブロック再送命令Rtを発行する。
図2では、最初に転送された最初のブロックB1が符号誤りを含むときが例示される。
ホストHはブロック再送命令Rtを、コマンド線CMDを通し、ホストインタフェース4へ送出する。ホストインタフェース4は、ブロック再送命令Rtに対するレスポンスrを返信すると共に、コピーバッファ制御部3へブロック再送命令Rtを通知する。
コピーバッファ制御部3Bは、ブロック再送命令Rtの受信時、図6の(d)に示されるように、コピーバッファ3bから最初のブロックB1をホストHへ再送する。
【0105】
ホストHは再送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果に応じ、ホストHは次に発行すべき読み出し命令を、ブロック送出命令Rn又はブロック再送命令Rtのいずれかに決定する。
図2では、再送された最初のブロックB1が符号誤りを含まないときが例示される。
ホストHはブロック送出命令Rnを、コマンド線CMDを通し、ホストインタフェース4へ送出する。ホストインタフェース4は、ブロック送出命令Rnに対するレスポンスrを返信すると共に、受信バッファ制御部2Bへブロック送出命令Rnを通知する。
【0106】
受信バッファ制御部2Bはブロック送出命令Rnの受信時、図6の(e)に示されるように、受信バッファ2aからホストインタフェース4を通しホストHへ次のブロックB2を送出する。それと同時に、コピーバッファ3bへ同じブロックB2を転送する。更に、その転送終了時直ちに、パケットバッファ1aから受信バッファ2aへ、その次のブロックB3を転送する。
こうして、実施例2による無線インタフェースカード10Bはブロック転送を実行する。
【0107】
図7は、無線インタフェースカード10BからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHによる伝送クロック、及び無線インタフェースカード10Bの内部クロックが約15〜25MHz程度の周波数であるとき、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1のそれぞれの間でのブロック転送時間はいずれも約50〜70μ秒であり、実質上等しいとみなせる。
【0108】
図7に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S7に分割される。
<ステップS1>
パケットバッファ1aに蓄積されたパケットの先頭から最初のブロックB1が分離され、無線モジュール1から受信バッファ制御部2Bへ転送される。
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2BはホストHに対する割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2Bへ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2Bへ通知される。その通知時、受信バッファ制御部2Bは割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0109】
<ステップS2>
ホストHはブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、そのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを、受信バッファ制御部2Bへ通知する。その通知時、受信バッファ制御部2Bは、受信バッファ2aからホストHへ最初のブロックB1を送出し、同時にコピーバッファ3bへ最初のブロックB1を転送する。
【0110】
<ステップS3>
受信バッファ2aから最初のブロックB1を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
ホストHは転送された最初のブロックB1に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の最初のブロックB1を保持する。一方、受信バッファ2aは次のブロックB2を保持する。
【0111】
図7では、ホストHは転送された最初のブロックB1に対し「符号誤り有り」と判断し、ブロック再送命令Rtを発行する。ホストインタフェース4はそのブロック再送命令Rtを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック再送命令Rtの正常な受信時、ホストインタフェース4はそのブロック再送命令Rtをコピーバッファ制御部3Bへ通知する。その通知時、コピーバッファ制御部3Bは、コピーバッファ3bから最初のブロックB1をホストHへ再送する。
【0112】
<ステップS4>
ホストHは再送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、受信バッファ2aとコピーバッファ3bとはデータをそのまま保持する。
【0113】
図7では、ホストHは再送された最初のブロックB1に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。その通知時、受信バッファ制御部2Bは、受信バッファ2aからホストHへ次のブロックB2を送出し、同時にコピーバッファ3bへそのブロックB2を転送する。
【0114】
<ステップS5>
受信バッファ2aから二番目のブロックB2を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ、三番目のブロックB3を転送する。
ホストHは転送された二番目のブロックB2に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の二番目のブロックB2を保持する。一方、受信バッファ2aは三番目のブロックB3を保持する。
図7では、ホストHは二番目のブロックB2に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。
【0115】
<ステップS6>
受信バッファ制御部2Bはブロック送出命令Rnに従い、受信バッファ2aからホストHへ三番目のブロックB3を送出し、同時にコピーバッファ3bへそのブロックB3を転送する。
<ステップS7>
受信バッファ2aから三番目のブロックB3を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ、四番目のブロックB4を転送する。
ホストHは転送された三番目のブロックB3に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の三番目のブロックB3を保持する。一方、受信バッファ2aは四番目のブロックB4を保持する。
【0116】
図7では、ホストHは三番目のブロックB3に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。
以下、同様なステップが繰り返される。
【0117】
実施例2による無線インタフェースカード10Bは上記の通り、パケットバッファ1aと受信バッファ2aとの他に、副バッファとしてコピーバッファ3bを有する。無線インタフェースカード10Bはブロックを、受信バッファ2aからホストHへ送出すると同時に、コピーバッファ3bへ転送する。それにより、コピーバッファ3bで送出済ブロックを保持し、受信バッファ2aでは次の未送ブロックを保持する。
ホストHは、読み出し命令の宛先アドレスを受信バッファ2a又はコピーバッファ3bのいずれかに対応させるだけで、共通の読み出し命令をブロック送出命令Rn又はブロック再送命令Rtとして使い分けできる。従って、ホストHは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送のいずれかを指示するためだけのハンドシェイクを行わなくても良い。実際、図7に示される実施例2でのフロー図には、図14に示される従来のデータ転送装置でのフロー図とは異なり、エラーチェックステップSWが含まれない。
【0118】
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストに対し、無線インタフェースカード10Bはスムーズなブロック転送を実現できる。
【0119】
実施例2による無線インタフェースカード10Bでは、図7のステップS3、S5、及びS7に示されるように、一つのブロックが受信バッファ2aからホストHへ送出されると直ちに、次のブロックがパケットバッファ1aから受信バッファ2aへ転送される。そのとき、受信バッファ2aへの次のブロックの転送は特に、前のブロックがホストHにより正常に受信されたか否かに関わらない。従って、前のブロックのホストHへの送出にエラーが生じても、ステップS3、S5、及びS7のそれぞれの終了時には、次のブロックがパケットバッファ1aから受信バッファ2aへ転送される。このブロック転送は、図14に示される従来のものより一ステップだけ速い。そのことは、実施例2では受信バッファ2aによる同一ブロックの保持時間がせいぜい一ステップ程度に限られることから理解される。
【0120】
こうして、実施例2による無線インタフェースカード10Bでは、全てのブロックに対するパケットバッファ1aから受信バッファ2aへの転送が、従来の装置より実質的に速い。従って、パケットバッファ1aでの空き領域が素早く、かつ大きく確保されるので、パケットバッファ1aからパケットのデータが溢れない。その結果、データ転送の信頼性を向上できる。
【0121】
《実施例3》
図8は、ホストHから外部無線LANへのデータ転送時、本発明の実施例3による無線インタフェースカード20内でのデータの流れを示すブロック図である。無線インタフェースカード20は、実施例1と実施例2とのそれぞれによる無線インタフェースカードと同様なデータ転送装置である。
無線インタフェースカード20は無線モジュール1、送信バッファ制御部5、及びホストインタフェース4を有する。
無線モジュール1、ホストインタフェース4、及びバス6は実施例1によるものと同様であるので、それらの説明は実施例1でのものを援用する。
【0122】
送信バッファ制御部5は送信バッファ5aを含む。送信バッファ5aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(ブロック)に実質的に等しく、例えば512Bである。
ホストHから送出された送信対象ブロックBTがホストインタフェース4により受信されるとき、送信バッファ制御部5はその送信対象ブロックBTを、送信バッファ5aへ転送する。
送信バッファ5aが満杯になるとき、送信バッファ制御部5は送信対象ブロックBTを、送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。
無線モジュール1はパケットバッファ1aへ蓄積された複数の送信対象ブロックBTから一つのパケットPを構成し、アンテナAを通し、外部の無線LAN等へ無線で送信する。
【0123】
ホストHからの書き込み命令Wの受信時、送信バッファ制御部5はその書き込み命令Wの宛先アドレスに応じ、その書き込み命令Wに続く送信対象ブロックBTが、新たなブロック又は再送ブロックのいずれであるのかを識別する。
例えば、宛先アドレスが送信バッファ5aに対応するとき、送信バッファ制御部5は送信対象ブロックBTを、新たなブロックとして認識する。一方、宛先アドレスが送信バッファ5aのアドレスとは別の特定のものに対応するとき、送信バッファ制御部5は送信対象ブロックBTを、再送ブロックとして認識する。
その他に、送信バッファ制御部5は、書き込み命令Wの宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、送信対象ブロックを識別しても良い。すなわち、最上位ビットが「0」のときは送信対象ブロックを新たなブロックとして認識し、「1」のときは再送ブロックとして認識する。
以下、宛先アドレスを送信バッファ2aに対応させた書き込み命令Wをブロック送出通知Wnとし、宛先アドレスを上記の特定アドレスに対応させた書き込み命令Wをブロック再送通知Wtとする。
【0124】
図9は、ホストHから無線インタフェースカード20へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図9では図4及び図7と同様に、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は上り方向伝送を示し、右向きの矢印は下り方向伝送を示す。
【0125】
図9はブロック転送の開始時に対応する。ホストHはコマンド線CMDを通し、ブロック送出通知Wnをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した最初のブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果をホストHへ、ホストインタフェース4とデータ線DATとを通し返送する。
【0126】
送信バッファ制御部5は、誤り検出結果の送出から所定時間、ビジー信号Bsyをアサートする。それにより、ホストHによる書き込み命令Wの発行間隔、すなわち送信バッファ5aの更新間隔を所定の大きさ以上に維持し、上書きによる送信対象ブロックの損傷を防ぐ。
【0127】
ここで、送信バッファ制御部5がホストHから転送された最初のブロックB1に対し符号誤りを検出した、と想定する。そのとき、送信バッファ制御部5は受信済の最初のブロックB1を破棄する。更に、「符号誤り有り」を示す誤り検出結果NGを、ホストHへ返送する。
返送された誤り検出結果NGが「符号誤り有り」を示すことから、ホストHは、最初のブロックB1の転送にエラーが有った、と判断する。その判断に基づき、ホストHはブロック再送通知Wtをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はそのブロック再送通知Wtに対し、レスポンスrを送出する。
【0128】
ブロック再送通知Wtの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック再送通知Wtを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果をホストHへ返送する。
こうして、最初のブロックB1の再送が実行される。
【0129】
ここで、送信バッファ制御部5は、ホストHから再送された最初のブロックB1に対し符号誤りを検出しなかった、と想定する。そのとき、送信バッファ制御部5は「符号誤りなし」を示す誤り検出結果OKを、ホストHへ返送する。
返送された誤り検出結果OKが「符号誤りなし」を示すことから、ホストHは、再送ブロックB1の転送に成功した、と判断する。その判断に基づき、ホストHは次のブロックについてのブロック送出通知Wnをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
【0130】
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ次のブロックB2を、データ線DATを通し再送する。ホストインタフェース4はその新たなブロックB2を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB2を送信バッファ5aに蓄積し、誤り検出を行う。更にその誤り検出結果をホストHへ返送する。
以降、送信対象ブロックのそれぞれについて、上記と同様な操作が繰り返される。
【0131】
図10は、ホストHから無線インタフェースカード20へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、ホストHから送信バッファ5aへのブロック転送時間は、送信バッファ5aからパケットバッファ1aへのブロック転送時間と、一般に同程度として良い。
【0132】
図10に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップT1〜T5に分割される。更に、それぞれのステップの間に、エラー通知ステップTEが以下のように挿入される。
【0133】
<ステップT1>
ホストHはブロック送出通知Wnをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した最初のブロックB1を送信バッファ5aに蓄積する。
【0134】
<エラー通知ステップTE>
送信バッファ制御部5は、送信バッファ5aに蓄積した最初のブロックB1に対し誤り検出を行う。ここで、最初のブロックB1について転送エラーが有った、と想定する。送信バッファ制御部5は、その誤り検出結果NGをホストHへ返送し、所定時間、ビジー信号Bsyをアサートする。更に、受信済の最初のブロックB1を破棄する。
【0135】
<ステップT2>
ホストHは、誤り検出結果NGの受信に応じ、最初のブロックB1の再送を決定する。それにより、ビジー信号Bsyのネゲート時、ブロック再送通知Wtをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック再送通知Wtに対しレスポンスrを送出する。
ブロック再送通知Wtの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック再送通知Wtを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積する。
【0136】
<ステップT3>
送信バッファ制御部5は、送信バッファ5aに蓄積した再送ブロックB1に対し誤り検出を行う。ここで、再送ブロックB1は正常に転送され、符号誤りを含まなかった、と想定する。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、再送ブロックB1を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
【0137】
<ステップT4>
ホストHは、誤り検出結果OKの受信に応じ、次の新たなブロックB2の送出を決定する。それにより、ビジー信号Bsyのネゲート時、ホストHはブロック送出通知Wnを送信バッファ制御部5へ送出する。ホストインタフェース4はそのブロック送出通知Wnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4はそのブロック送出通知Wnを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ、次の新たなブロックB2を送出する。ホストインタフェース4はそのブロックB2を送信バッファ制御部5へ中継し、送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積する。
【0138】
<ステップT5>
送信バッファ制御部5は、送信バッファ5aに蓄積した二番目のブロックB2に対し誤り検出を行う。ここで、二番目のブロックB2は正常に転送され、符号誤りを含まなかった、と想定する。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、二番目のブロックB2を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
以下、同様なステップが繰り返される。
無線モジュール1は、パケットバッファ1aへ蓄積された複数の送信対象ブロックから一つのパケットを構成し、外部無線LAN等へ送出する。
【0139】
実施例3による無線インタフェースカード20は上記の通り、送信バッファ5aとパケットバッファ1aとの二種類のバッファを利用し、ホストHから受信した複数の送信対象ブロックを一つのパケットにまとめ、外部無線LAN等へ送出する。それにより、ホストHとの間での通信データ形態(ブロック)を無線LAN等での伝送データ形態(パケット)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、ブロック転送速度を制御する。こうして、ホストHは無線LAN等へデータをスムーズに送信する。
【0140】
送信バッファ制御部5は、転送されたブロックごとに、その符号誤りの有無をホストHへ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、ホストHは同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、無線インタフェースカード20は、ホストHによるデータ送信について、信頼性を高く維持する。
【0141】
実施例3による無線インタフェースカード20に対し、ホストHは、書き込み命令の宛先アドレスを送信バッファ5a又は特定アドレスのいずれかに対応させるだけで、共通の書き込み命令をブロック送出通知Wn又はブロック再送通知Wtとして使い分けできる。従って、ホストHは無線インタフェースカード20に対しては、従来のデータ転送装置とは異なり、ブロック再送を予め通知しなくても良い。実際、図10に示される実施例3でのフロー図には、図16に示される従来のデータ転送装置でのフロー図とは異なり、再送通知ステップTWが含まれない。
【0142】
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それによりCPUのパワーが比較的小さいホストに対し、無線インタフェースカード20はスムーズなブロック転送を実現できる。
【0143】
【発明の効果】
本発明の一つの観点によるデータ転送装置は、パケットバッファと受信バッファとの他に副バッファを有する。ホストへのブロック転送時、送出済ブロックは副バッファに保持され、転送エラーが生じた時は副バッファから再送される。従って、受信バッファは送出済ブロックを保持しなくても良く、特に副バッファへそのブロックを転送した後、直ちに次の未送ブロックを上書きされても良い。それにより、ホストへのブロック転送の開始時、最初のブロックに続き二番目のブロックが、最初のブロックの再送の有無に関わらず、直ちにパケットバッファから受信バッファへ転送される。
その結果、上記のデータ転送装置では、パケット内の最初の二つのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる最初のブロックの保持時間が短い。こうして、パケットバッファでは、その最初の二つのブロックに相当する記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0144】
上記のデータ転送装置は、ブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、更に副バッファからホストへ送出しても良い。その他に、ブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、同時にその未送ブロックを受信バッファからホストへ送出しても良い。それにより、副バッファには送出済ブロックが保持され、受信バッファには次の未送ブロックが保持される。
【0145】
ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。
例えば、読み出し命令の宛先アドレスを受信バッファ又は副バッファのいずれかに対応させるだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。
その他に、宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別しても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0146】
従って、ホストは上記のデータ転送装置に対しては、従来のデータ転送装置とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0147】
上記のデータ転送装置では、特に未送ブロックを受信バッファから副バッファとホストとの両方へ同時に送出するとき、全てのブロックについてパケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる同一ブロックの保持時間が短い。従って、パケットバッファでの記録領域の開放が特に速やかであるので、パケットバッファからパケットのデータが溢れることが十分に回避できる。
【0148】
本発明の別の観点によるデータ転送装置は、ホストからの読み出し命令の宛先アドレスに基づき、共通の読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別する。
例えば、ブロックバッファのアドレスを宛先アドレスとして含む読み出し命令をブロック送出命令とみなし、特定の宛先アドレスを含む読み出し命令をブロック再送命令とみなす。
その他に、上記のデータ転送装置は、読み出し命令の宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック再送命令とみなしても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0149】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0150】
本発明の更に別の観点によるデータ転送装置は、ホストからの書き込み命令の宛先アドレスに基づき、共通の書き込み命令をブロック送出通知又はブロック再送通知のいずれかとして識別する。
例えば、ブロックバッファのアドレスを宛先アドレスとして含む書き込み命令をブロック送出通知とみなし、特定の宛先アドレスを含む書き込み命令をブロック再送通知とみなす。
その他に、上記のデータ転送装置は、書き込み命令の宛先アドレスを示すデータの特定ビットに基づき、その書き込み命令をブロック再送通知とみなしても良い。例えば、その特定ビットが「1」のとき、その書き込み命令がブロック再送通知とみなされ、「0」のときブロック送出通知とみなされても良い。
【0151】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の書き込み命令の宛先アドレスを付け替えるだけで、次の送信対象ブロックの転送又は送出済ブロックの再送をそれぞれ通知できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、送出済ブロックの再送を予め通知するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【図面の簡単な説明】
【図1】外部無線LANからホストHへのデータ転送時、本発明の実施例1による無線インタフェースカード10A内でのデータの流れを示すブロック図である。
【図2】本発明の実施例1による無線インタフェースカード10AからホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。
【図3】本発明の実施例1による無線インタフェースカード10Aで、図2に示されたものと同じブロック転送時、パケットバッファ1a、受信バッファ2a、及び転送バッファ3aでのブロック転送を模式的に示す図である。(a)〜(f)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図4】本発明の実施例1による無線インタフェースカード10AからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1の間で交換される信号のフロー図である。
【図5】外部無線LANからホストHへのデータ転送時、本発明の実施例2による無線インタフェースカード10B内でのデータの流れを示すブロック図である。
【図6】本発明の実施例2による無線インタフェースカード10BからホストHへのブロック転送時、パケットバッファ1a、受信バッファ2a、及びコピーバッファ3bでのブロック転送を模式的に示す図である。(a)〜(e)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図7】本発明の実施例2による無線インタフェースカード20からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1の間で交換される信号のフロー図である。
【図8】ホストHから外部無線LANへのデータ転送時、本発明の実施例3による無線インタフェースカード20内でのデータの流れを示すブロック図である。
【図9】ホストHから本発明の実施例3による無線インタフェースカード20へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。
【図10】ホストHから本発明の実施例3による無線インタフェースカード20へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号のフロー図である。
【図11】ホストHと外部の無線LAN等との間でのデータ交換時、従来の無線インタフェースカード100内でのデータの流れを示すブロック図である。
【図12】従来の無線インタフェースカード100からホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。(a)はブロック転送の開始直後のタイミング図であり、(b)は(a)に示されたものに続く部分である。
【図13】従来の無線インタフェースカード100で、図12に示されたものと同じブロック転送時、パケットバッファ1a及び受信バッファ2aでのブロック転送を模式的に示す図である。(a)〜(e)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図14】従来の無線インタフェースカード100からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、受信バッファ制御部2、及び無線モジュール1の間で交換される信号のフロー図である。
【図15】ホストHから従来の無線インタフェースカード100へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。(a)はブロック転送の開始直後のタイミング図であり、(b)は最初のブロックB1の再送を含むときのタイミング図である。
【図16】ホストHから従来の無線インタフェースカード100へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号についてのフロー図である。
【符号の説明】
A アンテナ
P 伝送データ
BR ブロック
Int 割り込み信号
R 読み出し命令
6 バス
CMD コマンド線
CLK クロック線
DAT データ線
【発明の属する技術分野】
本発明は、ホストと外部との間で無線等により伝送されるデータを中継するためのデータ転送装置に関する。
【0002】
【従来の技術】
パーソナルコンピュータ、携帯電話、携帯情報端末(PDA)等の情報処理機器、及びディジタルテレビ等の情報家電では、LAN、インターネット、又はディジタル放送等を通し伝送される映像音声データを、リアルタイムにかつスムーズに処理できることが、特に重要である。従って、情報処理機器等の本体(ホスト)とネットワーク等との間のインタフェースとして機能する装置(以下、データ転送装置という)には、高速でかつスムーズなデータ転送能力が求められる。
【0003】
ネットワーク等、特に無線LANでは、データ伝送速度がホストのデータ処理速度より一般にかなり小さい。更に、ネットワーク等での伝送データ形態(例えば、フォーマット及び伝送単位)は、ホスト内部でのデータ形態とは一般に異なる。
データ転送装置は内部にバッファを備える。ホスト又はネットワーク等の一方からデータが入力されるとき、その入力データはバッファへ一時記憶される。バッファ内のデータは、送出先であるホスト又はネットワーク等の他方に適したデータ形態へ変換され、その送出先に適したデータ転送速度で送出される。こうして、データ転送装置はホストとネットワーク等との間で、それぞれのデータ処理速度及びデータ形態の相違を調整し、スムーズなデータ交換を実現する。
【0004】
データ転送装置には、様々な機種のホスト間で汎用のものがある。汎用型装置には、特にカード形状の小型のもの(以下、インタフェースカードという)がある。インタフェースカードは小型であるので、主に携帯用情報処理機器での使用に有利である。
インタフェースカードには、例えば無線モジュールを含むもの(以下、無線インタフェースカードという)がある。無線インタフェースカードはホストと外部の無線LAN等との間で無線によるデータ交換を実現する。
図11は、ホストHと外部の無線LAN等との間でのデータ交換時、従来の無線インタフェースカード100内でのデータの流れを示すブロック図である。
無線インタフェースカード100は、無線モジュール1、受信バッファ制御部2、送信バッファ制御部5、及びホストインタフェース4を有する。
【0005】
無線モジュール1は、アンテナAとパケットバッファ1aとを含む。
無線モジュール1はアンテナAを通し、外部の無線LAN等から伝送データPを受信し、逆にその無線LAN等へ伝送データPを送信する。伝送データPは通常、パケットごとに伝送される。ここで、一パケット当たりのデータ量は固定でも可変でも良い。
パケットバッファ1aは例えばSRAMであり、そのデータ容量は一パケット当たりの最大データ量より十分に大きい。アンテナAを通し受信された伝送データは順次、パケットバッファ1aへ蓄積される。
【0006】
受信バッファ制御部2は受信バッファ2aを含む。受信バッファ2aは例えば先入れ先出し(FIFO)メモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(以下、ブロックという)に実質的に等しい。ここで、一ブロックのサイズは一パケットのサイズより一般に小さい。
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2はそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2は割込信号Intを、ホストインタフェース4を通しホストHへ送出する。それにより、ホストHに対し、受信バッファからのデータ読み出しを要求する。
【0007】
ホストインタフェース4は例えば、コマンド線CMD、複数のデータ線DAT、及びクロック線CLKを含むバス6でホストHへ接続される。そのバス6を通し、ホストインタフェース4は、受信バッファ制御部2又は送信バッファ制御部5とホストHとの間で交換される信号を、例えば次のように中継する。
受信バッファ制御部2により出力された割込信号Int又はブロックBRは、データ線DATを通しホストHへ送出される。送信バッファ制御部5により出力されたビジー信号Bsyも同様に、データ線DATを通しホストHへ送出される。
更に、データ線DATを通しホストHから送信対象ブロックBTが受信されるとき、その送信対象ブロックBTは送信バッファ制御部5へ転送される。
【0008】
ホストHから発行されたコマンドは、コマンド線CMDを通し受信され、解読される。その解読を通し、コマンドが正常に受信されたか否か、が判断され、それぞれの判断結果を示すレスポンス(ACK又はNAK)が、コマンド線CMDを通しホストHへ返信される。
正常に受信されたコマンドが、特に読み出し命令R又は書き込み命令Wであるとき、そのコマンドはその宛先アドレスに応じ、受信バッファ制御部2又は送信バッファ制御部5へ通知される。
ホストHとの間でのデータ通信時、ホストインタフェース4はクロック線CLKを通し、伝送クロックをホストHから受信する。ホストHとホストインタフェース4との間のデータ通信は、その伝送クロックに従い、同期通信で実行される。
【0009】
送信バッファ制御部5は送信バッファ5aを含む。送信バッファ5aは例えばFIFOメモリであり、一ブロックに実質的に等しい一定のデータ容量を持つ。
ホストHから送出された送信対象ブロックBTがホストインタフェース4により受信されるとき、送信バッファ制御部5はその送信対象ブロックBTを、送信バッファ5aへ転送する。
送信バッファ5aが満杯になるとき、送信バッファ制御部5は送信対象ブロックBTを、送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。
無線モジュール1は、送信バッファ5aから転送される送信対象ブロックBTをパケットバッファ1aへ蓄積する。更に、そのように蓄積された複数の送信対象ブロックBTから一つのパケットPを構成し、アンテナAを通し、外部の無線LAN等へ無線で送信する。
【0010】
図12は、無線インタフェースカード100からホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図12では、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は無線インタフェースカード100からホストHへの伝送(以下、上り方向伝送という)を、右向きの矢印はその逆の伝送(以下、下り方向伝送という)を、それぞれ示す。
図13は、同じブロック転送時、無線インタフェースカード100でのデータの流れを模式的に示す図である。
【0011】
図12の(a)、及び図13の(a)と(b)は、ブロック転送の開始時に対応する。図13の(a)に示されるように、無線モジュール1は、アンテナAを通し受信した伝送データPをパケットバッファ1aへ順次蓄積する。伝送データPの一つのパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2は、図13の(b)に示されるように、その一パケットP1の先頭から一ブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2は、図12の(a)に示されるように、ホストHへの割込信号Intをアサートする。
【0012】
割込信号Intは、例えば図12の(a)に示されるように、データ線DATの一本を通しホストHへ伝送される。ホストHは割込信号Intの受信時、コマンド線CMDを通し割込解除信号CLRをホストインタフェース4へ送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrをホストHへ、コマンド線CMDを通し返信する。それと共に、受信バッファ制御部2へ割込解除信号CLRを通知する。それにより、受信バッファ制御部2は割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0013】
ホストHはコマンド線CMDを通し、読み出し命令Rをホストインタフェース4へ送出する。ホストインタフェース4は、その読み出し命令Rに対するレスポンスrを返信すると共に、受信バッファ制御部2へその読み出し命令Rを通知する。それにより、受信バッファ制御部2はデータ線DATを通し、受信バッファ2aに蓄積された一ブロックB1をホストHへ送出する(図13の(c)参照)。
【0014】
ホストHは転送された一ブロックB1に対し、誤り検出を実行する。誤り検出の終了時、ホストHは、図12の(a)に示されるように、書き込み命令Wをホストインタフェース4へ送出し、ホストインタフェース4からのレスポンスrを待つ。そのレスポンスrがホストインタフェース4による書き込み命令Wの正常な受信を示すとき、ホストHはその書き込み対象データとして誤り検出結果を、ホストインタフェース4へデータ線DATを通し送出する。
受信バッファ制御部2はホストインタフェース4を通し、その誤り検出結果を受信する。更に、それに対する応答として、受信された誤り検出結果を示すデータについて行った誤り検出の結果crcを、データ線DATを通しホストHへ返送する。
【0015】
ホストHから「符号誤りなし(OK)」を示す誤り検出結果が正常に受信されるとき、図13の(d)に示されるように、受信バッファ制御部2はパケットバッファ1aから次のブロックB2を受信バッファ2aへ転送する。その後、ホストHから新たな読み出し命令Rを受信した時、受信バッファ2aからホストHへ、次のブロックB2を送出する。
【0016】
ホストHから「符号誤り有り(NG)」を示す誤り検出結果が正常に受信されるとき、図12の(b)及び図13の(e)に示されるように、受信バッファ制御部2は受信バッファ2aに記憶された元のブロックB1をそのまま保持する。その後、ホストHから新たな読み出し命令Rを受信した時、受信バッファ2aからホストHへ、同じブロックB1を再送する。
【0017】
図14は、無線インタフェースカード100からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、受信バッファ制御部2、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、受信バッファ2aからホストHへの一ブロック当たりの転送時間(以下、ブロック転送時間という)は、パケットバッファ1aから受信バッファ2aへのブロック転送時間と、一般に同程度として良い。
【0018】
図14に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S6に分割される。更に、それぞれのステップの間に割り込みステップSintとエラーチェックステップSWとが、以下のように挿入される。
<ステップS1>
パケットバッファ1aに記憶されたパケットの先頭から最初のブロックB1が、無線モジュール1から受信バッファ制御部2へ転送される。
【0019】
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2は割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2へ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2へ通知される。その通知時、受信バッファ制御部2は割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0020】
<ステップS2>
割込解除信号CLRがホストインタフェース4により正常に受信された時、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。ホストインタフェース4はその読み出し命令Rを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4はその読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ最初のブロックB1を送出する。
【0021】
<エラーチェックステップSW>
ホストHは転送されたブロックB1の符号誤りをチェックする。更に、書き込み命令Wを発行し、その誤り検出結果の送出を通知する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを受信バッファ制御部2へ通知する。
【0022】
書き込み命令Wがホストインタフェース4により正常に受信された時、ホストHは誤り検出結果を受信バッファ制御部2へ送出する。誤り検出結果は書き込み命令Wの書き込み対象データとして、データ線DATを通し伝送される。従って、ホストインタフェース4はその誤り検出結果を受信バッファ制御部2へ単に中継する。受信バッファ制御部2は、誤り検出結果を示すデータを受信し、その符号誤りをチェックする。更に、そのチェック結果crcを、ホストインタフェース4とデータ線DATとを通しホストHへ返信する。
【0023】
ホストHからの誤り検出結果が正常に受信される時、受信バッファ制御部2はその誤り検出結果に応じ、次にホストHへ送出すべきブロックを選択し、受信バッファ2aに保持する。すなわち、第二のブロックB2をパケットバッファ1aから受信バッファ2aへ転送し、又は最初のブロックB1を受信バッファ2aに維持する。
図14では、ステップS2で転送された最初のブロックB1に対し、ホストHによる誤り検出結果は「符号誤り有り(NG)」を示す。従って、受信バッファ制御部2は、最初のブロックB1をそのまま、受信バッファ2aに維持する。
【0024】
<ステップS3>
直前のエラーチェックステップSWで受信バッファ制御部2から返信されたチェック結果crcが、誤り検出結果NGの受信バッファ制御部2による正常な受信を示すとき、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。その読み出し命令Rが正常に受信されたか否かを、ホストインタフェース4はチェックし、そのチェック結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4はその読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ、最初のブロックB1を再送する。
【0025】
<エラーチェックステップSW>
ホストHは先のエラーチェックステップSWと同様に、再送されたブロックB1に対し符号誤りをチェックし、その結果を受信バッファ制御部2へ通知する。受信バッファ制御部2はその誤り検出結果に応じ、上記と同様なブロック選択を実行する。
このように、受信バッファ制御部2からホストHへ一ブロックが転送されるごとに、エラーチェックステップSWが実行される。
図14では、再送されたブロックB1に対し、誤り検出結果は「符号誤りなし(OK)」を示す。
【0026】
<ステップS4>
誤り検出結果OKの正常な受信時、受信バッファ制御部2は、無線モジュール1のパケットバッファ1aに記憶されたパケットから第二のブロックB2を分離し、受信バッファ2aへ転送する。
<ステップS5>
直前のエラーチェックステップSWで受信バッファ制御部2から返信されたチェック結果crcが、誤り検出結果OKの受信バッファ制御部2による正常な受信を示すとき、ホストHは読み出し命令Rを受信バッファ制御部2へ送出する。ホストインタフェース4はその読み出し命令Rを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。読み出し命令Rの正常な受信時、ホストインタフェース4は読み出し命令Rを受信バッファ制御部2へ通知する。その通知時、受信バッファ制御部2は受信バッファ2aからホストHへ第二のブロックB2を送出する。
【0027】
<エラーチェックステップSW>
第二のブロックB2について、エラーチェックステップSWが上記のものと同様に実行される。
図14では、第二のブロックB2に対し、誤り検出結果は「符号誤りなし(OK)」を示す。
<ステップS6>
誤り検出結果OKの正常な受信時、受信バッファ制御部2は、無線モジュール1のパケットバッファ1aに記憶されたパケットから第三のブロックB3を分離し、受信バッファ2aへ転送する。
以下、同様なステップが繰り返される。
【0028】
上記のように、従来の無線インタフェースカード100は、パケットバッファ1aと受信バッファ2aとの二種類のバッファを利用し、外部の無線LAN等からの伝送データPのパケットをブロックごとに分割し、ホストHへ転送する。それにより無線LAN等での伝送データ形態(パケット)をホストHでのデータ形態(ブロック)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、データ転送速度を制御する。こうして、ホストHは無線LAN等からデータをスムーズに受信する。
【0029】
ホストHは上記の通り、転送されたブロックの符号誤りの有無を、書き込み命令Wの書き込み対象データとして、受信バッファ制御部2へ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、受信バッファ制御部2は同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、従来の無線インタフェースカード100は、ホストHによるデータ受信について、信頼性を高く維持する。
【0030】
図15は、ホストHから無線インタフェースカード100へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図15では図12と同様に、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は上り方向伝送を、右向きの矢印は下り方向伝送を、それぞれ示す。
【0031】
図15の(a)はブロック転送の開始時に対応する。ホストHはコマンド線CMDを通し、書き込み命令Wをホストインタフェース4へ送出する。ホストインタフェース4はその書き込み命令Wに対し、レスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ、ホストインタフェース4とデータ線DATとを通し返送する。
【0032】
送信バッファ制御部5は、誤り検出結果crcの送出から所定時間、ビジー信号Bsyをアサートする。それにより、ホストHによる書き込み命令Wの発行間隔、すなわち、送信バッファ5aの更新間隔を所定の大きさ以上に維持し、上書きによる送信対象ブロックの損傷を防ぐ。
【0033】
ホストHは返送された誤り検出結果crcから、最初のブロックB1について、転送エラーの有無を判断する。誤り検出結果crcが転送成功を示すとき、ホストHは新たな書き込み命令Wを、ビジー信号Bsyのネゲート時に、ホストインタフェース4へ送出する。ホストインタフェース4は、その書き込み命令Wに対しレスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ、二番目のブロックB2を送出する。ホストインタフェース4は、その二番目のブロックB2を送信バッファ制御部5へ中継する。送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ返送し、所定時間ビジー信号Bsyをアサートする。
【0034】
ホストHは返送された誤り検出結果crcから、二番目のブロックB2について、転送エラーの有無を判断する。誤り検出結果crcが転送成功を示すとき、ホストHは更に新たな書き込み命令Wを、ビジー信号Bsyのネゲート時に、ホストインタフェース4へ送出する。
以降、送信対象ブロックのそれぞれについて、上記と同様な操作が繰り返される。
【0035】
送信バッファ制御部5からホストHへ返送された誤り検出結果crcが転送エラーを示すとき、次のようにブロックの再送が行われる。
図15の(b)は、最初のブロックB1の再送時のタイミング図である。
送信バッファ制御部5は上記の説明の通り、ホストHから転送された最初のブロックB1に対し誤り検出を行う。その結果、符号誤りが検出されたとき、送信バッファ制御部5は受信済の最初のブロックB1を破棄する。更に、「符号誤り有り」を示す誤り検出結果crcを、ホストHへ返送する。
最初のブロックB1が符号誤りを含むことをその誤り検出結果crcが示すとき、ホストHは再送通知信号RTYをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はその再送通知信号RTYに対し、レスポンスrを送出する。
【0036】
再送通知信号RTYの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその再送通知信号RTYを通知する。
ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果crcをホストHへ返送する。
こうして、最初のブロックB1の再送が完了する。
【0037】
図16はホストHから無線インタフェースカード100へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号についてのフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、ホストHから送信バッファ5aへのブロック転送時間は、送信バッファ5aからパケットバッファ1aへのブロック転送時間と、一般に同程度として良い。
【0038】
図16に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップT1〜T5に分割される。更に、それぞれのステップの間に、エラー通知ステップTE及び再送通知ステップTWが以下のように挿入される。
【0039】
<ステップT1>
ホストHは書き込み命令Wをホストインタフェース4へ送出する。ホストインタフェース4はその書き込み命令Wに対し、レスポンスrを送出する。
書き込み命令Wの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその書き込み命令Wを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB1を送信バッファ5aに蓄積する。
【0040】
<エラー通知ステップTE>
送信バッファ制御部5は、送信バッファ5aに蓄積した最初のブロックB1に対し誤り検出を行う。ここで、最初のブロックB1について、転送エラーがあったとする。送信バッファ制御部5は、その誤り検出結果NGをホストHへ返送する。更に、誤り検出結果NGの送出から所定時間後、ビジー信号Bsyをネゲートする。
【0041】
<再送通知ステップTW>
ホストHは、ビジー信号Bsyのネゲート時、再送通知信号RTYをホストインタフェース4へ送出する。ホストインタフェース4はその再送通知信号RTYに対し、レスポンスrを送出する。
再送通知信号RTYの正常な受信時、ホストインタフェース4は送信バッファ制御部5へその再送通知信号RTYを通知する。そのとき、送信バッファ制御部5は、受信済の最初のブロックB1を破棄する。
【0042】
<ステップT2>
再送通知信号RTYがホストインタフェース4により正常に受信された時、ホストHは書き込み命令Wを送信バッファ制御部5へ送出する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積する。
【0043】
<ステップT3>
送信バッファ制御部5は、送信バッファ5aに蓄積した再送ブロックB1に対し誤り検出を行う。ここで、再送ブロックB1は正常に転送され、符号誤りを含まなかったとする。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、再送ブロックB1を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
【0044】
<ステップT4>
ビジー信号Bsyのネゲート時、ホストHは書き込み命令Wを送信バッファ制御部5へ送出する。ホストインタフェース4はその書き込み命令Wを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。書き込み命令Wの正常な受信時、ホストインタフェース4はその書き込み命令Wを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ、第二のブロックB2を送出する。ホストインタフェース4はそのブロックB2を送信バッファ制御部5へ中継し、送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積する。
【0045】
<ステップT5>
送信バッファ制御部5は、送信バッファ5aに蓄積した第二のブロックB2に対し誤り検出を行う。ここで、第二のブロックB2は正常に転送され、符号誤りを含まなかったとする。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、第二のブロックB2を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
以下、同様なステップが繰り返される。
無線モジュール1は、パケットバッファ1aへ蓄積された複数の送信対象ブロックから一つのパケットを構成し、外部の無線LAN等へ送出する。
【0046】
上記のように、従来の無線インタフェースカード100は、送信バッファ5aとパケットバッファ1aとの二種類のバッファを利用し、ホストHから受信した複数の送信対象ブロックを一つのパケットにまとめ、外部の無線LAN等へ送出する。それにより、ホストHとの間での通信データ形態(ブロック)を無線LAN等での伝送データ形態(パケット)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、データ転送速度を制御する。こうして、ホストHは無線LAN等へデータをスムーズに送信する。
【0047】
送信バッファ制御部5は上記の通り、転送されたブロックの符号誤りの有無をホストHへ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、ホストHは同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、従来の無線インタフェースカード100は、ホストHによるデータ送信について、信頼性を高く維持する。
【0048】
【発明が解決しようとする課題】
従来のデータ転送装置は、外部から受信したデータをホストへ転送するとき、上記の無線インタフェースカード100のように、一ブロックを転送するごとにホストからの書き込み命令を待つ。その書き込み命令に伴って転送される誤り検出結果に応じ、次に転送すべきブロックとして、前回と同じもの又は次のもののいずれかを選択する。
そのとき、受信バッファは、ホストへ転送し終えた一ブロックを、ホストからの誤り検出結果の返送まで、保持し続けなければならなかった。その誤り検出結果が「符号誤り有り」を示すとき、受信バッファはそのブロックを更に、正常に再送し終えるまで維持しなければならなかった。こうして、従来のデータ転送装置では、受信バッファによる同一ブロックの保持時間を、ある限度を超えては短縮できなかった。
【0049】
一方、従来のデータ転送装置は、ホストへのブロック転送と並行し、ネットワーク等からの伝送データを専用のバッファへ蓄積し続ける。例えば図13に示されるように、受信バッファ制御部2によるブロックB1の転送と並行し、無線モジュール1は伝送データPの次のパケットP2をパケットバッファ1aの空き領域へ蓄積する。パケットバッファ1aからの伝送データPの溢れを防ぐには、受信バッファによる同一ブロックの保持時間を、従来のものより更に短縮しなければならなかった。
【0050】
従来のデータ転送装置では、ホストから外部へデータを送信するとき、上記の無線インタフェースカード100のように、複数のブロックをパケットバッファ1aに集め、それらから一つのパケットを構成し、外部へ送出する。従って、外部への実質的なデータ送信速度の向上には、ホストからのブロック転送の実質的な高速化が求められた。それには、ホストからのブロック転送について、特にブロック再送を更に、迅速にしなければならなかった。
【0051】
本発明は、バッファでの同一ブロックの保持時間の短縮、又はブロック再送の高速化を通し、ホストとの間の実質的なブロック転送時間を短縮し、それにより高速ネットワーク等に容易に対応し、かつデータ転送について高い信頼性を維持するデータ転送装置、の提供を目的とする。
【0052】
【課題を解決するための手段】
本発明の一つの観点によるデータ転送装置は、
(A) (a) パケットバッファを含み、(b) 外部から伝送されたパケットを受信し、パケットバッファへ一時記憶するための伝送データ受信部;
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ受信バッファを含み、(b) パケットバッファへ一時記憶されたパケットをブロックごとに分割し、受信バッファへ転送するための受信バッファ制御部;及び、
(C) (a) ブロックと実質的に等しいサイズを持つ副バッファを含み、(b) ブロックを受信バッファから副バッファへ転送するための副バッファ制御部;
を有し、
(D) ホストからブロック送出命令を受信するとき、受信バッファから副バッファへ未送ブロックを転送し、かつ受信バッファ又は副バッファのいずれかからホストへその未送ブロックを送出し;
(E) ホストからブロック再送命令を受信するとき、副バッファからホストへ送出済ブロックを再送し;
(F) ブロックの一つを受信バッファから副バッファへ転送し終えた時と実質上同時に、次のブロックをパケットバッファから受信バッファへ転送し始める。
ここで、受信バッファ及び副バッファは、好ましくはFIFOメモリである。
【0053】
データ転送装置からホストへのブロック転送にエラーがあるとき、ホストは一般に、そのデータ転送装置に対し送出済ブロックの再送を指示する。そのとき、上記のデータ転送装置は、副バッファから送出済ブロックを再送する。従って、受信バッファは送出済ブロックを保持しなくても良く、特に副バッファへそのブロックを転送した後、直ちに次の未送ブロックを上書きされても良い。
それにより、上記のデータ転送装置では、ホストへのブロック転送の開始時、最初のブロックに続き二番目のブロックが、最初のブロックの再送の有無に関わらず、直ちにパケットバッファから受信バッファへ転送される。
その結果、上記のデータ転送装置では、パケット内の最初の二つのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる最初のブロックの保持時間が短い。こうして、パケットバッファでは、その最初の二つのブロックに相当する記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0054】
上記のデータ転送装置は、上記のブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、更に副バッファからホストへ送出しても良い。そのとき、副バッファからホストへのその未送ブロックの送出と実質上並行し、パケットバッファから受信バッファへ次の未送ブロックが転送される。その結果、ホストへ一ブロックを送出し終えた時、副バッファにはその送出済ブロックが保持され、受信バッファには次の未送ブロックが保持される。
ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。例えば、読み出し命令の宛先を受信バッファ又は副バッファのいずれかに指定するだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0055】
上記のデータ転送装置は、上記のブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、同時にその未送ブロックを受信バッファからホストへ送出しても良い。このデータ転送装置では、最初の二つのブロックだけでなく全てのブロックについて、ホストへの一ブロックの転送終了時、その転送エラーの有無に関わらず、次の未送ブロックが直ちにパケットバッファから受信バッファへ転送される。その転送の間にホストからブロック再送命令を受信したとき、副バッファから送出済ブロックが再送される。
その結果、上記のデータ転送装置では、パケット内の全てのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる同一ブロックの保持時間が短い。こうして、パケットバッファでは記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0056】
上記のデータ転送装置では、未送ブロックは受信バッファから送出され、送出済ブロックは副バッファから再送される。ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。例えば、読み出し命令の宛先を受信バッファ又は副バッファのいずれかに指定するだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0057】
ホストからの指示が、次の未送ブロックの転送又は送出済ブロックの再送のいずれであるのかを、上記のデータ転送装置は好ましくは次のように判断する。
ホストから読み出し命令を受信し、その宛先アドレスが、(a) 受信バッファに対応するとき、その読み出し命令をブロック送出命令とみなし、(b) 副バッファに対応するとき、その読み出し命令をブロック再送命令とみなす。
その他に、ホストから読み出し命令を受信するとき、その宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別しても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
上記の判断により、ホストは共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ブロック転送に対する制御について、ホストの負担を軽減できる。
【0058】
本発明の別の観点によるデータ転送装置は、
(A) パケットバッファを含み、外部から伝送されたパケットを受信し、そのパケットをパケットバッファへ一時記憶するための伝送データ受信部;及び、
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つブロックバッファを含み、(b) パケットバッファへ一時記憶されたパケットをブロックごとに分割し、ブロックバッファへ転送し、(c) ホストから読み出し命令を受信するとき、その宛先アドレスに応じブロックバッファから、パケットの未送ブロックをホストへ送出し、又は送出済ブロックをホストへ再送するためのバッファ制御部;
を有する。
【0059】
ここで、ホストからの読み出し命令は、その宛先アドレスとして、好ましくはブロックバッファを指定するものと特定のものとのいずれかを含む。上記のデータ転送装置はそのとき、ブロックバッファのアドレスを宛先アドレスとして含む読み出し命令をブロック送出命令とみなし、特定の宛先アドレスを含む読み出し命令をブロック再送命令とみなす。
その他に、上記のデータ転送装置は、読み出し命令の宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック再送命令とみなしても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0060】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0061】
本発明の更に別の観点によるデータ転送装置は、
(A) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ送信バッファを含み、(b) ホストから書き込み命令と外部への送信対象ブロックとを受信するとき、その送信対象ブロックを送信バッファへ書き込み、(c) 書き込み命令の宛先アドレスに応じ、送信バッファに保持された送信対象ブロックを、未送ブロック又は再送ブロックのいずれかとして識別するための送信バッファ制御部;及び、
(B) (a) パケットバッファを含み、(b) 送信対象ブロックを送信バッファからパケットバッファへ転送し、(c) 複数の送信対象ブロックから一つのパケットを構成し、パケットごとに外部へ送信するための伝送データ送信部;
を有する。
【0062】
ここで、ホストからの書き込み命令は、その宛先アドレスとして、好ましくは送信バッファを指定するものと特定のものとのいずれかを含む。上記のデータ転送装置はそのとき、送信バッファのアドレスを宛先アドレスとして含む書き込み命令を次ブロックの送出通知とみなし、特定の宛先アドレスを含む書き込み命令をブロック再送通知とみなす。
その他に、上記のデータ転送装置は、書き込み命令の宛先アドレスを示すデータの特定ビットに基づき、その書き込み命令をブロック再送通知とみなしても良い。例えば、その特定ビットが「1」のとき、その書き込み命令がブロック再送通知とみなされ、「0」のとき次ブロックの送出通知とみなされても良い。
【0063】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の書き込み命令の宛先アドレスを付け替えるだけで、次の送信対象ブロックの転送又は送出済ブロックの再送をそれぞれ通知できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、送出済ブロックの再送を予め通知するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0064】
【発明の実施の形態】
以下、本発明の最適な実施の形態について、その好ましい実施例を挙げて、図面を参照しつつ説明する。
【0065】
《実施例1》
図1は、外部無線LANからホストHへのデータ転送時、本発明の実施例1による無線インタフェースカード10A内でのデータの流れを示すブロック図である。無線インタフェースカード10Aはデータ転送装置であり、例えば外部無線LANを通し伝送されるデータPを受信し、ホストHへ転送する。
無線インタフェースカード10Aは無線モジュール1、受信バッファ制御部2A、転送バッファ制御部3A、及びホストインタフェース4を有する。
【0066】
無線モジュール1は、例えばブルートゥース(Bluetooth、登録商標)の通信方式に従う。無線モジュール1はアンテナAとパケットバッファ1aとを含む。アンテナAは無線LANから伝送データPを受信する。伝送データPは通常、所定のパケットごとに伝送される。ここで、一パケット当たりのデータ量は一般に可変であり、平均約1kBである。更に、それぞれのパケットは約400kbpsで伝送される。
無線モジュール1はブルートゥース(登録商標)の他に、固定パケット長を用いる通信方式に従っても良い。
パケットバッファ1aは好ましくはSRAMであり、そのデータ容量は一パケット当たりの最大データ量より十分に大きく、例えば2kBである。アンテナAを通し受信された伝送データPは順次、パケットバッファ1aへ蓄積される。一パケット当たりの蓄積時間は、平均約20m秒程度である。
【0067】
受信バッファ制御部2Aは受信バッファ2aを含む。受信バッファ2aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(以下、ブロックという)に実質的に等しく、例えば512Bである。
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2Aはそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。パケットバッファ1aから受信バッファ2aへのブロック転送は、無線インタフェースカード10Aの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、パケットバッファ1aから受信バッファ2aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
受信バッファ2aが満杯になるとき、受信バッファ制御部2Aは、転送バッファ制御部3A及びホストインタフェース4を通しホストHへ割込信号Intを送出し、ホストHによるブロックの読み出しを要求する。
【0068】
転送バッファ制御部3Aは転送バッファ3aを含む。転送バッファ3aは受信バッファ2aと同様にFIFOメモリであり、そのデータ容量は一ブロックと実質的に等しく、512Bである。
ホストHからの読み出し命令Rの受信時、転送バッファ制御部3Aはその読み出し命令Rの宛先アドレスに応じ、受信バッファ2a又は転送バッファ3aのいずれかからホストHへブロックを転送する。
【0069】
例えば、宛先アドレスが転送バッファ3aに対応するとき、転送バッファ制御部3Aは転送バッファ3aからブロックを転送する。一方、宛先アドレスが受信バッファ2aに対応するとき、転送バッファ制御部3Aは、まず受信バッファ2aから新たなブロックBRを転送バッファ3aへ転送し、続いて転送バッファ3aからホストHへそのブロックBRを転送する。
その他に、転送バッファ制御部3Aは、宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、ブロックの転送元を識別しても良い。すなわち、最上位ビットが「0」のときは受信バッファ2aからブロックを転送し、「1」のときは転送バッファ3aからブロックを転送しても良い。
以下、宛先アドレスを受信バッファ2aに対応させた読み出し命令Rをブロック送出命令Rnとし、宛先アドレスを転送バッファ3aに対応させた読み出し命令Rをブロック再送命令Rtとする。
【0070】
受信バッファ2aから転送バッファ3aへのブロック転送は、無線インタフェースカード10Aの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、受信バッファ2aから転送バッファ3aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
【0071】
ホストインタフェース4は、コマンド線CMD、クロック線CLK、及び複数のデータ線DATを含むバス6でホストHと接続され、ホストHと、受信バッファ制御部2A又は転送バッファ制御部3Aとの間で交換される信号を中継する。
ホストインタフェース4は特に、ホストHから発行されたコマンドを、コマンド線CMDを通し受信し、解読する。更に、その解読を通し、コマンドが正常に受信されたか否かを判断し、それぞれの判断結果を示すレスポンス(ACK又はNAK)を、コマンド線CMDを通しホストHへ返信する。
【0072】
ホストインタフェース4は例えば、データ線DATの一本を通し、受信バッファ制御部2Aからの割込信号IntをホストHへ送出する。その割込信号Intに応じ、ホストHから発行された読み出し命令Rをコマンド線CMDを通し受信し、転送バッファ制御部3Aへ通知する。更に、その通知を受け、転送バッファ3aから送出されたブロックBRを、データ線DATを通しホストHへ送出する。
【0073】
ホストインタフェース4とホストHとの間のデータ通信は、ホストHによる伝送クロックに従い、同期通信で実行される。そのとき、伝送クロックはクロック線CLKを通し、ホストHからホストインタフェース4へ伝送される。伝送クロック周波数はホストHの機種及び使用状況により、0近くから最大約25MHzまで変動し得る。約25MHzの伝送クロック周波数では、転送バッファ3aからホストHへのブロック転送は、一ブロック当たり約50μ秒で実行される。
【0074】
図2は、無線インタフェースカード10AからホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図2では、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は無線インタフェースカード10AからホストHへの伝送(以下、上り方向伝送という)を、右向きの矢印はその逆方向の伝送(以下、下り方向伝送という)をそれぞれ示す。
図3は、同じブロック転送時、パケットバッファ1a、受信バッファ2a、及び転送バッファ3a間でのブロック転送を模式的に示す図である。
【0075】
図2と図3とは共にブロック転送の開始時に対応する。図3の(a)に示されるように、無線モジュール1はアンテナAを通し受信した伝送データPを、パケットバッファ1aへ順次蓄積する。伝送データPの最初のパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2Aは、図3の(b)に示されるように、そのパケットP1の先頭から最初のブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2Aは、ホストHに対する割込信号Intをアサートする。
【0076】
割込信号Intは図2に示されるように、データ線DATの一本を通しホストHへ送出される。ホストHは割込信号Intの受信時、割込解除信号CLRをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrを、コマンド線CMDを通しホストHへ返信する。それと共に、受信バッファ制御部2Aへ割込解除信号CLRを通知する。受信バッファ制御部2Aは割込解除信号CLRの受信時、割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0077】
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、ブロック送出命令Rnに対するレスポンスrを返信すると共に、転送バッファ制御部3A及び受信バッファ制御部2Aへブロック送出命令Rnを通知する。
転送バッファ制御部3Aはブロック送出命令Rnの受信時、図3の(c)に示されるように、受信バッファ2aから転送バッファ3aへ最初のブロックB1を転送する。その転送が終了した時直ちに、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。それらの転送と並行し、パケットバッファ1aの空き領域へは伝送データPの新たなパケットP2が蓄積される。
【0078】
転送バッファ制御部3Aは更に、図2及び図3の(d)に示されるように、転送バッファ3aから最初のブロックB1を、データ線DATを通しホストHへ送出する。
ホストHは転送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果が「符号誤りなし」を示すとき、ホストHはブロック送出命令Rnを発行し、次のブロックの送出を指示する。一方、誤り検出の結果が「符号誤り有り」を示すとき、ホストHはブロック再送命令Rtを発行し、最初のブロックB1の再送を指示する。
【0079】
図2では、最初に転送された最初のブロックB1が符号誤りを含むときが例示される。
ホストHはコマンド線CMDを通し、ブロック再送命令Rtをホストインタフェース4へ送出する。ホストインタフェース4はブロック再送命令Rtに対するレスポンスrを返信すると共に、転送バッファ制御部3Aへブロック再送命令Rtを通知する。転送バッファ制御部3Aは最初のブロックB1を、その転送後も転送バッファ2aに保持する。図3の(e)に示されるように、転送バッファ制御部3Aはブロック再送命令Rtの受信時、転送バッファ3aから最初のブロックB1をホストHへ再送する。
【0080】
ホストHは再送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果に応じ、ホストHは次に発行すべき読み出し命令を、ブロック送出命令Rn又はブロック再送命令Rtのいずれかに決定する。
図2では、再送された最初のブロックB1が符号誤りを含まないときが例示される。
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4はブロック送出命令Rnに対するレスポンスrを返信すると共に、転送バッファ制御部3Aへブロック送出命令Rnを通知する。
図3の(f)に示されるように、転送バッファ制御部3Aはブロック送出命令Rnの受信時、受信バッファ2aから転送バッファ3aへ次のブロックB2を転送する。その転送が終了した時直ちに、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ更にその次のブロックB3を転送する。
こうして、実施例1による無線インタフェースカード10Aはブロック転送を実行する。
【0081】
図4は、無線インタフェースカード10AからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHによる伝送クロック、及び無線インタフェースカード10Aの内部クロックが約15〜25MHz程度の周波数であるとき、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1のそれぞれの間での一ブロック当たりの転送時間(以下、ブロック転送時間という)はいずれも約50〜70μ秒程度であり、実質上等しいとみなせる。
【0082】
図4に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S8に分割される。
<ステップS1>
パケットバッファ1aに蓄積されたパケットの先頭から最初のブロックB1が分離され、無線モジュール1から受信バッファ制御部2Aへ転送される。
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2AはホストHに対する割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2Aへ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2Aへ通知される。その通知時、受信バッファ制御部2Aは割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0083】
<ステップS2>
ホストHはブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、そのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを、転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは、受信バッファ2aから転送バッファ3aへ最初のブロックB1を転送する。
<ステップS3>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ最初のブロックB1を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
【0084】
<ステップS4>
ホストHは転送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、転送バッファ3aはデータをそのまま保持する。一方、受信バッファ2aは次のブロックB2を保持する。
【0085】
図4では、ホストHは最初のブロックB1に対し「符号誤り有り」と判断し、ブロック再送命令Rtを発行する。ホストインタフェース4はそのブロック再送命令Rtを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック再送命令Rtの正常な受信時、ホストインタフェース4はそのブロック再送命令Rtを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは転送バッファ3aから最初のブロックB1をホストHへ再送する。
【0086】
<ステップS5>
ホストHは再送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、受信バッファ2aと転送バッファ3aとはデータをそのまま保持する。
【0087】
図4では、ホストHは再送された最初のブロックB1に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは受信バッファ2aから転送バッファ3aへ次のブロックB2を転送する。
【0088】
<ステップS6>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ次のブロックB2を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ更に次のブロックB3を転送する。
<ステップS7>
ホストHは転送された次のブロックB2に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、転送バッファ制御部3Aへ送出する。
図4では、ホストHは次のブロックB2に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを転送バッファ制御部3Aへ通知する。その通知時、転送バッファ制御部3Aは受信バッファ2aから転送バッファ3aへ、更に次のブロックB3を転送する。
【0089】
<ステップS8>
受信バッファ2aから転送バッファ3aへのブロック転送が終了した時、転送バッファ制御部3Aは転送バッファ3aからホストHへ更に次のブロックB3を送出する。それと並行し、受信バッファ制御部2Aはパケットバッファ1aから受信バッファ2aへ次のブロックBR4を転送する。
以下、同様なステップが繰り返される。
【0090】
実施例1による無線インタフェースカード10Aは上記の通り、パケットバッファ1aと受信バッファ2aとの他に、副バッファとして転送バッファ3aを有する。無線インタフェースカード10Aはブロックを、受信バッファ2aから一旦転送バッファ3aへ転送し、転送バッファ3aからホストHへ送出する。それにより、転送バッファ3aで送出済ブロックを保持し、受信バッファ2aでは次の未送ブロックを保持する。
ホストHは、読み出し命令の宛先アドレスを受信バッファ2a又は転送バッファ3aのいずれかに対応させるだけで、共通の読み出し命令をブロック送出命令Rn又はブロック再送命令Rtとして使い分けできる。従って、ホストHは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送のいずれかを指示するためだけのハンドシェイクを行わなくても良い。実際、図4に示される実施例1でのフロー図には、図14に示される従来のデータ転送装置でのフロー図とは異なり、エラーチェックステップSWが含まれない。
【0091】
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストに対し、無線インタフェースカード10Aはスムーズなブロック転送を実現できる。
【0092】
実施例1による無線インタフェースカード10Aでは、図4のステップS3に示されるように、最初のブロックB1が転送バッファ3aからホストHへ送出されると同時に、次のブロックB2がパケットバッファ1aから受信バッファ2aへ転送される。その二番目のブロックB2の転送は特に、最初のブロックB1がホストHにより正常に受信されたか否かに関わらない。従って、最初のブロックB1のホストHへの送出にエラーが生じても、ステップS3の終了時には二番目のブロックB2までがパケットバッファ1aから受信バッファ2aへ転送し終わる。このブロック転送は、図14に示される従来のものより、一ステップだけ速い。そのことは、実施例1では受信バッファ2aによる最初のブロックB1の保持時間がせいぜい一ステップ程度に限られることから理解される。
【0093】
こうして、実施例1による無線インタフェースカード10Aでは、ブロック転送の開始時、最初の二つのブロックに対するパケットバッファ1aから受信バッファ2aへの転送が、従来の装置より実質的に速い。従って、パケットバッファ1aでの空き領域が素早く、かつ大きく確保されるので、パケットバッファ1aからパケットのデータが溢れない。その結果、データ転送の信頼性を向上できる。
【0094】
《実施例2》
図5は、外部無線LANからホストHへのデータ転送時、本発明の実施例2による無線インタフェースカード10B内でのデータの流れを示すブロック図である。無線インタフェースカード10Bは、実施例1による無線インタフェースカード10Aと同様なデータ転送装置である。
無線インタフェースカード10Bは無線モジュール1、受信バッファ制御部2B、コピーバッファ制御部3B、及びホストインタフェース4を有する。
無線モジュール1、ホストインタフェース4、及びバス6は実施例1によるものと同様であるので、それらの説明は実施例1でのものを援用する。
【0095】
受信バッファ制御部2Bは受信バッファ2aを含む。受信バッファ2aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(ブロック)に実質的に等しく、例えば512Bである。
コピーバッファ制御部3Bはコピーバッファ3bを含む。コピーバッファ3bは受信バッファ2aと同様にFIFOメモリであり、そのデータ容量は一ブロックと実質的に等しく、例えば512Bである。
【0096】
伝送データPの一パケットがパケットバッファ1aへ蓄積されるとき、受信バッファ制御部2Bはそのパケットの先頭から一ブロックBRを分離し、受信バッファ2aへ転送する。パケットバッファ1aから受信バッファ2aへのブロック転送は、無線インタフェースカード10Bの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、パケットバッファ1aから受信バッファ2aへのブロック転送は、一ブロック当たり約70μ秒で実行される。
受信バッファ2aが満杯になるとき、受信バッファ制御部2Bは、ホストインタフェース4を通しホストHへ割込信号Intを送出し、ホストHによるブロックの読み出しを要求する。
【0097】
ホストHからのブロック送出命令Rnが受信される時、受信バッファ制御部2Bは受信バッファ2aからホストHへブロックBRを転送する。その転送と同時に、同じブロックBRを受信バッファ2aからコピーバッファ3bへ転送する。受信バッファ2aからコピーバッファ3bへのブロック転送は、無線インタフェースカード10Bの内部クロックに同期する。そのとき、データは1バイト当たり2クロックで転送される。内部クロック周波数が例えば約15MHzであるとき、約7.5MBps=60Mbpsのデータ転送速度が実現される。従って、受信バッファ2aからコピーバッファ3bへのブロック転送は、一ブロック当たり約70μ秒で実行される。
【0098】
コピーバッファ3bには、受信バッファ2aからホストHへ送出されたブロックBRのコピー、すなわち送出済ブロックが保持される。一方、受信バッファ2aには、一ブロックのホストHへの送出後直ちに、次の未送ブロックが転送される。こうして、コピーバッファ3bには送出済ブロックが保持されると共に、受信バッファ2aには次の未送ブロックが保持される。従って、ホストHからのブロック再送命令Rtが受信される時、コピーバッファ制御部3Bがコピーバッファ3bからホストHへ送出済ブロックBsを送出する。
【0099】
ブロック送出命令とブロック再送命令とは、実施例1と同様に、共通の読み出し命令の宛先アドレスで識別される。ホストインタフェース4はホストHから正常に受信された読み出し命令を解読し、その宛先アドレスに応じ、受信バッファ制御部2Bへブロック送出命令Rnとして、又はコピーバッファ制御部3Bへブロック再送命令Rtとして、それぞれ通知する。
例えば、宛先アドレスが受信バッファ2aに対応するとき、その読み出し命令をブロック送出命令Rnとみなす。一方、宛先アドレスがコピーバッファ3bに対応するとき、その読み出し命令をブロック再送命令Rtとみなす。
ホストインタフェース4はその他に、読み出し命令により含まれ、宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、ブロックの転送元バッファを識別しても良い。例えば最上位ビットが「0」のときはその読み出し命令をブロック送出命令Rnとみなす。一方、最上位ビットが「1」のときはその読み出し命令をブロック再送命令Rtとみなす。
【0100】
実施例2による無線インタフェースカード10BからホストHへのブロック転送時に、ホストインタフェース4とホストHとの間で交換される信号のタイミングは、図2に示される実施例1によるものと同様である。従って、実施例2での信号のタイミングについては図2を参照する。
図6は、同じブロック転送時、パケットバッファ1a、受信バッファ2a、及びコピーバッファ3b間でのブロック転送を模式的に示す図である。
【0101】
図2と図6とは共にブロック転送の開始時に対応する。図6の(a)に示されるように、無線モジュール1はアンテナAを通し受信した伝送データPを、パケットバッファ1aへ順次蓄積する。伝送データPの最初のパケットP1の全てがパケットバッファ1aへ蓄積された時、受信バッファ制御部2Bは、図6の(b)に示されるように、そのパケットP1の先頭から最初のブロックB1を分離し、受信バッファ2aへ転送する。受信バッファ2aが満杯になるとき、受信バッファ制御部2Bは、ホストHに対する割込信号Intをアサートする。
【0102】
割込信号Intは図2に示されるように、データ線DATの一本を通しホストHへ送出される。ホストHは割込信号Intの受信時、割込解除信号CLRをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4は割込解除信号CLRに対するレスポンスrを、コマンド線CMDを通しホストHへ返信する。それと共に、受信バッファ制御部2Bへ割込解除信号CLRを通知する。受信バッファ制御部2Bは割込解除信号CLRの受信時、割込信号Intをネゲートする。こうして、受信バッファ2aからホストHへのブロック転送準備が完了する。
【0103】
ホストHはコマンド線CMDを通し、ブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4はブロック送出命令Rnに対するレスポンスrを返信すると共に、受信バッファ制御部2Bへブロック送出命令Rnを通知する。
受信バッファ制御部2Bはブロック送出命令Rnの受信時、図6の(c)に示されるように、受信バッファ2aからホストインタフェース4を通しホストHへ、最初のブロックB1を送出する。それと同時に、コピーバッファ3bへも、最初のブロックB1を転送する。更に、その転送終了時直ちに、パケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
上記の転送と並行し、パケットバッファ1aの空き領域へは伝送データPの新たなパケットP2が蓄積される。
【0104】
ホストHは転送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果が「符号誤りなし」を示すとき、ホストHはブロック送出命令Rnを発行する。一方、誤り検出の結果が「符号誤り有り」を示すとき、ホストHはブロック再送命令Rtを発行する。
図2では、最初に転送された最初のブロックB1が符号誤りを含むときが例示される。
ホストHはブロック再送命令Rtを、コマンド線CMDを通し、ホストインタフェース4へ送出する。ホストインタフェース4は、ブロック再送命令Rtに対するレスポンスrを返信すると共に、コピーバッファ制御部3へブロック再送命令Rtを通知する。
コピーバッファ制御部3Bは、ブロック再送命令Rtの受信時、図6の(d)に示されるように、コピーバッファ3bから最初のブロックB1をホストHへ再送する。
【0105】
ホストHは再送された最初のブロックB1に対し、誤り検出を実行する。誤り検出の結果に応じ、ホストHは次に発行すべき読み出し命令を、ブロック送出命令Rn又はブロック再送命令Rtのいずれかに決定する。
図2では、再送された最初のブロックB1が符号誤りを含まないときが例示される。
ホストHはブロック送出命令Rnを、コマンド線CMDを通し、ホストインタフェース4へ送出する。ホストインタフェース4は、ブロック送出命令Rnに対するレスポンスrを返信すると共に、受信バッファ制御部2Bへブロック送出命令Rnを通知する。
【0106】
受信バッファ制御部2Bはブロック送出命令Rnの受信時、図6の(e)に示されるように、受信バッファ2aからホストインタフェース4を通しホストHへ次のブロックB2を送出する。それと同時に、コピーバッファ3bへ同じブロックB2を転送する。更に、その転送終了時直ちに、パケットバッファ1aから受信バッファ2aへ、その次のブロックB3を転送する。
こうして、実施例2による無線インタフェースカード10Bはブロック転送を実行する。
【0107】
図7は、無線インタフェースカード10BからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHによる伝送クロック、及び無線インタフェースカード10Bの内部クロックが約15〜25MHz程度の周波数であるとき、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1のそれぞれの間でのブロック転送時間はいずれも約50〜70μ秒であり、実質上等しいとみなせる。
【0108】
図7に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップS1〜S7に分割される。
<ステップS1>
パケットバッファ1aに蓄積されたパケットの先頭から最初のブロックB1が分離され、無線モジュール1から受信バッファ制御部2Bへ転送される。
<割り込みステップSint>
受信バッファ2aが満杯になるとき、受信バッファ制御部2BはホストHに対する割込信号Intをアサートする。ホストHはその割込信号Intに応じ、割込解除信号CLRを受信バッファ制御部2Bへ返信する。ホストインタフェース4はその割込解除信号CLRを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。正常に受信された割込解除信号CLRは、ホストインタフェース4により受信バッファ制御部2Bへ通知される。その通知時、受信バッファ制御部2Bは割込信号Intをネゲートする。
割り込みステップSintの時間は、割り込み時でのホストHの動作状況に応じ変化する。
受信バッファ2aでは、割込信号Intの送出から割込解除信号CLRの正常な受信まで、データがそのまま保持される。
【0109】
<ステップS2>
ホストHはブロック送出命令Rnをホストインタフェース4へ送出する。ホストインタフェース4は、そのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを、受信バッファ制御部2Bへ通知する。その通知時、受信バッファ制御部2Bは、受信バッファ2aからホストHへ最初のブロックB1を送出し、同時にコピーバッファ3bへ最初のブロックB1を転送する。
【0110】
<ステップS3>
受信バッファ2aから最初のブロックB1を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ次のブロックB2を転送する。
ホストHは転送された最初のブロックB1に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の最初のブロックB1を保持する。一方、受信バッファ2aは次のブロックB2を保持する。
【0111】
図7では、ホストHは転送された最初のブロックB1に対し「符号誤り有り」と判断し、ブロック再送命令Rtを発行する。ホストインタフェース4はそのブロック再送命令Rtを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック再送命令Rtの正常な受信時、ホストインタフェース4はそのブロック再送命令Rtをコピーバッファ制御部3Bへ通知する。その通知時、コピーバッファ制御部3Bは、コピーバッファ3bから最初のブロックB1をホストHへ再送する。
【0112】
<ステップS4>
ホストHは再送された最初のブロックB1に対し、符号誤りを検出する。更にその検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、受信バッファ2aとコピーバッファ3bとはデータをそのまま保持する。
【0113】
図7では、ホストHは再送された最初のブロックB1に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。その通知時、受信バッファ制御部2Bは、受信バッファ2aからホストHへ次のブロックB2を送出し、同時にコピーバッファ3bへそのブロックB2を転送する。
【0114】
<ステップS5>
受信バッファ2aから二番目のブロックB2を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ、三番目のブロックB3を転送する。
ホストHは転送された二番目のブロックB2に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の二番目のブロックB2を保持する。一方、受信バッファ2aは三番目のブロックB3を保持する。
図7では、ホストHは二番目のブロックB2に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。
【0115】
<ステップS6>
受信バッファ制御部2Bはブロック送出命令Rnに従い、受信バッファ2aからホストHへ三番目のブロックB3を送出し、同時にコピーバッファ3bへそのブロックB3を転送する。
<ステップS7>
受信バッファ2aから三番目のブロックB3を転送し終える時、受信バッファ制御部2Bは、パケットバッファ1aから受信バッファ2aへ、四番目のブロックB4を転送する。
ホストHは転送された三番目のブロックB3に対し、符号誤りを検出する。更にその誤り検出結果に応じ、ブロック送出命令Rn又はブロック再送命令Rtのいずれかを選択し、ホストインタフェース4へ送出する。
ホストHがブロック送出命令Rn又はブロック再送命令Rtのいずれかを発行するまで、コピーバッファ3bは送出済の三番目のブロックB3を保持する。一方、受信バッファ2aは四番目のブロックB4を保持する。
【0116】
図7では、ホストHは三番目のブロックB3に対し「符号誤りなし」と判断し、ブロック送出命令Rnを発行する。ホストインタフェース4はそのブロック送出命令Rnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。ブロック送出命令Rnの正常な受信時、ホストインタフェース4はそのブロック送出命令Rnを受信バッファ制御部2Bへ通知する。
以下、同様なステップが繰り返される。
【0117】
実施例2による無線インタフェースカード10Bは上記の通り、パケットバッファ1aと受信バッファ2aとの他に、副バッファとしてコピーバッファ3bを有する。無線インタフェースカード10Bはブロックを、受信バッファ2aからホストHへ送出すると同時に、コピーバッファ3bへ転送する。それにより、コピーバッファ3bで送出済ブロックを保持し、受信バッファ2aでは次の未送ブロックを保持する。
ホストHは、読み出し命令の宛先アドレスを受信バッファ2a又はコピーバッファ3bのいずれかに対応させるだけで、共通の読み出し命令をブロック送出命令Rn又はブロック再送命令Rtとして使い分けできる。従って、ホストHは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送のいずれかを指示するためだけのハンドシェイクを行わなくても良い。実際、図7に示される実施例2でのフロー図には、図14に示される従来のデータ転送装置でのフロー図とは異なり、エラーチェックステップSWが含まれない。
【0118】
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストに対し、無線インタフェースカード10Bはスムーズなブロック転送を実現できる。
【0119】
実施例2による無線インタフェースカード10Bでは、図7のステップS3、S5、及びS7に示されるように、一つのブロックが受信バッファ2aからホストHへ送出されると直ちに、次のブロックがパケットバッファ1aから受信バッファ2aへ転送される。そのとき、受信バッファ2aへの次のブロックの転送は特に、前のブロックがホストHにより正常に受信されたか否かに関わらない。従って、前のブロックのホストHへの送出にエラーが生じても、ステップS3、S5、及びS7のそれぞれの終了時には、次のブロックがパケットバッファ1aから受信バッファ2aへ転送される。このブロック転送は、図14に示される従来のものより一ステップだけ速い。そのことは、実施例2では受信バッファ2aによる同一ブロックの保持時間がせいぜい一ステップ程度に限られることから理解される。
【0120】
こうして、実施例2による無線インタフェースカード10Bでは、全てのブロックに対するパケットバッファ1aから受信バッファ2aへの転送が、従来の装置より実質的に速い。従って、パケットバッファ1aでの空き領域が素早く、かつ大きく確保されるので、パケットバッファ1aからパケットのデータが溢れない。その結果、データ転送の信頼性を向上できる。
【0121】
《実施例3》
図8は、ホストHから外部無線LANへのデータ転送時、本発明の実施例3による無線インタフェースカード20内でのデータの流れを示すブロック図である。無線インタフェースカード20は、実施例1と実施例2とのそれぞれによる無線インタフェースカードと同様なデータ転送装置である。
無線インタフェースカード20は無線モジュール1、送信バッファ制御部5、及びホストインタフェース4を有する。
無線モジュール1、ホストインタフェース4、及びバス6は実施例1によるものと同様であるので、それらの説明は実施例1でのものを援用する。
【0122】
送信バッファ制御部5は送信バッファ5aを含む。送信バッファ5aは好ましくはFIFOメモリであり、一定のデータ容量を持つ。その一定のデータ量は、ホストHへのデータ転送単位(ブロック)に実質的に等しく、例えば512Bである。
ホストHから送出された送信対象ブロックBTがホストインタフェース4により受信されるとき、送信バッファ制御部5はその送信対象ブロックBTを、送信バッファ5aへ転送する。
送信バッファ5aが満杯になるとき、送信バッファ制御部5は送信対象ブロックBTを、送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。
無線モジュール1はパケットバッファ1aへ蓄積された複数の送信対象ブロックBTから一つのパケットPを構成し、アンテナAを通し、外部の無線LAN等へ無線で送信する。
【0123】
ホストHからの書き込み命令Wの受信時、送信バッファ制御部5はその書き込み命令Wの宛先アドレスに応じ、その書き込み命令Wに続く送信対象ブロックBTが、新たなブロック又は再送ブロックのいずれであるのかを識別する。
例えば、宛先アドレスが送信バッファ5aに対応するとき、送信バッファ制御部5は送信対象ブロックBTを、新たなブロックとして認識する。一方、宛先アドレスが送信バッファ5aのアドレスとは別の特定のものに対応するとき、送信バッファ制御部5は送信対象ブロックBTを、再送ブロックとして認識する。
その他に、送信バッファ制御部5は、書き込み命令Wの宛先アドレスを示すデータ内の特定ビット、例えば最上位ビットに基づき、送信対象ブロックを識別しても良い。すなわち、最上位ビットが「0」のときは送信対象ブロックを新たなブロックとして認識し、「1」のときは再送ブロックとして認識する。
以下、宛先アドレスを送信バッファ2aに対応させた書き込み命令Wをブロック送出通知Wnとし、宛先アドレスを上記の特定アドレスに対応させた書き込み命令Wをブロック再送通知Wtとする。
【0124】
図9は、ホストHから無線インタフェースカード20へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。図9では図4及び図7と同様に、コマンド線CMD及びデータ線DAT上の信号に対し、矢印でそれぞれの伝送方向が示される。すなわち、左向きの矢印は上り方向伝送を示し、右向きの矢印は下り方向伝送を示す。
【0125】
図9はブロック転送の開始時に対応する。ホストHはコマンド線CMDを通し、ブロック送出通知Wnをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した最初のブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果をホストHへ、ホストインタフェース4とデータ線DATとを通し返送する。
【0126】
送信バッファ制御部5は、誤り検出結果の送出から所定時間、ビジー信号Bsyをアサートする。それにより、ホストHによる書き込み命令Wの発行間隔、すなわち送信バッファ5aの更新間隔を所定の大きさ以上に維持し、上書きによる送信対象ブロックの損傷を防ぐ。
【0127】
ここで、送信バッファ制御部5がホストHから転送された最初のブロックB1に対し符号誤りを検出した、と想定する。そのとき、送信バッファ制御部5は受信済の最初のブロックB1を破棄する。更に、「符号誤り有り」を示す誤り検出結果NGを、ホストHへ返送する。
返送された誤り検出結果NGが「符号誤り有り」を示すことから、ホストHは、最初のブロックB1の転送にエラーが有った、と判断する。その判断に基づき、ホストHはブロック再送通知Wtをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はそのブロック再送通知Wtに対し、レスポンスrを送出する。
【0128】
ブロック再送通知Wtの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック再送通知Wtを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を、データ線DATを通し再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積し、誤り検出を行う。更に、その誤り検出結果をホストHへ返送する。
こうして、最初のブロックB1の再送が実行される。
【0129】
ここで、送信バッファ制御部5は、ホストHから再送された最初のブロックB1に対し符号誤りを検出しなかった、と想定する。そのとき、送信バッファ制御部5は「符号誤りなし」を示す誤り検出結果OKを、ホストHへ返送する。
返送された誤り検出結果OKが「符号誤りなし」を示すことから、ホストHは、再送ブロックB1の転送に成功した、と判断する。その判断に基づき、ホストHは次のブロックについてのブロック送出通知Wnをホストインタフェース4へ、コマンド線CMDを通し送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
【0130】
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ次のブロックB2を、データ線DATを通し再送する。ホストインタフェース4はその新たなブロックB2を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信したブロックB2を送信バッファ5aに蓄積し、誤り検出を行う。更にその誤り検出結果をホストHへ返送する。
以降、送信対象ブロックのそれぞれについて、上記と同様な操作が繰り返される。
【0131】
図10は、ホストHから無線インタフェースカード20へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号のフロー図である。
ホストHとホストインタフェース4との間でのデータ転送速度は、伝送クロックの周波数で実質上決定される。伝送クロック周波数はホストHごとに異なり、更に、同じホストHでもその動作状況に応じ変化する。しかし、ホストHから送信バッファ5aへのブロック転送時間は、送信バッファ5aからパケットバッファ1aへのブロック転送時間と、一般に同程度として良い。
【0132】
図10に示されるブロック転送開始時での信号のフローは、ほぼブロック転送時間程度の期間ごとに、以下のようなステップT1〜T5に分割される。更に、それぞれのステップの間に、エラー通知ステップTEが以下のように挿入される。
【0133】
<ステップT1>
ホストHはブロック送出通知Wnをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック送出通知Wnに対し、レスポンスrを送出する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック送出通知Wnを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を送出する。ホストインタフェース4はそのブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した最初のブロックB1を送信バッファ5aに蓄積する。
【0134】
<エラー通知ステップTE>
送信バッファ制御部5は、送信バッファ5aに蓄積した最初のブロックB1に対し誤り検出を行う。ここで、最初のブロックB1について転送エラーが有った、と想定する。送信バッファ制御部5は、その誤り検出結果NGをホストHへ返送し、所定時間、ビジー信号Bsyをアサートする。更に、受信済の最初のブロックB1を破棄する。
【0135】
<ステップT2>
ホストHは、誤り検出結果NGの受信に応じ、最初のブロックB1の再送を決定する。それにより、ビジー信号Bsyのネゲート時、ブロック再送通知Wtをホストインタフェース4へ送出する。ホストインタフェース4はそのブロック再送通知Wtに対しレスポンスrを送出する。
ブロック再送通知Wtの正常な受信時、ホストインタフェース4は送信バッファ制御部5へそのブロック再送通知Wtを通知する。一方、ホストHは送信バッファ制御部5へ最初のブロックB1を再送する。ホストインタフェース4はその再送ブロックB1を送信バッファ制御部5へ中継する。送信バッファ制御部5は、受信した再送ブロックB1を送信バッファ5aに蓄積する。
【0136】
<ステップT3>
送信バッファ制御部5は、送信バッファ5aに蓄積した再送ブロックB1に対し誤り検出を行う。ここで、再送ブロックB1は正常に転送され、符号誤りを含まなかった、と想定する。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、再送ブロックB1を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
【0137】
<ステップT4>
ホストHは、誤り検出結果OKの受信に応じ、次の新たなブロックB2の送出を決定する。それにより、ビジー信号Bsyのネゲート時、ホストHはブロック送出通知Wnを送信バッファ制御部5へ送出する。ホストインタフェース4はそのブロック送出通知Wnを正常に受信したか否かをチェックし、その結果をレスポンスrで返信する。
ブロック送出通知Wnの正常な受信時、ホストインタフェース4はそのブロック送出通知Wnを送信バッファ制御部5へ通知する。一方、ホストHは送信バッファ制御部5へ、次の新たなブロックB2を送出する。ホストインタフェース4はそのブロックB2を送信バッファ制御部5へ中継し、送信バッファ制御部5はそのブロックB2を送信バッファ5aに蓄積する。
【0138】
<ステップT5>
送信バッファ制御部5は、送信バッファ5aに蓄積した二番目のブロックB2に対し誤り検出を行う。ここで、二番目のブロックB2は正常に転送され、符号誤りを含まなかった、と想定する。送信バッファ制御部5はその誤り検出結果OKをホストHへ返送する。更に、二番目のブロックB2を送信バッファ5aから無線モジュール1のパケットバッファ1aへ転送する。その転送完了時、ビジー信号Bsyをネゲートする。
以下、同様なステップが繰り返される。
無線モジュール1は、パケットバッファ1aへ蓄積された複数の送信対象ブロックから一つのパケットを構成し、外部無線LAN等へ送出する。
【0139】
実施例3による無線インタフェースカード20は上記の通り、送信バッファ5aとパケットバッファ1aとの二種類のバッファを利用し、ホストHから受信した複数の送信対象ブロックを一つのパケットにまとめ、外部無線LAN等へ送出する。それにより、ホストHとの間での通信データ形態(ブロック)を無線LAN等での伝送データ形態(パケット)へ変換する。更に、ホストHは伝送クロックの周波数の調整を通し、ブロック転送速度を制御する。こうして、ホストHは無線LAN等へデータをスムーズに送信する。
【0140】
送信バッファ制御部5は、転送されたブロックごとに、その符号誤りの有無をホストHへ通知する。通知された誤り検出結果が「符号誤り有り」を示すとき、ホストHは同じブロックを再送する。この再送処理により、データの欠落が防止される。こうして、無線インタフェースカード20は、ホストHによるデータ送信について、信頼性を高く維持する。
【0141】
実施例3による無線インタフェースカード20に対し、ホストHは、書き込み命令の宛先アドレスを送信バッファ5a又は特定アドレスのいずれかに対応させるだけで、共通の書き込み命令をブロック送出通知Wn又はブロック再送通知Wtとして使い分けできる。従って、ホストHは無線インタフェースカード20に対しては、従来のデータ転送装置とは異なり、ブロック再送を予め通知しなくても良い。実際、図10に示される実施例3でのフロー図には、図16に示される従来のデータ転送装置でのフロー図とは異なり、再送通知ステップTWが含まれない。
【0142】
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストHの負担を軽減できる。それによりCPUのパワーが比較的小さいホストに対し、無線インタフェースカード20はスムーズなブロック転送を実現できる。
【0143】
【発明の効果】
本発明の一つの観点によるデータ転送装置は、パケットバッファと受信バッファとの他に副バッファを有する。ホストへのブロック転送時、送出済ブロックは副バッファに保持され、転送エラーが生じた時は副バッファから再送される。従って、受信バッファは送出済ブロックを保持しなくても良く、特に副バッファへそのブロックを転送した後、直ちに次の未送ブロックを上書きされても良い。それにより、ホストへのブロック転送の開始時、最初のブロックに続き二番目のブロックが、最初のブロックの再送の有無に関わらず、直ちにパケットバッファから受信バッファへ転送される。
その結果、上記のデータ転送装置では、パケット内の最初の二つのブロックに対し、パケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる最初のブロックの保持時間が短い。こうして、パケットバッファでは、その最初の二つのブロックに相当する記録領域が速やかに開放され、次のパケットの記憶領域として速やかに確保される。それ故、パケットバッファからパケットのデータが溢れることを回避できる。
【0144】
上記のデータ転送装置は、ブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、更に副バッファからホストへ送出しても良い。その他に、ブロック送出命令の受信時、未送ブロックを受信バッファから副バッファへ転送し、同時にその未送ブロックを受信バッファからホストへ送出しても良い。それにより、副バッファには送出済ブロックが保持され、受信バッファには次の未送ブロックが保持される。
【0145】
ホストはそのデータ転送装置に対し、受信バッファ又は副バッファのいずれかからの読み出しを指示するだけで、次の未送ブロックの転送又は送出済ブロックの再送を選択できる。
例えば、読み出し命令の宛先アドレスを受信バッファ又は副バッファのいずれかに対応させるだけで、その読み出し命令をブロック送出命令又はブロック再送命令として使い分けできる。
その他に、宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別しても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0146】
従って、ホストは上記のデータ転送装置に対しては、従来のデータ転送装置とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0147】
上記のデータ転送装置では、特に未送ブロックを受信バッファから副バッファとホストとの両方へ同時に送出するとき、全てのブロックについてパケットバッファから受信バッファへの転送が従来のデータ転送装置より速い。特に、受信バッファによる同一ブロックの保持時間が短い。従って、パケットバッファでの記録領域の開放が特に速やかであるので、パケットバッファからパケットのデータが溢れることが十分に回避できる。
【0148】
本発明の別の観点によるデータ転送装置は、ホストからの読み出し命令の宛先アドレスに基づき、共通の読み出し命令をブロック送出命令又はブロック再送命令のいずれかとして識別する。
例えば、ブロックバッファのアドレスを宛先アドレスとして含む読み出し命令をブロック送出命令とみなし、特定の宛先アドレスを含む読み出し命令をブロック再送命令とみなす。
その他に、上記のデータ転送装置は、読み出し命令の宛先アドレスを示すデータの特定ビットに基づき、その読み出し命令をブロック再送命令とみなしても良い。例えば、その特定ビットが「1」のとき、その読み出し命令がブロック再送命令とみなされ、「0」のときブロック送出命令とみなされても良い。
【0149】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の読み出し命令の宛先アドレスを付け替えるだけで、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、一ブロックの転送ごとに、次の未送ブロックの転送又は送出済ブロックの再送をそれぞれ指示するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【0150】
本発明の更に別の観点によるデータ転送装置は、ホストからの書き込み命令の宛先アドレスに基づき、共通の書き込み命令をブロック送出通知又はブロック再送通知のいずれかとして識別する。
例えば、ブロックバッファのアドレスを宛先アドレスとして含む書き込み命令をブロック送出通知とみなし、特定の宛先アドレスを含む書き込み命令をブロック再送通知とみなす。
その他に、上記のデータ転送装置は、書き込み命令の宛先アドレスを示すデータの特定ビットに基づき、その書き込み命令をブロック再送通知とみなしても良い。例えば、その特定ビットが「1」のとき、その書き込み命令がブロック再送通知とみなされ、「0」のときブロック送出通知とみなされても良い。
【0151】
上記の判断により、ホストは上記のデータ転送装置に対し、共通の書き込み命令の宛先アドレスを付け替えるだけで、次の送信対象ブロックの転送又は送出済ブロックの再送をそれぞれ通知できる。従って、ホストは、従来のデータ転送装置との間のブロック転送とは異なり、送出済ブロックの再送を予め通知するためだけのハンドシェイクを行わなくても良い。
こうして、ブロック転送のプロトコルが、特にブロック再送について従来のものより簡素であるので、ブロック転送が従来のデータ転送装置より速い。更に、ブロック転送に対する制御について、ホストの負担を軽減できる。それにより、CPUのパワーが比較的小さいホストについても、上記のデータ転送装置は高い信頼性を維持できる。
【図面の簡単な説明】
【図1】外部無線LANからホストHへのデータ転送時、本発明の実施例1による無線インタフェースカード10A内でのデータの流れを示すブロック図である。
【図2】本発明の実施例1による無線インタフェースカード10AからホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。
【図3】本発明の実施例1による無線インタフェースカード10Aで、図2に示されたものと同じブロック転送時、パケットバッファ1a、受信バッファ2a、及び転送バッファ3aでのブロック転送を模式的に示す図である。(a)〜(f)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図4】本発明の実施例1による無線インタフェースカード10AからホストHへのブロック転送開始時、ホストH、ホストインタフェース4、転送バッファ制御部3A、受信バッファ制御部2A、及び無線モジュール1の間で交換される信号のフロー図である。
【図5】外部無線LANからホストHへのデータ転送時、本発明の実施例2による無線インタフェースカード10B内でのデータの流れを示すブロック図である。
【図6】本発明の実施例2による無線インタフェースカード10BからホストHへのブロック転送時、パケットバッファ1a、受信バッファ2a、及びコピーバッファ3bでのブロック転送を模式的に示す図である。(a)〜(e)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図7】本発明の実施例2による無線インタフェースカード20からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、コピーバッファ制御部3B、受信バッファ制御部2B、及び無線モジュール1の間で交換される信号のフロー図である。
【図8】ホストHから外部無線LANへのデータ転送時、本発明の実施例3による無線インタフェースカード20内でのデータの流れを示すブロック図である。
【図9】ホストHから本発明の実施例3による無線インタフェースカード20へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。
【図10】ホストHから本発明の実施例3による無線インタフェースカード20へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号のフロー図である。
【図11】ホストHと外部の無線LAN等との間でのデータ交換時、従来の無線インタフェースカード100内でのデータの流れを示すブロック図である。
【図12】従来の無線インタフェースカード100からホストHへのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。(a)はブロック転送の開始直後のタイミング図であり、(b)は(a)に示されたものに続く部分である。
【図13】従来の無線インタフェースカード100で、図12に示されたものと同じブロック転送時、パケットバッファ1a及び受信バッファ2aでのブロック転送を模式的に示す図である。(a)〜(e)はそれぞれ、ブロック転送の開始からほぼ一ステップごとに、各バッファ間でのブロック転送を示す。
【図14】従来の無線インタフェースカード100からホストHへのブロック転送開始時、ホストH、ホストインタフェース4、受信バッファ制御部2、及び無線モジュール1の間で交換される信号のフロー図である。
【図15】ホストHから従来の無線インタフェースカード100へのブロック転送時、ホストインタフェース4とホストHとの間で交換される信号のタイミング図である。(a)はブロック転送の開始直後のタイミング図であり、(b)は最初のブロックB1の再送を含むときのタイミング図である。
【図16】ホストHから従来の無線インタフェースカード100へのブロック転送開始時、ホストH、ホストインタフェース4、送信バッファ制御部5、及び無線モジュール1の間で交換される信号についてのフロー図である。
【符号の説明】
A アンテナ
P 伝送データ
BR ブロック
Int 割り込み信号
R 読み出し命令
6 バス
CMD コマンド線
CLK クロック線
DAT データ線
Claims (11)
- (A) (a) パケットバッファを含み、(b) 外部から伝送されたパケットを受信し、前記パケットバッファへ一時記憶するための伝送データ受信部;
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ受信バッファを含み、(b) 前記パケットバッファへ一時記憶された前記パケットを前記ブロックごとに分割し、前記受信バッファへ転送するための受信バッファ制御部;及び、
(C) (a) 前記ブロックと実質的に等しいサイズを持つ副バッファを含み、(b)前記ブロックを前記受信バッファから前記副バッファへ転送するための副バッファ制御部;
を有し、
(D) 前記ホストからブロック送出命令を受信するとき、前記受信バッファから前記副バッファへ未送ブロックを転送し、かつ前記受信バッファ又は前記副バッファのいずれかから前記ホストへその未送ブロックを送出し;
(E) 前記ホストからブロック再送命令を受信するとき、前記副バッファから前記ホストへ送出済ブロックを再送し;
(F) 前記ブロックの一つを前記受信バッファから前記副バッファへ転送し終えた時と実質上同時に、次の前記ブロックを前記パケットバッファから前記受信バッファへ転送し始める;
データ転送装置。 - 前記ブロック送出命令の受信時、前記未送ブロックを前記受信バッファから前記副バッファへ転送し、更に前記副バッファから前記ホストへ送出する、
請求項1記載のデータ転送装置。 - 前記ブロック送出命令の受信時、前記未送ブロックを前記受信バッファから前記副バッファへ転送し、同時にその未送ブロックを前記受信バッファから前記ホストへ送出する、
請求項1記載のデータ転送装置。 - 前記ホストから読み出し命令を受信し、その宛先アドレスが、(a) 前記受信バッファに対応するとき、前記読み出し命令を前記ブロック送出命令とみなし、(b) 前記副バッファに対応するとき、前記読み出し命令を前記ブロック再送命令とみなす、
請求項1記載のデータ転送装置。 - 前記ホストから読み出し命令を受信するとき、その宛先アドレスを示すデータの特定ビットに基づき、前記読み出し命令を前記ブロック送出命令又は前記ブロック再送命令のいずれかとして識別する、
請求項1記載のデータ転送装置。 - (A) パケットバッファを含み、外部から伝送されたパケットを受信し、前記パケットを前記パケットバッファへ一時記憶するための伝送データ受信部;及び、
(B) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つブロックバッファを含み、(b) 前記パケットバッファへ一時記憶された前記パケットを前記ブロックごとに分割し、前記ブロックバッファへ転送し、(c) 前記ホストから読み出し命令を受信するとき、その宛先アドレスに応じ前記ブロックバッファから、前記パケットの未送ブロックを前記ホストへ送出し、又は送出済ブロックを前記ホストへ再送するためのバッファ制御部;
を有するデータ転送装置。 - 前記読み出し命令が特定の宛先アドレスを含むとき、前記読み出し命令を前記ブロック再送命令とみなす、
請求項6記載のデータ転送装置。 - 前記読み出し命令の宛先アドレスを示すデータの特定ビットに基づき、前記読み出し命令を前記ブロック再送命令とみなす、
請求項6記載のデータ転送装置。 - (A) (a) ホストとの間のデータ通信単位であるブロック、と実質的に等しいサイズを持つ送信バッファを含み、(b) 前記ホストから書き込み命令と外部への送信対象ブロックとを受信するとき、その送信対象ブロックを前記送信バッファへ書き込み、(c) 前記書き込み命令の宛先アドレスに応じ、前記送信バッファに保持された前記送信対象ブロックを、未送ブロック又は再送ブロックのいずれかとして識別するための送信バッファ制御部;及び、
(B) (a) パケットバッファを含み、(b) 前記送信対象ブロックを前記送信バッファから前記パケットバッファへ転送し、(c) 複数の前記送信対象ブロックから一つのパケットを構成し、前記パケットごとに外部へ送信するための伝送データ送信部;
を有するデータ転送装置。 - 前記書き込み命令が特定の宛先アドレスを含むとき、前記書き込み命令を前記ブロック再送通知とみなす、
請求項9記載のデータ転送装置。 - 前記書き込み命令の宛先アドレスを示すデータの特定ビットに基づき、前記書き込み命令を前記ブロック再送通知とみなす、
請求項9記載のデータ転送装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002209428A JP2004056348A (ja) | 2002-07-18 | 2002-07-18 | データ転送装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002209428A JP2004056348A (ja) | 2002-07-18 | 2002-07-18 | データ転送装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004056348A true JP2004056348A (ja) | 2004-02-19 |
Family
ID=31933279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002209428A Pending JP2004056348A (ja) | 2002-07-18 | 2002-07-18 | データ転送装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004056348A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007150390A (ja) * | 2005-11-24 | 2007-06-14 | Matsushita Electric Ind Co Ltd | 通信装置 |
US10447059B2 (en) | 2013-06-27 | 2019-10-15 | Sony Corporation | Electronic apparatus, method of controlling electronic apparatus, power reception device, electric device, and system |
-
2002
- 2002-07-18 JP JP2002209428A patent/JP2004056348A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007150390A (ja) * | 2005-11-24 | 2007-06-14 | Matsushita Electric Ind Co Ltd | 通信装置 |
US10447059B2 (en) | 2013-06-27 | 2019-10-15 | Sony Corporation | Electronic apparatus, method of controlling electronic apparatus, power reception device, electric device, and system |
US10734829B2 (en) | 2013-06-27 | 2020-08-04 | Sony Corporation | Electronic apparatus, method of controlling electronic apparatus, power reception device, electric device, and system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3970282B2 (ja) | Icカード、データ転送装置、データ転送方法及びデータ転送方法のプログラム | |
US7461164B2 (en) | Medium access control with software -and hardware- based components in a wireless network | |
US11379278B2 (en) | Methods and apparatus for correcting out-of-order data transactions between processors | |
WO2009147785A1 (ja) | データ通信システム、データ通信要求装置及びデータ通信応答装置 | |
JP2006311543A (ja) | 無線通信システムで伝送状態をポーリングする方法及び装置 | |
JP2006217242A (ja) | 無線通信方法および無線通信装置 | |
JPWO2011158467A1 (ja) | データ送信装置及びデータ送信方法 | |
JP3054613B2 (ja) | パケット通信システム | |
JP2778373B2 (ja) | 再送機能付きバッファ装置 | |
US8767759B2 (en) | Method of reducing required capacity of retry buffer for real-time transfer through PCIe and related device | |
JP2004056348A (ja) | データ転送装置 | |
JP2000253059A (ja) | 再送制御方法 | |
JP4203400B2 (ja) | 受信装置、通信システム及びプログラム | |
JP2004200838A (ja) | 基地局装置およびパケット通信方法 | |
JP2014222466A (ja) | 情報処理装置、情報処理システムおよび情報処理システムの通信方法 | |
JP5691600B2 (ja) | 通信回路装置及び電子機器 | |
JP3148733B2 (ja) | 信号処理装置及び信号処理システム | |
JP5381476B2 (ja) | ファクシミリ通信装置、及び直列信号伝送線割当プログラム | |
JP2008099139A (ja) | 通信方法 | |
JP4503408B2 (ja) | データ通信装置 | |
JP2002314547A (ja) | 中央制御装置、端末装置及びプログラム | |
JP2022046292A (ja) | 通信装置、制御方法、および、プログラム | |
JP4624252B2 (ja) | データパケット転送装置、データパケット転送方法、及び、データパケット転送プログラム | |
JP2000244530A (ja) | データ通信装置 | |
EP4144010A2 (en) | Methods and apparatus for efficient packet transmission |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050524 |