以下、本発明に係わる中継装置、その中継方法及びプログラムの一実施の形態について添付図面を参照して詳細に説明する。但し、実施形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらのみに限定する趣旨のものではない。
(実施形態1)
図1を用いて、本発明の一実施の形態に係わる通信装置の構成の一例について説明する。110は、通信装置全体を制御するCPU(Central Processing Unit)である。120は、プログラムやデータを一時記憶するRAM(Random Access Memory)である。130は、変更を必要としないプログラムやパラメータを格納するROM(Read Only Memory)である。140は、通信機能を実現する通信インターフェイスである。以上が、通信装置の構成についての説明であるが、通信装置100は、必ずしもこの構成に限定されるわけではなく、必要に応じて記憶装置、表示装置などの機能を追加してもよい。
次に、図2を用いて、図1に示す通信インターフェイス140の構成について説明する。なお、本実施形態の通信インターフェイス140は、無線による通信を実現する。
210は、メディアアクセス層を管理するMAC(Medium Access Controller)である。220は、通信信号処理機能(エラー訂正符号化、復号化、変復調など)を有するBBP(Base Band Processor)である。230は、ベースバンド帯の信号を搬送波周波数帯で処理するためのRF(Radio Frequency)である。240は、搬送波周波数帯の変調信号を無線区間で送受信するためのアンテナである。
ここで、図3を用いて、パケットフレームフォーマットについて説明する。
PHY header1400は、BBP220で処理されるブロックであり、MAC header1410は、MAC210で処理されるブロックである。このパケットは、左から右に向けて時間順となる。
PHY header1400は、Preamble(プリアンブル:通信制御に係わる信号)1401、PHY rate1402を少なくとも含んで構成される。Preamble1401は、パケットの検出や同期に用いられる。また、PHY rate1402には、パケット送信で使用される物理層速度が記述される。
MAC header1410は、Frame Control 1411、Length1412、Source address1413、Destination address1414を少なくとも含んで構成される。Frame Control 1411には、パケットタイプが記述される。Length1412には、Payload1420の長さが記述される。Source address1413には、送信元アドレスが記述される。Destination address1414には、送信先アドレスが記述される。
MAC Header1410の後には、符号化データであるPayload1420領域が続く。Payload1420は、PSDU(PHY Service Data Unit)1430を少なくとも含んで構成される。PSDU1430は、符号化されていないデータ1441とCRC(Cyclic Redundancy Code)1442とが、Encoder410(図5参照)により符号化されることによって生成される。
次に、図4を用いて、図2に示すRF230の構成の一例について説明する。
RF230は、RF_inoutポート用いてアンテナ240へRF信号を入出力する。BPF(Band Pass Filter)300は、通過信号の帯域を制限し、通信信号を所望の周波数帯にするフィルタである。SW301は、RF_inoutポートへの送信、受信を切り替えるスイッチである。この切り替えは、Tx_RX_ctrl信号に基づいて行なわれる。
RSSI(Received Signal Strength Indication) detector310は、RF帯での受信信号強度RSSIを出力する。Rx Signal detector311は、RSSI detector310の出力値が、所定の閾値以上であれば信号を受信したことを示すRx_detect信号を出力する。
LNA(Low Noise Amplifier)312は、RF帯の受信信号を増幅する。VGA(Variable Gain Amplifier)313は、可変ゲイン制御信号であるAGC_Ctrl信号によって増幅ゲインを調整しながらRF帯の受信信号を増幅する。局部発振器302は、所望のRF信号の中心周波数を発生する。
IQ Demod(In-phase and Quadrature-phase demodulator)314は、RF帯の受信信号を局部発振器302の出力を用いて直交復調し、ベースバンド帯域のIQ直交変調信号を出力する。LPF(Low Pass Filter)315は、ある一定のカットオフ周波数以上を減衰させることができる低域通過フィルタであり、受信信号をRF_bb_out信号として出力する。
LPF320は、RF230へ再変調信号を入力するためのRF_bb_in信号から高域の信号を取り除き低域のみを通過させるフィルタである。このRF_bb_in信号は、IQ mod(In-phase and Quadrature-phase modulator)321によって所望の中心周波数を持つRF送信信号となる。PA(Power Amplifier)322において、信号レベルが増幅され、BPF300を通過した後、RF_inoutポートからRF帯の送信信号がアンテナ240へ出力される。
次に、図5を用いて、図2に示すBBP220の構成の一例について説明する。
ベースバンド入力信号BB_RF_INは、ADC(Analogue to Digital Converter)401において、デジタル信号に変換され、OFDM demod402において、受信したOFDM信号が復調され復調信号が出力される。OFDM demod402においては、RSSI信号を参照することによって受信信号の増幅ゲイン制御線であるVGA_Ctrl信号を出力する。Repeat_ctrl信号がHレベルでOFDM demod402に入力されると、OFDM demod402は、Preamble_compensation信号を出力する。
Channel equalizer403は、Demod_signal_inの周波数毎の信号強度を補正する。Channel equalizer403からの出力は、Decoder404を通過した後、Decoded_data(復号データ)として出力される。また、Decoder404は、Decoded_data(復号データ)にエラーが検出されたか否かを示すError_detect信号を出力する。
Rx signal memory405は、Sync_rx_signal信号(復調信号)を記憶する一次記憶装置である。Rx signal memory405は、Repeat_ctrl信号がLレベルで入力されると、Rx_signal_mem_addr信号で示されるメモリのアドレス値を参照しながらSync_rx_signal信号を書き込む。また、Repeat_ctrl信号がHレベルで入力されると、Rx_signal_mem_addr信号で示されるメモリのアドレス値を参照しながらSync_rx_signal信号を読み出し出力する。この出力は、乗算器406に入力され、そのPreamble部分は、Preamble_compensation信号と乗算されることによって信号強度が補正され、マルチプレクサ(MUX)412に入力される。マルチプレクサ412は、Repeat_ctrl信号がHレベルで入力されると、補正後のSync_rx_signal信号を出力する。また、マルチプレクサ412は、Repeat_ctrl信号がLレベルで入力されると、OFDM mod411からの入力をDAC(Digital to Analogue Converter)413へ出力する。Encoder410は、data_in信号(復号データ(未符号化PSDU))を符号化し、Payload1420を生成する。OFDM mod411は、入力信号をOFDM変調信号に変換する。DAC413は、OFDM mod411により変調されたBB_RF_OUT(再変調信号)をアナログ変調信号として出力する。
次に、図6を用いて、図5に示すOFDM demod402の構成の一例について説明する。
ADC401からOFDM demod402へ入力される入力信号は、FIR(Finite Impulse Response) filter500において、所望信号帯域に更に制限される。FIR filter500からの出力は、AFC(Automatic Frequency Controller)501に入力される。AFC501は、入力された信号の周波数及び位相を補正し、Sync_rx_signal信号として出力する。AFC501は、同時にシンボルをカウントし、そのカウント値をSymbol_cntとして出力する。AFC501から出力されるSync_rx_signal信号は、GI(Guard Interval) remover502に入力される。GI remover502においては、入力された信号からガードインターバル部分を除去する。GI remover502の出力は、FFT(Fast Fourier Transformer)503に入力される。FFT503においては、時間軸信号を周波数信号に変換し、復調信号を出力する。
また、FIR filter500からの出力は、AGC(Automatic Gain Controller)510にも入力される。AGC510は、RSSIを参照してPreamble部分から受信信号ゲイン制御信号であるVGA_Ctrl信号を出力する。
PGC(Preamble Gain Controller)511は、Rx_detect信号がHレベルで入力されると、Preamble期間中のVGA_Ctrlの変化値と収束値とを記憶する。PGC511は、内部レジスタreg_p512及びreg_q513を少なくとも有する。PGC511は更に、受信データのシンボルタイミングを再生するSymbol timer514を有する。PGC511では、図5に示すRx signal memory405からSync_rx_signal信号が出力される時に、Preamble期間中の出力値が収束値と一致するようにPreamble_compensation信号を出力する。
次に、図7を用いて、図5に示すOFDM mod411の構成の一例について説明する。
IFFT(Inverse FFT)600には、復調信号又は符号化信号が入力され、入力された信号に基づいて再変調信号を生成する。なお、IFFT600には、受信信号の受信状態(例えば、エラー発生量等)に基づいて復調信号又は符号化信号のいずれかが選択的に入力される。
GI inserter601は、再変調信号にGIを付加して信号を出力する。GI inserter601の出力は、Preamble inserter602に入力される。Preamble inserter602においては、入力された再変調信号にPreambleを(新たに)付加する。
次に、図8を用いて、図2に示すMAC210の構成の一例について説明する。
RC(Repeat Controller)700は、MAC210を制御するコントローラである。
RC700は、受信データにエラーがあったか否かを一次記憶するための内部レジスタreg_e701を少なくとも有する。CRC Checker710は、PSDU1430を復号化して得られたデータからエラーを検出し、そのエラー検出結果をCRC_detectとしてRC700に出力する。
CRC Remover720は、CRC部分を取り除き、復号データのみを出力する。OUTPUT FIFO(First In First Out)740は、復号データを一次保存するメモリバッファである。OUTPUT FIFO740は、メモリがフルの時には、OUTPUT_FIFO_rdyをHレベルで出力する。また、OUTPUT FIFO740は、OUTPUT_FIFO_oeがHレベルで入力されると、一次記憶しているデータを読み出す。
INPUT FIFO750は、送信データを一次保存するメモリバッファである。INPUT FIFO750は、INPUT_FIFO_rdy信号がHレベルで出力されている時にデータを書き込むことができる。INPUT FIFO750に書き込まれたデータは、INPUT_FIFO_oeがHレベルで入力されたときに出力される。CRC inserter730は、入力されたデータを用いてCRC演算を行ない、データの後にCRCを加えてPSDU1430を生成し、BBP220に出力する。
図9は、図6に示すPGC511の動作の一例を示すフローチャートである。
PGC511は、まず、Rx_detect信号がHレベルで入力されているかを判定する。これは、受信信号があるか否かを判定するために行なう。Rx_detect信号がHレベルで入力されていなければ(S801でNO)、PGC511は、受信信号がないとして待機状態となる。一方、Rx_detect信号がHレベルで入力されていれば(S801でYES)、PGC511は、受信信号が入力されたと判定し、内部レジスタreg_p512の配列内にVGA_ctrl値を書き込む(S802)。VGA_ctrl値は、受信信号のシンボル毎に書き込む。なお、この書き込み処理は、シンボルの最大値Kに到達するまで繰り返し行なわれる(S803でNO)。このとき、PGC511は、S802及びS803の処理におけるシンボルタイミングをSymbol timer514に記憶する。
ここで、シンボルの最大値Kに到達した場合(S803でYES)、VGA_ctrlの値が収束しているとし、PGC511は、Rx signal memory405に記憶されている信号全てにこのVGA_ctrl値を反映するため、補正値を算出する。
補正値の算出処理では、PGC511は、まず、内部レジスタの配列参照用のパラメータiに0を設定する(S804)。そして、PGC511は、内部レジスタreg_q(i)に補正値reg_p(K)−reg_p(i)を書き込み(S805)、パラメータiをカウントアップする(S806)。この処理は、iがKを上回らない限り、繰り返し行なわれる(S807でNO)。iがKを上回ると(S807でYES)、PGC511は、Repeat_ctrl信号がHレベルになるまで待機する(S808でNO)。
Repeat_ctrl信号がHレベルになると(S808でYES)、PGC511は、Preamble_compensation信号の出力値として、reg_q513の値を出力する(S809)。この出力は、Symbol timer514に従って行なわれる。
次に、図10、図11を用いて、図8に示すRC700の動作の一例について説明する。
まず、図10を用いて、送信時の動作の一例について説明する。RC700は、Rx_detect信号がHレベルで入力されているかを判定する。これは、受信信号があるか否かを判定するために行なう。Rx_detect信号がHレベルで入力されていれば(S901でYES)、詳細については後述するが、RC700は、S930の処理を実施する。一方、Rx_detect信号がHレベルで入力されていなければ(S901でNO)、RC700は、Tx_mode信号がHレベルで入力されているかを判定する。これは、CPU110が送信モードを要求しているか否かを判定するために行なう。Tx_mode信号がHレベルで入力されていなければ(S902でNO)、RC700は、送信モードが要求されていないとして、詳細については後述するが、S930の処理を実施する。一方、Tx_mode信号がHレベルで入力されていれば(S902でYES)、RC700は、TX_ON信号をHレベルで出力し、BBP220及びRF230を送信状態にする(S903)。
その後、RC700は、CPU110からのError_information_request信号がHレベルになるまで待機する(S904でNO)。この信号がHレベルになると(S904でYES)、RC700は、エラー情報として内部レジスタreg_e701の値をCPU110に通知する(S905)。
この通知後、RC700は、Sync_rx_signal_request信号がHレベルで入力されているかを判定する。Sync_rx_signal_request信号は、Rx signal memory405を参照するか否かを示す信号である。ここで、Sync_rx_signal_request信号がHレベルで入力されていれば(S906でYES)、RC700は、Repeat_ctrl信号をLレベルで出力する。これにより、Rx signal memory405からの出力をディスエーブルにする(S907)。また、RC700は、INPUT_FIFO_oe信号をHレベルで出力することで復号データを送信した後(S908)、S901の処理に戻る。
一方、S906において、Sync_rx_signal_request信号がHレベルで入力されていなければ(S906でNO)、RC700は、Repeat_ctrl信号をHレベルで出力する(S909)。これにより、Rx signal memory405からの出力をイネーブルにする。その後、RC700は、Rx signal memory405のアドレスカウンタ用の一時的なパラメータiを0にリセットする(S910)。また、RC700は、Rx_signal_mem_addr信号の出力値を出力する(S911)。この出力値は、転送対象となる受信信号の読み出しアドレスを示すRead_addr(j)にiを加算した値となる。
この出力後、RC700は、iをカウントアップするとともに(S912)、iが受信信号のデータ長であるData_lengthを上回っているかを判定する。上回っていない場合には(S913でNO)、S911の処理に戻り、上回っている場合には(S913でYES)、S901の処理に戻る。
次に、図11を用いて、受信時の動作の一例について説明する。なお、図11は、図10に示すS930の処理を示している、すなわち、この処理は、RC700に対してRx_detect信号がHレベルで入力されている場合、又はTx_mode信号がLレベルで入力されている場合に開始される。
RC700は、まず、INPUT_FIFO_oe信号をLレベルで出力する。これにより、復号データが送信されない(S1001)。また、RC700は、TX_ON信号をLレベルで出力し、BBP220及びRF230を受信状態にする(S1002)。RC700は、Rx signal memory405のアドレスカウンタ用の一時的なパラメータiを0にリセットする(S1003)。
続いて、RC700は、転送対象となる受信信号の書き込みアドレスであるWrite_addr(j)にiを加算し、その加算後の値をRx_signal_mem_addr信号として出力する(S1004)。RC700は、iをカウントアップする(S1005)。
RC700は、iが受信信号のデータ長であるData_lengthを上回っているかを判定し、上回っていない場合には(S1006でNO)、S1004の処理を再度、実施する。上回っている場合には(S1006でYES)、RC700は、内部レジスタreg_e(j)701にError_detect信号及びCRC_detect信号の論理和値を書き込む(S1007)。この論理和値は、受信データにエラーがあるか否かを示す情報となる。
次に、図12を用いて、図1に示すCPU110の動作の一例について説明する。
CPU110は、まず、送信モードであるか否かの判定を行なう。送信モードであれば(S1101でYES)、CPU110は、Error_information_requestをHレベルでRC700に入力する(S1102)。これにより、RC700の内部レジスタ値reg_e701をエラー情報として読み出す(S1103)。
続いて、CPU110は、参照したエラー情報の値から復号データのエラーがエラー閾値を上回っているか否かを判定する。エラーがエラー閾値を下回っている場合には(S1104でYES)、CPU110は、復号データを再符号化せずに、Sync_rx_signal_request信号をHレベルでRC700に出力する(S1109)。これは、Rx signal memory405に保存されているSync_rx_signal信号(復調信号)を再送するためである。そして、再度、S1101の処理に戻る。
一方、S1104において、エラーがエラー閾値を上回っている場合には(S1104でNO)、CPU110は、復号データが保存されているRAM120の読み出しアドレスを参照する(S1105)。ここで、CPU110は、INPUT_FIFO_rdy信号がHレベルで出力されているかを判定する。この処理は、INPUT_FIFO750が書き込み許可状態であるか否かを判定するために行なう。
この結果、INPUT_FIFO_rdy信号がHレベルでなければ(S1106でNO)、CPU110は、Hレベルになるまで待機する。Hレベルであれば(S1106でYES)、CPU110は、RAM120から復号データを読み出し(S1107)、INPUT FIFO750に書き込む(S1108)。そして、再度、S1101の処理に戻る。
また、ステップS1101において、送信モードでなかった場合(S1101でNO)、CPU110は、受信時の動作を行なう。受信時の場合、CPU110は、まず、復号データを一時保存するためのRAM120の書き込みアドレスを参照する(S1111)。次に、CPU110は、OUTPUT_FIFO_rdy信号がHレベルで出力されているかを判定する。この処理は、OUTPUT_FIFO740が読み出し可能であるかを判定するために行なう。OUTPUT_FIFO_rdy信号がHレベルでなければ(S1112でNO)、CPU110は、Hレベルになるまで待機する。Hレベルであれば(S1112でYES)、CPU110は、OUTPUT_FIFO_oe信号をHレベルで出力する(S1113)。これにより、CPU110は、OUTPUT_FIFO740から復号データを読み出し、その読み出した復号データをRAM120に書き込む(S1114)。その後、再度、S1101の処理に戻る。
ここで、図13を用いて、図1に示す通信装置100による送信時のメッセージシーケンスチャートの一例を示す。
CPU110は、通信装置100全体を送信モード(Tx mode)に設定し(S1201)、Tx_mode信号をHレベルでMAC210に出力する(S1202)。これを受けたMAC210は、TX_ON信号をHレベルでBBP220及びRF230に出力する(S1203)。
また、CPU110は、Error_information_request信号をHレベルで出力する(S1204)。これにより、MAC210にエラー情報を要求する。MAC210は、エラー情報として内部レジスタreg_e701の値をCPU110に返送する(S1205)。すると、CPU110は、エラー情報の内容を解析し、その後の処理を切替える。ここでは、まず、復号データのエラーがエラー閾値を下回っている場合について説明する(S1210)。この場合、MAC210は、INPUT_FIFO_rdy信号をHレベルでCPU110に出力する(S1211)。これにより、MAC210は、INPUT FIFO750に書き込みが行える状態であることをCPU110に通知する。
CPU110は、復号データをMAC210に送信する(S1212)。MAC210は、復号データにCRCを付加し(S1213)、BBP220に転送する(S1214)。BBP220は、Encoder410において、その復号データ(未符号化PSDU)を再符号化するとともに、OFDM mod411において、再変調する(S1215)。そして、BBP220は、Preamble inserter602において、再変調信号にPreambleを付加する(S1216)。このようにして再変調信号が生成されると、BBP220は、DAC413において、BB_RF_OUT(再変調信号)をアナログ変調信号としてRF230に向けて出力する(S1217)。RF230は、RF_out信号をアンテナ240へ出力することで無線チャネル上に送信する(S1218)。
次に、復号データのエラーがエラー閾値を上回っていた場合について説明する(S1220)。すなわち、CPU110が、エラー情報の内容を解析して、復号データのエラーが閾値を上回っていると判定した場合の処理である。
CPU110は、まず、Sync_rx_signal_request信号をHレベルでMAC210へ出力する(S1221)。すると、MAC210は、BBP220へRepeat_ctrl信号をHレベルで出力する(S1222)。また、MAC210は、BBP220へRx signal memory405のリードアドレス開始値であるRead_addr値を通知する(S1223)。これにより、BBP220は、Sync_rx_signal信号を読み出す(S1224)。そして、BBP220は、乗算器406おいて、Sync_rx_signal信号のPreamble部分と、Preamble_compensation信号とを乗算する。これにより、Sync_rx_signal信号のPreamble部分の信号強度を補正する(S1225)。その後、BBP220は、DAC413において、補正後のSync_rx_signal信号(再変調信号)をアナログ変調信号としてRF230に向けて出力する(S1226)。RF230は、RF_out信号をアンテナ240へ出力することで無線チャネル上に送信する(S1227)。
次に、図14を用いて、図1に示す通信装置100による受信時のメッセージシーケンスチャートの一例を示す。
CPU110は、通信装置100全体を受信モード(Rx mode)に設定し(S1301)、Tx_mode信号をLレベルにしてMAC210に出力する(S1302)。これを受けたMAC210は、TX_ON信号をLレベルでBBP及びRF230に出力する(S1303)。MAC210は、Rx signal memory405のライトアドレス開始値であるWrite_addr値をBBP220に通知した後、RF信号の受信待ちとなる(S1304)。
ここで、アンテナ240において、無線チャネル上での受信信号であるRx_in信号を受信すると、その信号がRF230に送信される(S1311)。すると、RF230は、RF_bb_out信号をBBP220に向けて出力する(S1312)。また、RF230は、RSSIと、HレベルのRx_detect信号とをBBP220に向けて出力する(S1313、S1314)。BBP220は、Rx_detect信号をMAC210に向けて出力する。
BBP220は、ADC401において、受信したRF_bb_out信号をデジタル信号に変換した後、AFC501において、周波数及び位相調整されたSync_rx_signal信号を出力する(S1321)。また、BBP220は、Sync_rx_signal信号をRx_signal_memory405にライトする(S1322)。更に、BBP220は、Sync_rx_signal信号をOFDM復調し(S1323)、Decoder404において、OFDM復調により得られた復調信号を復号する。これにより、復号データを生成する(S1324)。
BBP220は、復号データ(すなわち、PSDU)をMAC210に出力し(S1325)、復号データにエラーが検出されたか否かを示すError_detect信号をMAC210に出力する(S1326)。これを受けたMAC210は、復号データのCRCチェックを行ない(S1331)、S1326の通知結果との論理和を内部レジスタreg_e701に書き込む(S1332)。例えば、データにエラーがある場合、BBP220からMAC210に向けてError_detect信号が出力され、MAC210は、内部レジスタreg_e701にそのエラー情報を記憶することになる。MAC210は、復号データ(PSDU)からCRCを取り除いた後(S1333)、そのデータをCPU110に出力する(S1334)。
(実施形態2)
次に、実施形態2について説明する。なお、実施形態2に係わる全体構成や装置構成、は、実施形態1を説明した図1及び図2と同様であるため、その説明については省略し、ここでは、相違する点を重点的に説明する。なお、実施形態2に係わるパケットフレームフォーマットも、実施形態1同様(図3参照)となる。
まず、図15を用いて、実施形態2に係わるBBP220の構成の一例について説明する。実施形態1を説明した図5との相違点としては、OFDM demod4020がSNR(Signal to Noise ratio)測定機能を備える点である。図15においては、それに伴ってSNR_measure_req信号及びSNR信号が追加されている。なお、SNRとは、信号に対する雑音比を示す。
次に、図16を用いて、実施形態2に係わるOFDM demod4020の構成の一例について説明する。実施形態1を説明した図6との相違点としては、PGC5110がSNR測定機能を備えている点である。図16においては、それに伴ってSNR_measure_req信号、SNR信号、Sync_rx_signal信号が追加されている。
PGC5110は、実施形態1に加えて、SNR測定用の内部レジスタとして、reg_n521、reg_s522、reg_sn523を具備し、更に、信号電力計測用のタイマとして、power measure timer524を具備する。
次に、図17を用いて、実施形態2に係わるMAC210の構成の一例について説明する。実施形態1を説明した図8との相違点としては、RC7000がSNR測定要求及び測定値の取得を行なう点である。図17においては、それに伴ってSNR_measure_req信号、SNR信号、SNR_request信号、SNR_resp信号が追加されている。
RC7000は、実施形態1に加えて、SNR一次保存用の内部レジスタとして、reg_sn_rc711を具備し、SNR測定用のタイマとして、SNR measure timer712を具備する。
図18は、実施形態2に係わるPGC5110の動作の一例を示すフローチャートである。ここでは、SNRを測定する時の動作について説明する。
PGC5110は、MAC210からSNR_measure_req信号が入力されるまで待機している(S1901でNO)。SNR_measure_req信号がHレベルで入力されると(S1901でYES)、PGC5110は、Rx_detect信号の入力レベルを判定する(S1902)。
この結果、Rx_detect信号がHレベルであれば(S1902でYES)、PGC5110は、S1911の処理に進み、信号電力の測定を行なう。S1911〜S1918の処理は、受信信号が入力されている時の信号電力の計測ステップである。
信号電力の測定が開始すると、PGC5110は、reg_p512及びreg_s521の値をクリアする(S1911)。PGC5110は、power measure timer524に受信信号計測時間を設定し(S1912)、power measure timer524の動作を開始する(S1913)。
PGC5110は、AFC501からの信号出力であるSync_rx_signal信号を取り込んで(S1914)、その二乗値をreg_p512に書き込み(S1915)、reg_p512の値をreg_s521に加算する(S1916)。タイマ設定時間中は、S1914〜S1916の処理を繰り返し実行する(S1917でNO)。タイマ設定時間が経過すれば(S1917でYES)、PGC5110は、power measure timer524の動作を終了する(S1918)。
また、S1902において、Rx_detect信号がLレベルであった場合(S1902でNO)、PGC5110は、雑音電力の測定を行なう。S1921〜S1928の処理は、雑音電力の計測ステップである。
雑音電力の測定が開始すると、PGC5110は、reg_q513及びreg_n522の値をクリアする(S1921)。PGC5110は、power measure timer524にノイズ信号計測時間を設定し(S1922)、power measure timer524の動作を開始する(S1923)。
PGC5110は、AFC501からの信号出力であるSync_rx_signal信号を取り込んで(S1924)、その二乗値をreg_q513に書き込み(S1925)、reg_q513の値をreg_n522に加算する(S1926)。タイマ設定時間中は、S1924〜S1926の処理を繰り返し実行する(S1927でNO)。タイマ設定時間が経過すれば(S1927でYES)、PGC5110は、power measure timer524の動作を終了する(S1928)。
その後、PGC5110は、reg_s521とreg_n522に保存されている値を用いてreg_sn523に信号雑音電力比(SNR)を書き込み(S1930)、reg_sn523の値をSNR信号として出力する(S1931)。
次に、図19を用いて、実施形態2に係わるRC7000の動作の一例について説明する。ここでは、SNRを測定する時の動作について説明する。
RC7000は、SNR_request信号がHレベルで入力されているか否かを判定する。SNR_request信号は、CPU110から出力され、SNR測定を要求する信号である。SNR_request信号がHレベルであれば(S2001でYES)、RC7000は、SNR_measure_req信号をHレベルで出力する(S2002)。
RC7000は、SNR measure timer712にSNR計測時間を設定し(S2003)、SNR measure timer712の動作を開始する(S2004)。RC7000は、BBP220からの信号出力であるSNRの値をreg_sn_rc711に書き込む(S2005)。タイマ設定時間中は、S2005の処理を繰り返し実行する(S2006でNO)。タイマ設定時間が経過していれば(S2006でYES)、RC7000は、SNR measure timer712の動作を終了する(S2007)。
次に、図20を用いて、実施形態2に係わるCPU110の動作の一例について説明する。
CPU110は、まず、送信モードであるか否かの判定を行なう。送信モードであれば(S2101でYES)、CPU110は、SNR_request信号をHレベルでRC7000に入力する(S2102)。そして、SNRとしてRC7000の内部レジスタ値reg_sn_rc711を読み出す(S2103)。
CPU110は、参照したSNRの値とSNRの閾値SNR_thとを比較する。この結果、SNRがSNR_thを下回っている場合には(S2104でYES)、CPU110は、復号データを再符号化せずに、S2109の処理に進む。S2109の処理に進むと、CPU110は、Sync_rx_signal_request信号をHレベルでRC7000に出力する。これは、Rx signal memory405に保存されているSync_rx_signal信号(復調信号)を再送するためである。そして、再度、S2101の処理に戻る。
また、S2104において、SNRがSNR_thを上回っている場合には(S2104でNO)、CPU110は、復号データが保存されているRAM120の読み出しアドレスを参照する(S2105)。ここで、CPU110は、INPUT_FIFO_rdy信号がHレベルで出力されているか否かを判定する。この処理は、INPUT_FIFO750が書き込み許可状態であるか否かを判定するために行なう。
この結果、INPUT_FIFO_rdy信号がHレベルでなければ(S2106でNO)、CPU110は、Hレベルになるまで待機する。Hレベルであれば(S2106でYES)、CPU110は、RAM120から復号データを読み出し(S2107)、INPUT FIFO750に書き込む(S2108)。その後、再度、S2101の処理に戻る。
また、ステップS2101において、送信モードでなかった場合(S2101でNO)、CPU110は、受信時の動作を行なう。受信時の場合、CPU110は、まず、復号データを一次保存するためのRAM120の書き込みアドレスを参照する(S2111)。次に、CPU110は、OUTPUT_FIFO_rdy信号がHレベルで出力されているかを判定する。この処理は、OUTPUT_FIFO740が読み出し可能であるかを判定するために行なう。OUTPUT_FIFO_rdy信号がHレベルでなければ(S2112でNO)、CPU110は、Hレベルになるまで待機する。Hレベルであれば(S2112でYES)、CPU110は、OUTPUT_FIFO_oe信号をHレベルで出力する(S2113)。これにより、CPU110は、OUTPUT_FIFO740から復号データを読み出し、その読み出した復号データをRAM120に書き込む(S2114)。その後、再度、S2101の処理に戻る。
次に、図21を用いて、実施形態2に係わる通信装置100においてSNRを測定する時のメッセージシーケンスチャートの一例を示す。
CPU110は、SNR_req信号をHレベルで出力する(S2201)。すると、MAC210は、SNR_measure_req信号をHレベルで出力する(S2211)。ここで、RF230からBBP220に向けてLレベルのRx_detect信号が出力されると(S2241)、BBP220は、PGC5110において、雑音電力を測定する(S2231)。
また、アンテナ240において、無線チャネル上での受信信号であるRx_in信号を受信すると、その信号がRF230に送信される(S2251)。すると、RF230は、RF_bb_out信号を出力するとともに(S2242)、Rx_detect信号をHレベルで出力する(S2243)。
BBP220は、PGC5110において、信号電力を測定し(S2261)、SNRを算出し(S2262)、SNR値をSNR信号として出力する(S2263)。MAC210は、SNR値をCPU110に通知する(S2271)。この通知は、RC7000の内部レジスタreg_sn_rc711に保存されているSNR値をSNR_resp信号として出力することで行なわれる。
次に、図22を用いて、実施形態2に係わる通信装置100による送信時のメッセージシーケンスチャートの一例を示す。なお、受信時のメッセージシーケンスチャートは、実施形態1を説明した図14と同様であるため、その説明については省略する。
CPU110は、図21で説明した処理によりSNR値を得る(S2300)。CPU110は、通信装置100全体を送信モード(Tx mode)に設定し(S2301)、Tx_mode信号をHレベルでMAC210に送信する(S2302)。これを受けたMAC210は、TX_ON信号をHレベルでBBP220及びRF230に出力する(S2303)。
ここで、CPU110は、SNRの値を解析し、その後の処理を切替える。ここでは、まず、雑音電力が少なかった(SNR値が閾値SNR_thを下回っている)場合について説明する(S2310)。この場合、MAC210は、INPUT_FIFO_rdy信号をHレベルでCPU110に出力する(S2311)。これにより、MAC210は、INPUT FIFO750に書き込みが行える状態であることをCPU110に通知する。
CPU110は、復号データをMAC210に出力する(S2312)。MAC210は、復号データにCRCを付加し(S2313)、BBP220に転送する(S2314)。BBP220は、Encoder410において、その復号データ(未符号化PSDU)を再符号化するとともに、OFDM mod411において、再変調する(S2315)。そして、BBP220は、Preamble inserter602において、再変調信号にPreambleを付加する(S2316)。このようにして再変調信号が生成されると、BBP220は、DAC413において、BB_RF_OUT(再変調信号)をアナログ変調信号としてRF230に向けて出力する(S2317)。RF230は、RF_out信号をアンテナ240へ出力することで無線チャネル上に送信する(S2318)。
次に、SNR値が閾値SNR_thを上回っていた場合について説明する(S2320)。すなわち、CPU110が、SNRの値を解析して、雑音電力が大きいと判定した場合の処理である。
CPU110は、まず、Sync_rx_signal_request信号をHレベルでMAC210へ出力する(S2321)。すると、MAC210は、BBP220へRepeat_ctrl信号をHレベルで出力する(S2322)。また、MAC210は、BBP220へRx signal memory405のリードアドレス開始値であるRead_addr値を通知する(S2323)。これにより、BBP220は、Sync_rx_signal信号を読み出す(S2324)。そして、BBP220は、乗算器406おいて、Sync_rx_signal信号のPreamble部分と、Preamble_compensation信号とを乗算する。これにより、Sync_rx_signal信号のPreamble部分の信号強度を補正する(S2325)。その後、BBP220は、DAC413において、補正後のSync_rx_signal信号(再変調信号)をアナログ変調信号としてRF230に向けて出力する(S2326)。RF230は、RF_out信号をアンテナ240へ出力することで無線チャネル上に送信する(S2327)。
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
なお、本発明は、例えば、システム、装置、方法、プログラム若しくは記録媒体等としての実施態様を採ることもできる。具体的には、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。
また、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置に内蔵されたコンピュータが該供給されたプログラムコードを読み出して実行することにより実施形態の機能が達成される場合をも含む。この場合、供給されるプログラムは実施形態で図に示したフローチャート及びシーケンスチャートに対応したコンピュータプログラムである。
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OS(Operating System)に供給するスクリプトデータ等の形態であってもよい。
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記録媒体としては以下が挙げられる。例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などである。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのウェブページに接続し、該ウェブページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるウェブページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれる。
また、本発明のプログラムを暗号化してCD−ROM等の記録媒体に格納してユーザに配布するという形態を採ることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してウェブページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどとの協働で実施形態の機能が実現されてもよい。この場合、OSなどが、実際の処理の一部或いは全部を行ない、その処理によって前述した実施形態の機能が実現される。
更に、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU(Central Processing Unit)などが実際の処理の一部又は全部を行なう。