以下、この発明の実施形態を、図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
[第1の実施形態]
この発明の第1の実施形態に係る無線通信装置及び無線通信システムについて、図1を用いて説明する。図1は、本実施形態に係る無線通信システムのブロック図であり、一例としてIEEE802.11規格に従った無線LANシステムを示している。
図示するように無線通信システム(無線LANシステム)100は、無線通信基地局(例えば無線LAN基地局)101及び複数の無線通信端末(例えば無線LAN端末)102、103を備えており、これらによって通信ネットワークを構成している。無線LAN基地局101は、無線LAN端末102、103を収容して、BSS(Basic Service Set)を形成している。
<無線LAN基地局及び端末の構成について>
図2は、本実施形態に係る無線通信装置のブロック図である。本構成を有する無線通信装置200が、図1に示す無線LAN基地局101及び/または無線LAN端末102、103が適用される。以下では一例として、無線通信装置200が無線LAN端末102に適用される場合を例に説明する。本実施形態に係る無線通信装置200は、複数の無線通信方式に対応可能とされ、例えばIEEE802.11(IEEE802.11a、IEEE802.11b、IEEE802.11g、及びIEEE802.11nを含む)規格に対応するようにプログラムされている。
図示するように無線通信装置200は、大まかにはアンテナ210、無線部211、物理層部212、及びMAC(Medium Access Control)層部220を備えている。
アンテナ210は、所定の無線通信方式に従った周波数帯(例えば2.4GHz帯または5GHz帯)に送出された無線信号を受信し、また無線信号を所定の周波数帯で送信する。すなわち無線通信装置200は、アンテナ210を介して無線LAN基地局101から無線信号を受信し、また無線LAN基地局101へ無線信号を送信する。
無線部211は、アンテナ210及び物理層部212に接続される。無線部211は、低雑音増幅器(LNA:Low Noise Amplifier)、周波数変換器(ダウンコンバータ)、及び可変利得増幅器を備える。LNAは、アンテナ210からの受信信号を増幅する。ダウンコンバータは、LNAにおける増幅後の信号の周波数を、中間周波数またはベースバンド周波数に変換する。可変利得増幅器は、自動利得制御(AGC:Automatic Gain Control)を行う。アンテナ210で受信された無線信号は、無線部211によってベースバンド信号に変換され、その後、そのベースバンド信号は物理層部212に出力される。
物理層部212は、アナログ-デジタル変換部(ADC:Analog to Digital Converter)、並びに復調及び復号処理を行う受信処理部を備える。物理層部212においては、ベースバンド信号はADCによりデジタル信号に変換される。その後、受信処理部において、IEEE802.11(IEEE802.11a、IEEE802.11b、IEEE802.11g、及びIEEE802.11nを含む)に準拠した所定の復調および復号処理を含む受信処理が行われる。これにより、デジタル信号をIEEE802.11で規定されるMACフレームに変換し、データ転送部225へ転送する。
一方、送信時には、MAC層部220で生成されたMACフレームを送信する。MACフレームは、例えばデータフレームや制御フレーム等であり、制御フレームにはACKやCTS等が含まれる。物理層部212は、更に送信処理部及びデジタル−アナログ変換部(DAC:Digital to Analog Converter)を備える。そして送信処理部において、MACフレームつき、例えばIEEE802.11(IEEE802.11a、IEEE802.11b、IEEE802.11g、及びIEEE802.11nを含む)に準拠した所定の変調および符号処理を含む送信処理が行われる。そしてDACは、この送信処理により生成されたデジタル信号をアナログのベースバンド信号に変換し、無線部211に入力する。この際、無線部211は、入力されたベースバンド信号を所定の周波数帯(例えば、2.4GHz帯や5GHz帯)にアップコンバートし、アンテナ210から無線信号として送出する。物理層部212は、FPGA(Field Programmable Gate Array)やリコンフィギャラブルプロセッサ等の、プログラムを変更することにより機能変更可能な回路であってもよいし、特定の処理に特化した論理回路を組み合わせたものであってもよい。
MAC層部220は、プロセッサ221、メインメモリ224、及びデータ転送部225を備えている。これらはバス226によって、互いに通信可能に接続されている。データ転送部225は、物理層部212との間で送受信フレームのやりとりを行う。メインメモリ224は、主に送受信フレーム等を格納する。プロセッサ221は、主にMAC層で規定されるプロトコルを実行する。更にプロセッサ221は、命令メモリ222及びデータメモリ223を備える。命令メモリ222は、プロセッサ221(特にプロセッサ221において演算を行う演算部)が実行する命令プログラムを格納する。データメモリ223は、プロセッサ221がワークメモリとして使用するデータや、送受信フレームを格納する。命令メモリ222やデータメモリ223は、プロセッサ221が実行するためのプログラムやデータを読んだり書いたりする場合、プロセッサ221がメインメモリ224へアクセスするよりも高速にアクセス可能なメモリである。プロセッサ221は、具体的にはCPUまたはDSP等であり、MAC層の機能を実現する。このMAC層の機能の具体例は、例えば送信MACフレーム(例えば、データフレーム等)の生成、応答フレーム(例えば、ACKフレーム等)の生成、及びMACフレームを送信するタイミングの調整等である。
<MACフレームの構成例>
次に、本実施形態に係るMACフレームの構成について説明する。一般的なMACフレームのフォーマットは、MACヘッダ部、フレームボディ部、及びFCS部を含む。
MACヘッダ部には、MAC層における受信処理に必要な情報が設定される。フレームボディには、フレームの種類に応じた情報(上位レイヤからのデータ等)が設定される。FCS部には、MACヘッダ部とフレームボディ部とが正常に受信できたか否かを判定するために用いるCRC(Cyclic Redundancy Code)が設定される。
図3は、IEEE802.11規格に従った無線LANシステムにおけるMACフレームの構成例を示す模式図である。図示するように、MACヘッダ部には、Frame Controlフィールド、Duration/IDフィールド、Addressフィールド(複数含まれる:図3のAddress1〜Address4)、Sequence Controlフィールド、QoS Controlフィールド、及びHT Controlフィールドが含まれる。
Frame Controlフィールドには、フレームの種類に応じた値が設定される。Duration/IDフィールドには、送信待機する期間(NAV:Network Allocation Vector)が設定される。Addressフィールドには、当該MACフレームの直接の宛先や最終宛先、及び/または送信元のMACアドレスが設定される。Sequence Controlフィールドには、送信するデータのシーケンス番号や、データをフラグメント化した場合のフラグメント番号が設定される。QoS controlフィールド及びHT Controlフィールドについては後述する。
Frame Controlフィールドには、Protocol Versionフィールド、Typeフィールド、Subtypeフィールド、“To Ds”フィールド、“From DS”フィールド、モアフラグメント(more fragment)フィールド、プロテクト(protected)フレームフィールド、及びオーダー(order)フィールド等が含まれる。
Protocol Versionフィールドは、MACプロトコルのバージョンを示す。
Typeフィールドは、当該MACフレームの種類を示す。すなわち、Typeフィールドに設定されるビット列によって、制御フレーム、管理フレーム、及びデータフレームのうちどのフレームタイプに属するフレームであるかを判定することができる。
更に、Subtypeフィールドのビット列によって、各フレームタイプ内のMACフレームの種類が示される。
また“To DS”フィールドには、受信局が無線LAN基地局であるか無線LAN端末であるかの情報が設定され、“From DS”フィールドには、送信局が無線LAN基地局であるか、無線LAN端末であるかの情報が設定される。例えば、無線LAN基地局から無線LAN端末へ送信されるフレームであれば、“To DS”フィールドには0が設定され、“From DS”フィールドには1が設定される。なお、“To DS”フィールド及び“From DS”フィールドの両方に1が設定される場合には、無線LAN基地局間でやりとりされるフレームであることを意味し、MACヘッダにはAddress4フィールドが付加されるが、それ以外の設定ではAddress4フィールドは付加されない。
More Fragmentフィールドは、データがフラグメント化された場合に、後続するフラグメントフレームが存在するか否かを示す情報を保持する。
プロテクトフレームフィールドには、当該フレームがプロテクトされているか否かの情報が設定される。
オーダーフィールドには、フレームを中継する際に、フレームの順序を入れ替えてはいけないことを示す情報、もしくはHT Controlフィールドが付加されるか否かを示す情報が設定される。
例えば、正常に受信されたフレームのTypeフィールドによって、当該フレームがデータフレームであることが判明した場合に、さらにSubtypeフィールドに設定されるビット列を確認することにより、QoSデータであるか、またはnon-QoSデータであるかを判別することが可能である。
QoSデータフレームでは、MACヘッダ部にQoS Controlフィールドが付加される(逆にnon-QoSデータの場合にはQoS Controlフィールドは付加されない)。従って、判定の結果QoSデータであると判別した場合には、QoS Controlフィールドを確認する。このQoS Controlフィールドには、データのトラフィックに応じた識別子が設定されるTIDフィールド(0〜15までの16種類存在)や、送達確認方式が設定されるAck policyフィールド等が含まれる。TIDフィールドを確認することでデータのトラフィック種別を認識することができ、Ack policyフィールドを確認することで、そのQoSデータがNormal Ack policyか、Block Ack policyか、それともNo Ack policyで送信されたのかを判別することができる。なお、Ack policyフィールドにNormal Ack policyを意味するビット列が設定されている場合には、QoSデータフレームの受信に対して即時応答フレームの送信を要求していることを意味する。一方、non-QoSデータ(Subtypeが“Data”を示す)フレームの受信に対しては、常に即時応答フレームの送信を要求している。また、non-QoSデータである場合のオーダーフィールドは、フレームの順序を入れ替えてはいけないことを意味する情報を示すことになっている。
HT Controlフィールドは、IEEE802.11n規格に対応する無線通信装置同士の通信で用いることができる。HT Controlフィールドは、802.11nのみで規定された物理層フレームフォーマットで送信されたMACフレームが、QoSデータもしくは管理フレームである場合で、且つオーダーフィールドに1が設定されたときのみ、付加される(受信した物理層フレームが802.11n規格のみで規定された物理層フレームフォーマットであるか否かは、物理層部212からの伝送フレーム情報によって判定可能である)。このHT Controlフィールドには、802.11n規格で規定されるLink Adaptation機能などを支援するための情報が含まれる。
図3において、MACヘッダの各フィールドの上に記した数字は、各フィールドの長さ(サイズ)を示しており、オクテット単位で示している。なお1オクテットは8ビットである。またFrame Controlフィールド内の各フィールドの上に記した数字も、各フィールドの長さ(サイズ)であり、こちらはビット単位で示している。図3の通り、MACヘッダの最大長は、例えば36オクテット(36バイト)である。
しかしながら、MACヘッダの長さは、フレームの種類によって異なる。この点を、図4を用いて説明する。図4は、各フレームの模式図である。図4において、データフレームはnon-QoSデータの1つであり、MACヘッダの長さは24オクテットである。HT Controlフィールドが付加されないQoSデータフレームのMACヘッダの長さは26オクテットである。HT Controlフィールドが付加されたQoSデータフレームのMACヘッダの長さは30オクテットである。管理フレームのMACヘッダの長さは24オクテットである。RTS(Request To Send)フレームは制御フレームの1つであり、MACヘッダの長さは16オクテットである。
<データ転送部225の内部構成>
次に、図1に示したデータ転送部225の内部構成について、図5を用いて説明する。図5は、データ転送部225のブロック図である。図示するようにデータ転送部225は、転送制御部230、受信格納部231、転送量決定部232、FCS部233、及び送信格納部234を備えている。
受信格納部231は、物理層部212から受信したMACフレームを一時的に記憶する。転送量決定部232は、データメモリ223へ転送する受信フレーム情報の長さ(サイズ)を決定する。FCS部233は、受信したMACフレームのCRCが正しいかどうかをチェックする。送信格納部234は、バス226から転送された送信MACフレームを一時的に記憶する。転送制御部230は、受信格納部231、転送量決定部222、FCS部233、及び送信格納部234を制御する。
受信格納部231及び送信格納部234は、例えばSRAM(Static Random Access Memory)やフリップフロップ等で構成される。そしてそのメモリ容量は、送信または受信されるMACフレーム全体を格納できる容量であってもよいし、MACフレームの一部を格納できる容量であってもよい。また、受信格納部231及び送信格納部234は、それぞれ受信または送信のための伝送レートやMACフレーム長等の情報を記憶することもできる。
また、データメモリ223へ転送する受信フレーム情報は、少なくとも受信したMACフレームのMACヘッダ部を含み、必要に応じて受信時の伝送レートや変調方式等の物理層パラメータや、MACフレーム長等の情報(これらの情報を受信制御情報と呼ぶ)を含んでもよい。
<転送量決定部232の動作>
次に、上記転送量決定部232の動作について、図6を用いて説明する。図6は、転送量決定部232の動作を示すフローチャートである。転送量決定部232は、転送制御部230が受信格納部231からデータメモリ223へ転送する受信フレーム情報の長さを決定する。前述の通り、受信フレーム情報は、MACヘッダと受信制御情報の組み合わせである。
そのために、転送量決定部232には、無線通信方式で用いられるMACフレームのMACヘッダの最大長Lhead_maxと、受信制御情報の長さLcontとが、予め設定される(ステップS10)。例えば、802.11n規格で用いられるMACヘッダの最大長Lhead_maxは、図3で説明したとおり36バイトである。従って転送量決定部222には、MACヘッダの最大長Lhead_maxの初期値として、事前に“36”が設定される。一方、受信制御情報の長さLcontは、例えば4バイトであったと仮定する。
ここで、受信したフレームが、例えば図4に示すHT Control付きQoSデータフレームの場合で、フレームボディの長さが100バイトであったと仮定する。このフレームの長さは134バイトである。このフレーム長の値Lframeは、物理層部212からデータ転送部225に通知される(ステップS11)。転送量決定部232は、物理層212から通知された受信フレーム長(Lframe=134バイト)と、事前に設定されたMACヘッダの最大長(Lhead_max=36バイト)とを比較する(ステップS12)。
本例では、MACヘッダの最大長Lhead_maxが受信フレーム長Lframeより小さい(Lhead_max<Lframe:ステップS13、YES)ので、MACヘッダの最大長の値(Lhead_max=36バイト)を、転送すべきMACヘッダの長さとして転送量決定部222は決定する(ステップS14)。そして、それに受信制御情報の長さ(Lcont=4バイト)を加算した40バイトを、受信フレーム情報の長さLframe_contとして(ステップS15)、転送制御部230へ通知する(ステップS16)。
一方、受信したフレームが、図4に示すRTSフレームの場合には、そのフレーム長は20バイトである。この場合、物理層212から通知された受信フレーム長(Lframe=20バイト)と、事前に設定されたMACヘッダの最大長(Lhead_max=36バイト)を比較した結果、MACヘッダの最大長Lhead_maxが受信フレーム長Lframe以上である(Lhead_max≧Lframe:ステップS13、NO)。
よって転送量決定部232は、受信フレーム長の値(Lframe=20バイト)を、転送すべきMACヘッダの長さに決定する(ステップS17)。そして、それに受信制御情報の長さ(Lcont=4バイト)を加算した24バイトを、受信フレーム情報の長さLframe_contとして(ステップS18)、転送制御部230へ通知する(ステップS16)。
なお、MACフレームにFCS等のフィールドが付加されている場合には、MACヘッダの長さの決定値(Lframe)は、必ずしも受信フレーム長の値Lframeと同じ値である必要はなく、受信フレーム長の値Lframeより小さくても構わない。したがって、この例でRTSフレームを受信した場合には、転送量決定部232は、FCSフィールド分(4バイト)の長さを除いた後の16バイトの値を、転送すべきMACヘッダの長さとして決定しても良い。
<転送制御部230の動作>
次に、上記転送制御部230の動作について説明する。転送制御部230は、MACフレームの受信時には、物理層部212から受信格納部231に格納された受信フレームをメインメモリ224へ転送し、またMACヘッダ、受信伝送レート、及びMACフレーム長等を含む受信フレーム情報をデータメモリ223へ転送する制御を行う。他方、MACフレームの送信時には、プロセッサ221がデータメモリ223またはメインメモリ224に用意したMACフレーム、並びに送信伝送レート及びMACフレーム長等を含む送信制御情報を、それらのメモリ(223または224)から送信格納部234へ転送する制御を行う。送信格納部234に格納されたMACフレームや送信制御情報は、物理層部212が読み出す。
転送制御部230には、受信フレーム情報および受信フレームの転送制御のために事前に設定されるいくつかのパラメータがある。これらのパラメータは、例えば次の通りである。
・受信制御情報をデータメモリ223へ転送するための、転送先メモリアドレスA1。これはデータメモリ223内のアドレスである。
・受信格納部231内において、受信制御情報が格納される領域の位置情報。例えば受信格納部231は複数のFIFOを含み、このうちのいずれのFIFOに格納されるかを示す情報である(例えばFIFO1)。
・MACヘッダをデータメモリ223へ転送するための、転送先メモリアドレスA2。これはデータメモリ223内のアドレスである。
・受信格納部231内において、MACヘッダが格納される領域の位置情報。例えば受信格納部231は複数のFIFOを含み、このうちのいずれのFIFOに格納されるかを示す情報である(例えばFIFO2)。
・受信フレームをメインメモリ224へ転送するための、転送先メモリアドレスA3。これはメインメモリ224内のアドレスである。
・受信格納部231内において、受信フレームが格納される領域の位置情報。例えば受信格納部231は複数のFIFOを含む場合、いずれのFIFOに格納されるかを示す情報である(例えばFIFO3)。
図7は、転送制御部230の動作を示すフローチャートであり、特に物理層部212からフレームを受信する場合について示している。図示するように、まず転送制御部230において、転送先アドレスA1〜A3が設定され、また受信格納部231内の位置情報(例えばFIFO1〜FIFO3)が設定される(ステップS20)。
その後、転送制御部230は、物理層部212から転送される受信制御情報を、受信格納部231における、ステップS20で設定された領域に格納する(ステップS21)。上記の例であると、受信制御情報はFIFO1に格納される。
次に転送制御部230は、転送量決定部232に対して、受信フレーム情報の長さLframe_contを決定するよう命令し(ステップS22)、この値Lframe_contを取得する(ステップS23)。
次に、FCS部233に対してCRCチェックを行うよう命令(ステップS24)した後、物理層部212から転送される受信フレームを、受信格納部231に格納する(ステップS25)。受信フレームが格納される領域はステップS20で設定された領域であり、上記の例であると、MACヘッダはFIFO2に格納され、受信フレームはFIFO3に格納される。
その後、転送制御部230は、データメモリ223のアドレスA1、A2の領域に、受信フレーム情報を転送し(ステップS26)、完了すると完了通知をプロセッサ221に発行する(ステップS27)。この際、受信フレーム情報のサイズは、ステップS23で与えられたサイズである。
更に転送制御部230は、メインメモリ224のアドレスA3の領域に受信フレームを転送し(ステップS28)、完了すると完了通知をプロセッサ221に発行する(ステップS29)。そしてアドレスA1〜A3を更新する(ステップS30)。次回のデータ転送の際には、ステップS30で更新されたアドレスA1〜A3が使用される。
以上のようにして、受信フレーム及び受信フレーム情報がプロセッサ221に転送される。ここで、データ転送時におけるデータメモリ223及びメインメモリ224について、図8を用いて説明する。図8は、転送制御部230によって受信フレーム情報及び受信フレームが転送されたデータメモリ223及びメインメモリ224のメモリ空間を示す概念図である。なお、転送先メモリアドレスA1を「アドレスADD3」、転送先メモリアドレスA2の値を「アドレスADD1」、転送先メモリアドレスA3の値を「アドレスADD5」とする。従って、データメモリ223においては、それぞれアドレスADD3、ADD1から始まる領域に、受信制御情報INF1及びMACヘッダH1が格納される。またメインメモリ224においては、アドレスADD5から始まる領域に受信フレームF1が格納される。そして転送制御部230は、受信制御情報INF1、MACヘッダH1、及び受信フレームF1のサイズを把握しているため、これらの情報を次に格納するための領域を知ることが出来る。これにより、転送先メモリアドレスA1は「アドレスADD4」に更新され、転送先メモリアドレスA2は「アドレスADD2」に更新され、転送先メモリアドレスA3は「アドレスADD6」に更新される。
<無線通信装置200の動作>
次に、上記構成の無線通信装置200の動作について、無線LAN基地局101からデータフレームを受信してACKフレームを無線LAN基地局101へ返す場合の無線LAN端末102の動作を例に挙げて、以下説明する。図9は、無線LAN端末102としての無線通信装置200の動作を示すフローチャートである。
図示するように、まず物理層部212は、受信したMACフレームを受信格納部231に格納する前に、受信開始信号を発行する。これにより物理層部212は、物理層部212から受信フレームの転送を開始することを、転送制御部230に通知する。また物理層部212は、受信開始信号の発行後から実際に受信フレームの転送を開始するまでの間に、受信伝送レートや受信MACフレーム長等の受信制御情報を、受信格納部231に転送する。この受信制御情報のうち、少なくともMACフレーム長の情報は、転送量決定部232にも与えられる。
次に転送制御部230は、転送すべき受信フレーム情報の転送量(Lframe_cont)を決定するように転送量決定部232に要求する。そして転送制御部230は、転送量決定部232から、受信フレーム情報の転送量(Lframe_cont)と、MACフレームの長さ(Lframe)を取得する。これにより転送制御部230は、データメモリ223のメモリ領域へ転送すべき受信フレーム情報の長さ(例えば、Lframe_cont=40バイト)と、メインメモリ224のメモリ領域へ転送する受信フレームの長さ(例えば、Lframe=134バイト)とを認識する。
また転送制御部230は、受信格納部231に格納される受信フレームに対してCRCチェックを行うように、FCS部223に要求する。その後物理層部212は、受信開始信号から予め決まった固定時間(例えば、1μs)経過後に、受信フレームを受信格納部231に格納し始める。受信フレームは、FCS部233にも転送される。
次に転送制御部230は、データメモリ223において、受信フレーム情報を格納すべき領域を指定する。受信フレーム情報のうち、受信制御情報については、データメモリ223のアドレスA1(図8の例ではアドレスADD3)から開始される領域が指定される。またMACヘッダについては、アドレスA2(図8の例ではアドレスADD1)から開始される領域が指定される。その後転送制御部230は、受信格納部231に対して受信フレーム情報を転送するよう命令する。
この命令に応答して受信格納部231は、受信格納部231内の所定の領域(例えばFIFO1)から、4バイトの長さを持つ受信制御情報を、データメモリ223のアドレスA1から開始される領域に転送する。また、受信格納部231内の所定の領域(例えばFIFO2)から、36バイトの長さを持つMACヘッダを、データメモリ223のアドレスA2から開始される領域に転送する。この受信フレーム情報の転送が終了すると、転送制御部230はプロセッサ221に対して、受信フレーム情報の転送完了を通知する。
引き続き転送制御部230は、メインメモリ224において、受信フレームを格納すべき領域を指定する。この領域は、メインメモリ224のアドレスA3(図8の例ではアドレスADD5)から開始される領域である。その後転送制御部230は、受信格納部231に対して受信フレームを転送するよう命令する。
この命令に応答して受信格納部231は、受信格納部231内の所定の領域(例えばFIFO3)から、134バイトの長さを持つ受信フレームを、メインメモリ224のアドレスA3から開始される領域へ転送する。そして受信フレームの転送終了後、FCS部223からのCRCチェックの結果(CRCがOKかNGかの情報)と共に、転送制御部230はプロセッサ221に対してフレーム転送完了を通知する。
一方、プロセッサ221は、転送制御部230からの受信フレーム情報の転送完了通知を受けた後、データメモリ223からMACヘッダを読み出す。より具体的には、プロセッサ221の演算部は、データメモリ223に対して読み出し要求を発行する。これに応答して、データメモリ223からMACヘッダが、プロセッサ221の演算部に転送される。そしてプロセッサ221は、読み出されたMACヘッダの内容を解析する。このときの処理内容は、例えばMACヘッダ内のTypeおよびSubtypeフィールドを確認することで受信フレームの種類を特定することや、MACヘッダのアドレスフィールドを確認することで宛先アドレスが自局装置宛てであるかを認識したりすること等である。この解析によって自局宛てのデータフレームであることがわかり、さらにFCS部233からのCRCチェックの結果がOKである場合には、ACKフレーム(応答フレーム)を返信する必要があるとプロセッサ221は判断し、送信開始要求を転送制御部230に通知する。その通知を受けた転送制御部230は、物理層部212に送信開始要求を通知する。
ここで、送信開始要求を受けた物理層部212は、MACフレームを送信する前に、Preambleデータ等のPHYヘッダを送信する必要があるため、送信開始要求発行時点から物理層部212が実際に送信MACフレームを処理開始するまでに時間がある。
従ってプロセッサ221は、その送信開始要求を発行後、物理層部212が実際に送信フレームを要求するまでの間(例えば、8μs)に、ACKフレームを生成して、これをデータメモリ223に格納する。ACKフレームの格納先はメインメモリ224でも構わないが、プロセッサ221からの書き込み速度がより速いデータメモリ223であることが好ましい。
ACKフレームを生成した後、プロセッサ221はACKフレームを物理層部212へ転送するために、転送制御部230に対して、フレーム転送要求と共に、ACKフレームが格納されるデータメモリ223のアドレス及びACKフレームのフレーム長(10バイト)を通知する。
すると転送制御部230は、その通知されたアドレスに従って、データメモリ223のアドレスとデータ量を指定すると共に、FCS部233に、ACKフレームの最後にCRCを付加するように要求する。
そして、転送制御部230がデータメモリ223に対してフレーム転送指示を行うことで、データメモリ223から送信格納部234へ送信フレームが転送される。この場合、送信フレームに対してCRCを付加するため、ACKフレームは送信格納部234からFCS部233を経由し、物理層部212へ転送される。そしてFCS部233は、ACKフレームの転送後にCRCを物理層部212に転送し、CRCの転送完了後、そのことを転送制御部230に通知する。
その後、転送制御部230は、プロセッサ221に送信フレームを転送完了したことを通知する。
<効果>
以上のように、この発明の第1の実施形態に係る構成であると、プロセッサがメモリにアクセスする時間を削減することで処理速度を向上させ、複数の無線通信方式に対応することが出来る。本効果について、以下説明する。
近年、ノートブック型パーソナルコンピュータ、ゲーム機、カーナビゲーションシステム、デジタルカメラ、及び携帯情報端末等の電子機器には、無線通信機能を備えた機器も普及している。この種の無線通信機能の通信方式としては、IEEE802.11a/11b/11g/11n等の無線LAN(Local Area Network)規格や、IEEE802.16/16e規格等が知られている。
これらの電子機器には、複数の通信方式が実装されたり、電子機器それぞれの用途に応じて通信方式が選択されたりする。また、それぞれの無線通信方式は、通信速度の高速化等の機能向上を目的として、その規格が頻繁に変更されており(例えば、802.11gから802.11nなど)今後もその状況は続くと予想される。このような状況下における無線通信装置の開発では、複数の通信方式への対応が求められたり、規格変更による設計対応等が必要となったりしてきている。
無線通信装置において、通信規格のプロトコルに従った送受信データを処理する部分や変復調等を行う信号処理回路は、時間制約に関する仕様が厳しいことなどから、従来、この部分は主に論理回路により回路設計が行われている。しかしながら、論理回路による設計は開発自体に時間がかかり、また、通信規格変更等による設計仕様の変更は開発コストを増加させる要因となっていた。
一方、CPU(Central Processing Unit)やDSP(Digital Signal Processor)等の演算処理装置は、ソフトウェアを変更することで多様な処理に対応可能であり、無線通信方式の変更や規格変更等には柔軟に対応できる。
このような演算処理装置を用いて複数の通信システムに対応可能な無線通信装置としては、例えば、プロセッサ、命令メモリ、データメモリ、及び信号処理回路が、バスを介して接続される構成がある(特許文献1参照)。
一般に、無線通信装置に実装される機能は、どのようなタイミングでネットワークの媒体(無線では空間を指す)に信号を送出するための制御方式等を規定するMAC(Medium Access Control)層プロトコルと、データの通信速度や変調方式等を規定する物理層プロトコルとによって実現される。このうち物理層で規定される機能は、時間制約が厳しく、処理量も多いため、FPGAやリコンフィギャラブルプロセッサ等のプログラム変更によって機能変更可能な回路によって実現されることが多い。一方、MAC層で規定される機能は、物理層と比較して数値演算量が少なく、分岐処理が多いため、汎用プロセッサを用いて実現されることが多い。
ここで、IEEE802.11規格のMAC層においては、例えば、自装置宛てのデータフレームを正常受信した場合には、それに対する応答として、ACKフレームを規定時間内(SIFS以内。SIFSは例えば16μs)に返信する規定がある。このようにMAC層においても一部に時間制約の厳しい仕様が規定される通信規格においては、データメモリに書かれたデータフレームを汎用プロセッサが読み出し、解析し、ACKフレームをデータメモリに格納するといった処理では時間がかかる問題がある。また、MAC層の機能拡張のために、バスに接続されるプロセッサが2つ以上必要となる場合には、バスに接続されるプロセッサが増えるため、1つのプロセッサがデータメモリへアクセスするための待ち時間が増加する可能性がある。
この回避方法としては、プロセッサやバスのクロック周波数を増加させ、データの書き込み・読み出し速度を上げる方法がある。しかし、クロック周波数の増加は、プロセッサやバスの動作消費電力の増加につながるため、クロック周波数はなるべく小さい値に抑えることが好ましい。
また、他の方法として、CPUへの負担を軽減しながら所定のメモリ領域へデータを転送する方法がある(特許文献2参照)。しかしながら、この方法ではMACプロトコルを考慮していないため、無駄なデータ転送が生じ、MAC機能を実現するには適さない。
このように、従来の構成では、プロセッサがメモリへアクセスする時間がオーバーヘッドとなり、MAC層の機能を実現させることが困難になる問題があった。
この点、本実施形態に係る構成であると、受信したMACフレームをプロセッサ221により解析する無線通信装置200において、データ転送部225を設けている。そしてこのデータ転送部225を用いることにより、物理層部212から転送される受信フレームを、プロセッサ221を介することなくデータメモリ223に転送出来る。よって、受信フレームの転送によるバス226の占有時間を短縮出来る。
また、プロセッサ221から高速にアクセス可能なデータメモリ223にMACヘッダを転送することで、プロセッサ221がMACヘッダ解析のためにデータメモリ223をアクセスする時間も短縮出来る。更に、プロセッサ221がデータメモリ223にアクセスしている期間は、そのアクセスによってバス226を占有しないため、バス226は別のデータ転送に使用できる。
またこの際、データ転送部225の転送量決定部232において、フレームに応じて最適な受信フレーム情報のサイズ(Lframe_cont)を決定する。よって、不要な情報までもデータメモリ223に転送されることを防止し、情報転送に要する時間を短縮出来る。
以上の結果、プロセッサ221がMACヘッダを解析するまでの時間を短縮することができる。よって、データの受信に対して即時に応答フレームを返信しなければならない無線通信方式にも対応することが可能となり、複数の無線通信方式に対応可能な無線通信装置を実現できる。
[第2の実施形態]
次に、この発明の第2の実施形態に係る無線通信装置について説明する。本実施形態は、上記第1の実施形態において、無線通信装置200が複数のプロセッサを備える場合に関する。以下では、第1の実施形態と異なる点についてのみ説明する。
<無線通信装置200の構成について>
図10は、本実施形態に係る無線通信装置200のブロック図である。第1の実施形態と同様に、無線通信装置200は図1における無線LAN基地局101及び/または無線LAN端末102、103に適用出来る。以下でも、無線通信装置200が無線LAN端末102に適用される場合を例に説明する。
図示するように本実施形態に係る無線通信装置200は、第1の実施形態で説明した図2の構成において、更にプロセッサ241及び第2データ転送部240を備えている。なお、第2データ転送部240と区別するために、データ転送部225を第1データ転送部225と呼ぶことがある。
プロセッサ241は、プロセッサ221と同様の構成を有しており、命令メモリ242及びデータメモリ243を備えている。命令メモリ242及びデータメモリ243の機能は、命令メモリ222及びデータメモリ223と同様である。
第1データ転送部225の構成は、第1の実施形態で説明した図5の通りであり、その機能は、受信フレーム情報を第2データ転送部240に転送すること以外は、第1の実施形態と同様である。受信フレームがメインメモリ224に転送されることや、転送量決定部232の動作等も、第1の実施形態と同様である。
第2データ転送部240は、データ転送部225から受信フレーム情報(及び受信フレーム)を受信し、これをデータメモリ223、243に転送する。第2データ転送部240の構成を図11に示す。図11は、第2データ転送部240のブロック図である。図示するように第2データ転送部240は、転送制御部250、受信格納部251、及び送信格納部252を備えている。
転送制御部250は、MACフレームの受信時には、第1データ転送部225から受信格納部251に格納された受信フレームや、MACヘッダや受信制御情報等を含む受信フレーム情報を、データメモリ223、243へ転送する制御を行う。他方、MACフレームの送信時には、プロセッサ221(及び/またはプロセッサ241)がデータメモリ223(及び/またはデータメモリ243)に用意したMACフレームや、送信伝送レートやMACフレーム長等の送信制御情報を、それらのデータメモリ223(及び/またはデータメモリ243)から送信格納部252へ転送する制御を行う。送信格納部252に格納されたMACフレームや送信制御情報は、第1データ転送部225が読み出す。
転送制御部250には、受信フレーム情報の転送制御のために事前に設定されるいくつかのパラメータがある。これらのパラメータは、例えば次の通りである。
・受信制御情報をデータメモリ223、243へ転送するための、転送先メモリアドレスA1−1、A1−2。これは、それぞれデータメモリ223、243内のアドレスである。
・受信格納部251内において、受信制御情報が格納される領域の位置情報。例えば受信格納部251は複数のFIFOを含み、このうちのいずれのFIFOに格納されるかを示す情報である(例えばFIFO1)。
・MACヘッダをデータメモリ223、243へ転送するための、転送先メモリアドレスA2−1、A2−2。これは、それぞれデータメモリ223、243内のアドレスである。
・受信格納部251内において、MACヘッダが格納される領域の位置情報。例えば受信格納部251は複数のFIFOを含み、このうちのいずれのFIFOに格納されるかを示す情報である(例えばFIFO2)。
図12は、転送制御部250の動作を示すフローチャートであり、特に第1データ転送部225からフレームを受信する場合について示している。フレーム受信時における転送制御部250の動作は、第1の実施形態で説明した図7において、ステップS22〜S24、S28、S29と、受信フレームの転送を省いたものにほぼ相当する。
図示するように、まず転送制御部250において、転送先アドレスA1−1、A1−2、A2−1、A2−2が設定され、また受信格納部251内の位置情報(例えばFIFO1、FIFO2)が設定される(ステップS40)。
その後、第1データ転送部225から転送される受信フレーム情報を、受信格納部251に格納する(ステップS41)。受信フレーム情報が格納される領域はステップS40で設定された領域であり、上記の例であると受信制御情報は受信格納部251のFIFO1に格納され、MACヘッダはFIFO2に格納される。
その後、転送制御部230は、データメモリ223のアドレスA1−1、A2−1の領域とデータメモリ243のアドレスA1−2、A2−1の領域に受信フレーム情報を転送し(ステップS42)、完了すると完了通知をプロセッサ221、241に発行する(ステップS43)。そしてアドレスA1−1、A1−2、A2−1、A2−2を更新する(ステップS44)。次回のフレーム転送の際には、ステップS44で更新されたアドレスが使用される。
以上のようにして、受信フレーム情報がプロセッサ221、241に転送される。ここで、データ転送時におけるデータメモリ223、243について、図13を用いて説明する。図13は、転送制御部250によって受信フレーム情報が転送されたデータメモリ223、243のメモリ空間を示す概念図である。なお、転送先メモリアドレスA1−1を「アドレスADD3」、転送先メモリアドレスA2−1の値を「アドレスADD1」、転送先メモリアドレスA1−2を「アドレスADD9」、転送先メモリアドレスA2−2の値を「アドレスADD7」とする。従って、データメモリ223においては、それぞれアドレスADD3、ADD1から始まる領域に、受信制御情報INF1及びMACヘッダH1がそれぞれ格納される。またデータメモリ243においては、アドレスADD9、ADD7から始まる領域に、受信制御情報INF1及びMACヘッダH1がそれぞれ格納される。そして転送制御部250は、受信制御情報INF1及びMACヘッダH1のサイズを把握しているため、これらの情報を次に格納するための領域も知ることが出来る。これにより、転送先メモリアドレスA1−1は「アドレスADD4」に更新され、転送先メモリアドレスA2−1は「アドレスADD2」に更新され、転送先メモリアドレスA1−2は「アドレスADD10」に更新され、転送先メモリアドレスA2−2は「アドレスADD8」に更新される。
<無線通信装置200の動作>
次に、本実施形態に係る無線通信動作について、無線LAN基地局101からデータフレームを受信してACKフレームを無線LAN基地局101へ返す場合の無線LAN端末102の動作を例に挙げて、以下説明する。図14は、無線LAN端末102としての無線通信装置200の動作を示すフローチャートである。
MACフレームが第1データ転送部225の受信格納部231に格納され、転送量決定部232でLframe_contの演算が行われるまでは、第1の実施形態と同様である。その後第1データ転送部225は、MACヘッダと受信制御情報を含む受信フレーム情報を、第2データ転送部240における受信格納部251に転送して、転送完了後、転送制御部230は第2データ転送部240における転送制御部250に対して、受信フレーム情報の転送完了を通知する。
その後、第1データ転送部225は、受信フレームをメインメモリ224の特定のアドレス(第1の実施形態の例であるとアドレスA3)から開始される領域へ転送する。受信フレームの転送終了後は、データ転送部225は、CRCチェックの結果と共に、転送制御部250に対してフレーム転送完了を通知する。
第2データ転送部240は、データ転送部225から転送された受信フレーム情報を、プロセッサ221及び241のデータメモリ223、243に転送する。すなわち転送制御部250は、データメモリ223において受信フレーム情報の転送先となる領域のアドレスA1−1を指定し、受信格納部251に受信フレーム情報の転送を指示する。これにより受信格納部251は、データメモリ223に受信フレーム情報を転送し、その転送の完了後、転送制御部250は受信フレーム情報の転送完了をプロセッサ221に通知する。この動作を、データメモリ243への転送に対しても同様に行い、転送制御部250は受信フレーム情報の転送完了をプロセッサ241に通知する。
なお図14では、まず受信フレーム情報が第2データ転送部240からデータメモリ223へ転送され、その次に第2データ転送部240からデータメモリ243に転送され、その後にMACフレームがメインメモリ224に転送される場合を示している。しかし転送の順序はこれに限られるものではない。
すなわち第1データ転送部225は、第2データ転送部240に受信フレーム情報の転送完了通知を行った後、バス226が空きの状態(使用可能)であれば、受信フレームの転送を、第2データ転送部240とデータメモリ223、243との間における受信フレーム情報の転送と、並行して行うことができる。
つまり、第2データ転送部240を設けたことにより、プロセッサの数が増えた場合であっても、受信フレーム情報の転送によってバス226が占有されてしまうことを回避出来る。これにより、データ転送部225が受信フレームのメインメモリ224への転送を開始するまでの遅延時間を小さく抑えることができる。
他方、プロセッサ221は、転送制御部250からの受信フレーム情報の転送完了通知を受けた後、データメモリ223からMACヘッダを読み出し、その内容を解析する。このときの処理内容は、第1の実施形態と同様であるので、省略する。
プロセッサ221は、ACKフレームを返信する必要があると判断すると、送信開始要求を転送制御部250に通知する。その通知を受けた転送制御部250は、第1データ転送部225の転送制御部230へ送信開始要求を通知し、転送制御部230は物理層部212に送信開始要求を通知する。
プロセッサ221は、ACKフレームを生成すると、これをデータメモリ223に格納する。そしてプロセッサ221は、ACKフレームを物理層部212へ転送するために、転送制御部250に対して、フレーム転送要求と共に、データメモリ223においてACKフレームが格納される領域のアドレス、及びACKフレームの長さ(例えば10バイト)を通知する。
転送制御部250は、その通知されたアドレスに格納されたACKフレームを、データメモリ223から読み出し、送信格納部252に格納する。
その後、転送制御部250が第1データ転送部225の転送制御部230に対してフレーム転送要求を行う。これにより転送制御部230は、送信格納部252から送信格納部234にACKフレームを読み出す。この後、第1データ転送部225は、CRCの付加されたACKフレームが物理層部212へ転送されるように制御する。
その後、第1データ転送部225は、転送制御部250にフレーム転送完了を通知し、転送制御部250はプロセッサ221に送信フレームを転送完了したことを通知する。
なお、プロセッサ221または241が送信フレーム(ここではACKフレーム)を物理層212へ転送する場合において、ACKフレームを、必ずしも第2データ転送部240内の送信格納部252に一旦格納してから、データ転送部225へ転送する必要はない。例えば別の方法としては、第2データ転送部240内の送信格納部252を無くし、第1の実施形態と同様に、プロセッサ221またはプロセッサ241が送信フレームを各データメモリ223、243から第1データ転送部225に直接転送できるように構成してもよい。
<効果>
本実施形態に係る構成であると、複数のプロセッサを有する無線通信装置であっても、MACヘッダをプロセッサのデータメモリに転送するためにバスが占有される時間を短縮でき、第1の実施形態と同様の効果が得られる。
なお、上記実施形態では無線通信装置200に2つのプロセッサ221、241が実装される場合を例に説明したが、プロセッサの個数は2つに限らず、3つ以上であっても良い。3つ以上の場合であっても、プロセッサは第2データ転送部240を介してバス226に接続される。
また、受信フレーム情報をプロセッサ221だけでなくプロセッサ241にも転送する理由は、実際のACKフレーム処理を行わないプロセッサ241に対しても、応答が必要なことを知らせるためである。勿論、ACKフレームの生成はプロセッサ221ではなくプロセッサ241で行っても良い。更に、場合によっては、ACKフレームの生成を、プロセッサ221、241の両方によって行っても良い。
[第3の実施形態]
次に、この発明の第3の実施形態に係る無線通信装置について説明する。本実施形態は、上記第1の実施形態を、別の無線通信方式(例えばIEEE802.16)に適用したものである。以下では、第1の実施形態と異なる点についてのみ説明する。
<構成について>
本実施形態に係る無線通信システムの構成は、第1の実施形態で説明した図1の通りである。そして無線基地局101及び無線端末102、103は、IEEE802.16無線規格(802.16e等も含む)で通信可能となるようにプログラムされる。また本実施形態に係る無線通信装置は、無線基地局101に適用してもよいし、無線端末102、103に適用してもよい。以下では、一例として無線端末102に適用した場合について説明する。
本実施形態に係る無線通信装置200の構成は、第1の実施形態で説明した図2及び図5の通りである。また、本実施形態に係る無線通信装置200において、無線信号を送受信する場合の処理手順は、第1の実施形態で記載した手順と基本的に同様である。異なる点は、アンテナ210及び無線部211の対応する周波数帯が、無線LANの場合とは異なる(例えば、2.3GHz帯、2.5GHz帯、2.6GHz帯を用いる)ことや、物理層部212における送受信処理が、IEEE802.16規格で規定される機能や性能を満たすように構成される点である。
<MACフレームの構成例>
次に、IEEE802.16規格に従った無線通信システムにおけるMACフレームの構成について説明する。図15は、MACフレームのフォーマットを示す模式図である。
図示するようにMACフレームは、Generic MAC Header(以下では、単にMACヘッダと呼ぶ)、ペイロード(Payload)、及びCRCを含む。MACヘッダは、HTフィールド、ECフィールド、Typeフィールド、ESFフィールド、CIフィールド、Rsvフィールド、LENフィールド、CIDフィールド、及びHCSフィールドを含む。HTフィールドは、MACヘッダの後にPayloadが存在することを示す。ECフィールドは、Payloadが暗号化されているか否かを示す。Typeフィールドは、Payloadに特別な情報を含むことを示す。ESFフィールドは、MACヘッダの直後にサブヘッダが存在することを示す。CIフィールドは、PayloadにCRC部が付加されるか否かを示す。EKSフィールドには、暗号鍵に関する情報が設定される。LENフィールドは、MACフレームの長さを示す。CIDフィールドは、基地局と端末が通信するコネクションの種類を区別するためのものである。HCSフィールドは、MACヘッダが正常に受信できたか否かを示す。なおRsvフィールドはReservedビットであり、常に0が設定される。
<無線通信装置200の動作>
次に、無線端末102において、受信したデータフレームをメモリへ転送するまでの動作を、図16を用いて説明する。図16は、本実施形態に係る無線通信装置200の動作を示すフローチャートである。
基本的な動作手順は第1の実施形態と同様であるが、第3の実施形態のMACフレームでは、MACヘッダにもCRCが付加されることと、MACフレームの長さは、MACヘッダの中に設定されている点が異なるので、そのための処理手順が少し変わる。
図示するように、まず物理層部212は、受信したフレームを受信格納部231に格納する前に、受信開始信号を発行する。また物理層部212は、受信開始信号の発行後から実際に受信フレームの転送を開始するまでの間に、受信伝送レートや受信フレーム長等の受信制御情報を、受信格納部231に転送する。この受信制御情報のうち、少なくともMACフレーム長の情報は、転送量決定部232にも与えられる。
次に転送制御部230は、転送すべき受信フレーム情報の転送量(Lframe_cont)を決定するように転送量決定部222に要求する。そして転送制御部230は、転送量決定部232から、受信フレーム情報の転送量(Lframe_cont)を取得する。これにより転送制御部230は、データメモリ223へ転送すべき受信フレーム情報の長さ(例えば、受信制御情報が4バイトで、MACヘッダが6バイトとすると、合計10バイト)を認識する。
また転送制御部230は、受信格納部231に格納される6バイトのMACヘッダに対してヘッダCRCチェックを行うように、FCS部223に要求する。その後、物理層部212は、受信開始信号から予め決まった固定時間(例えば、1μs)経過後に、受信フレームを受信格納部231に格納し始める。
次に転送制御部230は、データメモリ223において、受信フレーム情報を格納すべき領域を指定する。受信フレーム情報のうち、受信制御情報については、データメモリ223のアドレスA1(図8の例ではアドレスADD3)から開始される領域が指定される。またMACヘッダについては、アドレスA2(図8の例ではアドレスADD1)から開始される領域が指定される。その後転送制御部230は、受信格納部231に対して受信フレーム情報を転送するよう命令する。
この命令に応答して受信格納部231は、受信格納部231内の所定の領域(例えばFIFO1)から、4バイトの長さを持つ受信制御情報を、データメモリ223のアドレスA1から開始される領域に転送する。また、受信格納部231内の所定の領域(例えばFIFO2)から、6バイトの長さを持つMACヘッダを、データメモリ223のアドレスA2から開始される領域に転送する。この受信フレーム情報の転送が終了すると、転送制御部230はプロセッサ221に対して、受信フレーム情報の転送完了を通知する。
一方、プロセッサ221は、転送制御部230からの受信フレーム情報の転送完了通知を受けた後、データメモリ223からMACヘッダを読み出す。より具体的には、プロセッサ221の演算部は、データメモリ223に対して読み出し要求を発行する。これに応答して、データメモリ223からMACヘッダが、プロセッサ221の演算部に転送される。そしてプロセッサ221は、読み出されたMACヘッダの内容を解析する。この際、プロセッサ221は、MACヘッダのLENフィールドを確認することで、受信するMACフレームの長さを認識する。この後、プロセッサ221は、MACフレームの長さであるフレーム転送量(例えば、134バイト)を転送制御部230に通知する。
その通知を受けた転送制御部230は、受信格納部231に格納されるペイロードに対してペイロードCRCチェックを行うように、FCS部223に要求する。
引き続き転送制御部230は、メインメモリ224において、受信フレームを格納すべき領域を指定する。この領域は、メインメモリ224のアドレスA3(図8の例ではアドレスADD5)から開始される領域である。更に転送制御部230は、受信格納部231に対して受信フレームを転送するよう命令する。
この命令に応答して受信格納部231は、受信格納部231内の所定の領域(例えばFIFO3)から、134バイトの長さを持つ受信フレームを、メインメモリ224のアドレスA3から開始される領域へ転送する。そして受信フレームの転送終了後、FCS部223からのペイロードCRCチェックの結果(CRCがOKかNGかの情報)と共に、転送制御部230はプロセッサ221に対してフレーム転送完了を通知する。
<効果>
以上のように、第1の実施形態は、無線LAN以外の種々の無線通信規格に従った無線通信装置にも適用出来る。なお、本実施形態は、第2の実施形態にも適用出来る。すなわち、本実施形態においても、無線通信装置200は複数のプロセッサを備えていても良い。
[第4の実施形態]
次に、この発明の第4の実施形態に係る無線通信装置200について説明する。本実施形態は、上記第1の実施形態において、複数のMACフレームを連結することにより1つに集約したAggregationフレームを受信する場合に関する。フレームのaggregation(連結)は、IEEE802.11n規格において定められている。
<Aggregationフレームの構成例>
図17は、IEEE802.11規格における1つのPSDU(PLCP Service Data Unit)に複数のMACフレームを含むAggregationフレームの構成例を示す模式図である。
図示するようにPSDUフレームは、N個(Nは正の整数)のサブフレーム(subframe)が連結されたフレームとして構成される。各サブフレームは、サブフレーム間の境界を検出するためのデリミタ(Delimiter)フィールド及びMACフレームを備える。なお、PSDU全体の長さ(フレーム長)をLPSDUと呼び、個々のDelimiterの長さをLdelimiterと呼ぶ。またLframeは、各サブフレームに含まれるMACフレームの長さである。
Delimiterフィールドは4バイトの長さを持ち(Ldelimiter=4バイト)、Reservedフィールド、lengthフィールド、CRCフィールド、及びDelimiter Signatureフィールドを有する。図中における“B0”等の数値は、Delimiter内のビット位置を示す。Reservedフィールドは予約されたフィールドで、ある一定の値が設定される。lengthフィールドは、後続するMACフレームの長さを示す。CRCフィールドは、lengthフィールドの誤りを検出するためのものである。Delimiter Signatureフィールドは、このフィールドがDelimiterであることを識別するためのものである。
Delimiterの後続のMACフレームのフォーマットは、図3に示す通りである。なお、MACフレームの後に図示されるPadフィールドは、サブフレームの長さが4バイトの倍数でない場合、4バイトの倍数になるように1〜3バイトだけ付加される。ただし、PSDUの最後のサブフレームにはPadフィールドは付加されない。
<無線通信装置200の構成について>
無線通信装置200の構成は、第1の実施形態で説明した通りであるが、一部、動作が異なる。以下では、データ転送部225における転送量決定部232と転送制御部230の動作について説明する。
<転送量決定部232の動作>
図18は、本実施形態に係る転送量決定部232の動作を示すフローチャートである。本実施形態に係る受信フレーム情報は2種類あり、ひとつは第1の実施形態と同様の内容を有するものであり、もうひとつはDelimiterと受信制御情報の組み合わせである。また受信制御情報は、受信伝送レート、転送フレームの長さ(つまりMACフレームの長さLframe、及びPSDUの長さLPSDU)、及びAggregationフレームであることを示す識別信号(無線LANでは、この識別情報がPHYヘッダに設定されるので、物理層部212は、Aggregationフレーム受信時に、これがAggregateされていることを認識出来る)等を含む。
まず第1の実施形態と同様に、転送量決定部232にはMACヘッダの最大長Lhead_maxと、受信制御情報の長さLcontとが、予め設定される(ステップS50)。前述の通り、MACヘッダの最大長Lhead_maxは例えば36バイトであり、受信制御情報の長さLcontは例えば4バイトである。
そして転送量決定部232は、受信したPSDUのフレーム長LPSDUを、例えば物理層部212から受信する(ステップS51)。そして転送量決定部232は、物理層212から通知された受信フレーム長LPSDUと、Delimiterの長さLdelimiterとを比較する(ステップS52)。Ldelimiterは、例えばステップS50で予め設定されても良いし、または例えば物理層部212から与えられても良い。
通常、Aggregationフレームでは、Ldelimiter<LPSDUとなる(ステップS53、YES)。この場合、転送量決定部232はDelimiter長Ldelimiterを選択し(ステップS54)、受信フレーム情報の長さLframe_contを(Ldelimiter+Lcont)として(ステップS55)、転送制御部230へ通知する(ステップS56)。すなわち、Lframe_cont=Ldelimiter(4バイト)+Lcont(4バイト)=8バイトとなる。
その後、第1の実施形態で説明した図6のステップS11の処理に進む。すなわち、サブフレームのMACフレーム長Lframeを受信して、当該サブフレームに関する受信フレーム情報の長さLframe_contの算出を行う。この受信フレーム情報は、第1の実施形態と同様に、例えばMACヘッダと受信制御情報の組み合わせである(MACヘッダのみであっても良い)。
一方、Ldelimiter≧LPSDUであった場合(ステップS53、NO)、転送量決定部232は受信処理を終了する(ステップS57)。
<転送制御部230の動作>
次に、上記転送制御部230の動作について、図19を用いて説明する。図19は、転送制御部230の動作を示すフローチャートであり、特に物理層部212からフレームを受信する場合について示している。
まず、第1の実施形態と同様に、転送制御部230において、転送先アドレスA1〜A3が設定され、また受信格納部231内の位置情報(例えばFIFO1〜FIFO3)が設定される(ステップS60)。この際、更に転送先アドレスA4及び受信格納部231内の位置情報(FIFO4)も設定される。転送先アドレスA4は、データメモリ224においてDelimiterが転送されるべき領域のアドレスであり、FIFO4は受信格納部231内においてDelimiterが転送されるべき領域である。
その後、転送制御部230は、物理層部212から転送される受信制御情報を、受信格納部231における、ステップS60で設定された領域(例えばFIFO1)に格納する(ステップS61)。
次に転送制御部230は、転送量決定部232に対して、受信フレーム情報の長さLframe_contを決定するよう命令し(ステップS62)、この値Lframe_contを取得する(ステップS63)。ここで長さLframe_contが算出される受信フレーム情報は、Delimiterと受信制御情報の組み合わせである。
次に、FCS部233に対してCRCチェックを行うよう命令(ステップS64)する。この際、CRCチェックの対象となるのはDelimiterである。その後、物理層部212から転送されるサブフレームを、受信格納部231に格納する(ステップS65)。サブフレームが格納される領域はステップS60で設定された領域であり、サブフレームはFIFO3に格納され、そのうちのDelimiterは更にFIFO4に格納される。
その後、転送制御部230は、データメモリ223のアドレスA1、A4の領域に受信フレーム情報を転送し(ステップS66)、完了すると完了通知をプロセッサ221に発行する(ステップS67)。この際、受信フレーム情報のサイズは、ステップS63で与えられたサイズである。
更に転送制御部230は、プロセッサ221から、サブフレームのMAC転送量(MACフレームの長さLframe)を受信する(ステップS68)。するとこれに応答して転送制御部230は、転送量決定部232に対して、受信フレーム情報の長さLframe_contを決定するよう命令し(ステップS69)、この値Lframe_contを取得する(ステップS70)。ここで長さLframe_contが算出される受信フレーム情報は、例えばMACヘッダ(またはMACヘッダと受信制御情報の組み合わせ)である。これにより、データメモリ223に転送すべきMACヘッダの長さが分かったので、転送制御部230は、受信格納部231内の例えばFIFO2内のMACヘッダ(またはMACヘッダ及び受信制御情報)を、データメモリ223のアドレスA2の領域に転送し(ステップS71)、プロセッサ221に対して完了通知を送信する(ステップS72)。
更に転送制御部230は、受信格納部231の例えばFIFO3内のMACフレームを、メインメモリのアドレスA3の領域に転送し(ステップS73)、プロセッサ221に対して完了通知を送信する(ステップS74)。
その後、第1の実施形態と同様にして、アドレスA1〜A4を更新する(ステップS75)。そして、プロセッサ221から更なる転送要求が無ければ(ステップS76、NO)、処理を終了する。他方、更なる転送要求があれば(ステップS76、YES)、ステップS64に戻り、次のサブフレームについて同様の処理を繰り返す。
<無線通信装置200の動作>
次に、上記構成の無線通信装置200の動作について、無線LAN端末102がAggregationフレームを受信して、ACKフレームを無線LAN基地局101へ返すまでの間の無線LAN端末102の動作を例に挙げて、以下説明する。
<動作の大まかな流れについて>
まず、動作の大まかな流れを、図20を用いて説明する。図20は無線通信装置200の動作を示すフローチャートである。大まかには、まず受信フレーム情報(Delimiterを含む)の長さが算出される。その後は、Delimiter転送、受信フレーム情報(MACヘッダを含む)の長さ算出、MACヘッダ転送、及びMACフレーム転送を、サブフレーム毎に繰り返す。
図20に示すように、まず無線通信装置200は、フレーム受信すると、それがAggregationフレームであることを認識する(ステップS80)。そして転送量決定部232は、図18で説明した判定動作に応じて、Lframe_cont=受信制御情報+Ldelimiterに決定する(ステップS81)。
そして、最初のサブフレームSF1についてのデータ転送を開始する(i=1、iは1以上N以下の自然数、ステップS82)。まずデータ転送部225は、サブフレームSFiについての受信フレーム情報を、プロセッサ221に転送する(ステップS83)。前述の通り受信フレーム情報は、サブフレームSFiについての受信制御情報とDelimiterとの組み合わせである。そしてプロセッサ221は、受信したDelimiterを解析する(ステップS84)ことにより、サブフレームSFiのMACフレーム長Lframeを算出する(ステップS85)。
すると転送量決定部232は、算出されたLframeに基づいて、サブフレームSFiについてのLframe_contを算出する(ステップS86)。この算出方法は、第1の実施形態で説明した図6の通りである。そしてデータ転送部225は、算出されたLframe_contに基づいて、サブフレームSFiのMACヘッダ(またはMACヘッダ及び受信制御情報)をデータメモリ223に転送し(ステップS87)、引き続きサブフレームSFiのMACフレーム全体をメインメモリ224に転送する(ステップS88)。これにより、1つのサブフレームSFiに関するデータ転送が完了する。
その後プロセッサ221は、処理済みのサブフレームSFiのデータ量が、PSDUのサイズより小さいか否かを判断する(ステップS89)。小さくない場合(ステップS88、NO)には、既に全てのサブフレームSF1〜SFNに関するデータ転送が完了しているはずなので、プロセッサ221はACKフレーム(例えばBlockACKフレーム)を返すための処理を行う(ステップS90)。
他方、ステップS89において小さい(ステップS89、YES)と判断された場合には、未転送のサブフレームが残っているはずなので、次のサブフレームSF(i+1)についての転送を開始する(ステップS91)。そのためプロセッサ221はデータ転送部225に対して、次のサブフレームSF(i+1)についての転送指示を出して(ステップS92)、ステップS83に戻る。
<動作の詳細な流れについて>
次に、図20を実行する際の無線通信装置200の動作の詳細について、図21を用いて説明する。図21は、無線通信装置200の動作を示すフローチャートである。基本的な動作手順は第1の実施形態と同様であるが、本実施形態に係るAggregationフレームでは、最初にMACフレームの長さを認識する目的でDelimiterを解析する手順があるため、第1の実施形態とは処理手順が少し変わる。
図示するように、物理層部212は、受信したPSDUフレームを受信格納部231に格納する前に、受信開始信号を発行する。これにより物理層部212は、物理層部212から受信フレームの転送を開始することを、転送制御部230に通知する。また物理層部212は、受信開始信号の発行後から実際に受信フレームの転送を開始するまでの間に、前述の受信制御情報を受信格納部231に転送する。受信制御情報は、転送量決定部232にも与えられる。
次に、転送制御部230は、転送すべき受信フレーム情報の転送量(Lframe_cont)を決定するように転送量決定部222に要求する。ここで決定される受信フレーム情報は、Delimiterと受信制御情報の組み合わせである。この要求に応答して転送制御部230は、データメモリ223へ転送する受信フレーム情報の長さ(例えば、Lframe_cont=4バイト(受信制御情報)+4バイト(Delimiter)=8バイト)を認識する。
また転送制御部230は、受信格納部231に格納される4バイトのDelimiterに対してCRCチェックを行うように、FCS部223に要求する。その後、物理層部212は、受信開始信号から予め決まった固定時間(例えば、1μs)経過後に、PSDUフレームのサブフレームを受信格納部231に格納し始める。サブフレームは、FCS部233にも転送される。
次に転送制御部230は、データメモリ223において、受信フレーム情報を格納すべき領域を指定する。受信フレーム情報のうち、受信制御情報についてはアドレスA1から開始される領域が指定され、DelimiterについてはアドレスA4から開始される領域が指定される。その後、転送制御部230は、受信格納部231のそれぞれ指定された領域に、受信制御情報及びDelimiterを転送するよう命令する。このDelimiterは、当然ながら最初のサブフレームSF1についてのDelimiterである。受信フレーム情報の転送終了後、FCS部223からのDelimiter CRCチェック結果がOKである場合には、転送制御部230はプロセッサ221に対して、受信フレーム情報の転送完了を通知する。
一方、プロセッサ221は、転送制御部230からの受信フレーム情報の転送完了通知を受けた後、データメモリ223からDelimiterを読み出す。より具体的には、プロセッサ221の演算部は、データメモリ223に対して読み出し要求を発行する。これに応答して、データメモリ223からDelimiterが、プロセッサ221の演算部に転送される。そしてプロセッサ221は、読み出されたDelimiterの内容を解析する。この際、プロセッサ221は、Delimiter内のlengthフィールドを確認することで、サブフレームSF1のMACフレームの長さを認識する。そしてプロセッサ221は、MACフレームの長さであるフレーム転送量(例えば、134バイト)を転送制御部230に通知する。
この通知を受けた転送制御部230は、転送すべき受信フレーム情報の転送量(Lframe_cont)を決定するように転送量決定部222に要求する。ここで決定される受信フレーム情報は、サブフレームSF1についてのMACヘッダ(及び受信制御情報)である。この要求に応答して転送制御部230は、データメモリ223へ転送すべき受信フレーム情報の長さを認識する。引き続き転送制御部230は、受信格納部231に格納されるMACフレーム(サブフレーム)に対してフレームCRCチェックを行うように、FCS部223に要求する。
その後、転送制御部230は、データメモリ223においてMACヘッダを格納すべき領域(アドレスA2から開始される領域)を指定する。そして転送制御部230は、受信格納部231内のFIFO2から、サブフレームSF1のMACヘッダ(またはMACヘッダ及び受信制御情報)を、データメモリ223における指定された領域へ転送し、転送完了をプロセッサ221に通知する。
更に転送制御部230は、メインメモリ224においてサブフレームSF1のMACフレームを格納すべき領域(アドレスA3から開始される領域)を指定する。そして転送制御部230は、受信格納部231内のFIFO3から、134バイトの長さを持つサブフレームSF1のMACフレームを、メインメモリ224における指定された領域へ転送する。
サブフレームSF1についてのデータの転送終了後、転送制御部230は、FCS部223からのフレームCRCチェックの結果(CRCがOKかNGかの情報)と共に、プロセッサ221に対してフレーム転送完了を通知する。
この時点で、サブフレームSF1に関するデータ転送が完了する。もし、処理済みのサブフレームのバイト数が、PSDUの長さより少ない場合には、次のサブフレームSF2がまだ転送されてくると考えられる。この場合プロセッサ221は、Delimiter転送量(つまり4バイト)を転送制御部230に指定し、Delimiterをデータメモリ223に転送するように指示する。
この後の処理手順は、図21におけるA時点からの処理を繰り返す。図21におけるB時点で、処理済みのサブフレームのデータ量がPSDUの長さに達していた場合には、ACKフレームの送信処理を行う。この処理は第1の実施形態と同様である。
<効果>
以上のように、第1の実施形態は、Aggregationフレームを受信処理する場合にも適用出来る。また本実施形態は、第2の実施形態にも適用出来る。すなわち、本実施形態においても、無線通信装置200は複数のプロセッサを備えていても良い。勿論、第3の実施形態に適用されても良い。
なお、本実施形態においては、AggregationフレームではLdelimiter<LPSDUとなることが明らかなようであれば、図18におけるステップS52、S53、S57の処理を省略しても良い。しかしながら、不慮のケースまで考慮するのであれば、これらの処理を行うことが好ましい。
[第5の実施形態]
次に、この発明の第5の実施形態に係る無線通信装置について説明する。本実施形態は、上記第1の実施形態において、MAC層部220内の構成の一部を変更したものである。但し、無線通信装置の動作自体は、第1の実施形態と同様である。従って、以下では第1の実施形態と異なる点についてのみ説明する。
図22は、本実施形態に係る無線通信装置200のブロック図である。図示するように、本実施形態に係る無線通信装置200は、第1の実施形態で説明した図1の構成において、転送量決定部232をプロセッサ221内に設けたものに相当する。この際、プロセッサ221(の演算部)がソフトウェアを実行することで、プロセッサ221が図6の動作を行い、転送量決定部232の機能を果たしても良い。
また図22におけるデータ格納部260は、図5で説明した受信格納部231、送信格納部234、及びFCS部233に相当する。なおFCS部233は、プロセッサ221(の演算部)によるソフトウェアの実行により、その機能が実現されても良い。
転送制御部230とデータ格納部260は、バス262を介してデータ転送を行い、更にプロセッサ221にも接続される。よって転送制御部230は、データ格納部260内のデータをデータメモリ223に転送することが可能である。また、バス262は、バスインターフェース部261を介してバス263とも接続される。そしてメインメモリ224はバス263に接続される。従って転送制御部230は、データ格納部260内のデータをメインメモリ224に転送することも可能である。
以上の各ブロックの動作は、第1の実施形態で説明した通りである。
<効果>
本実施形態に係る構成であると、転送量決定部232をプロセッサ上のプログラムで実現している。従って、転送すべきデータ量を決定する方法を柔軟に変更することができ、転送制御部230に対してより細かい転送指示を行うことが可能となる。
なお、図22の構成において、メインメモリ224をバス262に接続しても良い。この場合には、バスインターフェース部261及びバス263は不要である。
以上のように、この発明の第1乃至第5の実施形態に係る無線通信装置200であると、受信部210〜212、第1格納部231、転送量決定部232、及び第1転送制御部230を備える。受信部210〜212は、第1の長さLframeのフレーム長を有する第1フレームを、第1無線方式を用いて受信する。第1格納部231は、受信部210〜212が受信した第1フレームの一部または全部を格納する。転送量決定部232は、第1無線方式に基づいて決定される第2の長さLhead_maxが第1の長さLframeより小さい場合には、第3の長さLframe_contを第2の長さLhead_maxに設定し、第2の長さLhead_maxが第1の長さLframe以上である場合には、第3の長さLframe_contを第1の長さLframe以下の値に設定する。第1転送制御部230は、第1フレームに含まれる第3の長さLframe_contの第1情報(MACヘッダ)を含む転送情報(受信フレーム情報)を第1メモリ223へ転送し、第1フレームを第1の長さLframeだけ、第1メモリ223とは異なる第2メモリ224へ転送する。
本構成によれば、転送量決定部232及び第1転送制御部230により、必要な情報をメモリに転送する。また、転送量決定部232により、転送すべき情報の大きさを決定している。従って、MACヘッダ解析のためにプロセッサ221がデータメモリ223にアクセスする時間を短縮出来る。すなわち、プロセッサ221がメモリにアクセスする時間がオーバーヘッドとなることを抑制し、プロセッサを用いて複数の無線通信方式に対応可能な無線通信装置において、規定時間内に応答フレームを返信することが可能となる。
なお、上記実施形態においては、データメモリ223、243がプロセッサ221、241内部にあり、メインメモリ224がプロセッサ221、プロセッサ241外部にある場合を例に説明した。しかし、この場合に限られない。すなわち、データメモリ223、243は、プロセッサ221(の演算部)からのアクセス速度が、メインメモリ224よりも速いメモリであれば良い。例えば、データメモリ223、243は、プロセッサ221、241の動作周波数で動作し、メインメモリ224はそれよりも低い動作周波数で動作する場合であっても良い。またはデータメモリ223、243とプロセッサ221、241との間の距離(言い換えれば配線長、遅延)は、メインメモリ224とプロセッサ221、241との間の距離(配線長、遅延)よりも小さい場合であっても良い。
更には、データメモリ223、243は、メインメモリ224よりもレイテンシー(latency)が短い場合であっても良い。すなわち、プロセッサ221、241が読み出し要求をデータメモリ223、243に発行してから、実際にデータがデータメモリ223、243から読み出せるまでの時間(例えば1クロック)は、プロセッサ221、241が読み出し要求をメインメモリ224に発行してから、実際にデータがメインメモリ224から読み出せるまでの時間(例えば10クロック)よりも短い。レイテンシーが短いことは、結果としてプロセッサがメモリへ高速にアクセス出来ることを意味する。
また、上記実施形態は適宜組み合わせることが出来る。すなわち、例えば第3乃至第5の実施形態において、プロセッサが複数設けられても良い。また、第2乃至第4の実施形態は、第5の実施形態に係る構成において実現されてもよい。
また、上記実施形態で説明したフローチャートは、可能な限り順序を入れ替えても良い。そしてプロセッサ221、241は、プログラムを実行することにより上記フローチャートに示す動作を実現する。このプログラムは、メインメモリ240に格納されていても良いし、機器読み取り可能なあらゆる媒体(メモリカード、CD−ROM、DVD等)に記録されても良い。このプログラムが実行される際には、プログラムは例えばデータメモリ223、243や命令メモリ222、242に読み出される。
更に、上記実施形態では無線通信方式の例としてIEEE802.11、802.16の場合について説明したが、これ以外の通信方式にも適用可能である。
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。