(第1の実施形態)
図1(A)は、無線LAN規格IEEE802.11aの送信機の構成例を示す。入力データは、順に、スクランブラ101、畳み込みエンコーダ102、インターリーブ処理回路103、変調回路104、逆FFT回路105、D/A変換回路106及びRF回路107を介して、無線で送信信号として送信される。スクランブラ101は、同じビットが入力されることによって、特定の周波数に電力が集中することを防ぐためにスクランブル処理を行う。畳み込みエンコーダ102は、誤り訂正(ビタビデコード)のための冗長符号化を行う。インターリーブ処理回路103は、ビタビデコードが送信時のバースト(連続)誤りに弱く、ランダム誤りに強い特性があるため、予め送信ビットを規則に沿って並び替える。変調回路104は、入力データに基づいて変調する。逆FFT回路105は、変調されたデータを逆高速フーリエ変換する。D/A変換回路106は、デジタル形式からアナログ形式に信号を変換する。RF回路107は、無線周波数の信号に変換する。
図1(B)は、無線LAN規格IEEE802.11aの受信機の構成例を示す。無線で受信した信号は、順に、RF回路111、A/D変換回路112、同期処理回路113、FFT回路114、復調回路115、デインターリーブ処理回路116、ビタビデコーダ117及びデスクランブラ118を介して、データとして出力される。RF回路111は、無線周波数の信号を所定周波数の信号に変換する。A/D変換回路112は、アナログ形式からデジタル形式に信号を変換する。同期処理回路113は、マッチトフィルタを含み、フレームの先頭位置として開始(同期)ポイントを検出する。FFT回路114は、高速フーリエ変換する。復調回路115は、変調信号とタイミング同期をとった上で復調する。デインターリーブ処理回路116は、ビット順序をインターリーブする前の並びに戻す。ビタビデコーダ117は、畳み込み符号化された冗長ビットから送信ビットを復号する。デスクランブラ118は、スクランブルされたデータを元に戻す。
図2(A)は、無線LAN規格IEEE802.11bの送信機の構成例を示す。入力データは、順に、CRCビット付加処理回路201、スクランブラ202、変調回路203、拡散回路204及び送信回路205を介して、無線で送信信号として送信される。拡散符号発生回路206は、拡散符号を生成して拡散回路204に出力する。CRCビット付加処理回路201は、データの誤り判定用のCRCビットを付加する。CRCビットは、データに基づき決定される。そして、送信機は、伝送データを多項式とみなし、これをあらかじめ決められた生成多項式で除算したときの余りを検査用の符号として伝送データに付加する。受信機は、受信データを生成多項式で除算し、割り切れるか否かで誤りの有無を判断する。拡散回路204は、変調信号をスペクトラム拡散する。送信回路205は、D/A変換回路及びRF回路を含む。
図2(B)は、無線LAN規格IEEE802.11bの受信機の構成例を示す。無線で受信した信号は、順に、受信回路211、逆拡散回路212、復調回路213、CRC処理回路214及びデスクランブラ215を介して、データとして出力される。拡散符号発生回路216は、拡散符号を生成して逆拡散回路212に出力する。受信回路211は、RF回路及びA/D変換回路を含む。逆拡散回路212は、拡散符号と同じ符号を受信信号に乗算することにより、受信信号が逆拡散され、拡散前の信号を復元する。CRC処理回路214は、CRCビットを算出して誤りの有無をチェックする。
図3は、無線LAN規格IEEE802.11aのスクランブラ101(図1(A))の構成例を示す。例えば7個のフリップフロップFF1〜FF7が直列に接続される。排他的論理和(以下、EORという)回路302は、フリップフロップFF4及びFF7の出力信号のEOR演算を行って出力する。フリップフロップFF1は、EOR回路302の出力信号を入力する。EOR回路301は、入力信号INPUT及びEOR回路302の出力信号のEOR演算を行い、それを出力信号OUTPUTとして出力する。図1(B)のデスクランブラ118も、図3のスクランブラと同一の構成である。初期値が同じで、同期していれば、同じ符号を出力信号OUTPUTとして出力できるからである。フリップフロップの内部状態と入力信号INPUTとの相関はない。
図4は、無線LAN規格IEEE802.11bのスクランブラ202(図2(A))の構成例を示す。例えば7個のフリップフロップFF1〜FF7が直列に接続される。EOR回路402は、フリップフロップFF4及びFF7の出力信号のEOR演算を行って出力する。EOR回路401は、入力信号INPUT及びEOR回路402の出力信号のEOR演算を行い、出力信号OUTPUTとして出力すると共に、フリップフロップFF1に出力する。
図5は、無線LAN規格IEEE802.11bのデスクランブラ215(図2(B))の構成例を示す。例えば7個のフリップフロップFF1〜FF7が直列に接続される。フリップフロップFF1は、入力信号INPUTを入力する。EOR回路502は、フリップフロップFF4及びFF7の出力信号のEOR演算を行って出力する。EOR回路501は、入力信号INPUT及びEOR回路502の出力信号のEOR演算を行い、出力信号OUTPUTとして出力する。
IEEE802.11bでは、図4のスクランブラと図5のデスクランブラの構成が異なる。フリップフロップの数は、両者とも7個で同じである。図4のスクランブラは、フリップフロップの初期値が同じでも、入力信号INPUTのビット列が異なれば、異なる出力信号(符号)OUTPUTを出力する。入力信号INPUTとフリップフロップの内部状態とは相関がある。受信機のデクランブラで、送信機のスクランブラの入力信号INPUTを復元するには、送信機のスクランブラのフリップフロップの内部状態を受信機(デスクランブラ)でも再現したうえで、その受信機(デスクランブラ)のフリップフロップ出力と送信機(スクランブラ)の出力信号OUTPUT(図5のデスクランブラの入力信号INPUT)のEORをとればよい。これを実現したのが、図5のデスクランブラである。図5では、入力信号INPUTをそのままフリップフロップFF1に入力することにより図4のスクランブラのフリップフロップの内部状態を再現している。
図6は、本発明の第1の実施形態による準固定回路の構成例を示す。この準固定回路は、図3の無線LAN規格IEEE802.11aのスクランブラ(デスクランブラ)、図4の無線LAN規格IEEE802.11bのスクランブラ、及び図5の無線LAN規格IEEE802.11bのデスクランブラの動作が可能である。
J個のフリップフロップFF1〜FFJが直列に接続される。各フリップフロップの間の接続線には、それぞれ中段EOR回路602が接続される。図9に示すように、中段EOR回路602は、フリップフロップの出力信号A1及び前隣の中段EOR回路602の出力信号(フィードバック信号)A3を入力する。EOR回路901は、信号A1及びA3のEOR演算を行って信号A2として出力する。セレクタ902は、選択信号SELECTに応じて、信号A1、A2又はA3を択一的に選択して、後隣の中段EOR回路602に出力する。例えば、図3のEOR回路302、図4のEOR回路402及び図5のEOR回路502に相当する中段EOR回路602では、セレクタ902は信号A2を選択して出力する。また、最終段フリップフロップFF7に接続される中段EOR回路602では、セレクタ902は信号A1を選択して出力する。その他の中段EOR回路602では、セレクタ902はフィードバック信号A3を選択して出力する。
フリップフロップFF1及びFF2間に接続される中段EOR回路602の出力信号(フィードバック信号)FBは、入力EOR回路601に入力される。図8に示すように、入力EOR回路601は、フィードバック信号FB及び入力信号INPUTを入力する。EOR回路801は、フィードバック信号FB及び入力信号INPUTのEOR演算を行い、信号A2を出力する。フィードバック信号FBを信号A1とし、入力信号INPUTを信号A3とすると、セレクタ802は、選択信号SELECTに応じて、信号A1、A2又はA3を択一的に選択して、フリップフロップFF1に出力する。また、信号A2は、出力信号OUTPUTになる。図3の場合、セレクタ802は、信号A1を選択する。図4の場合、セレクタ802は、信号A2を選択する。図5の場合、セレクタ802は、信号A3を選択する。
図6において、イネーブル信号ENABLEは、フリップフロップFF1〜FFJをイネーブル状態にするか否かを制御するための信号である。例えば、フリップフロップFF1〜FF7のみがイネーブル状態になる。初期値信号LOADは、フリップフロップFF1〜FFJに初期値を設定するための信号である。以上のように、選択信号SELECTに応じて、入力EOR回路601及び中段EOR回路602の選択状態を制御することにより、図3〜図5のスクランブラ及びデスクランブラを択一的に選択して動作させることができる。
固定回路のスクランブラは、シフトレジスタ長、EOR回路に入力されるタップ位置、EOR回路に入力されるタップ数といったパラメータに依存したハードウエアの構造であり、それらのパラメータが変わるとこれとは別にハードウエアを用意しなければならないという問題があった。本実施形態の準固定回路によれば、入力EOR回路601及び中段EOR回路602を設けることにより、図3〜図5の3つのスクランブラ又はデスクランブラを含め、1つの準固定回路で種々のスクランブラ及びデスクランブラの動作を可能にすることができる。
(第2の実施形態)
図7は、本発明の第2の実施形態による準固定回路の構成例を示す。この準固定回路は、図6の準固定回路に、デコーダ701を追加したものである。デコーダ701は、L+1ビットの選択信号SELECTを基に、2L+2ビットの信号を出力し、L個の中段EOR回路602及び1個の入力EOR回路601の選択状態を制御する。
本来、L個の中段EOR回路602及び1個の入力EOR回路601を制御するためには、2L+2ビットの選択信号SELECTが必要であるが、全パターン数のうち使用するフリップフロップ及び中段EOR回路602と、使用しないフリップフロップ及び中段EOR回路602とにグループ分けして使用しないグループ内の設定の組み合わせパターンを全パターン数から引いて数えた結果、(2の(L−1)乗)×3通りのパターンであることを利用して、選択信号SELECTをL+1ビットとすることができる。
以上のように、デコーダ701は、ビット数が少ない入力信号SELECTをデコードしてビット数が多い出力信号を出力し、中段EOR回路602及び入力EOR回路601を選択する。デコーダ701を用いることにより、選択信号の量を減らすことができる。
(第3の実施形態)
図10は、CRCビット付加処理回路201(図2(A))及びCRC処理回路214(図2(B))内のCRC回路の構成例を示す。EOR回路1001は、入力信号IN及び最後段のフリップフロップFFからのフィードバック信号のEORを演算し、初段のフリップフロップFFに出力する。例えば4個のフリップフロップFFがそれぞれEOR回路1002を介して直列に接続される。各EOR回路1002は、EOR回路1001の出力信号及び前段のフリップフリップFFの出力信号のEORを演算し、後段のフリップフロップFFに出力する。各フリップフロップFFの出力信号が、それぞれ出力信号OUT0,OUT1,OUT2,OUT3になる。
図10のCRC回路は、簡単化のため、4タップですべてのフリップフロップ間にEOR回路を挿入した例を説明したが、実際のCRC回路の構成ではタップ数は例えばIEEE802.11bは16であり、EOR回路1002はフリップフロップFF間に飛び飛びに挿入されるものである。
図11は、本発明の第3の実施形態による準固定回路の構成例を示す。この準固定回路は、第1の実施形態の準固定回路(図6)に、図10のCRC回路の機能を付加した回路である。本実施形態の準固定回路は、基本的に第1の実施形態の準固定回路と同じであるので、第1の実施形態と異なる点のみ説明する。なお、フリップフロップ回路1101の数に相当するタップ数Iは16を基本とする。
複数のフリップフロップ回路1101は、図6と異なり、それぞれ図12の構成を有する。EOR回路1201は、入力EOR回路601からの入力データ及び前段のフリップフロップの出力信号A2のEORを演算し、信号A1を出力する。セレクタ1203は、選択信号FF_SELECTに応じて、信号A1又はA2を選択してフリップフロップ1204に出力する。フリップフロップ1204は、セレクタ1203の出力信号を入力し、出力する。
図10のCRC回路を実現するためには、セレクタ1203は信号A1を選択して出力すればよい。図6の回路を実現するためには、セレクタ1203は信号A2を選択して出力すればよい。
また、図10のCRC回路において、出力信号OUT0〜OUT3をそのまま出力する場合と、それらの出力を反転して出力する場合がある。そのため、図11において、EOR回路1102,1103が付加されている。反転信号INV_OUTが1のときには反転出力となり、0のときには非反転出力となる。EOR回路1103は、入力EOR回路601の出力信号及び反転信号INV_OUTのEORを演算し、出力する。複数のEOR回路1102は、それぞれ、各フリップフロップ1101の出力信号及び反転信号INV_OUTのEORを演算し、出力する。
固定回路のCRC回路等は、パラメータに依存したハードウエアの構造であり、それらのパラメータが変わるとこれとは別にハードウエアを用意しなければならないという問題があった。本実施形態によれば、1つの準固定回路で任意の構成のスクランブラ及び任意の構成のCRC回路を実現できる。
(第4の実施形態)
図13は、IEEE802.11aの符号化率1/2畳み込みエンコーダ102(図1(A))の構成例を示す。例えば6個のフリップフロップFF1〜FF6が直列に接続される。入力信号INPUTは、初段のフリップフロップFF1に入力される。EOR回路1301は、入力信号INPUT、フリップフロップFF2,FF3,FF5,FF6の出力信号のEORを演算し、出力信号OUTPUT1を出力する。EOR回路1302は、入力信号INPUT、フリップフロップFF1,FF2,FF3,FF6の出力信号のEORを演算し、出力信号OUTPUT2を出力する。
図14は、本発明の第4の実施形態による準固定回路の構成例を示す。この準固定回路は、第3の実施形態の準固定回路(図11)に、図13の畳み込みエンコーダの機能を付加した回路である。本実施形態の準固定回路は、基本的に第3の実施形態の準固定回路と同じであるので、第3の実施形態と異なる点のみ説明する。
第3の実施形態では中段EOR回路602をフリップフロップ1101の下段のみに設けたが、第4の実施形態では中段EOR回路602をフリップフロップ1101の下段と同様に上段にも設ける。上段の中段EOR回路602は、図13のEOR回路1301に相当する。下段の中段EOR回路602は、図13のEOR回路1302に相当する。
入力EOR回路1401は、図11の入力EOR回路601の代わりに設けられ、図15の構成を有する。入力EOR回路1401には、入力信号INPUT、上段の中段EOR回路602からのフィードバック信号FB1、及び下段の中段EOR回路602からのフィードバック信号FB2が入力される。フィードバック信号FB1は信号A1、入力信号INPUTは信号A3、フィードバック信号FB2は信号A5としてセレクタ1503に入力される。
EOR回路1501は、フィードバック信号FB1及び入力信号INPUTのEORを演算し、信号A2を出力する。信号A2は、出力信号OUTPUT1として出力される。EOR回路1502は、フィードバック信号FB2及び入力信号INPUTのEORを演算し、信号A4を出力する。信号A4は、出力信号OUTPUT2として出力される。図14のデコーダ1402は、図7のデコーダ701と同様に、選択信号SELECTをデコードして選択信号を出力する。セレクタ1503は、デコーダ1402の出力信号に応じて、信号A1〜A5の中から択一的に選択し、初段のフリップフロップFF1に出力する。図13の畳み込みデコーダを実現するためには、デコーダ1503は、信号A3を選択して出力すればよい。
固定回路の畳み込みエンコーダ等は、パラメータに依存したハードウエアの構造であり、それらのパラメータが変わるとこれとは別にハードウエアを用意しなければならないという問題があった。本実施形態によれば、1つの準固定回路で任意の構成のスクランブラ、任意の構成のCRC回路、及び任意の構成の畳み込みエンコーダを実現できる。
(第5の実施形態)
図16は、W−CDMA規格の線形帰還シフトレジスタ(LFSR)の構成例を示す。線形帰還シフトレジスタは、W−CDMA規格での拡散符号発生回路に用いられている。W−CDMA規格の拡散符号発生回路の位置は、図2(A)、(B)のIEEE802.11bの拡散符号発生回路206,216と同様である。線型帰還シフトレジスタは、入力データを取り込まず、フリップフロップに初期設定された値に基づき再現性のあるビット演算処理をシフト操作する。
線形帰還シフトレジスタ(以下、LFSRという)は、第1の回路1611及び第2の回路1612を有する。まず、第1の回路1611について説明する。複数のフリップフロップFFが直列に接続されている。EOR回路1604は、最後段(左端)のフリップフロップFF及びその他のフリップフロップFFの信号のEORを演算し、最初段(右端)のフリップフロップFFにフィードバックして入力する。EOR回路1603は、3個のフリップフロップFFの信号のEORを演算し、出力する。
次に、第2の回路1612について説明する。複数のフリップフロップFFが直列に接続されている。EOR回路1606は、4個のフリップフロップFFの信号のEORを演算し、最初段(右端)のフリップフロップFFにフィードバックして入力する。EOR回路1605は、3個のフリップフロップFFの信号のEORを演算し、出力する。
EOR回路1601は、第1の回路1611及び第2の回路1612の最後段のフリップフロップFFの出力信号のEORを演算し、出力信号OUTPUT1を出力する。EOR回路1602は、EOR回路1603及び1605の出力信号のEORを演算し、出力信号OUTPUT2を出力する。
図17は、本発明の第5の実施形態による準固定回路の構成例を示す。この準固定回路は、第4の実施形態の準固定回路(図14)に、図16のLFSRの機能を付加した回路である。本実施形態の準固定回路が第4の実施形態と異なる点のみ説明する。
本実施形態の準固定回路は、第1の回路1711及び第2の回路1712を有する。第1の回路1711及び第2の回路1712は、それぞれ図16の第1の回路1611及び第2の回路1612に相当し、それぞれが図14の回路に相当する。
入力EOR回路1701は、図14の入力EOR回路1401の代わりに設けられ、図18の構成を有する。入力信号1725及び1726は、任意のフリップフロップ1101の出力から、今回構成するLFSRの段数に応じて最後段となるフリップフロップ1101の出力を選択した信号である。入力信号1721及び1722は、上段の中段EOR回路602の出力信号である。入力信号INPUT1及びINPUT2は、図16のLFSRでは使用せず、上記の第4の実施形態の入力信号INPUTに相当する。入力信号1723及び1724は、下段の中段EOR回路602の出力信号である。
EOR回路1801は、信号1721,1722及び入力信号INPUT1,INPUT2のEORを演算して出力する。EOR回路1802は、信号1723,1724及び入力信号INPUT1,INPUT2のEORを演算して出力する。
図17において、デコーダ1702は、選択信号SELECTをデコードして選択信号を出力し、第1の回路1711の入力EOR回路1701及び中段EOR回路602の選択状態を制御する。デコーダ1703は、選択信号SELECTをデコードして選択信号を出力し、第2の回路1712の入力EOR回路1701及び中段EOR回路602の選択状態を制御する。
図18において、セレクタ1804は、選択信号に応じて、信号1725,1726、信号1721,1722、及びEOR回路1801の出力信号の中から信号を択一的に選択して出力信号1732,1733を出力する。セレクタ1805は、選択信号に応じて、信号1725,1726、信号1723,1724、及びEOR回路1802の出力信号の中から信号を択一的に選択して出力信号1734,1735を出力する。セレクタ1803は、選択信号に応じて、信号1721,1722、EOR回路1801の出力信号、入力信号INPUT1,INPUT2、EOR回路1802の出力信号、及び信号1723,1724の中から信号を択一的に選択して出力信号1731を最初段のフリップフロップFF1に出力する。
図17において、EOR回路1704は、信号1732及び1733のEORを演算し、出力信号OUTPUT1を出力する。EOR回路1705は、信号1734及び1735のEORを演算し、出力信号OUTPUT2を出力する。信号1733は出力信号OUTPUT3、信号1735は出力信号OUTPUT4として出力される。
図16のLFSRを実現するためには、第1の回路1711の入力EOR回路1701において、セレクタ1804は入力信号1725を選択して出力し、セレクタ1803は入力信号1721を選択して出力し、セレクタ1805は入力信号1723を選択して出力する。また、第2の回路1712の入力EOR回路1701においては、セレクタ1804は入力信号1726を選択して出力し、セレクタ1803は入力信号1722を選択して出力し、セレクタ1805は入力信号1724を選択して出力する。
準固定回路のLFSR等は、パラメータに依存したハードウエアの構造であり、それらのパラメータが変わるとこれとは別にハードウエアを用意しなければならないという問題があった。本実施形態によれば、1つの準固定回路で任意の構成のスクランブラ、任意の構成のCRC回路、任意の構成の畳み込みエンコーダ、任意の構成のLFSRを実現できる。
(第6の実施形態)
図22(A)は、本発明の第6の実施形態による準固定回路の構成例を示す。この準固定回路は、図10のCRC回路等の複数種類のCRC回路を選択的に実現することができ、かつ、図10のように1ビットずつシフトさせながら入力するのではなく、複数ビットを同時に入力して一度に数回シフト分を先見処理する。
例えば6ビットずつパラレルに入力信号IN[0]〜IN[5]を入力する。フリップフロップFF1〜FF4には、それぞれセレクタ2201〜2204の出力信号が入力される。このフリップフロップFF1〜FF4の出力信号OUT0〜OUT3は、シフト0回目に相当する初期設定値になる。複数のE回路2211は、それぞれ図22(B)の構成を有し、信号A1及び信号B1を入力する。EOR回路2231は、信号A1及びB1のEORを演算し、信号A2を出力する。セレクタ2232は、信号A1又はA2を選択して出力する。
データD00,D01,D02,D03は、シフト1回目に相当する出力信号である。データD10,D11,D12,D13は、シフト2回目に相当する出力信号である。データD20,D21,D22,D23は、シフト3回目に相当する出力信号である。データD30,D31,D32,D33は、シフト4回目に相当する出力信号である。データD40,D41,D42,D43は、シフト5回目に相当する出力信号である。データD50,D51,D52,D53は、シフト6回目に相当する出力信号である。
セレクタ2201は、データD00,D10,D20,D30,D40,D50の中からデータを択一的に選択してフリップフロップFF1に出力する。セレクタ2202は、データD01,D11,D21,D31,D41,D51の中からデータを択一的に選択してフリップフロップFF2に出力する。セレクタ2203は、データD02,D12,D22,D32,D42,D52の中からデータを択一的に選択してフリップフロップFF3に出力する。セレクタ2204は、データD03,D13,D23,D33,D43,D53の中からデータを択一的に選択してフリップフロップFF4に出力する。
この準固定回路は、1ビット〜6ビットのパラレル入力を選択することができる。例えば6ビットパラレル入力信号IN[0]〜IN[5]を入力する場合には、セレクタ2201〜2204は、データD50,D51,D52,D53を選択する。5ビットパラレル入力信号IN[0]〜IN[4]を入力する場合には、セレクタ2201〜2204は、データD40,D41,D42,D43を選択する。
E回路2211を設けることにより、図10のEOR回路1002が飛び飛びに挿入されるCRC回路を実現することが可能になる。E回路2211では、EOR回路を挿入する場合には信号A2を選択し、挿入しない場合には信号A1を選択すればよい。
ここでは、一度に出力できる最大の先見シフト数を6として構成している。このとき、同時にIN[0]からIN[5]まで6ビットを一度に入力する。すると、フリップフロップFF1〜FF4の初期設定時の出力信号OUT0〜OUT3が求められる。同時に、シフト回数1〜6までの出力Dtbが得られる。tは(シフト回数−1)を表し、bはビットの桁位置を表す。このとき、4つのセレクタ2201〜2204は、それぞれ上から6番目の入力を選択している。すなわち、左から順にD50,D51,D52,D53である。そうすれば、続く6ビットの入力によりシフト回数7〜12までの出力が得られる。もし、入力として5ビットを一度に入力する場合は、回路2222を使わない、つまり、回路2222が存在しないと考えて、入力データ5ビットを一度に取り込むという操作を行う。これを行うため、セレクタ2201〜2204は、上から5番目の入力データを選択して次の5ビット入力信号を入力する。
本実施形態にて、図 10の最右端のEOR回路1002が挿入されない構成に対応するには、図22(A)の回路2221の全てのE回路2211の設定で信号A1を選択すればよい。
なお、図22(A)の構成は、次式に示すように、図10から求められるシフト回数t−1とtとの関係から求められる。ここで、"x"はEORを意味する。
{OUT0[t], OUT1[t], OUT2[t], OUT3[t]}={OUT3[t-1]xIN[t-1],OUT3[t-1]xIN[t-1]xOUT0[t-1],OUT3[t-1]xIN[t-1]xOUT1[t-1],UT3[t-1]xIN[t-1]xOUT2[t-1] }
図10のCRC回路は、1ビット入力されると1ビット出力されるシリアルな処理であった。本実施形態では、1ビットシフトを繰り返すのではなく、前もって複数回分のシフト処理を行う回路を持たせることにより、一度に複数のCRC演算を行うことができる。
(第7の実施形態)
図19(A)は、第1のタイプのスクランブラ(デスクランブラを含む。以下、同じ。)の構成例である。EOR回路1901は、入力信号IN及びEOR回路1902の出力信号のEORを演算し、出力信号OUTを出力する。例えば4個のフリップフロップFF1〜FF4が直列に接続される。フリップフロップFF1には、EOR回路1901の出力信号が入力される。EOR回路1904は、フリップフロップFF3及びFF4の出力信号のEORを演算して出力する。EOR回路1903は、EOR回路1904の出力信号及びフリップフロップFF2の出力信号のEORを演算して出力する。EOR回路1902は、EOR回路1903の出力信号及びフリップフロップFF1の出力信号のEORを演算し、EOR回路1901に出力する。
図19(B)は、図19(A)のスクランブラの複数入力ビットを同時に入力して一度に数回シフト分を先見処理することができるスクランブラの構成例を示す。例えば6ビットずつ入力信号IN[0]〜IN[5]をパラレルに入力する。EOR回路1911は、EOR演算を行って出力する。フリップフロップFF1〜FF4には、それぞれ出力信号OUT[2]〜OUT[5]がフィードバック入力される。出力信号OUT[0]〜OUT[5]は、それぞれ1回目〜6回目のシフトに相当する出力信号である。
図20(A)は、第2のタイプのスクランブラの構成例である。EOR回路2001は、入力信号IN及びEOR回路2002の出力信号のEORを演算し、出力信号OUTを出力する。例えば4個のフリップフロップFF1〜FF4が直列に接続される。フリップフロップFF1には、EOR回路2002の出力信号が入力される。EOR回路2004は、フリップフロップFF3及びFF4の出力信号のEORを演算して出力する。EOR回路2003は、EOR回路2004の出力信号及びフリップフロップFF2の出力信号のEORを演算して出力する。EOR回路2002は、EOR回路2003の出力信号及びフリップフロップFF1の出力信号のEORを演算し、EOR回路2001及びフリップフロップFF1に出力する。
図20(B)は、図20(A)のスクランブラの複数入力ビットを同時に入力して一度に数回シフト分を先見処理することができるスクランブラの構成例を示す。例えば6ビットずつ入力信号IN[0]〜IN[5]をパラレルに入力する。EOR回路2011は、EOR演算を行って出力する。EOR回路2021は、入力信号IN[5]及び出力信号OUT[5]のEORを演算し、フリップフロップFF1に出力する。EOR回路2022は、入力信号IN[4]及び出力信号OUT[4]のEORを演算し、フリップフロップFF2に出力する。EOR回路2023は、入力信号IN[3]及び出力信号OUT[3]のEORを演算し、フリップフロップFF3に出力する。EOR回路2024は、入力信号IN[2]及び出力信号OUT[2]のEORを演算し、フリップフロップFF4に出力する。出力信号OUT[0]〜OUT[5]は、それぞれ1回目〜6回目のシフトに相当する出力信号である。
図21(A)は、第3のタイプのスクランブラの構成例である。EOR回路2101は、入力信号IN及びEOR回路2102の出力信号のEORを演算し、出力信号OUTを出力する。例えば4個のフリップフロップFF1〜FF4が直列に接続される。フリップフロップFF1には、入力信号INが入力される。EOR回路2104は、フリップフロップFF3及びFF4の出力信号のEORを演算して出力する。EOR回路2103は、EOR回路2104の出力信号及びフリップフロップFF2の出力信号のEORを演算して出力する。EOR回路2102は、EOR回路2103の出力信号及びフリップフロップFF1の出力信号のEORを演算し、EOR回路2101に出力する。
図21(B)は、図21(A)のスクランブラの複数入力ビットを同時に入力して一度に数回シフト分を先見処理することができるスクランブラの構成例を示す。例えば6ビットずつ入力信号IN[0]〜IN[5]をパラレルに入力する。EOR回路2111は、EOR演算を行って出力する。フリップフロップFF1〜FF4には、それぞれ入力信号IN[5]〜IN[2]が入力される。出力信号OUT[0]〜OUT[5]は、それぞれ1回目〜6回目のシフトに相当する出力信号である。
図23は、符号化率1/2の畳み込みエンコーダの構成例を示す。例えば4個のフリップフロップFF1〜FF4が直列に接続される。入力信号INは、初段のフリップフロップFF1に入力される。EOR回路2301は、入力信号INPUT及びフリップフロップFF1〜FF4の出力信号のEORを演算し、出力信号OUT1を出力する。EOR回路2302は、入力信号INPUT及びフリップフロップFF1〜FF4の出力信号のEORを演算し、出力信号OUT2を出力する。この畳み込みエンコーダの動作は、入力のデータ1ビットずつをシフトインして2ビットを出力するものである。
図24は、図23の畳み込みエンコーダを1シフトにつきNビット同時処理することができる畳み込みエンコーダの準固定回路の構成例を示す。第1の畳み込み演算器2401は、図23の演算器2311に相当し、Nビットの入力信号を入力し、Nビットの出力信号OUT1を出力する。演算器2311は、フリップフロップFF1〜FF4及びEOR回路2301を含む。第2の畳み込み演算器2402は、図23の演算器2312に相当し、Nビットの入力信号を入力し、Nビットの出力信号OUT2を出力する。演算器2312は、フリップフロップFF1〜FF4及びEOR回路2302を含む。また、図24の準固定回路は、図19(B)、図20(B)及び図21(B)のスクランブラを選択的に実現可能である。
図25は、図24の演算器2401及び2402の同一の構成例を示し、複数ビットを同時に入力して一度に数回シフト分を先見処理する。例えば6ビットずつパラレルに入力信号IN[0]〜IN[5]を入力する。フリップフロップFF1〜FF4には、それぞれセレクタ2501〜2504の出力信号が入力され、信号D0〜D3を出力する。E回路2521は、図22(B)の構成を有する。出力信号OUT[0]〜OUT[5]は、それぞれ1回目〜6回目のシフトに相当する出力信号である。フィードバック回路2522では、信号W0〜W5が出力される。
セレクタ2501は、信号W0,W1,W2,W3,W4,W5を択一的に選択してフリップフロップFF1に出力する。セレクタ2502は、信号D0,W0,W1,W2,W3,W4を択一的に選択してフリップフロップFF2に出力する。セレクタ2503は、信号D1,D0,W0,W1,W2,W3を択一的に選択してフリップフロップFF3に出力する。セレクタ2504は、信号D2,D1,D0,W0,W1,W2を択一的に選択してフリップフロップFF4に出力する。なお、フィードバック回路2522は、図23の畳み込みエンコーダを実現する場合には使用せず、図19(B)、図20(B)、図21(B)のスクランブラを実現する場合に使用する。
図23では、ある時刻である位置のフリップフロップに蓄積されたデータが1回シフトした後に持つ値は、単純に前段のフリップフロップが現在保持及び出力している値である。また、フリップフロップの個数以上のシフトを行った場合、そのときにフリップフロップの最終段がもつ、最も古い時刻でシフトインしたデータは消えて、新たに入力されたデータに置き換わる。そこで、各時刻においてフリップフロップが保持しているはずのデータ結果が得られるので、後はそのデータの存在するタップ位置でのEOR回路の配置にしたがいEOR演算、すなわち畳み込みエンコードを行う。
5個のセレクタ2511〜2515は、図23の畳み込みエンコーダの場合であればそれぞれ入力信号IN[0]〜IN[4]を選択する設定になる。各シフトタイミングとそのタイミングにおけるシフトイン、シフトアウトするビットの関係をみると、最初のシフトで畳み込み符号化率1/Mの場合、図24の畳み込み演算器2401,2402をM個並べることにより、入力信号INに対応する畳み込みエンコードを1回のシフトインで同時にNビット出力することができる。なお、N=6ビットの入力信号INはIN[0]〜IN[5]で構成され、畳み込みエンコーダで同時に符号化され出力される。
E回路2521の有無は、実現したい畳み込み演算の構成によって決まる。実現したい畳み込みエンコーダがもつフリップフロップのすべての間にEOR回路がある構成をとるならば、全てのE回路2521はEOR演算を行う。
ここでは、N=6として構成している。6ビットを同時に出力する場合、4つあるセレクタ2501〜2504はそれぞれ上から6番目の入力を選択する。つまり、左から順にW5,W4,W3,W2を選択する。入力は、IN[0]〜IN[5]に6ビットを1セットとして行う。セレクタ2501〜2504の設定により、6ビット以下の同時出力が可能である。また、IN[0]〜IN[5]の入力に対応する出力は、それぞれOUT[0]〜OUT[5]である。
図19(B)のスクランブラを実現するには、セレクタ2511〜2515は、真中の信号を選択して出力する。図20(B)のスクランブラを実現するには、セレクタ2511〜2515は、右の信号を選択して出力する。図21(B)のスクランブラを実現するには、セレクタ2511〜2515は、左の信号を選択して出力する。
従来のスクランブラ及び畳み込みエンコーダは、1ビット入力されると1ビット出力されるシリアルな処理であった。本実施形態の準固定回路によれば、1ビットシフトを繰り返すのではなく、前もって複数回分のシフト処理を行う回路を持たせることにより一度に複数のスクランブル処理及び畳み込みエンコーダ処理を行うことができる。また、本実施形態の準固定回路は、複数のビット入力を同時処理する任意の構成のスクランブラ、及び任意の構成の畳み込みエンコーダを構成できる。
(第8の実施形態)
図26は、図16のW−CDMA規格の線形帰還シフトレジスタ(LFSR)を4個の演算器2701〜2704に分割することを示す図である。第1の回路1611は、演算器2701及び2702に分割される。演算器2701は、複数のフリップフロップFF及びEOR回路1603を含む。演算器2702は、複数のフリップフロップFF及びEOR回路1604を含む。第2の回路1612は、演算器2703及び2704に分割される。演算器2703は、複数のフリップフロップFF及びEOR回路1606を含む。演算器2704は、複数のフリップフロップFF及びEOR回路1605を含む。フリップフロップの数は、例えば25個である。フリップフロップの内部状態を初期設定した後は、その初期値設定に一意に対応したビット系列をシリアルに出力する。
図27は、図26のLFSRをNビット同時一括処理することができるLFSRの構成例である。第1の回路1611は、第1の演算器2701及び第2の演算器2702を有する。第2の回路1612は、第3の演算器2703及び第4の演算器2704を有する。第1の演算器2701及び第3の演算器2703は、フリップフロップの内部状態のEOR演算を行う。第2の演算器2702及び第4の演算器2704は、フィードバックループを構成してフリップフロップの内部状態を更新する。第1〜第4の演算器2701〜2704は、相互に信号を入出力することができる。第1の演算器2701は、Nビットの出力信号OUTPUT1を出力する。第2の演算器2702は、Nビットの出力信号OUTPUT2を出力する。第1〜第4の演算器2701〜2704は、同じ構成を有する。
図28(A)は、図27の第1の演算器2701の構成例を示す。回路2800は、32段のフリップフロップ及びその入力セレクタを含み(図29参照)、信号2850を入力する。信号2850は、信号2849を含み、第1〜第4の演算器のフリップフロップの更新値の8×4ビット信号である。信号2849は、内部状態セレクタ2828から出力される第1の演算器2701のフリップフロップの更新値の信号である。
図29は、回路2800の構成例を示す。信号2920は、フリップフロップFF0に関するセレクタへの入力信号であり、第1の演算器からの信号2849、第2の演算器からの信号2912、第3の演算器からの信号2913、及び第4の演算器からの信号2914を含む。例えば、第1の演算器からの信号2849は、フリップフロップの更新値を示す8ビットの信号である。回路2901は、セレクタ2907を含み、第1の演算器のフリップフロップFF0の入力用データを選択する。セレクタ2907は、フリップフロップFF0用の更新値セレクタであり、同時並列処理ビット数による選択を行う。
第1の演算器のための回路2901と同様に、回路2902は第2の演算器のフリップフロップFF0の入力用データを選択するための回路であり、回路2903は第3の演算器のフリップフロップFF0の入力用データを選択するための回路であり、回路2904は第4の演算器のフリップフロップFF0の入力用データを選択するための回路である。回路2902〜2904には、それぞれ信号2912〜2914が入力される。セレクタ2931は、回路2901〜2904の出力信号を択一的に選択して、フリップフロップFF0へ出力する。フリップフロップFF0は、その信号を保持して出力する。
信号2920と同様に、信号2921はフリップフロップFF1に関するセレクタへの入力信号であり、信号2922はフリップフロップFF31に関するセレクタへの入力信号である。また、回路2901と同様に、回路2905は第1の演算器のフリップフロップFF1の入力用データを選択するための回路であり、回路2906は第1の演算器のフリップフロップFF31の入力用データを選択するための回路である。また、フリップフロップFF1〜FF31にも、入力用データが択一的に選択されて入力される。
8ビット一括処理なら、回路2901では、フリップフロップFF0用の更新値セレクタ2907にて、8ビット目のデータをフリップフロップFF0にセットする必要があるので、FF更新値[7]を選ぶ。7ビット一括なら、その上のFF更新値[6]を選ぶ、というように一括処理するビット数により順次上のFF更新値を選ぶ。なお、フリップフロップの初期値は、動作前にフリップフロップFF0〜FF31に別途設定が必要である。
図30(A)は、回路2905内のフリップフロップFF1用入力セレクタ2907を示す。このセレクタは、フリップフロップFF0の出力値、及び7ビットのFF更新値[0]〜FF更新値[6]の中から選択する。
図30(B)は、フリップフロップFF2用入力セレクタ2907を示す。このセレクタは、フリップフロップFF1及びFF0の出力値、及び6ビットのFF更新値[0]〜FF更新値[5]の中から選択する。
図30(C)は、フリップフロップFFn用入力セレクタ2907を示す。このセレクタは、フリップフロップFF(n−8)〜FF(n−1)の出力値の中から選択する。
図28(A)において、第1のEOR演算器2811は、図31に示すように、32段の選択EOR回路2831a〜2831d等を有する。選択EOR回路2831a〜2831dは、図28(B)に示すように、EOR回路2891及びセレクタ2892を有する。EOR回路2891は、入力信号A1及びB1のEORを演算して信号A2を出力する。セレクタ2892は、信号A1又は信号A2を選択して出力する。
図31において、選択EOR回路2831aは、フリップフロップFF0の出力信号3100を入力し、次段の選択EOR回路2831bに出力する。信号3100は、途中結果[0]として内部状態セレクタ2821(図28(A))へ出力される。
選択EOR回路2831bは、フリップフロップFF1の出力信号3101及び選択EOR回路2831aの出力信号を入力し、次段の選択EOR回路2831cに出力する。信号3101は、途中結果[1]として内部状態セレクタ2821(図28(A))へ出力される。
選択EOR回路2831cは、フリップフロップFF2の出力信号3102及び選択EOR回路2831bの出力信号を入力し、次段の選択EOR回路に出力する。信号3102は、途中結果[2]として内部状態セレクタ2821(図28(A))へ出力される。
選択EOR回路2831dは、フリップフロップFF31の出力信号3103及び前段の選択EOR回路の出力信号を入力し、信号3104を仮出力[0]として出力する。また、信号3104は、途中結果[31]として内部状態セレクタ2821(図28(A))へ出力される。
第1のEOR演算器2811(図28(A))では、仮出力[0]の信号2860が有効となる。途中結果[0]〜[31]の信号2841は有効でない。その代わりに、図27の第2の演算器2702の途中結果[0]〜[31]の信号2841が次段の第2のEOR演算器2812への入力となる。
図28(A)において、第1のEOR演算器2811の仮出力[0]の信号2860は、3個の選択EOR回路2831を介して、出力信号OUT[0]として出力される。選択EOR回路2831には、他の演算器の仮出力[0]の信号2870が入力される。
また、第1のEOR演算器2811は、32ビットの途中結果出力信号2841を内部状態セレクタ2821へ出力する。内部状態セレクタ2821は、32ビットの途中結果出力信号2841及2851の中から選択して第2のEOR演算器2812へ出力する。途中結果出力信号2851は、フィードバックループをもつ設定の演算器からのEOR演算器の途中結果出力信号である。
第2のEOR演算器2812は、図32に示す構成を有する。選択EOR回路2831aは、前段の途中結果[0]の信号3100を入力し、次段の選択EOR回路2831bに出力する。信号3100は、途中結果[0]として出力される。
選択EOR回路2831bは、前段の途中結果[1]の信号3101及び選択EOR回路2831aの出力信号を入力し、次段の選択EOR回路に出力する。信号3101は、途中結果[1]として出力される。
選択EOR回路2831eは、前段の途中結果[30]の信号3105及び前段の選択EOR回路の出力信号を入力し、次段の選択EOR回路2831dに出力する。
選択EOR回路2831dは、前段の途中結果[31]の信号3104及び前段の選択EOR回路2831eの出力信号を入力し、信号3201を仮出力[1]として出力する。また、信号3201は途中結果[30]として出力され、信号3104は途中結果[31]として出力される。なお、信号3201は、第nのEOR演算器の番号nが0ならば途中結果[31]の場所に、1ならば途中結果[30]の場所に、7ならば途中結果[24]の場所に1つだけ入る。
図28(A)において、第2のEOR演算器2812の仮出力[1]の信号2861は、3個の選択EOR回路2831を介して、出力信号OUT[1]として出力される。選択EOR回路2831には、他の演算器の仮出力[1]の信号2871が入力される。また、第2のEOR演算器2812は、32ビットの途中結果信号2842を出力する。
同様に、内部状態セレクタ2827は、途中結果出力信号2847及び2851の中から選択して第8のEOR演算器2818へ出力する。第8のEOR演算器2818は、仮出力[7]の信号2867及び途中結果出力信号2848を出力する。仮出力信号2867は、3個の選択EOR回路2831を介して出力信号OUT[7]として出力される。その選択EOR回路2831には、他の演算器の仮出力[7]の信号2877も入力される。
内部状態セレクタ2828は、途中結果出力信号2848及び2851から選択してFF更新値の信号2849を出力する。
本実施形態では、フリップフロップの数は32とし、N=8ビットとしている。出力信号OUT[n]は、演算器のnシフト目の出力である。第1〜第4の演算器では、お互いの内部状態信号を選択できる。実用上は、第1及び第2の演算器、第3及び第4の演算器の間でやり取りできれば良い。
最終的に、第2及び第4の演算器の出力のEORを出力信号OUTPUT1とする。このため、第2の演算器の内部でそのEORをとり、出力信号OUTPUT1とする。同様に、第1及び第3の演算器の出力のEORを出力信号OUTPUT2とする。このため、第1の演算器の内部でそのEORをとり、出力信号OUTPUT2とする。
図33は、本実施形態による準固定回路の構成例を示す。この準固定回路は、図22のCRC回路、図25の畳み込みエンコーダ、図19(B)、図20(B)、図21(B)のスクランブラ、図27のLFSRを選択的に実現することができる。
第1の演算器3301は、Nビットの入力信号INを入力し、Nビットの出力信号OUT1を出力する。第2の演算器3302は、Nビットの入力信号INを入力し、Nビットの出力信号OUT2を出力する。第3の演算器3303は、Nビットの入力信号INを入力し、Nビットの出力信号OUT3を出力する。第4の演算器3304は、Nビットの入力信号INを入力し、Nビットの出力信号OUT4を出力する。第1〜第4の演算器3301〜3304は、相互に信号を入出力可能である。第1〜第4の演算器3301〜3304は、同じ構成を有する。
図34は、図33の第1の演算器3301の構成例を示す。図34の回路は、基本的には図28(A)の回路と同じであるので、図28(A)の回路と異なる点を説明する。なお、図34では省略しているが、図34の回路にも図28(A)の信号2851、内部状態セレクタ2821〜2828が設けられている。回路3410は図28(A)の回路2800に対応し、EOR演算器3411〜3418は図28(A)のEOR演算器2811〜2818に対応する。
回路3410は、信号3450及び3452を入力し、信号3481を出力する。信号3450は、第1〜第4の演算器からのFF更新値を示す8×4ビット信号である。信号3452は、第1〜第4の演算器からのEOR演算器の途中結果出力信号(32×8×4ビット)である。信号3481は、各フリップフロップの出力信号(32ビット)であり、出力反転回路3482で反転され、32ビット出力信号OUT2として出力される。
8ビットの入力信号IN[0]〜IN[7]が入力される。第1のEOR演算器3411は、信号3481及び入力信号IN[0]を入力し、仮出力1[0]の信号3460及び途中結果出力信号(32ビット)3441を出力する。信号3460は、3個の選択EOR回路2831を介して、出力信号OUT1[0]を出力する。その選択EOR回路2831には、他の演算器の仮出力1[0]の信号3470も入力される。
第2のEOR演算器3412は、信号3441等及び入力信号IN[1]を入力し、仮出力1[1]の信号3461及び途中結果出力信号(32ビット)3442を出力する。信号3461は、3個の選択EOR回路2831を介して、出力信号OUT1[1]を出力する。その選択EOR回路2831には、他の演算器の仮出力1[1]の信号3471も入力される。
第8のEOR演算器3418は、信号3447等及び入力信号IN[7]を入力し、仮出力1[7]の信号3467及び途中結果出力信号(32ビット)3448を出力する。信号3467は、3個の選択EOR回路2831を介して、出力信号OUT1[7]を出力する。その選択EOR回路2831には、他の演算器の仮出力1[7]の信号3477も入力される。
途中結果出力信号3441〜3448は、信号3452として回路3410へフィードバックされる。フィードバック入力値セレクタ3480は、8ビットの仮出力信号3460〜3467及び8ビットの入力信号IN[0]〜IN[7]を入力し、8ビットのFF更新値を示す信号3483を出力する。信号3483は、図25のW0〜W5に相当し、信号3450として回路3410にフィードバックされる。
図35は、図34の回路3410の構成例を示す。回路3501〜3506は図29の回路2901〜2906に対応し、セレクタ3508は図29のセレクタ2907に対応し、セレクタ3531は図29のセレクタ2931に対応する。
信号3520は、フリップフロップFF0に関するセレクタへの入力信号であり、第1〜第4の演算器の信号3511〜3514を含む。第1の演算器の信号3511は、信号3510及び3483を含む。信号3510は、第1〜第8のEOR演算器の途中結果[0]の信号であり、図34の信号3452に相当する。信号3483は、FF更新値[0]〜FF更新値[7]を示す信号であり、図34の信号3450に相当する。
セレクタ3507は、CRC演算用入力セレクタであり、信号3510から選択して出力する。セレクタ3508は、CRC以外の演算用入力セレクタであり、信号3483から選択して出力する。セレクタ3509は、CRC処理のときにはセレクタ3507の出力信号を選択して出力し、CRC処理以外の処理のときにはセレクタ3508の出力信号を選択して出力する。
回路3502は、第2の演算器のフリップフロップFF0の入力データ用回路であり、第2の演算器の信号3512を入力する。回路3503は、第3の演算器のフリップフロップFF0の入力データ用回路であり、第3の演算器の信号3513を入力する。回路3504は、第4の演算器のフリップフロップFF0の入力データ用回路であり、第4の演算器の信号3514を入力する。セレクタ3531は、回路3501〜3504の出力信号を選択してフリップフロップFF0へ出力する。このセレクタ3531の機能により、LFSRの動作が可能になる。
信号3521は、フリップフロップFF1に関するセレクタへの入力信号であり、第1の演算器の信号3511を含む。回路3505は、第1の演算器のフリップフロップFF1の入力用データを選択するための回路であり、信号3511を入力する。
信号3522は、フリップフロップFF31に関するセレクタへの入力信号であり、第1の演算器の信号3511を含む。回路3506は、第1の演算器のフリップフロップFF31の入力用データを選択するための回路であり、信号3511を入力する。
フリップフロップFF0〜FF31は、セレクタ3531の出力信号を保持して出力する。
図36(A)は、図35の回路3505内のフリップフロップFF1用CRC演算用入力セレクタ3507の構成例を示す。セレクタ3507は、第1〜第8のEOR演算器の途中結果[1]から選択して出力する。
図36(B)は、図35のフリップフロップFF2用CRC演算用入力セレクタ3507の構成例を示す。セレクタ3507は、第1〜第8のEOR演算器の途中結果[2]から選択して出力する。
図36(C)は、図35のフリップフロップFFn用CRC演算用入力セレクタ3507の構成例を示す。セレクタ3507は、第1〜第8のEOR演算器の途中結果[n]から選択して出力する。
図36(D)は、図35の回路3505内のフリップフロップFF1用CRC以外の演算用入力セレクタ3508の構成例を示す。セレクタ3508は、フリップフロップFF0の出力値、FF更新値[0]〜FF更新値[6]から選択して出力する。
図36(E)は、図35のフリップフロップFF2用CRC以外の演算用入力セレクタ3508の構成例を示す。セレクタ3508は、フリップフロップFF0及びFF1の出力値、FF更新値[0]〜FF更新値[5]から選択して出力する。
図36(F)は、図35のフリップフロップFFn用CRC以外の演算用入力セレクタ3508の構成例を示す。セレクタ3508は、フリップフロップFF(n−8)〜FF(n−1)の出力値から選択して出力する。
図36(F)中、「FF(#)出力」の括弧中の# が負になる場合は、「FF(#)出力」を以下の信号で置き換える。
"-1"ならば FF更新値[0]
"-2"ならば FF更新値[1]
"-3"ならば FF更新値[2]
"-4"ならば FF更新値[3]
"-5"ならば FF更新値[4]
"-6"ならば FF更新値[5]
"-7"ならば FF更新値[6]
"-8"ならば FF更新値[7]
図37は、図34の第1のEOR演算器3411の構成例を示す。選択EOR回路2831a〜2831dは、図28(B)に示す構成を有する。セレクタ3701aは、入力信号IN[0]及び仮出力1[0]を入力し、選択出力する。選択EOR回路2831aは、フリップフロップFF0の出力信号及びセレクタ3701aの出力信号を入力し、出力信号を出力する。セレクタ3702aは、仮出力1[0]及びフリップフロップFF0の出力信号を入力し、選択した信号を途中結果[0]として出力する。
セレクタ3701bは、選択EOR回路2831aの出力信号及び仮出力1[0]を入力し、選択出力する。選択EOR回路2831bは、フリップフロップFF1の出力信号及びセレクタ3701bの出力信号を入力し、出力信号を出力する。セレクタ3702bは、選択EOR回路2831aの出力信号及びフリップフロップFF1の出力信号を入力し、選択した信号を途中結果[1]として出力する。
セレクタ3701cは、選択EOR回路2831bの出力信号及び仮出力1[0]を入力し、選択出力する。選択EOR回路2831cは、フリップフロップFF2の出力信号及びセレクタ3701cの出力信号を入力し、出力信号を出力する。セレクタ3702cは、選択EOR回路2831bの出力信号及びフリップフロップFF2の出力信号を入力し、選択した信号を途中結果[2]として出力する。
セレクタ3701dは、入力信号IN[0]及び前段の選択EOR回路の出力信号を入力し、選択出力する。選択EOR回路2831dは、フリップフロップFF31の出力信号及びセレクタ3701dの出力信号を入力し、仮出力1[0]を出力する。セレクタ3703は、入力信号IN[0]、仮出力1[0]、及びフリップフロップFF31の出力信号を入力し、選択出力する。セレクタ3702dは、前段の選択EOR回路の出力信号及びセレクタ3703の出力信号を入力し、選択した信号を途中結果[31]として出力する。
図38は、図34の第2のEOR演算器3412の構成例を示す。選択EOR回路2831a〜2831dは、図28(B)に示す構成を有する。セレクタ3701aは、入力信号IN[1]及び仮出力1[1]を入力し、選択出力する。選択EOR回路2831aは、前段の途中結果[0]及びセレクタ3701aの出力信号を入力し、出力信号を出力する。セレクタ3702aは、仮出力1[1]及び前段の途中結果[0]を入力し、選択した信号を途中結果[0]として出力する。
セレクタ3701bは、選択EOR回路2831aの出力信号及び仮出力1[1]を入力し、選択出力する。選択EOR回路2831bは、前段の途中結果[1]及びセレクタ3701bの出力信号を入力し、出力信号を出力する。セレクタ3702bは、選択EOR回路2831aの出力信号及び前段の途中結果[1]を入力し、選択した信号を途中結果[1]として出力する。
セレクタ3701cは、前段の選択EOR回路の出力信号及び仮出力1[1]を入力し、選択出力する。選択EOR回路2831cは、前段の途中結果[30]及びセレクタ3701cの出力信号を入力し、出力信号を出力する。セレクタ3703は、入力信号IN[1]、仮出力1[1]、及び前段の途中結果[30]を入力し、選択出力する。セレクタ3702cは、前段の選択EOR回路の出力信号及びセレクタ3703の出力信号を入力し、選択した信号を途中結果[30]として出力する。
セレクタ3701dは、入力信号IN[1]及び選択EOR回路2831cの出力信号を入力し、選択出力する。選択EOR回路2831dは、前段の途中結果[31]及びセレクタ3701dの出力信号を入力し、仮出力1[1]を出力する。セレクタ3702dは、選択EOR回路2831cの出力信号及び前段の途中結果[31]を入力し、選択した信号を途中結果[31]として出力する。
セレクタ3703は、EOR演算器の入力信号がIN[0]ならば途中結果[31]の場所に、IN[1]ならば途中結果[30]の場所に、IN[7]ならば途中結果[24]の場所に1つだけ入る。
ここまでの構成をまとめると、図33の準固定回路は図34の回路を4つ並べた回路である。図34において、出力信号OUT1[0]〜[7]はスクランブラ、CRC回路、畳み込みエンコーダ、LFSRの出力となる。出力信号OUT2は、CRC回路のビット反転出力となる。CRC回路の仕様によっては、出力を反転して出力する必要があるので、出力反転回路3482で対応できるようにする。
有効な出力範囲について説明する。スクランブラ、畳み込み符号化器、LFSRは入力に対して全てのデータが有効である。しかし、CRC回路は、生成多項式の長さという一定のビット列が入力完了した時点での全メモリの出力が有効である。逆にいえば、予め決まったビット列が入力するまでは無効な出力となる。例えば、16ビットのCRC回路ならば16ビットの入力が16クロックかかって16個のメモリに入力された時点の出力が有効となる。
従来の線形帰還シフトレジスタ等は、1ビット入力されると1ビット出力されるシリアルな処理であった。本実施形態によれば、1ビットごとシフト演算ではなく複数シフト分先までを先見処理する回路を1つの準固定回路にして、かつその処理の切り替えをセレクタにより行うことによりスクランブラ、畳み込みエンコーダ、CRC回路、及びLFSRを実現することができる。
(第9の実施形態)
図39は、本発明の第9の実施形態による準固定回路の構成例を示す。この準固定回路は、複数種類のビタビデコーダ117(図1(B))を実現できる。ブランチメトリック演算部3901は、入力信号A〜Cを入力し、トレリス線図におけるブランチメトリック(符号語のハミング距離)を計算する。ACS部3902は、そのブランチメトリックを基にトレリス線図のステップ毎にパスメトリックを求め、生き残りパスとそのパスメトリック値をパスメモリ部3903に書き出す。パスメモリ部3903は、制御部3911及びRAM3912を有する。制御部3911は、ACS部3902から入力されるデータをRAM3912に書き込み、RAM3912内のデータをトレースバック部3904に読み出す。トレースバック部3904は、入力信号がある一定の回数行われたら(もしくは、符号化の終端のために挿入されたダミービットが入力されたら)、トレースバックし、最短のパスメトリックを求める。パスメトリックは、ブランチメトリックのつながりで表現される。最短のパスメトリックが正しい符号語の信号であるとして、デコードすることができる。
具体的に符号化率S/T=1/2,1/3に対応するビタビデコーダを例として、ブランチメトリック演算部3901とACS部3902について説明する。分母Tは入力の信号数に、分子Sは出力の信号数に対応する。使用したいTが3とするならば、必要な入力は3本(A,B,C)の信号となる。
図40は、符号化率1/2及び1/3に対応するブランチメトリック演算部3901の構成例を示す。加算器4001は、入力信号A及びBを加算し、信号BM00を出力する。信号BM00は、入力信号B,Aと符号語「00」とのブランチメトリック値(ハミング距離)を示す。加算器4002は、入力信号Aの反転値及び入力信号Bを加算し、信号BM01を出力する。信号BM01は、入力信号B,Aと符号語「01」とのブランチメトリック値を示す。加算器4003は、入力信号A及び入力信号Bの反転値を加算し、信号BM10を出力する。信号BM10は、入力信号B,Aと符号語「10」とのブランチメトリック値を示す。加算器4004は、入力信号Aの反転値及び入力信号Bの反転値を加算し、信号BM11を出力する。信号BM11は、入力信号B,Aと符号語「11」とのブランチメトリック値を示す。符号化率1/2の場合、セレクタ4021〜4024は、4つのブランチメトリック信号BM00、BM01,BM10,BM11を選択して、信号BM000,BM001,BM010,BM011として出力する。
次に、符号化率1/3の場合を説明する。加算器4011は、信号BM00及び入力信号Cを加算し、セレクタ4021を介して信号BM000を出力する。信号BM000は、入力信号C,B,Aと符号語「000」とのブランチメトリック値を示す。加算器4012は、信号BM00及び入力信号Cの反転値を加算し、信号BM100を出力する。信号BM100は、入力信号C,B,Aと符号語「100」とのブランチメトリック値を示す。
加算器4013は、信号BM01及び入力信号Cを加算し、セレクタ4022を介して信号BM001を出力する。信号BM001は、入力信号C,B,Aと符号語「001」とのブランチメトリック値を示す。加算器4014は、信号BM01及び入力信号Cの反転値を加算し、信号BM101を出力する。信号BM101は、入力信号C,B,Aと符号語「101」とのブランチメトリック値を示す。
加算器4015は、信号BM10及び入力信号Cを加算し、セレクタ4023を介して信号BM010を出力する。信号BM010は、入力信号C,B,Aと符号語「010」とのブランチメトリック値を示す。加算器4016は、信号BM10及び入力信号Cの反転値を加算し、信号BM110を出力する。信号BM110は、入力信号C,B,Aと符号語「110」とのブランチメトリック値を示す。
加算器4017は、信号BM11及び入力信号Cを加算し、セレクタ4024を介して信号BM011を出力する。信号BM011は、入力信号C,B,Aと符号語「011」とのブランチメトリック値を示す。加算器4018は、信号BM11及び入力信号Cの反転値を加算し、信号BM111を出力する。信号BM111は、入力信号C,B,Aと符号語「111」とのブランチメトリック値を示す。
セレクタ4021〜4024は、符号化率の選択信号に応じて、選択出力する。ブランチメトリックのとり方の全パターン数は、2のT乗パターンである。ブランチメトリック演算部3901では、符号化率に対応するように全てのブランチメトリックを予め計算してACS部3902に出力する。図40では、1/2と1/3の2つの符号化率に対応しているので出力が多くなる。これを防ぐため、Tが2のときは、BM00,BM01,BM10,BM11をBM000,BM001,BM010,BM011として出力する。
図41は、ACS部3902の構成例を示す。256個のセレクタ4100〜4102等には、8個のブランチメトリック信号BM000〜BM111及び256個のパスメトリック信号PM000〜PM255を入力し、PM選択信号、BM選択信号及び符号化率選択信号に応じて選択し、パスメトリック信号PM_A、PM_B及びブランチメトリック信号BM_A,BM_Bを出力する。256個のACS4110〜4112等は、パスメトリック信号PM_A、PM_B及びブランチメトリック信号BM_A,BM_Bを入力し、加算、比較及び選択を行い、パスメトリック信号PM000〜PM255及び選択されたパスPATH000〜PATH255を生き残りパスSLとして出力する。
図42は、セレクタ4100及びACS4110の構成例を示す。まず、セレクタ4100について説明する。セレクタ4201は、PM選択信号及び符号化率選択信号に応じて、パスメトリック信号PM000〜PM255の中から1つを選択し、信号PM_Aとして出力する。セレクタ4202も、PM選択信号及び符号化率選択信号に応じて、パスメトリック信号PM000〜PM255の中から1つを選択し、信号PM_Bとして出力する。セレクタ4203は、BM選択信号及び符号化率選択信号に応じて、ブランチメトリック信号BM000〜BM111の中から1つを選択し、信号BM_Aとして出力する。セレクタ4204も、BM選択信号及び符号化率選択信号に応じて、ブランチメトリック信号BM000〜BM111の中から1つを選択し、信号BM_Bとして出力する。
次に、ACS4110について説明する。加算器4211は、信号PM_A及びBM_Aを加算し、符号が0のときのパスメトリックを出力する。加算器4221は、信号PM_B及びBM_Bを加算し、符号が1のときのパスメトリックを出力する。比較器4222は、加算器4211の出力信号から加算器4221の出力信号を減算し、その符号をセレクタ4212及びフリップフロップ4223へ出力する。セレクタ4212は、その符号に応じて、加算器4211又は4221の出力信号を選択し、フリップフロップ4213へ出力する。すなわち、小さいパスメトリックを選択して、出力する。フリップフロップ4213は、パスメトリックPM000を記憶して出力する。また、フリップフロップ4223は、符号を記憶し、選択されたパスPATH000を出力する。
ACS部は、最大の状態数256(000〜256)に対応できる。ACS部中の256個のセレクタ000〜255は、ブランチメトリック演算部3901の出力の中から各々の状態(000〜255)毎に必要なものを選択(PM選択、BM選択、符号化率選択)して対応するACS000〜255に出力する。
3つある回路設定(PM選択、BM選択、符号化率選択)は、符号化データ(図39中の入力信号A,B,C)を生成、出力する畳み込みエンコーダ102(図1(A))の作りが決まれば一意に決まる。出力である次のステップのパスメトリックPM000と選択された(生き残った)パス情報PATHを計算するには、符号化率の分子S=1のときパスメトリックとブランチメトリックが2組(PM_A,BM_AとPM_B,BM_Bの2組)必要となる。一般化すると、2のS乗組のパスメトリックとブランチメトリックを1つのACSに用意すれば良い。
実際には、使用する符号化率としてS1/T1=1/2、S2/T2=1/3、状態数が64、256の2セットを考えるならば、セレクタ4201、4202、4203、4204の入力は256本も必要ない。((2のS1乗)+(2のS2乗))×2セット=8本で良い。使用する符号化率としてS1/T1=1/2、S2/T2=1/3、S3/T3=2/3、状態数が64、256の2セットを考えるならば、((2のS1乗)+(2のS2乗)+(2のS3乗))×2セット=16本で良い。
以上のように、符号化率と状態数といったパラメータに依存したビタビデコーダでは、予め設計時に決定した状態数だけ用意し、それに対するパスメトリックとブランチメトリックのとり方(選択)を固定化したうえで配線情報を決定し回路化されるが、本実施形態の準固定回路ではこれらのとり方をハードウエア中に予め用意したセレクタ(ブランチメトリック演算部とACS部の内部にある)の設定を変更することにより、とり方に自由度をもたせることができ、あらゆる符号化率、状態数の畳み込み符号を一つのビタビデコーダでデコードできる。
(第10の実施形態)
図43(A)は、図1(B)のマッチトフィルタ113の構成例を示す。このマッチトフィルタは、例えば16タップを有し、16個の遅延素子レジスタ4301を有する。16個のレジスタ4301(Reg00〜Reg15)には、実数成分データDr及び虚数成分データDiが入力データとして入力される。レジスタReg00は、実数成分データDr0及び虚数成分データDi0を複素乗算回路4302に出力する。複素乗算回路4302は、図43(B)の構成を有し、入力データDr0,Di0及び係数Wr0,Wi0を入力し、複素乗算する。係数Wr0は実数成分であり、係数Wi0は虚数成分である。
図43(B)において、複素乗算回路4302は、4個の乗算器4311〜4314及び2個の加算器4315,4316を有する。乗算器4311は、実数成分データDr0及び実数成分係数Wr0を乗算して出力する。乗算器4312は、虚数成分データDi0及び虚数成分係数Wi0を乗算して出力する。乗算器4313は、実数成分データDr0及び虚数成分係数Wi0を乗算して出力する。乗算器4314は、虚数成分データDi0及び実数成分係数Wr0を乗算して出力する。加算器4315は、乗算器4311の出力に正符号を付与し、乗算器4312の出力に負符号を付与し、両者を加算して出力する。加算器4316は、乗算器4313の出力に正符号を付与し、乗算器4314の出力に正符号を付与し、両者を加算して出力する。
図43(A)において、複素乗算回路4303も同様に、入力データDr1,Di1及び係数Wr1,Wi1を入力し、複素乗算する。加算器群4304は、2個の加算器を有し、2個の複素乗算回路4302及び4303の出力の対応する成分同士を加算して出力する。加算器群4305は、2個の加算器を有し、隣接する2個の加算器群4304の出力の対応する成分同士を加算して出力する。加算器群4306は、2個の加算器を有し、隣接する2個の加算器群4305の出力の対応する成分同士を加算して出力する。加算器群4307は、2個の加算器を有し、隣接する2個の加算器群4306の出力の対応する成分同士を加算して出力データ(実数成分データ及び虚数成分データを含む)を出力する。
以上のように、このマッチトフィルタは、複素数入力データDr,Diに対して16タップのフィルタ演算を行い、複素数出力する。複素乗算回路4302等では、乗算器4個と加算器2個で複素乗算を行っている。その出力は、複素成分を別々に加算していくために加算器群4304を1加算単位として加算され最終的に16タップ分の複素乗算結果の和を出力している。よって、使用するリソースは、16個のレジスタ、64個の乗算器、62個の加算器である。
図45は、図1(B)のFFT114の構成例を示す。このFFTは、基数2の時間間引き8ポイントFFTの場合を例に示す。入力データa0,a1,…,a7は、複素数データである。出力データは、A0,A1,…,A7である。Wφ=exp((2π/N)×φ))である。ここで、Nはポイント数であり、例えば8である。交点で加算を実行し、Wφの点で複素乗算する。“−”の記号があるところでは減算を実行する。
第1ステージ4501、第2ステージ4502及び第3ステージ4503では、それぞれ4回のバタフライ演算を行う。バタフライ演算は、図44に示すバタフライ演算器により行われ、2個の入力データに対して行われる演算である。例えば、第1ステージ4501の1回目のバタフライ演算では、(a0+a4)×1の演算と(a0−a4)×1の演算が行われる。係数Wの乗算がない場合には、係数W=1として乗算することと等価である。第1ステージ4501の2回目のバタフライ演算では、(a2+a6)×W0の演算と(a2−a6)×W2の演算が行われる。
図44は、バタフライ演算器4400の構成例を示す。図43(A)と同様に、レジスタ4401は、2個の入力データD0(=Dr0+jDi0)及びD1(=Dr1+jDi1)をバタフライ演算器4400に出力する。バタフライ演算器4400は、2個の入力データD0,D1の他に、係数W(=Wr0+jWi0)を入力し、バタフライ演算を行い、次式の出力データD0_out及びD1_outを出力する。ここで、(*)は、複素共役を表す。
D0_out=D0+W(*)×D1
D1_out=D0−W(*)×D1
乗算器4411及び4415は、実数成分データDr1及び実数成分係数Wr0を乗算して出力する。乗算器4412及び4416は、虚数成分データDi1及び虚数成分係数Wi0を乗算して出力する。乗算器4413及び4417は、虚数成分データDi1及び実数成分係数Wr0を乗算して出力する。乗算器4414及び4418は、実数成分データDr1及び虚数成分係数Wi0を乗算して出力する。
加算器4421は、乗算器4411の出力に正符号を付与し、乗算器4412の出力に負符号を付与し、両者を加算して出力する。加算器4422は、乗算器4413の出力に正符号を付与し、乗算器4414の出力に正符号を付与し、両者を加算して出力する。加算器4423は、乗算器4415の出力に負符号を付与し、乗算器4416の出力に正符号を付与し、両者を加算して出力する。加算器4424は、乗算器4417の出力に正符号を付与し、乗算器4418の出力に正符号を付与し、両者を加算して出力する。
加算器4431は、実数成分データDr0に正符号を付与し、加算器4421の出力に正符号を付与し、両者を加算して実数成分データDr0_outを出力する。加算器4432は、虚数成分データDi0に正符号を付与し、加算器4422の出力に正符号を付与し、両者を加算して虚数成分データDi0_outを出力する。加算器4433は、実数成分データDr0に正符号を付与し、加算器4423の出力に正符号を付与し、両者を加算して実数成分データDr1_outを出力する。加算器4434は、虚数成分データDi0に正符号を付与し、加算器4424の出力に負符号を付与し、両者を加算して虚数成分データDi1_outを出力する。
第1の出力データD0_out及び第2の出力データD1_outは、次式で表される。
D0_out=Dr0_out+jDi0_out
=Dr0+Wr0×Dr1+Wi0×Di1
+j×(Di0+Wr0×Di1−Wi0×Dr1)
D1_out=Dr1_out+jDi1_out
=Dr0−Wr0×Dr1−Wi0×Di1
+j×(Di0−Wr0×Di1+Wi0×Dr1)
このバタフライ演算器4400は、8個の乗算器及び8個の加算器から構成され、基数2のバタフライ演算を1回実行できる。図43のマッチトフィルタと図44のバタフライ演算器は、レジスタ、乗算器と加算器といった素子を用いる点は同じである。両者の異なるパラメータは、乗算に使う係数、素子間のネットワーク情報の設定、加算時の符号である。これらパラメータを再設定できるような回路上の仕組みをもたせることにより、マッチトフィルタ演算及びバタフライ演算を同一回路で対応できるようにする。このとき、図43のマッチトフィルタでの使用リソースをバタフライ演算器とで共有化することを考えて、図43でのリソースに対し加算器を2個追加してバタフライ演算器4400を8個組むことができる。
図46は、マッチトフィルタ及びバタフライ演算を選択的に実現可能な準固定回路の構成例を示す。図44に示すように、1個のバタフライ演算器4604は8個の乗算器及び8個の加算器を有する。したがって、8個のバタフライ演算器4604は、64個の乗算器及び64個の加算器を有する。これに対し、図43に示すように、マッチトフィルタでは、そのうち、64個の乗算器及び62個の加算器を用いる。
入力メモリ(レジスタ)4601は、メモリ制御部4611の制御に応じて、16個の入力データ及び出力メモリ4605の出力データを入力し、セレクタ4602に出力する。セレクタ4602は、セレクタ設定部4612の設定に応じて、入力データの選択を行って演算器部4603内のバタフライ演算器4604に出力する。演算器部4603は、8個のバタフライ演算器4604を有する。係数設定部4613は、セレクタ4602を介して又は直接、バタフライ演算器4604に係数Wを入力する。符号設定部4614は、バタフライ演算器4604に正負符号を設定する。出力メモリ4605は、ワークメモリとしても機能し、バタフライ演算器4604の演算結果を記憶し、出力する。
本実施形態では、複素成分入力が64本ある場合、つまり64ポイントのフーリエ変換を考えるのでバタフライ演算が192回必要となるが、8個のバタフライ演算器をもつ演算器部4603を使えば192÷8=24回のループで処理できる。マッチトフィルタは1回で処理が済む。なお、予めどちらの処理を行うか選択して、係数の設定をする係数設定部4613、配線の設定を行うセレクタ設定部4612と符号設定部4614とに反映させておく。
図44のバタフライ演算器4400と図46のバタフライ演算器4604のリソース量は同じである。特に、バタフライ演算器4604に注目してその内部構成を図47に示す。
図47は、バタフライ演算器4604の構成例を示す。このバタフライ演算器4604は、バタフライ演算器及びマッチトフィルタを共有化した回路である。バタフライ演算器4604は、複素乗算回路4703及び4704を有する。複素乗算回路4703及び4704は、図43(A)の複素乗算回路4302及び4303(図43(B))に対応する。
入力メモリ(レジスタ)4702及びメモリ制御部4701は、図46の入力メモリ4601及びメモリ制御部4611に対応する。入力メモリ4702は、入力データDr0,Di0,Dr1,Di1をバタフライ演算器4604に出力する。
まず、複素乗算回路4703について説明する。セレクタ4711は、実数成分データDr1又はDr0を選択して出力する。セレクタ4712は、虚数成分データDi1又はDi0を選択して出力する。乗算器4311は、セレクタ4711の出力及び係数Wr0を乗算して出力する。乗算器4312は、セレクタ4712の出力及び係数Wi0を乗算して出力する。乗算器4313は、セレクタ4711の出力及び係数Wi0を乗算して出力する。乗算器4314は、セレクタ4712の出力及び係数Wr0を乗算して出力する。
セレクタ4731は、複素乗算回路4704内の加算器4315の出力信号4741又はセレクタ4711の出力信号を選択して出力する。加算器4721は、セレクタ4731の出力に正符号を付与し、加算器4315の出力に正符号を付与し、両者を加算して出力する。セレクタ4732は、複素乗算回路4704内の加算器4316の出力信号4742又はセレクタ4712の出力信号を選択して出力する。加算器4722は、セレクタ4732の出力に正符号を付与し、加算器4316の出力に正符号を付与し、両者を加算して出力する。
次に、複素乗算回路4704について説明する。セレクタ4713は、実数成分係数Wr0又はWr1を選択して出力する。セレクタ4714は、虚数成分係数Wi0又はWi1を選択して出力する。乗算器4311は、セレクタ4713の出力及び実数成分データDr1を乗算して出力する。乗算器4312は、セレクタ4714の出力及び虚数成分データDi1を乗算して出力する。乗算器4313は、セレクタ4714の出力及び実数成分データDr1を乗算して出力する。乗算器4314は、セレクタ4713の出力及び虚数成分データDi1を乗算して出力する。
セレクタ4733は、図43の他の加算器群4303等の出力信号4743又はセレクタ4711の出力信号を選択して出力する。加算器4723は、セレクタ4733の出力に正符号を付与し、加算器4315の出力に正符号を付与し、両者を加算して出力する。セレクタ4734は、図43の他の加算器群4303等の出力信号4744又はセレクタ4712の出力信号を選択して出力する。加算器4724は、セレクタ4734の出力に正符号を付与し、加算器4316の出力に正符号を付与し、両者を加算して出力する。
出力メモリ4705は、図46の出力メモリ4605に対応し、加算器4721〜4724の出力信号を記憶する。バタフライ演算の際には、出力メモリ4705の信号が入力メモリ4702にフィードバックされる。
マッチトフィルタ処理の場合は、最初に係数Wr0、Wi0及びWr1、Wi1が設定される。セレクタ4731、4732、4733、4734、4711、4712、4713、4714は、それぞれ信号4741、信号4742、信号4743、信号4744、データDr0、データDi0、係数Wr1、係数Wi1を選択する。符号設定部4614(図46)は、図47に示す通りに設定する。複素乗算回路4703及び4704での演算後は、その複素出力を残りの加算器4721〜4724と、同じく図46の演算器部4603内の残りのバタフライ演算器4604の加算器を使用して加算するだけである。バタフライ演算器4604では、複素乗算回路4703及び4704の出力4本を加算器4721及び4722(図43の加算器群4304に対応)を使い加算している。加算器4723及び4724は、その他の加算に用いる。
バタフライ演算処理の場合は入力メモリ4702にデータが入る度に、係数設定でデータに対応した係数Wr0、Wi0が設定される。同時に、セレクタ4731、4732、4733、4734、4711、4712、4713、4714は、それぞれセレクタ4711の出力信号、セレクタ4712の出力信号、セレクタ4711の出力信号、セレクタ47212の出力信号、データDr1、データDi1、係数Wr0、係数Wi0を選択する。符号設定部4614(図46)は、複素乗算回路4704の中の加算器4315への2入力及び加算器4724の入力信号4742の符号極性を反転させる。これらの設定下で、バタフライ演算器4604にて複素数2入力データのバタフライ演算を行い、出力メモリ4705に書き出す。以上を必要なだけ繰り返し、ループ処理する。
なお、加算器4721及び4722の出力信号は、バタフライ演算時には出力メモリ4705に出力するが、マッチトフィルタ動作時には実際には出力メモリ4705には出力せずに加算器群4305等(図43)に出力される。マッチトフィルタ時には、入力データが未割り当ての加算器4723及び4724を加算器群4305等に割り当てることができるのでこれに出力する。
さらに、また別の実施形態として、バタフライ演算器4604への入力データの順番をメモリ制御4701により変更することにより、無線LAN規格IEEE802.11bがもつCCK(Complementary Code Keying)復調処理の一部である複素乗算(位相回転)計算にも応用できる。
図48は、図47の乗算器の内部構成例である。ここでは、新たに入力切り換え用セレクタ4804、係数格納用レジスタ4805、スケジューラ(カウンタ)4806を追加していることを特徴とする。
まず、係数設定部は、係数格納用レジスタ4805に定数を初期設定時に設定する。セレクタ4804は、入力切り換え設定信号に応じて、入力として外部からの入力2又は係数格納用レジスタ4805内のレジスタ値を選択できる。スケジューラ4806は、カウンタから構成されており、スケジューラ設定信号に応じて、係数格納用レジスタ4805にアドレスを供給している。アドレスは、固定値、又はある設定された数を最大とするカウントの繰り返し出力である。例えば、3と設定するなら0,1,2,3,0,1,2,…というようになる。これは、最初に係数格納用レジスタ4805に定数設定をしておけば、外部との信号のやり取りなしにマッチトフィルタの16タップ分の係数セットを切り換えることができ、時間軸上で高速に複数のマッチトフィルタ演算が可能になることを意味する。係数格納用レジスタ4805は、アドレスに応じて、セレクタ4808に係数を出力する。
符号設定部4801及び4803は、符号設定信号に応じて、正負符号が設定される。入力1は、符号設定部4801で符号設定され、乗算器4802に出力される。セレクタ4804の出力信号は、符号設定部4803で符号設定され、乗算器4802に出力される。乗算器4802は、符号設定部4801及び4803の出力信号を乗算して出力する。なお、乗算器の場合に限定されず、加算器もレジスタ4805及びスケジューラ4806等により制御してもよい。
以上のように、マッチトフィルタとFFTの間で乗算器、加算器という演算器リソースを共有できるので、別々にリソースをもつ場合に比べて回路規模を削減できる。
(第11の実施形態)
図49は、本発明の第11の実施形態による準固定回路を含むLSIの全体構成例を示す。準固定回路は、例えば、第1〜第10の実施形態の準固定回路である。LSI4900は、例えば、CPU4901、準固定回路4904、固定回路4906及びRISC(DSP)4908を有する。設定用バス4902には、CPU4901の他に、設定部4903を介して準固定回路4904、設定部4905を介して固定回路4906、及び設定部4907を介してRISC4908が接続される。CPU4901は、設定部4903,4905,4907の設定又は再設定を行うことができる。
準固定回路4904は、従来のハードウエア(固定回路)4906のように機能を固定された要素として全体を構成しているのではなく、ソフトウエアでその設定を書き換えてやることにより必要に応じて機能を切り換えて全体を構成する。もちろん、必要なければ全体からその機能を切り離す。例えば、複数の機能を時分割で切り換えて使用してもよいし、複数の準固定回路でそれぞれ設定して使用してもよい。
CPU(設定/再設定用)4901が上位レイヤに相当する外部からの命令を受けて、回路構成設定情報を準固定回路4904、固定回路4906及びRISC4908等のLSI構成要素ブロックに渡す。準固定回路4904をはじめとする要素ブロックは、それぞれに1つ以上の設定のための複数の設定用アドレス空間を持つ。さらに要素ブロックは、CPU4901からの命令により、それぞれの設定用アドレス空間から読み出した回路構成設定情報を参照して自身の設定/再設定を行う。
以上のように、第1〜第11の実施形態によれば、スクランブラ、デスクランブラ又はビタビデコーダ等の同じ機能の回路であっても、異なる種類の回路を1つの準固定回路で実現することができる。また、マッチトフィルタ及びバタフライ演算回路等の異なる機能の回路を1つの準固定回路で実現することができる。また、複数種類のスクランブラ、デクランブラ又はCRC回路等の複数ビット同時処理が1つの準固定回路で実現することができる。これにより、ハードウエア資源を共用することができるので、ハードウエア資源の使用効率を向上させることができる。また、1つの準固定回路で、複数の回路を実現することができる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、例えば以下のように種々の適用が可能である。
(付記1)
複数種類のスクランブラ又はデクランブラの動作が可能である準固定回路であって、
直列接続可能な複数のフリップフロップと、
少なくとも入力信号と第1のフィードバック信号との排他的論理和信号、フィードバック信号及び入力信号のうちのいずれか1つの信号を選択して前記複数のフリップフロップのうちの一の第1のフリップフロップに出力可能な第1のセレクタと、
少なくとも前記複数のフリップフロップのうちの一の第2のフリップフロップの出力信号と第2のフィードバック信号との排他的論理和信号、該第2のフリップフロップの出力信号、及び第2のフィードバック信号のうちのいずれか1つの信号を選択して前記第1のセレクタに前記第1のフィードバック信号として出力可能な第2のセレクタと
を有する準固定回路。
(付記2)
前記第1のセレクタ及び前記第2のセレクタの選択に応じて、IEEE802.11a規格のスクランブラ、IEEE802.11b規格のスクランブラ、及びIEEE802.11b規格のデクランブラの動作が可能である付記1記載の準固定回路。
(付記3)
さらに、ビット数が少ない入力信号をデコードしてビット数が多い出力信号を出力し、前記第1のセレクタ及び前記第2のセレクタを選択するためのデコーダを有する付記1記載の準固定回路。
(付記4)
さらに、前記複数のフリップフロップの間に設けられ、前記第1のセレクタの出力信号と前段のフリップフロップの出力信号との排他的論理和信号、又は前段のフリップフロップの出力信号を選択して後段のフリップフロップに出力可能な第3のセレクタを有し、
前記第1〜第3のセレクタの選択に応じて、CRC(Cycle Redundancy Check)回路の動作が可能である付記1記載の準固定回路。
(付記5)
さらに、少なくとも前記第2のフリップフロップの出力信号と第3のフィードバック信号との排他的論理和信号、該第2のフリップフロップの出力信号、及び第3のフィードバック信号のうちのいずれか1つの信号を選択して第4のフィードバック信号を出力可能な第4のセレクタを有し、
前記第1のセレクタは、さらに前記入力信号と前記第4のフィードバック信号との排他的論理和信号、及び前記第4のフィードバック信号を含めた信号の中から択一的に選択して出力可能であり、
前記第1、第2及び第4のセレクタの選択に応じて、畳み込みエンコーダの動作が可能である付記1記載の準固定回路。
(付記6)
前記複数のフリップフロップ、前記第1のセレクタ、前記第2のセレクタ及び前記第4のセレクタの組みを2組設け、
前記第1、第2及び第4のセレクタの選択に応じて、線形帰還シフトレジスタ回路の動作が可能である付記5記載の準固定回路。
(付記7)
さらに、少なくとも前記第2のフリップフロップの出力信号と第3のフィードバック信号との排他的論理和信号、該第2のフリップフロップの出力信号、及び第3のフィードバック信号のうちのいずれか1つの信号を選択して第4のフィードバック信号を出力可能な第4のセレクタを有し、
前記第1のセレクタは、さらに前記入力信号と前記第4のフィードバック信号との排他的論理和信号、及び前記第4のフィードバック信号を含めた信号の中から択一的に選択して出力可能であり、
前記第1〜第4のセレクタの選択に応じて、畳み込みエンコーダの動作が可能である付記4記載の準固定回路。
(付記8)
前記複数のフリップフロップ、前記第1のセレクタ、前記第2のセレクタ、前記第3のセレクタ及び前記第4のセレクタの組みを2組設け、
前記第1〜第4のセレクタの選択に応じて、線形帰還シフトレジスタ回路の動作が可能である付記7記載の準固定回路。
(付記9)
前記第1のフリップフロップ及び前記第2のフリップフロップは、同じ又は異なるフリップフロップである付記1記載の準固定回路。
(付記10)
前記第2のセレクタは、複数あり、それぞれが前記複数のフリップフロップの間の接続線に接続され、
両端を除く各々の第2のセレクタは、一方に隣接する第2のセレクタの出力信号を第2のフィードバック信号として入力し、選択した信号を他方に隣接する第2のセレクタに出力する付記1記載の準固定回路。
(付記11)
複数種類のCRC(Cycle Redundancy Check)回路の複数ビット同時処理が可能である準固定回路であって、
複数のフリップフロップと、
第1の入力ビット信号及び前記複数のフリップフロップの出力信号を基に選択的に排他的論理和を演算し、シフト1回目に相当する出力信号を出力するための第1の排他的論理和回路と、
第2の入力ビット信号及び前記シフト1回目に相当する出力信号を基に選択的に排他的論理和を演算し、シフト2回目に相当する出力信号を出力するための第2の排他的論理和回路と
を有する準固定回路。
(付記12)
さらに、第nの入力ビット信号及びシフトn−1回目のシフト信号を基に選択的に排他的論理和を演算し、シフトn回目に相当する出力信号を出力するための第nの排他的論理和回路とを有する付記11記載の準固定回路。
(付記13)
前記複数のフリップフロップのうちの一のフリップフロップは、前記第nの排他的論理和回路の出力信号をフィードバック入力する付記12記載の準固定回路。
(付記14)
複数種類のスクランブラ又はデクランブラの複数ビット同時処理が可能である準固定回路であって、
複数のフリップフロップと、
第1の入力ビット信号及び前記複数のフリップフロップの出力信号を基に選択的に排他的論理和を演算し、シフト1回目に相当する出力信号を出力するための第1の排他的論理和回路と、
第2の入力ビット信号及び前記複数のフリップフロップの出力信号を基に選択的に排他的論理和を演算し、シフト2回目に相当する出力信号を出力するための第2の排他的論理和回路と
を有する準固定回路。
(付記15)
前記複数のフリップフロップ、前記第1の排他的論理和回路及び前記第2の排他的論理和回路の組みを2組設け、
前記第1及び第2の排他的論理和回路の選択に応じて、畳み込みエンコーダの動作が可能である付記14記載の準固定回路。
(付記16)
前記複数のフリップフロップ、前記第1の排他的論理和回路及び前記第2の排他的論理和回路の組みを4組設け、
前記第1及び第2の排他的論理和回路の選択に応じて、畳み込みエンコーダ及び線形帰還シフトレジスタ回路の動作が可能である付記14記載の準固定回路。
(付記17)
前記第1の排他的論理和回路は、第1の入力ビット信号及び前記複数のフリップフロップの出力信号を基に選択的に排他的論理和を演算し、シフト1回目に相当する出力信号を出力し、
前記第2の排他的論理和回路は、第2の入力ビット信号及び前記シフト1回目に相当する出力信号を基に選択的に排他的論理和を演算し、シフト2回目に相当する出力信号を出力することにより、複数種類のCRC(Cycle Redundancy Check)回路の複数ビット同時処理が可能である付記16記載の準固定回路。
(付記18)
複数種類の符号化率で畳み込み符号化された符号化データをビタビデコードすることが可能な準固定回路であって、
畳み込み符号化された符号化データをビタビデコードするための複数のブランチメトリックを演算し、符号化率に応じたブランチメトリックを選択して出力するブランチメトリック演算回路と、
前記複数のブランチメトリックから必要なものを選択してパスメトリックを演算するパストリック演算回路と
を有する準固定回路。
(付記19)
マッチトフィルタ及びバタフライ演算回路の動作が可能である準固定回路であって、
シフトレジスタと、
乗算を行うための複数の乗算器と、
加算を行うための複数の加算器と、
前記シフトレジスタ、前記複数の乗算器及び前記複数の加算器の接続を制御するための接続回路とを有し、
前記接続回路の接続に応じて、マッチトフィルタ及びバタフライ演算回路の動作が可能である準固定回路。
(付記20)
前記接続回路の接続に応じて、マッチトフィルタ及び高速フーリエ変換回路の動作が可能である付記19記載の準固定回路。
(付記21)
さらに、前記乗算器又は前記加算器の入力として与えるデータを格納するためのメモリと、
前記メモリ内のデータを前記乗算器又は前記加算器に入力する順番を制御するスケジュール回路と
を有する付記19記載の準固定回路。