4yp.git
5 years agoWorking Kerr effect; PDM; speedups; removed unused files master
Adrian Iain Lam [Tue, 12 Feb 2019 01:37:28 +0000 (01:37 +0000)]
Working Kerr effect; PDM; speedups; removed unused files

Kerr effect is now working, showing the expected curve shape as Tx
power varies. Currently this uses a fixed step size of 1km, with
attenuation, and amplification every 50km. Amplification will be removed
later to simulate a true passive network, but now kept to verify results.

Since non-linearity is now introduced, we change the Tx signal to
having 8 samples/sec (previously 2). The Rx then downsamples at the
Rx filter.

"channel.m" is now added to simulate the overall channel with all
effects considered. Currently this includes Kerr, CD and phase
noise. PDM was then implemented, with "pdmchannel.m" being the
PDM analogue of "channel.m", with corresponding new files for the
PDM version of the CMA equalizer and the split-step solver.

Simulations are now significantly faster by doing all filtering
in the frequency domain (so multiplication instead of convolution).
The behaviour is changed slightly: instead of zero initial conditions,
we now take periodic (circular) boundary conditions. Simulation
lengths were also changed to an integer power of 2 to have the
most efficient FFT.

Some initial testing files that are no longer needed are removed.

5 years agoAdded technical milestone report and changes to 1st presentation
Adrian Iain Lam [Mon, 11 Feb 2019 10:44:08 +0000 (10:44 +0000)]
Added technical milestone report and changes to 1st presentation

These were uncommitted changes from the start of term. Slides
changed for the Trinity Engineering Conference.

5 years agoAdded presentation; DE-QPSK; CD with FFT; split-step Fourier
Adrian Iain Lam [Fri, 23 Nov 2018 00:08:00 +0000 (00:08 +0000)]
Added presentation; DE-QPSK; CD with FFT; split-step Fourier

LaTeX code and images for the 1st presentation (presented last
week) were added to the repository. Probably useful when writing
the technical milestone report.

Differentially-encoded QPSK was implemented last week. The results
were satisfactory, with smaller penalty than DPSK, and not affected
by cycle slips.

Chromatic dispersion is now (also) implemented in the frequency
domain. This gives a complexity of O(n log n) (set by FFT),
better than in the time domain (convolution, O(n^2)). This was
done as a prerequisite to implementing the split-step Fourier
method for simulating non-linearities (Kerr effect).

The split-step Fourier method was implemented, although not
thoroughly tested and may contain mistakes. To be discussed
with supervisor.

As discussed in last week's meeting, the code (at least the
CD code) was updated to only use 2 samples per symbol (sps).

Some convenience functions were added to aid debugging. They
may be removed later.

5 years agoAdded adaptive CMA equalizer, "fixed" CD and phase noise
Adrian Iain Lam [Thu, 8 Nov 2018 21:49:44 +0000 (21:49 +0000)]
Added adaptive CMA equalizer, "fixed" CD and phase noise

Implemented CMA equalizer. It can be seen that it works well
in equalizing the received signal when CD is small (i.e. when
the CD compensation does not work well). Convergence is to be
discussed.

Previous version of CD fails miserably when CD is small but
compensation is not used. This is due to the constellation being
rotated by the CD simulation. Code was added to rotate it back.

Previous version of phase noise has a lot of errors due to
cycle slips when attempting to recover the phase using the
Viterbi-Viterbi algorithm. Experimenting with different block
sizes did not help much. A differential PSK was attempted which
seems to work well, agreeing with supervisor's predictions on
asymptotic behaviour, though incurring a penalty at lower SNRs.

5 years agoChromatic dispersion and line width phase noise
Adrian Iain Lam [Fri, 2 Nov 2018 01:15:42 +0000 (01:15 +0000)]
Chromatic dispersion and line width phase noise

Implemented CD and phase noise simulations and their corrections;
files written to (1) inspect waveform behaviour with time, and
(2) plot BER/SNR graphs. For CD, an extra file was written to
demonstrate (check) the pulse-broadening behaviour of the power
of the signal.

Code cleanup: move some code out to separate files for reuse;
renamed some variables for consistency; removed 3F4 PSK upper
bounds in graphs (bound too loose, not useful); removed isOctave
due to the current heavy dependence on functions not supported
by Octave.

TODO: put CD and phase noise together

5 years agoFixed passband, should now be correct
Adrian Iain Lam [Fri, 26 Oct 2018 13:41:50 +0000 (14:41 +0100)]
Fixed passband, should now be correct

5 years agoAdded baseband and passband simulations. Passband is buggy.
Adrian Iain Lam [Fri, 26 Oct 2018 05:17:11 +0000 (06:17 +0100)]
Added baseband and passband simulations. Passband is buggy.

5 years agoAdded root raised cosine pulse shaping.
Adrian Iain Lam [Wed, 24 Oct 2018 00:16:06 +0000 (01:16 +0100)]
Added root raised cosine pulse shaping.

Not very sure about the SNR calculation.

5 years agoUse more library functions; generalized to 2^k-PSK
Adrian Iain Lam [Sun, 21 Oct 2018 23:09:34 +0000 (00:09 +0100)]
Use more library functions; generalized to 2^k-PSK

The previous "initial" version was reinventing the wheel with
PSK modulation/demod, AWGN etc. This version used the library
functions, renamed some variables for consistency; generalized
code to work for M-PSK (M=2^k), and included theoretical upper
bounds and approximations for M > 4.

5 years agoBER/SNR plots for discrete BPSK over AWGN
Adrian Iain Lam [Sun, 21 Oct 2018 16:02:20 +0000 (17:02 +0100)]
BER/SNR plots for discrete BPSK over AWGN