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

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

Info

Publication number
WO2012108411A1
WO2012108411A1 PCT/JP2012/052696 JP2012052696W WO2012108411A1 WO 2012108411 A1 WO2012108411 A1 WO 2012108411A1 JP 2012052696 W JP2012052696 W JP 2012052696W WO 2012108411 A1 WO2012108411 A1 WO 2012108411A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
encoding
processing
decoding
address
Prior art date
Application number
PCT/JP2012/052696
Other languages
English (en)
French (fr)
Inventor
俊樹 竹内
裕之 井倉
Original Assignee
日本電気株式会社
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 日本電気株式会社 filed Critical 日本電気株式会社
Priority to JP2012556890A priority Critical patent/JPWO2012108411A1/ja
Priority to US13/984,792 priority patent/US8989242B2/en
Publication of WO2012108411A1 publication Critical patent/WO2012108411A1/ja

Links

Images

Classifications

    • 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
    • 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/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

Definitions

  • the present invention relates to an encoding / decoding processor and a wireless communication apparatus, and more particularly to an encoding / decoding processor that can perform various encoding / decoding processes in a plurality of wireless systems with a high-speed and simple circuit configuration. .
  • encoding / decoding processing of a transmission / reception data signal is necessary. More specifically, the transmission side requires encoding processing such as CRC code addition, scrambling processing, convolutional encoding, and interleaving (data rearrangement) processing for the transmission data signal. Decoding processing such as deinterleaving (reverse of interleaving) processing, Viterbi decoding, descrambling processing, CRC determination processing, and the like is necessary.
  • Japanese Patent Application Laid-Open No. H10-228561 described below has a configuration in which a dedicated hardware circuit can be set according to various parameters so as to support a plurality of radio systems, thereby achieving high speed and power efficiency.
  • a dedicated processing engine is configured to be resettable so as to be compatible with a plurality of baseband processes, thereby flexibly supporting a plurality of wireless systems.
  • Patent Document 1 describes a technique in which a dedicated hardware circuit can be set in an operation mode and can be flexibly adapted to a system change or the like by being controlled from a central overall control processor. Has been.
  • Patent Document 7 describes a technique in which encoding / decoding processing corresponding to a plurality of wireless systems is processed by software using a processor such as a dedicated signal processor (DSP).
  • a processor such as a dedicated signal processor (DSP).
  • DSP dedicated signal processor
  • a common signal processor and a DMA controller for speeding up memory access are used to implement communication processing, thereby flexibly supporting various communication methods. It is.
  • Patent Document 2 describes a technique for reducing the memory access latency of the processor by providing a dedicated memory controller outside the signal processor.
  • Patent Document 3 describes a signal processing apparatus for image processing that can incorporate a scaling function while suppressing an increase in circuit scale using a single memory port.
  • Patent Document 4 describes a logic integrated circuit that can save space in arithmetic logic by configuring so that addition processing and multiplication processing can be executed in parallel.
  • Patent Document 5 describes a communication method for setting parameters related to communication using a forward pilot tone and a reverse pilot tone.
  • Patent Document 6 describes a multiprocessor system in which data is efficiently compressed between a plurality of processors by locally compressing data before transferring it to a shared memory.
  • Patent Document 8 describes a processor design tool including an address generation unit that calculates an address every time according to an instruction.
  • Patent Document 9 describes a communication system using a processor having a register file for calculation inside.
  • the first problem is that various encoding / decoding processes in a plurality of wireless communication systems cannot be flexibly handled in the encoding / decoding process (bit / byte operation process) in the wireless communication device.
  • the second problem is that, when encoding / decoding processing (bit / byte operation processing) in a wireless communication system is realized by software processing by a processor with emphasis on flexibility, a plurality of bits (bytes) are simultaneously processed. It cannot be processed at high speed including memory access latency, such as computation.
  • the processing amount of encoding / decoding processing in wireless communication depends on a generally required data transfer rate.
  • the required data transfer rate is increasing, and further reduction in power consumption is desired. Therefore, it is important that high-speed communication is possible with lower power consumption.
  • Patent Document 1 has a problem that it cannot easily cope with changes in the detailed processing order and the processing order between the processes (dedicated hardware circuits).
  • Patent Document 2 also improves the throughput at the time of data writing in which the address and data are transferred together while simply incrementing the address to the external memory, but the transfer cycle of the data corresponding to the address is increased. Since they are different (two or more cycles are required for reading), there is a problem that the throughput at the time of reading data is not improved. In addition, since the address is simply incremented, there is a problem that it is not possible to deal with a special address order that is not a simple increment, such as interleaving / deinterleaving processing in wireless communication encoding / decoding processing. .
  • Patent Documents 3 to 6 and Patent Documents 8 to 9 all perform encoding / decoding processing capable of supporting a plurality of wireless communication systems at high speed and with a simple circuit configuration. This problem is not solved because it is not intended to be realized and does not have a configuration for that purpose.
  • An object of the present invention is to provide an encoding / decoding processor and a wireless communication apparatus capable of realizing various encoding / decoding processes in a plurality of wireless communication schemes at high speed with a simple circuit configuration. is there.
  • an encoding / decoding processor is an encoding / decoding processor that is incorporated in a wireless communication device and performs encoding and decoding processing of communication data.
  • an arithmetic circuit that performs a plurality of bits in parallel in one cycle for an operation necessary for the decoding process.
  • a wireless communication apparatus includes an encoding / decoding process (codec) module that performs encoding processing of transmission data to be transmitted to the outside and decoding processing of reception data received from the outside. And an encoding / decoding processing (codec) module that performs error correction decoding processing circuit, which is dedicated hardware for performing error correction decoding of received data, and processing other than error correction decoding of received data
  • codec encoding / decoding process
  • codec an encoding / decoding processing module that performs error correction decoding processing circuit, which is dedicated hardware for performing error correction decoding of received data, and processing other than error correction decoding of received data
  • the present invention includes a programmable arithmetic unit in which a coprocessor dedicated to encoding and decoding processing performs a plurality of bits in parallel in one cycle based on an externally given operation mode and generator polynomial. Since the configuration is adopted, the encoding / decoding process can be performed at high speed, and the contents of the process can be easily changed from the outside. Accordingly, an encoding / decoding processor and a wireless communication device having an excellent feature that various encoding / decoding processes in a plurality of wireless communication systems can be realized at high speed with a simple circuit configuration. Can be provided.
  • FIG. 4 is an explanatory diagram showing a more detailed configuration of the encoding / decoding processor shown in FIG. 3. It is explanatory drawing shown about the more detailed structure of the coprocessor shown in FIG. It is explanatory drawing which shows the structure of the radio
  • FIG. 4A is an explanatory diagram showing an example of the register configuration of the register file of the coprocessor shown in FIG. 4B is an explanatory diagram showing the bit format of each register of the coprocessor shown in FIG.
  • FIG. 3 is an explanatory diagram illustrating a configuration example of an instruction code of a coprocessor instruction in the coprocessor illustrated in FIG. 2.
  • FIG. 4A is an explanatory diagram showing an example of the register configuration of the register file of the coprocessor shown in FIG. 4B is an explanatory diagram showing the bit format of each register of the coprocessor shown in FIG.
  • FIG. 3 is an explanatory
  • FIG. 3 is an explanatory diagram showing a configuration example of a scrambling circuit (SCRAM) in the dedicated arithmetic unit (ALU) shown in FIG. 2.
  • FIG. 3 is an explanatory diagram showing a configuration example of a convolutional encoder (CONV) in the dedicated arithmetic unit (ALU) shown in FIG. 2.
  • FIG. 3 is an explanatory diagram illustrating a configuration example of a CRC encoder (CRC) in the dedicated arithmetic unit (ALU) illustrated in FIG. 2.
  • FIG. 3 is a diagram illustrating a configuration example of a bit concatenation / sorting circuit (PERM) in the dedicated arithmetic unit (ALU) illustrated in FIG. 2.
  • FIG. 3 is an explanatory diagram showing a configuration example of a scrambling circuit (SCRAM) in the dedicated arithmetic unit (ALU) shown in FIG. 2.
  • FIG. 3 is an explanatory diagram showing a configuration example of a convolutional encoder
  • FIG. 3 is an explanatory diagram showing a more detailed configuration and operation of a write address generator, a write data FIFO circuit, and a write data packing circuit in the memory controller shown in FIG. 2.
  • FIG. 11 is an explanatory diagram illustrating an example of an operation sequence when data is written from the coprocessor to the memory via the CR2 or CR3 register in each memory writing circuit of the memory controller illustrated in FIG. 10.
  • FIG. 3 is an explanatory diagram showing a more detailed configuration and operation of a read address generator, a read data FIFO circuit, and a read data packing circuit in the memory controller shown in FIG. 2.
  • FIG. 13 is an explanatory diagram showing a more detailed configuration of an offset address generator in the read address generator shown in FIG. 12.
  • FIG. 11 is an explanatory diagram illustrating an example of an operation sequence when data is written to the memory via the CR2 or CR3 register in each memory reading circuit of the memory controller illustrated in FIG. 10.
  • FIG. 16A is an explanatory diagram illustrating an example of an encoding process in the encoding / decoding processor illustrated in FIGS. 1 and 3.
  • FIG. 16B is an explanatory diagram illustrating an example of a decoding process in the encoding / decoding processor illustrated in FIGS. 1 and 3.
  • FIG. 16A is an explanatory diagram illustrating an example of an encoding process in the encoding / decoding processor illustrated in FIGS. 1 and 3.
  • FIG. 16B is an explanatory diagram illustrating an example of a decoding process in the encoding / decoding processor illustrated in FIGS. 1 and 3.
  • FIG. 16 is a sequence diagram showing in more detail an example of a processing sequence of the encoding process shown in steps S301 to S304 when the encoding / decoding processor shown in FIGS. 1 and 3 performs the process shown in FIG. 16A.
  • FIG. 16 is a sequence diagram showing in more detail a processing sequence example of the decoding processing shown in steps S311 to S314 when the processing shown in FIG. 16B is performed by the encoding / decoding processing processor shown in FIG. 1 and FIG. .
  • FIG. 23 is an explanatory diagram showing a more detailed configuration of the coprocessor shown in FIG. 22.
  • FIG. 24 is an explanatory diagram showing a more detailed configuration of a local memory controller (LMC) and a shared memory controller (SMC) shown in FIG. 23.
  • LMC local memory controller
  • SMC shared memory controller
  • the encoding / decoding processor 100 is an encoding / decoding processor that is incorporated in the wireless communication device 1 and performs communication data encoding and decoding processing.
  • the encoding / decoding processor 100 has a coprocessor 11 dedicated to encoding and decoding processing.
  • the coprocessor 11 operates based on the parameter mode 60 for storing the operation mode and generator polynomial given from the outside, and the operation mode and generator polynomial, and performs operations necessary for encoding and decoding processes as 1 And an arithmetic circuit 22a that performs a plurality of bits in a cycle in parallel.
  • the coprocessor 11 includes memory controllers 20 to 21 for accessing a built-in or externally connected storage device, and the memory controllers 20 to 21 independently read and write data according to parameters given from the outside.
  • Address generator circuits 30 and 40 that perform an operation of outputting an address on the storage device, and a FIFO (First In First) that temporarily stores data to be written to or read from the output address on the storage device Out) circuits 31 and 41, and data packing circuits 32 and 42 for outputting data to be written to an address output on the storage device or data read from the address in a predetermined number of bits.
  • Each of these circuits is provided for data reading (40, 41, 42) and data writing (30, 31, 32), respectively.
  • the address generator circuit 30 for writing data has a control register 30a1 for storing each of the initial pointer, the number of steps, and the memory length, and the value of the number of steps every time an address is issued with the value of the initial pointer as an initial value.
  • an address calculator 30a2 that outputs a result obtained by performing a remainder operation on the added value using a memory length value as a next address pointer.
  • the data read address generator circuit 40 includes a plurality of offset address calculation modules 80 and an adder 40a4 that adds the issued addresses from the offset address calculation modules to obtain an actual offset address.
  • the module 80 includes first and second address calculators 81 to 82.
  • the address pointer 81a of the first address calculator 81 is set to the second address calculation at a predetermined number of times with a count value given from the outside. The value is updated to the value of the address pointer 82 a calculated by the device 82.
  • the data read address generator circuit 40 acquires a desired bit position from the data read out from the memory, and a shift circuit 40a2 that shifts the issued offset address to the memory address unit according to the external address unit setting.
  • a bit shift data FIFO circuit 40a3 is also provided.
  • the normal access function (CR2 to 3) in which the memory controllers 20 to 21 read the data stored in the designated register access number of the storage device and update the stored contents of the register access number from the programmable arithmetic unit side.
  • a peep function (CR4 to CR5) for reading the data stored in the designated register access number of the storage device without updating from the programmable arithmetic unit side.
  • the arithmetic circuit 22a can select any one of the scrambling process 50, the convolutional encoding process 51, the CRC encoding process 52, and the bit concatenation / reordering process 53 according to the operation mode and generator polynomial given from the outside. Or a function of performing one or more processes.
  • the wireless communication device 1 incorporating the encoding / decoding processor 100 encodes / decodes (codec) an encoding process for transmission data to be transmitted to the outside and a decoding process for reception data received from the outside.
  • a module 200 is provided.
  • This encoding / decoding processing (codec) module 200 includes error correction decoding processing circuits (Viterbi processing circuit 104a and turbo processing circuit 104b), which are dedicated hardware for performing error correction decoding of received data, and received data
  • the encoding / decoding processor 100 that performs processing other than error correction decoding is provided.
  • the encoding / decoding processor 100 can realize various encoding / decoding processes in a plurality of wireless communication schemes at high speed with a simple circuit configuration. Hereinafter, this will be described in more detail.
  • FIG. 3 is an explanatory diagram showing a configuration of the wireless communication device 1 using the encoding / decoding processor 100 according to the first embodiment of the present invention.
  • the wireless communication device 1 can support a plurality of wireless communication methods including a wireless LAN (IEEE802.11a) method and a WiMAX (IEEE802.16e) method that are standardized by IEEE (Institute of Electrical and Electronic Engineers).
  • the encoding / decoding processing processor 100 is applied to the encoding / decoding processing (codec) module 200.
  • the wireless communication device 1 is a module that performs baseband processing of wireless communication, a search module 205 that performs synchronization establishment and timing search between a base station and a terminal, and a modem module 206 that performs transmission data modulation processing and reception data demodulation processing.
  • An encoding / decoding process (codec) module 200 that performs encoding processing of transmission data and decoding processing of received data, and a general-purpose processor (CPU) 201 that processes communication data related to an upper layer (layer 2 or layer 3)
  • a resource manager 202 that controls execution between the wireless communication modules, and a shared memory 203 for transferring data between the wireless communication modules.
  • An encoding / decoding process (codec) module 200 includes an encoding / decoding processor 100, an instruction memory 101, a data memory 102, an interface control circuit 103, a Viterbi processing circuit 104a, a turbo processing circuit 104b, and an encoding / decoding process.
  • a shared memory 105 for sharing data between the processor 100 and the Viterbi processing circuit 104 is provided.
  • the error correction decoding here refers to one or more processes of Viterbi decoding and turbo decoding.
  • FIG. 1 is an explanatory diagram showing a more detailed configuration of the encoding / decoding processor 100 shown in FIG.
  • the encoding / decoding processor 100 has a configuration in which a coprocessor dedicated to encoding / decoding processing (bit / byte arithmetic processing) is connected to the control processor 10.
  • the encoding / decoding processor 100 has, as an interface, a processor control interface 111a for performing boot control and interrupt signal input from the outside, and an access for accessing the instruction memory 101 from the encoding / decoding processor 100.
  • a shared memory interface 111e for stream access to the shared memory is provided.
  • the inside of the encoding / decoding processor 100 is connected to a general control processor 10 (for example, a Harvard architecture type 32-bit RISC processor) provided with a coprocessor interface 112a via the coprocessor interface 112a.
  • a general control processor 10 for example, a Harvard architecture type 32-bit RISC processor
  • a coprocessor 11 dedicated to encoding / decoding processing which is a feature of the embodiment, is connected.
  • the coprocessor 11 includes a local memory interface 112b and a shared memory interface 112c, and stream access (burst access that supports split transactions) can be made to the local memory (data memory 102) or the shared memory 105 via each of them. It is.
  • the memory selector (MUX type bus controller) 12 is used for arbitration / selection control of data access from the control processor 10 and local memory access from the coprocessor 11, and the local memory (data memory 102). Are connected to the local memory interface 111c from the memory selector 12.
  • the instruction memory 101 is directly connected to the instruction memory interface 111 b of the control processor 10.
  • the processor controller 13 is a block that performs external boot control, interrupt control, etc., and external access to the local memory (data memory 102) and the instruction memory 101 is directly accessible from the outside to each memory ( It may be configured to be bypassed) or may be accessed via the processor control interface 111a.
  • FIG. 2 is an explanatory diagram showing a more detailed configuration of the coprocessor 11 shown in FIG.
  • the coprocessor 11 includes a local memory controller (LMC) 20 capable of stream access to the local memory (data memory 102) and the shared memory interface 112c via the local memory interface 112b in order to conceal the latency at the time of memory access. And a shared memory controller (SMC) 21 capable of stream access to the external shared memory.
  • LMC local memory controller
  • SMC shared memory controller
  • the local memory controller (LMC) 20 and the shared memory controller (SMC) 21 are connected to each other in order to access the local memory (data memory 102) and the external shared memory in parallel with the arithmetic processing in the processor and coprocessor. Further, a write address generator 30, a write data FIFO circuit (First In First Out) 31, a write data packing circuit 32, a read address generator 40, a read data FIFO circuit 41, and a read data packing circuit 42 are provided.
  • those provided in the local memory controller 20 include a write address generator (AG (W)) 30a, a write data FIFO circuit 31a, a write data packing circuit (PACKER) 32a, a read address generator (AG (R)) 40a, These are called a read data FIFO circuit 41a and a read data packing circuit (PACKER) 42a.
  • the shared memory controller (SMC) 21 includes a write address generator 30b, a write data FIFO circuit 31b, a write data packing circuit 32b, a read address generator 40b, a read data FIFO circuit 41b, and a read data packing circuit 42b.
  • the local memory controller 20 and the shared memory controller 21 also have a split transaction function for speculatively issuing an address when reading.
  • the local memory controller 20 and the shared memory controller 21 are shown as being mounted one by one in FIG. 1 or FIG. 2, but this number is not particularly limited in the present embodiment.
  • the coprocessor 11 includes an ALU (Arithmetic Logic Unit) 22 dedicated to encoding / decoding processing (bit / byte arithmetic processing) (hereinafter simply referred to as arithmetic unit 22).
  • the arithmetic unit 22 is commonly used in encoding / decoding processing in a plurality of wireless communication systems, and is generally used as a scrambling circuit (SCRAM) 50, a convolutional encoder (CONV) 51, a CRC encoder (CRC). 52, a bit concatenation / reordering circuit (PERM) 53, and an arithmetic circuit 22a that can operate as another arithmetic circuit 54 (others). These configurations will be described later.
  • SCRAM scrambling circuit
  • CONV convolutional encoder
  • CRC CRC encoder
  • PROM bit concatenation / reordering circuit
  • parameters relating to the operation mode are set by the parameter register 60 provided in the coprocessor 11. As a result, it has a programmable configuration that can flexibly cope with each encoding / decoding process in various wireless systems.
  • the scrambling circuit (SCRAM) 50 is used for scrambling / descrambling processing in the encoding / decoding processing
  • the convolutional encoder (CONV) 51 is used for convolutional encoding processing
  • the CRC encoder (CRC) 52 is used.
  • a bit concatenation / reordering circuit (PERM) 53 is used for bit repetition (repeat) processing, puncturing / depuncturing processing, simple bit interleaving / bit deinterleaving processing, etc. .
  • the coprocessor 11 includes a coprocessor register file (REG) 23 that can be used by a coprocessor instruction. This is different from the register originally provided in the control processor 10.
  • REG register file
  • general-purpose registers in the register file (REG) 23 for example, 16 32-bit registers (CR0 to CR15) are provided.
  • CR2, CR3 two general purpose registers (CR2, CR3) out of 16 are operated as special registers.
  • one for example, CR2
  • one for example, CR3
  • CR3 is assigned for data exchange with the shared memory controller 21. This operation will be described in detail later.
  • This configuration makes it possible to use general-purpose registers, which are these special registers, for accessing the local memory (data memory 102) and the external shared memory.
  • stream data access to the local memory (data memory 102) or the external shared memory can be processed with the same instruction mapping and processing cycle number as the general-purpose registers in the coprocessor 11.
  • the coprocessor 11 also includes a coprocessor controller 24.
  • the coprocessor controller 24 decodes the coprocessor instructions and controls the arithmetic unit 22, the register file 23, the local memory controller 20, and the shared memory controller 21. . Then, an interrupt process for the control processor 10 is performed via the processor controller 13.
  • the encoding / decoding processor 100 reads an instruction code from the instruction memory 101 when the control processor 10 is activated from the outside using the processor control interface 111a or the interrupt interface 111f.
  • the processor process is executed while accessing the data memory (local memory) 102. If necessary, the shared memory 105 and external peripheral devices are also accessed via the memory selector 12.
  • a coprocessor instruction of a control processor is used as an instruction code.
  • the control processor 10 reads a coprocessor instruction from the instruction memory 101, the control processor 10 causes the coprocessor 11 to execute this coprocessor process via the coprocessor interface 112a.
  • the coprocessor 11 side shown in FIG. 2 decodes the coprocessor instruction received via the coprocessor interface 112a by the coprocessor controller 24, and the decoded coprocessor instruction is operated by an arithmetic unit 22, a register file 23, and a local memory controller. 20 and the shared memory controller 21 are executed.
  • FIG. 4A is an explanatory diagram illustrating an example of a mapping configuration of the register file (REG) 23 of the coprocessor 11 illustrated in FIG. 4B is an explanatory diagram showing the bit format of each register of the coprocessor 11 shown in FIG.
  • the coprocessor 11 includes, for example, 16 32-bit registers (CR0 to CR15) as general-purpose registers in the register file (REG) 23.
  • the coprocessor arithmetic instruction and control processor-coprocessor Executes interprocessor arithmetic instructions.
  • registers operate as dedicated registers.
  • one register (CR0) operates as a zero register (write access is invalid, read access value is always 0).
  • two general-purpose registers (CR2, CR3) out of 16 are operated as special special registers for memory access.
  • one for example, CR2 is allocated for local memory access, and the other (for example, CR3) is allocated for external shared memory access.
  • the local memory (data memory 102) is passed through the write data packing circuit 32 and the write data FIFO circuit 31 in the local memory controller (LMC) 20.
  • the data is written in The write address at this time is an address designated by the write address generator 30 in the local memory controller (LMC) 20.
  • the next coprocessor instruction can be executed only by writing to the CR2 register.
  • the local operation is performed with a write throughput of 1 [data / cycle].
  • Processing result data can be written in the memory (data memory 102).
  • the read address generator 40 in the local memory controller (LMC) 20 is operated in advance to start reading the stream data on the local memory (data memory 102).
  • the dedicated arithmetic unit (ALU) 22 reads the data on the local memory (data memory 102) only by reading and accessing the CR2 register, and the read data FIFO circuit 41 and the read data packing circuit in the local memory controller (LMC) 20. 42 can be read out.
  • the operations of the dedicated arithmetic unit (ALU) 22 and the coprocessor controller 24 are as follows. Read access to the CR2 register is possible without waiting time, and as a result, processing data can be read from the local memory (data memory 102) with a read throughput of 1 [data / cycle].
  • FIG. 4A shows an example in which the other two registers (CR4 to CR5) are operated as peep (PEEP) processing registers by setting parameter registers.
  • the CR2 register and the CR3 register are registers for accessing the local memory (data memory 102) and the shared memory, respectively.
  • the states of the read data FIFO circuit 41 and the read data packing circuit 42 are updated.
  • the CR4 register and the CR5 register are operated as registers for peep processing and the register is read and accessed
  • the CR4 register (LMP) receives the same data as the CR2 register (LM), and the CR5 register (SMP). Can read the same data as the CR3 register (SM), and the states of the read data FIFO circuit 41 and the read data packing circuit 42 are not updated.
  • the data read from the CR4 register can be read again from the CR2 register thereafter.
  • the data read from the CR5 register can be read again from the CR3 register thereafter. Therefore, this peep register function is useful when the same data is used a plurality of times.
  • the CR4 register and the CR5 register can be selected to be used as a peep function register or a normal general-purpose register by parameter setting.
  • the bit format of each register is 32 bits, and this is used as 1 bit ⁇ 32 data or 1 byte (8 bits) ⁇ 4 data.
  • “LSB first” and little endian bit format is used, and in the case of bit / byte arithmetic processing, data processing is performed in order from the LSB (Least Significant Bit). .
  • each of the 16-bit registers may be a register configuration.
  • 8 or 32 register file configurations may be used.
  • FIG. 5 is an explanatory diagram showing a configuration example of an instruction code of a coprocessor instruction in the coprocessor 11 shown in FIG.
  • an arithmetic instruction in the coprocessor is shown as an example of a part of the coprocessor instruction.
  • a parameter register 60 setting instruction for example, by setting the 21st to 22nd fixed bits in the instruction code to other than “11”, an operation instruction between the control processor and the coprocessor, a parameter register 60 setting instruction, and the like may be provided. Good.
  • the 23rd to 31st bits and the 8th to 11th bits are fixed values.
  • the 12th to 15th bits indicate the operation code (OP: Operation Code, instruction type).
  • OP 0
  • SCRAM is a scrambling instruction, which is an instruction that performs scrambling (SCRAM) on the data in the input register (crs) and outputs it to the output register (crd).
  • crs of the 4th to 7th bits and crd of the 0th to 3rd bits are general register numbers in the register file (REG) 23 of the coprocessor 11, and an immediate value (imm5) of the 16th to 20th bits is This shows that scrambling is performed in parallel (at a time) by the number of bits described by the immediate value (im5) (1 to 8) from the LSB side. Parallel processing for up to 8 bits (1 byte) is possible with one instruction.
  • the operation mode setting, TAP initial value setting, and generator polynomial specification setting necessary to support scrambling processing in a plurality of wireless systems can be realized by setting in the parameter register 60 in advance.
  • OP 1 (CONV) is a convolutional coding process.
  • the number of output data bits changes according to the coding rate set in the parameter register, the number of output data bits is twice that of the input data bit number (1 to 8) set by the immediate value (imm5). Or triple (maximum 24 bits).
  • OP 2 (CRC) is a CRC encoding processing instruction.
  • SCRAM scrambling process
  • the number of output data bits is the number of input data bits specified by the immediate value (imm5) of the 16th to 20th bits. Matches.
  • CONV convolutional encoding processing instruction
  • CRC CRC encoding processing instruction
  • SCRAM scrambling processing instruction
  • SCRAMs each have dedicated parallel arithmetic circuits 50, 51, and 52, which will be described later, mounted in the dedicated arithmetic unit (ALU) 22, so that 1-bit processing is performed in normal processor processing. It is possible to process a plurality of bits in one cycle.
  • ALU dedicated arithmetic unit
  • OP 5 (PERM) is a bit concatenation / reordering operation instruction, and performs concatenation / reordering for up to 16 bits from the LSB (least significant bit) side of the input register (crs). , Output to the output register (crd).
  • the order of the output data for the maximum 16-bit output data is set using the parameter register for 64 bits (32-bit register x 2 pairs), and which parameter is used It is specified by the register number (cp).
  • This bit concatenation / reordering operation instruction also includes a dedicated arithmetic circuit 53 in the dedicated arithmetic unit (ALU) 22 so that a plurality of bits can be processed in parallel with one instruction.
  • the immediate value (imm5) portion of each instruction that uses the immediate value (imm5) in the example of FIG. 5 is set as the general-purpose register number (rs) in the control processor 11. It is also possible to use a variable instead of an immediate value. Further, by designating general-purpose registers (rs, rd) in the control processor 11 as input registers and output registers for register transfer instructions, an inter-register transfer instruction between the control processor and the coprocessor is also possible.
  • the parameter register 60 setting instruction is an instruction that can set an immediate value or a general-purpose register value in the control processor in various parameter registers in the dedicated arithmetic unit (ALU) 22 and the memory controllers (LMC, SMC) 20-21.
  • ALU dedicated arithmetic unit
  • LMC memory controllers
  • FIG. 6 is an explanatory diagram showing a configuration example of the scrambling circuit (SCRAM) 50 in the dedicated arithmetic unit (ALU) 22 shown in FIG.
  • the scrambling circuit (SCRAM) 50 includes, as its interfaces, input data (crs), output data (crd), operation mode (mode), generator polynomial (poly), number of operation bits (imm5), TAP initial value (tap). And TAP output value (o_tap).
  • the number of operation bits (imm5) is output to the write data packing circuit 32 as the write data size (wssize).
  • the scrambling circuit (SCRAM) 50 can programmably set the operation mode (mode) and the generator polynomial (poly) by using the parameter register 60, so that the scrambling circuit (SCRAM) 50 can be scrambled in various radio systems.
  • the scrambling circuit (SCRAM) 50 can designate the number of bits to be processed by one instruction by the number of operation bits (imm5).
  • the TAP initial value (tap) can also be specified using the parameter register 60.
  • the TAP value (o_tap) updated by the number of operation bits specified by the operation bit number (imm5). ) Is selected and output, the value of the parameter register is also updated.
  • the updated TAP value is used as the TAP initial value at the time of the next scrambling processing instruction. Therefore, by repeatedly executing the scrambling processing instruction, the scrambling circuit (SCRAM) 50 can generate a long stream data sequence of 8 bits or more. Can be scrambled (descrambled).
  • the scrambling circuit (SCRAM) 50 is realized by connecting a plurality of scrambling computing units 70 that process one bit. In the example shown in FIG. 6, there are eight, and in this case, a maximum of eight bits can be processed with one instruction. Since the operation mode setting (Mode) and the generator polynomial setting (Poly) are basically static parameters, they are input to each scrambling calculator 70 in parallel, and the input data (crs) is [7]. : 0] is input to each scrambling calculator 70.
  • the TAP output value (TapO) of the previous stage scrambling calculator 70 is connected as the TAP input value (Tap) of the subsequent stage scrambling calculator 70. To do.
  • the scrambling calculator 70 for 1 bit the logical product (AND) of the input TAP value (Tap) and the generator polynomial (Poly) is executed, and then the exclusive OR (XOR) of each bit is performed.
  • An exclusive OR (XOR) of the value (o_xor) with the input bit is output as an output bit.
  • the input TAP value (Tap) other than the most significant bit is shifted and output, and for the most significant bit, o_xor is output as it is, the input bit value is output, or o_xor is input. Since whether to output an exclusive OR (XOR) value of bits differs depending on various wireless systems, it is selected and output by an operation mode setting (Mode).
  • XOR exclusive OR
  • LSB in FIG. 6 means “Least Significant Bit”, that is, “least significant bit”.
  • pad means padding, for example, a process of adding “0” for the upper 24 bits to 8-bit data and outputting it as 32-bit data.
  • the operation mode (mode) and the generator polynomial (poly) are set using the parameter register 60, and the TAP value (tap) is calculated and the parameter concerned is calculated.
  • the register is updated, it is possible to cope with scrambling processing / descrambling processing in various wireless systems in a programmable manner.
  • the scrambling processing instruction (SCRAM) is repeatedly executed using a for statement or the like, thereby being stored in the local memory or the external shared memory.
  • scrambling processing for a long stream data sequence can be executed with a throughput of 8 bits / cycle.
  • FIG. 7 is an explanatory diagram showing a configuration example of the convolutional encoder (CONV) 51 in the dedicated arithmetic unit (ALU) 22 shown in FIG. Similar to the scrambling circuit (SCRAM) 50 shown in FIG. 6, the convolutional encoder (CONV) 51 has as its interface input data (crs), output data (crd), operation mode (mode), and generator polynomial. (Poly), the number of operation bits (imm5), a TAP initial value (tap), and a TAP output value (o_tap). In addition, a value obtained by multiplying the number of operation bits (imm5) and the operation mode (mode) is output to the write data packing circuit 32 as the write data size (wssize).
  • the convolutional encoder (CONV) 51 can programmatically correspond to the convolutional encoding algorithms in various wireless systems by allowing the operation mode (mode) and the generator polynomial (poly) to be parameterized using the parameter register 60.
  • the operation mode corresponds to the coding rate (1, 1/2, 1/3)
  • the generator polynomial is 8 bits each according to the coding rate, and poly [7 : 0], [15: 8], and [23:16], respectively.
  • the convolutional encoder (CONV) 51 can specify the number of input bits to be processed by the one instruction with the number of operation bits (imm5).
  • the TAP initial value (tap) can also be specified using the parameter register 60. After processing for one instruction, the TAP value (o_tap) updated by the number of operation bits specified by the operation bit number (imm5). ) Is also updated.
  • the updated TAP value is used as the TAP initial value at the time of the next convolution encoding processing instruction, it is possible to perform convolution encoding processing for a stream data sequence of 8 bits or more by repeatedly executing the convolution encoding processing instruction. It becomes.
  • the convolutional encoder (CONV) 51 is realized by connecting a plurality of convolutional code arithmetic units 71 that process one bit.
  • the number is 8, and in this case, input data for a maximum of 8 bits can be processed with one instruction.
  • the operation mode setting (Mode) and generator polynomial setting (Poly) for specifying the coding rate are basically static parameters, they are input in parallel to each convolutional code calculator 71, and the input data (Crs) is input to each convolutional code calculator 71 for each bit of [7: 0].
  • each convolutional code calculator 71 outputs 1 to 3 bits corresponding to each coding rate. Since the TAP value (Tap) is updated by the operation result of the previous stage bit, the TAP output value (TapO) of the previous stage convolutional code computing unit 71 is connected as the TAP input value (Tap) of the subsequent stage convolutional code computing unit 71. To do.
  • the configuration and operation of a 1-bit convolutional code calculator 71 includes three code calculators (Masked XOR) inside, and the logical product (AND) of the input TAP value (Tap) and each generator polynomial (Poly) Then, a value (o_xor) obtained by exclusive OR (XOR) of each bit and the input bit is output as an output bit.
  • TAP output (TapO) is output in a form in which the input bit is the most significant bit and the TAP value (Tap) is shifted.
  • “pad” in FIG. 7 means “padding” as in FIG.
  • the operation mode (mode) that is the coding rate and the generator polynomial (poly) are set using the parameter register 60, and the TAP value (tap) is set.
  • the memory controllers 20 to 21 (CR2, CR3 registers, etc.) and executing a convolutional coding processing instruction (CONV) using a for statement, etc., it is stored in the local memory or the external shared memory.
  • CONV convolutional coding processing instruction
  • FIG. 8 is an explanatory diagram showing a configuration example of the CRC encoder (CRC) 52 in the dedicated arithmetic unit (ALU) 22 shown in FIG. Similar to the scrambling circuit (SCRAM) 50 and the like, the CRC encoder (CRC) 52 has an input data (crs), an output data (crd), an operation mode (mode), a generator polynomial (poly), It has the number of operation bits (im5), a TAP initial value (tap), and a TAP output value (o_tap). The number of operation bits (imm5) is output to the write data packing circuit 32 as the write data size (wssize).
  • wssize write data size
  • the CRC encoder (CRC) 52 can be set to parameters for the operation mode (mode) and the generator polynomial (poly) by using the parameter register 60, so that the CRC encoder 52 can programmably correspond to CRC encoding processing algorithms in various wireless systems.
  • the CRC encoder (CRC) 52 can designate the number of bits to be processed by the one instruction with the number of operation bits (imm5).
  • the TAP initial value (tap) can also be specified using the parameter register 60.
  • the TAP value (o_tap) updated by the number of operation bits specified by the operation bit number (imm5). ) Is selected and output, the value of the parameter register is also updated.
  • LSB in FIG. 8 means “least significant bit” as in FIG. 6, and “pad” means “padding” as in FIG. “MSB” means “Most Significant Bit”, that is, “most significant bit”.
  • the CRC encoder processing for a stream data sequence of 8 bits or more can be performed by repeatedly executing the CRC encoding processing instruction. It becomes possible.
  • the CRC encoder (CRC) 52 is realized by connecting a plurality of CRC code calculators 72 that process one bit. In the example shown in FIG. 8, there are eight, and in this case, a maximum of eight bits can be processed with one instruction. Since the operation mode setting (Mode) and the generator polynomial setting (Poly) are basically static parameters, they are input to each CRC code calculator 72 in parallel, and the input data (crs) is [7 : 0] is input to each CRC code calculator 72.
  • Mode operation mode setting
  • Poly generator polynomial setting
  • the TAP output value (TapO) of the CRC code calculator 72 at the previous stage is connected as the TAP input value (Tap) of the CRC code calculator 72 at the subsequent stage. Is done.
  • the one selected by the operation mode setting (Mode) is output as an output bit.
  • the least significant bit of the input TAP value (Tap) or the exclusive OR (XOR) of the bit and the input bit is selected by the operation mode setting (Mode) (o_sel).
  • Mode operation mode setting
  • Data obtained by performing an exclusive logical sum (XOR) of data obtained by performing logical product (AND) of a bit sequence and a generator polynomial (Poly) and data obtained by shifting the input TAP value (Tap) is output.
  • the operation mode (mode) and the generator polynomial (poly) are set using the parameter register 60, and the TAP value (tap) is calculated and calculated.
  • CRC CRC encoding processing instruction
  • FIG. 9 is a diagram showing a configuration example of the bit concatenation / sorting circuit (PERM) 53 in the dedicated arithmetic unit (ALU) 22 shown in FIG.
  • the bit concatenation / reordering circuit (PERM) 53 has input data (crs), output data (crd), and bit selection setting parameters (cp_L, cp_H) as its interface. Further, the number of operation bits can be controlled by being fixedly set by a write data packing circuit 32 described later.
  • Bit selection setting parameters (cp_L, cp_H) are set for which bit of input data bits (for 16 bits) is selected and output for each output bit. Each output bit is provided with a 16-input 1-output multiplexer (MUX), and the bit selection is set by using 4 bits. Therefore, in the bit concatenation / reordering circuit (PERM) 53, a total of 64 bits of parameters are set by combining 16 multiplexers (MUX) for a total of 16 bits and two 32-bit registers cp_L and cp_H. .
  • MUX 16-input 1-output multiplexer
  • bit concatenation / reordering circuit (PERM) 53 can arbitrarily set the output bit order with respect to 16 bits of input data. It is possible to cope with bit repetition processing and bit puncture (deletion) processing in a programmable manner.
  • bit concatenation / reorder command (PERM) is executed using a for statement or the like.
  • bit concatenation / reordering process, the bit repetition process, and the bit puncture (deletion) process for the long stream data sequence stored in the local memory or the external shared memory can be maximized in the case of the circuit configuration of FIG. It can be executed with a throughput of 16 bits / cycle.
  • the memory controllers 20 to 21 are memory controllers for accessing the local memory (data memory 102) and the external shared memory in parallel with the arithmetic processing of the processor 10 and the coprocessor 11, and in the inside thereof, the write address generator 30 is provided.
  • each element will be described.
  • FIG. 10 is an explanatory diagram showing more detailed configurations and operations of the write address generator 30, the write data FIFO circuit 31, and the write data packing circuit 32 in the memory controllers 20 to 21 shown in FIG.
  • the write address generator 30, the write data FIFO circuit 31, and the write data packing circuit 32 in the memory controllers 20 to 21 are used. .
  • the write address generator 30 calculates numerical values such as a start register (w_start), a base address register (w_base), an initial pointer register (w_ptr), a step register (w_step), a memory length register (w_len), and an access count register (w_cnt).
  • w_start a start register
  • base a base address register
  • w_ptr initial pointer register
  • step register a step register
  • w_len a memory length register
  • w_cnt access count register
  • the write address generator 30 automatically generates an address for each data output request from the write data FIFO circuit 31 when values are set in these control registers by a parameter setting instruction of the coprocessor 11 and is activated. It has an address calculator 30a2 to be issued.
  • the address calculator 30a2 basically issues an address obtained by adding the current address pointer to the base address (w_base).
  • the current address pointer 30a3 is updated each time an address is output with the value of the initial pointer (w_ptr) as an initial value.
  • the address calculator 30a2 adds the number of steps (w_step) in units of 32 bits to the current address, and performs a remainder (Modulo) operation with a memory length size (w_len). Data of the current address pointer 30a3.
  • the write address generator 30 includes, in addition to the control register 30a1, a current address pointer register 30a3, an adder (two), a remainder calculator (comparator and subtractor), a comparator for counting the number of accesses, a subtraction Equipped with containers.
  • the write data output from the dedicated arithmetic unit (ALU) 22 to the CR2 register or CR3 register is output to the memory via the write data packing circuit 32 and the write data FIFO circuit 31.
  • the write data packing circuit 32 is a circuit for packing write data in units of 32 bits.
  • the write data packing circuit 32 includes data (WDAT) for the write data size (WSIZE) designated from the dedicated arithmetic unit (ALU) 22 side, and the data size (data size) currently remaining in the write data packing circuit 32. Register) data (remaining data register).
  • the write data packing circuit 32 converts the input data (WDAT) into the remaining effective data size ( The data is shifted to the left by the data size register) and ORed with the remaining data (remaining data register) to connect to the MSB side.
  • the number of valid bits of the combined data is less than 32 bits, it is stored in the data register (remaining data register) as it is, and no data is output.
  • the combined data is 32 bits or more, the 32 bits on the LSB side are output to the write data FIFO circuit 31, and the remaining 32 bits ([63:32]) are left in the data register (remaining) Data register).
  • the dedicated arithmetic unit (ALU) 22 side Even if the data processing unit (output data size) is other than the 32-bit unit, stream data processing can be performed without the overhead of the number of processing cycles.
  • the fixed size may be set using a fixed size setting register (w_mode, w_size). Is possible.
  • the write data FIFO circuit 31 cooperates with the write address generator 30 to sequentially store the data at addresses indicated by the write address generator 30 on the memory.
  • the memory processor can access the memory in parallel with the operation instruction of the control processor 10 or the coprocessor 11, and the operation instruction is affected even when the memory side waits (waits for processing). Therefore, the memory access latency of the write data can be hidden.
  • the dedicated arithmetic unit (ALU) 22 side via the write data packing circuit 32 and the register file (REG) 23.
  • the coprocessor instruction processing can be normally continued by providing a wait control mechanism that waits for the coprocessor instruction.
  • FIG. 11 is an explanatory diagram showing an example of an operation sequence when data is written from the coprocessor 11 to the memory via the CR2 or CR3 register in each memory writing circuit of the memory controllers 20 to 21 shown in FIG.
  • FIG. 11 shows an example of the case where the scrambling process is performed on the stream data on the memory (repetition process in units of 8 bits).
  • parameter setting for the processing is performed in the parameter register 60 in the dedicated arithmetic unit (ALU) 22, and each address generator 30 in the memory controllers 20 to 21 (LMC, SMC) Parameter setting and activation are performed at 40 (step S101).
  • ALU dedicated arithmetic unit
  • the memory controller on the reading side independently reads data from the memory, and the processing data is sequentially stored in the read data FIFO circuit 41 (split transaction, step S102).
  • SCRAM scrambling processing command
  • the dedicated arithmetic unit (ALU) 22 reads out the data by 8 bits from the data of 32 bits by the function of the read data packing circuit 42 described later (step S103).
  • the dedicated arithmetic unit (ALU) 22 repeats the 8-bit scrambling process (step S104), and continuously outputs the processing result data to the memory controllers 20 to 21 via the CR2 (3) register (step S105). ).
  • the write data packing circuit 32 performs packing processing while shifting the processing result data, and outputs data to a desired memory in order via the write data FIFO circuit 31 when it becomes a 32-bit unit. (Step S106).
  • the coprocessor 11 of the present embodiment has a processing throughput of 8 bits / cycle. Encoding / decoding processing such as scrambling processing (descrambling processing) can be performed.
  • FIG. 12 is an explanatory diagram showing more detailed configurations and operations of the read address generator 40, the read data FIFO circuit 41, and the read data packing circuit 42 in the memory controllers 20 to 21 shown in FIG.
  • the read address generator 40 When the coprocessor 11 reads stream data from the memory via the CR2 or CR3 register, the read address generator 40, the read data FIFO circuit 41, and the read data packing circuit 42 in the memory controllers 20 to 21 are used.
  • the read address generator 40 includes a start register (r_start), a base address register (r_base), an offset address unit register (r_unit), an initial pointer register (r_ptr_xx), a step register (r_step_xx), a memory length register (r_len_xx), and an access count register.
  • a control register 40a1 for storing each numerical value such as (r_cnt) is provided.
  • the read address generator 40 When the read address generator 40 is activated with values set in these control registers 40a1 by the parameter setting instruction of the coprocessor 11, the read address generator 40 issues the read address independently and continuously for the number of times of access (r_cnt). Then, the data is read from the memory. By sequentially issuing read addresses speculatively, it corresponds to a split transaction at the time of reading.
  • the read address generator 40 basically issues an address obtained by adding the offset address from the offset address generator 80 to the base address (r_base) by the adder 40a4.
  • the offset address generator 80 which will be described later, corresponds to the bit interleaving process in the encoding / decoding process. It can be calculated.
  • the read address generator 40 includes a shift circuit 40a2 that outputs the data after shaping (shifting) it into memory address units using the value of the offset address unit register (r_unit) at the time of output. At this time, if the offset address is generated in bit units or byte units, a bit shift is performed to store bit position information indicating where the desired bit (byte) is mapped in the read 32-bit data.
  • a FIFO 40a3 is also provided.
  • the data (RDAT) read from the memory is transferred to the dedicated ALU (arithmetic unit) side via the read data FIFO circuit 41 and the read data packing circuit 42.
  • the data (RDAT) read from the memory is sequentially stored in the read data FIFO circuit 41, and the shift circuit 40a2 uses the value of the bit position information of the bit shift FIFO to arrange desired bits on the LSB side.
  • the bit-shifted data is transferred to the read data packing circuit 42.
  • the read access issue timing on the address generator 40 side is controlled according to the capacity of each FIFO so that the bit shift FIFO 40a3 and the read data FIFO do not overflow.
  • the read data packing circuit 42 when data is read from the dedicated arithmetic unit (ALU) 22 using the CR2 or CR3 register, the read data packing circuit is currently read according to the value of the designated read data size (RSIZE). The data remaining in (the remaining data register) is shifted to the right.
  • the data is removed by the read data size (RSIZE), and the remaining data is stored on the LSB side.
  • the number of effective bits of the remaining data is 32 bits or more based on the difference between the data size (data size register) currently remaining in the read data packing circuit and the read data size (RSIZE), the read data Read data from the FIFO circuit 41 side is not acquired.
  • the next read data is acquired from the read data FIFO circuit 41 side.
  • the acquired read data is shifted to the left by the remaining data size and combined with the MSB side of the remaining data so that the combined data can be read from the dedicated arithmetic unit (ALU) 22 side in the next cycle.
  • ALU dedicated arithmetic unit
  • the fixed size may be set using a fixed size setting register (r_mode, r_size). Is possible.
  • the read data packing circuit 42 If the desired data does not yet exist in the read data packing circuit 42 due to the memory-side wait (Wait) or the like (the read data FIFO circuit 41 is also empty), the read data packing circuit 42 or the register file ( By providing a wait control mechanism that waits for the coprocessor instruction on the dedicated arithmetic unit (ALU) 22 side via the (REG) 23, the coprocessor instruction processing can be normally continued.
  • FIG. 13 is an explanatory diagram showing a more detailed configuration of the offset address generator 80 in the read address generator 40 shown in FIG.
  • the offset address generator 80 internally includes two offset address calculation blocks (A, B) in order to realize various bit interleaving processes (block interleaving processes) in various wireless encoding / decoding processes at high speed and easily. And one adder for adding the two outputs.
  • Each offset address calculation block (A, B) of the offset address generator 80 further includes two address calculators 81 to 82 (A1, A2) and 83 to 84 (B1, B2). . That is, the offset address generator 80 includes a total of four address calculators 81 to 84 (A1, A2, B1, B2).
  • Each of the address calculators 81 to 84 controls an initial pointer register (r_ptr_xx), a step register (r_step_xx), a memory length register (r_len_xx), a count number register (r_cnt_xx), etc.
  • a register is provided.
  • the value of the initial pointer (r_ptr_X1) is set as an initial value every time an address is output. Is updated. Normally, each time an address is output, the number of steps (r_step_X1) is added to the current address, and a remainder (Modulo) operation is performed with the memory length size (r_len_X1) as the value of the next address pointer 81a, 83a. Become.
  • the values of the address pointers 81a and 83a are updated to the addresses calculated by the address calculators (A2 and B2) on the sub side instead of the main side. .
  • each of the sub-side address calculators 82 and 84 (A2, B2) first uses the value of the initial pointer (r_ptr_X2) as an initial value, and the sub-side outputs addresses for the number of times of the count number register (r_cnt_X2). The value is updated.
  • the number of steps (r_step_X2) is added to the current address, and the remainder (Modulo) is calculated with the memory length size (r_len_X1) to be the values of the address pointers 82a and 84a on the next sub-side.
  • each offset address calculation block A, B
  • two address calculators are provided for each offset address calculation block (A, B) so that the address pointer on the main side can be updated to a value calculated on the sub side for each arbitrary access. This is to cope with changing the offset to the next column and accessing again, for example, when the address output for one column is completed and returned in block interleaving processing described later.
  • the offset address generator 80 has two address calculation blocks (A, B) provided with such two address calculators and can add the output addresses of both, thereby providing 1 bit / cycle. With this processing throughput, it becomes possible to generate a two-dimensional address that can cope with various bit interleaving processes and block interleaving processes.
  • Two address calculation blocks (A, B) can be used for two-dimensional address generation, for example, one is used for calculating the row address of the block interleave processing and the other is used for calculating the column address. is there.
  • FIG. 14 is an explanatory diagram showing an example of a general interleaving process in the encoding / decoding process of wireless communication performed by the offset address generator 80 shown in FIG.
  • general interleaving processing first, as bit interleaving processing, an input data sequence is divided into a plurality of blocks, and an output data sequence is configured to output data in order from different blocks. Prevent nearby data from being output continuously.
  • the data output order from each block is made different between the input data order and the output data order in the block by performing block interleaving processing in each block.
  • block interleaving processing for example, for the data block for a certain M rows and N columns, the input (write) side writes for each row and the output (read) side reads for each column to arrange the data order. It is a process to change.
  • the randomness is improved by changing the write start row and read start column of M rows and N columns for each block, or from each block at the time of the last output series
  • the output order is cyclic (cyclic shift processing).
  • the values of M and N in M rows and N columns vary depending on the wireless system and its internal parameters.
  • the read address generator 40 corresponding to the split transaction shown in FIG. 12 and FIG. 13 is used in the bit interleaving process (block interleaving process) in the encoding process as shown in FIG.
  • Address patterns corresponding to bit deinterleave processing can be generated continuously, and can be handled with a processing throughput of 1 bit / cycle.
  • the address calculation block A side shown in FIG. This is realized by calculating the column address of the input sequence on the address calculation block B side. Specifically, for example, the address calculator A1 calculates a row address between blocks, and the address calculator A2 calculates a row address offset in the block.
  • the number of steps (r_step_A1) and memory length (r_len_A1) for the address calculator A1 are set so that the number of addresses for one block can be jumped per cycle, and all blocks are generated and returned to the first block.
  • Each count value (r_cnt_A1, r_cnt_A2) and the number of steps on the address calculator A2 side (r_step_A2) are set so as to advance one row out of the M rows of block interleaving at the next timing.
  • the control register on the address calculation block B side is set so as to advance one column at a time among the N columns of the block interleave at the timing when one column of all blocks is generated.
  • FIG. 15 is an explanatory diagram showing an example of an operation sequence in the case where data is written to the memory via the CR2 or CR3 register in each of the memory read circuits of the memory controllers 20 to 21 shown in FIG.
  • FIG. 15 an example of reading data from the coprocessor 11 via the CR2 or CR3 register from the memory in the bit order of the interleave processing, shaping the data in the read order, and writing the data to the memory via the CR2 or CR3 register Is shown.
  • step S201 parameter setting and activation are performed for each of the address generators 30 and 40 in the memory controllers 20 to 21 (LMC, SMC) by a coprocessor parameter register setting instruction (step S201).
  • the control registers for the address calculators (A1, A2, B1, B2) are set in the memory controller on the reading side so as to be compatible with the address pattern of the interleaving process.
  • the memory controller on the reading side independently reads data from the memory with the set address generation pattern, and sequentially stores the processing data in the read data FIFO circuit 41 (step S202). At this time, where the desired bit in the read 32-bit data is mapped is stored in the bit shift FIFO at the same time as the address issuance, the desired bit data is arranged on the LSB side using the value. Data shift processing is performed by the output of the read data FIFO circuit 41 (step S203).
  • the data necessary for transfer is stored only on the LSB side in the 32 bits of the read data, so the read side sets the immediate value (imm5) of the inter-register transfer instruction to 32.
  • the fixed size is set to 1 bit by using the w_mode and w_size registers of the write data packing circuit 32 so that the write side performs packing processing one bit at a time with a data size of 32 bits (step S205).
  • the operation sequence as shown in FIG. 15 is obtained by repeating the inter-register transfer command between the memory controllers after setting the data size in this way.
  • the write data packing circuit 32 performs the packing process while shifting the transfer data, and when the data becomes a 32-bit unit, the data is sequentially output to the desired memory via the write data FIFO circuit 31 ( Step S206).
  • the coprocessor 11 of this embodiment has a processing throughput of 1 bit / cycle. Interleaving processing (deinterleaving processing) can be performed.
  • data in the memory can be prefetched in a pipeline manner without depending on the arithmetic processing in the control processor 10 or the coprocessor 11, and various kinds of data can be read.
  • the ability to issue addresses in the order of addresses corresponding to interleave patterns is the key to realizing flexible and high-speed interleaving processing.
  • FIG. 16A is an explanatory diagram illustrating an example of an encoding process in the encoding / decoding processor 100 illustrated in FIGS. 1 and 3.
  • the encoding processing on the transmission side includes scrambling (step S301), convolutional encoding (step S301) for the transmission data sequence transferred from the general-purpose processor 201 that performs Layer2 (MAC) processing. S302), puncturing (bit removal, step S303), and interleaving processing (step S304) are performed in this order, and the encoded data sequence is transferred to the modem module 206 that performs modulation processing via the shared memory. .
  • FIG. 16B is an explanatory diagram illustrating an example of a decoding process in the encoding / decoding processor 100 illustrated in FIGS. 1 and 3.
  • Decoding processing in the case of the example shown here includes deinterleaving processing (step S311) and depuncturing (bit addition, step S312) on the demodulated received data sequence transferred from the modem module 206. , Viterbi decoding (step S313) and descrambling (step S314) are performed in this order, and the decoded data sequence is transferred to the general-purpose processor 201 that performs Layer2 (MAC) processing via the shared memory 203. .
  • MAC Layer2
  • FIG. 17 shows a processing sequence example of the encoding process shown in steps S301 to S304 when the encoding / decoding processor 100 shown in FIGS. 1 and 3 performs the process shown in FIG. 16A.
  • FIG. 17 shows a processing sequence example of the encoding process shown in steps S301 to S304 when the encoding / decoding processor 100 shown in FIGS. 1 and 3 performs the process shown in FIG. 16A.
  • the encoding / decoding processing processor 100 when receiving a processing activation command from the general-purpose processor (CPU) 201 or the resource manager 202 (step S401), the encoding / decoding processing processor 100 performs encoding using the shared memory controller 21.
  • the dedicated arithmetic unit (ALU) 22 performs a scrambling process while reading the input data series from the shared memory 203 outside the encoding / decoding process (codec) module (step S402). Data is stored in the (local memory) 102 (step S403).
  • the encoding / decoding processor 100 performs a convolutional encoding process in the dedicated arithmetic unit (ALU) 22 while reading data from the data memory (local memory) 102 using the local memory controller 20 (step S404).
  • the data of the processing result is stored again in the data memory (local memory) 102 (step S405).
  • the encoding / decoding processor 100 performs the puncturing process using the local memory controller 20 and the bit concatenation / reordering instruction (PERM) (step S406), and the processing result data Is again stored in the data memory (local memory) 102 (step S407).
  • PEM bit concatenation / reordering instruction
  • the encoding / decoding processor 100 performs the interleaving process shown in FIG. 15 by sequentially reading the data using the local memory controller 20 (step S408), and after the interleaving using the shared memory controller 21 Is stored in the shared memory 203 outside the encoding / decoding processing (codec) module (step S409).
  • the encoding / decoding processor 100 After completion of the above processing, the encoding / decoding processor 100 notifies the general-purpose processor (CPU) 201 or the resource manager 202 of a processing completion notification (step S410).
  • the encoding / decoding processor 100 can realize the encoding process for the transmission data sequence by repeating the above processing sequence.
  • FIG. 18 shows in more detail a processing sequence example of the decoding process shown in steps S311 to S314 when the encoding / decoding processor 100 shown in FIGS. 1 and 3 performs the process shown in FIG. 16B.
  • FIG. 18 shows in more detail a processing sequence example of the decoding process shown in steps S311 to S314 when the encoding / decoding processor 100 shown in FIGS. 1 and 3 performs the process shown in FIG. 16B.
  • step S451 when a process activation command is received from the general-purpose processor (CPU) 201 or the resource manager 202 (step S451), the encoding / decoding process processor 100 performs encoding using the shared memory controller 21.
  • the deinterleaving process is performed by sequentially reading the input data series from the shared memory 203 outside the encoding / decoding process (codec) module (step S452).
  • the encoding / decoding processor 100 performs a depuncture (bit addition) process using the local memory controller 20 and the bit concatenation / reordering instruction (PERM) (step S454). Then, the processed data is stored in the shared memory 105 inside the encoding / decoding process (codec) module using the shared memory controller 21 (step S455).
  • the encoding / decoding processor 100 performs parameters such as a memory address and a generator polynomial for the Viterbi processing circuit 104 for Viterbi decoding processing, and activates the Viterbi processing circuit 104 (step S456).
  • the Viterbi processing circuit 104 performs Viterbi decoding processing while reading data from the shared memory 105 inside the encoding / decoding processing (codec) module in accordance with the set parameters (step S457), and the processed result data is the same. Is stored in the shared memory 105 (step S458).
  • the completion of the Viterbi decoding process is notified to the encoding / decoding processor 100 by a process completion interrupt (step S459).
  • the encoding / decoding processor 100 reads the data from the shared memory 105 in the encoding / decoding process (codec) module using the shared memory controller 21 (step S460), and uses the dedicated arithmetic unit (ALU). ) 22, the descrambling process is performed, and the data is stored in the shared memory 203 outside the encoding / decoding process (codec) module (step S461).
  • the encoding / decoding processor 100 After the above processing is completed, the encoding / decoding processor 100 notifies the general-purpose processor (CPU) 201 or the resource manager 202 of a processing completion notification (step S462). The encoding / decoding processor 100 can realize the decoding process for the received data sequence by repeating the above processing sequence.
  • mapping configuration of dedicated arithmetic unit (ALU) 19 maps the convolutional coding process and the scrambling (descrambling) process in the coding / decoding processor 100 shown in FIGS. 1 and 3 to the dedicated arithmetic unit (ALU) 22 in the coprocessor 11.
  • 6 is an explanatory diagram illustrating a mapping configuration example when processing is performed, that is, a setting example of a parameter register 60.
  • the convolutional encoder 51 shown in FIG. 7 is operated as the convolutional encoder 501 corresponding to this standard.
  • 0x2 (coding rate 1/2 setting) is set as the operation mode (mode)
  • 0x6CE4 is set as the generator polynomial (poly).
  • the convolutional encoder 51 can be operated as the convolutional encoder 501 corresponding to the IEEE 802.16e (WiMAX) standard.
  • the operation mode (mode) is set to 0x2.
  • the generator polynomial (poly) may be set to 0x1200. Accordingly, the scrambling circuit 50 operates as a scrambling circuit 502 corresponding to the IEEE 802.11a (wireless LAN) standard.
  • each arithmetic unit in the dedicated arithmetic unit (ALU) 22 can cope with encoding / decoding processes in various wireless systems that have already been standardized by simply changing the parameter setting. It also has the flexibility to cope with specification changes predicted in the future.
  • FIG. 20 is an explanatory diagram showing a description example of the processor processing program when the convolutional encoding process and the scrambling (descrambling) process in the encoding / decoding processor 100 shown in FIGS. 1 and 3 are performed.
  • step S401a the setting of the read address generator 40 to the shared memory controller 21 and the setting of the write address generator to the local memory controller 20 are performed using the parameter register setting instruction. Setting is performed (step S401a).
  • a value obtained by dividing the processing data bit size (num_bit_size) by 32 (num1) is the number of times the addresses are generated.
  • 0x218000 indicates an example of the start address of the shared memory 203 to be read
  • 0x118000 indicates an example of the start address of the data memory (local memory) 102 to be written.
  • step S401b As setting of the parameter register 60 for the scrambling circuit 50 of the dedicated arithmetic unit (ALU) 22, operation mode setting, TAP initial value setting, and generation polynomial (poly) setting are performed (parameter register setting instruction, step S401b). Thereafter, in this example, the shared memory controller 21 and the local memory controller 20 that have been set with parameters are activated (step S401c).
  • ALU dedicated arithmetic unit
  • step S401d the 8-bit scrambling instruction (SCRAM), which is an arithmetic instruction between coprocessors, is repeated four times, that is, the 32-bit scrambling instruction (SCRAM) is repeated by the for statement for the processing data bit size.
  • SCRAM 8-bit scrambling instruction
  • FIG. 20 shows an example of scrambling (descrambling) processing, but other convolution encoding processing, bit concatenation / reordering processing, interleaving processing, and the like are described in the same manner. Is possible.
  • the wireless communication device 301 is dedicated hardware that performs interleaving / deinterleaving processing of transmission data and reception data in addition to the configuration of the wireless communication device 1 of the first embodiment.
  • An interleave processing circuit 404c is provided.
  • the encoding / decoding processor 400 performs processing other than error correction decoding of received data and interleaving / deinterleaving processing of transmission data and received data.
  • FIG. 21 is an explanatory diagram showing a configuration of the wireless communication device 301 using the encoding / decoding processor 400 according to the second embodiment of the present invention. Except for the point that the encoding / decoding process (codec) module 200 of the wireless communication apparatus 1 shown in FIG. 3 is replaced with another encoding / decoding process (codec) module 220, the wireless communication apparatus 301 of FIG. The configuration is the same as that of the wireless communication device 1.
  • the processor 100 of the encoding / decoding process (codec) module 200 shown in FIG. 3 is replaced with another encoding / decoding process processor 400.
  • the encoding / decoding processing (codec) module 200 has the same configuration except that the interleaving processing circuit 404c (DMA controller) is provided in parallel with the Viterbi processing circuit 104a and the turbo processing circuit 104b.
  • the interleave processing circuit 404c is a circuit for realizing various interleaving processing and deinterleaving processing (hereinafter referred to as interleaving / deinterleaving processing) in various wireless systems. That is, in the encoding / decoding processor 400, among the encoding / decoding processes, Viterbi decoding, turbo decoding, and interleaving / decoding in which parallel processing is difficult are difficult because the processing amount is enormous and the processor processing is insufficient. Each interleave process is performed using a Viterbi processing circuit 104a, a turbo processing circuit 104b, and an interleave processing circuit 404c, which are dedicated hardware.
  • the interleaving process in the encoding process and the deinterleaving process in the decoding process can be performed using a dedicated interleave processing circuit (DMA controller).
  • DMA controller dedicated interleave processing circuit
  • the interleaving / deinterleaving processing which is difficult to perform the parallel operation for each bit and has a processing throughput of 1 bit / cycle at the maximum, is a dedicated hardware process. While performing the interleaving process for the previous data block, the convolutional encoding process for the next data block can be executed simultaneously by the encoding / decoding processor, so that the speed of parallel processing can be increased. The maximum processing throughput can be improved by load balancing.
  • FIG. 22 is an explanatory diagram showing a more detailed configuration of the encoding / decoding processor 400 shown in FIG.
  • the encoding / decoding processor 400 is an encoding / decoding processor except that the coprocessor 11 of the encoding / decoding processor 100 shown in FIG. 1 is replaced with another coprocessor 411. 100 has the same configuration.
  • FIG. 23 is an explanatory diagram showing a more detailed configuration of the coprocessor 411 shown in FIG.
  • the local memory controller (LMC) 20 and the shared memory controller (SMC) 21 of the coprocessor 11 are replaced with different local memory controllers (LMC) 420 and shared memory controllers (SMC) 421, respectively.
  • LMC local memory controller
  • SMC shared memory controller
  • FIG. 24 is an explanatory diagram showing a more detailed configuration of the local memory controller (LMC) 420 and the shared memory controller (SMC) 421 shown in FIG.
  • the local memory controller (LMC) 420 and the shared memory controller (SMC) 421 include the read address generator 40 and the read data FIFO circuit 41 of the local memory controller (LMC) 20 and the shared memory controller (SMC) 21 in the first embodiment.
  • the second embodiment is the same as the first embodiment except that the read address generator 44 and the read data FIFO circuit 45 are replaced.
  • the local memory controller (LMC) 20 and the interleaving / deinterleaving processing in various wireless communication systems can be handled with a processing throughput of 1 bit / cycle.
  • the read address generator 40 provided in each of the shared memory controller (SMC) 21 includes two offset address calculation blocks each including two address calculators, and a desired bit position in the 32-bit data is placed on the LSB side. A bit shift FIFO for shifting, a shift circuit, and the like were provided.
  • the interleaving process and the deinterleaving process are processed by the dedicated interleave processing circuit 404c, so that the encoding / decoding processor 400 does not need to perform the process. Therefore, in the local memory controller (LMC) 420 and the shared memory controller (SMC) 421, the configuration of the read address generator 44 on the read side is different from that of the read address generator 40 in the first embodiment.
  • the configuration and operation of the write address generator 30, write data FIFO circuit 31, and write data packing circuit 32 on the write side are the same as in the first embodiment.
  • the read address generator 44 in the second embodiment has substantially the same configuration as the write address generator 30, and includes a start register (r_start), a base address register (r_base), an initial pointer register (r_ptr), and a step register (r_step). And a control register 44a1 such as a memory length register (r_len) and an access count register (r_cnt).
  • a current address pointer register 44a3 an adder (two), a remainder calculator (comparator and subtractor), a comparator for counting the number of accesses, a subtractor, etc., for actually calculating an address A container 44a2.
  • the read address generator 44 in the second embodiment uses a base address register (r_base), an initial pointer register (r_ptr), a step register (r_step), a memory length register (r_len), and the number of accesses in response to a parameter setting instruction of the coprocessor.
  • a value is set in the control register 44a1 such as a register (r_cnt) and the control register 44a1 is activated by setting the start register (r_start), a read address to the memory is independently generated, and the access count register (r_cnt) is continuously generated. Issue.
  • the read address generator 44 responds to a split transaction at the time of reading by issuing a read address speculatively. Basically, an address obtained by adding the current address pointer to the base address (r_base) is issued.
  • the current address pointer register 44a3 uses the value of the initial pointer (r_ptr) as an initial value and is updated each time an address is output. Each time an address is output, the address calculator 44a2 adds the number of steps (r_step) in 32-bit address units to the current address, and performs a remainder (Modulo) operation with the memory length size (r_len). The current address pointer.
  • Data (RDAT) read from the memory is transferred to the dedicated arithmetic unit (ALU) 22 side via the read data FIFO circuit 45 and the read data packing circuit 42.
  • Data (RDAT) read from the memory is sequentially stored in the read data FIFO circuit 45 and sequentially transferred to the read data packing circuit 42.
  • the address generation unit in the read address generator 44 is a 32-bit unit that is the same as the memory address, the bit shift process for shifting a desired bit to the LSB side is not performed.
  • the read data packing circuit 42 when data is read from the dedicated arithmetic unit (ALU) 22 by using the CR2 or CR3 register, as in the first embodiment, the read data packing circuit 42 has a specified read data size (RSIZE). According to the value, the data currently remaining in the read data packing circuit (remaining data register) is right-shifted, and if the number of effective bits of the remaining data is 32 bits or more, the read data from the read data FIFO circuit 45 side Do not get.
  • RSIZE read data size
  • the read data packing circuit 42 acquires the next read data from the read data FIFO circuit 45 side.
  • the acquired read data is shifted to the left by the remaining data size and coupled to the MSB side of the remaining data.
  • the combined data is stored in the data register (remaining data register) so that it can be read from the dedicated arithmetic unit (ALU) 22 side.
  • the fixed size may be set using a fixed size setting register (r_mode, r_size). Is possible.
  • the first effect is that the encoding / decoding processing module in the wireless communication system can flexibly cope with various encoding / decoding processes in a plurality of wireless communication systems.
  • the encoding / decoding processing processors 100 and 400 connect a coprocessor 11 or 411 dedicated to encoding / decoding processing (bit / byte arithmetic processing) to a general control processor,
  • the scrambling circuit 50, the convolutional code, and the logic unit (ALU) 22 of the coprocessor 11 can set processing parameters such as operation mode (programmable) and can process a plurality of bits in parallel in one cycle. This is because it includes an encoder 51, a CRC encoder 52, a bit concatenation (rearrangement) circuit 53, and the like.
  • the encoding / decoding processing processors 100 and 400 thus realize a plurality of encoding / decoding processing arithmetic units that can be parameter-set as a coprocessor of a control processor that can be processed flexibly. Therefore, it is possible to respond flexibly and at high speed to various encoding / decoding processes (bit / byte arithmetic processes) in the wireless system.
  • the coprocessor 11 includes memory controllers 20 to 21 for accessing the memory, and each memory controller makes a coprocessor operation instruction for performing encoding / decoding processing independent of a cycle for actually accessing the memory.
  • Data packing circuits 32 and 42 that perform packing processing of read data and write data according to the number of processing bits in each of the data FIFO circuits 31 and 41 and the logical operation unit (ALU) 22 of the coprocessor 11. This is also one of the reasons why the encoding / decoding processor 100 and 400 can improve the flexibility to cope with various encoding / decoding processes.
  • the encoding / decoding processor 100 and 400 can specify the number of processing bits in the logic unit (ALU) 22 by a coprocessor operation instruction dedicated to the encoding / decoding processing, and the data packing circuits 32 and 42. Because it is possible to absorb the change in the number of processing bits when reading or writing data without cycle overhead, it can flexibly support encoding / decoding processing (bit / byte arithmetic processing) in various wireless systems. It becomes possible.
  • the read address generator 40 in the memory controllers 20 to 21 in the first embodiment it is possible to flexibly with 1 bit / cycle processing throughput for various interleaving processes (deinterleaving processes) in various wireless systems. There is also an advantage of being able to cope.
  • the read address generator 40 has two offset address calculation blocks each including two address calculators, and adds the output addresses of the two addresses to output them, thereby performing various block interleaving processes. This occurs because a two-dimensional interleaved address pattern including it can be flexibly accommodated by a single control register setting.
  • the read address generator 40 is provided with a mode setting register which can change the address unit such as 1 bit, 8 bits, 32 bits, etc., so that 1-bit / data interleaving processing on the transmission side and 8-bit / data on the reception side are provided. It is also possible to obtain the advantage of being able to flexibly handle data deinterleaving processing and the like.
  • the second effect is realized in the encoding / decoding module 200 in the wireless communication apparatus 1 by the software processing by the encoding / decoding processing processors 100 and 400 with emphasis on flexibility in the encoding and decoding processing. Even in such a configuration, encoding / decoding processing including memory access latency can be realized at high speed, such as simultaneous calculation of a plurality of bits (bytes).
  • a coprocessor 11 dedicated to encoding / decoding processing (bit / byte arithmetic processing) is connected to a general control processor, and the coprocessor to the memory is connected.
  • the access includes the memory controllers 20 to 21 having an address generation function, a FIFO function, and a data packing function that can conceal the memory access latency.
  • the operation mode and the like can be set (programmable), and a plurality of bits can be processed in parallel in one cycle. It is one of the reasons why it is possible to increase the speed of the device 51, the CRC encoder 52, the bit concatenation (reordering) circuit 53, and the like.
  • the encoding / decoding processors 100 and 400 use, for example, 8 bits / cycle by using a coprocessor processing instruction utilizing the coprocessor logic unit (ALU) 22 and the memory controllers 20 to 21.
  • ALU coprocessor logic unit
  • interleaving processing in various wireless systems is 1 bit / cycle. There is also an advantage that it can be realized with a processing throughput of.
  • the number of processing cycles of about 10 cycles is required to calculate an interleave address for 1 bit, and the number of processing cycles corresponding to memory access latency is also required for data copy processing between memories.
  • the realization of various interleaving processes at 1 bit / cycle is a great advantage of this embodiment.
  • the greatest effect of this embodiment is that it has the advantage of flexibility corresponding to a plurality of wireless systems as the first effect, and the encoding / decoding process as the second effect is 8 bits / cycle or 1 bit / cycle. Two advantages of high speed realized by the processing throughput of the cycle can be realized simultaneously.
  • the first point includes a plurality of encoding / decoding processing circuits such as a convolutional encoder capable of setting parameters and processing a plurality of bits in one cycle as a logical processor (ALU) 22 of the coprocessor.
  • ALU logical processor
  • memory controllers 20 to 21 are premised on stream access that operates in parallel independently of coprocessor arithmetic processing, and the memory access latency of processors that are generally difficult to increase in speed can be hidden. Is a point.
  • the third point is that the data bus width on the memory side and the instruction on the dedicated ALU (arithmetic unit) side are set so that processing overhead does not occur between the logic unit (ALU) 22 operating in parallel and the memory controllers 20 to 21.
  • the data packing circuits 32 and 42 for shifting and packing data according to the number of processing bits, FIFOs 31 and 41 for temporarily storing data, and processing on the coprocessor side even when this FIFO is empty or full This is because a wait control mechanism is provided so that the system does not fail. Due to the synergistic effect of the above three points, the encoding / decoding processor 100 and 400 can achieve both flexibility and high speed.
  • a third effect is that various encoding / decoding processes in a plurality of wireless systems can be realized with lower power consumption, that is, with high power efficiency.
  • each arithmetic circuit such as the circuit 53 can be parameterized (programmable) in the operation mode, and can process multiple bits in parallel in one cycle, but the circuit configuration is almost the same as that of dedicated hardware This is because the configuration is realized.
  • these arithmetic circuits are configured to be flexible enough to support a plurality of radio systems, but are dedicated arithmetic units that can be realized with a processing throughput of 8 bits / cycle or 1 bit / cycle, for example. It is configured. As a result, it is possible to realize an encoding / decoding processing module with high power efficiency and excellent balance between processing performance and power consumption.
  • the Viterbi decoding process and the turbo decoding process which have a larger amount of processing and are more dedicated hardware, are realized by the Viterbi processing circuit 104a and the turbo processing circuit 104b, which are dedicated hardware, respectively.
  • the overall system configuration can be selected depending on the trade-off, such as being realized by an encoding / decoding processor with emphasis on flexibility, and power efficiency can be reduced. It is an advantage of the present invention that it can be improved.
  • the interleaving process may be insufficient.
  • the deinterleaving process is realized by using the interleave processing circuit 404c which is a dedicated hardware circuit, thereby further improving the power efficiency.
  • the write address generator 30 and the read address generator 44 are realized with substantially the same configuration as shown in the second embodiment. Therefore, the circuit scale can be reduced as compared with the encoding / decoding processor 100 according to the first embodiment, and the encoding / decoding processor 400 and the interleave processing circuit 404c can be operated in parallel. There is an advantage that it can be operated at a low clock frequency.
  • the fourth effect is that it is possible to flexibly cope with future specification changes and specification expansions in various encoding / decoding processes in a plurality of wireless systems.
  • the encoding / decoding processors 100 and 400 do not have a configuration in which a control processor and a dedicated hardware circuit are combined, but an encoding / decoding process (bit / byte operation) with respect to a general control processor 10. This is because processing (instructions) can be specified by software in units of one cycle by realizing by connecting the dedicated coprocessor 11.
  • the processor software description can be changed even when the processing order and processing parameters are changed due to the specification change of the encoding / decoding processing in the existing wireless system, or when the processing is added due to the specification extension. And has the advantage of being flexible.
  • the arithmetic unit portion of the encoding / decoding process (bit / byte processing) in the coprocessor 11 is a dedicated circuit capable of setting parameters, but the processing data unit and the number of loops in a series of encoding / decoding processes Are handled by a loop instruction (loop circuit) in the control processor 10, the change of the processing data unit, the number of loops, etc. can be sufficiently handled by the original function of the control processor 10.
  • An encoding / decoding processor that is incorporated in a wireless communication device and performs communication data encoding and decoding processing, Having a coprocessor dedicated to the encoding and decoding processes;
  • the coprocessor is A parameter register that stores settings for the operation mode and generator polynomial given from the outside;
  • An encoding / decoding comprising: an arithmetic circuit that operates based on the operation mode and a generator polynomial, and performs arithmetic operations necessary for the encoding and decoding processes in parallel for a plurality of bits in one cycle Processing processor.
  • the coprocessor includes a memory controller for accessing an internal or external storage device, This memory controller An address generator circuit that performs an operation of outputting an address on the storage device that independently reads and writes data according to a parameter given from the outside; and A FIFO (First In First Out) circuit for temporarily storing data to be written to the output address on the storage device or data read from the address;
  • Decryption processor decryption processor.
  • the data write address generator circuit includes: A control register for storing each of the initial pointer, the number of steps, and the memory length; An address calculator that outputs a result obtained by performing a remainder operation on a memory length value obtained by adding the value of the number of steps each time an address is issued, with the value of the initial pointer as an initial value.
  • the data read address generator circuit includes: Multiple offset address calculation modules; With an adder that adds the issued address from the offset address calculation module to the actual offset address,
  • the offset address calculation module includes first and second address calculators, and the address pointer of the first address calculator is set to the second address every fixed number of times with a count value given from outside. 4.
  • the data read address generator circuit includes: A shift circuit that shifts the issued offset address to the memory address unit according to the address unit setting given from the outside; 6.
  • the memory controller is From the arithmetic circuit side, a normal access function for reading the data stored in the designated register access number of the storage device and updating the stored contents of the register access number; 3.
  • the encoding / decoding processor according to appendix 2 further comprising a peep function for reading data stored in a specified register access number of the storage device without updating from the arithmetic circuit side. .
  • the said arithmetic circuit is according to the said operation mode and generator polynomial given from the outside,
  • the encoding / decoding according to appendix 1 characterized by having a function of performing any one or more of a scrambling process, a convolutional encoding process, a CRC encoding process, and a bit concatenation / reordering process Processing processor.
  • An encoding / decoding process (codec) module that performs encoding processing of transmission data to be transmitted to the outside and decoding processing of reception data received from the outside is provided.
  • the encoding / decoding process (codec) module is At least one of a Viterbi processing circuit and a turbo processing circuit, which are dedicated hardware for performing Viterbi decoding and turbo decoding of the received data;
  • a wireless communication apparatus comprising: the encoding / decoding processor according to any one of supplementary notes 1 to 8 that performs processing other than Viterbi decoding and turbo decoding of the received data.
  • the encoding / decoding process (codec) module is An interleave processing circuit that is dedicated hardware for performing interleaving / deinterleaving processing of the transmission data and the reception data; Appendix 9 characterized in that the encoding / decoding processor performs processes other than Viterbi decoding and turbo decoding of the received data and interleaving / deinterleaving processing of the transmission data and the received data.
  • it is suitable for a wireless communication apparatus that supports a plurality of wireless systems with one apparatus.
  • a wireless communication device is also effective in reducing the size and weight, reducing the cost, and increasing the communication speed.

Abstract

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

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に記載の無線通信装置。
PCT/JP2012/052696 2011-02-10 2012-02-07 符号化/復号化処理プロセッサ、および無線通信装置 WO2012108411A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012556890A JPWO2012108411A1 (ja) 2011-02-10 2012-02-07 符号化/復号化処理プロセッサ、および無線通信装置
US13/984,792 US8989242B2 (en) 2011-02-10 2012-02-07 Encoding/decoding processor and wireless communication apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2011-026885 2011-02-10
JP2011026885 2011-02-10

Publications (1)

Publication Number Publication Date
WO2012108411A1 true WO2012108411A1 (ja) 2012-08-16

Family

ID=46638624

Family Applications (1)

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

Country Status (3)

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

Cited By (2)

* 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
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
KR20200088701A (ko) * 2019-01-15 2020-07-23 에스케이하이닉스 주식회사 커맨드 생성 방법 및 이를 이용한 반도체장치
CN117375651A (zh) * 2022-06-30 2024-01-09 深圳市中兴微电子技术有限公司 数据收发系统、数据接收方法及数据发送方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0918354A (ja) * 1995-07-04 1997-01-17 Oki Electric Ind Co Ltd 周期冗長検査方式の誤り検出符号生成装置及び誤り検出装置
JPH11274942A (ja) * 1998-03-19 1999-10-08 Anritsu Corp ビタビ復号器
JP2000148975A (ja) * 1998-11-09 2000-05-30 Sony Corp 画像処理装置
JP2000209102A (ja) * 1998-12-30 2000-07-28 Texas Instr Inc <Ti> リ―ドソロモン符号器/復号器装置

Family Cites Families (15)

* 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
CA2283859C (en) 1997-02-24 2005-08-02 At&T Wireless Services, Inc. Highly bandwidth-efficient communications
US6272257B1 (en) * 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US6327690B1 (en) * 1999-02-04 2001-12-04 Intel Corporation Integrated reed-solomon error correction code encoder and syndrome generator
KR100775547B1 (ko) 1999-02-05 2007-11-09 텐실리카 인코포레이티드 구성가능한 프로세서를 설계하기 위한 프로세서 자동 생성시스템 및 방법
JP3593648B2 (ja) 1999-04-02 2004-11-24 富士通株式会社 チャネルコード・デコード装置及び基地局
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
JP2001034573A (ja) 1999-07-23 2001-02-09 Matsushita Electric Ind Co Ltd メモリアクセスシステム及び方法
AU2002327187A1 (en) 2001-07-02 2003-01-21 Globespan Virata Incorporated Communications system using rings architecture
AU2003253826A1 (en) * 2002-07-08 2004-01-23 Globespanvirata Incorporated Dma scheduling mechanism
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
US8095173B2 (en) 2005-08-22 2012-01-10 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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0918354A (ja) * 1995-07-04 1997-01-17 Oki Electric Ind Co Ltd 周期冗長検査方式の誤り検出符号生成装置及び誤り検出装置
JPH11274942A (ja) * 1998-03-19 1999-10-08 Anritsu Corp ビタビ復号器
JP2000148975A (ja) * 1998-11-09 2000-05-30 Sony Corp 画像処理装置
JP2000209102A (ja) * 1998-12-30 2000-07-28 Texas Instr Inc <Ti> リ―ドソロモン符号器/復号器装置

Cited By (2)

* 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
JP2014174868A (ja) * 2013-03-12 2014-09-22 Nec Corp メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Also Published As

Publication number Publication date
JPWO2012108411A1 (ja) 2014-07-03
US20130322501A1 (en) 2013-12-05
US8989242B2 (en) 2015-03-24

Similar Documents

Publication Publication Date Title
WO2012108411A1 (ja) 符号化/復号化処理プロセッサ、および無線通信装置
US8880850B2 (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) 효율적인 비트 이동 능력을 갖춘 데이터 프로세서 및 그 방법
EP2235622B1 (en) Apparatus and method for performing permutation operations on data
CN100541425C (zh) 标量/矢量处理器
CN107111489B (zh) 莫顿坐标调整处理器、方法、系统和指令
CN108681465B (zh) 用于产生整数序列的处理器、处理器核及系统
US20060259740A1 (en) Software Source Transfer Selects Instruction Word Sizes
US6574724B1 (en) Microprocessor with non-aligned scaled and unscaled addressing
JP5692780B2 (ja) マルチコア型誤り訂正処理システムおよび誤り訂正処理装置
KR20170097011A (ko) 벡터 비트 반전 및 크로싱을 수행하기 위한 방법 및 장치
US8775750B2 (en) Interleaver with parallel address queue arbitration dependent on which queues are empty
CN102037652A (zh) 包括存储器组的数据处理系统和数据重排
EP2674855A1 (en) An element selection unit and a method therein
KR20170059478A (ko) 4d 좌표로부터 4d z-곡선 인덱스를 계산하기 위한 머신 레벨 명령어들
KR20170059477A (ko) 3d 좌표들로부터 3d z-곡선 인덱스를 계산하는 머신 레벨 명령어들
CA2572954A1 (en) Programmable processor system with two types of sub-processors to execute multimedia applications
US20070198901A1 (en) Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
US6889320B1 (en) Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US6766440B1 (en) Microprocessor with conditional cross path stall to minimize CPU cycle time length
CN114721624A (zh) 用于处理矩阵的处理器、方法和系统
EP2751671B1 (en) Digital signal processor and baseband communication device
JP6191172B2 (ja) メモリコントローラ、プロセッサ、演算処理方法、及び、演算命令ライブラリ。

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12744682

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2012556890

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 13984792

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12744682

Country of ref document: EP

Kind code of ref document: A1