1. A receiver for a spread spectrum communication system in which a transmitter transmits a data signal to a receiver, the receiver comprising: a memory for storing digital representations of a data signal received by the receiver; a barrel shift input to the memory to define a circulating data window; a first ring shift register for circulating a first set of components of a spreading code; a second ring shift register for circulating a second set of components of a spreading code; a selector for selecting one of the first set of components or the second set of components as selected components of the spreading code; and an adder for receiving as inputs digital representations of the data signal from the circulating data window and the selected components of the spreading code, a barrel shift output from the memory for providing selected outputs from the memory as inputs to the adder, the adder for providing as an output the dot product of the inputs.