Processing OBPSK as OQPSK

I'm trying to create and process an OBPSK signal, which, as I understand it, transmits even bits on one axis and the odd bits on the opposite axis, resulting in a constellation with 4 unique points. OBPSK seems to be somewhat rare, and a lot of software doesn't have functions to handle it. I created it (if I understand it correctly) by modulating the even and odd bits as BPSK separately, and rotating one of them by 90 degrees. However, with 4 constellation points, it seems similar to QPSK, or more specifically OQPSK, which is common with software having built in functions for modulation, etc. Is there some way to process OPSK, perhaps with some sort of transformation and/or change in data rate, as OQPSK?

• You might want to look at this answer to get some ideas about the issues. If the input to a QPSK modulator is two parallel bitstreams (odd bits on one, even bits on the other), you get QPSK. If the input is serial, you get OQPSK. Or, you can get OBPSK which in one version consists of two interleaved BPSK signals: from $2nT$ to $(2n+1)T$, the signal is $\pm \cos(2\pi f_ct)$ while from $(2n+1)T$ to $(2n+2)T$ it is $\pm \sin(2\pi f_c t)$. Is this what you mean by OBPSK? Or is is something else? – Dilip Sarwate Mar 4 '15 at 3:09
• @DilipSarwate: You forgot to put a link to "this answer". – Matt L. Mar 4 '15 at 11:42
• Whoops! The answer referred to is this one. What is not clear from the OP's description is whether any of the four constellation points can occur during a signaling interval (as in QPSK) or whether $\pm \cos(2\pi f_ct)$ are used for one bit and $\pm \sin(2\pi f_ct)$ for the next (and so on in alternation). – Dilip Sarwate Mar 4 '15 at 12:08
• Yes, odd bits on one axis, even bits on the opposite, 1 bit/symbol per interval. It is not possible for every bit to take one of the 4 points. – bruno617 Mar 4 '15 at 17:22
• @DilipSarwate Could you elaborate a bit on what you mean by ' If the input is serial, you get OQPSK.' I am having a related doubt: dsp.stackexchange.com/questions/44827/… – wanderer Oct 31 '17 at 6:56

OBPSK in the way that you describe it is also called $\pi/2$-BPSK meaning that the signal constellation is different from bit to bit, rotating by $\pi/2$ after it is used. There are two variations of this format.

• Use $\pm \cos(\omega_0 t)$ to transmit one bit and $\mp \sin(\omega_0 t)$ to transmit the next bit. Repeat this over and over again. Note the $\mp$ before the $\sin$ carrier.
This method rotates the constellation by $\pi/2$ counterclockwise in going from $\pm \cos(\omega_0 t)$ to $\mp \sin(\omega_0 t)$, and clockwise when going from $\mp \sin(\omega_0 t)$ to $\pm \cos(\omega_0 t)$.
• Use
• $\pm \cos(\omega_0 t)$ to transmit the first bit
• $\mp \sin(\omega_0 t)$ to transmit the second bit
• $\mp \cos(\omega_0 t)$ to transmit the third bit
• $\pm \sin(\omega_0 t)$ to transmit the fourth bit,
and repeat this over and over. Note the $\mp$ and $\pm$ signs. This corresponds to the constellation rotating by $\pi/2$ counterclockwise after each and every bit transmission.

Neither form of OBPSK signal can be demodulated very well using a OQPSK demodulator, though it would be possible to do so. In OQPSK, even-numbered bits are transmitted using $\pm\cos(\omega_0t)$ and odd-numbered bits using $\mp\sin(\omega_0 t)$ but the important difference is that the $2n$-th bit is transmitted during the time interval $[2nT, (2n+2)T)$ while the $(2n+1)$-th bit is transmitted during the time interval $[(2n+1)T, (2n+3)T)$, i.e. in overlapping but offset time intervals. At the demodulator, the matched filters/correlators in the I branch and Q branch thus integrate/correlate over offset time intervals, and the demodulated data bits come out of the OQPSK demodulator alternately on the I and Q lines, one every T seconds. On the other hand, in OBPSK, the $2n$-th bit is transmitted during $[2nT, (2n+1)T)$ and the $(2n+1)$-th bit during $[(2n+1)T, (2n+2)T)$. If demodulated with a plain vanilla OQPSK demodulator, during $[(2n+1)T, (2n+2)T)$ the matched filter/correlator input in the I branch would be just noise (and similarly for the Q branch). This will decrease the effective SNR. So, Yes, a standard OQPSK receiver could be used to demodulate an OBPSK signal, but there are better ways of demodulating an OBPSK signal than just processing it through an OQPSK receiver.

• Good info. I have told myself in the past that pi/2 BPSK and OQPSK are identical constellations subject to different pulse shapes. While that may be true, it trivializes the longer pulse shape on OQPSK which does not meet the zero ISI condition (unless you ignore either the real or imaginary axis). One axis is generally transitioning while the other is at a sampling point. The result is that OQPSK does not have constellation points; it has constellation smears whose orientation depends on whether you are looking at even/odd samples. – Mark Borgerding Jun 29 at 13:36

This is the first time I hear about OBPSK. From your description, it sounds exactly like QPSK, which is actually two BPSK signals, modulated with carriers of the same frequency, but which are $\pi/2$ radians out of phase with each other.

OQPSK is slightly different. In it, one of the data streams is delayed half a symbol period. The purpose is preventing both streams from changing at the same time and causing a change of phase of $\pi$ in the carrier, which is hard for amplifiers and other components to handle.

In your position, I would look deeper into this OBPSK modulation to see if it's really different from QPSK. Feel free to ask again/modify your question if you come up with more information.

• Info is scarce, but here is some additional information (www.hit.ac.il/staff/vladimirT/Par2001.doc). With QPSK, each symbol represents 2 bits. With OBPSK, each symbol represents 1 bit. For example, to transmit 00, with QPSK, that might map to a constellation point at (1,1). However, with OBPSK, the first 0 (odd=I) might map to (1,0) and the second 0 (even=Q) to (0,1). So I end up with 2 points vs. 1, but if I take the x value from I, and y from Q, I end up with the QPSK point...As long as I define my QPSK constellation correctly, it seems like it could work. I'll have to experiment. – bruno617 Mar 4 '15 at 1:45
• @jp0933, I have to say I don't understand that paper very well. They don't define OBPSK. From what you say, it seems that, in OBPSK, you just repeat the bit, so you end up with two points instead of 4, is that right? If that is the case, a QPSK demodulator would work, at least for large SNR. – MBaz Mar 4 '15 at 2:38

I confess I have never worked with OQPSK (or QPSK) and have only read a little bit about it. But it seems to me that a valid model for it might be:

\begin{align} s(t) &= \Re\Big\{ (i[n] + j q[n]) \, e^{j 2 \pi f_\text{c} t} \Big\} \\ & = i[n] \cos(2 \pi f_\text{c} t) - q[n] \sin(2 \pi f_\text{c} t) \\ \end{align}

where $$f_\text{c}$$ is the carrier frequency and

$$n = \Big\lfloor \tfrac{t}{T} \Big\rfloor = \operatorname{floor}\Big(\tfrac{t}{T} \Big) \ .$$

$$T$$ is the bit period ($$\frac{1}{T}$$ is the baud rate or bps).

The discrete-time bipolar binary signal is

\begin{align} x[n] &\triangleq -1 + 2 a[n] \quad \in \{-1, 1 \} \\ &= -(-1)^{a[n]} \\ \end{align}

where $$a[n] \in \{$$0, 1$$\}$$ is our serial bit stream.

So it's the negative of the other bipolar binary convention of $$x[n] \triangleq (-1)^{a[n]}$$ which some folks like to use.

The discrete-time (and discrete amplitude) in-phase and quadrature modulation signals are

\begin{align} i[n] \ &= \ g[n] x[n] \ + \ (1-g[n]) x[n-1] \\ q[n] \ &= \ (1-g[n]) x[n] \ + \ g[n] x[n-1] \\ \end{align}

where $$g[n]$$ is an even/odd gating signal defined as

$$g[n] \triangleq \tfrac{1}{2}\left( 1 + (-1)^n \right)$$

and

$$1-g[n] = \tfrac{1}{2}\left( 1 - (-1)^n \right)$$

Note that for $$n$$ even, $$g[n]=1$$ and only $$i[n]$$ can change, while for $$n$$ odd, $$1-g[n]=1$$ and only $$q[n]$$ can change.

Defining

\begin{align} n_\text{even} & \triangleq 2\Big\lfloor \tfrac{n}{2} \Big\rfloor \\ n_\text{odd} & \triangleq 2\Big\lfloor \tfrac{n-1}{2} \Big\rfloor + 1 \\ \end{align}

where $$\big\lfloor u \big\rfloor \triangleq\operatorname{floor}(u)$$,

then, for a given pair of bits $$( a[n_\text{even}], a[n_\text{odd}] )$$, the IQ constellation looks like:

But only one bit can change at any time, so you cannot go from $$($$0,0$$)$$ directly to $$($$1,1$$)$$ or from $$($$0,1$$)$$ directly to $$($$1,0$$)$$. You can go from $$($$0,0$$)$$ directly to $$($$0,1$$)$$ or $$($$1,0$$)$$, but not to $$($$1,1$$)$$ (in a single bit time). The amplitude of the OQPSK signal remains about constant, staying in the perimeter, never passing through the origin. This is what I presume is the advantage of using Offset QPSK instead of regular QPSK.

The gating functions can be expressed slightly differently:

\begin{align} g[n] &= \tfrac{1}{2}\left( 1 + (-1)^n \right) \\ &= \tfrac{1}{2}\left( 1 + e^{j \pi n} \right) \\ \end{align}

and

\begin{align} 1-g[n] &= \tfrac{1}{2}\left( 1 - (-1)^n \right) \\ &= \tfrac{1}{2}\left( 1 - e^{j \pi n} \right) \\ \end{align}

which makes the IQ signals

\begin{align} i[n] \ &= \ g[n] x[n] \ + \ (1-g[n]) x[n-1] \\ &= \ \tfrac{1}{2}\left( (1 + e^{j \pi n}) x[n] \ + \ (1 - e^{j \pi n}) x[n-1] \right) \\ &= \ \tfrac{1}{2}\left( (x[n] + x[n-1]) + e^{j \pi n}(x[n] - x[n-1]) \right) \\ \end{align}



\begin{align} q[n] \ &= \ (1-g[n]) x[n] \ + \ g[n] x[n-1] \\ &= \ \tfrac{1}{2}\left( (1 - e^{j \pi n}) x[n] \ + \ (1 + e^{j \pi n}) x[n-1] \right) \\ &= \ \tfrac{1}{2}\left( (x[n] + x[n-1]) - e^{j \pi n}(x[n] - x[n-1]) \right) \\ \end{align}



Expressing in terms of the DTFT

\begin{align} I(e^{j\omega}) \ &= \ \tfrac{1}{2}\left( (1 + e^{-j\omega}) X(e^{j\omega}) + (1 - e^{-j(\pi+\omega)})X(e^{j(\pi+\omega)}) \right) \\ &= \ \tfrac{1}{2}\left( (1 + e^{-j\omega}) X(e^{j\omega}) + (1 + e^{-j\omega}) X(e^{j(\pi+\omega)}) \right) \\ &= \ \tfrac{1}{2}(1 + e^{-j\omega}) \left( X(e^{j\omega}) + X(e^{j(\pi+\omega)}) \right) \\ &= \ e^{-j\omega/2} \cos(\omega/2) \left( X(e^{j\omega}) + X(e^{j(\pi+\omega)}) \right) \\ \end{align}



\begin{align} Q(e^{j\omega}) \ &= \ \tfrac{1}{2}\left( (1 + e^{-j\omega}) X(e^{j\omega}) - (1 - e^{-j(\pi+\omega)})X(e^{j(\pi+\omega)}) \right) \\ &= \ \tfrac{1}{2}\left( (1 + e^{-j\omega}) X(e^{j\omega}) - (1 + e^{-j\omega}) X(e^{j(\pi+\omega)}) \right) \\ &= \ \tfrac{1}{2} (1 + e^{-j\omega}) \left( X(e^{j\omega}) - X(e^{j(\pi+\omega)}) \right) \\ &= \ e^{-j\omega/2} \cos(\omega/2) \left( X(e^{j\omega}) - X(e^{j(\pi+\omega)}) \right) \\ \end{align}



The DTFT of the composite IQ baseband signal, $$i[n] + j q[n]$$, is

\begin{align} I(e^{j\omega}) + j Q(e^{j\omega}) &= \ e^{-j\omega/2} \cos(\omega/2) \left( (1+j) X(e^{j\omega}) + (1-j)X(e^{j(\pi+\omega)}) \right) \\ \end{align}

The data signal $$x[n]$$ has spectrum $$X(e^{j\omega})$$. The term $$X(e^{j(\pi+\omega)})$$ is the spectrum, flipped left-to-right of the same data signal. The DC component of $$X(e^{j\omega})$$ becomes the Nyquist component of $$X(e^{j(\pi+\omega)})$$ and vice-versa.

Note also the simple first-order FIR low-pass filter $$\tfrac{1}{2} (1 + e^{-j\omega})$$, which has gain of 1 at DC and a gain of 0 at Nyquist. This is what reduces the bandwidth of the OQPSK modulated signal and is the natural advantage gained from it. There is no Nyquist component that gets through.

Now, it seems to me that one can, without the use of logic (like XOR, etc.) define a reasonably linear mathematical signal-processing model of OQPSK directly from the serial bit stream $$a[n]$$, and use that to get an idea of the spectrum for cases like $$a[n]$$ = 01010101... or $$a[n]$$ = 00110011...

In the first case where the bits values toggle every bit time, such as $$a[n]$$ = 01010101... or $$a[n]$$ = 10101010..., then $$X(e^{j\omega})$$ has only a Nyquist component and that is filtered out by the simple LPF. But that Nyquist component in $$X(e^{j\omega})$$ becomes a DC component in $$X(e^{j(\pi+\omega)})$$ and only that component gets through the LPF. So when the bits are toggling 01010101... or 10101010..., the signal $$i[n] + j q[n]$$ is solely DC and we're stuck on either the $$($$0,1$$)$$ or $$($$1,0$$)$$ points in the IQ constellation above. After bumping up to the carrier frequency, the output would be at solely at frequency $$f_\text{c}$$.

So also would an unchanging bit stream of 00000000... or 11111111... result in only DC in the data and only $$f_\text{c}$$ in the modulated carrier out. We would be stuck on only the $$($$0,0$$)$$ or $$($$1,1$$)$$ points of the constellation.

When the bits are $$a[n]$$ = 01100110..., that would move $$( a[n_\text{even}], a[n_\text{odd}] )$$ from $$($$0,1$$)$$ to $$($$1,1$$)$$ to $$($$1,0$$)$$ to $$($$0,0$$)$$ and back to $$($$0,1$$)$$ in four bit times. That moves around the constellation diagram in the clockwise sense (which is decreasing angle in the complex IQ plane) and is detuning the carrier down by $$-\tfrac12$$ Nyquist $$= -\tfrac{1}{4T}$$. And this is the lowest modulated frequency.

Now when the bits are paired and toggling between each pair, as with $$a[n]$$ = 00110011..., then the $$( a[n_\text{even}], a[n_\text{odd}] )$$ pair moves from $$($$0,0$$)$$ to $$($$1,0$$)$$ to $$($$1,1$$)$$ to $$($$0,1$$)$$ and back to $$($$0,0$$)$$ in four bit times. That moves around the constellation diagram in the counterclockwise sense (which is increasing angle in the complex IQ plane) and is detuning the carrier up by $$+\tfrac12$$ Nyquist $$= +\tfrac{1}{4T}$$. That is the highest modulated frequency.

It just seems to me to be logical to use the 16-bit sequences 0011001100110011 and 0110011001100110 as bookends for a packet of data. To delimit one packet from the next and also as unique signals to reset the receiver into a begin packet state and an end packet state and also to derive a bit sync clock from it. What if the data happens to have a run of 0011001100110011 or 0110011001100110? You don't want a 16-bit run of either of those two patterns to trigger a begin packet state and an end packet state in the receiver. They both have a 15-bit run of 011001100110011, so we need to prohibit that run in the data and reserve it for use as a bookmark.

The way they dealt with this in the old SDLC protocol adapted here would be whenever the 14-bits of 01100110011001 occur in the data stream to always insert a bogus 0 following that last 1 no matter what the next data bit turns out to be. And at the receiver, upon recognizing the 15-bits 011001100110010, to always remove that trailing 0 from the stream. That may, for some data packets, increase the length by a bit or two, but the bookend symbols could be counted on to appear only when a bookend occurs and the bookends would delimit the highest and lowest modulated frequencies for a sustained time of 16 bits. And I believe a decent packet sync and bit sync clock could be derived from the bookends and used to place your IQ vector in the correct spot at the beginning of a packet.