25

To demodulate a phase-shift keyed signal, of which BPSK is the simplest, you have to recover the carrier frequency, phase, and symbol timing. Bursty Signals Some signals are bursty and provide a known data sequence called a preamble or mid-amble (depending on whether it shows up at the beginning or middle of the burst). Demodulators can use a matched ...


10

One of the nice features of OFDM is that it allows a very simple structure for the modulator and demodulator: given a set of symbols (in general complex-valued, taken from a signal constellation such as BPSK, QPSK, or QAM) to map onto each carrier, the modulator can be implemented using an inverse discrete Fourier transform, typically implemented using an ...


10

This is called biphase mark code, and you have to focus on the zero-crossings instead of the pulse amplitudes. You have multiple zero crossings per pulse, though, because of the low-cut filters inherent to the pickup and the phone's mic input. Yours drop farther than this between transitions, and cross zero: You could restore a more pulsy shape by using a ...


9

Since you indicated that the power spectrum of your background noise is flat, I'll assume it is white. A major drawback with your current approach is that you are discarding a large amount of the signal power; even with the effect of front-end bandlimiting shown by in your diagram by the exponential-rise step response, a single ADC sample near the end of the ...


8

I think that you could get the best performance in terms of demodulator bit-error rate (BER) with a phase-locked loop. You need it to be fast, though. I think your best bet for a fast algorithm that still performs reasonably well is zero crossing. On a side note, I would like to suggest that you change the 2200 Hz to 2400 Hz. A naive implementation of ...


8

You've got a pretty good set of circumstances here; you should be able to meet your goal without too much trouble. I don't see anything in your description that would eliminate a whole class of modulation (e.g. phase-shift keying, frequency-shift keying, etc.). Some of the factors that would go into the choice of a suitable format would include: The ...


8

An ideal sinusoid does indeed have zero bandwidth, but it is not useful to transmit one because it also imparts zero information to the receiver. Once the receiver knows what the sinusoid phase is it can perfectly predict the rest of the signal- thus, no more information is received. For information to be transmitted there has to be an element of "not ...


8

Because each step in the processing chain is linear we consider a case with only noise and no coherent signal. Denote the noise $\xi(t)$. The $I$ and $Q$ signals are \begin{align}\ I(t) &= \xi(t) \cos(\Omega t) \\ Q(t) &= - \xi(t) \sin(\Omega t) \, . \end{align} We express the effect of the filter as a convolution with the time response function $h$, ...


8

I am currently implementing acoustic FSK modulation and demodulation. I am not a signal processing guy… Since you say you have matched filters, and you mention non-coherent detection, I think you're pretty much of a digital communication person already – the step to being a DSP person is pretty small :) The fully-fledged synchronizer SDR approach So, the ...


8

Phase (or carrier) Recovery for BPSK can be done over the entire sequence using the information from every sample. Here are common approaches to doing Carrier Recovery: Frequency Doubling (squaring): If you square a BPSK signal (multiply it by itself) a strong tone will be created at twice your carrier frequency. The Squaring operation strips the data ...


8

What you need is carrier phase synchronization. This is a complicated topic with many different approaches. The approach that you'll choose could depend on things like: Data-aided versus blind: Does the underlying sequence contain any known data (e.g. a training or sync sequence of some kind) that you can use to divine the phase offset? Or, do you have to ...


7

I have done something similar to this in MATLAB. In my cause, I used an Early/Late Gate clock recovery method to get an estimate of the offset between transmit and receive symbol timing. This method uses 3 samples per symbol - one at the optimal sample time, one that is 1 sample delayed and 1 that is one sample advanced. This works well for on/off keying ...


6

Yes and no. The mapping is arbitrary as long as the receiver correctly determines which constellation point a symbol is. If the receiver makes a mistake, though, it is most likely going to pick a "neighbor" constellation point (i.e. a constellation point that is only one spot away). It is highly unlikely that a correctly implemented receiver will pick a ...


6

What is the advantage of performing the FSK using IQ modulation? You only need one RF oscillator operating at a single frequency, instead of having 2 (or more in the case of M-ary FSK) oscillators operating at separate frequencies for each bit/symbol. Since you only have one oscillator, you don't have to worry about discontinuities in the phase of the ...


5

I made a decoder for AFSK (Bell 202 standard) using correlation receivers for 1200 Hz and 2200 Hz, with very good results. Since the phase of the signal during a symbol is unknown, a solution is to work in the complex domain: instead of multiplying by real sinusoids, multiply by complex exponentials. This means multiplying by $\sin$ and $\cos$ independently,...


5

I don't think your formula is quite right. The two complex samples are the locations (at two successive sampling instants) of the tip of the rotating phasor that represents the analog signal. The information that you need is the angle between phasor positions at these two successive time instants. If $S_{n+1} = r_{n+1}e^{j\theta_{n+1}}$ and $S_n = r_ne^{j\...


5

Two successive symbols in the demodulator are $Z_1 = (X_1,Y_1)$ and $Z_2 =(X_2,Y_2)$ where $X$ is the output of the I branch and $Y$ the output of the Q branch of the receiver. The hard-decision DBPSK decision device considers the question: Is the new symbol $Z_2$ closer to the old symbol $Z_1$ or to the negative $-Z_1$ of the old symbol? and thus ...


5

It seems like you are already using a crude version of OFDM with no cyclic prefix, no coding (FEC), and lots of unused sub-carriers. What you are currently doing is also similar to amateur radio protocols such as MT-63. You could also look into spread spectrum modulation techniques (many) that were designed for very noisy channels with lots of interference....


5

The scheme you are using is called On/Off Keying. It is not terribly efficient, but it is simple and gets the job done. When you say that the signal is 10 dB below the noise floor I suspect what you mean is that if you add up all the signal energy and all of the noise from 0.3 - 14 kHz the signal is 10 dB weaker, but that the signal uses a much narrower ...


5

There are several things missing/extra in your diagram. What you are using is rectangular PAM pulses of duration $T$ to send data across the channel, and so you really don't need the multiplier. It is necessary only if $s_1(t)$ and $s_2(t)$ are different from rectangular pulses (though they are still of duration $T$, and in that case, the input $s_1(t)-...


5

As you pointed out in your edit, averaging the values isn't a great fit for this sort of problem. A simple alternative would be to simply fit a line to the four phase measurements using a linear least squares fit. That should perform better than the single-point approach. A possibly even-better solution would be to fit a sinusoid to the four complex samples ...


5

Either of your suggested approaches would work (adapting modulation/coding scheme on a per-subcarrier basis or changing all subcarriers at once). There's no theoretical constraint that prevents you from doing that; it's simply a question of whether the added efficiency of tuning individual subcarriers is worth the increased system complexity.


5

The DC subcarrier is normally omitted because in a zero-IF receiver it overlaps with DC offsets in the hardware which are very difficult to remove.


4

It seems that your are trying to recreate work that has been done for voice band modems. A simple and very reliable, protocol which is used in fax transmission is ITU V.21 300 bps FSK. This modulation scheme is thoroughly documented. This type of modulation is used for control signaling in FAX transmissions because it is very robust. If you need to go up ...


4

An eye diagram can be created by just framing up your QAM signal (probably after matched filtering), where the frame length is the number of samples per QAM symbol. In MATLAB, this is very simple: x = output_of_matched_filter; N = number_of_samples_per_symbol; eye = reshape(x,N,[]); % "eye" now is a two-dimensional matrix, with each column containing one ...


4

Here are a few things that aren't right: 1) Regardless of the Carrier Synchronization: You are using 0 and 90 degrees for your signaling. You would need an I and Q channel in order to decode the signal if that were the case. For BPSK (Binary) you should be using 0 and 180 degrees. Only if you are using QPSK should you use 90 and 270 degrees, then again its ...


4

This was quite a challenge. I tried at least four approaches before cracking it. This is how I did it: I start by smoothing the data (first reading) with a simple... x_new = 0.9 * x_prev + 0.1 * x_in ... IIR filter. I do this in both directions (second reading). This gets rid of all the fuzzy noise, however it creates discontinuities which come back ...


4

After subtracting Fs/2 from F to get a frequency axis from -Fs/2 -> Fs/2 rather than from 0->Fs You can't center the frequency by changing the labels on the x-axis. Use 'fftshift' instead.


4

You can simply multiply by another cosine: $x(t)\cos(2\pi f_ct)\cos(2\pi 0.001f_ct)=x(t)\cos(2\pi0.999f_ct)+x(t)\cos(2\pi1.001f_ct)$ (ignoring scale factors). If $x(t)$ is very narrow in frequency, so that the spectra of the two terms above don't overlap, you can use a high-pass filter to do what you want. If $x(t)$ is not narrowband enough, you can shift $...


4

Well, I took a look at your code, and spent a lot of time on it, and I have discovered some mistakes, some practicals and some theoretics. Here are my answers: (1) You can use the function filter. Just remember that it returns a vector of the same length of the input, while conv returns the $ N_x + N_h - 1 $, where $ N_x $ is the length of your input and $ ...


Only top voted, non community-wiki answers of a minimum length are eligible