X-Git-Url: https://adrianiainlam.tk/git/?p=4yp.git;a=blobdiff_plain;f=chromaticDispersion1Signal.m;h=6441dd50442789bfbc854185e62ec86078064da3;hp=dd169ac87e35950f7f00eb6427b47574328ecf37;hb=5fae00773184080617ac022c07495d365975e0e1;hpb=427465905320390cebf3d247b8beace19387c70f diff --git a/chromaticDispersion1Signal.m b/chromaticDispersion1Signal.m index dd169ac..6441dd5 100644 --- a/chromaticDispersion1Signal.m +++ b/chromaticDispersion1Signal.m @@ -5,7 +5,7 @@ Rsym = 2.5e10; % symbol rate (sym/sec) span = 6; % Tx/Rx filter span rolloff = 0.25; % Tx/Rx RRC rolloff -sps = 2; % samples per symbol +sps = 8; % samples per symbol fs = Rsym * sps; % sampling freq (Hz) Tsamp = 1 / fs; @@ -21,9 +21,9 @@ x = normalizeEnergy(x, numSymbs*sps, 1); %% Simulate chromatic dispersion D = 17; % ps / (nm km) lambda = 1550; % nm -z = 5000 % km +z = 500 % km -[xCD, xCDkstart] = chromaticDispersion_FFT(x, D, lambda, z, Tsamp); +[xCD, xCDkstart] = chromaticDispersion(x, D, lambda, z, Tsamp); EbN0_db = 8; snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps); @@ -32,11 +32,16 @@ snr = EbN0_db + 10 * log10(log2(M)) - 10 * log10(sps); y = xCD; r = rxFilter(y, rolloff, span, sps); + +sps = 2; +Tsamp = Tsamp * 4; + + [rCDComp, CDCompkstart] = CDCompensation(r, D, lambda, z, Tsamp); rCDComp = normalizeEnergy(rCDComp, numSymbs*sps, 1); -rSampled = rCDComp(sps*span/2+1:sps:(numSymbs+span/2)*sps); -rNoCompSa = r(sps*span/2+1:sps:(numSymbs+span/2)*sps); +rSampled = rCDComp(2:2:end); +rNoCompSa = r(2:2:end); %% if no CD comp, then rotate constellation. Use: theta = angle(-sum(rNoCompSa .^ M)) / M; @@ -57,7 +62,6 @@ end rSampled = rSampled .* exp(-1j * theta); - %%rAdaptEq = adaptiveCMA(rSampled); %{ %% Compare original signal and compensated signal