JPWO2012108411A1 - 符号化/復号化処理プロセッサ、および無線通信装置 - Google Patents

符号化/復号化処理プロセッサ、および無線通信装置 Download PDF

Info

Publication number
JPWO2012108411A1
JPWO2012108411A1 JP2012556890A JP2012556890A JPWO2012108411A1 JP WO2012108411 A1 JPWO2012108411 A1 JP WO2012108411A1 JP 2012556890 A JP2012556890 A JP 2012556890A JP 2012556890 A JP2012556890 A JP 2012556890A JP WO2012108411 A1 JPWO2012108411 A1 JP WO2012108411A1
Authority
JP
Japan
Prior art keywords
data
encoding
processing
decoding
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012556890A
Other languages
English (en)
Inventor
俊樹 竹内
俊樹 竹内
裕之 井倉
裕之 井倉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of JPWO2012108411A1 publication Critical patent/JPWO2012108411A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0014Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the source coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel or block-wise CRC computation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • H03M13/235Encoding of convolutional codes, e.g. methods or arrangements for parallel or block-wise encoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2732Convolutional interleaver; Interleavers using shift-registers or delay lines like, e.g. Ramsey type interleaver
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6513Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6519Support of multiple transmission or communication standards
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6561Parallelized implementations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • H04L1/0043Realisations of complexity reduction techniques, e.g. use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0071Use of interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Advance Control (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】複数の無線通信方式における種々の符号化/復号化処理を高速に、かつ簡単な回路構成によって実現しうる符号化/復号化処理プロセッサ等を提供する。【解決手段】符号化/復号化処理プロセッサ100は、符号化および復号化処理専用のコプロセッサ11を有すると共に、コプロセッサが、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタ60と、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を1サイクルで複数のビット分を並列に行う演算回路22aとを備える。また、記憶装置のアドレスを出力するアドレスジェネレータ回路30,40と、データを一時的に格納するFIFO回路31,41と、データを予め定められたビット数に揃えて出力するデータパッキング回路32,42とを備えるメモリコントローラ20〜21を有する。【選択図】図1

Description

本発明は、符号化/復号化処理プロセッサ、および無線通信装置に関し、特に複数の無線方式における種々の符号化/復号化処理を高速かつ簡単な回路構成で行える符号化/復号化処理プロセッサ等に関する。
デジタルデータを送受信する無線通信システムにおいては、一般的に、送受信データ信号の符号化/復号化処理が必要である。より具体的には、送信側では、送信データ信号に対するCRCコード付加、スクランブリング処理、畳み込み符号化、インタリーブ(データ並べ替え)処理などの符号化処理が必要であり、受信側では、受信データ信号に対するデインタリーブ(インタリーブの逆)処理、ビタビ復号化、デスクランブリング処理、CRC判定処理などの復号化処理が必要である。
これらの符号化/復号化処理は、ビット単位やバイト単位で演算が実施されるため、ビット/バイト演算処理とも呼ばれることもある。従来は、単一の無線通信方式の符号化/復号化処理に高速かつ低消費電力に対応するために、それぞれ処理ごとに専用のハードウェア回路を実装することにより、これらの符号化/復号化処理が実現されてきた。
また、近年、複数の無線方式に1つの装置で対応できるようなソフトウェア無線技術への期待が高まっている。規格化や標準化されている種々の無線方式間においては、これらの符号化/復号化処理の内容はそれぞれ類似しているものの、処理データ単位や演算式中の一部の処理パラメータ、および演算順序等が異なるという性質がある。
ただし、無線通信方式ごとに専用のハードウェア回路を実装する手法では、複数の無線方式における符号化/復号化処理に対応しようとした場合、対応する無線方式の数だけ、専用ハードウェア回路が必要となってしまうため、必要とされる回路の面積やコストが大きくなるという問題がある。また、処理の変更や拡張に対する柔軟性が低いという点も問題となる。
この問題を解決しうる技術として、後述の特許文献10には、専用ハードウェア回路を種々のパラメータによって設定可能な構成とすることで複数の無線方式に対応させて、これによって高速性と電力効率を両立するという技術が記載されている。これは、専用の処理エンジンを複数のベースバンド処理に対応できるように再設定可能な構成にすることで、柔軟に複数の無線方式に対応させるものである。
また、これに類似する技術として、特許文献1には、専用のハードウェア回路を動作モード設定可能にし、中央の全体制御用プロセッサから制御することでシステム変更等に柔軟に対応するという技術が記載されている。
また、特許文献7には、専用の信号処理プロセッサ(DSP)などのプロセッサを用いて複数の無線方式に対応する符号化/復号化処理をソフトウェアによって処理するという技術が記載されている。これは、柔軟性を確保するために一般的な信号処理プロセッサと、メモリアクセスを高速化するためのDMAコントローラを用いて通信処理を実現することにより、種々の通信方式に柔軟に対応するというものである。
また、これに類似する技術として、特許文献2には、信号処理プロセッサの外部に専用のメモリコントローラを備えることで、プロセッサのメモリアクセスレイテンシを削減するという技術が記載されている。
これら以外の先行技術として、特許文献3には、シングルメモリポートを利用して回路規模の増加を抑えつつ、変倍機能を内蔵可能な画像処理用信号処理装置が記載されている。特許文献4には、加算処理と乗算処理とを並列実行可能なように構成することにより、演算ロジックの省スペース化を可能であるという論理集積回路が記載されている。
また、特許文献5には、フォワードパイロットトーンとリバースパイロットトーンによって通信に係るパラメータを設定する通信方式が記載されている。特許文献6には、データを共有メモリに転送する前にローカルで圧縮することによって、複数のプロセッサ間でのデータ転送を効率化するというマルチプロセッサシステムが記載されている。
特許文献8には、命令によって毎回アドレスを計算するアドレス生成部を含むプロセッサの設計ツールなどが記載されている。特許文献9には、内部に演算用のレジスタファイルを備えるプロセッサを利用した通信システムが記載されている。
特開2000−295309号公報 特開2001−034573号公報 特開2006−155637号公報 特開2007−295128号公報 特開2008−187722号公報 特開2010−092499号公報 特表2002−541693号公報 特表2003−518280号公報 特表2005−516432号公報 特表2009−505608号公報
第1の課題は、無線通信機器における符号化/復号化処理(ビット/バイト演算処理)において、複数の無線通信方式における種々の符号化/復号化処理に柔軟に対応できないことである。
その理由は、一般的に符号化/復号化処理の内容は、複数の無線方式間にて各々の処理は類似した処理が多いものの、一部の処理パラメータや演算順序は各々の無線方式の仕様に大きく依存しており、かつ、必要演算量も比較的大きいため、従来は、無線方式ごとに専用のハードウェア回路を実装することによって実現してきたためである。
しかしながら、近年のシステムLSIの大規模化、高速化などによる処理能力向上に伴い、同一の符号化/復号化処理回路にて複数の無線方式に対応できるような、マルチモード無線機やソフトウェア無線機(SDR: Software Defined Ratio)と呼ばれる無線通信機器の実現が望まれている。更に、将来の仕様変更や機能拡張にも柔軟に対応できるものである必要もある。
第2の課題は、無線通信システムにおける符号化/復号化処理(ビット/バイト演算処理)において、柔軟性を重視してプロセッサによるソフトウェア処理で実現した場合に、複数のビット(バイト)分を同時に演算するなど、メモリアクセスレイテンシも含めて高速に処理できないことである。
その理由は、一般的に、無線通信における符号化/復号化処理では、1つのビットを処理するために前後の複数のビット情報を必要とするため、専用のハードウェア回路で並列に実現する場合はそれほど問題ないが、柔軟性や拡張性を重視してプロセッサによるソフトウェア処理で実現しようとした場合、一般的なプロセッサでは、複数のビット/バイト分の符号化/復号化処理を同時に演算するのは困難であるからである。
また、プロセッサによるソフトウェア処理の場合には、一般的にはプロセッサがメモリにアクセスするために一定のレイテンシ(サイクル数、もしくは遅延時間)が必要となるため、その分だけ演算器の稼働率が低下して処理時間が増加するので、高速化できないという問題があるからでもある。
ここで、無線通信における符号化/復号化処理の処理量は、一般的に要求されるデータ転送レートに依存するものである。近年の無線方式においては要求されるデータ転送レートが増加し、さらに低消費電力化も望まれているため、より低消費電力にて高速通信が可能であることが重要となっている。
以上の課題を達成しうる技術は、前述の各特許文献には記載されていない。特許文献10に記載の技術では、演算式の一部の処理パラメータの変更には再設定により比較的容易に対応できるものの、処理データ単位や繰り返し回数、細かい演算順序や各処理エンジン(専用ハードウェア回路)間の処理順序等の変更には簡単には対応できないという問題がある。
これを処理順序等も可変にできるように構成するには、各専用ハードウェア回路間の接続構成が非常に複雑化し、装置の面積や必要なコストがさらに大きくなるという問題や、今後予想される処理エンジン内における演算順序変更等の仕様拡張にはいずれにしても柔軟に対応できないという問題がある。
また、特許文献1に記載の技術も、これと同様に細かい処理順序や各処理(専用ハードウェア回路)間の処理順序等の変更には簡単には対応できないという問題がある。
一方、特許文献7に記載の技術では、無線通信の符号化/復号化処理はビット単位やバイト単位での特殊なビット処理となるため、一般的な信号処理プロセッサでは、複数のビットを並列に演算可能な専用ハードウェア構成に比べて処理サイクル数が大幅に増加するという問題がある。また、処理変更に対する柔軟性は非常に高いものの、例えばプロセッサからメモリへのアクセスレイテンシが性能オーバヘッドとなるため、やはり高速化が難しいという課題もある。
これを、メモリアクセスにDMAコントローラを用いるようにしたとしても、プロセッサによるソフトウェア処理の場合、メモリのロード/ストア命令と演算処理命令とに別々のサイクルを必要とするため、専用ハードウェア処理に比べて低速であるという問題や、プロセッサで処理するデータ単位とメモリ上に格納されるデータ単位が異なる場合はビットシフト処理等の性能オーバヘッドが必要であるという問題もある。その上で更に高速化しようとする場合は、クロック周波数を高速にする必要があり、消費電力や発熱量の増加を招くという問題がある。
また、特許文献2に記載の技術も、外部メモリに対して単純にアドレスをインクリメントしながらアドレスとデータを一緒に転送するデータ書き込み時のスループットは向上するものの、アドレスと対応するデータの転送サイクルが異なる(読み出しに2サイクル以上必要とする)ので、データ読み出し時のスループットが向上しないという問題がある。また、アドレスも単純にインクリメントするだけのものであるため、無線通信の符号化/復号化処理におけるインタリーブ/デインタリーブ処理のような、単純なインクリメントではない特殊なアドレス順には対応できないという問題もある。
これら以外の、特許文献3〜6、および特許文献8〜9に記載の技術は、いずれも、複数の無線通信方式に対応しうる符号化/復号化処理を高速に、かつ簡単な回路構成によって実現するということを目的としておらず、またそのための構成も備えていないので、当然ながらこの問題を解決することはできない。
本発明の目的は、複数の無線通信方式における種々の符号化/復号化処理を高速に、かつ簡単な回路構成によって実現しうる符号化/復号化処理プロセッサ、および無線通信装置を提供することにある。
上記目的を達成するため、本発明に係る符号化/復号化処理プロセッサは、無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化/復号化処理プロセッサであって、符号化および復号化処理専用のコプロセッサを有すると共に、コプロセッサが、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を1サイクルで複数のビット分を並列に行う演算回路とを備えることを特徴とする。
上記目的を達成するため、本発明に係る無線通信装置は、外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化/復号化処理(コーデック)モジュールを備えると共に、符号化/復号化処理(コーデック)モジュールが、受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路と、受信データの誤り訂正復号化以外の処理を行う請求項1ないし請求項8のうちいずれか1項に記載の符号化/復号化処理プロセッサとを備えたことを特徴とする。ここでいう誤り訂正復号化とは、ビタビ復号化およびターボ復号化のうちいずれか1つ以上の処理をいう。
本発明は、上述したように、符号化および復号化処理専用のコプロセッサが、外部から与えられた動作モードおよび生成多項式に基づいて1サイクルで複数のビット分を並列に行うプログラマブル演算器を備える構成としたので、符号化/復号化処理を高速に行うことができ、この処理内容について外部から容易に変更することが可能となる。これによって、複数の無線通信方式における種々の符号化/復号化処理を高速に、かつ簡単な回路構成によって実現可能であるという優れた特徴を持つ符号化/復号化処理プロセッサ、および無線通信装置を提供することができる。
図3に示した符号化/復号化処理プロセッサのより詳しい構成について示す説明図である。 図1に示したコプロセッサのより詳しい構成について示す説明図である。 本発明の第1の実施形態に係る符号化/復号化処理プロセッサを利用した無線通信装置の構成を示す説明図である。 図4Aは図2に示したコプロセッサのレジスタファイルのマッピング構成例について示す説明図である。図4Bは図2に示したコプロセッサの各レジスタのビットフォーマットについて示す説明図である。 図2に示したコプロセッサにおけるコプロセッサ命令の命令コードの構成例を示す説明図である。 図2に示した専用演算器(ALU)内のスクランブリング回路(SCRAM)の構成例を示す説明図である。 図2に示した専用演算器(ALU)内の畳み込み符号化器(CONV)の構成例を示す説明図である。 図2に示した専用演算器(ALU)内のCRC符号化器(CRC)の構成例を示す説明図である。 図2に示した専用演算器(ALU)内のビット連接/並び替え回路(PERM)の構成例を示す図である。 図2に示したメモリコントローラで、書き込みアドレスジェネレータ、書き込みデータFIFO回路、および書き込みデータパッキング回路のより詳しい構成および動作について示す説明図である。 図10に示したメモリコントローラのメモリ書き込み用各回路で、コプロセッサからCR2またはCR3レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。 図2に示したメモリコントローラで、読み出しアドレスジェネレータ、読み出しデータFIFO回路、読み出しデータパッキング回路のより詳しい構成および動作について示す説明図である。 図12に示した読み出しアドレスジェネレータ内のオフセットアドレスジェネレータのより詳しい構成について示す説明図である。 図13に示したオフセットアドレスジェネレータによって行われる、無線通信の符号化/復号化処理における一般的なインタリーブ処理の例を示す説明図である。 図10に示したメモリコントローラのメモリ読み出し用各回路で、CR2またはCR3レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。 図16Aは図1および図3に示した符号化/復号化処理プロセッサにおける符号化処理の一例を示す説明図である。図16Bは図1および図3に示した符号化/復号化処理プロセッサにおける復号化処理の一例を示す説明図である。 図1および図3に示した符号化/復号化処理プロセッサで図16Aに示した処理を行う場合の、ステップS301〜304に示した符号化処理の処理シーケンス例をより詳細に示すシーケンス図である。 図1および図3に示した符号化/復号化処理プロセッサで図16Bに示した処理を行う場合の、ステップS311〜314に示した復号化処理の処理シーケンス例をより詳細に示すシーケンス図である。 図1および図3に示した符号化/復号化処理プロセッサにおける畳み込み符号化処理やスクランブリング(デスクランブリング)処理を、コプロセッサ内の専用演算器(ALU)にマッピングして処理する場合のマッピング構成例、すなわち、パラメータレジスタの設定例を示す説明図である。 図1および図3に示した符号化/復号化処理プロセッサにおける畳み込み符号化処理やスクランブリング(デスクランブリング)処理を行う場合のプロセッサ処理プログラムの記述例を示す説明図である。 本発明の第2の実施形態に係る符号化/復号化処理プロセッサを利用した無線通信装置の構成を示す説明図である。 図21で示した符号化/復号化処理プロセッサのより詳しい構成について示す説明図である。 図22で示したコプロセッサのより詳しい構成について示す説明図である。 図23に示したローカルメモリコントローラ(LMC)および共有メモリコントローラ(SMC)のより詳しい構成について示す説明図である。
(第1の実施形態)
以下、本発明の第1の実施形態の構成について添付図1〜3、10、および12〜13に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る符号化/復号化処理プロセッサ100は、無線通信装置1に内蔵され、通信データの符号化および復号化処理を行う符号化/復号化処理プロセッサである。符号化/復号化処理プロセッサ100は、符号化および復号化処理専用のコプロセッサ11を有する。そしてコプロセッサ11は、外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタ60と、動作モードおよび生成多項式に基づいて動作し、符号化および復号化処理に必要な演算を1サイクルで複数のビット分を並列に行う演算回路22aとを備える。
また、コプロセッサ11は、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラ20〜21を備え、このメモリコントローラ20〜21が、外部から与えられたパラメータによって自立的にデータの読み書きを行う記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路30,40と、記憶装置上の出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するFIFO(First In First Out)回路31,41と、記憶装置上の出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを予め定められたビット数に揃えて出力するデータパッキング回路32,42とを備える。これらの各々の回路は、データ読み出し用(40,41,42)とデータ書き込み用(30,31,32)に各々備えられている。
さらに、データ書き込み用アドレスジェネレータ回路30は、初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタ30a1と、初期ポインタの値を初期値として、アドレスを発行するたびにステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器30a2とを備える。
そして、データ読み出し用アドレスジェネレータ回路40は、複数のオフセットアドレス計算モジュール80と、そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器40a4とを備え、オフセットアドレス計算モジュール80が、第1および第2のアドレス演算器81〜82を備え、第1のアドレス演算器81のアドレスポインタ81aを外部から与えられたカウント数の値で一定回数ごとに第2のアドレス演算器82で計算しているアドレスポインタ82aの値に更新する。
さらに、データ読み出し用アドレスジェネレータ回路40は、発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路40a2と、メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用FIFO回路40a3も備える。
そして、メモリコントローラ20〜21が、プログラマブル演算器側から、記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能(CR2〜3)と、プログラマブル演算器側から、記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能(CR4〜5)とを備える。
その一方で、演算回路22aが、外部から与えられた動作モードおよび生成多項式に応じて、スクランブリング処理50、畳み込み符号化処理51、CRC符号化処理52およびビット連接/並び替え処理53のうちいずれか1つ以上の処理を行う機能を備える。
この符号化/復号化処理プロセッサ100を内蔵する無線通信装置1は、外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化/復号化処理(コーデック)モジュール200を備える。この符号化/復号化処理(コーデック)モジュール200は、受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路(ビタビ処理回路104aおよびターボ処理回路104b)と、受信データの誤り訂正復号化以外の処理を行う上記の符号化/復号化処理プロセッサ100とを備える。
この構成を備えることにより、符号化/復号化処理プロセッサ100は、複数の無線通信方式における種々の符号化/復号化処理を高速に、かつ簡単な回路構成によって実現することが可能となる。
以下、これをより詳細に説明する。
図3は、本発明の第1の実施形態に係る符号化/復号化処理プロセッサ100を利用した無線通信装置1の構成を示す説明図である。無線通信装置1は、IEEE(Institute of Electrical and Electronic Engineers)にて規格化されている無線LAN(IEEE802.11a)方式やWiMAX(IEEE802.16e)方式などを含む複数の無線通信方式に対応可能な符号化/復号化処理(コーデック)モジュール200の中に、符号化/復号化処理プロセッサ100を適用したものである。
無線通信装置1は、無線通信のベースバンド処理を行うモジュールとして、基地局と端末間の同期確立やタイミング探査を行うサーチモジュール205、送信データの変調処理や受信データの復調処理を行うモデムモジュール206、送信データの符号化処理や受信データの復号化処理を行う符号化/復号化処理(コーデック)モジュール200、上位レイヤ(レイヤ2またはレイヤ3)に係る通信データを処理する汎用プロセッサ(CPU)201、各無線通信モジュール間の実行制御を行うリソースマネージャ202、各無線通信モジュール間でデータを転送するための共有メモリ203を備える。
符号化/復号化処理(コーデック)モジュール200は符号化/復号化処理プロセッサ100、命令メモリ101、データメモリ102、インタフェース制御回路103、ビタビ処理回路104a、ターボ処理回路104b、符号化/復号化処理プロセッサ100とビタビ処理回路104間でデータを共有する共有メモリ105などを備える。
すなわち、符号化/復号化処理のうち、その処理量が膨大でプロセッサ処理では処理能力が不足する誤り訂正復号化処理について専用ハードウェアであるビタビ処理回路104aおよびターボ処理回路104bを用いて処理を実施し、それ以外の複数の符号化/復号化処理については符号化/復号化処理プロセッサ100を用いて処理を実施するものである。ここでいう誤り訂正復号化とは、ビタビ復号化およびターボ復号化のうちいずれか1つ以上の処理をいう。
図1は、図3に示した符号化/復号化処理プロセッサ100のより詳しい構成について示す説明図である。符号化/復号化処理プロセッサ100は、制御用プロセッサ10に、符号化/復号化処理(ビット/バイト演算処理)専用のコプロセッサを接続した構成である。
本発明における符号化/復号化処理プロセッサ100は、インタフェースとして、外部からブート制御や割り込み信号入力を行うためのプロセッサ制御インタフェース111a、符号化/復号化処理プロセッサ100から命令メモリ101にアクセスするための命令メモリインタフェース111b、ローカルメモリ(データメモリ)102にアクセスするためのローカルメモリインタフェース111b、共有メモリ105または203にアクセスするための共有メモリインタフェース111c、外部装置に制御アクセスするためのDSPインタフェース111d、外部共有メモリにストリームアクセスするための共有メモリインタフェース111eなどを備える。
符号化/復号化処理プロセッサ100内部は、コプロセッサインタフェース112aを備えた一般的な制御用プロセッサ10(例えば、ハーバードアーキテクチャ型の32ビットRISCプロセッサ)に対して、そのコプロセッサインタフェース112aを介して本実施形態の特徴である符号化/復号化処理専用のコプロセッサ11が接続されている構成である。
コプロセッサ11はローカルメモリインタフェース112bと共有メモリインタフェース112cとを備え、これらの各々を介してローカルメモリ(データメモリ102)または共有メモリ105のそれぞれにストリームアクセス(スプリットトランザクションをサポートするバーストアクセス)が可能である。
ここで、メモリセレクタ(MUX型バスコントローラ)12は、制御用プロセッサ10からのデータアクセスと、コプロセッサ11からのローカルメモリアクセスを調停/選択制御するために用いられ、ローカルメモリ(データメモリ102)はこのメモリセレクタ12からのローカルメモリインタフェース111cに接続される。そして、命令メモリ101は制御用プロセッサ10の命令メモリインタフェース111bに直接接続される。
なお、プロセッサコントローラ13は、外部からのブート制御、割り込み制御などを行うブロックであり、外部からのローカルメモリ(データメモリ102)や命令メモリ101へのアクセスは、外部から各メモリへ直接アクセス可能な(バイパスする)構成にしてもよいし、プロセッサ制御インタフェース111aを介してアクセスする形としてもよい。
図2は、図1に示したコプロセッサ11のより詳しい構成について示す説明図である。コプロセッサ11は、メモリアクセスの際のレイテンシを隠蔽するために、ローカルメモリインタフェース112bを介してローカルメモリ(データメモリ102)にストリームアクセス可能なローカルメモリコントローラ(LMC)20と、共有メモリインタフェース112cを介して外部の共有メモリにストリームアクセス可能な共有メモリコントローラ(SMC)21とを備える。
ローカルメモリコントローラ(LMC)20および共有メモリコントローラ(SMC)21は、プロセッサやコプロセッサ内の演算処理とは並列にローカルメモリ(データメモリ102)や外部の共有メモリにアクセスするために、各々の内部に、書き込みアドレスジェネレータ30、書き込みデータFIFO回路(First In First Out)31、書き込みデータパッキング回路32、読み出しアドレスジェネレータ40、読み出しデータFIFO回路41、読み出しデータパッキング回路42を備える。
以後、ローカルメモリコントローラ20内部に備えられたものを書き込みアドレスジェネレータ(AG(W))30a、書き込みデータFIFO回路31a、書き込みデータパッキング回路(PACKER)32a、読み出しアドレスジェネレータ(AG(R))40a、読み出しデータFIFO回路41a、読み出しデータパッキング回路(PACKER)42aと各々いう。また、共有メモリコントローラ(SMC)21に備えられたものを書き込みアドレスジェネレータ30b、書き込みデータFIFO回路31b、書き込みデータパッキング回路32b、読み出しアドレスジェネレータ40b、読み出しデータFIFO回路41b、読み出しデータパッキング回路42bと各々いう。
また、ローカルメモリコントローラ20および共有メモリコントローラ21は、読み出し時はアドレスを投機的に発行するスプリットトランザクション機能も備える。ここで、ローカルメモリコントローラ20および共有メモリコントローラ21は、図1または図2では各1個ずつ実装した例を示しているが、本実施形態としてはこの個数は特に問わない。
また、コプロセッサ11は、符号化/復号化処理(ビット/バイト演算処理)専用のALU(Arithmetic Logic Unit、算術論理演算器)22を備える(以後、単に演算器22という)。演算器22は、複数の無線通信方式における符号化/復号化処理にて一般的によく用いられる、スクランブリング回路(SCRAM)50、畳み込み符号化器(CONV)51、CRC符号化器(CRC)52、ビット連接/並べ替え回路(PERM)53、およびその他の演算回路54(others)として動作しうる演算回路22aを備える。これらの構成については後述する。
そして、演算回路22aは、コプロセッサ11内に備えられているパラメータレジスタ60によってその動作モードに係るパラメータが設定されている。このことによって、様々な無線方式における各符号化/復号化処理に柔軟に対応できるプログラマブルな構成となっている。
ここで、スクランブリング回路(SCRAM)50は符号化/復号化処理におけるスクランブリング/デスクランブリング処理に、畳み込み符号化器(CONV)51は畳み込み符号化処理に、CRC符号化器(CRC)52はCRC符号化処理とCRC判定処理に、ビット連接/並べ替え回路(PERM)53は、ビットの繰り返し(リピティション)処理、パンクチャ/デパンクチャ処理、簡単なビットインタリーブ/ビットデインタリーブ処理などに各々用いられる。
また、本発明におけるコプロセッサ11は、コプロセッサ命令にて使用可能なコプロセッサ用のレジスタファイル(REG)23を備える。制御用プロセッサ10内に元々備えるレジスタとは別のものである。レジスタファイル(REG)23内の汎用レジスタとしては、例えば、32ビットレジスタを16個(CR0〜CR15)備える。
ただし、このうち、例えば、16個中の2つの汎用レジスタ(CR2,CR3)については特殊レジスタとして動作させる。たとえば、1つ(例えばCR2)はローカルメモリコントローラ20とのデータ授受用として割り当て、1つは(例えばCR3)は共有メモリコントローラ21とのデータ授受用として割り当てる。この動作について、詳しくは後述する。
この構成により、ローカルメモリ(データメモリ102)及び外部共有メモリへのアクセスにこれらの特殊レジスタである汎用レジスタを使用することができる。すなわち、ローカルメモリ(データメモリ102)や外部共有メモリへのストリームデータアクセスが、コプロセッサ11内の汎用レジスタと同様の命令マッピングや処理サイクル数で処理可能という特徴を持つ。
また、コプロセッサ11は、コプロセッサコントローラ24も備え、コプロセッサコントローラ24はコプロセッサ命令のデコード処理を実施し、演算器22やレジスタファイル23、ローカルメモリコントローラ20および共有メモリコントローラ21に対する制御を行う。そして、プロセッサコントローラ13を介して制御用プロセッサ10に対する割り込み処理を行う。
(本実施形態に係る同期処理の基本的な動作)
図1に示した本実施形態に係る符号化復号化処理プロセッサ100は、プロセッサ制御インタフェース111aや割り込みインタフェース111fを用いて外部から制御用プロセッサ10が起動されると、命令メモリ101から命令コードを読み出し、データメモリ(ローカルメモリ)102にアクセスしながら、プロセッサ処理を実行する。また、必要に応じて、メモリセレクタ12を経由して、共有メモリ105や外部の周辺機器にもアクセスする。
ここで、本発明の特徴である符号化/復号化処理コプロセッサ11を用いて処理実行するためには、命令コードとして制御用プロセッサのコプロセッサ命令を使用する。制御用プロセッサ10が命令メモリ101からコプロセッサ命令を読み出した場合、制御用プロセッサ10はコプロセッサインタフェース112aを介して、コプロセッサ11にこのコプロセッサ処理を実行させる。
図2に示すコプロセッサ11側は、コプロセッサインタフェース112aを介して受け取ったコプロセッサ命令をコプロセッサコントローラ24でデコードし、デコードされたコプロセッサ命令を、演算器22、レジスタファイル23、ローカルメモリコントローラ20や共有メモリコントローラ21を制御して実行する。
(コプロセッサ内の汎用レジスタ構成とその動作の説明)
図4Aは、図2に示したコプロセッサ11のレジスタファイル(REG)23のマッピング構成例について示す説明図である。図4Bは、図2に示したコプロセッサ11の各レジスタのビットフォーマットについて示す説明図である。コプロセッサ11は、レジスタファイル(REG)23内の汎用レジスタとして、例えば、32ビットレジスタを16個(CR0〜CR15)備え、この汎用レジスタを用いて、コプロセッサ内演算命令や、制御プロセッサ−コプロセッサ間演算命令などを実行する。
このうち、いくつかのレジスタは専用レジスタとして動作する。例えば、1つのレジスタ(CR0)はゼロレジスタ(書き込みアクセスは無効、読み出しアクセスの値は常に0)として動作する。また、16個中の2つの汎用レジスタ(CR2,CR3)についてはメモリアクセス用の特殊な特殊レジスタとして動作させる。例えば、1つ(例えばCR2)はローカルメモリアクセス用として割り当て、もう1つ(例えばCR3)は外部共有メモリアクセス用として割り当てる。
即ち、この場合でいえば、演算器22からCR2レジスタに書き込みアクセスすると、ローカルメモリコントローラ(LMC)20内の書き込みデータパッキング回路32および書き込みデータFIFO回路31を経由してローカルメモリ(データメモリ102)に当該データが書き込まれる。この時の書き込みアドレスはローカルメモリコントローラ(LMC)20内の書き込みアドレスジェネレータ30が指定するアドレスとなる。
この時、演算器22やコプロセッサコントローラ24の動作としては、CR2レジスタへの書き込みだけで、次のコプロセッサ命令を実行可能であるため、結果として、1[データ/サイクル]の書き込みスループットでローカルメモリ(データメモリ102)に処理結果データを書き込むことができる。
一方、事前にローカルメモリコントローラ(LMC)20内の読み出しアドレスジェネレータ40等を動作させて、ローカルメモリ(データメモリ102)上のストリームデータを読み出し開始しておく。これによって、専用演算器(ALU)22は、CR2レジスタに読み出しアクセスするだけでローカルメモリ(データメモリ102)上のデータをローカルメモリコントローラ(LMC)20内の読み出しデータFIFO回路41および読み出しデータパッキング回路42経由で読み出すことが可能である。
この場合も、ローカルメモリ(データメモリ102)上のデータは事前にローカルメモリコントローラ(LMC)20内まで読み出し転送されているため、専用演算器(ALU)22やコプロセッサコントローラ24の動作としては、待ち時間なしにCR2レジスタへの読み出しアクセス可能であり、結果的に、1[データ/サイクル]の読み出しスループットでローカルメモリ(データメモリ102)から処理データを読み出すことができる。
同様に、CR3レジスタに対して書き込みアクセスや読み出しアクセスを実施することで、メモリアクセスレイテンシを隠蔽しながら、共有メモリコントローラ(SMC)21経由で外部の共有メモリにアクセスすることが可能である。
また、図4Aには、パラメータレジスタ設定により、他の2つのレジスタ(CR4〜5)をピープ(PEEP)処理用のレジスタとして動作させるという例を示している。
前述したように、CR2レジスタおよびCR3レジスタは、各々ローカルメモリ(データメモリ102)および共有メモリにアクセスするためのレジスタである。これらのCR2レジスタおよびCR3レジスタに読み出しアクセスを行うと、読み出しデータFIFO回路41や読み出しデータパッキング回路42の状態が更新される。
これと同様に、CR4レジスタおよびCR5レジスタをピープ処理用のレジスタとして動作させて、当該レジスタに読み出しアクセスした場合、CR4レジスタ(LMP)はCR2レジスタ(LM)と同じデータを、CR5レジスタ(SMP)はCR3レジスタ(SM)と同じデータを読み出すことができ、且つ、読み出しデータFIFO回路41や読み出しデータパッキング回路42の状態は更新されない。
即ち、CR4レジスタから読み出したデータは、その後、CR2レジスタから再度読み出すことができる。また、CR5レジスタから読み出したデータは、その後、CR3レジスタから再度読み出すことができる。従って、このピープレジスタ機能は、同一のデータを複数回使用する場合に有用である。なお、CR4レジスタおよびCR5レジスタは、パラメータ設定により、ピープ機能レジスタとして使用するか、通常の汎用レジスタとして使用するかを選択することも可能である。
なお、図4Aおよび図4Bに示した例では、各レジスタのビットフォーマットは32ビットであり、これを1ビット×32データ分または1バイト(8ビット)×4データ分などとして使用する。本実施形態においては、例えば、「LSBファースト」かつリトルエンディアンのビットフォーマットを使用することとし、ビット/バイト演算処理の場合、LSB(Least Significant Bit、最下位ビット)側から順番にデータ処理される。
また、図4Aおよび図4Bに示した例では、32ビット×16個のレジスタファイル構成の場合を示しているが、本実施形態におけるレジスタ構成としてはこの構成に限らず、各々16ビットのレジスタでもよいし、8個や32個のレジスタファイル構成でもよい。
(コプロセッサ命令の命令コードの構成とその動作の説明)
図5は、図2に示したコプロセッサ11におけるコプロセッサ命令の命令コードの構成例を示す説明図である。図5では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示している。これらの他に、例えば、命令コード内の21〜22ビット目の固定ビットを「11」以外にすることによって、制御プロセッサ−コプロセッサ間演算命令やパラメータレジスタ60設定命令などを備えるようにしてもよい。23〜31ビット目および8〜11ビット目は固定値である。
12〜15ビット目はオペレーション・コード(OP: Operation Code、命令種別)を示す。OP=0(SCRAM)はスクランブリング処理命令であり、入力レジスタ(crs)のデータに対してスクランブリング処理(SCRAM)を行い、出力レジスタ(crd)に出力する命令である。ここで、4〜7ビット目のcrs、および0〜3ビット目のcrdは共にコプロセッサ11のレジスタファイル(REG)23内の汎用レジスタ番号であり、16〜20ビット目の即値(imm5)はLSB側から即値(imm5)(1〜8)で記述されたビット数分だけ並列に(一度に)スクランブリング処理を行うことを示している。1命令で最大8ビット(1バイト)分の並列処理が可能である。
また、複数の無線方式におけるスクランブリング処理に対応するために必要な動作モード設定やTAP初期値設定、生成多項式の仕様設定は、パラメータレジスタ60に事前に設定しておくことで実現可能である。
OP=1(CONV)は畳み込み符号化処理である。この場合は、パラメータレジスタで設定するコーディングレートに応じて出力データビット数が変化するため、即値(imm5)で設定した入力データビット数(1〜8)に対して出力データビット数はその2倍または3倍となる(最大24ビット)。
OP=2(CRC)はCRC符号化処理命令である。この場合は、前述のスクランブリング処理(SCRAM)と同様、最大8ビット分を1命令で処理可能であり、出力データビット数は16〜20ビット目の即値(imm5)で指定した入力データビット数と一致する。
なお、OP=1および2の畳み込み符号化処理命令(CONV)やCRC符号化処理命令(CRC)についても、OP=0のスクランブリング処理命令(SCRAM)と同様、パラメータレジスタ60を用いて動作モード設定やTAP初期値設定、生成多項式の仕様設定を行うことで、複数の無線方式に対応する。
また、これらのSCRAM、CONV、CRCは、専用演算器(ALU)22内に後述する専用の並列演算回路50,51,52を各々実装しているので、通常のプロセッサ処理では1ビット処理するのに複数サイクル必要な処理を、複数ビット分を1サイクルで処理することが可能である。
OP=3(SHL)は左シフト演算命令(crd=crs<<imm5)であり、OP=4(SHR)は右シフト演算命令(crd=crs>>imm5)である。これらはいずれも、ビット演算処理で頻繁に使用される命令であるので、コプロセッサ11内にも実装するものである。
また、OP=5(PERM)はビット連接/並び替え演算命令であり、入力レジスタ(crs)のうち、最大でLSB(最下位ビット)側から16ビット分に対して連接/並び替え処理を行い、出力レジスタ(crd)に出力する。ここで、最大16ビット分の出力データにどの順番で出力するかを64ビット分(32ビットレジスタ×2個のペア)のパラメータレジスタを用いて設定しておき、どのパラメータを使用するかをパラメータレジスタ番号(cp)で指定する。このことにより、高速かつ柔軟なビット連接/並べ替え処理を実現することが可能である。
この処理では、1ビット分の出力を16ビット分の入力データから選択するため、4ビット×16で64ビット分の設定が必要である。このビット連接/並び替え演算命令(PERM)も専用演算器(ALU)22内に専用の演算回路53を備えることで、1命令で複数ビット分を並列に処理可能である。
また、OP=6(MSKC2C)およびOP=7(MSKP2C)はレジスタ間転送命令(MASK&MOVE)であり、いずれもLSB側から16〜20ビット目の即値(imm5)(1〜31)で指定されたビット数分だけをコピーする命令である。ここで、OP=7(MSKC2C)はレジスタファイル(REG)23間での転送命令(crd=MSK(crs,imm5))であり、OP=8(MSKP2C)はパラメータレジスタ60からレジスタファイル(REG)23へのレジスタ間転送命令(crd=MSK(cp,imm5))である。
ここで、図5に示した例では、コプロセッサ命令の一部の例として、コプロセッサ内での演算命令のみを示したが、これらの他に、命令コード内の21〜22ビット目の固定ビットを変更することによって、制御プロセッサ−コプロセッサ間演算命令やパラメータレジスタ60設定命令なども備えることが可能である。
制御プロセッサ−コプロセッサ間演算命令の例としては、図5の例では即値(imm5)を用いていた各命令の即値(imm5)部分を、制御プロセッサ11内の汎用レジスタ番号(rs)とすることで即値ではなく変数とすることも可能である。また、レジスタ転送命令の入力レジスタや出力レジスタに制御プロセッサ11内の汎用レジスタ(rs,rd)を指定することで、制御プロセッサ−コプロセッサ間のレジスタ間転送命令なども可能である。
パラメータレジスタ60設定命令は、専用演算器(ALU)22やメモリコントローラ(LMC,SMC)20〜21内の種々のパラメータレジスタに即値または制御プロセッサ内の汎用レジスタ値を設定できる命令である。
(専用演算器(ALU)22内の各演算器構成とその動作の説明)
ここからは、図2に示した専用演算器(ALU)22に備えられている各々の演算回路の構成について説明する。
(スクランブリング回路(SCRAM)50の構成とその動作の説明)
図6は、図2に示した専用演算器(ALU)22内のスクランブリング回路(SCRAM)50の構成例を示す説明図である。スクランブリング回路(SCRAM)50は、そのインタフェースとして、入力データ(crs)、出力データ(crd)、動作モード(mode)、生成多項式(poly)、演算ビット数(imm5)、TAP初期値(tap)とTAP出力値(o_tap)の各々を持つ。また、演算ビット数(imm5)は書き込みデータサイズ(wsize)として、書き込みデータパッキング回路32に向けて出力される。
スクランブリング回路(SCRAM)50は、動作モード(mode)と生成多項式(poly)はパラメータレジスタ60を用いてパラメータ設定できることにより、種々の無線方式におけるスクランブリング処理アルゴリズムにプログラマブルに対応する。
スクランブリング回路(SCRAM)50は、演算ビット数(imm5)によって、その1命令で処理するビット数を指定することが可能である。また、TAP初期値(tap)もパラメータレジスタ60を用いて指定可能であり、1命令分の処理後には、演算ビット数(imm5)で指定された演算ビット数分だけ更新されたTAP値(o_tap)を選択して出力することで、当該パラメータレジスタの値も更新される。
更新されたTAP値は次のスクランブリング処理命令時にTAP初期値として使用されるので、スクランブリング処理命令を繰り返し実行することで、スクランブリング回路(SCRAM)50は、8ビット以上の長いストリームデータ系列に対するスクランブリング処理(デスクランブリング処理)が可能となる。
スクランブリング回路(SCRAM)50は、1ビット分を処理するスクランブリング演算器70を複数接続することで実現される。図6に示した例では8個であり、この場合、1命令で最大8ビット分を処理可能である。動作モード設定(Mode)や生成多項式設定(Poly)は基本的には静的なパラメータであるため、これらは各スクランブリング演算器70に並列に入力され、また、入力データ(crs)は[7:0]のビットごとに各スクランブリング演算器70にそれぞれ入力する。
TAP値(Tap)は、前段のビットの演算結果により更新されるため、前段のスクランブリング演算器70のTAP出力値(TapO)を後段のスクランブリング演算器70のTAP入力値(Tap)として接続する。
1ビット分のスクランブリング演算器70の構成および動作としては、入力したTAP値(Tap)と生成多項式(Poly)の論理積(AND)を実施後、各ビットの排他的論理和(XOR)した値(o_xor)に対して、入力ビットとの排他的論理和(XOR)したものを出力ビットとして出力する。
また、TAP出力は、最上位ビット以外については入力したTAP値(Tap)をシフトして出力し、最上位ビットについては、o_xorをそのまま出力するか、入力ビット値を出力するか、o_xorと入力ビットの排他的論理和(XOR)値を出力するかが種々の無線方式によって異なるため、動作モード設定(Mode)により選択して出力する。
ちなみに図6中の「LSB」は「Least Significant Bit」即ち「最下位ビット」を意味する。また「pad」はパディング、例えば8ビット分のデータに上位24ビット分の「0」を付加して32ビットデータとして出力する処理を意味する。
このように、スクランブリング回路(SCRAM)50の構成および動作として、パラメータレジスタ60を用いて動作モード(mode)と生成多項式(poly)を設定し、TAP値(tap)については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式におけるスクランブリング処理/デスクランブリング処理にプログラマブルに対応できる。
また、1ビット分を処理するスクランブリング演算器70を複数(例えば8個)接続する構成とすることで、1命令(1サイクル)で複数のビット分を並列(一度)に処理することが可能である。
更に、メモリコントローラ20〜21(CR2,CR3レジスタ等)を動作させながら、for文などを用いて繰り返しスクランブリング処理命令(SCRAM)を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するスクランブリング処理(デスクランブリング処理)を、図6の回路構成の場合、8ビット/サイクルのスループットで実行することが可能である。
(畳み込み符号化器(CONV)51の構成とその動作の説明)
図7は、図2に示した専用演算器(ALU)22内の畳み込み符号化器(CONV)51の構成例を示す説明図である。畳み込み符号化器(CONV)51は、図6で示したスクランブリング回路(SCRAM)50と同様に、そのインタフェースとして、入力データ(crs)、出力データ(crd)、動作モード(mode)、生成多項式(poly)、演算ビット数(imm5)、TAP初期値(tap)とTAP出力値(o_tap)を持つ。また、演算ビット数(imm5)と動作モード(mode)が乗算された値が、書き込みデータサイズ(wsize)として、書き込みデータパッキング回路32に向けて出力される。
畳み込み符号化器(CONV)51は、動作モード(mode)と生成多項式(poly)がパラメータレジスタ60を用いてパラメータ設定できることにより、種々の無線方式における畳み込み符号化アルゴリズムにプログラマブルに対応する。
ここで、動作モード(mode)は符号化率(1、1/2、1/3)に対応し、生成多項式(poly)は符号化率に合わせて8ビットずつ、最大3系列にpoly[7:0]、[15:8]、[23:16]がそれぞれ割り当てられる。
畳み込み符号化器(CONV)51は、演算ビット数(imm5)にてその1命令で処理する入力ビット数を指定することが可能である。また、TAP初期値(tap)もパラメータレジスタ60を用いて指定可能であり、1命令分の処理後には、演算ビット数(imm5)で指定された演算ビット数分だけ更新されたTAP値(o_tap)を出力することで、当該パラメータレジスタの値も更新される。
更新されたTAP値は次の畳み込み符号化処理命令時にTAP初期値として使用されるため、畳み込み符号化処理命令を繰り返し実行することで、8ビット以上の長いストリームデータ系列に対する畳み込み符号化処理が可能となる。
畳み込み符号化器(CONV)51は、1ビット分を処理する畳み込み符号演算器71を複数接続することで実現される。図7の例の場合では8個であり、この場合、1命令で最大8ビット分の入力データを処理可能である。符号化率を指定する動作モード設定(Mode)や生成多項式設定(Poly)は基本的には静的なパラメータであるため、これらは各畳み込み符号演算器71に並列に入力され、また、入力データ(crs)は[7:0]のビットごとに各畳み込み符号演算器71にそれぞれ入力する。
各畳み込み符号演算器71の出力データは各符号化率に対応する1ビット〜3ビットが出力される。TAP値(Tap)は、前段のビットの演算結果により更新されるため、前段の畳み込み符号演算器71のTAP出力値(TapO)を後段の畳み込み符号演算器71のTAP入力値(Tap)として接続する。
1ビット分の畳み込み符号演算器71の構成および動作としては、内部に3つの符号演算器(Masked XOR)を備え、入力したTAP値(Tap)と各生成多項式(Poly)の論理積(AND)を実施後、各ビットと入力ビットの排他的論理和(XOR)した値(o_xor)を出力ビットとして出力する。
ここで、1ビットの入力ビットに対して、出力ビットは符号化率に応じて最大3ビット分が出力される。また、TAP出力(TapO)は、入力ビットを最上位ビットにしてTAP値(Tap)をシフトした形で出力する。ちなみに図7中の「pad」は、図6と同様に「パディング」を意味する。
このように、畳み込み符号化器(CONV)51の構成および動作として、パラメータレジスタ60を用いて符号化率である動作モード(mode)と生成多項式(poly)を設定し、TAP値(tap)については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式における畳み込み符号化処理にプログラマブルに対応できる。
また、1ビット分を処理する畳み込み符号演算器71を複数(例えば8個)接続する構成とすることで、1命令(1サイクル)で複数のビット分を並列(一度)に処理することが可能である。
更に、メモリコントローラ20〜21(CR2,CR3レジスタ等)を動作させながら、for文などを用いて畳み込み符号化処理命令(CONV)を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対する畳み込み符号化処理を、図7の回路構成の場合、入力ビットが8ビット/サイクルのスループットで実行することが可能である。
(CRC符号化器(CRC)52の構成とその動作の説明)
図8は、図2に示した専用演算器(ALU)22内のCRC符号化器(CRC)52の構成例を示す説明図である。CRC符号化器(CRC)52は、スクランブリング回路(SCRAM)50等と同様に、そのインタフェースとして、入力データ(crs)、出力データ(crd)、動作モード(mode)、生成多項式(poly)、演算ビット数(imm5)、TAP初期値(tap)とTAP出力値(o_tap)を持つ。また、演算ビット数(imm5)は書き込みデータサイズ(wsize)として、書き込みデータパッキング回路32に向けて出力される。
CRC符号化器(CRC)52は、動作モード(mode)と生成多項式(poly)はパラメータレジスタ60を用いてパラメータ設定できることにより、種々の無線方式におけるCRC符号化処理アルゴリズムにプログラマブルに対応する。
CRC符号化器(CRC)52は、演算ビット数(imm5)にてその1命令で処理するビット数を指定することが可能である。また、TAP初期値(tap)もパラメータレジスタ60を用いて指定可能であり、1命令分の処理後には、演算ビット数(imm5)で指定された演算ビット数分だけ更新されたTAP値(o_tap)を選択して出力することで、当該パラメータレジスタの値も更新される。
ちなみに図8中の「LSB」は図6と同様に「最下位ビット」、「pad」も図6と同様に「パディング」を意味する。また「MSB」は「Most Significant Bit」即ち「最上位ビット」を意味する。
更新されたTAP値は次のCRC符号化処理命令時にTAP初期値として使用されるため、CRC符号化処理命令を繰り返し実行することで、8ビット以上の長いストリームデータ系列に対するCRC符号化器処理が可能となる。
CRC符号化器(CRC)52は、1ビット分を処理するCRC符号演算器72を複数接続することで実現される。図8に示した例では8個であり、この場合、1命令で最大8ビット分を処理可能である。動作モード設定(Mode)や生成多項式設定(Poly)は基本的には静的なパラメータであるため、これらは各CRC符号演算器72に並列に入力され、また、入力データ(crs)は[7:0]のビットごとに各CRC符号演算器72にそれぞれ入力する。
TAP値(Tap)は、前段のビットの演算結果により更新されるため、前段のCRC符号演算器72のTAP出力値(TapO)が後段のCRC符号演算器72のTAP入力値(Tap)として接続される。1ビット分のCRC符号演算器72の構成および動作としては、入力したTAP値(Tap)の最下位ビットと入力ビットの排他的論理和(XOR)したものか、入力ビットをそのまま出力するかが種々の無線方式によって異なるため、動作モード設定(Mode)により選択したものを出力ビットとして出力する。
また、TAP出力は、入力したTAP値(Tap)の最下位ビットか、そのビットと入力ビットを排他的論理和(XOR)したものかを動作モード設定(Mode)により選択し(o_sel)、そのビット系列と生成多項式(Poly)の論理積(AND)を実施したデータと、入力したTAP値(Tap)をシフトしたデータを排他的論理和(XOR)したものが出力される。
このように、CRC符号化器(CRC)52の構成および動作として、パラメータレジスタ60を用いて動作モード(mode)と生成多項式(poly)を設定し、TAP値(tap)については演算しながら当該パラメータレジスタを更新していく構成とすることで、種々の無線方式におけるCRC符号化処理にプログラマブルに対応できる。
また、1ビット分を処理するCRC符号演算器72を複数(例えば8個)接続する構成とすることで、1命令(1サイクル)で複数のビット分を並列(一度)に処理することが可能である。
更に、メモリコントローラ20〜21(CR2,CR3レジスタ等)を動作させながら、for文などを用いて繰り返しCRC符号化処理命令(CRC)を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するCRC符号化処理またはCRC判定処理を、図8の回路構成の場合、8ビット/サイクルのスループットで実行することが可能である。
また、図8の回路構成の場合、32ビット分のTAPレジスタを備えるため、CRC−8、CRC−16、CRC−24、CRC−32などの様々なCRC符号化処理に対応する。なお、CRC符号化後の結果データはパラメータレジスタ60内のCRC_TAPレジスタに格納される。
(ビット連接/並び替え回路(PERM)53の構成とその動作の説明)
図9は、図2に示した専用演算器(ALU)22内のビット連接/並び替え回路(PERM)53の構成例を示す図である。ビット連接/並び替え回路(PERM)53は、そのインタフェースとして、入力データ(crs)、出力データ(crd)と、ビット選択設定パラメータ(cp_L,cp_H)を持つ。また、演算ビット数は後述する書き込みデータパッキング回路32にて固定設定することで制御可能である。
ビット選択設定パラメータ(cp_L,cp_H)は、出力ビットごとに入力データビット(16ビット分)のどのビットを選択して出力するかを設定される。出力ビットごとに16入力1出力のマルチプレクサ(MUX)を備え、ビット選択設定として4ビット分ずつ使用して設定する。よって、ビット連接/並び替え回路(PERM)53では、合計16ビット分のマルチプレクサ(MUX)16個と、32ビットレジスタであるcp_Lとcp_Hの2つを合わせて合計64ビット分のパラメータ設定を行う。
このように、ビット連接/並び替え回路(PERM)53は、16ビット分の入力データに対して、出力ビット順は任意に設定可能となるため、種々の無線方式におけるビット連接/並び替え処理やビット繰り返し処理、ビットパンクチャ(削除)処理にプログラマブルに対応可能である。
また、メモリコントローラ20〜21(CR2,CR3レジスタ等)、読み出しデータパッキング回路32および書き込みデータパッキング回路42を動作させながら、for文などを用いて繰り返しビット連接/並び替え命令(PERM)を実行することにより、ローカルメモリまたは外部の共有メモリに格納された長いストリームデータ系列に対するビット連接/並び替え処理やビット繰り返し処理、ビットパンクチャ(削除)処理を、図9の回路構成の場合、入力ビットが最大16ビット/サイクルのスループットで実行可能である。
(メモリコントローラ20〜21の構成および動作)
メモリコントローラ20〜21は、プロセッサ10やコプロセッサ11の演算処理とは並列にローカルメモリ(データメモリ102)や外部の共有メモリにアクセスするためのメモリコントローラであり、その内部に、書き込みアドレスジェネレータ30、書き込みデータFIFO回路31、書き込みデータパッキング回路32や、読み出しアドレスジェネレータ40、読み出しデータFIFO回路41、読み出しデータパッキング回路42などを備えている。以下、その各々の要素について説明する。
(メモリ書き込み用回路30,31,32の構成および動作)
図10は、図2に示したメモリコントローラ20〜21で、書き込みアドレスジェネレータ30、書き込みデータFIFO回路31、および書き込みデータパッキング回路32のより詳しい構成および動作について示す説明図である。
コプロセッサ11からCR2またはCR3レジスタを介してメモリに処理結果であるストリームデータを書き込む場合、メモリコントローラ20〜21内の書き込みアドレスジェネレータ30、書き込みデータFIFO回路31、書き込みデータパッキング回路32が使用される。
書き込みアドレスジェネレータ30は、スタートレジスタ(w_start)、ベースアドレスレジスタ(w_base)、初期ポインタレジスタ(w_ptr)、ステップレジスタ(w_step)、メモリ長レジスタ(w_len)、アクセス回数レジスタ(w_cnt)といった各々の数値を記憶する制御レジスタ30a1を備える。
書き込みアドレスジェネレータ30は、コプロセッサ11のパラメータ設定命令によってこれらの制御レジスタに値が設定されて起動されると、書き込みデータFIFO回路31からのデータ出力要求のたびにアドレスを自動的に生成して発行するアドレス演算器30a2を有する。アドレス演算器30a2は、基本的に、ベースアドレス(w_base)に対してカレントアドレスポインタ分を加算したアドレスを発行する。カレントアドレスポインタ30a3は、初期ポインタ(w_ptr)の値を初期値として、アドレス出力するたびに、その値が更新される。
アドレス演算器30a2は、アドレスを出力するたびに、現在のアドレスに対して32ビットアドレス単位でステップ数(w_step)分だけ加算し、メモリ長サイズ(w_len)で剰余(Modulo)演算したものを次のカレントアドレスポインタ30a3のデータとする。
このために、書き込みアドレスジェネレータ30は、制御レジスタ30a1の他に、カレントアドレスポインタレジスタ30a3、加算器(2つ)、剰余演算器(比較器と減算器)、アクセス回数カウント用の比較器、減算器などを備える。このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでの書き込み、ステップ数(w_step)を制御することで任意のアドレス間隔での書き込み、また、メモリ長(w_len)を制御することでメモリの途中から書き込み始めて最後まで書き込んだら先頭に戻っての書き込み、など、柔軟なアドレスパタンを生成することができる。
専用演算器(ALU)22からCR2レジスタまたはCR3レジスタに出力された書き込みデータは、書き込みデータパッキング回路32、書き込みデータFIFO回路31を経由してメモリに出力される。書き込みデータパッキング回路32は、書き込みデータを32ビット単位にパッキングするための回路である。
書き込みデータパッキング回路32は、専用演算器(ALU)22側から指定された書き込みデータサイズ(WSIZE)分のデータ(WDAT)と、現在、書き込みデータパッキング回路32内に残っているデータサイズ(データサイズレジスタ)分のデータ(残りデータレジスタ)を結合する。このとき、本実施の形態の例の場合、処理データはLSB−Firstの順のデータフォーマットであるため、書き込みデータパッキング回路32は、入力されたデータ(WDAT)を、残っている有効データサイズ(データサイズレジスタ)分だけ左シフトし、残っているデータ(残りデータレジスタ)とOR処理することでMSB側に連結する。
ここで、結合されたデータの有効ビット数が32ビット未満の場合は、そのままデータレジスタ(残りデータレジスタ)に格納し、データは出力しない。一方、結合されたデータが32ビット以上になった場合は、LSB側32ビット分を書き込みデータFIFO回路31に出力し、余った上位側32ビット分([63:32])をデータレジスタ(残りデータレジスタ)に格納する。
このような書き込みデータパッキング回路32を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため(プロセッサ側でのシフト演算処理は不要となるため)、専用演算器(ALU)22側のデータ処理単位(出力データサイズ)が32ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。ここで、専用演算器(ALU)22側から所望の処理データサイズ(WSIZE)を出力できない命令の場合(PERM命令など)は固定サイズ設定レジスタ(w_mode,w_size)を用いて固定サイズ設定することも可能である。
また、書き込みデータパッキング回路32で32ビット分のデータが揃うたびに、書き込みデータFIFO回路31にデータが出力される。書き込みデータFIFO回路31では、データが入力されると、書き込みアドレスジェネレータ30と協調動作して、当該データを順番にメモリ上の書き込みアドレスジェネレータ30が示すアドレスに格納する。
このように、FIFOを用いてデータ出力することで、制御プロセッサ10やコプロセッサ11の演算命令とは並列にメモリアクセスでき、メモリ側がウェイト(Wait)(処理待ち)した場合も演算命令には影響を与えないため、書き込みデータのメモリアクセスレイテンシを隠蔽することが可能である。
ここで、メモリ側のウェイト(Wait)により、書き込みデータFIFO回路31がFullになってしまった場合も、書き込みデータパッキング回路32やレジスタファイル(REG)23を介して専用演算器(ALU)22側のコプロセッサ命令をウェイト(Wait)させるようなウェイト(Wait)制御機構も備えることにより、正常にコプロセッサ命令処理を継続することができる。
図11は、図10に示したメモリコントローラ20〜21のメモリ書き込み用各回路で、コプロセッサ11からCR2またはCR3レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
図11では、メモリ上のストリームデータに対してスクランブリング処理を行う場合(8ビット単位の繰り返し処理)の例を示している。まず、コプロセッサ11のパラメータレジスタ設定命令により、専用演算器(ALU)22内のパラメータレジスタ60に当該処理用のパラメータ設定と、メモリコントローラ20〜21(LMC,SMC)内の各アドレスジェネレータ30および40にパラメータ設定と起動を行う(ステップS101)。
読み出し側のメモリコントローラは自立的にメモリからデータを読み出し、読み出しデータFIFO回路41に処理データが順次格納される(スプリットトランザクション,ステップS102)。ここで、例えば、当該ストリームデータに対するスクランブリング処理を行う場合、スクランブリング処理命令(SCRAM)(CR2(3)=SCRAM(CR2(3),8))をfor文などで繰り返す。
後述する読み出しデータパッキング回路42の機能により、32ビット単位のデータから専用演算器(ALU)22は8ビットずつデータを読み出す(ステップS103)。そして、専用演算器(ALU)22は8ビットのスクランブリング処理を繰り返し行い(ステップS104)、連続してCR2(3)レジスタを介してメモリコントローラ20〜21に処理結果データを出力する(ステップS105)。
メモリコントローラ20〜21では、書き込みデータパッキング回路32にて、処理結果データをシフトしながらパッキング処理を実施し、32ビット単位になったら書き込みデータFIFO回路31を介して所望のメモリへデータを順に出力する(ステップS106)。
このようなメモリコントローラ20〜21(アドレスジェネレータ30および40、データFIFO回路31および41,データパッキング回路32および42)の機能により、本実施形態のコプロセッサ11は、8ビット/サイクルの処理スループットでスクランブリング処理(デスクランブリング処理)等の符号化/復号化処理を実施することが可能となる。
(メモリ読み出し用回路40,41,42の構成および動作)
図12は、図2に示したメモリコントローラ20〜21で、読み出しアドレスジェネレータ40、読み出しデータFIFO回路41、読み出しデータパッキング回路42のより詳しい構成および動作について示す説明図である。
コプロセッサ11がCR2またはCR3レジスタを介してメモリからストリームデータを読み出す場合、メモリコントローラ20〜21内の読み出しアドレスジェネレータ40、読み出しデータFIFO回路41、読み出しデータパッキング回路42が使用される。
読み出しアドレスジェネレータ40は、スタートレジスタ(r_start)、ベースアドレスレジスタ(r_base)、オフセットアドレス単位レジスタ(r_unit)、初期ポインタレジスタ(r_ptr_xx)、ステップレジスタ(r_step_xx)、メモリ長レジスタ(r_len_xx)、アクセス回数レジスタ(r_cnt)といった各々の数値を記憶する制御レジスタ40a1を備える。
読み出しアドレスジェネレータ40は、コプロセッサ11のパラメータ設定命令によってこれらの制御レジスタ40a1に値が設定されて起動されると、読み出しアドレスを自立的に、かつ、アクセス回数(r_cnt)分だけ連続的に発行して、メモリからデータを読み出す。読み出しアドレスを連続して投機的に発行することにより、読み出し時のスプリットトランザクションに対応する。
読み出しアドレスジェネレータ40は、基本的には、ベースアドレス(r_base)に対してオフセットアドレスジェネレータ80からのオフセットアドレス分だけ加算したアドレスを加算器40a4によって発行する。ここで、後述するオフセットアドレスジェネレータ80は、符号化/復号化処理におけるビットインタリーブ処理等に対応するため、ビット単位、バイト(8ビット)単位、ワード(32ビット)単位など任意の単位でオフセットを計算可能である。
よって、読み出しアドレスジェネレータ40は、出力時にはオフセットアドレス単位レジスタ(r_unit)の値を用いて、メモリのアドレス単位に整形(シフト)してから出力するシフト回路40a2を備える。この時、ビット単位やバイト単位でのオフセットアドレス生成だった場合は、所望のビット(バイト)が読み出した32ビットデータ中のどこにマッピングされているかのビット位置情報を格納しておくためのビットシフト用FIFO40a3も備える。
メモリから読み出されたデータ(RDAT)は、読み出しデータFIFO回路41、読み出しデータパッキング回路42を介して、専用ALU(演算器)側に転送される。メモリから読み出したデータ(RDAT)は読み出しデータFIFO回路41に順に格納され、ビットシフト用FIFOのビット位置情報の値を用いて、所望のビットがLSB側に配置されるようにシフト回路40a2にてビットシフトしたものを読み出しデータパッキング回路42に転送する。
この時、ビットシフト用FIFO40a3や読み出しデータ用のFIFOがあふれないように、各FIFOの容量に従って、アドレスジェネレータ40側の読み出しアクセス発行タイミングを制御する。読み出しデータパッキング回路42では、専用演算器(ALU)22側からCR2もしくはCR3レジスタを用いてデータが読み出された場合、指定された読み出しデータサイズ(RSIZE)の値に従って、現在、読み出しデータパッキング回路内に残っているデータ(残りデータレジスタ)を右シフトする。
すなわち、読み出したデータサイズ(RSIZE)分だけデータが除去され、残ったデータがLSB側に格納される。このとき、現在、読み出しデータパッキング回路内に残っているデータサイズ(データサイズレジスタ)と読み出しデータサイズ(RSIZE)との差から、残ったデータの有効ビット数が32ビット以上であれば、読み出しデータFIFO回路41側からの読み出しデータは取得しない。
一方、残ったデータの有効ビット数が32ビット未満になる場合に、次の読み出しデータを読み出しデータFIFO回路41側から取得する。取得した読み出しデータは、残ったデータサイズ分だけ左シフトし、残ったデータのMSB側に結合して、結合されたデータを次のサイクルで専用演算器(ALU)22側から読み出せるようにデータレジスタ(残りデータレジスタ)に格納しておく。
このような読み出しデータパッキング回路42を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため(プロセッサ側でのシフト演算処理は不要となるため)、専用演算器(ALU)22側のデータ処理単位(入力データサイズ)が32ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。
ここで、専用演算器(ALU)22側から所望の処理データサイズ(RSIZE)を出力できない命令の場合(PERM命令など)は固定サイズ設定レジスタ(r_mode,r_size)を用いて固定サイズ設定することも可能である。
なお、メモリ側のウェイト(Wait)等により、読み出しデータパッキング回路42内に所望のデータがまだ存在しない(読み出しデータFIFO回路41も空の状態の)場合は、読み出しデータパッキング回路42やレジスタファイル(REG)23を介して専用演算器(ALU)22側のコプロセッサ命令をウェイト(Wait)させるようなウェイト(Wait)制御機構も備えることにより、正常にコプロセッサ命令処理を継続することができる。
(オフセットアドレスジェネレータの構成および動作)
図13は、図12に示した読み出しアドレスジェネレータ40内のオフセットアドレスジェネレータ80のより詳しい構成について示す説明図である。オフセットアドレスジェネレータ80は、種々の無線方式の符号化/復号化処理における種々のビットインタリーブ処理(ブロックインタリーブ処理)を高速かつ容易に実現するために、内部に2つのオフセットアドレス計算ブロック(A,B)とその2つの出力を加算する1個の加算器を備える。
そして、オフセットアドレスジェネレータ80の各オフセットアドレス計算ブロック(A,B)は、それぞれ更に2つのアドレス演算器81〜82(A1,A2)および83〜84(B1,B2)を内部に備える構成である。すなわち、オフセットアドレスジェネレータ80は計4個のアドレス演算器81〜84(A1,A2,B1,B2)を備える。
各々のアドレス演算器81〜84(A1,A2,B1,B2)は、それぞれ、初期ポインタレジスタ(r_ptr_xx)、ステップレジスタ(r_step_xx)、メモリ長レジスタ(r_len_xx)、カウント数レジスタ(r_cnt_xx)等の制御レジスタを備える。
ここで、実際にアドレスを出力するメイン側のアドレス演算器81,83(A1,B1)の動作としては、まず、初期ポインタ(r_ptr_X1)の値を初期値として、アドレス出力するたびに、その値が更新される。通常は、アドレス出力するたびに、現在のアドレスに対してステップ数(r_step_X1)分だけ加算し、メモリ長サイズ(r_len_X1)で剰余(Modulo)演算したものが次のアドレスポインタ81a,83aの値となる。ただし、アドレス出力回数がカウント数レジスタ(r_cnt_X1)の値に達するごとに、メイン側ではなくサブ側のアドレス演算器(A2,B2)で計算されたアドレスにアドレスポインタ81a,83aの値を更新する。
一方、サブ側のアドレス演算器82,84(A2,B2)でも、まず、初期ポインタ(r_ptr_X2)の値を初期値として、サブ側は、カウント数レジスタ(r_cnt_X2)の回数分だけアドレス出力するたびに、その値が更新される。現在のアドレスに対してステップ数(r_step_X2)分だけ加算し、メモリ長サイズ(r_len_X1)で剰余(Modulo)演算したものが次のサブ側のアドレスポインタ82a,84aの値となる。
このように、メイン側のアドレスポインタを任意のアクセスごとにサブ側で計算した値に更新でできるように1つのオフセットアドレス計算ブロック(A,B)ごとに内部に2つのアドレス演算器を備えるのは、後述するブロックインタリーブの処理等で、例えば、1列分のアドレス出力が終了して戻ってきた場合など、次の列にオフセットを変えて再度アクセスすることに対応するためである。
そして、オフセットアドレスジェネレータ80を、このような2つのアドレス演算器を内部に備えるアドレス計算ブロック(A,B)を2つ備え、両者の出力アドレスを加算できる構成とすることで、1ビット/サイクルの処理スループットで、種々のビットインタリーブ処理やブロックインタリーブ処理に対応できるような2次元的なアドレス生成が可能となる。
2つのアドレス計算ブロック(A,B)は、例えば、1つはブロックインタリーブ処理の行アドレス計算用に、もう1つは列アドレスの計算用に使用するなど、2次元的なアドレス生成が可能である。
図14は、図13に示したオフセットアドレスジェネレータ80によって行われる、無線通信の符号化/復号化処理における一般的なインタリーブ処理の例を示す説明図である。図14に示すように、一般的なインタリーブ処理では、まずビットインタリーブ処理として、入力データ系列を複数のブロックに分け、異なるブロックから順番にデータを出力するように出力データ系列を構成することで、近くのデータが連続して出力されないようにする。
そして、各ブロックからのデータ出力順は、それぞれのブロックでブロックインタリーブ処理することにより、ブロック内での入力データ順と出力データ順も異なるようにする。ブロックインタリーブ処理としては、例えば、あるM行N列分のデータブロックに対して、入力(書き込み)側は行ごとに書いていき、出力(読み出し)側は列ごとに読み出すことでデータ順を並び変える処理である。
ここで、種々の無線方式によっては、M行N列の書き込み開始行や読み出し開始列をブロックごとに変更することによって、そのランダム性を向上させているものや、最後の出力系列時に各ブロックから出力する順番を巡回(巡回シフト処理)させているものも存在する。また、M行N列のMやNの値も無線方式やその内部パラメータ等に依存して様々である。
本実施形態における、図12および図13に示したスプリットトランザクション対応の読み出しアドレスジェネレータ40により、図14に示したような符号化処理におけるビットインタリーブ処理(ブロックインタリーブ処理)やその反対の復号化処理におけるビットデインタリーブ処理(ブロックデインタリーブ処理)に、対応するアドレスパタンを連続的に生成することができ、1ビット/サイクルの処理スループットで対応できるようになる。
メモリ上には入力データ系列がそのビット順で格納されていて、図14に示したようなインタリーブ処理を行う場合、例えば、図12に示したアドレス計算ブロックA側では入力系列の行アドレスを、アドレス計算ブロックB側では入力系列の列アドレスを計算することで実現する。具体的には、例えば、アドレス演算器A1にてブロック間の行アドレスを計算し、アドレス演算器A2にてブロック内の行アドレスオフセットを計算する。
そして、アドレス演算器B1,B2にて、各ブロック内の列アドレス(列アドレスオフセット)を計算することで1ビット/サイクルの処理スループットでのアドレス生成が実現可能である。
すなわち、1サイクルごとに1ブロック分のアドレス数分をジャンプできるようにアドレス演算器A1用のステップ数(r_step_A1)やメモリ長(r_len_A1)を設定し、全ブロック分生成して1ブロック目に戻ってきたタイミングでブロックインタリーブのM行のうち1行分進めるように、各カウント値(r_cnt_A1,r_cnt_A2)やアドレス演算器A2側のステップ数(r_step_A2)を設定する。また、全ブロックの1列分生成したタイミングでブロックインタリーブのN列のうち1列分ずつ進めるように、アドレス計算ブロックB側の制御レジスタを設定する。
図15は、図10に示したメモリコントローラ20〜21のメモリ読み出し用各回路で、CR2またはCR3レジスタを介してメモリにデータを書き込む場合の動作シーケンス例を示す説明図である。
図15では、コプロセッサ11からCR2またはCR3レジスタを介してメモリからインタリーブ処理のビット順にデータを読み出し、読み出した順番でデータを整形してCR2またはCR3レジスタを介してメモリにデータを書き込む場合の例を示している。
まず、コプロセッサのパラメータレジスタ設定命令により、メモリコントローラ20〜21(LMC,SMC)内の各アドレスジェネレータ30および40にパラメータ設定と起動を行う(ステップS201)。特に、読み出し側のメモリコントローラにはインタリーブ処理のアドレスパタンに対応できるよう、各アドレス演算器(A1,A2,B1,B2)に対する制御レジスタ設定を行う。
読み出し側のメモリコントローラは、設定されたアドレス生成パタンにて自立的にメモリからデータを読み出し、読み出しデータFIFO回路41に処理データを順次格納する(ステップS202)。この時、読み出した32ビットデータ中のどこに所望のビットがマッピングされているかはアドレス発行と同時にビットシフト用FIFOに格納されているため、その値を用いて所望のビットデータがLSB側に配置されるよう読み出しデータFIFO回路41の出力にてデータのシフト処理を行う(ステップS203)。
そして、インタリーブ処理を行う場合、専用演算器(ALU)22ではレジスタ間転送命令(MASK&MOVE)(CR2(3)=MSKC2C(CR2(3),32))をfor文などで繰り返す(ステップS204)。
ここで、インタリーブ処理の場合、転送に必要なデータは読み出しデータの32ビット中のLSB側にのみ格納されているため、読み出し側はレジスタ間転送命令の即値(imm5)を32に設定することで32ビットのデータサイズで行い、書き込み側は1ビットずつパッキング処理されるよう、書き込みデータパッキング回路32のw_mode,w_sizeレジスタを用いて1ビットの固定サイズ設定を行う(ステップS205)。
このようにデータサイズ設定した上で、メモリコントローラ間におけるレジスタ間転送命令を繰り返すことにより、図15に示すような動作シーケンスとなる。メモリコントローラ20〜21では、書き込みデータパッキング回路32にて、転送データをシフトしながらパッキング処理を行い、32ビット単位になったら書き込みデータFIFO回路31を介して所望のメモリへデータを順に出力する(ステップS206)。
このようなメモリコントローラ20〜21(アドレスジェネレータ30および40、データFIFO回路31および41,データパッキング回路32および42)の機能により、本実施形態のコプロセッサ11は、1ビット/サイクルの処理スループットでインタリーブ処理(デインタリーブ処理)を実施することが可能となる。
特に、読み出しアドレスジェネレータ40や読み出しデータFIFO回路31を用いることで、制御プロセッサ10やコプロセッサ11における演算処理に依存せずにメモリ上のデータをパイプライン的に先読み可能であり、かつ、種々のインタリーブパタンに対応するアドレス順でアドレスを発行可能であることが、柔軟かつ高速なインタリーブ処理実現のポイントである。
(第1の実施形態の処理フロー)
図16Aは、図1および図3に示した符号化/復号化処理プロセッサ100における符号化処理の一例を示す説明図である。ここで示した例の場合、送信側の符号化処理としては、Layer2(MAC)処理を行う汎用プロセッサ201から転送された送信データ系列に対して、スクランブリング(ステップS301)、畳み込み符号化(ステップS302)、パンクチャリング(ビットの除去、ステップS303)、インタリーブ処理(ステップS304)の順で処理を実施し、符号化後のデータ系列を、変調処理を行うモデムモジュール206に共有メモリ経由で転送する。
図16Bは、図1および図3に示した符号化/復号化処理プロセッサ100における復号化処理の一例を示す説明図である。ここで示した例の場合の復号化処理としては、モデムモジュール206から転送された復調後の受信データ系列に対して、デインタリーブ処理(ステップS311)、デパンクチャリング(ビットの付加、ステップS312)、ビタビ復号化(ステップS313)、デスクランブリング(ステップS314)の順で処理を実施し、復号化後のデータ系列をLayer2(MAC)処理を行う汎用プロセッサ201に共有メモリ203を経由して転送する。
図17は、図1および図3に示した符号化/復号化処理プロセッサ100で図16Aに示した処理を行う場合の、ステップS301〜304に示した符号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
送信データ系列に対する符号化処理の場合、汎用プロセッサ(CPU)201またはリソースマネージャ202から処理起動コマンドを受信すると(ステップS401)、符号化/復号化処理プロセッサ100は、共有メモリコントローラ21を用いて符号化/復号化処理(コーデック)モジュール外部の共有メモリ203から入力データ系列を読み出しながら専用演算器(ALU)22にてスクランブリング処理を行い(ステップS402)、ローカルメモリコントローラ20を用いてデータメモリ(ローカルメモリ)102にデータを格納する(ステップS403)。
符号化/復号化処理プロセッサ100は、次に、ローカルメモリコントローラ20を用いてデータメモリ(ローカルメモリ)102からデータを読み出しながら専用演算器(ALU)22にて畳み込み符号化処理を行い(ステップS404)、その処理結果のデータを再びデータメモリ(ローカルメモリ)102に格納する(ステップS405)。
符号化/復号化処理プロセッサ100は、次に、これと同様に、ローカルメモリコントローラ20とビット連接/並び替え命令(PERM)を用いてパンクチャ処理を実施し(ステップS406)、その処理結果のデータを再びデータメモリ(ローカルメモリ)102に格納する(ステップS407)。
符号化/復号化処理プロセッサ100は、次に、ローカルメモリコントローラ20を用いてデータを順に読み出すことで、図15に示したインタリーブ処理を行い(ステップS408)、共有メモリコントローラ21を用いてインタリーブ後のデータ系列を符号化/復号化処理(コーデック)モジュール外部の共有メモリ203に格納する(ステップS409)。
以上の処理の完了後、符号化/復号化処理プロセッサ100は、処理完了通知を汎用プロセッサ(CPU)201またはリソースマネージャ202に通知する(ステップS410)。符号化/復号化処理プロセッサ100は、以上のような処理シーケンスを繰り返すことによって、送信データ系列に対する符号化処理を実現することが可能である。
図18は、図1および図3に示した符号化/復号化処理プロセッサ100で図16Bに示した処理を行う場合の、ステップS311〜314に示した復号化処理の処理シーケンス例をより詳細に示すシーケンス図である。
受信データ系列に対する復号化処理の場合、汎用プロセッサ(CPU)201またはリソースマネージャ202から処理起動コマンドを受信すると(ステップS451)、符号化/復号化処理プロセッサ100は、共有メモリコントローラ21を用いて符号化/復号化処理(コーデック)モジュール外部の共有メモリ203から入力データ系列を順に読み出すことで、デインタリーブ処理を行う(ステップS452)。
ここで、復号化処理時は、1ビットデータが軟値(尤度値)として8ビットの固定小数点データとして格納されているため、アドレス単位設定レジスタ(r_unit)には8ビットモードを設定し、8ビット/サイクル(1データ/サイクル)の処理スループットでデータが転送される。そしてデインタリーブ処理済のデータを、ローカルメモリコントローラ20を用いてデータメモリ(ローカルメモリ)102に格納する(ステップS453)。
符号化/復号化処理プロセッサ100は、次に、ローカルメモリコントローラ20とビット連接/並び替え命令(PERM)を用いてデパンクチャ(ビット付加)処理を実施する(ステップS454)。そして、処理後のデータを共有メモリコントローラ21を用いて符号化/復号化処理(コーデック)モジュール内部の共有メモリ105に格納する(ステップS455)。
符号化/復号化処理プロセッサ100は、次に、ビタビ復号処理のために、ビタビ処理回路104に対してメモリアドレスや生成多項式などのパラメータを行い、ビタビ処理回路104を起動する(ステップS456)。ビタビ処理回路104は、設定されたパラメータに従い、符号化/復号化処理(コーデック)モジュール内部の共有メモリ105からデータを読み出しながらビタビ復号化処理を行い(ステップS457)、処理後の結果データも同様の共有メモリ105上に格納する(ステップS458)。処理完了割り込みにて符号化/復号化処理プロセッサ100にビタビ復号化処理完了を通知する(ステップS459)。
最後に、符号化/復号化処理プロセッサ100は、共有メモリコントローラ21を用いて符号化/復号化処理(コーデック)モジュール内の共有メモリ105からデータを読み出しながら(ステップS460)、専用演算器(ALU)22にてデスクランブル処理を行い、データを符号化/復号化処理(コーデック)モジュール外部の共有メモリ203に格納する(ステップS461)。
以上の処理完了後、符号化/復号化処理プロセッサ100は、処理完了通知を汎用プロセッサ(CPU)201またはリソースマネージャ202に通知する(ステップS462)。符号化/復号化処理プロセッサ100は、以上のような処理シーケンスを繰り返すことで受信データ系列に対する復号化処理を実現することが可能である。
(専用演算器(ALU)のマッピング構成例)
図19は、図1および図3に示した符号化/復号化処理プロセッサ100における畳み込み符号化処理やスクランブリング(デスクランブリング)処理を、コプロセッサ11内の専用演算器(ALU)22にマッピングして処理する場合のマッピング構成例、すなわち、パラメータレジスタ60の設定例を示す説明図である。
図19に示す例では、IEEE 802.16e(WiMAX)規格における畳み込み符号化処理の場合、図7に示した畳み込み符号化器51をこの規格に対応する畳み込み符号化器501として動作させるには、動作モード(mode)として0x2(符号化率1/2設定)を、生成多項式(poly)として0x6CE4を設定する。これによって、畳み込み符号化器51を、IEEE 802.16e(WiMAX)規格に対応する畳み込み符号化器501として動作させることができる。
また、図6に示したスクランブリング回路50をIEEE 802.11a(無線LAN)規格におけるスクランブリング(デスクランブリング)処理に対応するスクランブリング回路502として動作させるには、動作モード(mode)は0x2を、生成多項式(poly)は0x1200を設定するとよい。これによって、スクランブリング回路50はIEEE 802.11a(無線LAN)規格に対応するスクランブリング回路502として動作する。
このように、専用演算器(ALU)22内の各演算器は、パラメータ設定を変更するだけで、既に規格化されている種々の無線方式における符号化/復号化処理に対応できる。そして、今後予測される仕様変更等にも十分に対応しうる柔軟性も備えている。
図20は、図1および図3に示した符号化/復号化処理プロセッサ100における畳み込み符号化処理やスクランブリング(デスクランブリング)処理を行う場合のプロセッサ処理プログラムの記述例を示す説明図である。
図17のステップS301および401で示したスクランブリング処理の場合、まず、パラメータレジスタ設定命令を用いて、共有メモリコントローラ21への読み出しアドレスジェネレータ40の設定と、ローカルメモリコントローラ20への書き込みアドレスジェネレータの設定を行う(ステップS401a)。
ここで、1アドレスは32ビット分のビットデータとなるため、処理データビットサイズ(num_bit_size)を32で割ったもの(num1)が両者のアドレス生成回数となる。ここで、0x218000は読み出す共有メモリ203の先頭アドレス、0x118000は書き込むデータメモリ(ローカルメモリ)102の先頭アドレスの例を示している。
次に、専用演算器(ALU)22のスクランブリング回路50用のパラメータレジスタ60設定として、動作モード設定、TAPの初期値設定、生成多項式(poly)の設定を実施する(パラメータレジスタ設定命令、ステップS401b)。その後、この例では、先ほどパラメータ設定した共有メモリコントローラ21およびローカルメモリコントローラ20を起動する(ステップS401c)。
最後に、コプロセッサ間の演算命令である8ビット分のスクランブリング処理命令(SCRAM)を4回、すなわち32ビット分のスクランブリング処理命令(SCRAM)をfor文で処理データビットサイズ分だけ繰り返すことにより、所望のスクランブリング処理を実現する(ステップS401d)。
ここで、ステップS401d中にある「scram(cr2,cr3,8);」は、「cr2=scarm(cr3,8);」のことであり、共有メモリコントローラ21側からのデータ(CR3レジスタの値)に対して、スクランブリング処理を行い、ローカルメモリコントローラ20側にCR2レジスタを介してデータを書き込むという動作を示している。
図20は、スクランブリング(デスクランブリング)処理の例を示したものであるが、その他の、畳み込み符号化処理やビット連接/並び替え処理、インタリーブ処理等も同じような形でプログラムを記述することが可能である。
(第2の実施形態)
本発明の第2の実施形態では、無線通信装置301が、第1の実施形態の無線通信装置1の構成に加えて、送信データおよび受信データのインタリーブ/デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路404cを備える。そして符号化/復号化処理プロセッサ400は、受信データの誤り訂正復号化、および送信データおよび受信データのインタリーブ/デインタリーブ処理以外の処理を行うものとした。
この構成によっても、第1の実施形態と同一の効果を得ることができ、さらに符号化/復号化処理プロセッサ400の構成を簡素にすることが可能となる。
以下、これをより詳細に説明する。
図21は、本発明の第2の実施形態に係る符号化/復号化処理プロセッサ400を利用した無線通信装置301の構成を示す説明図である。図3で示した無線通信装置1の符号化/復号化処理(コーデック)モジュール200が、別の符号化/復号化処理(コーデック)モジュール220に置換されている点以外は、無線通信装置301の構成は無線通信装置1と同一である。
符号化/復号化処理(コーデック)モジュール220は、図3で示した符号化/復号化処理(コーデック)モジュール200のプロセッサ100が、別の符号化/復号化処理プロセッサ400に置換されている点と、ビタビ処理回路104aおよびターボ処理回路104bと並列にインタリーブ処理回路404c(DMAコントローラ)を備えている点以外は、符号化/復号化処理(コーデック)モジュール200と同一の構成を有する。
インタリーブ処理回路404cは、種々の無線方式における種々のインタリーブ処理およびデインタリーブ処理(以後インタリーブ/デインタリーブ処理という)を実現するための回路である。即ち、符号化/復号化処理プロセッサ400では、符号化/復号化処理のうち、その処理量が膨大でプロセッサ処理では処理が不足するビタビ復号化、ターボ復号化、および並列演算が難しいインタリーブ/デインタリーブ処理の各々について専用ハードウェアであるビタビ処理回路104a、ターボ処理回路104b、およびインタリーブ処理回路404cを用いて処理を行う。
符号化/復号化処理プロセッサ400では、符号化処理におけるインタリーブ処理や、復号化処理におけるデインタリーブ処理については、専用のインタリーブ処理回路(DMAコントローラ)を用いて処理を実施することができる。
このように、ビットごとの並列演算が難しく最大でも1ビット/サイクルでの処理スループットとなるインタリーブ/デインタリーブ処理については専用ハードウェア処理とすることで、符号化/復号化処理プロセッサ400では、例えば前のデータブロックに対するインタリーブ処理を実施しながら、次のデータブロックに対する畳み込み符号化処理を符号化/復号化処理プロセッサにて同時に実行することが可能となるため、並列処理による高速化や、処理の負荷分散による最大処理スループットの向上が可能となる。
図22は、図21で示した符号化/復号化処理プロセッサ400のより詳しい構成について示す説明図である。符号化/復号化処理プロセッサ400は、図1で示した符号化/復号化処理プロセッサ100のコプロセッサ11が、別のコプロセッサ411に置換されている点以外は、符号化/復号化処理プロセッサ100と同一の構成を有する。
さらに図23は、図22で示したコプロセッサ411のより詳しい構成について示す説明図である。コプロセッサ411は、コプロセッサ11のローカルメモリコントローラ(LMC)20および共有メモリコントローラ(SMC)21が、各々別のローカルメモリコントローラ(LMC)420および共有メモリコントローラ(SMC)421に置換されている点以外は、コプロセッサ11と同一の構成を有する。
図24は、図23に示したローカルメモリコントローラ(LMC)420および共有メモリコントローラ(SMC)421のより詳しい構成について示す説明図である。ローカルメモリコントローラ(LMC)420および共有メモリコントローラ(SMC)421では、第1の実施形態におけるローカルメモリコントローラ(LMC)20および共有メモリコントローラ(SMC)21の読み出しアドレスジェネレータ40と読み出しデータFIFO回路41が、各々別の読み出しアドレスジェネレータ44と読み出しデータFIFO回路45に置換されている以外は、第1の実施形態と同一である。
第1の実施形態に係る符号化/復号化処理プロセッサ100では、種々の無線通信方式におけるインタリーブ/デインタリーブ処理に1ビット/サイクルの処理スループットで対応できるように、ローカルメモリコントローラ(LMC)20および共有メモリコントローラ(SMC)21が各々内部に備える読み出しアドレスジェネレータ40が、2つのアドレス演算器を内部に備えるオフセットアドレス計算ブロックを2個備え、また32ビットデータ中の所望のビット位置をLSB側にシフトするためのビットシフト用FIFOやシフト回路等を備えていた。
それに対して、第2の実施形態においては、インタリーブ処理やデインタリーブ処理については専用のインタリーブ処理回路404cによって処理するので、符号化/復号化処理プロセッサ400にて処理する必要はない。したがって、ローカルメモリコントローラ(LMC)420および共有メモリコントローラ(SMC)421では、読み出し側の読み出しアドレスジェネレータ44の構成が第1の実施の形態における読み出しアドレスジェネレータ40とは異なる。書き込み側の書き込みアドレスジェネレータ30、書き込みデータFIFO回路31、書き込みデータパッキング回路32の構成や動作は第1の実施の形態と同一である。
第2の実施の形態における読み出しアドレスジェネレータ44は、書き込みアドレスジェネレータ30とほぼ同様の構成であり、スタートレジスタ(r_start)、ベースアドレスレジスタ(r_base)、初期ポインタレジスタ(r_ptr)、ステップレジスタ(r_step)、メモリ長レジスタ(r_len)、アクセス回数レジスタ(r_cnt)等の制御レジスタ44a1を備える。また、実際にアドレスを計算するための、カレントアドレスポインタレジスタ44a3、加算器(2つ)、剰余演算器(比較器と減算器)、アクセス回数カウント用の比較器、減算器などを含むアドレス演算器44a2を備える。
第2の実施の形態における読み出しアドレスジェネレータ44は、コプロセッサのパラメータ設定命令にてベースアドレスレジスタ(r_base)、初期ポインタレジスタ(r_ptr)、ステップレジスタ(r_step)、メモリ長レジスタ(r_len)、アクセス回数レジスタ(r_cnt)等の制御レジスタ44a1に値が設定され、スタートレジスタ(r_start)設定により起動されると、メモリへの読み出しアドレスを自立的に生成し、アクセス回数レジスタ(r_cnt)分だけ連続的に発行する。
読み出しアドレスジェネレータ44は、読み出しアドレスを投機的に発行することにより、読み出し時のスプリットトランザクションに対応する。基本的には、ベースアドレス(r_base)に対してカレントアドレスポインタ分を加算したアドレスが発行される。
カレントアドレスポインタレジスタ44a3は、初期ポインタ(r_ptr)の値を初期値として、アドレス出力するたびに、その値が更新される。アドレス演算器44a2は、アドレス出力するたびに、現在のアドレスに対して32ビットアドレス単位でステップ数(r_step)分だけ加算し、メモリ長サイズ(r_len)で剰余(Modulo)演算したものを次のカレントアドレスポインタとする。
このような構成により、任意のメモリ領域に対して、昇順や降順での連続したアドレスでのデータの読み出し、ステップ数(r_step)を制御することで任意のアドレス間隔での読み出し、また、メモリ長(r_len)を制御することでメモリの途中から読み出し始めて最後まで読み出したら先頭に戻っての読み出し、など、柔軟な読み出しアドレスパタンを生成することができる。
ただし、第1の実施の形態で示したようなインタリーブ/デインタリーブ処理を1ビット/サイクルの処理スループットで実現する2次元的なアドレスパタンを生成することはできない(インタリーブ処理回路404cを別に備えているので、その必要はない)。
次に、メモリから読み出した読み出しデータ側の処理について説明する。メモリから読み出したデータ(RDAT)は、読み出しデータFIFO回路45、読み出しデータパッキング回路42を介して、専用演算器(ALU)22側に転送される。メモリから読み出したデータ(RDAT)は読み出しデータFIFO回路45に順に格納され、順次、読み出しデータパッキング回路42に転送される。
第2の実施形態では、読み出しアドレスジェネレータ44におけるアドレス生成単位がメモリアドレスと同じ32ビット単位のため、所望のビットをLSB側にシフトするビットシフト処理は行わない。
読み出しデータパッキング回路42では、第1の実施の形態と同様、専用演算器(ALU)22側からCR2もしくはCR3レジスタを用いてデータが読み出された場合、指定された読み出しデータサイズ(RSIZE)の値に従って、現在、読み出しデータパッキング回路内に残っているデータ(残りデータレジスタ)を右シフトし、残ったデータの有効ビット数が32ビット以上であれば、読み出しデータFIFO回路45側からの読み出しデータは取得しない。
一方、残ったデータの有効ビット数が32ビット未満になる場合には、読み出しデータパッキング回路42は、次の読み出しデータを読み出しデータFIFO回路45側から取得する。取得した読み出しデータは、残ったデータサイズ分だけ左シフトし、残ったデータのMSB側に結合する。結合したデータを次に専用演算器(ALU)22側から読み出せるようにデータレジスタ(残りデータレジスタ)に格納しておく。
このような読み出しデータパッキング回路42を備えることで、自動的にデータのシフト処理とパッキング処理が行われるため(プロセッサ側でのシフト演算処理は不要となるため)、専用演算器(ALU)22側のデータ処理単位(入力データサイズ)が32ビット単位以外であっても、処理サイクル数のオーバヘッドなく、ストリームデータ処理することが可能となる。
ここで、専用演算器(ALU)22側から所望の処理データサイズ(RSIZE)を出力できない命令の場合(PERM命令など)は固定サイズ設定レジスタ(r_mode,r_size)を用いて固定サイズ設定することも可能である。
(第1および第2の実施形態による効果)
以上で説明した第1および第2の実施形態に係る符号化/復号化処理プロセッサ100および400によって得られる各々の効果について説明する。
第1の効果は、無線通信システムにおける符号化/復号化処理モジュールにおいて、複数の無線通信方式における種々の符号化/復号化処理に柔軟に対応できることである。その理由は、本発明に係る符号化/復号化処理プロセッサ100および400は、一般的な制御プロセッサに符号化/復号化処理(ビット/バイト演算処理)専用のコプロセッサ11または411を接続し、そのコプロセッサ11の論理演算器(ALU)22が、動作モードなど処理のパラメータ設定可能(プログラマブル)で、かつ、1サイクルで複数のビット分を並列に処理可能な、スクランブリング回路50、畳み込み符号化器51、CRC符号化器52、ビット連接(並び替え)回路53などを備えるためである。
符号化/復号化処理プロセッサ100および400は、このように、パラメータ設定可能な種々の符号化/復号化処理演算器を、元々柔軟に処理可能な制御プロセッサのコプロセッサとして実現することによって、複数の無線方式における種々の符号化/復号化処理(ビット/バイト演算処理)に柔軟に、かつ高速に対応可能となるのである。
また、コプロセッサ11がメモリにアクセスするためのメモリコントローラ20〜21を内蔵し、各々のメモリコントローラが、符号化/復号化処理を行うコプロセッサ演算命令と実際にメモリアクセスするサイクルとを独立させるための各データFIFO回路31および41や、コプロセッサ11の論理演算器(ALU)22での処理ビット数に応じて、読み出しデータや書き込みデータのパッキング処理を行うデータパッキング回路32および42を備えることも、符号化/復号化処理プロセッサ100および400が種々の符号化/復号化処理に対応するための柔軟性を向上させることが可能である理由の1つである。
即ち、符号化/復号化処理プロセッサ100および400は、符号化/復号化処理専用のコプロセッサ演算命令にて論理演算器(ALU)22での処理ビット数を指定でき、データパッキング回路32および42によってその処理ビット数の変化をサイクルオーバヘッドなしにデータの読み出し時や書き込み時に吸収することが可能であるため、種々の無線方式における符号化/復号化処理(ビット/バイト演算処理)に柔軟に対応可能となるのである。
さらに、第1の実施の形態におけるメモリコントローラ20〜21内の読み出しアドレスジェネレータ40を用いることで、種々の無線方式における種々のインタリーブ処理(デインタリーブ処理)に1ビット/サイクルの処理スループットで柔軟に対応可能であるという利点もある。
その利点は、この読み出しアドレスジェネレータ40では、2つのアドレス演算器を内蔵するオフセットアドレス計算ブロックを2個備え、両者の出力アドレスを加算して出力する構成とすることで、種々のブロックインタリーブ処理を含む2次元的なインタリーブアドレスパタンに、1回の制御レジスタ設定で柔軟に対応可能なために生じる。
そして、この読み出しアドレスジェネレータ40内にアドレス単位を1ビット、8ビット、32ビットなど可変にできるモード設定レジスタを備えることで、送信側の1ビット/データのインタリーブ処理や、受信側の8ビット/データのデインタリーブ処理等にも柔軟に対応可能であるという利点を得ることもできる。
第2の効果は、無線通信装置1における符号化/復号化モジュール200において、符号化および復号化の処理を柔軟性を重視して符号化/復号化処理プロセッサ100および400によるソフトウェア処理で実現するように構成した場合でも、複数のビット(バイト)分を同時に演算するなど、メモリアクセスレイテンシも含めて符号化/復号化処理を高速に実現可能なことである。
その理由は、符号化/復号化処理プロセッサ100および400では、一般的な制御プロセッサに符号化/復号化処理(ビット/バイト演算処理)専用のコプロセッサ11を接続し、コプロセッサからメモリへのアクセスには、メモリアクセスレイテンシを隠蔽できるアドレス生成機能やFIFO機能、データパッキング機能を内蔵したメモリコントローラ20〜21を備えているためである。
このようなメモリコントローラ20〜21を用いることによって、コプロセッサ命令による符号化/復号化処理(ビット/バイト演算処理)と、メモリアクセスを独立して並列に実施することが可能となるため、メモリアクセスレイテンシを隠蔽でき、一般的なプロセッサ処理に比べて高速に処理可能である。
また、コプロセッサ11内の論理演算器(ALU)22として、動作モード等をパラメータ設定可能(プログラマブル)で、かつ、1サイクルで複数ビットを並列に処理可能な、スクランブリング回路50、畳み込み符号化器51、CRC符号化器52、ビット連接(並び替え)回路53などを備えることも高速化が可能な理由の1つである。
一般的なプロセッサによるソフトウェア処理では、1ビット分のスクランブリング処理や畳み込み符号化処理、CRC符号化処理にそれぞれ10サイクル程度必要であり、更に8ビット分処理するためには80サイクル程度のオーダーで処理サイクル数が必要である。
これに対して符号化/復号化処理プロセッサ100および400では、コプロセッサ論理演算器(ALU)22やメモリコントローラ20〜21を活用するコプロセッサ処理命令を使用することにより、例えば8ビット/サイクルの処理スループットで、スクランブリング処理(デスクランブリング処理)、畳み込み符号化処理、CRC符号化処理(CRC判定処理)などの符号化/復号化処理を実現することが可能である。
さらに、第1の実施の形態におけるメモリコントローラ20〜21内の読み出しアドレスジェネレータ40およびデータパッキング回路(PACKER)42を備えることにより、種々の無線方式におけるインタリーブ処理(デインタリーブ処理)を1ビット/サイクルの処理スループットで実現可能であるという利点もある。
一般的なプロセッサ処理では1ビット分のインタリーブアドレスの計算に10サイクル程度の処理サイクル数が必要であり、かつ、メモリ間のデータコピー処理にもメモリアクセスレイテンシ分の処理サイクル数が必要となるため、1ビット/サイクルで様々なインタリーブ処理を実現できることは本実施形態の大きな利点となる。
本実施形態の最大の効果は、これら第1の効果である複数の無線方式に対応する柔軟性という利点と、第2の効果である符号化/復号化処理を8ビット/サイクルや1ビット/サイクルの処理スループットで実現する高速化という2つの利点を、同時に実現できることである。
その理由は、以下の3点を実現していることの相乗効果によるものである。1点目は、コプロセッサの論理演算器(ALU)22として、パラメータ設定可能で、かつ、1サイクルに複数ビット分を処理可能な畳み込み符号化器などの符号化/復号化処理回路を複数備えることにより、符号化/復号化処理自体の柔軟性と高速性を実現している点である。
2点目は、コプロセッサ演算処理とは独立して並列に動作するストリームアクセスを前提としたメモリコントローラ20〜21を備えており、一般的には高速化が難しいプロセッサのメモリアクセスレイテンシを隠蔽できる点である。
3点目は、並列に動作する論理演算器(ALU)22とメモリコントローラ20〜21の間で処理オーバヘッドが発生しないように、メモリ側のデータバス幅と専用ALU(演算器)側の命令ごとの処理ビット数に応じてデータをシフトしパッキングするデータパッキング回路32および42や、データを一時的に格納するFIFO31および41、そしてこのFIFOが空もしくは満杯になった場合でも、コプロセッサ側の処理が破綻しないような待ち制御機構を備えているためである。以上3点の相乗効果により、符号化/復号化処理プロセッサ100および400は柔軟性と高速性とを両立させることができる。
第3の効果は、複数の無線方式における種々の符号化/復号化処理を、より低消費電力で、すなわち電力効率を高く実現できることである。
その理由は、符号化/復号化処理プロセッサ100および400では、コプロセッサ11内の論理演算器(ALU)22が備えるスクランブリング回路50、畳み込み符号化器51、CRC符号化器52、ビット連接(並び替え)回路53などの各々の演算回路を、動作モード等をパラメータ設定可能(プログラマブル)ではあり、1サイクルで複数ビットを並列に処理可能ではあるものの、回路構成としてはほとんど専用ハードウェアと同等の構成で実現しているためである。
すなわち、これらの演算回路は、複数の無線方式に対応できる程度の柔軟性を持つように構成されてはいるが、例えば8ビット/サイクルや1ビット/サイクルの処理スループットで実現可能な専用演算器構成としている。このことによって、処理性能と消費電力とのバランスに優れた、電力効率の高い符号化/復号化処理モジュールを実現可能である。
ここで、専用ハードウェア構成の場合は、それぞれ処理データの繰り返し数をカウントする制御用の回路が必要であるものの、本実施形態の符号化/復号化処理プロセッサ100および400においてはfor文などの繰り返し処理は、制御プロセッサ側に元々実装されているループ命令用のループ回路を共用して使用するため、コプロセッサ側には繰り返し制御用の回路は不要である(通常の命令や複数の符号化/復号化処理命令で共有可能)という利点もある。
また、処理量が膨大で、専用ハードウェア化した方が電力効率の高いビタビ復号処理やターボ復号処理については各々専用ハードウェアであるビタビ処理回路104aおよびターボ処理回路104bによって実現し、その他の符号化/復号化処理については柔軟性を重視して符号化/復号化処理プロセッサにて実現することなどのように、そのトレードオフに依存して全体のシステム構成を選択可能であり、電力効率を向上できることも本発明の利点である。
例えば、第2の実施形態として示した符号化/復号化処理プロセッサ400では、他の符号化/復号化処理と同一のプロセッサを用いて処理するとその処理量が不足する可能性があるインタリーブ処理やデインタリーブ処理については専用のハードウェア回路であるインタリーブ処理回路404cを用いて実現することで、より電力効率を向上させている。
すなわち、符号化/復号化処理プロセッサ400内のメモリコントローラ420〜421については、第2の実施の形態で示したように書き込みアドレスジェネレータ30と読み出しアドレスジェネレータ44とをほぼ同等の構成で実現することによって、第1の実施の形態に係る符号化/復号化処理プロセッサ100と比べて回路規模を削減でき、また、符号化/復号化処理プロセッサ400とインタリーブ処理回路404cとを並列動作可能なため、低いクロック周波数で動作させることができるという利点がある。
最後に、第4の効果は、複数の無線方式における種々の符号化/復号化処理において、将来的な仕様変更や仕様拡張にも柔軟に対応できることである。
その理由は、符号化/復号化処理プロセッサ100および400は、制御プロセッサと専用ハードウェア回路を組み合わせた構成ではなく、一般的な制御プロセッサ10に対して符号化/復号化処理(ビット/バイト演算処理)専用のコプロセッサ11を接続することで実現したことにより、1サイクル単位で処理(命令)をソフトウェアにて指定可能なためである。
すなわち、既存の無線方式における符号化/復号化処理の仕様変更により、その処理順序や処理パラメータが変更された場合や、仕様拡張により処理が追加された場合などにも、プロセッサのソフトウェア記述変更にて柔軟に対応できるという利点がある。
コプロセッサ11内の符号化/復号化処理(ビット/バイト処理)の演算器部分はそれぞれパラメータ設定可能な専用回路となっているが、一連の符号化/復号化処理における処理データ単位やループ回数などは制御プロセッサ10内のループ命令(ループ回路)で対応しているので、処理データ単位やループ回数などの変更には元々の制御プロセッサ10の機能で十分に対応できる。
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
上述した各々の実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
(付記1) 無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化/復号化処理プロセッサであって、
前記符号化および復号化処理専用のコプロセッサを有すると共に、
前記コプロセッサが、
外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、
前記動作モードおよび生成多項式に基づいて動作し、前記符号化および復号化処理に必要な演算を1サイクルで複数のビット分を並列に行う演算回路と
を備えることを特徴とする符号化/復号化処理プロセッサ。
(付記2) 前記コプロセッサが、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラを備え、
このメモリコントローラが、
外部から与えられたパラメータによって自立的にデータの読み書きを行う前記記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するFIFO(First In First Out)回路と、
前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを所定のビット数に揃えて出力するデータパッキング回路と
を備えることを特徴とする、付記1に記載の符号化/復号化処理プロセッサ。
(付記3) 前記メモリコントローラが、前記アドレスジェネレータ回路と、前記FIFO回路と、前記データパッキング回路とをデータ読み出し用とデータ書き込み用にそれぞれ備えることを特徴とする、付記2に記載の符号化/復号化処理プロセッサ。
(付記4) 前記データ書き込み用アドレスジェネレータ回路が、
初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタと、
前記初期ポインタの値を初期値として、アドレスを発行するたびに前記ステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器と
を備えることを特徴とする、付記3に記載の符号化/復号化処理プロセッサ。
(付記5) 前記データ読み出し用アドレスジェネレータ回路が、
複数のオフセットアドレス計算モジュールと、
そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器とを備えると共に、
前記オフセットアドレス計算モジュールが、第1および第2の前記アドレス演算器を備え、第1の前記アドレス演算器のアドレスポインタを外部から与えられたカウント数の値で一定回数ごとに第2の前記アドレス演算器で計算しているアドレスポインタの値に更新することを特徴とする、付記3に記載の符号化/復号化処理プロセッサ。
(付記6) 前記データ読み出し用アドレスジェネレータ回路が、
発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路と、
メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用FIFO回路と
を備えることを特徴とする、付記5に記載の符号化/復号化処理プロセッサ。
(付記7) 前記メモリコントローラが、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能と、
前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能と
を備えることを特徴とする、付記2に記載の符号化/復号化処理プロセッサ。
(付記8) 前記演算回路が、外部から与えられた前記動作モードおよび生成多項式に応じて、
スクランブリング処理、畳み込み符号化処理、CRC符号化処理およびビット連接/並び替え処理のうちいずれか1つ以上の処理を行う機能を備えることを特徴とする、付記1に記載の符号化/復号化処理プロセッサ。
(付記9) 外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化/復号化処理(コーデック)モジュールを備えると共に、
前記符号化/復号化処理(コーデック)モジュールが、
前記受信データのビタビ復号化およびターボ復号化を行う専用ハードウェアであるビタビ処理回路およびターボ処理回路のうち少なくとも1つ以上と、
前記受信データのビタビ復号化およびターボ復号化以外の処理を行う付記1ないし付記8のうちいずれか1項に記載の符号化/復号化処理プロセッサと
を備えたことを特徴とする無線通信装置。
(付記10) 前記符号化/復号化処理(コーデック)モジュールが、
前記送信データおよび前記受信データのインタリーブ/デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路を備えると共に、
前記符号化/復号化処理プロセッサが、前記受信データのビタビ復号化とターボ復号化、および前記送信データおよび前記受信データのインタリーブ/デインタリーブ処理以外の処理を行うことを特徴とする、付記9に記載の無線通信装置。
この出願は2011年2月10日に出願された日本出願特願2011−026885を基礎とする優先権を主張し、その開示の全てをここに取り込む。
無線通信装置に幅広く利用できる。特に、複数の無線方式に1つの装置で対応する無線通信装置に適する。さらに、そのような無線通信装置の小型軽量化および低コスト化、そして通信速度の高速化にも効果を発揮する。
1,301 無線通信装置
10 制御用プロセッサ
11,411 コプロセッサ
12 メモリセレクタ
13 プロセッサコントローラ
20,420 ローカルメモリコントローラ
21,421 共有メモリコントローラ
22 算術論理演算器(ALU)
22a 演算回路
23 レジスタファイル
24 コプロセッサコントローラ
30,30a,30b 書き込みアドレスジェネレータ
30a1,40a1,44a1 制御レジスタ
30a2,44a2 アドレス演算器
30a3,44a3 カレントアドレスポインタレジスタ
31,31a,31b 書き込みデータFIFO回路
32,32a,32b 書き込みデータパッキング回路
40,40a,40b,44 読み出しアドレスジェネレータ
40a2 シフト回路
40a3 ビットシフト用FIFO
40a4 加算器
41,41a,41b,45 読み出しデータFIFO回路
42,42a,42b 読み出しデータパッキング回路
50,502 スクランブリング回路(SCRAM)
51,501 畳み込み符号化器(CONV)
52 CRC符号化器(CRC)
53 ビット連接/並べ替え回路(PERM)
54 その他の演算回路
60 パラメータレジスタ
70 スクランブリング演算器
71 畳み込み符号演算器
72 CRC符号演算器
80 オフセットアドレスジェネレータ
81,82,83,84 アドレス演算器
81a,82a,83a,84a アドレスポインタ
100,400 符号化/復号化処理プロセッサ
101 命令メモリ
102 データメモリ
103 インタフェース制御回路
104a ビタビ処理回路
104b ターボ処理回路
105、203 共有メモリ
111a プロセッサ制御インタフェース
111b 命令メモリインタフェース
111c,112b ローカルメモリインタフェース
111d DSPインタフェース
111e,112c 共有メモリインタフェース
111f 割り込みインタフェース
112a コプロセッサインタフェース
200,220 符号化/復号化処理(コーデック)モジュール
201 汎用プロセッサ
202 リソースマネージャ
204 RFインタフェース
205 サーチモジュール
206 モデムモジュール
404c インタリーブ処理回路

Claims (10)

  1. 無線通信装置に内蔵され、通信データの符号化および復号化処理を行う符号化/復号化処理プロセッサであって、
    前記符号化および復号化処理専用のコプロセッサを有すると共に、
    前記コプロセッサが、
    外部から与えられた動作モードおよび生成多項式についての設定を記憶するパラメータレジスタと、
    前記動作モードおよび生成多項式に基づいて動作し、前記符号化および復号化処理に必要な演算を1サイクルで複数のビット分を並列に行う演算回路と
    を備えることを特徴とする符号化/復号化処理プロセッサ。
  2. 前記コプロセッサが、内蔵もしくは外部に接続された記憶装置にアクセスするためのメモリコントローラを備え、
    このメモリコントローラが、
    外部から与えられたパラメータによって自立的にデータの読み書きを行う前記記憶装置上のアドレスを出力する動作を行うアドレスジェネレータ回路と、
    前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを一時的に格納するFIFO(First In First Out)回路と、
    前記記憶装置上の前記出力されたアドレスに書き込むデータもしくは該アドレスから読み込んだデータを予め定められたビット数に揃えて出力するデータパッキング回路と
    を備えることを特徴とする、請求項1に記載の符号化/復号化処理プロセッサ。
  3. 前記メモリコントローラが、前記アドレスジェネレータ回路と、前記FIFO回路と、前記データパッキング回路とをデータ読み出し用とデータ書き込み用にそれぞれ備えることを特徴とする、請求項2に記載の符号化/復号化処理プロセッサ。
  4. 前記データ書き込み用アドレスジェネレータ回路が、
    初期ポインタ、ステップ数、およびメモリ長の各々を記憶する制御レジスタと、
    前記初期ポインタの値を初期値として、アドレスを発行するたびに前記ステップ数の値を加算したものをメモリ長の値で剰余演算した結果を次のアドレスポインタとして出力するアドレス演算器と
    を備えることを特徴とする、請求項3に記載の符号化/復号化処理プロセッサ。
  5. 前記データ読み出し用アドレスジェネレータ回路が、
    複数のオフセットアドレス計算モジュールと、
    そのオフセットアドレス計算モジュールからの発行アドレスを加算することで実際のオフセットアドレスとする加算器とを備えると共に、
    前記オフセットアドレス計算モジュールが、第1および第2の前記アドレス演算器を備え、第1の前記アドレス演算器のアドレスポインタを外部から与えられたカウント数の値で一定回数ごとに第2の前記アドレス演算器で計算しているアドレスポインタの値に更新することを特徴とする、請求項3に記載の符号化/復号化処理プロセッサ。
  6. 前記データ読み出し用アドレスジェネレータ回路が、
    発行したオフセットアドレスを外部から与えられたアドレス単位設定に従ってメモリアドレス単位にシフトするシフト回路と、
    メモリから読み出したデータ中から所望のビット位置を取得するビットシフトデータ用FIFO回路と
    を備えることを特徴とする、請求項5に記載の符号化/復号化処理プロセッサ。
  7. 前記メモリコントローラが、
    前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを読み出すと共に当該レジスタアクセス番号の記憶内容を更新する通常アクセス機能と、
    前記演算回路側から、前記記憶装置の指定されたレジスタアクセス番号に記憶されたデータを更新せずに読み出すピープ機能と
    を備えることを特徴とする、請求項2に記載の符号化/復号化処理プロセッサ。
  8. 前記演算回路が、外部から与えられた前記動作モードおよび生成多項式に応じて、
    スクランブリング処理、畳み込み符号化処理、CRC符号化処理およびビット連接/並び替え処理のうちいずれか1つ以上の処理を行う機能を備えることを特徴とする、請求項1に記載の符号化/復号化処理プロセッサ。
  9. 外部に送信する送信データの符号化処理および外部から受信した受信データの復号化処理を行う符号化/復号化処理(コーデック)モジュールを備えると共に、
    前記符号化/復号化処理(コーデック)モジュールが、
    前記受信データの誤り訂正復号化を行う専用ハードウェアである誤り訂正復号化処理回路と、
    前記受信データの誤り訂正復号化以外の処理を行う請求項1ないし請求項8のうちいずれか1項に記載の符号化/復号化処理プロセッサと
    を備えたことを特徴とする無線通信装置。
  10. 前記符号化/復号化処理(コーデック)モジュールが、
    前記送信データおよび前記受信データのインタリーブ/デインタリーブ処理を行う専用ハードウェアであるインタリーブ処理回路を備えると共に、
    前記符号化/復号化処理プロセッサが、前記受信データの誤り訂正復号化、および前記送信データおよび前記受信データのインタリーブ/デインタリーブ処理以外の処理を行うことを特徴とする、請求項9に記載の無線通信装置。
JP2012556890A 2011-02-10 2012-02-07 符号化/復号化処理プロセッサ、および無線通信装置 Pending JPWO2012108411A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2011026885 2011-02-10
JP2011026885 2011-02-10
PCT/JP2012/052696 WO2012108411A1 (ja) 2011-02-10 2012-02-07 符号化/復号化処理プロセッサ、および無線通信装置

Publications (1)

Publication Number Publication Date
JPWO2012108411A1 true JPWO2012108411A1 (ja) 2014-07-03

Family

ID=46638624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012556890A Pending JPWO2012108411A1 (ja) 2011-02-10 2012-02-07 符号化/復号化処理プロセッサ、および無線通信装置

Country Status (3)

Country Link
US (1) US8989242B2 (ja)
JP (1) JPWO2012108411A1 (ja)
WO (1) WO2012108411A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014012661A1 (de) 2012-07-18 2014-01-23 Merck Patent Gmbh Fluortenside
JP6191172B2 (ja) * 2013-03-12 2017-09-06 日本電気株式会社 メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。
US9460007B1 (en) * 2014-09-24 2016-10-04 Xilinx, Inc. Programmable hardware blocks for time-sharing arithmetic units using memory mapping of periodic functions
JP2017017588A (ja) * 2015-07-02 2017-01-19 富士通株式会社 伝送装置、誤り訂正符号の生成方法及び誤り訂正方法
US9858636B1 (en) 2016-06-30 2018-01-02 Apple Inc. Configurable convolution engine
US10353632B2 (en) * 2016-11-15 2019-07-16 StorageOS Limited System and method for storing data blocks in a volume of data
US10176551B2 (en) * 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
US10862617B2 (en) * 2017-05-30 2020-12-08 Marvell Asia Pte, Ltd. Flowlet scheduler for multicore network processors
US10891995B2 (en) * 2019-01-15 2021-01-12 SK Hynix Inc. Command generation method and semiconductor device related to the command generation method
CN117375651A (zh) * 2022-06-30 2024-01-09 深圳市中兴微电子技术有限公司 数据收发系统、数据接收方法及数据发送方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5455862A (en) * 1993-12-02 1995-10-03 Crest Industries, Inc. Apparatus and method for encrypting communications without exchanging an encryption key
JP3283403B2 (ja) * 1995-07-04 2002-05-20 沖電気工業株式会社 周期冗長検査方式の誤り検出符号生成装置及び誤り検出装置
EP0966797B8 (en) 1997-02-24 2006-04-26 Cingular Wireless II, LLC Highly bandwidth-efficient communications
US6349379B2 (en) * 1997-04-30 2002-02-19 Canon Kabushiki Kaisha System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
JPH11274942A (ja) * 1998-03-19 1999-10-08 Anritsu Corp ビタビ復号器
JP4828006B2 (ja) * 1998-11-09 2011-11-30 ソニー株式会社 画像処理装置
US6385751B1 (en) * 1998-12-30 2002-05-07 Texas Instruments Incorporated Programmable, reconfigurable DSP implementation of a Reed-Solomon encoder/decoder
US6327690B1 (en) * 1999-02-04 2001-12-04 Intel Corporation Integrated reed-solomon error correction code encoder and syndrome generator
JP2003518280A (ja) 1999-02-05 2003-06-03 テンシリカ インコーポレイテッド 構成可能なプロセッサを設計するための自動プロセッサ生成システムおよび生成方法
US6473808B1 (en) 1999-04-02 2002-10-29 Motorola, Inc. High performance communication controller for processing high speed data streams wherein execution of a task can be skipped if it involves fetching information from external memory bank
JP3593648B2 (ja) 1999-04-02 2004-11-24 富士通株式会社 チャネルコード・デコード装置及び基地局
JP2001034573A (ja) 1999-07-23 2001-02-09 Matsushita Electric Ind Co Ltd メモリアクセスシステム及び方法
US20030191863A1 (en) 2001-07-02 2003-10-09 Globespanvirata Incorporated Communications system using rings architecture
WO2004006540A2 (en) * 2002-07-08 2004-01-15 Globespanvirata Incorporated System and method for packet transmission from fragmented buffer
US8001294B2 (en) 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
WO2007024153A1 (en) 2005-08-22 2007-03-01 Intel Corporation Wireless communication device with physical-layer reconfigurable processing engines
JP4408113B2 (ja) 2006-01-06 2010-02-03 株式会社リコー 信号処理方法
JP4979975B2 (ja) 2006-04-21 2012-07-18 株式会社ダイヘン 論理集積回路、その演算用回路のソース、及びそのソースを記録したコンピュータ読み取り可能な記録媒体
US8151031B2 (en) * 2007-10-31 2012-04-03 Texas Instruments Incorporated Local memories with permutation functionality for digital signal processors

Also Published As

Publication number Publication date
US20130322501A1 (en) 2013-12-05
US8989242B2 (en) 2015-03-24
WO2012108411A1 (ja) 2012-08-16

Similar Documents

Publication Publication Date Title
WO2012108411A1 (ja) 符号化/復号化処理プロセッサ、および無線通信装置
US7721069B2 (en) Low power, high performance, heterogeneous, scalable processor architecture
US6848074B2 (en) Method and apparatus for implementing a single cycle operation in a data processing system
US6745319B1 (en) Microprocessor with instructions for shuffling and dealing data
KR100283827B1 (ko) 효율적인 비트 이동 능력을 갖춘 데이터 프로세서 및 그 방법
CN107111489B (zh) 莫顿坐标调整处理器、方法、系统和指令
CN107908427B (zh) 用于多维数组中的元素偏移量计算的指令
CN107220029B (zh) 掩码置换指令的装置和方法
KR20170097008A (ko) 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치
US10089075B2 (en) Method and apparatus of instruction that merges and sorts smaller sorted vectors into larger sorted vector
KR20150079809A (ko) 축소된 다중 네스트된 루프들의 벡터화
US6574724B1 (en) Microprocessor with non-aligned scaled and unscaled addressing
CN107145335B (zh) 用于大整数运算的向量指令的装置和方法
KR20170097011A (ko) 벡터 비트 반전 및 크로싱을 수행하기 위한 방법 및 장치
KR20170097616A (ko) 벡터 비트 뒤집기를 수행하기 위한 방법 및 장치
US8775750B2 (en) Interleaver with parallel address queue arbitration dependent on which queues are empty
US20070198901A1 (en) Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
KR20170059478A (ko) 4d 좌표로부터 4d z-곡선 인덱스를 계산하기 위한 머신 레벨 명령어들
WO2013186155A1 (en) An element selection unit and a method therein
KR20170059477A (ko) 3d 좌표들로부터 3d z-곡선 인덱스를 계산하는 머신 레벨 명령어들
CA2572954A1 (en) Programmable processor system with two types of sub-processors to execute multimedia applications
US6766440B1 (en) Microprocessor with conditional cross path stall to minimize CPU cycle time length
JP5862397B2 (ja) 演算処理装置
CN114721624A (zh) 用于处理矩阵的处理器、方法和系统
JP6191172B2 (ja) メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。