(57)【要約】【課題】複数の無線通信方式における種々の符号化／復号化処理を高速に、かつ簡単な回路構成によって実現しうる符号化／復号化処理プロセッサ等を提供する。【解決手段】符号化／復号化処理プロセッサ１００は、符号化および復号化処理専用のコプロセッサ１１を有すると共に、コプロセッサが、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタ６０と、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を１サイクルで複数のビット分を並列に行う演算回路２２ａとを備える。また、記憶装置のアドレスを出力するアドレスジェネレータ回路３０，４０と、データを一時的に格納するＦＩＦＯ回路３１，４１と、データを予め定められたビット数に揃えて出力するデータパッキング回路３２，４２とを備えるメモリコントローラ２０〜２１を有する。【選択図】図１
2012108411.tif 000002
【特許請求の範囲】
【請求項１】
無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化／復号化処理プロセッサであって、
前記符号化および復号化処理専用のコプロセッサを有すると共に、
前記コプロセッサが、
外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、
前記動作モードおよび生成多項式に基づいて動作し、前記符号化および復号化処理に必要な演算を１サイクルで複数のビット分を並列に行う演算回路と
を備えることを特徴とする符号化／復号化処理プロセッサ。
【請求項２】
前記コプロセッサが、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラを備え、
このメモリコントローラが、
外部から与えられたパラメータによって自立的にデータの読み書きを行う前記記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するＦＩＦＯ（First In First Out）回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを予め定められたビット数に揃えて出力するデータパッキング回路と
を備えることを特徴とする、請求項１に記載の符号化／復号化処理プロセッサ。
【請求項３】
前記メモリコントローラが、前記アドレスジェネレータ回路と、前記ＦＩＦＯ回路と、前記データパッキング回路とをデータ読み出し用とデータ書き込み用にそれぞれ備えることを特徴とする、請求項２に記載の符号化／復号化処理プロセッサ。
【請求項４】
前記データ書き込み用アドレスジェネレータ回路が、
初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタと、
前記初期ポインタの値を初期値として、アドレスを発行するたびに前記ステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器と
を備えることを特徴とする、請求項３に記載の符号化／復号化処理プロセッサ。
【請求項５】
前記データ読み出し用アドレスジェネレータ回路が、
複数のオフセットアドレス計算モジュールと、
そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器とを備えると共に、
前記オフセットアドレス計算モジュールが、第１および第２の前記アドレス演算器を備え、第１の前記アドレス演算器のアドレスポインタを外部から与えられたカウント数の値で一定回数ごとに第２の前記アドレス演算器で計算しているアドレスポインタの値に更新することを特徴とする、請求項３に記載の符号化／復号化処理プロセッサ。
【請求項６】
前記データ読み出し用アドレスジェネレータ回路が、
発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路と、
メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用ＦＩＦＯ回路と
を備えることを特徴とする、請求項５に記載の符号化／復号化処理プロセッサ。
【請求項７】
前記メモリコントローラが、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能と、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能と
を備えることを特徴とする、請求項２に記載の符号化／復号化処理プロセッサ。
【請求項８】
前記演算回路が、外部から与えられた前記動作モードおよび生成多項式に応じて、
スクランブリング処理、畳み込み符号化処理、ＣＲＣ符号化処理およびビット連接／並び替え処理のうちいずれか１つ以上の処理を行う機能を備えることを特徴とする、請求項１に記載の符号化／復号化処理プロセッサ。
【請求項９】
外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化／復号化処理（コーデック）モジュールを備えると共に、
前記符号化／復号化処理（コーデック）モジュールが、
前記受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路と、
前記受信データの誤り訂正復号化以外の処理を行う請求項１ないし請求項８のうちいずれか１項に記載の符号化／復号化処理プロセッサと
を備えたことを特徴とする無線通信装置。
【請求項１０】
前記符号化／復号化処理（コーデック）モジュールが、
前記送信データおよび前記受信データのインタリーブ／デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路を備えると共に、
前記符号化／復号化処理プロセッサが、前記受信データの誤り訂正復号化、および前記送信データおよび前記受信データのインタリーブ／デインタリーブ処理以外の処理を行うことを特徴とする、請求項９に記載の無線通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化／復号化処理プロセッサ、および無線通信装置に関し、特に複数の無線方式における種々の符号化／復号化処理を高速かつ簡単な回路構成で行える符号化／復号化処理プロセッサ等に関する。
【背景技術】
【０００２】
デジタルデータを送受信する無線通信システムにおいては、一般的に、送受信データ信号の符号化／復号化処理が必要である。より具体的には、送信側では、送信データ信号に対するＣＲＣコード付加、スクランブリング処理、畳み込み符号化、インタリーブ（データ並べ替え）処理などの符号化処理が必要であり、受信側では、受信データ信号に対するデインタリーブ（インタリーブの逆）処理、ビタビ復号化、デスクランブリング処理、ＣＲＣ判定処理などの復号化処理が必要である。【０００３】
これらの符号化／復号化処理は、ビット単位やバイト単位で演算が実施されるため、ビット／バイト演算処理とも呼ばれることもある。従来は、単一の無線通信方式の符号化／復号化処理に高速かつ低消費電力に対応するために、それぞれ処理ごとに専用のハードウェア回路を実装することにより、これらの符号化／復号化処理が実現されてきた。【０００４】
また、近年、複数の無線方式に１つの装置で対応できるようなソフトウェア無線技術への期待が高まっている。規格化や標準化されている種々の無線方式間においては、これらの符号化／復号化処理の内容はそれぞれ類似しているものの、処理データ単位や演算式中の一部の処理パラメータ、および演算順序等が異なるという性質がある。【０００５】
ただし、無線通信方式ごとに専用のハードウェア回路を実装する手法では、複数の無線方式における符号化／復号化処理に対応しようとした場合、対応する無線方式の数だけ、専用ハードウェア回路が必要となってしまうため、必要とされる回路の面積やコストが大きくなるという問題がある。また、処理の変更や拡張に対する柔軟性が低いという点も問題となる。【０００６】
この問題を解決しうる技術として、後述の特許文献１０には、専用ハードウェア回路を種々のパラメータによって設定可能な構成とすることで複数の無線方式に対応させて、これによって高速性と電力効率を両立するという技術が記載されている。これは、専用の処理エンジンを複数のベースバンド処理に対応できるように再設定可能な構成にすることで、柔軟に複数の無線方式に対応させるものである。【０００７】
また、これに類似する技術として、特許文献１には、専用のハードウェア回路を動作モード設定可能にし、中央の全体制御用プロセッサから制御することでシステム変更等に柔軟に対応するという技術が記載されている。【０００８】
また、特許文献７には、専用の信号処理プロセッサ（ＤＳＰ）などのプロセッサを用いて複数の無線方式に対応する符号化／復号化処理をソフトウェアによって処理するという技術が記載されている。これは、柔軟性を確保するために一般的な信号処理プロセッサと、メモリアクセスを高速化するためのＤＭＡコントローラを用いて通信処理を実現することにより、種々の通信方式に柔軟に対応するというものである。【０００９】
また、これに類似する技術として、特許文献２には、信号処理プロセッサの外部に専用のメモリコントローラを備えることで、プロセッサのメモリアクセスレイテンシを削減するという技術が記載されている。【００１０】
これら以外の先行技術として、特許文献３には、シングルメモリポートを利用して回路規模の増加を抑えつつ、変倍機能を内蔵可能な画像処理用信号処理装置が記載されている。特許文献４には、加算処理と乗算処理とを並列実行可能なように構成することにより、演算ロジックの省スペース化を可能であるという論理集積回路が記載されている。【００１１】
また、特許文献５には、フォワードパイロットトーンとリバースパイロットトーンによって通信に係るパラメータを設定する通信方式が記載されている。特許文献６には、データを共有メモリに転送する前にローカルで圧縮することによって、複数のプロセッサ間でのデータ転送を効率化するというマルチプロセッサシステムが記載されている。【００１２】
特許文献８には、命令によって毎回アドレスを計算するアドレス生成部を含むプロセッサの設計ツールなどが記載されている。特許文献９には、内部に演算用のレジスタファイルを備えるプロセッサを利用した通信システムが記載されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２０００−２９５３０９号公報
【特許文献２】特開２００１−０３４５７３号公報
【特許文献３】特開２００６−１５５６３７号公報
【特許文献４】特開２００７−２９５１２８号公報
【特許文献５】特開２００８−１８７７２２号公報
【特許文献６】特開２０１０−０９２４９９号公報
【特許文献７】特表２００２−５４１６９３号公報
【特許文献８】特表２００３−５１８２８０号公報
【特許文献９】特表２００５−５１６４３２号公報
【特許文献１０】特表２００９−５０５６０８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
第１の課題は、無線通信機器における符号化／復号化処理（ビット／バイト演算処理）において、複数の無線通信方式における種々の符号化／復号化処理に柔軟に対応できないことである。【００１５】
その理由は、一般的に符号化／復号化処理の内容は、複数の無線方式間にて各々の処理は類似した処理が多いものの、一部の処理パラメータや演算順序は各々の無線方式の仕様に大きく依存しており、かつ、必要演算量も比較的大きいため、従来は、無線方式ごとに専用のハードウェア回路を実装することによって実現してきたためである。【００１６】
しかしながら、近年のシステムＬＳＩの大規模化、高速化などによる処理能力向上に伴い、同一の符号化／復号化処理回路にて複数の無線方式に対応できるような、マルチモード無線機やソフトウェア無線機（ＳＤＲ: Software Defined Ratio）と呼ばれる無線通信機器の実現が望まれている。更に、将来の仕様変更や機能拡張にも柔軟に対応できるものである必要もある。【００１７】
第２の課題は、無線通信システムにおける符号化／復号化処理（ビット／バイト演算処理）において、柔軟性を重視してプロセッサによるソフトウェア処理で実現した場合に、複数のビット（バイト）分を同時に演算するなど、メモリアクセスレイテンシも含めて高速に処理できないことである。【００１８】
その理由は、一般的に、無線通信における符号化／復号化処理では、１つのビットを処理するために前後の複数のビット情報を必要とするため、専用のハードウェア回路で並列に実現する場合はそれほど問題ないが、柔軟性や拡張性を重視してプロセッサによるソフトウェア処理で実現しようとした場合、一般的なプロセッサでは、複数のビット／バイト分の符号化／復号化処理を同時に演算するのは困難であるからである。【００１９】
また、プロセッサによるソフトウェア処理の場合には、一般的にはプロセッサがメモリにアクセスするために一定のレイテンシ（サイクル数、もしくは遅延時間）が必要となるため、その分だけ演算器の稼働率が低下して処理時間が増加するので、高速化できないという問題があるからでもある。【００２０】
ここで、無線通信における符号化／復号化処理の処理量は、一般的に要求されるデータ転送レートに依存するものである。近年の無線方式においては要求されるデータ転送レートが増加し、さらに低消費電力化も望まれているため、より低消費電力にて高速通信が可能であることが重要となっている。【００２１】
以上の課題を達成しうる技術は、前述の各特許文献には記載されていない。特許文献１０に記載の技術では、演算式の一部の処理パラメータの変更には再設定により比較的容易に対応できるものの、処理データ単位や繰り返し回数、細かい演算順序や各処理エンジン（専用ハードウェア回路）間の処理順序等の変更には簡単には対応できないという問題がある。【００２２】
これを処理順序等も可変にできるように構成するには、各専用ハードウェア回路間の接続構成が非常に複雑化し、装置の面積や必要なコストがさらに大きくなるという問題や、今後予想される処理エンジン内における演算順序変更等の仕様拡張にはいずれにしても柔軟に対応できないという問題がある。【００２３】
また、特許文献１に記載の技術も、これと同様に細かい処理順序や各処理（専用ハードウェア回路）間の処理順序等の変更には簡単には対応できないという問題がある。【００２４】
一方、特許文献７に記載の技術では、無線通信の符号化／復号化処理はビット単位やバイト単位での特殊なビット処理となるため、一般的な信号処理プロセッサでは、複数のビットを並列に演算可能な専用ハードウェア構成に比べて処理サイクル数が大幅に増加するという問題がある。また、処理変更に対する柔軟性は非常に高いものの、例えばプロセッサからメモリへのアクセスレイテンシが性能オーバヘッドとなるため、やはり高速化が難しいという課題もある。【００２５】
これを、メモリアクセスにＤＭＡコントローラを用いるようにしたとしても、プロセッサによるソフトウェア処理の場合、メモリのロード／ストア命令と演算処理命令とに別々のサイクルを必要とするため、専用ハードウェア処理に比べて低速であるという問題や、プロセッサで処理するデータ単位とメモリ上に格納されるデータ単位が異なる場合はビットシフト処理等の性能オーバヘッドが必要であるという問題もある。その上で更に高速化しようとする場合は、クロック周波数を高速にする必要があり、消費電力や発熱量の増加を招くという問題がある。【００２６】
また、特許文献２に記載の技術も、外部メモリに対して単純にアドレスをインクリメントしながらアドレスとデータを一緒に転送するデータ書き込み時のスループットは向上するものの、アドレスと対応するデータの転送サイクルが異なる（読み出しに２サイクル以上必要とする）ので、データ読み出し時のスループットが向上しないという問題がある。また、アドレスも単純にインクリメントするだけのものであるため、無線通信の符号化／復号化処理におけるインタリーブ／デインタリーブ処理のような、単純なインクリメントではない特殊なアドレス順には対応できないという問題もある。【００２７】
これら以外の、特許文献３〜６、および特許文献８〜９に記載の技術は、いずれも、複数の無線通信方式に対応しうる符号化／復号化処理を高速に、かつ簡単な回路構成によって実現するということを目的としておらず、またそのための構成も備えていないので、当然ながらこの問題を解決することはできない。【００２８】
本発明の目的は、複数の無線通信方式における種々の符号化／復号化処理を高速に、かつ簡単な回路構成によって実現しうる符号化／復号化処理プロセッサ、および無線通信装置を提供することにある。
【課題を解決するための手段】
【００２９】
上記目的を達成するため、本発明に係る符号化／復号化処理プロセッサは、無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化／復号化処理プロセッサであって、符号化および復号化処理専用のコプロセッサを有すると共に、コプロセッサが、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を１サイクルで複数のビット分を並列に行う演算回路とを備えることを特徴とする。【００３０】
上記目的を達成するため、本発明に係る無線通信装置は、外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化／復号化処理（コーデック）モジュールを備えると共に、符号化／復号化処理（コーデック）モジュールが、受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路と、受信データの誤り訂正復号化以外の処理を行う請求項１ないし請求項８のうちいずれか１項に記載の符号化／復号化処理プロセッサとを備えたことを特徴とする。ここでいう誤り訂正復号化とは、ビタビ復号化およびターボ復号化のうちいずれか１つ以上の処理をいう。
【発明の効果】
【００３１】
本発明は、上述したように、符号化および復号化処理専用のコプロセッサが、外部から与えられた動作モードおよび生成多項式に基づいて１サイクルで複数のビット分を並列に行うプログラマブル演算器を備える構成としたので、符号化／復号化処理を高速に行うことができ、この処理内容について外部から容易に変更することが可能となる。これによって、複数の無線通信方式における種々の符号化／復号化処理を高速に、かつ簡単な回路構成によって実現可能であるという優れた特徴を持つ符号化／復号化処理プロセッサ、および無線通信装置を提供することができる。
【図面の簡単な説明】
【００３２】
【図１】図３に示した符号化／復号化処理プロセッサのより詳しい構成について示す説明図である。
【図２】図１に示したコプロセッサのより詳しい構成について示す説明図である。
【図３】本発明の第１の実施形態に係る符号化／復号化処理プロセッサを利用した無線通信装置の構成を示す説明図である。
【図４】図４Ａは図２に示したコプロセッサのレジスタファイルのマッピング構成例について示す説明図である。図４Ｂは図２に示したコプロセッサの各レジスタのビットフォーマットについて示す説明図である。
【図５】図２に示したコプロセッサにおけるコプロセッサ命令の命令コードの構成例を示す説明図である。
【図６】図２に示した専用演算器（ＡＬＵ）内のスクランブリング回路（ＳＣＲＡＭ）の構成例を示す説明図である。
【図７】図２に示した専用演算器（ＡＬＵ）内の畳み込み符号化器（ＣＯＮＶ）の構成例を示す説明図である。
【図８】図２に示した専用演算器（ＡＬＵ）内のＣＲＣ符号化器（ＣＲＣ）の構成例を示す説明図である。
【図９】図２に示した専用演算器（ＡＬＵ）内のビット連接／並び替え回路（ＰＥＲＭ）の構成例を示す図である。
【図１０】図２に示したメモリコントローラで、書き込みアドレスジェネレータ、書き込みデータＦＩＦＯ回路、および書き込みデータパッキング回路のより詳しい構成および動作について示す説明図である。
【図１１】図１０に示したメモリコントローラのメモリ書き込み用各回路で、コプロセッサからＣＲ２またはＣＲ３レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
【図１２】図２に示したメモリコントローラで、読み出しアドレスジェネレータ、読み出しデータＦＩＦＯ回路、読み出しデータパッキング回路のより詳しい構成および動作について示す説明図である。
【図１３】図１２に示した読み出しアドレスジェネレータ内のオフセットアドレスジェネレータのより詳しい構成について示す説明図である。
【図１４】図１３に示したオフセットアドレスジェネレータによって行われる、無線通信の符号化／復号化処理における一般的なインタリーブ処理の例を示す説明図である。
【図１５】図１０に示したメモリコントローラのメモリ読み出し用各回路で、ＣＲ２またはＣＲ３レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
【図１６】図１６Ａは図１および図３に示した符号化／復号化処理プロセッサにおける符号化処理の一例を示す説明図である。図１６Ｂは図１および図３に示した符号化／復号化処理プロセッサにおける復号化処理の一例を示す説明図である。
【図１７】図１および図３に示した符号化／復号化処理プロセッサで図１６Ａに示した処理を行う場合の、ステップＳ３０１〜３０４に示した符号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
【図１８】図１および図３に示した符号化／復号化処理プロセッサで図１６Ｂに示した処理を行う場合の、ステップＳ３１１〜３１４に示した復号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
【図１９】図１および図３に示した符号化／復号化処理プロセッサにおける畳み込み符号化処理やスクランブリング（デスクランブリング）処理を、コプロセッサ内の専用演算器（ＡＬＵ）にマッピングして処理する場合のマッピング構成例、すなわち、パラメータレジスタの設定例を示す説明図である。
【図２０】図１および図３に示した符号化／復号化処理プロセッサにおける畳み込み符号化処理やスクランブリング（デスクランブリング）処理を行う場合のプロセッサ処理プログラムの記述例を示す説明図である。
【図２１】本発明の第２の実施形態に係る符号化／復号化処理プロセッサを利用した無線通信装置の構成を示す説明図である。
【図２２】図２１で示した符号化／復号化処理プロセッサのより詳しい構成について示す説明図である。
【図２３】図２２で示したコプロセッサのより詳しい構成について示す説明図である。
【図２４】図２３に示したローカルメモリコントローラ（ＬＭＣ）および共有メモリコントローラ（ＳＭＣ）のより詳しい構成について示す説明図である。
【発明を実施するための形態】
【００３３】
（第１の実施形態）
以下、本発明の第１の実施形態の構成について添付図１〜３、１０、および１２〜１３に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る符号化／復号化処理プロセッサ１００は、無線通信装置１に内蔵され、通信データの符号化および復号化処理を行う符号化／復号化処理プロセッサである。符号化／復号化処理プロセッサ１００は、符号化および復号化処理専用のコプロセッサ１１を有する。そしてコプロセッサ１１は、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタ６０と、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を１サイクルで複数のビット分を並列に行う演算回路２２ａとを備える。
【００３４】
また、コプロセッサ１１は、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラ２０〜２１を備え、このメモリコントローラ２０〜２１が、外部から与えられたパラメータによって自立的にデータの読み書きを行う記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路３０，４０と、記憶装置上の出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するＦＩＦＯ（First In First Out）回路３１，４１と、記憶装置上の出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを予め定められたビット数に揃えて出力するデータパッキング回路３２，４２とを備える。これらの各々の回路は、データ読み出し用（４０，４１，４２）とデータ書き込み用（３０，３１，３２）に各々備えられている。
【００３５】
さらに、データ書き込み用アドレスジェネレータ回路３０は、初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタ３０ａ１と、初期ポインタの値を初期値として、アドレスを発行するたびにステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器３０ａ２とを備える。
【００３６】
そして、データ読み出し用アドレスジェネレータ回路４０は、複数のオフセットアドレス計算モジュール８０と、そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器４０ａ４とを備え、オフセットアドレス計算モジュール８０が、第１および第２のアドレス演算器８１〜８２を備え、第１のアドレス演算器８１のアドレスポインタ８１ａを外部から与えられたカウント数の値で一定回数ごとに第２のアドレス演算器８２で計算しているアドレスポインタ８２ａの値に更新する。
【００３７】
さらに、データ読み出し用アドレスジェネレータ回路４０は、発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路４０ａ２と、メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用ＦＩＦＯ回路４０ａ３も備える。
【００３８】
そして、メモリコントローラ２０〜２１が、プログラマブル演算器側から、記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能（ＣＲ２〜３）と、プログラマブル演算器側から、記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能（ＣＲ４〜５）とを備える。
【００３９】
その一方で、演算回路２２ａが、外部から与えられた動作モードおよび生成多項式に応じて、スクランブリング処理５０、畳み込み符号化処理５１、ＣＲＣ符号化処理５２およびビット連接／並び替え処理５３のうちいずれか１つ以上の処理を行う機能を備える。
【００４０】
この符号化／復号化処理プロセッサ１００を内蔵する無線通信装置１は、外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化／復号化処理（コーデック）モジュール２００を備える。この符号化／復号化処理（コーデック）モジュール２００は、受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路（ビタビ処理回路１０４ａおよびターボ処理回路１０４ｂ）と、受信データの誤り訂正復号化以外の処理を行う上記の符号化／復号化処理プロセッサ１００とを備える。
【００４１】
この構成を備えることにより、符号化／復号化処理プロセッサ１００は、複数の無線通信方式における種々の符号化／復号化処理を高速に、かつ簡単な回路構成によって実現することが可能となる。
以下、これをより詳細に説明する。
【００４２】
図３は、本発明の第１の実施形態に係る符号化／復号化処理プロセッサ１００を利用した無線通信装置１の構成を示す説明図である。無線通信装置１は、ＩＥＥＥ（Institute of Electrical and Electronic Engineers）にて規格化されている無線ＬＡＮ（ＩＥＥＥ８０２．１１ａ）方式やＷｉＭＡＸ（ＩＥＥＥ８０２．１６ｅ）方式などを含む複数の無線通信方式に対応可能な符号化／復号化処理（コーデック）モジュール２００の中に、符号化／復号化処理プロセッサ１００を適用したものである。
【００４３】
無線通信装置１は、無線通信のベースバンド処理を行うモジュールとして、基地局と端末間の同期確立やタイミング探査を行うサーチモジュール２０５、送信データの変調処理や受信データの復調処理を行うモデムモジュール２０６、送信データの符号化処理や受信データの復号化処理を行う符号化／復号化処理（コーデック）モジュール２００、上位レイヤ（レイヤ２またはレイヤ３）に係る通信データを処理する汎用プロセッサ（ＣＰＵ）２０１、各無線通信モジュール間の実行制御を行うリソースマネージャ２０２、各無線通信モジュール間でデータを転送するための共有メモリ２０３を備える。
【００４４】
符号化／復号化処理（コーデック）モジュール２００は符号化／復号化処理プロセッサ１００、命令メモリ１０１、データメモリ１０２、インタフェース制御回路１０３、ビタビ処理回路１０４ａ、ターボ処理回路１０４ｂ、符号化／復号化処理プロセッサ１００とビタビ処理回路１０４間でデータを共有する共有メモリ１０５などを備える。
【００４５】
すなわち、符号化／復号化処理のうち、その処理量が膨大でプロセッサ処理では処理能力が不足する誤り訂正復号化処理について専用ハードウェアであるビタビ処理回路１０４ａおよびターボ処理回路１０４ｂを用いて処理を実施し、それ以外の複数の符号化／復号化処理については符号化／復号化処理プロセッサ１００を用いて処理を実施するものである。ここでいう誤り訂正復号化とは、ビタビ復号化およびターボ復号化のうちいずれか１つ以上の処理をいう。
【００４６】
図１は、図３に示した符号化／復号化処理プロセッサ１００のより詳しい構成について示す説明図である。符号化／復号化処理プロセッサ１００は、制御用プロセッサ１０に、符号化／復号化処理（ビット／バイト演算処理）専用のコプロセッサを接続した構成である。
【００４７】
本発明における符号化／復号化処理プロセッサ１００は、インタフェースとして、外部からブート制御や割り込み信号入力を行うためのプロセッサ制御インタフェース１１１ａ、符号化／復号化処理プロセッサ１００から命令メモリ１０１にアクセスするための命令メモリインタフェース１１１ｂ、ローカルメモリ（データメモリ）１０２にアクセスするためのローカルメモリインタフェース１１１ｂ、共有メモリ１０５または２０３にアクセスするための共有メモリインタフェース１１１ｃ、外部装置に制御アクセスするためのＤＳＰインタフェース１１１ｄ、外部共有メモリにストリームアクセスするための共有メモリインタフェース１１１ｅなどを備える。
【００４８】
符号化／復号化処理プロセッサ１００内部は、コプロセッサインタフェース１１２ａを備えた一般的な制御用プロセッサ１０（例えば、ハーバードアーキテクチャ型の３２ビットＲＩＳＣプロセッサ）に対して、そのコプロセッサインタフェース１１２ａを介して本実施形態の特徴である符号化／復号化処理専用のコプロセッサ１１が接続されている構成である。
【００４９】
コプロセッサ１１はローカルメモリインタフェース１１２ｂと共有メモリインタフェース１１２ｃとを備え、これらの各々を介してローカルメモリ（データメモリ１０２）または共有メモリ１０５のそれぞれにストリームアクセス（スプリットトランザクションをサポートするバーストアクセス）が可能である。
【００５０】
ここで、メモリセレクタ（ＭＵＸ型バスコントローラ）１２は、制御用プロセッサ１０からのデータアクセスと、コプロセッサ１１からのローカルメモリアクセスを調停／選択制御するために用いられ、ローカルメモリ（データメモリ１０２）はこのメモリセレクタ１２からのローカルメモリインタフェース１１１ｃに接続される。そして、命令メモリ１０１は制御用プロセッサ１０の命令メモリインタフェース１１１ｂに直接接続される。
【００５１】
なお、プロセッサコントローラ１３は、外部からのブート制御、割り込み制御などを行うブロックであり、外部からのローカルメモリ（データメモリ１０２）や命令メモリ１０１へのアクセスは、外部から各メモリへ直接アクセス可能な（バイパスする）構成にしてもよいし、プロセッサ制御インタフェース１１１ａを介してアクセスする形としてもよい。
【００５２】
図２は、図１に示したコプロセッサ１１のより詳しい構成について示す説明図である。コプロセッサ１１は、メモリアクセスの際のレイテンシを隠蔽するために、ローカルメモリインタフェース１１２ｂを介してローカルメモリ（データメモリ１０２）にストリームアクセス可能なローカルメモリコントローラ（ＬＭＣ）２０と、共有メモリインタフェース１１２ｃを介して外部の共有メモリにストリームアクセス可能な共有メモリコントローラ（ＳＭＣ）２１とを備える。
【００５３】
ローカルメモリコントローラ（ＬＭＣ）２０および共有メモリコントローラ（ＳＭＣ）２１は、プロセッサやコプロセッサ内の演算処理とは並列にローカルメモリ（データメモリ１０２）や外部の共有メモリにアクセスするために、各々の内部に、書き込みアドレスジェネレータ３０、書き込みデータＦＩＦＯ回路（First In First Out）３１、書き込みデータパッキング回路３２、読み出しアドレスジェネレータ４０、読み出しデータＦＩＦＯ回路４１、読み出しデータパッキング回路４２を備える。
【００５４】
以後、ローカルメモリコントローラ２０内部に備えられたものを書き込みアドレスジェネレータ（ＡＧ（Ｗ））３０ａ、書き込みデータＦＩＦＯ回路３１ａ、書き込みデータパッキング回路（ＰＡＣＫＥＲ）３２ａ、読み出しアドレスジェネレータ（ＡＧ（Ｒ））４０ａ、読み出しデータＦＩＦＯ回路４１ａ、読み出しデータパッキング回路（ＰＡＣＫＥＲ）４２ａと各々いう。また、共有メモリコントローラ（ＳＭＣ）２１に備えられたものを書き込みアドレスジェネレータ３０ｂ、書き込みデータＦＩＦＯ回路３１ｂ、書き込みデータパッキング回路３２ｂ、読み出しアドレスジェネレータ４０ｂ、読み出しデータＦＩＦＯ回路４１ｂ、読み出しデータパッキング回路４２ｂと各々いう。
【００５５】
また、ローカルメモリコントローラ２０および共有メモリコントローラ２１は、読み出し時はアドレスを投機的に発行するスプリットトランザクション機能も備える。ここで、ローカルメモリコントローラ２０および共有メモリコントローラ２１は、図１または図２では各１個ずつ実装した例を示しているが、本実施形態としてはこの個数は特に問わない。
【００５６】
また、コプロセッサ１１は、符号化／復号化処理（ビット／バイト演算処理）専用のＡＬＵ（Arithmetic Logic Unit、算術論理演算器）２２を備える（以後、単に演算器２２という）。演算器２２は、複数の無線通信方式における符号化／復号化処理にて一般的によく用いられる、スクランブリング回路（ＳＣＲＡＭ）５０、畳み込み符号化器（ＣＯＮＶ）５１、ＣＲＣ符号化器（ＣＲＣ）５２、ビット連接／並べ替え回路（ＰＥＲＭ）５３、およびその他の演算回路５４（ｏｔｈｅｒｓ）として動作しうる演算回路２２ａを備える。これらの構成については後述する。
【００５７】
そして、演算回路２２ａは、コプロセッサ１１内に備えられているパラメータレジスタ６０によってその動作モードに係るパラメータが設定されている。このことによって、様々な無線方式における各符号化／復号化処理に柔軟に対応できるプログラマブルな構成となっている。
【００５８】
ここで、スクランブリング回路（ＳＣＲＡＭ）５０は符号化／復号化処理におけるスクランブリング／デスクランブリング処理に、畳み込み符号化器（ＣＯＮＶ）５１は畳み込み符号化処理に、ＣＲＣ符号化器（ＣＲＣ）５２はＣＲＣ符号化処理とＣＲＣ判定処理に、ビット連接／並べ替え回路（ＰＥＲＭ）５３は、ビットの繰り返し（リピティション）処理、パンクチャ／デパンクチャ処理、簡単なビットインタリーブ／ビットデインタリーブ処理などに各々用いられる。
【００５９】
また、本発明におけるコプロセッサ１１は、コプロセッサ命令にて使用可能なコプロセッサ用のレジスタファイル（ＲＥＧ）２３を備える。制御用プロセッサ１０内に元々備えるレジスタとは別のものである。レジスタファイル（ＲＥＧ）２３内の汎用レジスタとしては、例えば、３２ビットレジスタを１６個（ＣＲ０〜ＣＲ１５）備える。
【００６０】
ただし、このうち、例えば、１６個中の２つの汎用レジスタ（ＣＲ２，ＣＲ３）については特殊レジスタとして動作させる。たとえば、１つ（例えばＣＲ２）はローカルメモリコントローラ２０とのデータ授受用として割り当て、１つは（例えばＣＲ３）は共有メモリコントローラ２１とのデータ授受用として割り当てる。この動作について、詳しくは後述する。
【００６１】
この構成により、ローカルメモリ（データメモリ１０２）及び外部共有メモリへのアクセスにこれらの特殊レジスタである汎用レジスタを使用することができる。すなわち、ローカルメモリ（データメモリ１０２）や外部共有メモリへのストリームデータアクセスが、コプロセッサ１１内の汎用レジスタと同様の命令マッピングや処理サイクル数で処理可能という特徴を持つ。
【００６２】
また、コプロセッサ１１は、コプロセッサコントローラ２４も備え、コプロセッサコントローラ２４はコプロセッサ命令のデコード処理を実施し、演算器２２やレジスタファイル２３、ローカルメモリコントローラ２０および共有メモリコントローラ２１に対する制御を行う。そして、プロセッサコントローラ１３を介して制御用プロセッサ１０に対する割り込み処理を行う。
【００６３】
（本実施形態に係る同期処理の基本的な動作）
図１に示した本実施形態に係る符号化復号化処理プロセッサ１００は、プロセッサ制御インタフェース１１１ａや割り込みインタフェース１１１ｆを用いて外部から制御用プロセッサ１０が起動されると、命令メモリ１０１から命令コードを読み出し、データメモリ（ローカルメモリ）１０２にアクセスしながら、プロセッサ処理を実行する。また、必要に応じて、メモリセレクタ１２を経由して、共有メモリ１０５や外部の周辺機器にもアクセスする。
【００６４】
ここで、本発明の特徴である符号化／復号化処理コプロセッサ１１を用いて処理実行するためには、命令コードとして制御用プロセッサのコプロセッサ命令を使用する。制御用プロセッサ１０が命令メモリ１０１からコプロセッサ命令を読み出した場合、制御用プロセッサ１０はコプロセッサインタフェース１１２ａを介して、コプロセッサ１１にこのコプロセッサ処理を実行させる。
【００６５】
図２に示すコプロセッサ１１側は、コプロセッサインタフェース１１２ａを介して受け取ったコプロセッサ命令をコプロセッサコントローラ２４でデコードし、デコードされたコプロセッサ命令を、演算器２２、レジスタファイル２３、ローカルメモリコントローラ２０や共有メモリコントローラ２１を制御して実行する。
【００６６】
（コプロセッサ内の汎用レジスタ構成とその動作の説明）
図４Ａは、図２に示したコプロセッサ１１のレジスタファイル（ＲＥＧ）２３のマッピング構成例について示す説明図である。図４Ｂは、図２に示したコプロセッサ１１の各レジスタのビットフォーマットについて示す説明図である。コプロセッサ１１は、レジスタファイル（ＲＥＧ）２３内の汎用レジスタとして、例えば、３２ビットレジスタを１６個（ＣＲ０〜ＣＲ１５）備え、この汎用レジスタを用いて、コプロセッサ内演算命令や、制御プロセッサ−コプロセッサ間演算命令などを実行する。
【００６７】
このうち、いくつかのレジスタは専用レジスタとして動作する。例えば、１つのレジスタ（ＣＲ０）はゼロレジスタ（書き込みアクセスは無効、読み出しアクセスの値は常に０）として動作する。また、１６個中の２つの汎用レジスタ（ＣＲ２，ＣＲ３）についてはメモリアクセス用の特殊な特殊レジスタとして動作させる。例えば、１つ（例えばＣＲ２）はローカルメモリアクセス用として割り当て、もう１つ（例えばＣＲ３）は外部共有メモリアクセス用として割り当てる。
【００６８】
即ち、この場合でいえば、演算器２２からＣＲ２レジスタに書き込みアクセスすると、ローカルメモリコントローラ（ＬＭＣ）２０内の書き込みデータパッキング回路３２および書き込みデータＦＩＦＯ回路３１を経由してローカルメモリ（データメモリ１０２）に当該データが書き込まれる。この時の書き込みアドレスはローカルメモリコントローラ（ＬＭＣ）２０内の書き込みアドレスジェネレータ３０が指定するアドレスとなる。
【００６９】
この時、演算器２２やコプロセッサコントローラ２４の動作としては、ＣＲ２レジスタへの書き込みだけで、次のコプロセッサ命令を実行可能であるため、結果として、１［データ／サイクル］の書き込みスループットでローカルメモリ（データメモリ１０２）に処理結果データを書き込むことができる。
【００７０】
一方、事前にローカルメモリコントローラ（ＬＭＣ）２０内の読み出しアドレスジェネレータ４０等を動作させて、ローカルメモリ（データメモリ１０２）上のストリームデータを読み出し開始しておく。これによって、専用演算器（ＡＬＵ）２２は、ＣＲ２レジスタに読み出しアクセスするだけでローカルメモリ（データメモリ１０２）上のデータをローカルメモリコントローラ（ＬＭＣ）２０内の読み出しデータＦＩＦＯ回路４１および読み出しデータパッキング回路４２経由で読み出すことが可能である。
【００７１】
この場合も、ローカルメモリ（データメモリ１０２）上のデータは事前にローカルメモリコントローラ（ＬＭＣ）２０内まで読み出し転送されているため、専用演算器（ＡＬＵ）２２やコプロセッサコントローラ２４の動作としては、待ち時間なしにＣＲ２レジスタへの読み出しアクセス可能であり、結果的に、１［データ／サイクル］の読み出しスループットでローカルメモリ（データメモリ１０２）から処理データを読み出すことができる。
【００７２】
同様に、ＣＲ３レジスタに対して書き込みアクセスや読み出しアクセスを実施することで、メモリアクセスレイテンシを隠蔽しながら、共有メモリコントローラ（ＳＭＣ）２１経由で外部の共有メモリにアクセスすることが可能である。
【００７３】
また、図４Ａには、パラメータレジスタ設定により、他の２つのレジスタ（ＣＲ４〜５）をピープ（ＰＥＥＰ）処理用のレジスタとして動作させるという例を示している。
前述したように、ＣＲ２レジスタおよびＣＲ３レジスタは、各々ローカルメモリ（データメモリ１０２）および共有メモリにアクセスするためのレジスタである。これらのＣＲ２レジスタおよびＣＲ３レジスタに読み出しアクセスを行うと、読み出しデータＦＩＦＯ回路４１や読み出しデータパッキング回路４２の状態が更新される。
【００７４】
これと同様に、ＣＲ４レジスタおよびＣＲ５レジスタをピープ処理用のレジスタとして動作させて、当該レジスタに読み出しアクセスした場合、ＣＲ４レジスタ（ＬＭＰ）はＣＲ２レジスタ（ＬＭ）と同じデータを、ＣＲ５レジスタ（ＳＭＰ）はＣＲ３レジスタ（ＳＭ）と同じデータを読み出すことができ、且つ、読み出しデータＦＩＦＯ回路４１や読み出しデータパッキング回路４２の状態は更新されない。
【００７５】
即ち、ＣＲ４レジスタから読み出したデータは、その後、ＣＲ２レジスタから再度読み出すことができる。また、ＣＲ５レジスタから読み出したデータは、その後、ＣＲ３レジスタから再度読み出すことができる。従って、このピープレジスタ機能は、同一のデータを複数回使用する場合に有用である。なお、ＣＲ４レジスタおよびＣＲ５レジスタは、パラメータ設定により、ピープ機能レジスタとして使用するか、通常の汎用レジスタとして使用するかを選択することも可能である。
【００７６】
なお、図４Ａおよび図４Ｂに示した例では、各レジスタのビットフォーマットは３２ビットであり、これを１ビット×３２データ分または１バイト（８ビット）×４データ分などとして使用する。本実施形態においては、例えば、「ＬＳＢファースト」かつリトルエンディアンのビットフォーマットを使用することとし、ビット／バイト演算処理の場合、ＬＳＢ（Least Significant Bit、最下位ビット）側から順番にデータ処理される。
【００７７】
また、図４Ａおよび図４Ｂに示した例では、３２ビット×１６個のレジスタファイル構成の場合を示しているが、本実施形態におけるレジスタ構成としてはこの構成に限らず、各々１６ビットのレジスタでもよいし、８個や３２個のレジスタファイル構成でもよい。
【００７８】
（コプロセッサ命令の命令コードの構成とその動作の説明）
図５は、図２に示したコプロセッサ１１におけるコプロセッサ命令の命令コードの構成例を示す説明図である。図５では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示している。これらの他に、例えば、命令コード内の２１〜２２ビット目の固定ビットを「１１」以外にすることによって、制御プロセッサ−コプロセッサ間演算命令やパラメータレジスタ６０設定命令などを備えるようにしてもよい。２３〜３１ビット目および８〜１１ビット目は固定値である。
【００７９】
１２〜１５ビット目はオペレーション・コード（ＯＰ: Operation Code、命令種別）を示す。ＯＰ＝０（ＳＣＲＡＭ）はスクランブリング処理命令であり、入力レジスタ（ｃｒｓ）のデータに対してスクランブリング処理（ＳＣＲＡＭ）を行い、出力レジスタ（ｃｒｄ）に出力する命令である。ここで、４〜７ビット目のｃｒｓ、および０〜３ビット目のｃｒｄは共にコプロセッサ１１のレジスタファイル（ＲＥＧ）２３内の汎用レジスタ番号であり、１６〜２０ビット目の即値（ｉｍｍ５）はＬＳＢ側から即値（ｉｍｍ５）（１〜８）で記述されたビット数分だけ並列に（一度に）スクランブリング処理を行うことを示している。１命令で最大８ビット（１バイト）分の並列処理が可能である。
【００８０】
また、複数の無線方式におけるスクランブリング処理に対応するために必要な動作モード設定やＴＡＰ初期値設定、生成多項式の仕様設定は、パラメータレジスタ６０に事前に設定しておくことで実現可能である。
【００８１】
ＯＰ＝１（ＣＯＮＶ）は畳み込み符号化処理である。この場合は、パラメータレジスタで設定するコーディングレートに応じて出力データビット数が変化するため、即値（ｉｍｍ５）で設定した入力データビット数（１〜８）に対して出力データビット数はその２倍または３倍となる（最大２４ビット）。
【００８２】
ＯＰ＝２（ＣＲＣ）はＣＲＣ符号化処理命令である。この場合は、前述のスクランブリング処理（ＳＣＲＡＭ）と同様、最大８ビット分を１命令で処理可能であり、出力データビット数は１６〜２０ビット目の即値（ｉｍｍ５）で指定した入力データビット数と一致する。
【００８３】
なお、ＯＰ＝１および２の畳み込み符号化処理命令（ＣＯＮＶ）やＣＲＣ符号化処理命令（ＣＲＣ）についても、ＯＰ＝０のスクランブリング処理命令（ＳＣＲＡＭ）と同様、パラメータレジスタ６０を用いて動作モード設定やＴＡＰ初期値設定、生成多項式の仕様設定を行うことで、複数の無線方式に対応する。
【００８４】
また、これらのＳＣＲＡＭ、ＣＯＮＶ、ＣＲＣは、専用演算器（ＡＬＵ）２２内に後述する専用の並列演算回路５０，５１，５２を各々実装しているので、通常のプロセッサ処理では１ビット処理するのに複数サイクル必要な処理を、複数ビット分を１サイクルで処理することが可能である。
【００８５】
ＯＰ＝３（ＳＨＬ）は左シフト演算命令（ｃｒｄ＝ｃｒｓ＜＜ｉｍｍ５）であり、ＯＰ＝４（ＳＨＲ）は右シフト演算命令（ｃｒｄ＝ｃｒｓ＞＞ｉｍｍ５）である。これらはいずれも、ビット演算処理で頻繁に使用される命令であるので、コプロセッサ１１内にも実装するものである。
【００８６】
また、ＯＰ＝５（ＰＥＲＭ）はビット連接／並び替え演算命令であり、入力レジスタ（ｃｒｓ）のうち、最大でＬＳＢ（最下位ビット）側から１６ビット分に対して連接／並び替え処理を行い、出力レジスタ（ｃｒｄ）に出力する。ここで、最大１６ビット分の出力データにどの順番で出力するかを６４ビット分（３２ビットレジスタ×２個のペア）のパラメータレジスタを用いて設定しておき、どのパラメータを使用するかをパラメータレジスタ番号（ｃｐ）で指定する。このことにより、高速かつ柔軟なビット連接／並べ替え処理を実現することが可能である。
【００８７】
この処理では、１ビット分の出力を１６ビット分の入力データから選択するため、４ビット×１６で６４ビット分の設定が必要である。このビット連接／並び替え演算命令（ＰＥＲＭ）も専用演算器（ＡＬＵ）２２内に専用の演算回路５３を備えることで、１命令で複数ビット分を並列に処理可能である。
【００８８】
また、ＯＰ＝６（ＭＳＫＣ２Ｃ）およびＯＰ＝７（ＭＳＫＰ２Ｃ）はレジスタ間転送命令（ＭＡＳＫ＆ＭＯＶＥ）であり、いずれもＬＳＢ側から１６〜２０ビット目の即値（ｉｍｍ５）（１〜３１）で指定されたビット数分だけをコピーする命令である。ここで、ＯＰ＝７（ＭＳＫＣ２Ｃ）はレジスタファイル（ＲＥＧ）２３間での転送命令（ｃｒｄ＝ＭＳＫ（ｃｒｓ，ｉｍｍ５））であり、ＯＰ＝８（ＭＳＫＰ２Ｃ）はパラメータレジスタ６０からレジスタファイル（ＲＥＧ）２３へのレジスタ間転送命令（ｃｒｄ＝ＭＳＫ（ｃｐ，ｉｍｍ５））である。
【００８９】
ここで、図５に示した例では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示したが、これらの他に、命令コード内の２１〜２２ビット目の固定ビットを変更することによって、制御プロセッサ−コプロセッサ間演算命令やパラメータレジスタ６０設定命令なども備えることが可能である。
【００９０】
制御プロセッサ−コプロセッサ間演算命令の例としては、図５の例では即値（ｉｍｍ５）を用いていた各命令の即値（ｉｍｍ５）部分を、制御プロセッサ１１内の汎用レジスタ番号（ｒｓ）とすることで即値ではなく変数とすることも可能である。また、レジスタ転送命令の入力レジスタや出力レジスタに制御プロセッサ１１内の汎用レジスタ（ｒｓ，ｒｄ）を指定することで、制御プロセッサ−コプロセッサ間のレジスタ間転送命令なども可能である。
【００９１】
パラメータレジスタ６０設定命令は、専用演算器（ＡＬＵ）２２やメモリコントローラ（ＬＭＣ，ＳＭＣ）２０〜２１内の種々のパラメータレジスタに即値または制御プロセッサ内の汎用レジスタ値を設定できる命令である。
【００９２】
（専用演算器（ＡＬＵ）２２内の各演算器構成とその動作の説明）
ここからは、図２に示した専用演算器（ＡＬＵ）２２に備えられている各々の演算回路の構成について説明する。
【００９３】
（スクランブリング回路（ＳＣＲＡＭ）５０の構成とその動作の説明）
図６は、図２に示した専用演算器（ＡＬＵ）２２内のスクランブリング回路（ＳＣＲＡＭ）５０の構成例を示す説明図である。スクランブリング回路（ＳＣＲＡＭ）５０は、そのインタフェースとして、入力データ（ｃｒｓ）、出力データ（ｃｒｄ）、動作モード（ｍｏｄｅ）、生成多項式（ｐｏｌｙ）、演算ビット数（ｉｍｍ５）、ＴＡＰ初期値（ｔａｐ）とＴＡＰ出力値（ｏ＿ｔａｐ）の各々を持つ。また、演算ビット数（ｉｍｍ５）は書き込みデータサイズ（ｗｓｉｚｅ）として、書き込みデータパッキング回路３２に向けて出力される。
【００９４】
スクランブリング回路（ＳＣＲＡＭ）５０は、動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）はパラメータレジスタ６０を用いてパラメータ設定できることにより、種々の無線方式におけるスクランブリング処理アルゴリズムにプログラマブルに対応する。
【００９５】
スクランブリング回路（ＳＣＲＡＭ）５０は、演算ビット数（ｉｍｍ５）によって、その１命令で処理するビット数を指定することが可能である。また、ＴＡＰ初期値（ｔａｐ）もパラメータレジスタ６０を用いて指定可能であり、１命令分の処理後には、演算ビット数（ｉｍｍ５）で指定された演算ビット数分だけ更新されたＴＡＰ値（ｏ＿ｔａｐ）を選択して出力することで、当該パラメータレジスタの値も更新される。
【００９６】
更新されたＴＡＰ値は次のスクランブリング処理命令時にＴＡＰ初期値として使用されるので、スクランブリング処理命令を繰り返し実行することで、スクランブリング回路（ＳＣＲＡＭ）５０は、８ビット以上の長いストリームデータ系列に対するスクランブリング処理（デスクランブリング処理）が可能となる。
【００９７】
スクランブリング回路（ＳＣＲＡＭ）５０は、１ビット分を処理するスクランブリング演算器７０を複数接続することで実現される。図６に示した例では８個であり、この場合、１命令で最大８ビット分を処理可能である。動作モード設定（Ｍｏｄｅ）や生成多項式設定（Ｐｏｌｙ）は基本的には静的なパラメータであるため、これらは各スクランブリング演算器７０に並列に入力され、また、入力データ（ｃｒｓ）は［７：０］のビットごとに各スクランブリング演算器７０にそれぞれ入力する。
【００９８】
ＴＡＰ値（Ｔａｐ）は、前段のビットの演算結果により更新されるため、前段のスクランブリング演算器７０のＴＡＰ出力値（ＴａｐＯ）を後段のスクランブリング演算器７０のＴＡＰ入力値（Ｔａｐ）として接続する。
【００９９】
１ビット分のスクランブリング演算器７０の構成および動作としては、入力したＴＡＰ値（Ｔａｐ）と生成多項式（Ｐｏｌｙ）の論理積（ＡＮＤ）を実施後、各ビットの排他的論理和（ＸＯＲ）した値（ｏ＿ｘｏｒ）に対して、入力ビットとの排他的論理和（ＸＯＲ）したものを出力ビットとして出力する。
【０１００】
また、ＴＡＰ出力は、最上位ビット以外については入力したＴＡＰ値（Ｔａｐ）をシフトして出力し、最上位ビットについては、ｏ＿ｘｏｒをそのまま出力するか、入力ビット値を出力するか、ｏ＿ｘｏｒと入力ビットの排他的論理和（ＸＯＲ）値を出力するかが種々の無線方式によって異なるため、動作モード設定（Ｍｏｄｅ）により選択して出力する。
【０１０１】
ちなみに図６中の「ＬＳＢ」は「Least Significant Bit」即ち「最下位ビット」を意味する。また「ｐａｄ」はパディング、例えば８ビット分のデータに上位２４ビット分の「０」を付加して３２ビットデータとして出力する処理を意味する。
【０１０２】
このように、スクランブリング回路（ＳＣＲＡＭ）５０の構成および動作として、パラメータレジスタ６０を用いて動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）を設定し、ＴＡＰ値（ｔａｐ）については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式におけるスクランブリング処理／デスクランブリング処理にプログラマブルに対応できる。
【０１０３】
また、１ビット分を処理するスクランブリング演算器７０を複数（例えば８個）接続する構成とすることで、１命令（１サイクル）で複数のビット分を並列（一度）に処理することが可能である。
【０１０４】
更に、メモリコントローラ２０〜２１（ＣＲ２，ＣＲ３レジスタ等）を動作させながら、ｆｏｒ文などを用いて繰り返しスクランブリング処理命令（ＳＣＲＡＭ）を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するスクランブリング処理（デスクランブリング処理）を、図６の回路構成の場合、８ビット／サイクルのスループットで実行することが可能である。
【０１０５】
（畳み込み符号化器（ＣＯＮＶ）５１の構成とその動作の説明）
図７は、図２に示した専用演算器（ＡＬＵ）２２内の畳み込み符号化器（ＣＯＮＶ）５１の構成例を示す説明図である。畳み込み符号化器（ＣＯＮＶ）５１は、図６で示したスクランブリング回路（ＳＣＲＡＭ）５０と同様に、そのインタフェースとして、入力データ（ｃｒｓ）、出力データ（ｃｒｄ）、動作モード（ｍｏｄｅ）、生成多項式（ｐｏｌｙ）、演算ビット数（ｉｍｍ５）、ＴＡＰ初期値（ｔａｐ）とＴＡＰ出力値（ｏ＿ｔａｐ）を持つ。また、演算ビット数（ｉｍｍ５）と動作モード（ｍｏｄｅ）が乗算された値が、書き込みデータサイズ（ｗｓｉｚｅ）として、書き込みデータパッキング回路３２に向けて出力される。
【０１０６】
畳み込み符号化器（ＣＯＮＶ）５１は、動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）がパラメータレジスタ６０を用いてパラメータ設定できることにより、種々の無線方式における畳み込み符号化アルゴリズムにプログラマブルに対応する。
【０１０７】
ここで、動作モード（ｍｏｄｅ）は符号化率（１、１／２、１／３）に対応し、生成多項式（ｐｏｌｙ）は符号化率に合わせて８ビットずつ、最大３系列にｐｏｌｙ［７：０］、［１５：８］、［２３：１６］がそれぞれ割り当てられる。
【０１０８】
畳み込み符号化器（ＣＯＮＶ）５１は、演算ビット数（ｉｍｍ５）にてその１命令で処理する入力ビット数を指定することが可能である。また、ＴＡＰ初期値（ｔａｐ）もパラメータレジスタ６０を用いて指定可能であり、１命令分の処理後には、演算ビット数（ｉｍｍ５）で指定された演算ビット数分だけ更新されたＴＡＰ値（ｏ＿ｔａｐ）を出力することで、当該パラメータレジスタの値も更新される。
【０１０９】
更新されたＴＡＰ値は次の畳み込み符号化処理命令時にＴＡＰ初期値として使用されるため、畳み込み符号化処理命令を繰り返し実行することで、８ビット以上の長いストリームデータ系列に対する畳み込み符号化処理が可能となる。
【０１１０】
畳み込み符号化器（ＣＯＮＶ）５１は、１ビット分を処理する畳み込み符号演算器７１を複数接続することで実現される。図７の例の場合では８個であり、この場合、１命令で最大８ビット分の入力データを処理可能である。符号化率を指定する動作モード設定（Ｍｏｄｅ）や生成多項式設定（Ｐｏｌｙ）は基本的には静的なパラメータであるため、これらは各畳み込み符号演算器７１に並列に入力され、また、入力データ（ｃｒｓ）は［７：０］のビットごとに各畳み込み符号演算器７１にそれぞれ入力する。
【０１１１】
各畳み込み符号演算器７１の出力データは各符号化率に対応する１ビット〜３ビットが出力される。ＴＡＰ値（Ｔａｐ）は、前段のビットの演算結果により更新されるため、前段の畳み込み符号演算器７１のＴＡＰ出力値（ＴａｐＯ）を後段の畳み込み符号演算器７１のＴＡＰ入力値（Ｔａｐ）として接続する。
【０１１２】
１ビット分の畳み込み符号演算器７１の構成および動作としては、内部に３つの符号演算器（Ｍａｓｋｅｄ  ＸＯＲ）を備え、入力したＴＡＰ値（Ｔａｐ）と各生成多項式（Ｐｏｌｙ）の論理積（ＡＮＤ）を実施後、各ビットと入力ビットの排他的論理和（ＸＯＲ）した値（ｏ＿ｘｏｒ）を出力ビットとして出力する。
【０１１３】
ここで、１ビットの入力ビットに対して、出力ビットは符号化率に応じて最大３ビット分が出力される。また、ＴＡＰ出力（ＴａｐＯ）は、入力ビットを最上位ビットにしてＴＡＰ値（Ｔａｐ）をシフトした形で出力する。ちなみに図７中の「ｐａｄ」は、図６と同様に「パディング」を意味する。
【０１１４】
このように、畳み込み符号化器（ＣＯＮＶ）５１の構成および動作として、パラメータレジスタ６０を用いて符号化率である動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）を設定し、ＴＡＰ値（ｔａｐ）については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式における畳み込み符号化処理にプログラマブルに対応できる。
【０１１５】
また、１ビット分を処理する畳み込み符号演算器７１を複数（例えば８個）接続する構成とすることで、１命令（１サイクル）で複数のビット分を並列（一度）に処理することが可能である。
【０１１６】
更に、メモリコントローラ２０〜２１（ＣＲ２，ＣＲ３レジスタ等）を動作させながら、ｆｏｒ文などを用いて畳み込み符号化処理命令（ＣＯＮＶ）を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対する畳み込み符号化処理を、図７の回路構成の場合、入力ビットが８ビット／サイクルのスループットで実行することが可能である。
【０１１７】
（ＣＲＣ符号化器（ＣＲＣ）５２の構成とその動作の説明）
図８は、図２に示した専用演算器（ＡＬＵ）２２内のＣＲＣ符号化器（ＣＲＣ）５２の構成例を示す説明図である。ＣＲＣ符号化器（ＣＲＣ）５２は、スクランブリング回路（ＳＣＲＡＭ）５０等と同様に、そのインタフェースとして、入力データ（ｃｒｓ）、出力データ（ｃｒｄ）、動作モード（ｍｏｄｅ）、生成多項式（ｐｏｌｙ）、演算ビット数（ｉｍｍ５）、ＴＡＰ初期値（ｔａｐ）とＴＡＰ出力値（ｏ＿ｔａｐ）を持つ。また、演算ビット数（ｉｍｍ５）は書き込みデータサイズ（ｗｓｉｚｅ）として、書き込みデータパッキング回路３２に向けて出力される。
【０１１８】
ＣＲＣ符号化器（ＣＲＣ）５２は、動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）はパラメータレジスタ６０を用いてパラメータ設定できることにより、種々の無線方式におけるＣＲＣ符号化処理アルゴリズムにプログラマブルに対応する。
【０１１９】
ＣＲＣ符号化器（ＣＲＣ）５２は、演算ビット数（ｉｍｍ５）にてその１命令で処理するビット数を指定することが可能である。また、ＴＡＰ初期値（ｔａｐ）もパラメータレジスタ６０を用いて指定可能であり、１命令分の処理後には、演算ビット数（ｉｍｍ５）で指定された演算ビット数分だけ更新されたＴＡＰ値（ｏ＿ｔａｐ）を選択して出力することで、当該パラメータレジスタの値も更新される。
【０１２０】
ちなみに図８中の「ＬＳＢ」は図６と同様に「最下位ビット」、「ｐａｄ」も図６と同様に「パディング」を意味する。また「ＭＳＢ」は「Most Significant Bit」即ち「最上位ビット」を意味する。
【０１２１】
更新されたＴＡＰ値は次のＣＲＣ符号化処理命令時にＴＡＰ初期値として使用されるため、ＣＲＣ符号化処理命令を繰り返し実行することで、８ビット以上の長いストリームデータ系列に対するＣＲＣ符号化器処理が可能となる。
【０１２２】
ＣＲＣ符号化器（ＣＲＣ）５２は、１ビット分を処理するＣＲＣ符号演算器７２を複数接続することで実現される。図８に示した例では８個であり、この場合、１命令で最大８ビット分を処理可能である。動作モード設定（Ｍｏｄｅ）や生成多項式設定（Ｐｏｌｙ）は基本的には静的なパラメータであるため、これらは各ＣＲＣ符号演算器７２に並列に入力され、また、入力データ（ｃｒｓ）は［７：０］のビットごとに各ＣＲＣ符号演算器７２にそれぞれ入力する。
【０１２３】
ＴＡＰ値（Ｔａｐ）は、前段のビットの演算結果により更新されるため、前段のＣＲＣ符号演算器７２のＴＡＰ出力値（ＴａｐＯ）が後段のＣＲＣ符号演算器７２のＴＡＰ入力値（Ｔａｐ）として接続される。１ビット分のＣＲＣ符号演算器７２の構成および動作としては、入力したＴＡＰ値（Ｔａｐ）の最下位ビットと入力ビットの排他的論理和（ＸＯＲ）したものか、入力ビットをそのまま出力するかが種々の無線方式によって異なるため、動作モード設定（Ｍｏｄｅ）により選択したものを出力ビットとして出力する。
【０１２４】
また、ＴＡＰ出力は、入力したＴＡＰ値（Ｔａｐ）の最下位ビットか、そのビットと入力ビットを排他的論理和（ＸＯＲ）したものかを動作モード設定（Ｍｏｄｅ）により選択し（ｏ＿ｓｅｌ）、そのビット系列と生成多項式（Ｐｏｌｙ）の論理積（ＡＮＤ）を実施したデータと、入力したＴＡＰ値（Ｔａｐ）をシフトしたデータを排他的論理和（ＸＯＲ）したものが出力される。
【０１２５】
このように、ＣＲＣ符号化器（ＣＲＣ）５２の構成および動作として、パラメータレジスタ６０を用いて動作モード（ｍｏｄｅ）と生成多項式（ｐｏｌｙ）を設定し、ＴＡＰ値（ｔａｐ）については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式におけるＣＲＣ符号化処理にプログラマブルに対応できる。
【０１２６】
また、１ビット分を処理するＣＲＣ符号演算器７２を複数（例えば８個）接続する構成とすることで、１命令（１サイクル）で複数のビット分を並列（一度）に処理することが可能である。
【０１２７】
更に、メモリコントローラ２０〜２１（ＣＲ２，ＣＲ３レジスタ等）を動作させながら、ｆｏｒ文などを用いて繰り返しＣＲＣ符号化処理命令（ＣＲＣ）を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するＣＲＣ符号化処理またはＣＲＣ判定処理を、図８の回路構成の場合、８ビット／サイクルのスループットで実行することが可能である。
【０１２８】
また、図８の回路構成の場合、３２ビット分のＴＡＰレジスタを備えるため、ＣＲＣ−８、ＣＲＣ−１６、ＣＲＣ−２４、ＣＲＣ−３２などの様々なＣＲＣ符号化処理に対応する。なお、ＣＲＣ符号化後の結果データはパラメータレジスタ６０内のＣＲＣ＿ＴＡＰレジスタに格納される。
【０１２９】
（ビット連接／並び替え回路（ＰＥＲＭ）５３の構成とその動作の説明）
図９は、図２に示した専用演算器（ＡＬＵ）２２内のビット連接／並び替え回路（ＰＥＲＭ）５３の構成例を示す図である。ビット連接／並び替え回路（ＰＥＲＭ）５３は、そのインタフェースとして、入力データ（ｃｒｓ）、出力データ（ｃｒｄ）と、ビット選択設定パラメータ（ｃｐ＿Ｌ，ｃｐ＿Ｈ）を持つ。また、演算ビット数は後述する書き込みデータパッキング回路３２にて固定設定することで制御可能である。
【０１３０】
ビット選択設定パラメータ（ｃｐ＿Ｌ，ｃｐ＿Ｈ）は、出力ビットごとに入力データビット（１６ビット分）のどのビットを選択して出力するかを設定される。出力ビットごとに１６入力１出力のマルチプレクサ（ＭＵＸ）を備え、ビット選択設定として４ビット分ずつ使用して設定する。よって、ビット連接／並び替え回路（ＰＥＲＭ）５３では、合計１６ビット分のマルチプレクサ（ＭＵＸ）１６個と、３２ビットレジスタであるｃｐ＿Ｌとｃｐ＿Ｈの２つを合わせて合計６４ビット分のパラメータ設定を行う。
【０１３１】
このように、ビット連接／並び替え回路（ＰＥＲＭ）５３は、１６ビット分の入力データに対して、出力ビット順は任意に設定可能となるため、種々の無線方式におけるビット連接／並び替え処理やビット繰り返し処理、ビットパンクチャ（削除）処理にプログラマブルに対応可能である。
【０１３２】
また、メモリコントローラ２０〜２１（ＣＲ２，ＣＲ３レジスタ等）、読み出しデータパッキング回路３２および書き込みデータパッキング回路４２を動作させながら、ｆｏｒ文などを用いて繰り返しビット連接／並び替え命令（ＰＥＲＭ）を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するビット連接／並び替え処理やビット繰り返し処理、ビットパンクチャ（削除）処理を、図９の回路構成の場合、入力ビットが最大１６ビット／サイクルのスループットで実行可能である。
【０１３３】
（メモリコントローラ２０〜２１の構成および動作）
メモリコントローラ２０〜２１は、プロセッサ１０やコプロセッサ１１の演算処理とは並列にローカルメモリ（データメモリ１０２）や外部の共有メモリにアクセスするためのメモリコントローラであり、その内部に、書き込みアドレスジェネレータ３０、書き込みデータＦＩＦＯ回路３１、書き込みデータパッキング回路３２や、読み出しアドレスジェネレータ４０、読み出しデータＦＩＦＯ回路４１、読み出しデータパッキング回路４２などを備えている。以下、その各々の要素について説明する。
【０１３４】
（メモリ書き込み用回路３０，３１，３２の構成および動作）
図１０は、図２に示したメモリコントローラ２０〜２１で、書き込みアドレスジェネレータ３０、書き込みデータＦＩＦＯ回路３１、および書き込みデータパッキング回路３２のより詳しい構成および動作について示す説明図である。
【０１３５】
コプロセッサ１１からＣＲ２またはＣＲ３レジスタを介してメモリに処理結果であるストリームデータを書き込む場合、メモリコントローラ２０〜２１内の書き込みアドレスジェネレータ３０、書き込みデータＦＩＦＯ回路３１、書き込みデータパッキング回路３２が使用される。
【０１３６】
書き込みアドレスジェネレータ３０は、スタートレジスタ（ｗ＿ｓｔａｒｔ）、ベースアドレスレジスタ（ｗ＿ｂａｓｅ）、初期ポインタレジスタ（ｗ＿ｐｔｒ）、ステップレジスタ（ｗ＿ｓｔｅｐ）、メモリ長レジスタ（ｗ＿ｌｅｎ）、アクセス回数レジスタ（ｗ＿ｃｎｔ）といった各々の数値を記憶する制御レジスタ３０ａ１を備える。
【０１３７】
書き込みアドレスジェネレータ３０は、コプロセッサ１１のパラメータ設定命令によってこれらの制御レジスタに値が設定されて起動されると、書き込みデータＦＩＦＯ回路３１からのデータ出力要求のたびにアドレスを自動的に生成して発行するアドレス演算器３０ａ２を有する。アドレス演算器３０ａ２は、基本的に、ベースアドレス（ｗ＿ｂａｓｅ）に対してカレントアドレスポインタ分を加算したアドレスを発行する。カレントアドレスポインタ３０ａ３は、初期ポインタ（ｗ＿ｐｔｒ）の値を初期値として、アドレス出力するたびに、その値が更新される。
【０１３８】
アドレス演算器３０ａ２は、アドレスを出力するたびに、現在のアドレスに対して３２ビットアドレス単位でステップ数（ｗ＿ｓｔｅｐ）分だけ加算し、メモリ長サイズ（ｗ＿ｌｅｎ）で剰余（Ｍｏｄｕｌｏ）演算したものを次のカレントアドレスポインタ３０ａ３のデータとする。
【０１３９】
このために、書き込みアドレスジェネレータ３０は、制御レジスタ３０ａ１の他に、カレントアドレスポインタレジスタ３０ａ３、加算器（２つ）、剰余演算器（比較器と減算器）、アクセス回数カウント用の比較器、減算器などを備える。このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでの書き込み、ステップ数（ｗ＿ｓｔｅｐ）を制御することで任意のアドレス間隔での書き込み、また、メモリ長（ｗ＿ｌｅｎ）を制御することでメモリの途中から書き込み始めて最後まで書き込んだら先頭に戻っての書き込み、など、柔軟なアドレスパタンを生成することができる。
【０１４０】
専用演算器（ＡＬＵ）２２からＣＲ２レジスタまたはＣＲ３レジスタに出力された書き込みデータは、書き込みデータパッキング回路３２、書き込みデータＦＩＦＯ回路３１を経由してメモリに出力される。書き込みデータパッキング回路３２は、書き込みデータを３２ビット単位にパッキングするための回路である。
【０１４１】
書き込みデータパッキング回路３２は、専用演算器（ＡＬＵ）２２側から指定された書き込みデータサイズ（ＷＳＩＺＥ）分のデータ（ＷＤＡＴ）と、現在、書き込みデータパッキング回路３２内に残っているデータサイズ（データサイズレジスタ）分のデータ（残りデータレジスタ）を結合する。このとき、本実施の形態の例の場合、処理データはＬＳＢ−Ｆｉｒｓｔの順のデータフォーマットであるため、書き込みデータパッキング回路３２は、入力されたデータ（ＷＤＡＴ）を、残っている有効データサイズ（データサイズレジスタ）分だけ左シフトし、残っているデータ（残りデータレジスタ）とＯＲ処理することでＭＳＢ側に連結する。
【０１４２】
ここで、結合されたデータの有効ビット数が３２ビット未満の場合は、そのままデータレジスタ（残りデータレジスタ）に格納し、データは出力しない。一方、結合されたデータが３２ビット以上になった場合は、ＬＳＢ側３２ビット分を書き込みデータＦＩＦＯ回路３１に出力し、余った上位側３２ビット分（［６３：３２］）をデータレジスタ（残りデータレジスタ）に格納する。
【０１４３】
このような書き込みデータパッキング回路３２を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため（プロセッサ側でのシフト演算処理は不要となるため）、専用演算器（ＡＬＵ）２２側のデータ処理単位（出力データサイズ）が３２ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。ここで、専用演算器（ＡＬＵ）２２側から所望の処理データサイズ（ＷＳＩＺＥ）を出力できない命令の場合（ＰＥＲＭ命令など）は固定サイズ設定レジスタ（ｗ＿ｍｏｄｅ，ｗ＿ｓｉｚｅ）を用いて固定サイズ設定することも可能である。
【０１４４】
また、書き込みデータパッキング回路３２で３２ビット分のデータが揃うたびに、書き込みデータＦＩＦＯ回路３１にデータが出力される。書き込みデータＦＩＦＯ回路３１では、データが入力されると、書き込みアドレスジェネレータ３０と協調動作して、当該データを順番にメモリ上の書き込みアドレスジェネレータ３０が示すアドレスに格納する。
【０１４５】
このように、ＦＩＦＯを用いてデータ出力することで、制御プロセッサ１０やコプロセッサ１１の演算命令とは並列にメモリアクセスでき、メモリ側がウェイト（Ｗａｉｔ）（処理待ち）した場合も演算命令には影響を与えないため、書き込みデータのメモリアクセスレイテンシを隠蔽することが可能である。
【０１４６】
ここで、メモリ側のウェイト（Ｗａｉｔ）により、書き込みデータＦＩＦＯ回路３１がＦｕｌｌになってしまった場合も、書き込みデータパッキング回路３２やレジスタファイル（ＲＥＧ）２３を介して専用演算器（ＡＬＵ）２２側のコプロセッサ命令をウェイト（Ｗａｉｔ）させるようなウェイト（Ｗａｉｔ）制御機構も備えることにより、正常にコプロセッサ命令処理を継続することができる。
【０１４７】
図１１は、図１０に示したメモリコントローラ２０〜２１のメモリ書き込み用各回路で、コプロセッサ１１からＣＲ２またはＣＲ３レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
【０１４８】
図１１では、メモリ上のストリームデータに対してスクランブリング処理を行う場合（８ビット単位の繰り返し処理）の例を示している。まず、コプロセッサ１１のパラメータレジスタ設定命令により、専用演算器（ＡＬＵ）２２内のパラメータレジスタ６０に当該処理用のパラメータ設定と、メモリコントローラ２０〜２１（ＬＭＣ，ＳＭＣ）内の各アドレスジェネレータ３０および４０にパラメータ設定と起動を行う（ステップＳ１０１）。
【０１４９】
読み出し側のメモリコントローラは自立的にメモリからデータを読み出し、読み出しデータＦＩＦＯ回路４１に処理データが順次格納される（スプリットトランザクション，ステップＳ１０２）。ここで、例えば、当該ストリームデータに対するスクランブリング処理を行う場合、スクランブリング処理命令（ＳＣＲＡＭ）（ＣＲ２（３）＝ＳＣＲＡＭ（ＣＲ２（３），８））をｆｏｒ文などで繰り返す。
【０１５０】
後述する読み出しデータパッキング回路４２の機能により、３２ビット単位のデータから専用演算器（ＡＬＵ）２２は８ビットずつデータを読み出す（ステップＳ１０３）。そして、専用演算器（ＡＬＵ）２２は８ビットのスクランブリング処理を繰り返し行い（ステップＳ１０４）、連続してＣＲ２（３）レジスタを介してメモリコントローラ２０〜２１に処理結果データを出力する（ステップＳ１０５）。
【０１５１】
メモリコントローラ２０〜２１では、書き込みデータパッキング回路３２にて、処理結果データをシフトしながらパッキング処理を実施し、３２ビット単位になったら書き込みデータＦＩＦＯ回路３１を介して所望のメモリへデータを順に出力する（ステップＳ１０６）。
【０１５２】
このようなメモリコントローラ２０〜２１（アドレスジェネレータ３０および４０、データＦＩＦＯ回路３１および４１，データパッキング回路３２および４２）の機能により、本実施形態のコプロセッサ１１は、８ビット／サイクルの処理スループットでスクランブリング処理（デスクランブリング処理）等の符号化／復号化処理を実施することが可能となる。
【０１５３】
（メモリ読み出し用回路４０，４１，４２の構成および動作）
図１２は、図２に示したメモリコントローラ２０〜２１で、読み出しアドレスジェネレータ４０、読み出しデータＦＩＦＯ回路４１、読み出しデータパッキング回路４２のより詳しい構成および動作について示す説明図である。
【０１５４】
コプロセッサ１１がＣＲ２またはＣＲ３レジスタを介してメモリからストリームデータを読み出す場合、メモリコントローラ２０〜２１内の読み出しアドレスジェネレータ４０、読み出しデータＦＩＦＯ回路４１、読み出しデータパッキング回路４２が使用される。
【０１５５】
読み出しアドレスジェネレータ４０は、スタートレジスタ（ｒ＿ｓｔａｒｔ）、ベースアドレスレジスタ（ｒ＿ｂａｓｅ）、オフセットアドレス単位レジスタ（ｒ＿ｕｎｉｔ）、初期ポインタレジスタ（ｒ＿ｐｔｒ＿ｘｘ）、ステップレジスタ（ｒ＿ｓｔｅｐ＿ｘｘ）、メモリ長レジスタ（ｒ＿ｌｅｎ＿ｘｘ）、アクセス回数レジスタ（ｒ＿ｃｎｔ）といった各々の数値を記憶する制御レジスタ４０ａ１を備える。
【０１５６】
読み出しアドレスジェネレータ４０は、コプロセッサ１１のパラメータ設定命令によってこれらの制御レジスタ４０ａ１に値が設定されて起動されると、読み出しアドレスを自立的に、かつ、アクセス回数（ｒ＿ｃｎｔ）分だけ連続的に発行して、メモリからデータを読み出す。読み出しアドレスを連続して投機的に発行することにより、読み出し時のスプリットトランザクションに対応する。
【０１５７】
読み出しアドレスジェネレータ４０は、基本的には、ベースアドレス（ｒ＿ｂａｓｅ）に対してオフセットアドレスジェネレータ８０からのオフセットアドレス分だけ加算したアドレスを加算器４０ａ４によって発行する。ここで、後述するオフセットアドレスジェネレータ８０は、符号化／復号化処理におけるビットインタリーブ処理等に対応するため、ビット単位、バイト（８ビット）単位、ワード（３２ビット）単位など任意の単位でオフセットを計算可能である。
【０１５８】
よって、読み出しアドレスジェネレータ４０は、出力時にはオフセットアドレス単位レジスタ（ｒ＿ｕｎｉｔ）の値を用いて、メモリのアドレス単位に整形（シフト）してから出力するシフト回路４０ａ２を備える。この時、ビット単位やバイト単位でのオフセットアドレス生成だった場合は、所望のビット（バイト）が読み出した３２ビットデータ中のどこにマッピングされているかのビット位置情報を格納しておくためのビットシフト用ＦＩＦＯ４０ａ３も備える。
【０１５９】
メモリから読み出されたデータ（ＲＤＡＴ）は、読み出しデータＦＩＦＯ回路４１、読み出しデータパッキング回路４２を介して、専用ＡＬＵ（演算器）側に転送される。メモリから読み出したデータ（ＲＤＡＴ）は読み出しデータＦＩＦＯ回路４１に順に格納され、ビットシフト用ＦＩＦＯのビット位置情報の値を用いて、所望のビットがＬＳＢ側に配置されるようにシフト回路４０ａ２にてビットシフトしたものを読み出しデータパッキング回路４２に転送する。
【０１６０】
この時、ビットシフト用ＦＩＦＯ４０ａ３や読み出しデータ用のＦＩＦＯがあふれないように、各ＦＩＦＯの容量に従って、アドレスジェネレータ４０側の読み出しアクセス発行タイミングを制御する。読み出しデータパッキング回路４２では、専用演算器（ＡＬＵ）２２側からＣＲ２もしくはＣＲ３レジスタを用いてデータが読み出された場合、指定された読み出しデータサイズ（ＲＳＩＺＥ）の値に従って、現在、読み出しデータパッキング回路内に残っているデータ（残りデータレジスタ）を右シフトする。
【０１６１】
すなわち、読み出したデータサイズ（ＲＳＩＺＥ）分だけデータが除去され、残ったデータがＬＳＢ側に格納される。このとき、現在、読み出しデータパッキング回路内に残っているデータサイズ（データサイズレジスタ）と読み出しデータサイズ（ＲＳＩＺＥ）との差から、残ったデータの有効ビット数が３２ビット以上であれば、読み出しデータＦＩＦＯ回路４１側からの読み出しデータは取得しない。
【０１６２】
一方、残ったデータの有効ビット数が３２ビット未満になる場合に、次の読み出しデータを読み出しデータＦＩＦＯ回路４１側から取得する。取得した読み出しデータは、残ったデータサイズ分だけ左シフトし、残ったデータのＭＳＢ側に結合して、結合されたデータを次のサイクルで専用演算器（ＡＬＵ）２２側から読み出せるようにデータレジスタ（残りデータレジスタ）に格納しておく。
【０１６３】
このような読み出しデータパッキング回路４２を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため（プロセッサ側でのシフト演算処理は不要となるため）、専用演算器（ＡＬＵ）２２側のデータ処理単位（入力データサイズ）が３２ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。
【０１６４】
ここで、専用演算器（ＡＬＵ）２２側から所望の処理データサイズ（ＲＳＩＺＥ）を出力できない命令の場合（ＰＥＲＭ命令など）は固定サイズ設定レジスタ（ｒ＿ｍｏｄｅ，ｒ＿ｓｉｚｅ）を用いて固定サイズ設定することも可能である。
【０１６５】
なお、メモリ側のウェイト（Ｗａｉｔ）等により、読み出しデータパッキング回路４２内に所望のデータがまだ存在しない（読み出しデータＦＩＦＯ回路４１も空の状態の）場合は、読み出しデータパッキング回路４２やレジスタファイル（ＲＥＧ）２３を介して専用演算器（ＡＬＵ）２２側のコプロセッサ命令をウェイト（Ｗａｉｔ）させるようなウェイト（Ｗａｉｔ）制御機構も備えることにより、正常にコプロセッサ命令処理を継続することができる。
【０１６６】
（オフセットアドレスジェネレータの構成および動作）
図１３は、図１２に示した読み出しアドレスジェネレータ４０内のオフセットアドレスジェネレータ８０のより詳しい構成について示す説明図である。オフセットアドレスジェネレータ８０は、種々の無線方式の符号化／復号化処理における種々のビットインタリーブ処理（ブロックインタリーブ処理）を高速かつ容易に実現するために、内部に２つのオフセットアドレス計算ブロック（Ａ，Ｂ）とその２つの出力を加算する１個の加算器を備える。
【０１６７】
そして、オフセットアドレスジェネレータ８０の各オフセットアドレス計算ブロック（Ａ，Ｂ）は、それぞれ更に２つのアドレス演算器８１〜８２（Ａ１，Ａ２）および８３〜８４（Ｂ１，Ｂ２）を内部に備える構成である。すなわち、オフセットアドレスジェネレータ８０は計４個のアドレス演算器８１〜８４（Ａ１，Ａ２，Ｂ１，Ｂ２）を備える。
【０１６８】
各々のアドレス演算器８１〜８４（Ａ１，Ａ２，Ｂ１，Ｂ２）は、それぞれ、初期ポインタレジスタ（ｒ＿ｐｔｒ＿ｘｘ）、ステップレジスタ（ｒ＿ｓｔｅｐ＿ｘｘ）、メモリ長レジスタ（ｒ＿ｌｅｎ＿ｘｘ）、カウント数レジスタ（ｒ＿ｃｎｔ＿ｘｘ）等の制御レジスタを備える。
【０１６９】
ここで、実際にアドレスを出力するメイン側のアドレス演算器８１，８３（Ａ１，Ｂ１）の動作としては、まず、初期ポインタ（ｒ＿ｐｔｒ＿Ｘ１）の値を初期値として、アドレス出力するたびに、その値が更新される。通常は、アドレス出力するたびに、現在のアドレスに対してステップ数（ｒ＿ｓｔｅｐ＿Ｘ１）分だけ加算し、メモリ長サイズ（ｒ＿ｌｅｎ＿Ｘ１）で剰余（Ｍｏｄｕｌｏ）演算したものが次のアドレスポインタ８１ａ，８３ａの値となる。ただし、アドレス出力回数がカウント数レジスタ（ｒ＿ｃｎｔ＿Ｘ１）の値に達するごとに、メイン側ではなくサブ側のアドレス演算器（Ａ２，Ｂ２）で計算されたアドレスにアドレスポインタ８１ａ，８３ａの値を更新する。
【０１７０】
一方、サブ側のアドレス演算器８２，８４（Ａ２，Ｂ２）でも、まず、初期ポインタ（ｒ＿ｐｔｒ＿Ｘ２）の値を初期値として、サブ側は、カウント数レジスタ（ｒ＿ｃｎｔ＿Ｘ２）の回数分だけアドレス出力するたびに、その値が更新される。現在のアドレスに対してステップ数（ｒ＿ｓｔｅｐ＿Ｘ２）分だけ加算し、メモリ長サイズ（ｒ＿ｌｅｎ＿Ｘ１）で剰余（Ｍｏｄｕｌｏ）演算したものが次のサブ側のアドレスポインタ８２ａ，８４ａの値となる。
【０１７１】
このように、メイン側のアドレスポインタを任意のアクセスごとにサブ側で計算した値に更新でできるように１つのオフセットアドレス計算ブロック（Ａ，Ｂ）ごとに内部に２つのアドレス演算器を備えるのは、後述するブロックインタリーブの処理等で、例えば、１列分のアドレス出力が終了して戻ってきた場合など、次の列にオフセットを変えて再度アクセスすることに対応するためである。
【０１７２】
そして、オフセットアドレスジェネレータ８０を、このような２つのアドレス演算器を内部に備えるアドレス計算ブロック（Ａ，Ｂ）を２つ備え、両者の出力アドレスを加算できる構成とすることで、１ビット／サイクルの処理スループットで、種々のビットインタリーブ処理やブロックインタリーブ処理に対応できるような２次元的なアドレス生成が可能となる。
【０１７３】
２つのアドレス計算ブロック（Ａ，Ｂ）は、例えば、１つはブロックインタリーブ処理の行アドレス計算用に、もう１つは列アドレスの計算用に使用するなど、２次元的なアドレス生成が可能である。
【０１７４】
図１４は、図１３に示したオフセットアドレスジェネレータ８０によって行われる、無線通信の符号化／復号化処理における一般的なインタリーブ処理の例を示す説明図である。図１４に示すように、一般的なインタリーブ処理では、まずビットインタリーブ処理として、入力データ系列を複数のブロックに分け、異なるブロックから順番にデータを出力するように出力データ系列を構成することで、近くのデータが連続して出力されないようにする。
【０１７５】
そして、各ブロックからのデータ出力順は、それぞれのブロックでブロックインタリーブ処理することにより、ブロック内での入力データ順と出力データ順も異なるようにする。ブロックインタリーブ処理としては、例えば、あるＭ行Ｎ列分のデータブロックに対して、入力（書き込み）側は行ごとに書いていき、出力（読み出し）側は列ごとに読み出すことでデータ順を並び変える処理である。
【０１７６】
ここで、種々の無線方式によっては、Ｍ行Ｎ列の書き込み開始行や読み出し開始列をブロックごとに変更することによって、そのランダム性を向上させているものや、最後の出力系列時に各ブロックから出力する順番を巡回（巡回シフト処理）させているものも存在する。また、Ｍ行Ｎ列のＭやＮの値も無線方式やその内部パラメータ等に依存して様々である。
【０１７７】
本実施形態における、図１２および図１３に示したスプリットトランザクション対応の読み出しアドレスジェネレータ４０により、図１４に示したような符号化処理におけるビットインタリーブ処理（ブロックインタリーブ処理）やその反対の復号化処理におけるビットデインタリーブ処理（ブロックデインタリーブ処理）に、対応するアドレスパタンを連続的に生成することができ、１ビット／サイクルの処理スループットで対応できるようになる。
【０１７８】
メモリ上には入力データ系列がそのビット順で格納されていて、図１４に示したようなインタリーブ処理を行う場合、例えば、図１２に示したアドレス計算ブロックＡ側では入力系列の行アドレスを、アドレス計算ブロックＢ側では入力系列の列アドレスを計算することで実現する。具体的には、例えば、アドレス演算器Ａ１にてブロック間の行アドレスを計算し、アドレス演算器Ａ２にてブロック内の行アドレスオフセットを計算する。
【０１７９】
そして、アドレス演算器Ｂ１，Ｂ２にて、各ブロック内の列アドレス（列アドレスオフセット）を計算することで１ビット／サイクルの処理スループットでのアドレス生成が実現可能である。
【０１８０】
すなわち、１サイクルごとに１ブロック分のアドレス数分をジャンプできるようにアドレス演算器Ａ１用のステップ数（ｒ＿ｓｔｅｐ＿Ａ１）やメモリ長（ｒ＿ｌｅｎ＿Ａ１）を設定し、全ブロック分生成して１ブロック目に戻ってきたタイミングでブロックインタリーブのＭ行のうち１行分進めるように、各カウント値（ｒ＿ｃｎｔ＿Ａ１，ｒ＿ｃｎｔ＿Ａ２）やアドレス演算器Ａ２側のステップ数（ｒ＿ｓｔｅｐ＿Ａ２）を設定する。また、全ブロックの１列分生成したタイミングでブロックインタリーブのＮ列のうち１列分ずつ進めるように、アドレス計算ブロックＢ側の制御レジスタを設定する。
【０１８１】
図１５は、図１０に示したメモリコントローラ２０〜２１のメモリ読み出し用各回路で、ＣＲ２またはＣＲ３レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
【０１８２】
図１５では、コプロセッサ１１からＣＲ２またはＣＲ３レジスタを介してメモリからインタリーブ処理のビット順にデータを読み出し、読み出した順番でデータを整形してＣＲ２またはＣＲ３レジスタを介してメモリにデータを書き込む場合の例を示している。
【０１８３】
まず、コプロセッサのパラメータレジスタ設定命令により、メモリコントローラ２０〜２１（ＬＭＣ，ＳＭＣ）内の各アドレスジェネレータ３０および４０にパラメータ設定と起動を行う（ステップＳ２０１）。特に、読み出し側のメモリコントローラにはインタリーブ処理のアドレスパタンに対応できるよう、各アドレス演算器（Ａ１，Ａ２，Ｂ１，Ｂ２）に対する制御レジスタ設定を行う。
【０１８４】
読み出し側のメモリコントローラは、設定されたアドレス生成パタンにて自立的にメモリからデータを読み出し、読み出しデータＦＩＦＯ回路４１に処理データを順次格納する（ステップＳ２０２）。この時、読み出した３２ビットデータ中のどこに所望のビットがマッピングされているかはアドレス発行と同時にビットシフト用ＦＩＦＯに格納されているため、その値を用いて所望のビットデータがＬＳＢ側に配置されるよう読み出しデータＦＩＦＯ回路４１の出力にてデータのシフト処理を行う（ステップＳ２０３）。
【０１８５】
そして、インタリーブ処理を行う場合、専用演算器（ＡＬＵ）２２ではレジスタ間転送命令（ＭＡＳＫ＆ＭＯＶＥ）（ＣＲ２（３）＝ＭＳＫＣ２Ｃ（ＣＲ２（３），３２））をｆｏｒ文などで繰り返す（ステップＳ２０４）。
【０１８６】
ここで、インタリーブ処理の場合、転送に必要なデータは読み出しデータの３２ビット中のＬＳＢ側にのみ格納されているため、読み出し側はレジスタ間転送命令の即値（ｉｍｍ５）を３２に設定することで３２ビットのデータサイズで行い、書き込み側は１ビットずつパッキング処理されるよう、書き込みデータパッキング回路３２のｗ＿ｍｏｄｅ，ｗ＿ｓｉｚｅレジスタを用いて１ビットの固定サイズ設定を行う（ステップＳ２０５）。
【０１８７】
このようにデータサイズ設定した上で、メモリコントローラ間におけるレジスタ間転送命令を繰り返すことにより、図１５に示すような動作シーケンスとなる。メモリコントローラ２０〜２１では、書き込みデータパッキング回路３２にて、転送データをシフトしながらパッキング処理を行い、３２ビット単位になったら書き込みデータＦＩＦＯ回路３１を介して所望のメモリへデータを順に出力する（ステップＳ２０６）。
【０１８８】
このようなメモリコントローラ２０〜２１（アドレスジェネレータ３０および４０、データＦＩＦＯ回路３１および４１，データパッキング回路３２および４２）の機能により、本実施形態のコプロセッサ１１は、１ビット／サイクルの処理スループットでインタリーブ処理（デインタリーブ処理）を実施することが可能となる。
【０１８９】
特に、読み出しアドレスジェネレータ４０や読み出しデータＦＩＦＯ回路３１を用いることで、制御プロセッサ１０やコプロセッサ１１における演算処理に依存せずにメモリ上のデータをパイプライン的に先読み可能であり、かつ、種々のインタリーブパタンに対応するアドレス順でアドレスを発行可能であることが、柔軟かつ高速なインタリーブ処理実現のポイントである。
【０１９０】
（第１の実施形態の処理フロー）
図１６Ａは、図１および図３に示した符号化／復号化処理プロセッサ１００における符号化処理の一例を示す説明図である。ここで示した例の場合、送信側の符号化処理としては、Ｌａｙｅｒ２（ＭＡＣ）処理を行う汎用プロセッサ２０１から転送された送信データ系列に対して、スクランブリング（ステップＳ３０１）、畳み込み符号化（ステップＳ３０２）、パンクチャリング（ビットの除去、ステップＳ３０３）、インタリーブ処理（ステップＳ３０４）の順で処理を実施し、符号化後のデータ系列を、変調処理を行うモデムモジュール２０６に共有メモリ経由で転送する。
【０１９１】
図１６Ｂは、図１および図３に示した符号化／復号化処理プロセッサ１００における復号化処理の一例を示す説明図である。ここで示した例の場合の復号化処理としては、モデムモジュール２０６から転送された復調後の受信データ系列に対して、デインタリーブ処理（ステップＳ３１１）、デパンクチャリング（ビットの付加、ステップＳ３１２）、ビタビ復号化（ステップＳ３１３）、デスクランブリング（ステップＳ３１４）の順で処理を実施し、復号化後のデータ系列をＬａｙｅｒ２（ＭＡＣ）処理を行う汎用プロセッサ２０１に共有メモリ２０３を経由して転送する。
【０１９２】
図１７は、図１および図３に示した符号化／復号化処理プロセッサ１００で図１６Ａに示した処理を行う場合の、ステップＳ３０１〜３０４に示した符号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
【０１９３】
送信データ系列に対する符号化処理の場合、汎用プロセッサ（ＣＰＵ）２０１またはリソースマネージャ２０２から処理起動コマンドを受信すると（ステップＳ４０１）、符号化／復号化処理プロセッサ１００は、共有メモリコントローラ２１を用いて符号化／復号化処理（コーデック）モジュール外部の共有メモリ２０３から入力データ系列を読み出しながら専用演算器（ＡＬＵ）２２にてスクランブリング処理を行い（ステップＳ４０２）、ローカルメモリコントローラ２０を用いてデータメモリ（ローカルメモリ）１０２にデータを格納する（ステップＳ４０３）。
【０１９４】
符号化／復号化処理プロセッサ１００は、次に、ローカルメモリコントローラ２０を用いてデータメモリ（ローカルメモリ）１０２からデータを読み出しながら専用演算器（ＡＬＵ）２２にて畳み込み符号化処理を行い（ステップＳ４０４）、その処理結果のデータを再びデータメモリ（ローカルメモリ）１０２に格納する（ステップＳ４０５）。
【０１９５】
符号化／復号化処理プロセッサ１００は、次に、これと同様に、ローカルメモリコントローラ２０とビット連接／並び替え命令（ＰＥＲＭ）を用いてパンクチャ処理を実施し（ステップＳ４０６）、その処理結果のデータを再びデータメモリ（ローカルメモリ）１０２に格納する（ステップＳ４０７）。
【０１９６】
符号化／復号化処理プロセッサ１００は、次に、ローカルメモリコントローラ２０を用いてデータを順に読み出すことで、図１５に示したインタリーブ処理を行い（ステップＳ４０８）、共有メモリコントローラ２１を用いてインタリーブ後のデータ系列を符号化／復号化処理（コーデック）モジュール外部の共有メモリ２０３に格納する（ステップＳ４０９）。
【０１９７】
以上の処理の完了後、符号化／復号化処理プロセッサ１００は、処理完了通知を汎用プロセッサ（ＣＰＵ）２０１またはリソースマネージャ２０２に通知する（ステップＳ４１０）。符号化／復号化処理プロセッサ１００は、以上のような処理シーケンスを繰り返すことによって、送信データ系列に対する符号化処理を実現することが可能である。
【０１９８】
図１８は、図１および図３に示した符号化／復号化処理プロセッサ１００で図１６Ｂに示した処理を行う場合の、ステップＳ３１１〜３１４に示した復号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
【０１９９】
受信データ系列に対する復号化処理の場合、汎用プロセッサ（ＣＰＵ）２０１またはリソースマネージャ２０２から処理起動コマンドを受信すると（ステップＳ４５１）、符号化／復号化処理プロセッサ１００は、共有メモリコントローラ２１を用いて符号化／復号化処理（コーデック）モジュール外部の共有メモリ２０３から入力データ系列を順に読み出すことで、デインタリーブ処理を行う（ステップＳ４５２）。
【０２００】
ここで、復号化処理時は、１ビットデータが軟値（尤度値）として８ビットの固定小数点データとして格納されているため、アドレス単位設定レジスタ（ｒ＿ｕｎｉｔ）には８ビットモードを設定し、８ビット／サイクル（１データ／サイクル）の処理スループットでデータが転送される。そしてデインタリーブ処理済のデータを、ローカルメモリコントローラ２０を用いてデータメモリ（ローカルメモリ）１０２に格納する（ステップＳ４５３）。
【０２０１】
符号化／復号化処理プロセッサ１００は、次に、ローカルメモリコントローラ２０とビット連接／並び替え命令（ＰＥＲＭ）を用いてデパンクチャ（ビット付加）処理を実施する（ステップＳ４５４）。そして、処理後のデータを共有メモリコントローラ２１を用いて符号化／復号化処理（コーデック）モジュール内部の共有メモリ１０５に格納する（ステップＳ４５５）。
【０２０２】
符号化／復号化処理プロセッサ１００は、次に、ビタビ復号処理のために、ビタビ処理回路１０４に対してメモリアドレスや生成多項式などのパラメータを行い、ビタビ処理回路１０４を起動する（ステップＳ４５６）。ビタビ処理回路１０４は、設定されたパラメータに従い、符号化／復号化処理（コーデック）モジュール内部の共有メモリ１０５からデータを読み出しながらビタビ復号化処理を行い（ステップＳ４５７）、処理後の結果データも同様の共有メモリ１０５上に格納する（ステップＳ４５８）。処理完了割り込みにて符号化／復号化処理プロセッサ１００にビタビ復号化処理完了を通知する（ステップＳ４５９）。
【０２０３】
最後に、符号化／復号化処理プロセッサ１００は、共有メモリコントローラ２１を用いて符号化／復号化処理（コーデック）モジュール内の共有メモリ１０５からデータを読み出しながら（ステップＳ４６０）、専用演算器（ＡＬＵ）２２にてデスクランブル処理を行い、データを符号化／復号化処理（コーデック）モジュール外部の共有メモリ２０３に格納する（ステップＳ４６１）。
【０２０４】
以上の処理完了後、符号化／復号化処理プロセッサ１００は、処理完了通知を汎用プロセッサ（ＣＰＵ）２０１またはリソースマネージャ２０２に通知する（ステップＳ４６２）。符号化／復号化処理プロセッサ１００は、以上のような処理シーケンスを繰り返すことで受信データ系列に対する復号化処理を実現することが可能である。
【０２０５】
（専用演算器（ＡＬＵ）のマッピング構成例）
図１９は、図１および図３に示した符号化／復号化処理プロセッサ１００における畳み込み符号化処理やスクランブリング（デスクランブリング）処理を、コプロセッサ１１内の専用演算器（ＡＬＵ）２２にマッピングして処理する場合のマッピング構成例、すなわち、パラメータレジスタ６０の設定例を示す説明図である。
【０２０６】
図１９に示す例では、ＩＥＥＥ  ８０２．１６ｅ（ＷｉＭＡＸ）規格における畳み込み符号化処理の場合、図７に示した畳み込み符号化器５１をこの規格に対応する畳み込み符号化器５０１として動作させるには、動作モード（ｍｏｄｅ）として０ｘ２（符号化率１／２設定）を、生成多項式（ｐｏｌｙ）として０ｘ６ＣＥ４を設定する。これによって、畳み込み符号化器５１を、ＩＥＥＥ  ８０２．１６ｅ（ＷｉＭＡＸ）規格に対応する畳み込み符号化器５０１として動作させることができる。
【０２０７】
また、図６に示したスクランブリング回路５０をＩＥＥＥ  ８０２．１１ａ（無線ＬＡＮ）規格におけるスクランブリング（デスクランブリング）処理に対応するスクランブリング回路５０２として動作させるには、動作モード（ｍｏｄｅ）は０ｘ２を、生成多項式（ｐｏｌｙ）は０ｘ１２００を設定するとよい。これによって、スクランブリング回路５０はＩＥＥＥ  ８０２．１１ａ（無線ＬＡＮ）規格に対応するスクランブリング回路５０２として動作する。
【０２０８】
このように、専用演算器（ＡＬＵ）２２内の各演算器は、パラメータ設定を変更するだけで、既に規格化されている種々の無線方式における符号化／復号化処理に対応できる。そして、今後予測される仕様変更等にも十分に対応しうる柔軟性も備えている。
【０２０９】
図２０は、図１および図３に示した符号化／復号化処理プロセッサ１００における畳み込み符号化処理やスクランブリング（デスクランブリング）処理を行う場合のプロセッサ処理プログラムの記述例を示す説明図である。
【０２１０】
図１７のステップＳ３０１および４０１で示したスクランブリング処理の場合、まず、パラメータレジスタ設定命令を用いて、共有メモリコントローラ２１への読み出しアドレスジェネレータ４０の設定と、ローカルメモリコントローラ２０への書き込みアドレスジェネレータの設定を行う（ステップＳ４０１ａ）。
【０２１１】
ここで、１アドレスは３２ビット分のビットデータとなるため、処理データビットサイズ（ｎｕｍ＿ｂｉｔ＿ｓｉｚｅ）を３２で割ったもの（ｎｕｍ１）が両者のアドレス生成回数となる。ここで、０ｘ２１８０００は読み出す共有メモリ２０３の先頭アドレス、０ｘ１１８０００は書き込むデータメモリ（ローカルメモリ）１０２の先頭アドレスの例を示している。
【０２１２】
次に、専用演算器（ＡＬＵ）２２のスクランブリング回路５０用のパラメータレジスタ６０設定として、動作モード設定、ＴＡＰの初期値設定、生成多項式（ｐｏｌｙ）の設定を実施する（パラメータレジスタ設定命令、ステップＳ４０１ｂ）。その後、この例では、先ほどパラメータ設定した共有メモリコントローラ２１およびローカルメモリコントローラ２０を起動する（ステップＳ４０１ｃ）。
【０２１３】
最後に、コプロセッサ間の演算命令である８ビット分のスクランブリング処理命令（ＳＣＲＡＭ）を４回、すなわち３２ビット分のスクランブリング処理命令（ＳＣＲＡＭ）をｆｏｒ文で処理データビットサイズ分だけ繰り返すことにより、所望のスクランブリング処理を実現する（ステップＳ４０１ｄ）。
【０２１４】
ここで、ステップＳ４０１ｄ中にある「ｓｃｒａｍ（ｃｒ２，ｃｒ３，８）；」は、「ｃｒ２＝ｓｃａｒｍ（ｃｒ３，８）；」のことであり、共有メモリコントローラ２１側からのデータ（ＣＲ３レジスタの値）に対して、スクランブリング処理を行い、ローカルメモリコントローラ２０側にＣＲ２レジスタを介してデータを書き込むという動作を示している。
【０２１５】
図２０は、スクランブリング（デスクランブリング）処理の例を示したものであるが、その他の、畳み込み符号化処理やビット連接／並び替え処理、インタリーブ処理等も同じような形でプログラムを記述することが可能である。
【０２１６】
（第２の実施形態）
本発明の第２の実施形態では、無線通信装置３０１が、第１の実施形態の無線通信装置１の構成に加えて、送信データおよび受信データのインタリーブ／デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路４０４ｃを備える。そして符号化／復号化処理プロセッサ４００は、受信データの誤り訂正復号化、および送信データおよび受信データのインタリーブ／デインタリーブ処理以外の処理を行うものとした。
【０２１７】
この構成によっても、第１の実施形態と同一の効果を得ることができ、さらに符号化／復号化処理プロセッサ４００の構成を簡素にすることが可能となる。
以下、これをより詳細に説明する。
【０２１８】
図２１は、本発明の第２の実施形態に係る符号化／復号化処理プロセッサ４００を利用した無線通信装置３０１の構成を示す説明図である。図３で示した無線通信装置１の符号化／復号化処理（コーデック）モジュール２００が、別の符号化／復号化処理（コーデック）モジュール２２０に置換されている点以外は、無線通信装置３０１の構成は無線通信装置１と同一である。
【０２１９】
符号化／復号化処理（コーデック）モジュール２２０は、図３で示した符号化／復号化処理（コーデック）モジュール２００のプロセッサ１００が、別の符号化／復号化処理プロセッサ４００に置換されている点と、ビタビ処理回路１０４ａおよびターボ処理回路１０４ｂと並列にインタリーブ処理回路４０４ｃ（ＤＭＡコントローラ）を備えている点以外は、符号化／復号化処理（コーデック）モジュール２００と同一の構成を有する。
【０２２０】
インタリーブ処理回路４０４ｃは、種々の無線方式における種々のインタリーブ処理およびデインタリーブ処理（以後インタリーブ／デインタリーブ処理という）を実現するための回路である。即ち、符号化／復号化処理プロセッサ４００では、符号化／復号化処理のうち、その処理量が膨大でプロセッサ処理では処理が不足するビタビ復号化、ターボ復号化、および並列演算が難しいインタリーブ／デインタリーブ処理の各々について専用ハードウェアであるビタビ処理回路１０４ａ、ターボ処理回路１０４ｂ、およびインタリーブ処理回路４０４ｃを用いて処理を行う。
【０２２１】
符号化／復号化処理プロセッサ４００では、符号化処理におけるインタリーブ処理や、復号化処理におけるデインタリーブ処理については、専用のインタリーブ処理回路（ＤＭＡコントローラ）を用いて処理を実施することができる。
【０２２２】
このように、ビットごとの並列演算が難しく最大でも１ビット／サイクルでの処理スループットとなるインタリーブ／デインタリーブ処理については専用ハードウェア処理とすることで、符号化／復号化処理プロセッサ４００では、例えば前のデータブロックに対するインタリーブ処理を実施しながら、次のデータブロックに対する畳み込み符号化処理を符号化／復号化処理プロセッサにて同時に実行することが可能となるため、並列処理による高速化や、処理の負荷分散による最大処理スループットの向上が可能となる。
【０２２３】
図２２は、図２１で示した符号化／復号化処理プロセッサ４００のより詳しい構成について示す説明図である。符号化／復号化処理プロセッサ４００は、図１で示した符号化／復号化処理プロセッサ１００のコプロセッサ１１が、別のコプロセッサ４１１に置換されている点以外は、符号化／復号化処理プロセッサ１００と同一の構成を有する。
【０２２４】
さらに図２３は、図２２で示したコプロセッサ４１１のより詳しい構成について示す説明図である。コプロセッサ４１１は、コプロセッサ１１のローカルメモリコントローラ（ＬＭＣ）２０および共有メモリコントローラ（ＳＭＣ）２１が、各々別のローカルメモリコントローラ（ＬＭＣ）４２０および共有メモリコントローラ（ＳＭＣ）４２１に置換されている点以外は、コプロセッサ１１と同一の構成を有する。
【０２２５】
図２４は、図２３に示したローカルメモリコントローラ（ＬＭＣ）４２０および共有メモリコントローラ（ＳＭＣ）４２１のより詳しい構成について示す説明図である。ローカルメモリコントローラ（ＬＭＣ）４２０および共有メモリコントローラ（ＳＭＣ）４２１では、第１の実施形態におけるローカルメモリコントローラ（ＬＭＣ）２０および共有メモリコントローラ（ＳＭＣ）２１の読み出しアドレスジェネレータ４０と読み出しデータＦＩＦＯ回路４１が、各々別の読み出しアドレスジェネレータ４４と読み出しデータＦＩＦＯ回路４５に置換されている以外は、第１の実施形態と同一である。
【０２２６】
第１の実施形態に係る符号化／復号化処理プロセッサ１００では、種々の無線通信方式におけるインタリーブ／デインタリーブ処理に１ビット／サイクルの処理スループットで対応できるように、ローカルメモリコントローラ（ＬＭＣ）２０および共有メモリコントローラ（ＳＭＣ）２１が各々内部に備える読み出しアドレスジェネレータ４０が、２つのアドレス演算器を内部に備えるオフセットアドレス計算ブロックを２個備え、また３２ビットデータ中の所望のビット位置をＬＳＢ側にシフトするためのビットシフト用ＦＩＦＯやシフト回路等を備えていた。
【０２２７】
それに対して、第２の実施形態においては、インタリーブ処理やデインタリーブ処理については専用のインタリーブ処理回路４０４ｃによって処理するので、符号化／復号化処理プロセッサ４００にて処理する必要はない。したがって、ローカルメモリコントローラ（ＬＭＣ）４２０および共有メモリコントローラ（ＳＭＣ）４２１では、読み出し側の読み出しアドレスジェネレータ４４の構成が第１の実施の形態における読み出しアドレスジェネレータ４０とは異なる。書き込み側の書き込みアドレスジェネレータ３０、書き込みデータＦＩＦＯ回路３１、書き込みデータパッキング回路３２の構成や動作は第１の実施の形態と同一である。
【０２２８】
第２の実施の形態における読み出しアドレスジェネレータ４４は、書き込みアドレスジェネレータ３０とほぼ同様の構成であり、スタートレジスタ（ｒ＿ｓｔａｒｔ）、ベースアドレスレジスタ（ｒ＿ｂａｓｅ）、初期ポインタレジスタ（ｒ＿ｐｔｒ）、ステップレジスタ（ｒ＿ｓｔｅｐ）、メモリ長レジスタ（ｒ＿ｌｅｎ）、アクセス回数レジスタ（ｒ＿ｃｎｔ）等の制御レジスタ４４ａ１を備える。また、実際にアドレスを計算するための、カレントアドレスポインタレジスタ４４ａ３、加算器（２つ）、剰余演算器（比較器と減算器）、アクセス回数カウント用の比較器、減算器などを含むアドレス演算器４４ａ２を備える。
【０２２９】
第２の実施の形態における読み出しアドレスジェネレータ４４は、コプロセッサのパラメータ設定命令にてベースアドレスレジスタ（ｒ＿ｂａｓｅ）、初期ポインタレジスタ（ｒ＿ｐｔｒ）、ステップレジスタ（ｒ＿ｓｔｅｐ）、メモリ長レジスタ（ｒ＿ｌｅｎ）、アクセス回数レジスタ（ｒ＿ｃｎｔ）等の制御レジスタ４４ａ１に値が設定され、スタートレジスタ（ｒ＿ｓｔａｒｔ）設定により起動されると、メモリへの読み出しアドレスを自立的に生成し、アクセス回数レジスタ（ｒ＿ｃｎｔ）分だけ連続的に発行する。
【０２３０】
読み出しアドレスジェネレータ４４は、読み出しアドレスを投機的に発行することにより、読み出し時のスプリットトランザクションに対応する。基本的には、ベースアドレス（ｒ＿ｂａｓｅ）に対してカレントアドレスポインタ分を加算したアドレスが発行される。
【０２３１】
カレントアドレスポインタレジスタ４４ａ３は、初期ポインタ（ｒ＿ｐｔｒ）の値を初期値として、アドレス出力するたびに、その値が更新される。アドレス演算器４４ａ２は、アドレス出力するたびに、現在のアドレスに対して３２ビットアドレス単位でステップ数（ｒ＿ｓｔｅｐ）分だけ加算し、メモリ長サイズ（ｒ＿ｌｅｎ）で剰余（Ｍｏｄｕｌｏ）演算したものを次のカレントアドレスポインタとする。
【０２３２】
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでのデータの読み出し、ステップ数（ｒ＿ｓｔｅｐ）を制御することで任意のアドレス間隔での読み出し、また、メモリ長（ｒ＿ｌｅｎ）を制御することでメモリの途中から読み出し始めて最後まで読み出したら先頭に戻っての読み出し、など、柔軟な読み出しアドレスパタンを生成することができる。
【０２３３】
ただし、第１の実施の形態で示したようなインタリーブ／デインタリーブ処理を１ビット／サイクルの処理スループットで実現する２次元的なアドレスパタンを生成することはできない（インタリーブ処理回路４０４ｃを別に備えているので、その必要はない）。
【０２３４】
次に、メモリから読み出した読み出しデータ側の処理について説明する。メモリから読み出したデータ（ＲＤＡＴ）は、読み出しデータＦＩＦＯ回路４５、読み出しデータパッキング回路４２を介して、専用演算器（ＡＬＵ）２２側に転送される。メモリから読み出したデータ（ＲＤＡＴ）は読み出しデータＦＩＦＯ回路４５に順に格納され、順次、読み出しデータパッキング回路４２に転送される。
【０２３５】
第２の実施形態では、読み出しアドレスジェネレータ４４におけるアドレス生成単位がメモリアドレスと同じ３２ビット単位のため、所望のビットをＬＳＢ側にシフトするビットシフト処理は行わない。
【０２３６】
読み出しデータパッキング回路４２では、第１の実施の形態と同様、専用演算器（ＡＬＵ）２２側からＣＲ２もしくはＣＲ３レジスタを用いてデータが読み出された場合、指定された読み出しデータサイズ（ＲＳＩＺＥ）の値に従って、現在、読み出しデータパッキング回路内に残っているデータ（残りデータレジスタ）を右シフトし、残ったデータの有効ビット数が３２ビット以上であれば、読み出しデータＦＩＦＯ回路４５側からの読み出しデータは取得しない。
【０２３７】
一方、残ったデータの有効ビット数が３２ビット未満になる場合には、読み出しデータパッキング回路４２は、次の読み出しデータを読み出しデータＦＩＦＯ回路４５側から取得する。取得した読み出しデータは、残ったデータサイズ分だけ左シフトし、残ったデータのＭＳＢ側に結合する。結合したデータを次に専用演算器（ＡＬＵ）２２側から読み出せるようにデータレジスタ（残りデータレジスタ）に格納しておく。
【０２３８】
このような読み出しデータパッキング回路４２を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため（プロセッサ側でのシフト演算処理は不要となるため）、専用演算器（ＡＬＵ）２２側のデータ処理単位（入力データサイズ）が３２ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。
【０２３９】
ここで、専用演算器（ＡＬＵ）２２側から所望の処理データサイズ（ＲＳＩＺＥ）を出力できない命令の場合（ＰＥＲＭ命令など）は固定サイズ設定レジスタ（ｒ＿ｍｏｄｅ，ｒ＿ｓｉｚｅ）を用いて固定サイズ設定することも可能である。
【０２４０】
（第１および第２の実施形態による効果）
以上で説明した第１および第２の実施形態に係る符号化／復号化処理プロセッサ１００および４００によって得られる各々の効果について説明する。
【０２４１】
第１の効果は、無線通信システムにおける符号化／復号化処理モジュールにおいて、複数の無線通信方式における種々の符号化／復号化処理に柔軟に対応できることである。その理由は、本発明に係る符号化／復号化処理プロセッサ１００および４００は、一般的な制御プロセッサに符号化／復号化処理（ビット／バイト演算処理）専用のコプロセッサ１１または４１１を接続し、そのコプロセッサ１１の論理演算器（ＡＬＵ）２２が、動作モードなど処理のパラメータ設定可能（プログラマブル）で、かつ、１サイクルで複数のビット分を並列に処理可能な、スクランブリング回路５０、畳み込み符号化器５１、ＣＲＣ符号化器５２、ビット連接（並び替え）回路５３などを備えるためである。
【０２４２】
符号化／復号化処理プロセッサ１００および４００は、このように、パラメータ設定可能な種々の符号化／復号化処理演算器を、元々柔軟に処理可能な制御プロセッサのコプロセッサとして実現することによって、複数の無線方式における種々の符号化／復号化処理（ビット／バイト演算処理）に柔軟に、かつ高速に対応可能となるのである。
【０２４３】
また、コプロセッサ１１がメモリにアクセスするためのメモリコントローラ２０〜２１を内蔵し、各々のメモリコントローラが、符号化／復号化処理を行うコプロセッサ演算命令と実際にメモリアクセスするサイクルとを独立させるための各データＦＩＦＯ回路３１および４１や、コプロセッサ１１の論理演算器（ＡＬＵ）２２での処理ビット数に応じて、読み出しデータや書き込みデータのパッキング処理を行うデータパッキング回路３２および４２を備えることも、符号化／復号化処理プロセッサ１００および４００が種々の符号化／復号化処理に対応するための柔軟性を向上させることが可能である理由の１つである。
【０２４４】
即ち、符号化／復号化処理プロセッサ１００および４００は、符号化／復号化処理専用のコプロセッサ演算命令にて論理演算器（ＡＬＵ）２２での処理ビット数を指定でき、データパッキング回路３２および４２によってその処理ビット数の変化をサイクルオーバヘッドなしにデータの読み出し時や書き込み時に吸収することが可能であるため、種々の無線方式における符号化／復号化処理（ビット／バイト演算処理）に柔軟に対応可能となるのである。
【０２４５】
さらに、第１の実施の形態におけるメモリコントローラ２０〜２１内の読み出しアドレスジェネレータ４０を用いることで、種々の無線方式における種々のインタリーブ処理（デインタリーブ処理）に１ビット／サイクルの処理スループットで柔軟に対応可能であるという利点もある。
【０２４６】
その利点は、この読み出しアドレスジェネレータ４０では、２つのアドレス演算器を内蔵するオフセットアドレス計算ブロックを２個備え、両者の出力アドレスを加算して出力する構成とすることで、種々のブロックインタリーブ処理を含む２次元的なインタリーブアドレスパタンに、１回の制御レジスタ設定で柔軟に対応可能なために生じる。
【０２４７】
そして、この読み出しアドレスジェネレータ４０内にアドレス単位を１ビット、８ビット、３２ビットなど可変にできるモード設定レジスタを備えることで、送信側の１ビット／データのインタリーブ処理や、受信側の８ビット／データのデインタリーブ処理等にも柔軟に対応可能であるという利点を得ることもできる。
【０２４８】
第２の効果は、無線通信装置１における符号化／復号化モジュール２００において、符号化および復号化の処理を柔軟性を重視して符号化／復号化処理プロセッサ１００および４００によるソフトウェア処理で実現するように構成した場合でも、複数のビット（バイト）分を同時に演算するなど、メモリアクセスレイテンシも含めて符号化／復号化処理を高速に実現可能なことである。
【０２４９】
その理由は、符号化／復号化処理プロセッサ１００および４００では、一般的な制御プロセッサに符号化／復号化処理（ビット／バイト演算処理）専用のコプロセッサ１１を接続し、コプロセッサからメモリへのアクセスには、メモリアクセスレイテンシを隠蔽できるアドレス生成機能やＦＩＦＯ機能、データパッキング機能を内蔵したメモリコントローラ２０〜２１を備えているためである。
【０２５０】
このようなメモリコントローラ２０〜２１を用いることによって、コプロセッサ命令による符号化／復号化処理（ビット／バイト演算処理）と、メモリアクセスを独立して並列に実施することが可能となるため、メモリアクセスレイテンシを隠蔽でき、一般的なプロセッサ処理に比べて高速に処理可能である。
【０２５１】
また、コプロセッサ１１内の論理演算器（ＡＬＵ）２２として、動作モード等をパラメータ設定可能（プログラマブル）で、かつ、１サイクルで複数ビットを並列に処理可能な、スクランブリング回路５０、畳み込み符号化器５１、ＣＲＣ符号化器５２、ビット連接（並び替え）回路５３などを備えることも高速化が可能な理由の１つである。
【０２５２】
一般的なプロセッサによるソフトウェア処理では、１ビット分のスクランブリング処理や畳み込み符号化処理、ＣＲＣ符号化処理にそれぞれ１０サイクル程度必要であり、更に８ビット分処理するためには８０サイクル程度のオーダーで処理サイクル数が必要である。
【０２５３】
これに対して符号化／復号化処理プロセッサ１００および４００では、コプロセッサ論理演算器（ＡＬＵ）２２やメモリコントローラ２０〜２１を活用するコプロセッサ処理命令を使用することにより、例えば８ビット／サイクルの処理スループットで、スクランブリング処理（デスクランブリング処理）、畳み込み符号化処理、ＣＲＣ符号化処理（ＣＲＣ判定処理）などの符号化／復号化処理を実現することが可能である。
【０２５４】
さらに、第１の実施の形態におけるメモリコントローラ２０〜２１内の読み出しアドレスジェネレータ４０およびデータパッキング回路（ＰＡＣＫＥＲ）４２を備えることにより、種々の無線方式におけるインタリーブ処理（デインタリーブ処理）を１ビット／サイクルの処理スループットで実現可能であるという利点もある。
【０２５５】
一般的なプロセッサ処理では１ビット分のインタリーブアドレスの計算に１０サイクル程度の処理サイクル数が必要であり、かつ、メモリ間のデータコピー処理にもメモリアクセスレイテンシ分の処理サイクル数が必要となるため、１ビット／サイクルで様々なインタリーブ処理を実現できることは本実施形態の大きな利点となる。
【０２５６】
本実施形態の最大の効果は、これら第１の効果である複数の無線方式に対応する柔軟性という利点と、第２の効果である符号化／復号化処理を８ビット／サイクルや１ビット／サイクルの処理スループットで実現する高速化という２つの利点を、同時に実現できることである。
【０２５７】
その理由は、以下の３点を実現していることの相乗効果によるものである。１点目は、コプロセッサの論理演算器（ＡＬＵ）２２として、パラメータ設定可能で、かつ、１サイクルに複数ビット分を処理可能な畳み込み符号化器などの符号化／復号化処理回路を複数備えることにより、符号化／復号化処理自体の柔軟性と高速性を実現している点である。
【０２５８】
２点目は、コプロセッサ演算処理とは独立して並列に動作するストリームアクセスを前提としたメモリコントローラ２０〜２１を備えており、一般的には高速化が難しいプロセッサのメモリアクセスレイテンシを隠蔽できる点である。
【０２５９】
３点目は、並列に動作する論理演算器（ＡＬＵ）２２とメモリコントローラ２０〜２１の間で処理オーバヘッドが発生しないように、メモリ側のデータバス幅と専用ＡＬＵ（演算器）側の命令ごとの処理ビット数に応じてデータをシフトしパッキングするデータパッキング回路３２および４２や、データを一時的に格納するＦＩＦＯ３１および４１、そしてこのＦＩＦＯが空もしくは満杯になった場合でも、コプロセッサ側の処理が破綻しないような待ち制御機構を備えているためである。以上３点の相乗効果により、符号化／復号化処理プロセッサ１００および４００は柔軟性と高速性とを両立させることができる。
【０２６０】
第３の効果は、複数の無線方式における種々の符号化／復号化処理を、より低消費電力で、すなわち電力効率を高く実現できることである。
【０２６１】
その理由は、符号化／復号化処理プロセッサ１００および４００では、コプロセッサ１１内の論理演算器（ＡＬＵ）２２が備えるスクランブリング回路５０、畳み込み符号化器５１、ＣＲＣ符号化器５２、ビット連接（並び替え）回路５３などの各々の演算回路を、動作モード等をパラメータ設定可能（プログラマブル）ではあり、１サイクルで複数ビットを並列に処理可能ではあるものの、回路構成としてはほとんど専用ハードウェアと同等の構成で実現しているためである。
【０２６２】
すなわち、これらの演算回路は、複数の無線方式に対応できる程度の柔軟性を持つように構成されてはいるが、例えば８ビット／サイクルや１ビット／サイクルの処理スループットで実現可能な専用演算器構成としている。このことによって、処理性能と消費電力とのバランスに優れた、電力効率の高い符号化／復号化処理モジュールを実現可能である。
【０２６３】
ここで、専用ハードウェア構成の場合は、それぞれ処理データの繰り返し数をカウントする制御用の回路が必要であるものの、本実施形態の符号化／復号化処理プロセッサ１００および４００においてはｆｏｒ文などの繰り返し処理は、制御プロセッサ側に元々実装されているループ命令用のループ回路を共用して使用するため、コプロセッサ側には繰り返し制御用の回路は不要である（通常の命令や複数の符号化／復号化処理命令で共有可能）という利点もある。
【０２６４】
また、処理量が膨大で、専用ハードウェア化した方が電力効率の高いビタビ復号処理やターボ復号処理については各々専用ハードウェアであるビタビ処理回路１０４ａおよびターボ処理回路１０４ｂによって実現し、その他の符号化／復号化処理については柔軟性を重視して符号化／復号化処理プロセッサにて実現することなどのように、そのトレードオフに依存して全体のシステム構成を選択可能であり、電力効率を向上できることも本発明の利点である。
【０２６５】
例えば、第２の実施形態として示した符号化／復号化処理プロセッサ４００では、他の符号化／復号化処理と同一のプロセッサを用いて処理するとその処理量が不足する可能性があるインタリーブ処理やデインタリーブ処理については専用のハードウェア回路であるインタリーブ処理回路４０４ｃを用いて実現することで、より電力効率を向上させている。
【０２６６】
すなわち、符号化／復号化処理プロセッサ４００内のメモリコントローラ４２０〜４２１については、第２の実施の形態で示したように書き込みアドレスジェネレータ３０と読み出しアドレスジェネレータ４４とをほぼ同等の構成で実現することによって、第１の実施の形態に係る符号化／復号化処理プロセッサ１００と比べて回路規模を削減でき、また、符号化／復号化処理プロセッサ４００とインタリーブ処理回路４０４ｃとを並列動作可能なため、低いクロック周波数で動作させることができるという利点がある。
【０２６７】
最後に、第４の効果は、複数の無線方式における種々の符号化／復号化処理において、将来的な仕様変更や仕様拡張にも柔軟に対応できることである。
【０２６８】
その理由は、符号化／復号化処理プロセッサ１００および４００は、制御プロセッサと専用ハードウェア回路を組み合わせた構成ではなく、一般的な制御プロセッサ１０に対して符号化／復号化処理（ビット／バイト演算処理）専用のコプロセッサ１１を接続することで実現したことにより、１サイクル単位で処理（命令）をソフトウェアにて指定可能なためである。
【０２６９】
すなわち、既存の無線方式における符号化／復号化処理の仕様変更により、その処理順序や処理パラメータが変更された場合や、仕様拡張により処理が追加された場合などにも、プロセッサのソフトウェア記述変更にて柔軟に対応できるという利点がある。
【０２７０】
コプロセッサ１１内の符号化／復号化処理（ビット／バイト処理）の演算器部分はそれぞれパラメータ設定可能な専用回路となっているが、一連の符号化／復号化処理における処理データ単位やループ回数などは制御プロセッサ１０内のループ命令（ループ回路）で対応しているので、処理データ単位やループ回数などの変更には元々の制御プロセッサ１０の機能で十分に対応できる。
【０２７１】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【０２７２】
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【０２７３】
（付記１）  無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化／復号化処理プロセッサであって、
前記符号化および復号化処理専用のコプロセッサを有すると共に、
前記コプロセッサが、
外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、
前記動作モードおよび生成多項式に基づいて動作し、前記符号化および復号化処理に必要な演算を１サイクルで複数のビット分を並列に行う演算回路と
を備えることを特徴とする符号化／復号化処理プロセッサ。
【０２７４】
（付記２）  前記コプロセッサが、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラを備え、
このメモリコントローラが、
外部から与えられたパラメータによって自立的にデータの読み書きを行う前記記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するＦＩＦＯ（First In First Out）回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを所定のビット数に揃えて出力するデータパッキング回路と
を備えることを特徴とする、付記１に記載の符号化／復号化処理プロセッサ。
【０２７５】
（付記３）  前記メモリコントローラが、前記アドレスジェネレータ回路と、前記ＦＩＦＯ回路と、前記データパッキング回路とをデータ読み出し用とデータ書き込み用にそれぞれ備えることを特徴とする、付記２に記載の符号化／復号化処理プロセッサ。
【０２７６】
（付記４）  前記データ書き込み用アドレスジェネレータ回路が、
初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタと、
前記初期ポインタの値を初期値として、アドレスを発行するたびに前記ステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器と
を備えることを特徴とする、付記３に記載の符号化／復号化処理プロセッサ。
【０２７７】
（付記５）  前記データ読み出し用アドレスジェネレータ回路が、
複数のオフセットアドレス計算モジュールと、
そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器とを備えると共に、
前記オフセットアドレス計算モジュールが、第１および第２の前記アドレス演算器を備え、第１の前記アドレス演算器のアドレスポインタを外部から与えられたカウント数の値で一定回数ごとに第２の前記アドレス演算器で計算しているアドレスポインタの値に更新することを特徴とする、付記３に記載の符号化／復号化処理プロセッサ。
【０２７８】
（付記６）  前記データ読み出し用アドレスジェネレータ回路が、
発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路と、
メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用ＦＩＦＯ回路と
を備えることを特徴とする、付記５に記載の符号化／復号化処理プロセッサ。
【０２７９】
（付記７）  前記メモリコントローラが、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能と、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能と
を備えることを特徴とする、付記２に記載の符号化／復号化処理プロセッサ。
【０２８０】
（付記８）  前記演算回路が、外部から与えられた前記動作モードおよび生成多項式に応じて、
スクランブリング処理、畳み込み符号化処理、ＣＲＣ符号化処理およびビット連接／並び替え処理のうちいずれか１つ以上の処理を行う機能を備えることを特徴とする、付記１に記載の符号化／復号化処理プロセッサ。
【０２８１】
（付記９）  外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化／復号化処理（コーデック）モジュールを備えると共に、
前記符号化／復号化処理（コーデック）モジュールが、
前記受信データのビタビ復号化およびターボ復号化を行う専用ハードウェアであるビタビ処理回路およびターボ処理回路のうち少なくとも１つ以上と、
前記受信データのビタビ復号化およびターボ復号化以外の処理を行う付記１ないし付記８のうちいずれか１項に記載の符号化／復号化処理プロセッサと
を備えたことを特徴とする無線通信装置。
【０２８２】
（付記１０）  前記符号化／復号化処理（コーデック）モジュールが、
前記送信データおよび前記受信データのインタリーブ／デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路を備えると共に、
前記符号化／復号化処理プロセッサが、前記受信データのビタビ復号化とターボ復号化、および前記送信データおよび前記受信データのインタリーブ／デインタリーブ処理以外の処理を行うことを特徴とする、付記９に記載の無線通信装置。
【０２８３】
この出願は２０１１年２月１０日に出願された日本出願特願２０１１−０２６８８５を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０２８４】
無線通信装置に幅広く利用できる。特に、複数の無線方式に１つの装置で対応する無線通信装置に適する。さらに、そのような無線通信装置の小型軽量化および低コスト化、そして通信速度の高速化にも効果を発揮する。
【符号の説明】
【０２８５】
１，３０１  無線通信装置
１０  制御用プロセッサ
１１，４１１  コプロセッサ
１２  メモリセレクタ
１３  プロセッサコントローラ
２０，４２０  ローカルメモリコントローラ
２１，４２１  共有メモリコントローラ
２２  算術論理演算器（ＡＬＵ）
２２ａ  演算回路
２３  レジスタファイル
２４  コプロセッサコントローラ
３０，３０ａ，３０ｂ  書き込みアドレスジェネレータ
３０ａ１，４０ａ１，４４ａ１  制御レジスタ
３０ａ２，４４ａ２  アドレス演算器
３０ａ３，４４ａ３  カレントアドレスポインタレジスタ
３１，３１ａ，３１ｂ  書き込みデータＦＩＦＯ回路
３２，３２ａ，３２ｂ  書き込みデータパッキング回路
４０，４０ａ，４０ｂ，４４  読み出しアドレスジェネレータ
４０ａ２  シフト回路
４０ａ３  ビットシフト用ＦＩＦＯ
４０ａ４  加算器
４１，４１ａ，４１ｂ，４５  読み出しデータＦＩＦＯ回路
４２，４２ａ，４２ｂ  読み出しデータパッキング回路
５０，５０２  スクランブリング回路（ＳＣＲＡＭ）
５１，５０１  畳み込み符号化器（ＣＯＮＶ）
５２  ＣＲＣ符号化器（ＣＲＣ）
５３  ビット連接／並べ替え回路（ＰＥＲＭ）
５４  その他の演算回路
６０  パラメータレジスタ
７０  スクランブリング演算器
７１  畳み込み符号演算器
７２  ＣＲＣ符号演算器
８０  オフセットアドレスジェネレータ
８１，８２，８３，８４  アドレス演算器
８１ａ，８２ａ，８３ａ，８４ａ  アドレスポインタ
１００，４００  符号化／復号化処理プロセッサ
１０１  命令メモリ
１０２  データメモリ
１０３  インタフェース制御回路
１０４ａ  ビタビ処理回路
１０４ｂ  ターボ処理回路
１０５、２０３  共有メモリ
１１１ａ  プロセッサ制御インタフェース
１１１ｂ  命令メモリインタフェース
１１１ｃ，１１２ｂ  ローカルメモリインタフェース
１１１ｄ  ＤＳＰインタフェース
１１１ｅ，１１２ｃ  共有メモリインタフェース
１１１ｆ  割り込みインタフェース
１１２ａ  コプロセッサインタフェース
２００，２２０  符号化／復号化処理（コーデック）モジュール
２０１  汎用プロセッサ
２０２  リソースマネージャ
２０４  ＲＦインタフェース
２０５  サーチモジュール
２０６  モデムモジュール
４０４ｃ  インタリーブ処理回路
【図１】
2012108411.tif 000003
【図２】
2012108411.tif 000004
【図３】
2012108411.tif 000005
【図４】
2012108411.tif 000006
【図５】
2012108411.tif 000007
【図６】
2012108411.tif 000008
【図７】
2012108411.tif 000009
【図８】
2012108411.tif 000010
【図９】
2012108411.tif 000011
【図１０】
2012108411.tif 000012
【図１１】
2012108411.tif 000013
【図１２】
2012108411.tif 000014
【図１３】
2012108411.tif 000015
【図１４】
2012108411.tif 000016
【図１５】
2012108411.tif 000017
【図１６】
2012108411.tif 000018
【図１７】
2012108411.tif 000019
【図１８】
2012108411.tif 000020
【図１９】
2012108411.tif 000021
【図２０】
2012108411.tif 000022
【図２１】
2012108411.tif 000023
【図２２】
2012108411.tif 000024
【図２３】
2012108411.tif 000025
【図２４】
2012108411.tif 000026
【国際調査報告】
2012108411.tif 000027
2012108411.tif 000028
2012108411.tif 000029
2012108411.tif 000030