If we have data we need to transmit which is $$i$$, so we should multiply is using XOR function with spreading code $$y$$.

How many bits (Maximum and Minimum) should $$i$$ and $$y$$ can have ?

There's no lower and upper general limits, aside from the fact that you need to transmit at least 1 bit, and that your spreading sequence should be longer than 1.

By the way, you typically apply spreading to symbols, not bits.

Spreading sequences can be binary, but they don't have to be.

So, bits is the wrong unit here; symbols for $$i$$ would be right, and chips for $$y$$.

• Thank you so much, Ok noted. I watched the basic of that operation in this link, youtube.com/watch?v=XJ81CuujwYE .. when it says there spreading code, that can be any value ? or it's constant. For example, according to that video, if i have user #1 which is 00, I can give him any spreading code with length =4 , and then continue the process ? or that spreading code is constant for every user ? – New_student Nov 25 '18 at 8:07
• I mean the spreading code can be generated randomly or there is a rule for generating them ? – New_student Nov 25 '18 at 8:14
• Since we're talking about using codes to multiplex between multiple users: each user needs to have their own code, and the codes must be sufficiently low in cross-correlation so that what was meant for one user doesn't disturb what the other receives. In a perfectly synchronous system, that requirement is fulfilled by orthogonality (in the vector space sense); the problem is actually harder than just finding a set of orthogonal vectors: Typically, such sequences need to still be pretty orthogonal under non-perfect time synchronization, and under some frequency shift. – Marcus Müller Nov 25 '18 at 10:04
• There's books (in fact, bookshelves, probably) on the design of CDMA systems alone, and I'm pretty sure that you won't need a high level of insight, but take away these points: 1. to perfectly separate $N$ users, you need $N$ orthogonal spreading sequences. If you understand each sequence as a vector: that's an ONB of an $N$-dimensional space. 2. Real-world systems can't be assumed to be perfectly synchronous; you can e.g. see that if you assume that any of the channel realizations used have a significant multipath, then you not only need the orthogonality (from 1), but orthogonality under – Marcus Müller Nov 25 '18 at 10:08
• time shift. That "very small cross-correlation function for non-zero delays" property is impossible to achieve with the $N$ orthogonal sequences, so trade-offs are made. 3. same goes for any system that experiences Doppler effect and oscillator inaccuracies, i.e. frequency shifts. You need to do a trade off between sequence length (hence, 1/data speed), orthogonality under perfect sync and zero cross- and autocorrelation for zero delay. – Marcus Müller Nov 25 '18 at 10:11