IP Library › Granted Patent US 9,489,197
Granted Patent B2
US 9,489,197 · App. 14/327,022 · Granted Nov 8, 2016

Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems

Inventors: Mujibur Rahman (Plano, TX); Peter Richard Dent (Northamptonshire, GB); Timothy David Anderson (University Park, TX); Duc Quang Bui (Grand Prairie, TX)
Assignee: TEXAS INSTRUMENTS INCORPORATED
G06F9/3001G06F9/3013G06F9/30036G06F9/30094G06F9/3853G06F9/3895G06F17/15
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,489,197
App. No.
14/327,022
Granted
Nov 8, 2016
Kind
B2
Abstract

This invention is a digital signal processor capable of performing correlation of data with pseudo noise for code division multiple access (CDMA) decoding using clusters. Each cluster includes plural multipliers. The multipliers multiply real and imaginary parts of packed data by corresponding pseudo noise data. Within a cluster the real parts and the imaginary parts of the products are summed separately. This forms plural complex number outputs equal in number to the number of clusters. The pseudo noise data is offset relative to the data input differing amounts for different clusters. The clusters are divided into first half clusters receiving data from even numbered slots and second half clusters receiving data from odd numbered slots. The correlation unit includes a mask input to selectively zero a multiplier product.

Claims (50)

1. A digital signal processor comprising:

a data register file including a plurality of data registers storing data, each data register designated by a corresponding register number;

an instruction memory storing instructions each specifying a data processing operation and at least one data operand by register number;

an instruction decoder connected to said instruction memory for sequentially recalling instructions from said instruction memory and determining said specified data processing operation and said specified at least one operand;

an operational unit connected to said data register file and said instruction decoder for performing data processing operations upon at least one operand corresponding to an instruction decoded by said instruction decoder, said data processing operations including performing a correlation operation comprising plurality of clusters, each cluster producing a complex number output and including

a plurality of complex multipliers, each complex multiplier having a first input receiving corresponding separate real part and imaginary part packed within data stored in a first instruction specified data register, a second input receiving corresponding pseudo noise data packed within data stored in a second instruction specified data register, and a real product output and an imaginary product output,

a real summer connected to said real product output of each complex multiplier in said cluster forming a sum of said real product outputs forming a real part of said complex number output, and

an imaginary summer connected to said imaginary product output of each complex multiplier in said cluster forming a sum of said imaginary product outputs forming an imaginary part of said complex number output; and

wherein said pseudo noise data is offset relative to said separate real and imaginary parts packed within data stored in the first instruction specified data register by a differing amount for different clusters.

2. The digital signal processing of claim 1 , wherein:

each of said plurality of complex multipliers of each cluster further receives a mask input, wherein said product output is 0 if said corresponding mask input has a first digital state.

3. The digital signal processing of claim 2 , wherein:

each of said plurality of complex multipliers of each cluster comprises:

a controllable swap unit having a first input receiving a corresponding real part packed within data stored in said first instruction specified data register, a second input receiving a corresponding imaginary part packed within data stored in said first instruction specified data register, a first output, a second output and a control input, said controllable swap unit

passing data received at said first input to said first output and data received at said second input to said second output upon receiving a first digital signal at said control input, and

passing data received at said first input to said second output and data received at said second input to said first output upon receiving a second digital signal opposite to said first digital signal at said control input,

a first arithmetic inverse unit having an input connected to said first output of said controllable swap unit, an output and a control input, said first arithmetic inverse unit

passing data received at said input to said output unchanged upon receiving a first digital signal at said control input, and

forming an arithmetically inverse of said data received at said input and passing said arithmetically inverse data to said output upon receiving a second digital signal at said control input,

a second arithmetic inverse unit having an input connected to said second output of said controllable swap unit, an output and a control input, said second arithmetic inverse unit

passing data received at said input to said output unchanged upon receiving a first digital signal at said control input, and

forming an arithmetic inverse of said data received 38 at said input and passing said arithmetic inverse data to said output upon receiving a second digital signal at said control input,

a first OR gate having a first input connected to said output of said first arithmetic inverse unit, a second input receiving said mask input and an output producing a real output of said multiplier,

a second OR gate having a first input connected to said output of said second arithmetic inverse unit, a second input receiving said mask input and an output producing an imaginary output of said multiplier,

a first decoder receiving corresponding pseudo noise data having an output connected to said control input of said controllable swap unit

generating a first digital signal if said corresponding pseudo noise data is 1 or −1, and

generating a second digital signal if said corresponding pseudo noise data is j or −j,

a second decoder receiving corresponding pseudo noise data having an output connected to said control input of said first arithmetic inverse unit

generating a first digital signal if said corresponding pseudo noise data is 1 or −j, and

generating a second digital signal if said corresponding pseudo noise data is j or −1, and

a third decoder receiving corresponding pseudo noise data having an output connected to said control input of said second arithmetic inverse unit generating a first digital signal if said corresponding pseudo noise data is 1 or j, and

generating a second digital signal if said corresponding pseudo noise data is −j or −1.

4. The digital signal processing of claim 3 , wherein:

said second instruction specified data register stores said corresponding pseudo noise data packed in a two bit code, wherein “00” indicates a pseudo noise data value of 1, “01” indicates a pseudo noise data value of j, “10” indicates a pseudo noise data value of −j and “11” indicates a pseudo noise data value of −1.

5. The digital signal processing of claim 3 , wherein:

said instructions stored in said instruction memory each specifying a data width of said specified processing operation;

said instruction decoder further determining said specified data width of said specified processing operation; and

said controllable swap unit, said first arithmetic inverse unit, said second arithmetic inverse unit, said first OR gate and said second OR gate are configured to have a data width corresponding to said specified data width of said specified processing operation.

6. The digital signal processor of claim 1 , wherein:

said clusters are divided into a first half receiving separate real and imaginary parts packed within even slots of data stored in said first instruction specified data register and a second half receiving separate real and imaginary parts packed within odd slots of data stored in said first instruction specified data register.

7. The digital signal processor of claim 1 , wherein:

said pseudo noise data has one of the values of the set 1, j, −j and −1.

8. The digital signal processor of claim 7 , wherein:

said real product output of each multiplier is said real part input and said imaginary product output of each multiplier is said imaginary part input if said pseudo noise data is 1;

said real product output of each multiplier is an arithmetic inverse of said imaginary part input and said imaginary product output of each multiplier is said real part input if said pseudo noise data is j;

said real product output of each multiplier is said imaginary part input and said imaginary product output of each multiplier is an arithmetic inverse of said real part input if said pseudo noise data is −j; and

said real product output of each multiplier is an arithmetic inverse of said real part input and said imaginary product output of each multiplier is an arithmetic inverse of said imaginary part input if said pseudo noise data is −1.

9. The digital signal processor of claim 1 , wherein:

said instructions stored in said instruction memory further specify a data destination by a register number; and

said operational unit is further operable to store said complex number outputs as packed data within a data register specified by said data destination of said corresponding instruction.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 5, 2014
From: RAHMAN, MUJIBUR; DENT, PETER RICHARD; ANDERSON, TIMOTHY DAVID; BUI, DUC QUANG
To: TEXAS INSTRUMENTS INCORPORATED
Reel/Frame 033681/0820 →
Continuity (2)
Provisional Application 61844142 · Jul 9, 2013
Related Publication 20150019842A1 · Jan 15, 2015