(57)【要約】【課題】本発明の目的は、送信と受信、あるいは、同期と復調を時分割で処理可能なハードウェアおよびソフトウェアを考案し、ソフトウェア無線処理を少ない回路面積で実現することである。【解決手段】高速にコンフィグレーションの変更が可能な構成の動的にコンフィグレーションの変更が可能な回路ＤＲＣと、汎用プロセッサと、ＡＤコンバータ、ＤＡコンバータといった外部デバイスと接続するためのインターフェースを備え、送信と受信、同期と復調など、複数の異なる処理を時分割で行うように構成した、ソフトウェア無線チップを用いて、ソフトウェア無線を実現する。【効果】本発明の構成および方式により、無線信号処理中の異なる処理を時分割で処理することが可能となる。その結果、各処理それぞれにＦＰＧＡの領域を割り当てて処理を行うソフトウェア無線方式に対して、より少ない面積の回路でソフトウェア無線を実現することができる。【選択図】図２
2006108953.tif 000002
【特許請求の範囲】
【請求項１】
アンテナと、
前記アンテナから入力される受信情報及び前記アンテナから出力する送信情報の処理を行う無線処理チップを有するシステムであって、
前記無線処理チップは、前記送信情報の処理と前記受信情報の処理を時分割に行い、前記送信情報の処理を行う場合と前記受信情報の処理を同一の回路で回路構成を変更することにより処理を行うことを特徴とするソフトウェア無線装置。
【請求項２】
請求項１において、
前記無線処理チップで受信したデータが自局向けの通信データであった場合には、送信待ち状態にあるＣＰＵからの送信要求をキャンセルし、ａｃｋ送信を行うことを特徴とするソフトウェア無線装置。
【請求項３】
請求項１において、
前記受信情報の処理を時分割でその回路構成を切り替えて処理することを特徴とするソフトウェア無線装置。
【請求項４】
請求項３において、
前記受信情報の処理を時分割で行う場合、その処理の一部を実行する専用回路ブロックを有することを特徴とするソフトウェア無線装置。
【請求項５】
演算を行うセルを少なくとも1種類は保持するセルアレイ構造を持つプロセッサが、セルの演算機能とセル間のデータの転送方向からなる構成情報をプロセッサ自身で切替るために、セルアレイから切替指示を示す信号を切替制御部に転送し、構成を切替る状態を複数持つ状態遷移テーブルの中から次の状態を選択し、次の状態をセルアレイに通知することにより、構成の切替の制御を行うことを特徴とする半導体集積回路。
【請求項６】
請求項５において、
前記状態遷移テーブルは、現在のセルアレイの状態が、指定した状態と一致し、かつ切替指示の信号が所定のデータと一致することを切替条件とする表現と、現在のセルアレイ如何にかかわらず、切替指示の信号が所定のデータと一致することを切替条件とする表現との両方を表現できることを特徴とする半導体集積回路。
【請求項７】
請求項５において、
前記状態遷移テーブルは、状態遷移と同時に、ホストプロセッサへ割り込み要求を通知することを指定できることを特徴とする半導体集積回路。
【請求項８】
請求項５において、
前記セルアレイから前記切替制御部に切替指示を通知する信号の出力は、前記セルが、演算やデータ転送を行うための通常の命令を利用して行うことを特徴とする半導体集積回路。
【請求項９】
演算を行うセルを複数保持するセルアレイ構造と、前記セルの演算機能とセル間のデータの転送方向を含む構成情報を切替るための切替制御部とを有するを有するリコンフィギュラブル回路を具備するプロセッサであって、
前記切替制御部は、複数の遷移チャネルを有する状態遷移テーブルを有し、
前記複数の遷移チャネルのそれぞれは、複数の前記構成情報のうち遷移先の構成情報に対応する遷移条件を保持し、前記遷移先及び前記遷移条件が同じ場合は、異なる遷移元であっても同一の遷移チャネルに保持されることを特徴とする半導体記憶回路。
【請求項１０】
請求項９において、
前記複数の遷移チャネルのそれぞれは、遷移先の構成情報を示す第1情報と、遷移元の構成情報を示す第2情報と、前記遷移条件に遷移元の情報が含まれるかを示す第3情報を有することを特徴とする半導体記憶回路。
【請求項１１】
請求項１０において、
前記半導体集積回路は、前記リコンフィギュラブル回路を制御するＣＰＵを更に有し、
前記複数の遷移チャネルのそれぞれは、更に、遷移する際に前記ＣＰＵに割り込みを通知するか否かを示す第４情報を有することを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的にコンフィグレーション情報が変更可能な半導体装置又はその半導体装置を用いたソフトウェア無線装置に関し、特に、二次元アレイ構成を備える半導体装置及びそれを利用したソフトウェア無線装置に適用して有用なものである。
【背景技術】
【０００２】
近年、情報処理機器の普及と高性能化に伴い、さまざまな無線通信方式が登場している。これらの無線通信方式に対して、無線通信に必要な送受信の信号処理をソフトウェアで実現し、ソフトウェアを交換することで、複数の異なる無線方式に対応するソフトウェア無線機が提案されている。
【０００３】
ところが、最近の無線通信方式をソフトウェアで実現するには、プロセッサの汎用性と、高い処理性能が必要となり、現在パーソナルコンピュータやサーバで用いられている汎用プロセッサでは実現が困難であるといった問題がある。さらには、現在、半導体製造技術の進歩によりＬＳＩで実現できる回路規模が拡大しており、大きな回路を有効利用したＬＳＩが求められている。
【０００４】
こうした問題に対して、ＦＰＧＡに代表されるような、ハードウェアをどのように構成するかを指定したコンフィグレーション情報を変更することで動作を変えるＬＳＩを用いることで解決を図る例が、特許文献１や、特許文献２に開示されている。
かかる先行技術では、ＦＧＰＡに代表されるような回路ではコンフィグレーション情報に従ってハードウェアを変更することにより専用回路に近い構成を実現することが可能であるため、要求性能を達成できることが予想される。
【０００５】
さらに、汎用性を保ちつつ、大きな回路を有効利用して処理能力を向上させているＬＳＩとして、ハードウェアをどのように構成するかを指定したコンフィギュレーション情報を変更することで動作を変えるＬＳＩのうち、リコンフィギュラブルＬＳＩと呼ばれる技術が注目されてきている。このリコンフィギュラブルＬＳＩの動的なコンフィギュレーション制御構造が、特許文献３に開示されている。
【０００６】
かかる先行技術ではスループット向上のために、他のコントローラやＣＰＵの介在なしに自立的に動的なリコンフィギュレーションを行うための制御構造が提示されているが、以下の技術内容となっている。演算機能を持つ演算セルと、演算セル間のデータの流れを切り替える切替セルの２種類のセルを持つ二次元アレイに対する制御方法であり、動的なリコンフィギュレーションを行うため、ユーザが設定するコンフィギュレーション状態の遷移テーブルの構造が状態遷移の数に比例する構造となっている。
【０００７】
【特許文献１】特開平１１−２２０４３号公報
【０００８】
【特許文献２】特開２００３−３１８８０２号公報
【特許文献３】特開２００１−３１２４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１や特許文献２に示される従来の方法では、既存のＦＰＧＡやＰＬＤを想定しているため、コンフィグレーションの切り替えに比較的長時間が必要である。そのため、一つの通信方式を行っているときにはコンフィグレーションの切り替えを実行しないで、無線方式を切り替えるときにのみ、コンフィグレーションの切り替えを行う。特許文献３には、無線方式についての記載はない。この場合、例えば送信と受信や、受信中の処理である同期と復調の回路は同時に動作することはないが、あらかじめ両方を用意しておく必要がある。そのため、回路の面積が増加してしまうという問題が発生する。
また、特許文献３に示される従来の方法では、リコンフィギュラブル回路方式に対する汎用性、ハードウェア容量、およびユーザインターフェースに対して、課題が残されている。以下でこれらの課題について、順に述べる。
【００１０】
一番目の課題は、演算セル内でデータの流れを切り替える構造のセルに対しては適用できないという問題である。セル構造として、演算セル内にデータの流れを切り替える機能が包含されても、特に実現性の阻害にはならないため、汎用性の点で、難点がある。
【００１１】
二番目の課題は、動的なリコンフィギュレーションを制御するモジュール内でのコンフィギュレーションの状態遷移を表現するテーブル構造の問題である。従来の方法では、状態遷移の数にテーブル容量が比例する構造となっており、さらに、制御論理も複雑化するため、状態遷移数が増加した時にはＬＳＩの作り直しが起こりうるという問題である。一般に、状態遷移表現において、状態遷移の数は状態の数の２乗に比例するため、この構造を採用している限り、将来の仕様変更に対する柔軟性と適用範囲の汎用性が損なわれ、ＬＳＩ製造後にコンフィギュレーションを変更してシステム機器の多様性に応えることが困難となる。
【００１２】
三番目の課題は、二次元アレイからのリコンフィギュレーション制御モジュールへの遷移イベント（トリガ）の発行方法は、特に開示がなく、二次元アレイ上でコンフィギュレーションを作成するユーザの使いやすさの点が未配慮という問題である。
【００１３】
四番目の課題は、状態遷移に伴う他の動作の指定、例えば、ＣＰＵへの割込み要求動作などは、その方法が開示されておらず、ＣＰＵとの連動した動作という点が未配慮という問題である。
【００１４】
本明細書に開示される発明の一つの目的は、送信と受信、あるいは、同期と復調を時分割で処理可能なハードウェアおよびソフトウェアを考案し、ソフトウェア無線処理を少ない回路面積で実現することである。
また、本明細書に開示される発明の他の一つの目的は、ソフトウェア無線処理等に代表される処理量の多いアプリケーションにおいて、自律的にコンフィグレーションを変更するために最適のコンフィグレーションの変更方法を実現することである。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記のとおりである。
無線信号処理は、動的にコンフィグレーションの変更が可能な回路（Dynamically Reconfigurable Circuit、以下、ＤＲＣと称する）と汎用プロセッサを含んだ、ソフトウェア無線チップを用いて処理する。
【００１６】
ＤＲＣは高速にコンフィグレーションの変更が可能な構成とし、さらにＡＤコンバータ、ＤＡコンバータといった外部デバイスと接続するためのインターフェースを備える。
ソフトウェア無線チップ中の汎用プロセッサでは、無線通信処理のうち、プロトコル層の処理を行い、ＤＲＣでは、物理層の処理を行うように処理を分担する。
【００１７】
ＤＲＣが実行する物理層の処理は、送信と受信、同期と復調など、複数の異なる処理を時分割で行うことにより回路面積を削減できる。
回路の利用効率の向上と、面積削減のため、無線信号処理の一部は専用回路を用いて行う。ここで専用回路としている処理は、複数の無線信号処理で共通に用いられる処理であるため、複数の無線通信方式において利用することが可能である。
【発明の効果】
【００１８】
本発明の構成および方式により、ソフトウェア無線に代表される処理量の多いアプリケーションを面積の小さいハードウェアで実現できる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明による代表的な実施例を図面に従って詳細に説明する。なお、以下においては、同じ参照番号、記号は同じものもしくは類似のものを表わすものとする。
図１は、車１００に搭載されたテレマティクス端末１０４の一例を示すものであり、テレマティクス端末の一部をなすソフトウェア無線機１０６のシステム適用の例である。ここで、ソフトウェア無線機とは、従来、途中で切り替えることのなかった無線機の仕様を、ソフトウェアにより変更する無線機である。
【００２０】
ソフトウェア無線機は、将来の無線仕様の変化や、１０１や１０２の無線基地局の設置状況や電波状況により走行中に最適な無線仕様が変化したときに、この変化に柔軟に対処して無線仕様を切り替える。
切り替え対象の無線仕様としては、例えば、無線ＬＡＮ、ＥＴＣ（ＤＳＲＣ）、地上ＤＴＶ通信などがある。
以下では、このソフトウェア無線機の構成と、ダイナミックリコンフィギュラブル回路を利用したＤＲチップの位置付け、構成、利用方法を述べる。
1.ソフトウェア無線機の構成とＤＲチップの位置付け
図１において、テレマティクス端末１０４は、カーナビゲーションシステム１０７の画像や音声などの情報処理をつかさどり、カーナビゲーションシステム１０７に情報データを通信するために、ソフトウェア無線機１０６を利用する。
カーナビゲーションシステム１０７とソフトウェア無線機１０６間のインターフェース１０８は、ＵＳＢなどの標準のデータ通信インターフェースを利用する。
【００２１】
図２は、１０６の内部構成を示すブロック図である。無線データは、アナログ処理部２０２を通ってディジタルデータに変換され、ディジタル処理をダイナミックリコンフィギュラブル（ＤＲ）チップ２０３で行い、インターフェース１０８を通して、カーナビゲーションシステム１０７に転送される。データを送信する場合には、この逆の経路を通る。ＤＲチップは、動作中にコンフィギュレーション情報を変更することにより、その回路構成を処理すべき演算を高速に行えるように変更可能なチップである。本実施例では、データを受信する第１期間とデータを送信する第２期間とで、その回路構成を変更することによりＤＲチップを共有し、小面積で実現できるにしたものである。
【００２２】
アナログ処理部２０２は、アンテナ２００、ＲＦ・ＩＦ回路２０１、アナログディジタルコンバータ（ＡＤＣ）・ディジタルアナログコンバータ（ＤＡＣ）からなる。ＡＤＣは受信時、ＤＡＣは送信時に利用する。ディジタル処理部のＦＬＡＳＨ２０５は、各種のプログラムを格納しておくために利用する。
【００２３】
図２のアナログ処理部２０２の別の実施の形態として、周波数帯により、複数のアナログ処理部を利用する構成を示したのが図３である。図３において、３０１、３０２、３０３が、各々、周波数帯により、用意したアナログ処理部である。利用する無線仕様を決定する制御信号３０４により、無線信号スイッチ部３０５が動作し、どのアナログ処理部をディジタル処理部と接続するかを選択する。制御信号３０４は図２の２０７の一部である。ディジタル化されたデータは、同じく２０７の一部である３０６を通って、ディジタル処理部に送られる。
【００２４】
次に、ソフトウェア無線機１０６が、カーナビゲーションシステム１０７とどのような手順で無線データをやり取りするのかを、図４に従って以下に述べる。図４（a）は、カーナビゲーションシステム１０７からデータを送信する場合の手順を示し、図４（ｂ）は、カーナビゲーションシステム１０７が、ソフトウェア無線機１０６を通してデータを受信する場合の手順を示す。
【００２５】
図４（a）に示す送信時には、まず、カーナビゲーションシステム１０７でデータをフレームという単位に分割する（４００）。ここで、フレームとは無線通信時にデータを転送する単位であり、図５に示す無線データ構造においては、フレーム領域５０３の中でヘッダなどを除いたデータ部分である。
【００２６】
次に、カーナビゲーションシステム１０７からソフトウェア無線機１０６に送信要求４０１を行い、ソフトウェア無線機１０６が送信受付４０２を行い、送信受付信号ＳＤＲ−Ａｃｋ信号をカーナビゲーションシステム１０７に返した後、カーナビゲーションシステム１０７からソフトウェア無線機１０６にフレーム単位のデータを転送する。このデータを受けて、ソフトウェア無線機１０６は、1パケットの構築と送信４０６を行う。ここで、パケットとは無線通信データの最小単位であり、図５の５０４である。パケット５０４は、元のデータを含むフレーム領域５０３の他、パケットの先頭を検出するためのプリアンブル領域５３１と、ヘッダ領域５０２から構成される。
【００２７】
パケットを全て送信し、送信が終了したら、受信局からの受付信号Ａｃｋを、カーナビゲーションシステム１０７に転送し、送信終了４０５の処理となる。もし、この時、送信に失敗したら、ソフトウェア無線機１０６は再度送信を行う。
【００２８】
図４（ｂ）に示す受信時には、ソフトウェア無線機１０６が1パケット受信とフレーム取出し４０８を行い、カーナビゲーションシステム１０７に受信データを受け付けるよう要求する受信受付要求４０９を行う。カーナビゲーションシステム１０７は、受信開始４０７を行うため、受信受付信号Ｎａｖｉ−Ａｃｋをソフトウェア無線機１０６に転送する。これを受けて、ソフトウェア無線１０６は、受信データ転送４１０を開始し、1フレームの受信データをカーナビゲーションシステム１０７に転送する。カーナビゲーションシステム１０７では、受信受付４１１を開始する。ソフトウェア無線１０６は、全ての受信データをカーナビゲーションシステム１０７に転送し終えたら、終わりを示す転送終了信号ＥＮＤをカーナビゲーションシステム１０７に転送する。その後、カーナビゲーションシステム１０７は、フレームの組立４１２を行うと同時に、送信局に返すＡＣＫ信号をソフトウェア無線機１０６に転送する（ＡＣＫ送信動作４１３）。ＡＣＫ送信は送信動作の一種であり、ソフトウェア無線機１０６は図４（ａ）の動作を行う。
【００２９】
図４の二つの動作を、ソフトウェア無線機１０６で切り替える方法を示したのが、図６である。図６は、同一のハードウェアの回路構成を変更することで、同一のハードウェアで受信と送信を両立させるための処理フローである。
【００３０】
図６で、システムリセット６０１、受信ウエイト６０２などの左半分は、ソフトウェア無線機１０６の受信動作を示し、送信ウエイト６０５、送信可否判定６０６などの右半分は、送信動作を示す。
【００３１】
まず、受信動作では、システムリセット６０１を行ったあと、送信が起こるとき以外は、常時動作する。1パケットのデータの先頭がアナログ処理部２０２から送付されるまで、ＤＲチップ２０３は受信ウエイト６０２を行う。データが送付され始めると、データの復調などの受信動作６０３を開始し、データ復調が終了すると、受信終了６０４する。
送信動作は、受信の合間を縫って行う。受信を行っているあいだ、送信はウエイトする（６０５）。受信終了の後、送信動作を実施してよいかどうかの送信可否判断６０６を行い、ＯＫとなったら送信開始６０７を実行し、1パケットデータを送信したら送信終了動作６０８を行う。
以上のように、受信と送信を同一のハードウェアで処理することによりソフトウェア無線機に搭載される半導体集積回路を小面積で実現できる。
【００３２】
本実施例では、一つのハードウェアの回路構成を変更することで受信動作及び送信動作を行う場合は、受信動作のトリガは外部の無線基地局より送信させるため、ソフトウェア無線機ではその送信タイミングを知ることはできない。従って、待機状態を受信動作を行うフローとすると都合がよい。
２．ＤＲチップの構成、および、ソフトウェアとハードウェアのインターフェース
以下では、図７を用いて、ディジタル信号処理を行うＤＲチップ２０３の構成と、ソフトウェアとハードウェアのインターフェースについて述べる。ここで、ソフトウェアは、ＤＲチップ２０３上の中央処理装置ＣＰＵ７００で実行する。
【００３３】
２．１  ＤＲチップの全体構成
図７に示すように、ＤＲチップは、ＡＤＣ／ＤＡＣ２０６、カーナビゲーションシステム１０７、および、ＲＯＭであるＦＬＡＳＨ２０５とのインターフェース回路と、受信・送信データの復調・変調動作を行うダイナミックリコンフィギュラブルエンジンＤＲＥ７０８、および、全体処理の制御と受信・送信データ復調・変調の前処理を行うＣＰＵ７００から構成する。
【００３４】
まず、ＤＲチップ２０３の周辺インターフェースについて述べる。ＡＤＣ／ＤＡＣ２０６は、入出力信号線２０７を介してＤＲＥ７０８と接続する。カーナビゲーションシステム１０７は、入出力信号線１０８を介してＵＳＢインターフェース７０４と接続する。プログラムなどを格納するＦＬＡＳＨ２０５は、入出力信号線２０４を介してフラッシュインターフェースＦＬ−ＩＦ７０５と接続する。ＦＬＡＳＨ２０５には、ＣＰＵ７００で実行するソフトの他、ＤＲＥ７０８で実行するコンフィグレーションデータなどを格納する。ここでコンフィグレーションデータとは、ＤＲＥのハードウェア構成（回路構成）を指定するためのデータである。
【００３５】
次に、ＤＲＥ７０８とＣＰＵ７００とのインターフェースを述べる。ＣＰＵ７００は、ＣＰＵバス７０２を介して、ＤＲＥ７０８、内蔵メモリＭＥＭ７０１、および、周辺インターフェース制御回路ＵＳＢ７０４、ＦＬ−ＩＦ７０５や割り込み制御回路ＩＮＴＣ７０６と接続する。ＣＰＵバス７０２とこれらの回路は、ブリッジ回路７０３、および、ブリッジ回路７０７を介してデータ転送を行う。
２．２  無線ソフトウェアのＤＲチップ上の動作概要
次に、図８に従い、無線ソフトウェアのＤＲチップ上での動作概要を述べる。ＤＲチップ上で行う無線処理は、プロトコル処理８００、無線ＡＰＩ８０１、およびＤＲＥ処理８０２の３階層に分かれる。プロトコル処理８００、無線ＡＰＩ８０１はＣＰＵ７００で実行され、ＤＲＥ処理８０２はＤＲＥ７０８で実行される。
【００３６】
ＤＲＥ処理８０２では、受信データの復調と、送信データの変調といった物理層の処理と、一部のＭＡＣ層の処理を行う。無線ＡＰＩ８０１では、ＤＲＥでの処理が実行できるように、ＤＲＥ上のレジスタやメモリとのアクセスを処理する。８２０から８２８までが、主要な無線ＡＰＩの種類である。プロトコル処理８００では、エラー回避のためのデータ作成とチェックや、通信に必要なヘッダの作成などの処理を行う。プロトコル処理８００とＤＲＥ８０２との通信は、基本的に無線ＡＰＩを用いておこなう。図８で、８２０、８２１、８２２などの長方形は無線ＡＰＩを示し、８２４、８２５などの角に丸みがある囲いは、割り込みによるＤＲＥからＣＰＵへの状態通知を表す。
【００３７】
図８のＤＲＥ８０２のラインで、Ｓ８０７のラインは、送信動作のラインで、太線８０５や８０６が、データ送信中を示し、点線は送信動作を行っていないことを示す。Ｒ８０８のラインは、受信動作のラインで、８１０などの細い矢印は有効な受信データを探索する同期動作と呼ばれる処理を、太い矢印８０９は、有効なデータを復調して受信中を示し、点線は受信動作を行っていないことを示す。
【００３８】
８２０から８２２までは、初期化に当たる部分である。ハードウェア初期化８２０が、メモリやレジスタの初期化などハード的な初期化をＤＲＥに対して行う。ソフトウェア無線初期化８２１では、ＤＲＥを無線処理用に初期化する。コンフィグレーションデータの格納や、無線通信に使うパラメータの格納などである。起動８２２では、ＣＰＵが無線通信動作の開始をＤＲＥに指示する。ここで、ＤＲＥは受信の同期動作８１０を開始する。また、ＤＲＥは、有効なデータが受信されていない状態では、送信要求８２３に応じて送信動作を行う。送信要求８２３は、ＣＰＵから発行され、要求の発行と同時にデータをＤＲＥに転送する。ＤＲＥは８０５の時間に送信動作を行う。送信が終了したら、割り込みで送信終了８２４を伝える。
【００３９】
受信動作は、送信が実施されている区間は待機しており、送信終了と共に再び同期動作を開始する。同期が終了したら同期完了を通知し（８２５）、データの復調動作を実施する。復調動作は８０９の区間で行う。全てのデータの受信、復調を終えると、受信終了を割り込みでＣＰＵに通知する（８２６）。ＣＰＵはこれを受けて、復調済みのデータを取得する受信データ取得（８２７）を行う。全ての受信データを取得後、ａｃｋの送信要求８２８を行う。ＤＲＥは送信可能であれば８０６の区間にａｃｋを送信し、ａｃｋ送信の終了後、送信終了８２４を通知する。
【００４０】
本実施例では、ＣＰＵとＤＲＥとの通信は、同期完了、受信終了、送信要求、送信終了等の割り込みとそのためのデータのみであり、ＤＲＥのコンフィグレーションの変更はＣＰＵは指示しない。したがって、ＣＰＵとＤＲＥの通信量を削減でき、図７の内部バス７０２の使用量を削減できる。また、ＣＰＵは、一度ＤＲＥに起動指示をすることによりその後は、一連の送信動作、受信動作が終わるまでＤＲＥに指示する必要がないため並列動作が可能となり、ＬＳＩ全体の高速動作が可能となる。更には、送信と受信を時分割で行うことにより、同一のハードウェアで実現し、半導体集積回路の小面積かを実現している。
【００４１】
３．ＤＲＥの無線通信動作と構成
ここでは、図８に示されるＤＲＥの無線通信の動作と、そのための構成を述べる。
３．１  ＤＲＥの無線通信の動作の概観
図９は、ＤＲＥの無線通信の動作を示す。ＤＲＥは受信動作９００と送信動作９０２に示す受信と送信動作を主要機能とし、図８に示すＡＰＩは全てこれらの動作に関連する。送信動作は、他の無線装置が送信を行っていないタイミングを見つけて行うため、また、送信と受信を時分割で行うためＣＣＡと呼ばれる送信管理９０１も行う必要がある。
【００４２】
受信動作９００は、本無線機が利用する無線周波数帯が現在利用されているかどうかを確認するため、基本的には常時動作する必要があり、優先的に扱われる。受信動作９００は、送信管理９０１に対して、９０４に示す受信動作の状態通知を行う。また、送信管理９０１から送信が許可９０６され、かつ、ＣＰＵのプロトコル管理９０３から送信要求９０８を受け取った状態で、受信する信号がないことが確認できた場合は、送信動作９０２に対して送信開始指示９０９を通知する。
【００４３】
受信動作９００が送信管理９０１に通知する情報は、有効なパケットを検出して1フレームデータの受信処理を開始したことを示す1フレーム開始通知と、受信終了割り込み８２６と同時に発行する1フレーム終了通知である。1フレーム終了は、受信が失敗したときにも発行する。
【００４４】
ＣＰＵのプロトコル処理９０３は、現在の送信管理の内部状態９１０と、カーナビゲーションシステム１０７からの送信要求４０１を受けて、送信管理９０１に対する内部状態の遷移を決めるための送信の許可または禁止の指示情報９０７の発行と、受信動作９００への送信要求９０８を行う。ＣＰＵ側からは、その他、リセット指示も行う。
送信動作９０２は、受信動作９００からの送信開始指示９０９により、送信動作を開始する。また、送信管理９０１に1フレームデータの送信の開始と終了の通知を行い、次の送信動作の可否の判断材料を送信管理９０１に提供する。
【００４５】
送信管理９０１は、受信と送信の状況を示す９０４と９０５、および、プロトコルレベルでの次送信許可/禁止指示９０７から、送信可否を決定する。送信可否の判定結果をもとに、送信許可/禁止の指示９０６を受信動作９００に発行する。
３．２  ＤＲＥの受信と送信動作
ここでは、図１０と図１１に従って、図９の中の受信と送信動作をＤＲＥで実現する状態遷移フローを述べる。ここで、受信動作に必要な処理、送信動作に必要な処理の夫々を更に分解し、各ステートに割り当てることで、同一のハードウェアで時分割に処理を行い、ＤＲチップの小面積化を図っている。
【００４６】
（１）受信動作
受信動作は、まずＲ１ステートのパケット検出から実施する。この時、前処理として、Ｆ1ステートによりパケット検出が可能となるデータ量をフィルタ処理する。パケット検出は、無線データ構造図１１の１１００のうち、プリアンブル１１０１中のＳＹＮＣ１１０５をパケットの始まりとして検出することにより行う。ＳＹＮＣ１１０５は、通常ＡＬＬ１などの決まったコードとなっており、パケット検出ではその一部のビットの検出を行う。パケットは、常に通信経路に存在するわけではないので、対象とするコードが検出されるまで処理を行う。パケットが検出されるとＲ２ステートへ遷移する。
【００４７】
また、Ｒ１ステートでは送信を行うＳ１ステートへの遷移の判定も行う。送信管理１０３０が送信を許可しており、かつ、ＣＰＵ７００からの送信要求が発行されている状態で、パケットが検出されていない場合にはＳ１ステートへ遷移する。
【００４８】
次に、シンボル検出を、Ｒ２ステートとＲ３ステートで行う。ここで、シンボルとは、情報データ1ビット分のデータに当たるデータ群である。また、シンボル検出とは、もっとも確からしいデータが得られるように、利用するデータの読み込みタイミングを決める動作である。シンボル検出は、ＳＹＮＣの残りビットを用いて行う。このため、シンボル検出でも、Ｒ２ステートの前処理として、Ｆ１ステートにより必要なビット数分に相当するデータに対してフィルタ処理を行う。Ｒ３ステートで、シンボル検出が成功したならば、次のＲ４ステートに遷移する。シンボル検出が失敗したならば、データの不具合などの原因で受信は失敗したと判定し、当該受信処理は終了してＲ１ステートに遷移する。
【００４９】
第３番目に、図１１におけるＳＦＤ１１０６以降のデータに対して、復調処理をＲ４ステートとＲ５ステートで行う。復調処理においても、必要ビット数だけのデータをＦ１ステートでフィルタ処理を行なってから処理する。Ｒ５ステートでは、データの保護のためのスクランブル処理や、エラー検出のためのＣＲＣ処理を無線特殊演算１０３１にて行いながら復調する。1ビット復調されると、1シンボル終了として、Ｒ６で実施する検出処理が実施できるまで、または、データが全て復調されるまで繰り返す。
【００５０】
最後に、Ｒ６ステートでは、復調結果からフレームの始まりを検出するＳＦＤ検出や、誤りデータがないことを判定するＣＲＣ判定を行う。ＳＦＤ１１０６は、無線システムにより所定のビット列が決まっており、ＳＦＤ検出は、所定ビット列と復調結果が一致するかの判定により行う。ＣＲＣ判定は、無線特殊演算１０３１にてヘッダ１（１１０７）に対してＣＲＣ演算を行った結果が、パケット１１０４に格納されているＣＲＣ−Ｈ１１０８と一致するか否かを判定する。ＣＲＣ−Ｄ１１１１は、ヘッダ２（１１０９）とデータ１１１０のＣＲＣ演算結果である。ＣＲＣ−Ｄ１１１１の判定はＣＲＣ−Ｈ１１０８とは異なり、データ１１１０のＣＰＵ７００への転送を無線特殊演算１０３１から直接行うために、無線特殊演算１０３１にて行う。したがって、ＣＲＣ−Ｄを無線特殊演算１０３１へ送った時点で復調終了とする。
【００５１】
Ｒ６ステートの各種判定に引き続く処理を述べる。まず、ＳＦＤ検出がＯＫであれば、引き続くデータを復調するためＲ４へ遷移する。ＳＦＤ検出がＮＧなら、Ｒ１ステートへ遷移し、受信失敗として終わる。ヘッダ１（１１０７）のＣＲＣ判定がＯＫならＲ４ステートへ遷移するが、ＮＧなら受信失敗としてＲ１ステートへ戻る。ヘッダ２（１１０９）とデータ１１１０のＣＲＣ判定がＯＫならば、データを無線特殊演算１０３１からＣＰＵ７００に送付し、復調終了としてＲ１ステートへ遷移する。
【００５２】
（２）送信動作
送信動作は受信動作と異なり、無線通信データの誤り検出の結果を条件とする分岐が不要であるため、Ｓ１ステートのみで実現する。
ＣＰＵ７００は、データの前にヘッダなどの無線通信のための情報を付加したあと、ＤＲＥ７０８へ転送し、送信要求を発行する。ＣＰＵ７００から送られたデータは、無線特殊演算１０３１でＣＲＣ処理やスクランブルを行なった後、Ｓ１ステートで無線通信用データへの変換を行い、さらに、Ｆ２で送信用のフィルタ処理を行う。その後、ＤＲＥ７０８からＡＤＣ／ＤＡＣ２０６へ無線通信用データを送信する。送信処理終了後は、Ｓ1ステートからＲ１ステートへ遷移する。
【００５３】
（３）送信管理とのインターフェース
３．１で述べた送信管理９０１と、受信動作９００と送信動作９０２のインターフェースの実現方法を、以下で述べる。
受信動作におけるインターフェース９０４のうち、1フレーム開始情報は、パケットが検出され、受信が開始された時点で行う。即ち、Ｒ１ステートからＲ２ステートへの遷移が確定した時に1フレーム開始を発行する。1フレーム終了または受信ＮＧの情報は、パケット検出後、受信が失敗するか、１フレームの復調が終了した時点で行う。即ち、Ｒ３からＲ１への遷移が確定した時点のシンボル検出ＮＧか、Ｒ６からＲ１への遷移が確定した時点の受信失敗であるＳＦＤ検出ＮＧ、または、ヘッダＣＲＣのＮＧか、1フレーム復調終了で１フレーム終了を発行する。
【００５４】
これらの通知を受けて、送信管理１０３０は、送信可能なタイミングを決定する。例えば、1フレーム終了後1フレーム開始が一定期間行われないケース、受信ＮＧ後1フレーム開始が一定期間行われないケース、および1フレーム終了が一度もなく1フレーム開始が一定期間行われないケースなどを受信終了または受信なしと判断して、送信可能とする。
【００５５】
送信管理１０３０からの送信許可／禁止情報９０６を受け取る時期は、上記の基準からすると、Ｒ１ステートでのパケット検出の繰り返し処理の開始時が適当となる。何故なら、上記の送信許可基準では、送信許可の決定がなされるのは、1フレーム開始が行われない時であり、これはＲ1ステートでしか起こりえないからである。
Ｒ１ステートにおいて、送信許可９０６を受け取り、かつ、送信要求をＣＰＵ７００から受け取った状況で、パケット検出の繰り返し処理の開始時に到達した場合にＳ１ステートに遷移し、送信を開始する。
【００５６】
次に、送信動作におけるインターフェース９０５について述べる。まず、送信開始情報は、送信状態Ｓ１に遷移することが確定した時に送付する。送信終了は、Ｓ１で送信が終了し、Ｒ１への遷移が確定した時に送付する。
以上のように、送信動作と受信動作の切り分けにとどまらず、送信動作、受信動作の夫々を切り分けることで、ＤＲチップを小面積化することが可能となる。なお、本実施例で示した各ステートの切り分けは、ソフトウェア無線に適した一例であり、そのＤＲチップの構成等に基づいて自由に切り分けていいことは言うまでもない。
【００５７】
３．３  ＤＲＥの構成
ここでは、３．１から３．２で述べた無線通信を実現するためのＤＲＥ７０８の構成を図１２に従って述べる。ＤＲＥ７０８は、ＡＬＵアレイエンジン（ＡＬＵ Ａｒｒａｙ Ｅｎｇｉｎｅ）ＡＬＵＡＥ１２０２と無線専用回路ＷＣＥ（Ｗｒｅｌｅｓｓ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ Ｅｎｇｉｎｅ）１２０１と、内部バス１２００と外部入出力スイッチＥＸＩＯＳ１２０３から構成される。
【００５８】
ＡＬＵＡＥ１２０２は、図１０に示す送受信の状態遷移を、自律的ダイナミックリコンフィグレーションにより実現する回路モジュールである。自律的ダイナミックリコンフィグレーションとは、自身が計算した結果により、自身のコンフィグレーションを変更することを意味する。即ち、ＣＰＵからの指示を受けずに図１０に示される各ステート間の遷移タイミングを検出し、次のステートの処理に対応する回路構成に自立的に変更することによって、ＣＰＵとＤＲＥの通信量を削減している。ＥＸＩＯＳ１２０３は、ＡＬＵＡＥ１２０２と外部とのデータアクセス先を選択する回路であり、アクセス先としてＷＣＥ１２０１と、ＬＳＩ外部のＡＤＣ／ＤＡＣ２０６がある。図８に示される送信終了や受信終了等のＣＰＵへの割込みは、７１０を介して割り込みコントローラＩＮＴＣ７０６に要求を通知することにより行う。また、ＡＬＵＡＥ１２０２とＷＣＥ１２０１の通常のデータ転送は、内部バス１２００を介して実施できる。ＣＰＵ７００とＡＬＵＡＥ１２０２、または、ＷＣＥ１２０１とのデータ転送は、Ｂｒｉｄｇｅ１（７０７）と内部バス１２００を介して行う。
ＷＣエンジン１２０１は、後に詳述するがＡＬＵＡＥ以外で処理をすることが望まれる送信管理１０３０と無線特殊演算１０３１を実現する回路モジュールである。
【００５９】
４．ＡＬＵＡＥの構成と設定レジスタについて
４．１  概要
ここでは、ＡＬＵＡＥ１２０２の構成と設定レジスタについての概要を述べる。図１３に構成を示す。ＡＬＵＡＥ１２０２は、バスコントローラＢＳＣ１３００を介して内部バス１２００と接続される。ＢＳＣ１３００は内部バス１２００からの入力を各部に振りわけることが主な機能である。アレイエンジンコントローラＡＥＣＴＬ１３０１は、ＡＬＵＡＥ１２０２の制御の他、割り込みコントローラＩＮＴＣ７０６に割り込み要求を出す。
【００６０】
各種処理をつかさどるメインブロックは、ＡＬＵアレイＡＬＵＡ１３０５である。ＡＬＵＡ１３０５はアレイ状に並べられたＡＬＵセルにより構成される。ＡＬＵアレイは、各ＡＬＵセルの演算機能や各ＡＬＵセル間の接続関係を変更することで各ステートの処理を実現する。ＡＬＵＡ１３０５とメモリや外部デバイスとのデータ転送にはロードストアアレイＬＳＡを利用する。ＬＳＡは、右に位置するＬＳＡＲ１３０４とＡＬＵセルを挟んだ左に位置するＬＳＡＬ１３０６がある。ＡＬＵＡ１３０５への入出力は、ＬＳＡＲまたはＬＳＡＬを介して行われる。
【００６１】
内部ローカルメモリＬＭＥＭ（１３１２、１３１３）は、ＬＳＡＬ１３０６と、ＬＳＡＲ１３０４の隣に配置されており、内部にローカルメモリと、そのインターフェースを備える。ＬＭＥＭに対する入出力はＬＳＡまたはＩＯＰより行われる。
ＩＯＰ（１３０８、１３０７）はＬＭＥＭの隣に配置されており、ＢＳＣ１３００を介した内部バスとの通信を行う。また、配線１３２１、１３２２からＥＸＩＯＳを介してＷＣＥ、および、ＤＲチップ外部のＡＤＣ／ＤＡＣとの通信を行う。
【００６２】
上記のＡＬＵＡ１３０５、ＬＳＡ（ＬＳＡＲ１３０４とＬＳＡＬ１３０６）、ＬＭＥＭ（１３１２、１３１３）、ＩＯＰ（１３０７、１３０８）は、機能やアクセス先の変更のため、コンフィグレーションをダイナミックに、すなわち、処理実行中に変更可能である。
また、これらのモジュールの動作を指示するのがコンフィグレーションレジスタであり、図１４（ｂ）に示す種類と機能がある。コンフィグレーションレジスタを変更するための一時格納用のバッファはＣＮＦＧＣにある。
【００６３】
ＡＬＵＡ１３０５、ＬＳＡ（ＬＳＡＲ１３０４とＬＳＡＬ１３０６）、ＬＭＥＭ（１３１２、１３１３）、ＩＯＰ（１３０７、１３０８）は、いずれも８行単位のクラスタに分割されており、クラスタ単位にコンフィグレーションの変更が可能となっている。
以下で述べる本実施の形態では、簡単のためクラスタは２個の場合を述べるが、クラスタの個数は限定されない。また、上記で述べたコンフィグレーションレジスタの詳細は後で述べる。ＣＮＦＧＣのバッファについては、一般的なバッファで構成することが可能である。
【００６４】
アレイエンジンコントローラＡＥＣＴＬは、図１４（ａ）（ｃ）に示すように、ＡＬＵＡＥ１２０２の全体の制御とコンフィグレーション切り替えに関する制御を行う。起動終了などのハードウェア一般の制御とステータス通知のほか、ＡＬＵＡ１３０５、ＬＳＡ（ＬＳＡＲ１３０４とＬＳＡＬ１３０６）、ＬＭＥＭ（１３１２、１３１３）、ＩＯＰ（１３０７、１３０８）のコンフィグレーションをＡＬＵＡＥ自身で自律的に切り替える制御、現在のコンフィグレーションの状態、切り替えに伴う割り込み通知、およびエラー通知の可否指定と制御も行う。ＡＥＣＴＬ１３０１への入力１３３０はコンフィグレーションの切り替えに用いる。これらのレジスタと動作の詳細は、４．２と４．５にて述べる。
【００６５】
ＣＮＦＧＣ１３０９は、先に述べたコンフィグレーションレジスタを持つ対象に対して、コンフィグレーションデータの書き込みの制御を行う。制御内容は図１４（ａ）に示すとおりである。レジスタの詳細は、４．２にて述べる。４．２  ＡＥＣＴＬ、ＣＮＦＧＣ制御・ステータスレジスタ
ここでは、ＡＥＣＴＬ１３０１とＣＮＦＧＣ１３０９の制御／ステータスレジスタについて述べる。
【００６６】
（１）ＡＥＣＴＬの制御／ステータスレジスタ
ＡＥＣＴＬ１３０１には、図１５に示す制御レジスタ１５００と割り込み制御レジスタ１５１０が含まれる。制御レジスタ１５００は一般の制御とステータス通知、割り込み制御レジスタ１５１０は割り込みに関する設定を行う。ここで、ＡＥＣＴＬ１３０１は状態遷移を制御するための複数の状態遷移制御レジスタ２６００も持つが、このレジスタと状態遷移の動作については４．５にて説明を行う。
【００６７】
制御レジスタ１５００中のＥＮとＳＴは、ハードウェア的にＡＬＵＡＥを起動または終了する指示（ＥＮ）と、その結果であるステータスの通知（ＳＴ）を行う。ＥＮを１にすると起動指示、０にすると終了指示を行う。また、ＳＴが１だと動作状態、０だと休止状態を示す。ＥＲＲは、エラー状態であることを通知する。１はエラー状態、０は正常状態を示す。ＩＮＩ１とＩＮＩ２は、ＡＬＵＡＥの内部状態の初期化を指示する。ＩＮＩ１がクラスタ１（上方８行分）の初期化、ＩＮＩ０がクラスタ０（下方８行分）の初期化を指示する。初期化は、内部の記憶要素を全て０、または１に設定する。Ｃ１ＳＴとＣ０ＳＴは、現在のＡＬＵＡＥの使用中のコンフィグレーション番号を示す。Ｃ１ＳＴがクラスタ１のコンフィグレーション番号、Ｃ０ＳＴがクラスタ０のコンフィグレーション番号を示す。本実施の形態では、Ｃ０ＳＴ、Ｓ１ＳＴにそれぞれ４ビットを割り当てており、１６個のコンフィグレーション切り替えを制御することが可能となっている。
【００６８】
次に、割り込み制御レジスタ１５１０について述べる。割り込み制御レジスタ１５１０のＥＲＲは、ＡＬＵＡＥ内でエラーが起こったときに、割り込み要求を行うか否かを指定する。１の時は割り込みを行い、０の時は割り込みを行わないことを示す。割り込み制御レジスタ１５１０のＳＩＲＱＦは状態遷移時に割り込みを行うか否かを指定する。ＳＩＲＱは、後で説明する状態遷移制御レジスタ２６００の数と同じだけのビット数を備え、それぞれの状態遷移ごとに割り込みを行うか否かを設定可能である。割り込み制御レジスタ１５１０のＳＩＦは割り込み要因を示す。ＳＩＦの各ビットはＳＩＲＱの各ビットがあらわす割り込みに1対1に対応する。割り込み要因を示すＳＩＦの０リセットは、ＤＲＥ外部からの書き込み、または、ＤＲＥのリセットにより行われる。
【００６９】
（２）ＣＮＦＧＣの制御／ステータスレジスタ
ＣＮＦＧＣのレジスタを図１６の１６００に示す。１６００中のＷＲＥＱは、コンフィグレーション対象のセルへの書き込み指示を行う場合に１にセットする。Ｗ０およびＷ１は、書き込み先のクラスタを示す。Ｗ１が１ならクラスタ１へ書き込み、Ｗ０が１ならクラスタ０へ書き込む。ＣＳＴは、書き込み先のコンフィグレーション番号を示す。ＡＲＯＷおよび、ＡＣＯＬは、コンフィグレーションを変更するＡＬＵセルの選択信号であり、各クラスタ中の行と列を選択する。
【００７０】
４．３  ＡＬＵセルの構成とコンフィグレーションレジスタ
ここでは、ＡＬＵＡ１３０５を構成するＡＬＵセルの構成と、その利用方法を明らかにするためコンフィグレーションレジスタについて述べる。本節では、（１）でＡＬＵＡ１３０５での処理をどう実現するかの概略を述べ、次に（２）でＡＬＵセルの構成を述べる。最後に（３）でＡＬＵセルのコンフィグレーションレジスタについて述べる。
【００７１】
（１）ＡＬＵＡ１３０５の利用イメージ
図１７は、ＡＬＵセル１７００を４行４列のアレイ状に並べ、図１０に示されるＦ１ステートの処理を簡略化したフィルタリング処理を実行するためのコンフィグレーション情報の一例を示した図である。図１７を用いて４行４列のセル・アレイの動作を説明する。図１７のＡＬＵセル１７００内に書かれたブロック内の記号（×Ｃ０、×Ｃ１、×Ｃ２、×Ｃ３、＋）は、セルの演算器ＡＬＵが実行する機能を表し、直線及び矢印はデータの流れを表す。また、セル内の直線上に示されている黒丸１７０１はデータ転送のみを1サイクルで行うフリップフロップを表している。
【００７２】
図１７に示されたコンフィグレーション情報は下式で表される値を求めるためのものである。
ｆ［ｔ］＝ｅ［ｔ］×Ｃ０＋ｅ［ｔ−１］×Ｃ１＋ｅ［ｔ−２］×Ｃ２＋ｅ［ｔ−３］×Ｃ３
上記の式において、ｆ［ｔ］は時刻ｔにおけるフィルタの出力、ｅ［ｔ］は時刻ｔにおけるフィルタへの入力、Ｃ０からＣ３はフィルタ定数である。ｅ［ｔ］は、ＬＳＡＬ１３０６から入力し、ｆ［ｔ］はＬＳＡＲ１３０４に出力する。
【００７３】
本コンフィグレーション情報によれば、１行目のセルでデータの右側のセルへの転送と乗算を実行し、２行目、及び３行目のセルを用いて加算を行う。このコンフィグレーション情報により設定されたＡＬＵＡ１３０５に対し１行１列目のセルより入力ｅを毎時刻入力することで、９クロック・サイクル以降は毎サイクル、フィルタ出力ｆを３行４列目のセルより得ることができる。なお、この処理での計算結果は、ＬＳＡを介して内部ローカルメモリＬＭＥＭに格納される。
【００７４】
本実施例では、Ｆ１ステートを簡略化したフィルタについて説明したが、例えば、Ｆ１ステートからＲ１ステートに遷移する場合は、コンフィグレーション情報を切り替えることによりＡＬＵセルの夫々の演算機能及びそれらの接続関係を変更し、Ｒ１ステートに対応する回路構成を得ることができる。
【００７５】
（２）ＡＬＵセルの構成
ここでは、ＡＬＵセル１７００の構成を図１８に従い、以下に述べる。
ＡＬＵセル１７００のデータパス系の機能は、１８００で示すＡＬＵによる演算とデータ転送の機能である。ＡＬＵは、セレクタＡｉ０-ｓｅｌとＡｉ１-ｓｅｌの出力を２つの入力とし、結果をフリップフロップＣＦＦ０とＣＦＦ１に出力する。データ転送を行う場合は、セレクタＲ０-ｓｅｌ、Ｒ１-ｓｅｌの出力を、それぞれフリップフロップＲＦＦ０、ＲＦＦ１の入力とする。
【００７６】
セレクタＡｉ０-ｓｅｌとＡｉ１-ｓｅｌ、Ｒ０-ｓｅｌとＲ１-ｓｅｌへの入力は、１８１０、１８１１、１８１２、１８１３入力端子と、フリップフロップＣＦＦ０とＣＦＦ１、ＲＦＦ０、ＲＦＦ１の出力から選択される。これら信号の選択はコンフィグレーションレジスタファイル１８０１の内、セレクタＣ−ｓｅｌで選ばれた信号１８０２の値により決まる。
ＡＬＵセルの出力はフリップフロップＲＦＦ０、ＲＦＦ１、ＣＦＦ０、ＣＦＦ１の出力を各スイッチで選択し、１８１４、１８１５、１８１６、１８１７の出力端子より出力される。
【００７７】
入力端子と出力端子は、上下左右の４方向にそれぞれあり、上下左右の隣接するＡＬＵセルへ直接接続する。本構成では、上方向は１８１０と１８１４、下方向は１８１１と１８１５、左方向は１８１２と１８１６、右方向は１８１３と１８１７が接続される。ただし、ＡＬＵＡの左右端のＡＬＵセルの左右の配線は、内側はＡＬＵセルに、外側はＬＳセルに接続する。また、上下端のセルの上下の配線は、内側はＡＬＵセルに接続し、外側は基本的には接続しない。ただし、四隅のＡＬＵセルの外側向きの上下の配線はＡＬＵＡ１３０５からの入出力線１３２０に接続される。
【００７８】
端子や配線は、データ用１６ビット、制御用1ビットをそれぞれ有し、制御ビットは加算におけるキャリー、または、ＬＳセルとのインターフェースでのロードストアのイネーブルビットなどに用いる。さらに、データ信号、制御信号それぞれに、その信号が有効か否かをあらわす信号（Ｖａｌｉｄ信号）が付属する。Ｖａｌｉｄ信号はデータ信号、または、制御信号が有効な場合に１、無効な場合に０となる。信号が有効となるのはＡＬＵＡ外部から入力されたデータか、または、有効なデータに対して演算を行った結果のデータである。
【００７９】
ＡＬＵセルへの入力は、上下左右それぞれ、Ｕｉｎ−ｂｒ、Ｄｉｎ−ｂｒ、Ｌｉｎ−ｂｒ、Ｒｉｎ−ｂｒの入力端子に入力され、それぞれの入力を、Ｒ０−ｓｅｌ、Ｒ１−ｓｅｌ、Ａｉ０−ｓｅｌ、Ａｉ１−ｓｅｌのセレクタにすべて接続する。
ＡＬＵセルからの出力は、データ転送レジスタＲＦＦ０、ＲＦＦ１と、ＡＬＵ出力レジスタＣＦＦ０、ＣＦＦ１の値を、上下左右それぞれ、Ｕｏ０−ｓｅｌとＵｏ１−ｓｅｌ、Ｄｏ０−ｓｅｌとＤｏ１−ｓｅｌ、Ｌｏ０−ｓｅｌとＬｏ１−ｓｅｌ、Ｒｏ０−ｓｅｌとＲｏ１−ｓｅｌのスイッチで選択する。例えば、右方向のセレクタＲｏ０−ｓｅｌは、ＲＦＦ０かＣＦＦ０のいずれかを選択し、Ｒｏ１−ｓｅｌは、ＲＦＦ１、ＣＦＦ１のいずれかを選択して出力する。
【００８０】
セレクタＲ０−ｓｅｌ、Ｒ１−ｓｅｌ、Ａｉ０−ｓｅｌ、Ａｉ１−ｓｅｌは、４方向の入力各々２セットと、フリップフロップの出力セレクタＳ−ｂｒの出力と、コンフィグレーションレジスタファイル１８０１からＣ−ｓｅｌで選択された一つのコンフィグレーションレジスタの中の定数値１８０３から、１つを選択する。
【００８１】
図１７での「×Ｃ０」と記述されたＡＬＵセルでは、定数値１８０３をＡｉ０−ｓｅｌで選択した値Ｃ０と、左端子Ｌｉｎ−ｂｒからの入力信号をＡｉ１−ｓｅｌで選択した値を、ＡＬＵで乗算する。結果はＣＦＦ０とＣＦＦ１に出力され、Ｄｏ０−ｓｅｌでＣＦＦ０を選択し、Ｄｏ１−ｓｅｌでＣＦＦ１を選択して下方の出力端子１８１５に出力する。また、右方向へのデータ転送は入力端子１８１２からＲ０−ｓｅｌ、ＲＦＦ０を通過し、Ｒｏ０−ｓｅｌより出力端子１８１７に出力する。
【００８２】
上記で述べた、種々のセレクタでの選択と、ＡＬＵで何の演算を行うかの選択は、いずれも、Ｃ−ｓｅｌの出力信号１８０２の値により決定する。
信号１８０２は、現在の状態のコンフィグレーションレジスタ１９００（図１９）の値を示す。この信号１８０２は、コンフィグレーションレジスタファイル１８０１の中から、現在のコンフィグレーションを選択する信号１８０４に従い、Ｃ−ｓｅｌで選択された値である。
【００８３】
コンフィグレーションレジスタファイル１８０１が更新されるための制御について述べる。コンフィグレーションレジスタファイル１８０１は、図１６で示すＣＮＦＧＣ１３０９により更新される。ＣＮＦＧＣ１３０９中の制御レジスタ１６００によりＡＬＵセルを指定することにより、入力端子１８０５がこのＡＬＵセルのコンフィグレーションレジスタファイル１８０１のアドレスを示す信号となる。入力端子１８０５の値がＤＥＣでデコードされ、指定されたレジスタへの書き込みイネーブル信号となる。入力端子１８０６は、当該状態のレジスタへのデータ書き込みに用いる。１８０５、１８０６の二つの信号により、コンフィグレーションレジスタファイル１８０１の更新を行う。１８０５と１８０６は、図１３におけるＣＮＦＧＣ１３０９からの出力信号の一部の信号である。Ｃ−ｓｅｌの動作を決める入力端子１８０４の信号は、図１３のＡＥＣＴＬ１３０１から出力される１３１１の一部である。
上記のコンフィグレーションレジスタファイル１８０１とＣ−ｓｅｌに関する機構は、他のコンフィグレーション対象ブロック、ＬＳセルとＩＯＣＴＬについても同様な仕組みとなっている。
【００８４】
（３）コンフィグレーションレジスタ
（２）で述べた動作を実現するためのＡＬＵセルのコンフィグレーションレジスタ１９００について以下で説明する。
レジスタ１９００の中で、１９０１の領域はＲ０−ｓｅｌ、Ｒ１−ｓｅｌ、Ａｉ０−ｓｅｌ、Ａｉ１−ｓｅｌの選択信号であり、Ｌｉｎ−ｂｒ、Ｒｉｎ−ｂｒ、Ｕｉｎ−ｂｒ、Ｄｉｎ−ｂｒのそれぞれへの２組の入力端子、Ｓ−ｂｒ、および１９００中のＩＭＩＤの計１０組の入力の中から一組の１７ビットを選択する。Ｒ０Ｓ、Ｒ１Ｓ、ＡＩ０Ｓ、ＡＩ１Ｓは、それぞれ、Ｒ０−ｓｅｌ、Ｒ１−ｓｅｌ、Ａｉ０−ｓｅｌ、Ａｉ１−ｓｅｌの選択コードをあらわす。
【００８５】
１９０２の領域は、左方への出力セレクタＬｏ０−ｓｅｌ、Ｌｏ１−ｓｅｌ、同じく、右方への出力セレクタＲｏ０−ｓｅｌ、Ｒｏ１−ｓｅｌ、上方への出力セレクタＵｏ０−ｓｅｌ、Ｕｏ１−ｓｅｌ、下方への出力セレクタＤｏ０−ｓｅｌ、Ｄｏ１−ｓｅｌの制御信号である。例えば、ＬＯＳはＬｏ０−ｓｅｌおよびＬｏ１−ｓｅｌの制御信号を示す。同様にして、ＲＯＳ、ＵＯＳ、ＤＯＳは、各方向への２つのセレクタの制御信号を表わす。
ＥＸＥは、ＡＬＵの演算を表わす。乗算、加算、減算などの算術演算や、シフト、ＡＮＤなどの論理演算を搭載する。ＩＭＩＤは定数を表わし、上記に述べたように、ＲＯ−ｓｅｌなどのＡＬＵと転送レジスタへの入力セレクタへの入力の一組となる。
【００８６】
４．４  データのロードストア機構
ここでは、ＡＬＵアレイ１３０５から見たデータのロードストア機構について述べる。
ロードストアは、２種類に大別される。一方は、１３１２および１３１３に付随のローカルメモリへのアクセス。もう一方は、ＡＬＵＡＥ１２０２の外部のハードウェアモジュールやＤＲチップ外部ＩＯとのアクセスである。これらのいずれのアクセスも、ＬＳセルというロードストア専用セルを通して行う。
【００８７】
以下では、ＬＳＡ（１３０６，１３０４），ＬＭＥＭ（１３１２，１３１３），ＩＯＰＡ（１３０８，１３０７）について説明する。まず、（１）でＬＳセルとＡＬＵセルのインターフェースについて述べ、（２）ＬＳＡ，ＬＭＥＭ，ＩＯＰＡの構成概要をのべ、（３）でＬＭＥＭ２２００へのアクセス機構を、（４）でＩＯＰＡ２１００を通した外部とのアクセス機構について述べる。
【００８８】
（１）ＬＳセルとＡＬＵセルのインターフェース
図２０は、ＬＳＡ内のＬＳセル２０００と、ＡＬＵセル１７００とのインターフェースを示す。
ＡＬＵセル１７００の出力データ端子１８１６の上位半分でアドレスとＲ／Ｗビットを、下位半分でＡＬＵセル外部へ出力するデータを送る。また、端子１８１２でＬＳセルから入力するデータを受け取る。ＬＳセル２０００は、ＡＬＵセル１７００の端子それぞれについて、端子２００２、２００３、２００４、２００５，２００６と接続する。
【００８９】
（２）ＬＳＡ，ＬＭＥＭ，ＩＯＰＡの構成概要
図２１は、ＬＳＡ（１３０６，１３０４），ＬＭＥＭ（１３１２，１３１３），ＩＯＰＡ（１３０８，１３０７）の構成の概要を示した図である。ＬＳＡ，ＬＭＥＭ，ＩＯＰＡはＡＬＵＡの左右で対象であるため，以下ではまとめて，ＬＳＡ２３００，ＬＭＥＭ２２００，ＩＯＰＡ２１００として説明する。
ＬＭＥＭ２２００は、ＬＳＡ２３００とＩＯＰＡ２１００の両方からのアクセスが可能である。また，ＬＭＥＭ２２００は、ＬＳセル２０００から通常のメモリとして利用されると共に、ＬＳセル２０００が外部とアクセスするための中間バッファの役目も果たす。
【００９０】
ＩＯＰＡ２１００は、ＡＬＵＡＥ１２０２と直結する外部ＩＯや他のモジュールと通信するためのモジュールである。本実施の形態では、ＡＤＣ／ＤＡＣ２０６が外部ＩＯであり、ＷＣＥ１２０１が他のモジュールに当たる。また，ＩＯＰＡ２１００は、内部バス１２００のＢＳＣ１３００とのインターフェースも持ち、外部ＩＯへのアクセスか内部バス１２００へのアクセスのいずれかを，各ＩＯＰ２１０６を通して選択する。
【００９１】
（３）ＬＭＥＭへのアクセス機構
ここでは、ＬＳセル２０００からＬＭＥＭ２２００へのアクセスについて述べる。ＬＭＥＭ２２００は、ＬＳセル２０００に対応した複数のメモリセル２１０２から構成する。メモリセル２１０２は、ＬＳセル２０００，または，ＩＯＰ２１０６よりアクセスできるメモリＭＥＭ２１０３と、ＭＥＭ２１０３へのアクセスをコントロールするＭｃｔｌ２１０４で構成される。この構成により、ＬＳセルからメモリセルへのアクセスが行ごと並列に実行可能である。
ここで、Ｍｃｔｌ２１０４は、メモリセル２１０２が、ＩＯＰ２１０６からもアクセスされるため、ＬＳセル２０００とのアクセスとの選択を行うことがその役割である。
【００９２】
ＬＳセル２０００がＬＭＥＭ２２００にアクセスするための命令やモードを指定するのが、図２２に示すＬＳセル用コンフィグレーションレジスタ２２００である。以下でその機能を述べる。
ＥＮ２２０１は、ＬＳセルのデータアクセスが可能か否かを示す。ＬＳ／ＰＰ２２０２は、アドレスをＡＬＵセル１７００から与えるか、ＬＳセル内部でアドレスを自動発生するかを指定する。ＲＷ２２０３は、データをリードするか、ライトするかを指定する。
【００９３】
以下では、ＬＳセル内部でアドレスを自動発生する場合のレジスタ設定方法を説明する。ＬＩ／Ｄ２２０４は、アドレスを自動的にインクリメントするか、デクリメントするかを指定する。ＬＢＡＳ２２０５は、ベースアドレスを指定する。ＬＡＤＤ２００７は，インクリメント，または，デクリメントの幅を指定する。ＩＴＥＲ２２０６は、何回繰り返してアクセスするかを指定する。なお，繰り返し最大数までアクセスした後は，ベースアドレスに戻る
（４）ＡＬＵアレイ外アクセス機構
ここでは、ＩＯＰＡ２１００を通したＡＬＵＡＥ外部へのアクセス機構について述べる。まず、ＩＯＰＡ２１００からＬＭＥＭ２２００へのアクセスを述べ、次に、ＩＯポートアレイ２１００と外部とのアクセスを述べる。
【００９４】
（ａ）ＬＭＥＭへの外部からのアクセス
ＩＯＰＡ２１００は、メモリセル２１０２の２個セット２１１０に対して、ＩＯＰ２１０６を通してアクセスする。ＩＯＰ２１０６は、入力ポート２１１３と出力ポート２１１２を1セットとしてもち，さらにＢＳＣ１３００と配線２１０９を介して接続される。
ＩＯＰ２１０６は、２つのメモリセル２１０２を中間バッファとして、ＬＳセルと接続する。２つのメモリセル２１０２のいずれかに、入力ポート２１１３と出力ポート２１１２を接続する。また，ＩＯＰ２１０６は入出力ポートのほかにＣＰＵバス２１０９との接続も選択可能である。
【００９５】
上記で述べたＩＯＰ２１０６の各種モードを指定するのが、図２３で示すＩＯポートコンフィグレーションレジスタ２３００である。以下でその機能を述べる。
ＩＥＮ２２０７は入力ポート２１１３のアクセスが可能か否かを示す。同様にＯＥＮ２３０１は出力ポート２１１２のアクセス可否を示す。これらのいずれもアクセス不可であったときには、ＩＯＰ２１０６はＣＰＵバス２１０９とのアクセスを選択する。
【００９６】
ＬＳＳＥＬ２３０２は、入力ポート２１１３と出力ポート２１１２が、２つのメモリセル２１０４のセット２１１０の内、いずれとアクセスするかを選択する。この指定により、ＬＳセル２０００のセット２１１１のいずれとアクセスするかも決まる。なぜなら、ＬＳセル２０００とメモリセル２１０２は一対一で接続されているためである。
【００９７】
ＩＯＰ２１０６は、外部からのアクセスでは、アドレス自動発生でメモリセルのセット２１１０とアクセスを行う。このとき、ＬＳセルコンフィグレーションのＬＩ／Ｄ２２０４，ＬＢＡＳ２２０５，ＬＡＤＤ２２０７に相当して、ＩＩ／Ｄ２３０３，ＩＢＡＤ２３０５，ＩＡＤＤ２３０６を指定する。意味は、ＬＳセルと同様であるため、説明は割愛する。ＬＳセルと異なる点は、メモリの最大アドレスに達するまでアクセスを繰り返す点である。
【００９８】
（ｂ）外部アクセス
上記で述べたＩＯＰ２１０６を用いて外部とアクセスする機構を、図２４と図２５に従い、以下で述べる。
図２４に示すように，ＩＯＰＡ２１００は、ＡＬＵアレイ外部モジュールであるＷＣＥ１２０１や、ＬＳＩ外部ＩＯを介してＡＤ／ＤＡ２０６とのデータアクセスを行う。ここで、ＩＯＰＡ２１００は、ＩＯＰ２１０６を、１クラスタ分、集めたブロックである。
【００９９】
ＩＯＰＡ２１００は、最上位のクラスタと最下位のクラスタの各々に対して、左右一対ある。信号線群１３２１は、図２１のＩＯポートセル２１０６の入出力信号線２１１２と２１１３を、左の最上位クラスタと最下位クラスタ分を束ねたものを表す。同様に、信号線群１３２２は、左の最上位クラスタと最下位クラスタ分、入出力信号線を束ねたものを表す。
これらの信号線群１３２１と１３２２は、ＥＸＩＯＳ１２０３の中のスイッチ２４０３で、アクセス先の信号線１２０６と２０７に選択的に接続される。スイッチ２４０３の接続関係を指定するのが、図２５で示すＥＸＩＯＳのコンフィグレーションレジスタ２５００と２５１０である。
【０１００】
２５００は、最下位クラスタのＩＯＰ２１０６からの入出力の接続先を指定し、２５１０は、最上位クラスタの入出力の接続先を指定する。２５００で、ＬＲＰ３ｓｅｌは、最下位クラスタの右のポート３の接続先を選択する。ここで、ポート３とは、クラスタ内の最上方のＩＯポートセル２１０６を指し、下方に向かって、ポート２，ポート１，ポート０と続く。同様にして、ＬＬＰ３ｓｅｌは、最下位クラスタの左のポート３の接続先選択を指定する。２５１０も、２５００と同様に、ＵＲＰ３ｓｅｌは、最上位クラスタの右のポート３の接続先選択を、ＵＬＰ３ｓｅｌは、最上位クラスタの左のポート３の接続先選択を指定する。他のポートについても同様である。
【０１０１】
ＥＸＩＯＳ１２０３のチップ外部への端子は、図２４に示す２０７が接続されているＬＳＩ外部端子であり、入力と出力をセットで２個備える。ＷＣＥへの配線１２０６が接続されているＡＬＵＡＥ以外の外部モジュールへの端子は、入力と出力をセットで４個備える。
ＥＸＩＯＳ１２０３のコンフィグレーションレジスタ２５００と２５１０の各々のＩＯＰに対応するビットは、ＬＳＩ外部端子選択用、外部モジュール端子選択用がある。ＬＳＩ外部端子選択用のビットは、ＬＳＩ外部端子１、または，ＬＳＩ外部端子２を選択する。外部モジュール端子選択用のビットは，ＡＬＵＡＥ外部モジュール端子１、ＡＬＵＡＥ外部モジュール端子２、ＡＬＵＡＥ外部モジュール端子３、ＡＬＵＡＥ外部モジュール端子４を選択する。
【０１０２】
４．５  ＤＲ状態遷移と遷移テーブル
ここでは、図１０に示すような、コンフィグレーションの状態遷移を実現するためのハードウェア機構と、状態遷移テーブルなどの設定レジスタについて述べる。
【０１０３】
（１）状態遷移のためのハードウェア機構
ＡＬＵＡ１３０５で行われる処理で、次へ遷移する条件が整ったら、ＡＬＵＡの４隅にあるＡＬＵセルから、トリガー信号１３２０を発行する。次に、ＥＸＩＯＳ１２０３では、トリガイネーブルレジスタ２５２０の設定に従い、ＭＳＫ２４０９で、有効なトリガー信号はそのまま、無効な信号は０にマスクする。最後に、ＡＥＣＴＬでは、図２６に示す状態遷移制御レジスタ２６００の設定に従い、現在の状態およびトリガー信号の値を参照して、次の状態を決める。次の状態は、図１３の状態信号でＡＬＵセル、ＬＳセル、ＩＯＣＴＬに通知され、切り替えが実行される。ＡＥＣＴＬの中身の詳細は、後述する。
【０１０４】
（２）状態遷移の設定レジスタ
ここでは、図２６に従い、ＡＥＣＴＬの状態遷移制御レジスタ２６００を説明する。ＡＥＣＴＬは内部に複数の状態遷移制御レジスタ２６００を持ち、これらをまとめて状態遷移テーブルと呼ぶ。
まず、ＡＬＵＡの４隅のＡＬＵセルからトリガー信号を発行するには、上側のＡＬＵで上側にデータを出力するか、下側のＡＬＵセルで下側にデータを出力する。
【０１０５】
次に、図２５のトリガイネーブルレジスタ２５２０にてマスクを行う。ＬＲＴＥＮは右下のＡＬＵセルのトリガー信号をイネーブルにするか否かのコードである。有効にするときには１、無効にするときには０を設定する。無効にしたときには、図２４のＭＳＫ２４０９で、これに該当するビット列は全て０にマスクされる。同様に、ＬＬＴＥＮは左下のＡＬＵセルのトリガー信号のイネーブル、ＵＲＴＥＮは右上ＡＬＵセルのトリガー信号のイネーブル、ＵＬＴＥＮは左上のＡＬＵセルのトリガー信号のイネーブルを示す。図２４のＭＳＫ２４０９でマスクされた信号は配線１３３０を介してＡＥＣＴＬ１３０１へ送られる。
【０１０６】
最後に、状態遷移制御レジスタ２６００を説明する。ＡＳＴは、ＡＬＵＡＥ１２０２の状態が休止または動作中であることを、切り替え条件とすることを意味する。０が休止中、１が動作中を示す。最初の休止状態から、動作状態へ移るときなどに利用する。ＣＳＴＡＴには、現在実行中のコンフィグレーション番号を遷移の条件とする場合に、コンフィグレーション番号を指定する。ＣＭＳＫは、現在のコンフィグレーション番号を遷移条件に入れるか否かを示す。１が遷移条件に入れない、０が入れる。ＮＳＴＡＴには、遷移先のコンフィグレーション番号を指定する。ＥＭＳＫは、遷移テーブルの容量削減のため、複数の状態遷移を一つの状態遷移レジスタ２６００で扱うため、トリガー信号２１２１にマスクをかける。トリガー信号２１２１とＥＭＳＫの値の論理ＯＲをとり、結果がすべて１であるときに遷移を実行する。例えば、ＣＭＳＫを１にセットすることで、ＥＭＳＫで設定したトリガーが発生した場合に、現在のコンフィグレーション番号によらず遷移が実行される。
【０１０７】
５．ＷＣＥの設定レジスタ
ＷＣＥ１２０１の動作と設定レジスタについて以下で述べる。以下、５．１で送信管理１０３０について、５．２で無線特殊演算１０３１について述べる。これらの処理は、常に動作する必要があるためＡＬＵＡＥで実行できなかったり、また、ＡＬＵＡＥの構成を変更することで処理するよりは、専用回路で行ったほうが効率的であるため専用回路を設けている。
５．１  送信管理
ここでは、送信管理１０３０について、図２７で動作を、図２８で設定レジスタについて述べる。送信管理１０３０は、ＡＬＵＡＥ１２０２からの情報２７００、２７０１、１０２０、１０２３と、ＣＰＵ７００からの情報９０７を元にして、送信可否に関する状態を決定する。その結果、ＡＬＵＡＥ１２０２へは送信許可／禁止情報９０６を、ＣＰＵ７００へは、内部状態９１０をそれぞれ送信する。このように送信管理用の専用回路を設けることによりＣＰＵの介在なしにＡＬＵＡＥが自立的に受信、送信の管理を行うことが可能となる。
【０１０８】
（１）通常データの送信動作時の送信管理
通常のデータ送信時の動作を述べる。まず、ＣＰＵ７００が、カーナビゲーションシステム１０７から送信要求と共に送信データを受け取ると、ＣＰＵ７００は、送信管理１０３０に次送信許可９０７を発行し、ＡＬＵＡＥ１２０２に送信要求を発行する。送信管理１０３０は、これまでの通信履歴から送信可能状態、または、送信不可能状態のどちらかにある。
【０１０９】
ＡＬＵＡＥ１２０２は、受信動作９００の中の受信待機状態の時に、ＣＰＵ７００からの送信要求９０８と、送信管理１０３０からの送信許可９０６を受けると送信動作９０２に遷移する。
送信動作９０２は、送信開始時に送信管理１０３０中の通信開始フラグＳＦＬＧをセットする。送信管理１０３０はＳＦＬＧがセットされると送信不可状態２７０９となり、ＡＬＵＡＥ１２０２に対して、送信禁止９０６を発行する。
【０１１０】
送信動作９０２は送信が終了すると、送信管理１０３０中の通信終了フラグＥＦＬＧをセットし、受信動作９００に遷移する。送信管理１０３０はＥＦＬＧがセットされ、かつ、ＣＰＵ７００から次送信許可９０７がセットされているならば、タイマ２（２７０８）でカウントを開始する。送信管理１０３０はあらかじめタイマ２（２７０８）に設定されたカウントが終了すると送信可状態２７０３に遷移し、ＡＬＵＡＥ１２０２に対して、送信許可９０６を発行する。
【０１１１】
（２）受信動作時とＡＣＫ送信の送信管理
受信動作時の送信管理は、３種類ある。受信動作が行われている時には送信不可状態２７０９にするという管理、受信終了後、ＡＣＫを送信するため送信可能状態２７０３にするという管理、および受信失敗時（ＮＧ）、次送信可能状態２７０３にするという管理である。
【０１１２】
最初の管理は、受信動作９００でパケットが検出され、1フレームの受信が開始されたと判断された時、1フレーム開始情報２７００がフラグとしてＳＦＬＧにセットされた時に行う。ＳＦＬＧがセットされると、送信不可状態２７０９に遷移する。
２番目の管理は、１フレームの復調終了と判断された時に起こる。この判断は、ＥＦＬＧ２７０７がセットされ、かつ、次送信許可フラグがセットされた時に行われる。
【０１１３】
送信管理１０３０はＥＦＬＧがセットされ、かつ、ＣＰＵ７００から次送信許可９０７がセットされているならば、タイマ１（２７１１）でカウントを開始する。送信管理１０３０はあらかじめタイマ１（２７１１）に設定されたカウントが終了すると送信可状態２７０３に遷移し、ＡＬＵＡＥ１２０２に対して、送信許可９０６を発行する。
３番目の管理は、受信失敗（ＮＧ）と判断され、かつ、次送信許可フラグがセットされた時に行われる。後の動作は２番目の管理と同様である。
【０１１４】
（３）送信管理の設定レジスタ
ＣＰＵ７００とＡＬＵＡＥ１２０２から見た設定レジスタは、図２８に示す制御／ステータスレジスタ２８００である。ＥＮ２８０１は、送信管理をハード的にイネーブルするか否かの制御レジスタであり、ＣＰＵから設定する。
ＳＦＬＧとＥＦＬＧ２８０２は、フレーム（通信）の開始と終了を示すフラグで、ＡＬＵＡＥ１２０２からセットされ、ＣＰＵ７００からは読み込みのみ可能である。ＳＦＬＧは、送信開始１０２０と受信の1フレーム開始２７００にセットされ、（１）、（２）で述べた状態遷移が終わるとリセットされる。ＥＦＬＧは、送信終了１０２３と、受信１フレーム終了／受信ＮＧ２７０１でセットされ、（１）、（２）で述べた状態遷移が終わるとリセットされる。
【０１１５】
ＳＴＡＴ２８０３は、送信管理の内部状態９１０を示し読み出しのみ可能である。無線仕様によっては、図２７で示すだけの状態では不十分であるが、ここでは、無線仕様の詳細に触れることが目的でないため、基本的な枠組みを示すのみであり、必要なら状態を追加することは容易に可能である。ＳＥＮ２８０４は、次送信許可／禁止９０７を意味し、ＣＰＵによりセットされる。許可時１、禁止時０がセットされる。
【０１１６】
ＡＣＮＴ、ＣＮＴ１からなる２８０５は、各種タイマのカウント値を示す。ＡＣＮＴが、タイマ１（２７１１）で利用され、ＣＮＴ１がタイマ２（２７０８）で利用される。無線仕様によっては、他にもカウンタが必要であるが、この基本的な枠組みに、必要ならカウンタを追加することは容易に可能である。
【０１１７】
このように、送信管理１０３０は、送信、受信の管理にカウンタを用いる。このカウンタは、ＡＬＵＡＥが実際に送信動作や受信動作を行う間もカウント動作を行う。従って、送信管理１０３０をＡＬＵＡＥで実現しようとすると常にカウンタを構成するＡＬＵセルを確保しなければならず、効率が悪くなる。そこで、本実施例では、専用回路として設けている。
【０１１８】
５．２  無線特殊演算
ここでは、無線特殊演算１０３１について、送信用無線特殊演算２９２０と受信用無線特殊演算３１２０の各々について、そのハードウェア構成および動作と設定レジスタについて述べる。無線特殊演算１０３１は、1ビット単位で処理するため、例えば16ビット単位で処理するＡＬＵＡＥで処理すると効率が悪い処理等を行う。これらの1ビット単位での処理を専用回路とすることでＡＬＵＡＥで処理するより面積効率がよいためである。
【０１１９】
（１）送信用無線特殊演算
ここでは、送信用無線特殊演算２９２０について、図２９でハードウェア構成および動作を、図３０で設定レジスタについて述べる。
まず、ＣＰＵ７００から、送信設定用レジスタ２９００に初期設定する。送信用レジスタには、図３０に示す制御レジスタ３０００と送信データ長レジスタ３０１０がある。
【０１２０】
図３０の制御レジスタ３０００のＥＮ３００１は、送信用無線特殊演算２９２０をハード的に有効にする。送信用無線特殊演算２９２０は、本実施の形態では、スクランブルとＣＲＣの二つの処理を行う。図１１のデータ構造１１００において、ＣＲＣ処理はヘッダ１（１１０７）と、ヘッダ２（１１０９）とデータ（１１１０）のセットについて行い、それぞれの結果をＣＲＣ−Ｈ１１０８、ＣＲＣ−Ｄ１１１１として付加して１１００の形式とする。スクランブルは、１１００の全てのビットについて先頭より行う。
【０１２１】
ＳＣＬＥＮ３００３は、スクランブル演算のビット長を指定する。０が初期値で７ビット長、１は１０ビット長である。ＨＣＲＣとＤＣＲＣの３００４は、ＣＲＣ演算のビット長を指定する。それぞれ、０が３２ビット、１が１６ビットとなる。
送信データ長レジスタ３０１０は、ＣＰＵ７００から送付されてくる元のＣＲＣ演算とスクランブル処理を実施する前のデータの長さを領域毎に指定する。１１００のデータ構造に従い、ＰＬＥＮでプリアンブル領域１１０１のビット長を、ＨＬＥＮでヘッダ１  １１０７のビット長を、ＤＥＬＮでデータ領域１１０３のうち、ヘッダ２（１１０９）とデータ１１１０を足し合わせたビット長を指定する。ＣＰＵ７００から順にデータが送られたら、送信用無線特殊演算２９２０にて、ＣＲＣとスクランブルを処理し、ＡＬＵＡＥ１２０２に結果を転送可能となる。
【０１２２】
送信コンフィグレジスタ２９３０には、スクランブルおよびＣＲＣの動作を指定するパラメータを入力する。初期設定が終了したら、ＣＰＵ７００は、入力バッファ２９０１に、プリアンブル領域１１０１、ヘッダ１  １１０７、ヘッダ２  １１０９とデータ１１１０の順にデータを送付し、順に所定の演算を行う。
２９０１以降の処理を、述べる。処理の流れとしては、ＣＲＣ処理を行った後に、スクランブル処理を行う。まず、入力選択２９０３で入力バッファを選択する。ＣＲＣ／Ｓｃｒａｍｂｌｅ演算２９０４では、プリアンブル領域１１０１に対しては何も演算を行わないで出力バッファ２９０６に出力する。ヘッダ１（１１０７）に対しては、送信データ長レジスタ３０１０のＨＣＲＣで指定したヘッダ長と、送信コンフィグレジスタ２９３０で指定したＣＲＣの動作に従って、ＣＲＣ／Ｓｃｒａｍｂｌｅ演算２９０４でＣＲＣ演算が実施され、ＣＲＣ−Ｈを付加して、出力バッファ２９０６に出力する。ヘッダ２（１１０７）とデータ２（１１１０）に対しては、送信データ長レジスタ３０１０のＤＣＲＣで指定したヘッダ長と、送信コンフィグレジスタ２９３０で指定したＣＲＣの動作に従って、ＣＲＣ／Ｓｃｒａｍｂｌｅ演算２９０４でＣＲＣ演算が実施され、ＣＲＣ−Ｄを付加して、出力バッファ２９０６に出力する。
【０１２３】
次に転送先選択２９０５で入力選択２９０３方向が選択され、入力選択２９０３では転送先選択２９０５からの入力が選択される。出力バッファにあるＣＲＣ処理済みのデータに対して、ＣＲＣ／Ｓｃｒａｍｂｌｅ演算２９０４でスクランブル処理を実施し、再び出力バッファに格納する。スクランブルの動作の指定は、送信設定用レジスタ２９００と、送信コンフィグレジスタ２９３０によって決まる。
スクランブル処理が終了すると、転送先選択２９０５はビット長拡張２９０７方向が選択される。ビット長拡張２９０７では、ここまで1ビットとして扱われてきたデータを、ＡＬＵＡＥ１２０２にあわせ、上位7ビットに０を挿入して８ビットに拡張する。この後ＥＸＩＯＳ１２０３を介して、ＡＬＵＡＥ１２０２からの要求があれば随時出力を行う。なお、上記の送信無線特殊演算２９２０内の処理はシーケンサ２９１０によって制御される。
【０１２４】
（２）受信用無線特殊演算
ここでは、受信用無線特殊演算３１２０について、図３１でハードウェア構成および動作を、図３２で設定レジスタについて述べる。
まず、ＣＰＵ７００より、受信用設定レジスタ３１００に初期設定する。受信用設定レジスタ３１００には、図３２に示す制御レジスタ３２００と受信データ長３２１０がある。図３２の制御レジスタ３２００のＥＮ３２０１は、受信用無線特殊演算３１２０を有効にする。１が有効、０が無効。その他のコードの意味は、３０００と同様であるため割愛する。但し、受信の場合、プリアンブル領域中のパケット検出に用いるＳＹＮＣは、受信用無線特殊演算３１２０には送られない。この点が、送信の場合と異なる。受信データ長レジスタ３２１０の意味も、３０１０と同様であるため割愛する。
【０１２５】
初期設定が終了して、ＡＬＵＡＥ１２０２で受信が始まると、ＳＹＮＣ１１０５以外のデータが受信用無線特殊演算３１２０に送られ、ＣＲＣとスクランブル処理を実行し、結果が出力バッファ３１１３に格納される。ヘッダ１の結果、および、ＣＲＣの結果はＥＸＩＯＳを介してＡＬＵＡＥ１２０２に送られ、ＣＲＣ判定を行う。そのほかのデータはＣＰＵ７００からの要求に応じて出力される。
【０１２６】
処理の流れとしては、ＳＦＤ１１０６がＡＬＵＡＥ１２０２で１ビット復調が終了するごとに、受信無線特殊演算３１２０に送付される。送付時はＡＬＵのビット長で送付されるので、有効な下位１ビットを有効ビット選択３１０１にて選択し、入力バッファ３１１０に蓄える。ＳＦＤ１１０６および、ヘッダ１（１１０７）のデータが送られてくると、随時ＣＲＣ／Ｓｃｒａｍｂｌｅ演算３１１２にてスクランブルを実行し、出力バッファ３１０２に蓄える。これらの結果はＡＬＵＡＥ１２０２の要求に応じて、ＥＸＩＯＳ１２０２へと出力される。
【０１２７】
また、ヘッダ１（１１０７）は、転送先選択３１１３、入力選択３１１１を介して再びＣＲＣ／Ｓｃｒａｍｂｌｅ演算３１１２に入力され、ＣＲＣ―Ｈ１１０８が計算される。ＣＲＣの結果も他と同様に出力バッファに蓄えられ、ＡＬＵＡＥ１２０２の要求に応じて出力される。ＡＬＵＡＥ１２０２は、ヘッダ１（１１０７）の値を解析し、得られたヘッダ２（１１０９）とデータのビット長を、受信設定用レジスタ３１００の受信データ長レジスタ３２１０に入力する。その後、ヘッダ２（１１０９）およびデータ１１１０が入力され、ＣＲＣ／Ｓｃｒａｍｂｌｅ演算３１１２にてスクランブルとＣＲＣを計算して、出力バッファ３１０２に蓄えられる。
ＣＲＣの結果はＡＬＵＡＥ１２０２からの要求で、ＥＸＩＯＳ１２０２を介して返され、ＣＲＣ判定を行う。ヘッダ２（１１０９）およびデータ１１１０は、ＣＰＵ７００の要求に応じてＣＰＵ７００へと出力される。その他の部分で、送信無線特殊演算２９２０と同じ名前がついているものに関しては同様の動作を行う。
【０１２８】
６．ＤＲＥの利用例
６．１  無線ＡＰＩによる無線通信動作の実現
ＤＲチップを用いて無線通信動作を実現するために必要となる無線ＡＰＩと、これによる無線通信動作の実現方法を述べる。無線ＡＰＩは、ＣＰＵにより実行される。
【０１２９】
６．１．１ 無線ＡＰＩの機能
無線通信動作を実現するために、９つの無線ＡＰＩを定義する。９つの無線ＡＰＩとは、
（１）ハードウェア初期化、
（２）ソフトウェア無線初期化、
（３）起動（受信動作開始）、
（４）次送信許可／禁止、
（５）送信要求、
（６）受信データ取得、
（７）ａｃｋ送信要求、
（８）割り込み要因取得、
（９）送信管理状態取得、
である。以下これらのＡＰＩについて説明する。
【０１３０】
（１）ハードウェア初期化は、ＤＲＥ７０８の全ての構成を、ハードウェア的に初期化する。初期化フラグがある構成物はフラグをオンにし、その他は、レジスタなどの値を初期設定する。
【０１３１】
（２）ソフトウェア無線初期化は、実現したい無線仕様に合わせたＤＲＥ７０８の初期化である。ＡＬＵＡＥ１２０２は、コンフィグレーションデータの設定、割込み設定、状態遷移テーブルの設定を行い、ＷＣＥ１２０１には、無線通信処理用にパラメータやタイマ用カウンタを設定する。ＡＬＵＡＥ１２０２の初期化におけるコンフィグレーションデータの設定は、ＣＮＦＧＣ１３０９にあるバッファにコンフィグレーションデータを格納し、制御レジスタ１６００の設定により、ＡＬＵＡ１３０５やＬＳＡＲ１３０４やＬＳＡＬ１３０６に必要なコンフィグレーションデータを格納することにより行う。割込みの設定は、ＡＥＣＴＬの制御レジスタ１５００の設定による。状態遷移テーブルの設定例は、後述する。
【０１３２】
（３）起動（受信開始）は、各種ハードウェアを待機状態から動作状態にすることである。これにより、ＡＬＵＡＥ１２０２は受信動作を開始し、ＷＣＥ１２０１はＣＰＵ７００やＡＬＵＡＥ１２０２からの各種情報を受付可能となる。
【０１３３】
（４）次送信許可／禁止は、送信管理１０３０に次の送信に対して許可や禁止を与える。これは現在の状況からの第一次許可／禁止の判定であり、送信管理１０３０ではタイマによる時間測定などの詳細な判定により、最終的な判定を行う。
【０１３４】
（５）送信要求は、ＡＬＵＡＥ１２０２に送信要求を発行すると共に、送信データを送信用無線特殊演算２９２０に送付する。送信要求では、最初に、ＡＬＵＡＥ１２０２内のローカルメモリを参照し、前回の送信が終了しているかどうかを確認する。終了していないならば、ＡＰＩはエラーを返し終了する。終了しているならば、送信データを送信無線特殊演算２９２０へ送り、送信設定用レジスタに処理の開始を設定する。さらに、ＡＬＵＡＥ１２０２内のローカルメモリの所定のアドレスにフラグを立てることにより、送信要求を通知する。
【０１３５】
（６）受信データ取得は、受信終了割込みをＡＬＵＡＥ１２０２から受けた後、受信データを受信用無線特殊演算３１２０の出力バッファ３１０２から取得することにより行う。
【０１３６】
（７）ａｃｋ送信要求は、送信要求と基本的に同じ処理であるが、送信優先度が最も高いため、前回の送信が終了していない場合はこれをキャンセルし、以降は送信要求と同様に送信の手続きを行う。また、前回の送信をキャンセルした場合は、キャンセルしたことを示す値を返す。
【０１３７】
（８）割込み要因取得はＣＰＵ７００に対して発行された割り込みに対して、その要因を取得する。具体的にはＡＥＣＴＬ１３０１内の割り込み要因レジスタ１５１２の値を参照、解析して割り込み要因に対応した値を返す。
【０１３８】
（９）送信管理状態取得は、送信管理１０３０からの状態取得を行う。６．１．２ 無線通信動作の実現例。
上記で述べた無線ＡＰＩにより実現される無線通信動作の一例の主要動作を図３３に従い述べる。図では、初期化動作は省略した。図で、実線は動作中、点線は休止中または待機中、太線は特に強調したい動作を示す。特に送信管理１０３０は送信可能状態の時のみ実践で示し、タイマによるカウントは図３３では特に示さない。
【０１３９】
まず、起動ＡＰＩ８２２が実行されると、ＡＬＵＡＥ１２０２の受信動作Ｒ８０８が開始される。ここでは受信処理の内、同期処理８１０が実行される。
次に、次送信許可／禁止ＡＰＩ３４００により、送信管理１０３０の制御／ステータスレジスタ２８００の許可フラグＳＥＮ２８０４がセットされる。これにより、１０３０の内部状態遷移が可能な状態になる。
【０１４０】
送信要求ＡＰＩ８２３が発行されると、無線特殊演算１０３１へ送信データが転送され、スクランブルやＣＲＣ動作を行う。また、ＡＬＵＡＥ１２０２のローカルメモリ上の送信要求フラグがセットされる。
同期処理８１０で同期する無線信号がなく、送信管理１０３０が送信可能状態で、上記の送信要求フラグがセットされると、ＡＬＵＡＥ１２０２による送信動作８０５が開始される。送信動作は、図１０に示されるＳ１ステートの処理とＦ２ステートの処理とをコンフィグレーション情報に従って回路構成を変更して実行する。
ＡＬＵＡＥ１２０２は、送信開始に伴い、送信管理１０３０へ送信開始の通知３４０１をする。また、ＡＬＵＡＥ１２０２は送信が終了すると、送信終了通知３４０２を送信管理１０３０へ行うとともに、送信終了割込み８２４を実行する。
【０１４１】
送信終了後、ＡＬＵＡＥ１２０２は再び同期動作８１１を実行する。同期動作中のＳＦＤ検出では、無線特殊演算１０３１も利用される（３４０３）。ＳＦＤ検出が成功すると、同期完了割込み８２５を実行し、有効なデータの復調動作８０９を開始する。受信し、復調されたデータは無線特殊演算１０３１に送られ、ＣＲＣとスクランブルの処理を実行した後、出力バッファに格納される。ＡＬＵＡＥ１２０２は、１パケットの受信が終了すると、受信終了割込み８２６を実行し、受信終了を送信管理１０３０にも通知する。
【０１４２】
ＣＰＵ７００では受信終了割り込み８２６を受けて、受信データ取得ＡＰＩ８２７を実行し、無線特殊演算１０３１での演算済みのデータを取得する（３４０４）。受信を完了し、受け取ったデータが自局宛のデータであった場合は、ａｃｋ要求ＡＰＩ８２８を実行する。
ａｃｋ要求ＡＰＩ８２８の動作は、送信要求ＡＰＩ１７８２３の動作と同様であるため、割愛する。送信動作８０６でＡＣＫ送信が行われたあと、ＡＬＵＡＥ１２０２は、再び受信動作を開始する。
【０１４３】
６．２  コンフィグレーション遷移の設定例
ここでは、図３４に示す状態遷移図を例にとり、コンフィグレーション遷移の制御を行うための設定レジスタと、ＡＥＣＴＬ１３０１の内部動作の概要を述べる。６．２．１ 状態遷移に関連する設定レジスタ
図３４の状態遷移図では、状態遷移以外に、遷移が決定した時点で行う二つの動作を示した。一つは状態遷移に伴う割り込み１０１８であり、もう一つはＷＣＥとの通信１０２８である。以下では、（ａ）で状態遷移テーブルによる状態遷移の設定と、状態遷移に伴う割り込み発生を述べ、（ｂ）でＷＣＥとの通信の設定について述べ、（ｃ）状態遷移テーブル方式の特徴的な設定例を割り込み動作がないについて述べる。
【０１４４】
（ａ）状態遷移テーブルの設定
状態遷移テーブルの設定を、図３４と図３５に従って、以下で述べる。状態遷移テーブルとは自律的に状態遷移を行うために、現在の状態と次に遷移先を決定するための情報をあらかじめ設定したテーブルである。最も単純なのは、図３４の状態遷移図に記載される各ステートをつなぐ矢印の数だけテーブルを持つことであるが、ここでは、そのテーブルを小さくするための方法を述べる。
【０１４５】
図３４に示す状態遷移図を、次に遷移する状態（遷移先状態）で区別し、さらに、割り込みの有無により、区別したのが図３５である。複数の現在の状態があっても、遷移先状態が同一であれば、同一の状態遷移制御レジスタ２６００で定義することが可能である。ただし、割り込みがあるか否かで区別する必要がある。上記の区別の結果、３５００から３５１２までの１３個の状態遷移制御レジスタで表現できる。ただし、一つの現在の状態から、複数の状態への遷移がある場合はトリガー信号の値により区別する。
【０１４６】
トリガー信号の項目では、右下（ＬＲ）、左下（ＬＬ）、右上（ＵＲ）、左上（ＵＬ）の４つのＡＬＵセルのうち、どのトリガー信号からどんな値を出力するかを示している。これらを、ＬＲ、ＬＬ、ＵＲ、ＵＬの順に、最上位ビットからつなぎ合わせ、３２ビットのトリガー信号とし判定する。各々、トリガー信号に設定する数値を１６進で記載している。−と記述してある場所は全て０とする。
このようにテーブルを構成すると、例えば、遷移Ｎｏ．３５０４や３５０５のように複数の状態遷移をまとめてテーブル管理できるため、テーブルを小さくすることができる。
図３４の状態遷移に対応した図３５のトリガー信号の割り当て例について以下で説明する。
【０１４７】
まず、遷移３５００は、Ｒ１が現在の状態であるため、Ｒ１を現在の状態に持つ３５０５と、３５１１とは、トリガー信号で区別する必要がある。これらは、いずれも左上セルの出力がトリガー信号となるため、１のビット位置が異なるＨ０１、Ｈ０２、Ｈ０４を割り当てる。
次に、遷移３５０１は、Ｆ２が現在の状態である。他に現在の状態をＦ２に持つチャネルはないが、右上セルの出力で区別する遷移の中で、現在の状態に依存しない遷移３５０４、３５０５、３５０８とはトリガー信号で区別する必要がある。結果、これら４つの遷移は、Ｈ０１、Ｈ０２、Ｈ０４、Ｈ０８と、１のビット位置が異なるコードを割り当てる。
【０１４８】
３番目に、遷移３５０２は、Ｓ１が現在の状態であるため、遷移３５１１と区別する必要があるが、トリガー信号を出力する位置が異なるため先のような問題は発生しない。そのほか、遷移３５０１と同様に、遷移３５０４、３５０５、３５０８とも区別する必要がある。そこで、遷移３５０２はＨ１０を割り当てる。ここで、遷移３５０２は、遷移３５０１と同一のトリガー信号でも問題ないが、わかりやすさのため異なる設定としている。以下、同様にして、他のトリガー信号を決定することができる。図３６（ｂ）に図３５に対応した状態遷移テーブルの設定を示した。図３６（ａ）は各状態に番号を割り当てた表である。図３６（ｂ）のＮＳＴＡＴは遷移先状態、ＣＳＴＡＴは現在の状態、ＣＭＳＫは現在の状態を状態遷移の条件に含むか否かのマスク、ＩＮＴＥは遷移時に割り込みを実行するか否かの設定、＾ＥＭＳＫはＥＸＩＯＳのＭＳＫ２４０９に与えるマスクをビット反転した値を示す。ここで、割り込み設定のＩＮＴＥは割り込み制御レジスタ１５１０のＳＩＲＱに相当する部分であるが、説明の都合上、本表に加えて記述する。
【０１４９】
上記の過程は、トリガー信号決定条件を厳密に説明したが、トリガー信号のビット数と、状態遷移テーブルに余裕がある場合には、各遷移に状態遷移制御レジスタ２６００を割り当てると、容易に設定は可能である。
【０１５０】
（ｂ）ＷＣＥとの通信の設定
送信管理１０３０への１フレーム開始または終了の状況を知らせるには、ＡＬＵＡＥ１２０２よりＬＳセルとＥＸＩＯＳを介してＷＣＥ１２０６に書き込みを行う。具体的には、送信管理１０３０の制御／ステータスレジスタ２８００のＳＦＬＧまたはＥＦＬＧにフラグを立てる。
【０１５１】
ＬＳセルより、ＡＬＵＡＥ１２０２の外部へアクセスするには、ＬＳセルのコンフィグレーションレジスタ２２００のＬＳ／ＰＰビット２２０２を０にし、ＰＰモードを選択する。次に、ＥＸＩＯＳのコンフィグレーションレジスタ２５００、２５１０で、利用するポートを配線１２０６に接続するように指定することにより、アクセス可能となる。ＷＣＥ１２０１内のどのレジスタにアクセスするのかは、ＡＬＵＡＥ１２０２から与えるアドレスにより指定する。
【０１５２】
（ｃ）割り込み動作がない場合の状態遷移テーブルの設定
ここでは、図３４に含まれる割り込み動作がない場合、即ち、純粋に状態遷移だけが起こる場合を取り上げ、本実施の形態が状態遷移テーブルのテーブル容量削減に、いかに効果的かを示す。結論から述べると、状態の数だけの状態遷移制御レジスタ２６００だけで、状態遷移は表現できる。通常では、状態遷移の遷移数だけのレジスタ数が必要であるため、これがトリガー信号とＭＳＫ２４０９によるマスクの効果である。
【０１５３】
図３７に割り込みをなくした場合の状態遷移テーブルの設定を示した。
図３６（ｂ）の中で、ＩＮＴＥに１が設定されている３５００などを０に設定した結果、例えば、３５００と３５０１は、遷移先が同一になり、現在の状態を遷移条件からはずすことができる。これと同様にして、遷移先が同一の状態遷移は一つの状態遷移制御レジスタ２６００で表現できるため、全部で９個の状態遷移制御レジスタ２６００、即ち、状態の数だけの状態遷移制御レジスタ２６００で表現可能である。この表現では、トリガー信号を示す＾ＥＭＳＫは、１が立つビット位置は全て異なる設定として、トリガー信号だけで判別できる構成としたが、現在の状態が異なる遷移ではトリガー信号を同一にできるため、トリガー信号のビット数を削減することが可能である。
６．２．２ ＡＥＣＴＬの実現方法の概要
ここでは、ＡＥＣＴＬ１３０１の内部の動作を実現する論理図の一例を図３８で示し、実現方法の概要を述べる。
【０１５４】
ＡＥＣＴＬ１３０１は二つのブロックに分かれている。一つ目は３９００であり、状態遷移制御レジスタ２６００で設定した条件を判定するブロックである。３９００は、状態遷移レジスタ２６００の数だけ存在する。実際には、クラスタごとにブロック３９００は存在するが、ここでは一つのクラスタのみを代表した図としている。二つ目は３９２０であり、３９００の複数のブロックからの出力を入力とし、ＡＥＣＴＬ１３０１の外部のモジュールへ次の状態を示す信号１３１１と、割り込み要求信号７１０を出力する。以下で、それぞれのブロックについて述べる。
【０１５５】
（ａ）遷移条件判定ブロック３９００
３９００は、ＥＸＩＯＳ１２０３のＭＳＫ２４０９でマスクをかけた後のトリガー信号１３３０を入力して、遷移チャネルごとに遷移条件の判定を行なう。３９００で、太線は複数ビットからなる束の信号線を示し、太線を入力する比較器３９０１は、複数ビット同士の比較を示し、ＡＮＤ論理３９１１は、各ビットのＡＮＤ論理の集合を示す。
【０１５６】
まず、現在の状態を判定する論理について述べる。現在の状態がＣＳＴＡＴによる指定と同一かどうかを判定する比較器３９０１と、現在の状態を条件に含めないかどうかのＣＭＳＫのＯＲ論理３９０２で判定される。ＣＭＳＫが１なら、無条件に条件成立となる。比較器３９０１の判定は、チャネルレジスタのＣＳＴＡＴ指定と現在の状態を示す１５０４が同一かどうかを判定し、結果を３９０４として得る。３９００では、クラスタごとの詳細は割愛しているので、１５０４のＣ０ＳＴを代表して入力している。比較器は、比較結果が同一であれば１を同一でなければ０を、３９０３に出力する。
【０１５７】
次に、トリガー信号が成立するか否かの条件を判定する論理を述べる。３９０５と３９０６の論理で実現する。トリガー信号判定は、ＥＭＡＳＫでマスクされていないビットがＡＬＬ１であることを判定することにより行う。そこで、３９０５で、全てのビットについて、ＥＭＳＫが立っているか、またはトリガー信号が１かの判定を行い、３９０６でＥＭＳＫが立っていないビットで少なくとも一つは、トリガー信号ビットは１であるかどうかの判定を行う。３９０５と３９０６のＡＮＤ論理を取れば、少なくとも一つのビットはＥＭＳＫが０でトリガー信号が有効であり、これらの有効ビットは全て１であることが信号３９０７として判定できる。
【０１５８】
最後に、３９０４と３９０７とのＡＮＤ論理で、このチャネルは有効か否かが判定される。全てのチャネルについてこの判定結果を信号３９０８として出力する。
各チャネルについて、次の状態を出力する論理は、有効判定信号３９０８と各チャネルのＮＳＴＡＴのＡＮＤとして信号３９０９で得られる。有効でなければ全て０、有効であればＮＳＴＡＴが出力される。チャネルごとの割り込み許可信号は、チャネルごとの有効判定信号３９０８とＩＮＴＥのＡＮＤ論理で、信号３９１０として出力する。
【０１５９】
（ｂ）ＡＥＣＴＬからの出力信号生成ブロック３９２０
チャネルごとに、生成された３９０８、３９０９、３９１０の信号は、ＡＥＣＴＬの出力信号生成ブロック３９２０に入力され、コンフィグレーションの次状態信号１３１１と割り込み要求信号７１０として出力する。信号１３１１は、ＡＬＵアレイ１３０５、ＬＳアレイ＜１３０４・１３０６＞、ＩＯＰ１３０８、ＥＸＩＯＳ１２０３へ出力し、信号７１０はＩＮＴＣ７０６に出力する。以下で、１３１１と７１０を生成する論理について述べる。
【０１６０】
まず、次状態信号１３１１を生成する論理を、３９２０の下半分で示し、以下で述べる。この論理は、一つのチャネルしか有効とはならないことを前提としている。複数のチャネルが有効となるのは、状態遷移制御レジスタ２６００のユーザの設定誤りであり、エラーチェックが必要であるが、ここでは割愛する。エラーチェックは、チャネルごとの有効判定信号３９０８が、複数のチャネルに対して１とならないことをチェックすれば容易に実現できる。また、３９２０内の太線は、３９００内と同様に束の信号線を示し、太線が入力するＯＲ論理３９１４は、単一ビット同士のＯＲ論理の集合体を示し、フリップフロップ群３９１５は、複数ビットのフリップフロップの集合体を示す。
【０１６１】
上記の前提の下では、各チャネルの有効判定信号３９０８と次状態信号３９１０は、有効となるチャネル以外は０である。このため、次状態信号１３１１を出力するフリップフロップ群３９１５は、３９０８の全チャネルについてのＯＲの結果３９１７をイネーブル信号とし、３９１８の全チャネルについてのＯＲ論理の結果３９１６を次の状態信号とする。フリップフロップ群３９１５はクロック同期であるため、イネーブル信号３９１７とｃｌｋとのＡＮＤ論理の結果３９１３を、イネーブル端子３９１２に入力する。次の状態信号３９１６は、入力端子３９２１に入力し、クロックｃｌｋが有効になると、結果を次状態信号１３１１として出力する。
【０１６２】
次に、割り込み要求信号７１０を生成する論理を、３９２０の上半分に従い述べる。７１０を生成する論理も、１３１１と同様に、一つのチャネルしか有効とはならないことを前提としている。フリップフロップ３９１８は、１３１１と同一信号３９１３をイネーブル端子に入力する。入力信号も、１３１１と同様に、各チャネルの割込み許可信号３９１０の全チャネルについてのＯＲ論理の結果３９１９を入力し、クロックclkが有効になると、結果を割り込み要求信号７１０として出力する。
【０１６３】
以上、ソフトウェア無線の実施例で説明してきたが、本節のコンフィグレーションの設定例は、無線に限られるものではなく、種々のアプリケーションで応用可能であることは言うまでもない。
７．送信キャンセルする無線ＡＰＩの利用例
無線通信動作において、送信要求がキャンセルされる場合における無線ＡＰＩ利用の一例について、図３９を用いて述べる。図では、初期化動作は省略した。各種の制御／ステータスレジスタとバッファ、およびローカルメモリ２１６０２が、アドレスマップされておりＣＰＵ７００からアクセス可能である。図で、実線は動作中、点線は休止中、太線は特に強調したい動作を示す。
【０１６４】
まず、起動ＡＰＩ８２２が発行されると、ＡＬＵＡＥ（ＡＡＥ）１２０２の受信動作Ｒ８０８が開始される（８１０）。
次に、次送信許可／禁止ＡＰＩ３４００により、送信管理１０３０の制御／ステータスレジスタ２８００の許可フラグＳＥＮ２８０４をオンにする。これにより、１０３０の内部状態は送信可能状態に移る。
【０１６５】
その後、しばらく、受信がないが、受信動作Ｓ８０７は、ＳＦＤ検出を行い続けるとため、受信動作はハード的には行っていることになる（８１１）。ＳＦＤ検出では、無線特殊演算１０３１も動作する（３４０３）。
受信動作８１０は同期が完了すると、同期完了の通知の割り込み８２５を要求する。また、送信管理１０３０に対して同期終了のフラグのセット４８００を実行する。さらに、ＡＡＥ１２０２は有効なデータの受信動作８０９に移る。
【０１６６】
次に、送信要求ＡＰＩ８２３が実行されるが、ＡＡＥ１２０２は受信動作８０９中であるため、すぐに送信は行われず、送信データと送信フラグのセットを、それぞれ無線特殊演算１０３１回路とＡＡＥ１２０２に対して行う。
有効なデータの受信動作８０９が終了すると、ＡＡＥは、３４０２で送信終了通知を送信管理１０３０へ行うとともに、送信終了割込み８２４を要求する。
受信終了に伴い、受信データ取得ＡＰＩ８２７が発行され、無線特殊演算１０３１での演算済みのデータを取得する（３４０４）。
【０１６７】
ＣＰＵは受信したパケットを解析し、自身に対するパケットであれば、ａｃｋ要求ＡＰＩ８２８を起動する。この時、ａｃｋの送信を優先して行うため、前回の送信要求８２３はキャンセルされる。もし、受信したパケットが自身に対するものではない場合は、送信要求８２３のキャンセルは行われない。ａｃｋ要求ＡＰＩ８２８の動作は、送信要求ＡＰＩ８２３の動作と同様であるため、割愛する。８２６でＡＣＫ送信が行われたあと、ＡＡＥ１２０２は、再び、受信動作を開始する。
以上、実施例に基づいて本発明を説明してきたが、本発明の趣旨を逸脱しない範囲で種々の変更が可能である。
【図面の簡単な説明】
【０１６８】
【図１】本発明の一つの実施形態である車搭載のソフトウェア無線機の利用方法と位置づけを示す図である。
【図２】本発明の一つの実施形態であるソフトウェア無線機の構成図である。
【図３】本発明の一つの実施形態であるソフトウェア無線機の前処理部の第２の構成を示す図である。
【図４】本発明の一つの実施形態であるソフトウェア無線機とカーナビゲーションシステムとの無線実現手順を示すフロー図である。
【図５】本発明の一つの実施形態である無線データ構造を示す図である。
【図６】本発明の一つの実施形態である無線の送信と受信を切り替えるフローを示す図である。
【図７】本発明の一つの実施形態であるダイナミックリコンフィグレーション（ＤＲ）チップの構成図である。
【図８】本発明の一つの実施形態である無線処理をＤＲチップ上で実現するための動作フロー図である。
【図９】本発明の一つの実施形態であるＤＲＥで送信管理を実現する動作フロー図である。
【図１０】本発明の一つの実施形態である受信・送信動作の状態遷移図である。
【図１１】本発明の一つの実施形態である無線データ構造の詳細を示す図である。
【図１２】本発明の一つの実施形態であるＤＲＥの構成図である。
【図１３】本発明の一つの実施形態であるＡＬＵＡＥの構成図である。
【図１４】本発明の一つの実施形態であるＡＬＵＡＥの設定レジスタの概要を示す図である。
【図１５】本発明の一つの実施形態であるＡＥＣＴＬの制御／ステータスレジスタの構成図である。
【図１６】本発明の一つの実施形態であるＣＮＦＧＣの制御／ステータスレジスタの構成図である。
【図１７】本発明の一つの実施形態であるＡＬＵセルを利用して、フィルタリング処理を実行する場合のコンフィグレーション情報を示す図である。
【図１８】本発明の一つの実施形態であるＡＬＵセルの構成図である。
【図１９】本発明の一つの実施形態であるＡＬＵセルのコンフィグレーションレジスタの構成図である。
【図２０】本発明の一つの実施形態であるＬＳセルとＡＬＵセルのインターフェースを示す図である。
【図２１】本発明の一つの実施形態であるＩＯブロックと、その構成要素であるＩＯＣＴＬの構成図である。
【図２２】本発明の一つの実施形態であるＬＳセルのコンフィグレーションレジスタの構成図である。
【図２３】本発明の一つの実施形態であるＩＯＣＴＬのコンフィグレーションレジスタの構成図である。
【図２４】本発明の一つの実施形態であるＡＬＵＡＥが外部とデータアクセス機構と、ＥＸＩＯＳの位置づけを示す図である。
【図２５】本発明の一つの実施形態であるＥＸＩＯＳのコンフィグレーションレジスタの構成図である。
【図２６】本発明の一つの実施形態であるＡＥＣＴＬの状態遷移制御レジスタの構成図である。
【図２７】本発明の一つの実施形態である送信管理モジュールのインターフェースを示す図である。
【図２８】本発明の一つの実施形態である送信管理モジュールの制御／ステータスレジスタの構成図である。
【図２９】本発明の一つの実施形態である送信時の無線特殊演算モジュールの動作フローを示す図である。
【図３０】本発明の一つの実施形態である無線特殊演算モジュールの送信用レジスタを示す図である。
【図３１】本発明の一つの実施形態である受信時の無線特殊演算モジュールの動作フローを示す図である。
【図３２】本発明の一つの実施形態である無線特殊演算モジュールの受信用レジスタを示す図である。
【図３３】本発明の一つの実施形態である無線通信の代表的な動作で、無線ＡＰＩの利用例を示す図である。
【図３４】本発明の一つの実施形態である状態遷移図で、状態遷移テーブルで設定する動作を示す図である。
【図３５】本発明の一つの実施形態である状態遷移図から、状態遷移を分類した結果を示す図である。
【図３６】本発明の一つの実施形態である状態遷移図から、状態遷移テーブルのコード設定例を示す図である。
【図３７】本発明の一つの実施形態である状態遷移図から、割り込み要求動作を削除した場合の状態遷移テーブルの設定例を示す図である。
【図３８】本発明の一つの実施形態であるＡＥＣＴＬの内部の動作を示す図である。
【図３９】本発明の一つの実施形態における無線通信の動作で、送信をキャンセルする無線ＡＰＩの利用例を示す図である。
【符号の説明】
【０１６９】
１０６…ソフトウェア無線機、１０７…カーナビゲーションシステム、２０２…ソフトウェア無線機の前処理部、２０３…ダイナミックリコンフィギュラブル（ＤＲ）チップ、２０６…ＡＤＣ／ＤＡＣ、２０５…ＦＬＡＳＨロム、５００…無線データ構造、７００…ＣＰＵ、７０６…割り込みコントローラＩＮＴＣ、７０８…ＤＲエンジン、１２０２…ＡＬＵＡＥ、１２０１…ＷＣエンジン、２１２３…ＣＮＦＧＣ、１３０５…ＡＬＵアレイ、＜１３０４・１３０６＞…ＬＳアレイ、１３０４…ＬＳＡＲ、１３０６…ＬＳＡＬ、１３０１…ＡＥＣＴＬ、２１２０１…ＩＯブロック、２１００…ＩＯＣＴＬ、２１６０２…ローカルメモリ、１２０３…ＥＸＩＯＳ、１３１１…コンフィグレーションの次状態信号、７１０…割り込み要求信号、１０３０…送信管理、１０３１…無線特殊演算、９０６…送信許可／禁止、９１０…内部状態、２７０４…送信要求、２６００…状態遷移制御レジスタ、２２００…ＬＳセルのコンフィグレーションレジスタ、２３００…ＩＯＣＴＬのコンフィグレーションレジスタ、２５００…ＥＸＩＯＳの最下位ＩＯポート用コンフィグレーションレジスタ、２５１０…ＥＸＩＯＳの最上位ＩＯポート用コンフィグレーションレジスタ、２５２０…ＥＸＩＯＳのトリガー信号用コンフィグレーションレジスタ、２００１…ＡＬＵセル、２５００…ＡＬＵセルのコンフィグレーションレジスタ、２０００…ＬＳセル、２８００…送信管理用制御／ステータスレジスタ、３０００…無線特殊演算の送信用制御／ステータスレジスタ、３０１０…無線特殊演算の送信用無線データ長レジスタ、２９０７…無線特殊演算の送信用出力ポートレジスタ、３２００…無線特殊演算の受信用制御／ステータスレジスタ、３２１０…無線特殊演算の受信用無線データ長レジスタ、３１０３…無線特殊演算の受信ＡＡＥ側出力ポートレジスタ。
【図１】
2006108953.tif 000003
【図２】
2006108953.tif 000004
【図３】
2006108953.tif 000005
【図４】
2006108953.tif 000006
【図５】
2006108953.tif 000007
【図６】
2006108953.tif 000008
【図７】
2006108953.tif 000009
【図８】
2006108953.tif 000010
【図９】
2006108953.tif 000011
【図１０】
2006108953.tif 000012
【図１１】
2006108953.tif 000013
【図１２】
2006108953.tif 000014
【図１３】
2006108953.tif 000015
【図１４】
2006108953.tif 000016
【図１５】
2006108953.tif 000017
【図１６】
2006108953.tif 000018
【図１７】
2006108953.tif 000019
【図１８】
2006108953.tif 000020
【図１９】
2006108953.tif 000021
【図２０】
2006108953.tif 000022
【図２１】
2006108953.tif 000023
【図２２】
2006108953.tif 000024
【図２３】
2006108953.tif 000025
【図２４】
2006108953.tif 000026
【図２５】
2006108953.tif 000027
【図２６】
2006108953.tif 000028
【図２７】
2006108953.tif 000029
【図２８】
2006108953.tif 000030
【図２９】
2006108953.tif 000031
【図３０】
2006108953.tif 000032
【図３１】
2006108953.tif 000033
【図３２】
2006108953.tif 000034
【図３３】
2006108953.tif 000035
【図３４】
2006108953.tif 000036
【図３５】
2006108953.tif 000037
【図３６】
2006108953.tif 000038
【図３７】
2006108953.tif 000039
【図３８】
2006108953.tif 000040
【図３９】
2006108953.tif 000041