Sie sind auf Seite 1von 17

UBC EECE 403 Report

I.

INTRODUCTION

In class were introduced the concepts of photonics silicon


based circuits. Some models were presented as the Michelson
Mach Zehnder Interferometers (MZI), being this last one used
in this project. Some important definitions were discussed, for
example the effective index of refraction, the group index, the
free spectral range (FSR), all of those figures are important to
design the interferometer. The main idea of the device is to
guide the light through a strip of silicon (waveguide), the light
is divide in a Y-branch and follows two path where one is have
its phase shifted. The two branches are connected again by
another Y branch, the difference of phase create an
interference that can be constructive or destructive (or in
between), what can be used as an optical switch.
In this project was used the software MODE, to design the
waveguide, matlab, to develop the equations, and Mentor
Graphics Pyxis CAD tool, to design the layout of the devices.

Through the MODE software and using Matlab to calculate,


was found the compact model of this waveguide, with the
Effective index equals 2.447-1.129 ( 1.55) +0.038 (
1.55)2.
The MZI transfer function was plotted in Matlab and shown in
the figure 2.
MZI transfer function
-2
-4
-6
Transmission [dB]

Abstract description of the project; short summary; less than


100 words.

-8
-10
-12
-14
-16
-18
-20
1.535

1.54

1.545

1.55
1.555
1.56
Wavelength [m]

1.565

1.57

1.575

Figure 2 MZI transfer function for a waveguide of 500x220nm and


0=1.55.

II. DESIGN
Was first designed the waveguide in LUMERICAL software,
where was used the dimensions of 500 width and 220
thickness, for a wavelength of 1.55um in TE polarization, the
results are shown in figure 1.

With the compact model was possible to plot the group index
x wavelength, as shown in figure 3.
Group index
4.2005
4.2

Group index, ng

4.1995
4.199
4.1985
4.198
4.1975
4.197
4.1965
1.54

1.545

1.55

1.555
1.56
Wavelength [m]

1.565

1.57

1.575

Figure 3 Group index for a waveguide of 500x220nm and 0=1.55.

Was done the corner analysis for 9 cases and plotted in the
figures 4 and 5.

Figure 1 Waveguide profile, effective index and group index

UBC EECE 403 Report

2
The devices designed were located in the UBC linux server.
(/ubc/ece/home/lc/ugrads/ee484proj/EECE403_2015_01/e1f0
b/Ebeam_pedro_top).
The floor plane was draw with the dimensions 1.5 mm width
and 1.2 height, in the same floor plane was placed 2 rows of
circuits, in the left row the circuit 0 is the control circuit that
will be compared with the others. The first row there are
modifications in the resistance to compare the thermal
performance of each one of the designs. The second row was
changed the waveguide only, to compare the light performance
of each circuit.
The circuits were named from 0 to 7, being the number 0 the
control circuit.

MZI transfer function


0.7
0.6

Transmission

0.5
0.4
0.3
0.2
0.1

1.545 1.546 1.547 1.548 1.549 1.55 1.551 1.552 1.553 1.554 1.555
Wavelength [ m]

Figure 4 MZI transfer function for waveguides corner analysis


FSR histogram

Table 1 Design dimensions


Devic
e

MZ0
MZ1
MZ2
MZ3
MZ4
MZ5
MZ6
MZ7

2.5

1.5

Length1
(m)

70
70
70
70
70
163
70
70

Length2
(m)

L = L2 L1
(m)

488
488
488
488
508
1038
488
488

418
418
418
418
438
875
418
418

0.5

0
1.615

1.62

1.625

1.63

1.635

1.64

1.645

1.65

1.655

1.66
-3

x 10

Figure 5 Variation of the FSR


Group index
4.26
4.25
4.24

Group index, ng

4.23
4.22
4.21
4.2
4.19
4.18
4.17
1.545 1.546 1.547 1.548 1.549 1.55 1.551 1.552 1.553 1.554
Wavelength [ m]

Figure 6 Variation of the group index

This project was designed using Mach Zehnder


Interferometers model. Was used the software MODE
solutions to simulate the waveguide, and Mentor to design the
device.

Figure 7 - Floor plane with all the eight devices placed.

Width
Metal
(m)

7
5
10
7
7
7
7
7

of

UBC EECE 403 Report

Figure 8 - Device 0 control group, design following the rules with


the objective to be used to comparison. The distance between the
optical inputs and electrical inputs is 509 nm, the distance from the 2
electrical pads is 50 nm, the distance from the 2 optical pads is 127
nm, and all this values were kept in the others devices.

Figure 12 - Device 4 Was increase the radios bent to analyze the


effect in the loss.

Figure 13 - Device 5 The number of turns of the waveguide was


increased from the control device.

Figure 9 - Device 1 Was reduced the width of the metal to 5m to


analyze the effect of higher resistance.

Figure 14 - Device 6 The design of the resistance was draw inverted


from the control design to analyze the effect of the geometry.

Figure 10 - Device 2- Was increased the width of the metal to 10m


to analyze the effect of lower resistance.

Figure 15 - Device 7- The interferometer was drawn far from the


grating coupler.

III. EXPERIMENTS

Figure 11 - Device 3 The design of the resistance was draw inverted


from the control design to analyze the effect of the geometry.

The chip with the devices designed was sent Seattle


where it was manufactured without the SiO2 covering the
waveguides.
With the die returned from the foundry, the first
results with air cladding of the circuits are shown in the
following figures.

UBC EECE 403 Report

Data analysis
With these results was possible to analyze the data, to do this
was used the method of fitting the MZI spectrum using the
loopback calibration for the device 1.
Figure 16 - Device 0

Calibration loopback

Figure 17 - Device 1

Figure 18 - Device 2

Insertion Loss [dB]

-20
-25
-30
-35

-40
-45
-50
1.5

1.51

1.52

1.53

1.54

1.55

1.56

Wavelength [m]

1.57

1.58

Figure 24 Calibration loopback fitting air cladding device


MZI (raw data)

-20

Figure 19 - Device 3

Insertion Loss [dB]

Figure 20 - Device 5

-25
-30
-35
-40
-45
-50
-55
-60
1.5

Figure 21 - Device 5

1.52

1.54

1.56

1.58

1.6

Wavelength [m]

1.62

Figure 25 Data before the calibration air cladding device

Figure 22 - Device 6 -

Figure 23 - Device 7

1.64

UBC EECE 403 Report

5
the fitted transfer function (blue), and the obtained data (green) air
cladding device

MZI (calibrated with loopback)

-5
Group index (from MZI fit)

-10
4.36

-15
4.34

-20

4.32

-25
Group index, ng

Insertion Loss [dB]

-30
-35
-40
1.535

1.54

1.545

1.55

1.555

1.56

1.565

Wavelength [m]

1.57

1.575

4.3
4.28
4.26

1.58
4.24

Figure 26 Data after calibration air cladding device

4.22
4.2

MZI model (initial parameters)

1.54

0
-5

1.545

1.55

1.555
1.56
Wavelength [ m]

1.565

1.57

1.575

Figure 29 Group index simulated (green) experimental (blue) air


cladding device

Transmission [dB]

-10

Was plotted the group index vs wavelengths of the corner


analysis and the experimental data.

-15
-20
-25
-30
-35

1.54

1.545

1.55

1.555
1.56
Wavelength [ m]

1.565

1.57

1.575

Figure 27 Fitted model in green, experimental data in blue air


cladding device

MZI model (fit parameters)


0
-5

Figure 30 Group index simulated corner analyze (green) vs


experimental (blue) air cladding device

Transmission [dB]

-10
-15

After the first experiments, the die was subjected to others


steps of fabrication with objective to grow the SiO 2 that covers the
waveguide. All the process was done in the UBC AMPEL Nanofab
lab, the first step was to grow the SiO 2 layer, and it was consisted of:

-20
-25
-30
-35
1.535

1.
1.54

1.545

1.55
1.555
1.56
Wavelength [ m]

1.565

1.57

1.575

Figure 28 MZI transfer functions of the simulated waveguide (red),

Cleaning the die: The die was first submerged in acetone


and placed in an ultrasonic cleaner (Branson 3200) for 5
minutes, where the small vibrations of the machine clean
the sample. Then the die is submerged in isopropanol and

UBC EECE 403 Report

applied to the same machine for more 5 minutes. After this


time the sample is cleaned with water
2.

Deposition of SiO2: The sample then is placed in the


PECVD chamber that was previously cleaned with
isopropanol and the following parameters:
Table 2 PECVD set parameters
Pressure

500mTorr

Temp.

200C

Forward Power

200W

Process Time

3000s

CF4

50sccm

O2

10sccm

N2

100sccm

After cleaned the chamber the plasma was established


inside the chamber with diethylsilane (DES) at 4sccm and
N2O at 71sccm.Then apply nitrogen-100sccm three times
and place a simple sample to define the processing time.
After that the die was placed in the chamber, with a simple
sample for measurement of the thickness, with the
processing time of 1000s.

Figure 31 Calibration loopback fitting oxide cladding device


Just like before was used the device 1, with the calibration of the
loopback and fitting the approximated curve to the experimental data.

The parameters of the process were:


Table 2 PECVD read parameters
Pressure

478mTorr

Temp.

190C

Forward Power

212W

Process Time

300 - 1000s

Des

4sccm

N2

71sccm
Figure 32 Data before the calibration oxide cladding device

3.

Measure of thickness: The measure of the thickness was


made using an optical system based on interference, where
a light beam hits the surface of the sample and a sensor
read the reflected light and based on the difference
between the reflection of the SiO2 and the silicon, it
knows the thickness of the layer.
The measure of pure silicon had an error of 25nm and
the measurement of the SiO2 was 1.6m.

Again the experiment was done, now if the oxide cladding in the
chip, the results as follows:

Figure 33 Data after calibration oxide cladding device

UBC EECE 403 Report

7
photoresist was placed to rotate and check if it wouldnt
fly. After the checking, the parameters were set as follows:
Spin 3000rpm for 45s with acceleration of 10rpm/s.
And then the photoresist (AZ4110) was dropped in the
center of the chip. After the end of the spinning the die
was placed in a hot plate to bake the photoresist for 4
minutes. In the end of the process was necessary to clean
the spinning machine with acetone, taking care to not
touch the rings.

Figure 34 Model in blue experimental data in green oxide


cladding device

Figure 35 Group index for experimental oxide cladding device.

The next step was the photolithography that was done using the
maskless photolithography machine (SF.100 Xpress). This process
consisted of:
1.

2.

3.

Cleaning the die: Again was needed to clean the chip in


the same way as before. Submerge the chip in acetone for
5 minutes, place on the ultrasonic cleaner, submerge in
isopropanol for more 5 minutes, and finish cleaning with
water.

4.

Maskless photolithography: The chip was placed in the


machine that has an automatic tray, but still has to be
aligned manually; a light over the chip helps to do the
rough alignment .The fine alignment was done using the
crosses on the chip. The crosses give a good feedback of
the alignment. The alignment process is very time
consuming because every time that a corner is aligned, is
necessary to check and realign the others corners. After the
alignment of the lenses was necessary the alignment of the
light. Then the die was exposed to 1.6s of light.

5.

Development of the photoresist: For last the die was


submerged in the photoresist developer(AZ400k diluted
1.4) for 25 seconds, then in water to stop the development.
Cleaning that way the unwanted photoresist areas.

Figure 36 Devices after the photolithography process.


The following step was the deposition of metal in the electrical
portion of the device, this process consisted of:
1.

EBeam evaporator: The chip was placed inside the Vacuum


chamber where the metal was evaporated and deposited on
the surface of the die. Before the evaporation process
began, the parameters were set as follows:
Pressure

5.5Torr

Temp.

11K

Defining the exposure time: A sample chip with an array


of different exposure times was used to define the best
exposure time. The sample was analyzed in microscope
and the exposure of 1.3s presented an underdeveloped
pattern while the exposure of 1.7s presented an
overdeveloped pattern, the exposure chosen was 1.6s.

Metal

Titanium

Z-Ratio

0.628

Deposition rate

0.8k/s

Applying photoresist: The die was placed in the spinning


machine to spread the photoresist smoothly over the
surface of the chip. First the sample without the

It is necessary to inform the density of the metal to the


sensor for it measure the thickness of the deposition, the
metal used was the Titanium so its density is 4.5g/cm of the

UBC EECE 403 Report

deposition, the metal used was the Titanium so its density is


4.5g/cm.

-26.5
-26.6
Transmission [dB]

In the ebeam process, first the chamber of the metal is


separated from the chamber of the die, then the process
starts, the pressure increases and then starts to decrease
when the evaporation starts. With the evaporation
happening, the disc the separates the two chambers is open
and the deposition starts.
As the deposition rate is low (0.8k/s) the deposition is
low quality but more resistant. During the process some
photoresist started to peel of the chip. To avoid compromise
more the devices, the process was finished prematurely.
The final thickness of the titanium was 82nm measured
in the sensor of the Ebeam evaporator. Then after turned off
the cooling system and broke the vacuum, the die was
checked in the microscope for some damage.

-26.4

-26.7
-26.8
-26.9
-27
-27.1
1.5505

1.551

1.5515
Wavelength [ m]

1.552

1.5525

Figure 39 Peaks difference for 2.06mW (green), 8.3mW (red), and


18.6mW (blue).

Figure 37 Chip after the deposition.


2.

Cleaning the photoresistor: In order to take off the


photoresistor, the chip was emerged in acetone and applied
for some instants the sonicator, then checked again at the
microscope.

Figure 40 Lambda Shift for the difference of 6.218mW (8.3mW


2.06mW)

Figure 38 Devices after cleaning the photoresistor.

For last, was done the measures of the devices using the electric part
of the circuit. The results are shown as follows:
Figure 41 Lambda Shift for the difference of 16.57mW (18.6mW
2.06mW)

UBC EECE 403 Report

The final value found for the was 15.142mW/FSR

Figure 42 Lambda shift fixing the highest value of power.

IV.

CONCLUSION

The step by step of the process of make a chip was


extremely interesting and could teach a lot of all the process, since
the design flow, design tools, manufacturing tools, and challenges in
every stage of the process.
The focus in optronics was also interesting for being a
relatively new area. The difficulty to produce an exactly device as
design caused by all the variations in the process was one of the most
important lessons being a real challenge for designers in the
nano/microelectronics industry.

REFERENCES
[1]

L. Chrostowski, M. Hochberg Silicon Photonic Design, Cambridge


2005

UBC EECE 403 Report

10

V.

VI. APPENDIX

%%%%%%%%%%%%codeofthecorneranalysis
clc
clear
% the wavelength range of interest.
lambda_min = 1.545; % Units [m, microns]
lambda_max = 1.555;
lambda_step = 0.01e-3; % wavelength step [microns]
% Typical minimum step for a tunable laser is 1-10 pm.
lambda=lambda_min:lambda_step:lambda_max;
load('neffs.mat');
% Define the MZI transfer function
% use Matlab anonymous functions
% Effective index:
% - as a Taylor expansion around the central wavelength, lambda0
%2.447629374949186 -1.129159719828981 -0.037801538243233
lambda0 = 1.55; n1=2.447629374949186; n2=-1.129159719828981; n3=-0.037801538243233;
these are constants from the waveguide model.
for i = 1 : 9

UBC EECE 403 Report


n1 =
n2 =
n3 =
neff
%
%

neffs(i,1);
neffs(i,2);
neffs(i,3);
= @(lambda) ...
(n1 + n2.*(lambda-lambda0) + n3.*(lambda-lambda0).^2);
% plot, and check if this is as expected:
figure;
plot(lambda, neff(lambda),'LineWidth',3);
% Complex propagation constant
alpha = 1e-3; % propagation loss [micron^-1]; constant
beta = @(lambda) ...
(2*pi*neff(lambda)./lambda - 1i*alpha/2*ones(1,length(lambda)) );

% MZI transfer function


T_MZI = @(L1, L2, lambda) ...
( 0.25* abs(exp(-1i*beta(lambda)*L1)+exp(-1i*beta(lambda)*L2)).^2);

% plot, and check if this is as expected:


L1=70;
L2=500; % Units [m, microns], variable
figure;
plot(lambda, T_MZI(L1, L2, lambda),'LineWidth',2);
hold on;
xlabel ('Wavelength [\mum]');
ylabel ('Transmission');
axis tight
title ('MZI transfer function');
[pks,locs] = findpeaks(T_MZI(L1, L2, lambda));
pk1 = lambda(locs(3));
pk2 = lambda(locs(4));
FSR(i) = pk2 - pk1;

%
%
figure;
%
T_MZI_dB = 10*log10(T_MZI(L1, L2, lambda));
%
plot(lambda, T_MZI_dB,'LineWidth',3);
%
xlabel ('Wavelength [\mum]');
%
ylabel ('Transmission [dB]');
%
axis tight
%
title ('MZI transfer function');
end
figure
hist(FSR)
title ('FSR histogram');

%%%%%%%%%%%%%%%%%%%%%%%%%codeoftheeMZItransferfunctionprogram
clf
% the wavelength range of interest.
lambda_min_sim = 1.535; % Units [m, microns]
lambda_max_sim = 1.575;

11

UBC EECE 403 Report


lambda_step_sim = 0.01e-3; % wavelength step [microns]
% Typical minimum step for a tunable laser is 1-10 pm.
lambda_sim=lambda_min_sim:lambda_step_sim:lambda_max_sim;
% Define the MZI transfer function
% use Matlab anonymous functions
% Effective index:
% - as a Taylor expansion around the central wavelength, lambda0
%2.447629110745169 -1.129195305378686 -0.038532116464539
lambda0_sim = 1.55; n1_sim=2.447629110745169; n2_sim=-1.129195305378686; n3_sim=0.038532116464539; % these are constants from the waveguide model.
neff_sim = @(lambda) ...
(n1_sim + n2_sim.*(lambda-lambda0_sim) + n3_sim.*(lambda-lambda0_sim).^2);
% plot, and check if this is as expected:
figure(1);
plot(lambda_sim, neff_sim(lambda_sim),'LineWidth',3);
%ng=(neff_sim(lambda_sim) - lambda_sim .* dndlambda_sim);

% Complex propagation constant


alpha_sim = 1e-3; % propagation loss [micron^-1]; constant
beta_sim = @(lambda) ...
(2*pi*neff_sim(lambda)./lambda - 1i*alpha_sim/2*ones(1,length(lambda)) );

% MZI transfer function


T_MZI = @(L1, L2, lambda) ...
( 0.25* abs(exp(-1i*beta_sim(lambda)*L1)+exp(-1i*beta_sim(lambda)*L2)).^2);
% plot, and check if this is as expected:
L1=70;
L2=488; % Units [m, microns], variable
figure(2);
plot(lambda_sim, T_MZI(L1, L2, lambda_sim),'LineWidth',3);
xlabel ('Wavelength [\mum]');
ylabel ('Transmission');
axis tight
title ('MZI transfer function');
[pks,locs] = findpeaks(T_MZI(L1, L2, lambda_sim));
pk1 = lambda_sim(locs(10));
pk2 = lambda_sim(locs(11));
FSR = pk2 - pk1

figure(3);
T_MZI_dB = 10*log10(T_MZI(L1, L2, lambda_sim));
plot(lambda_sim, T_MZI_dB,'LineWidth',3);
xlabel ('Wavelength [\mum]');
ylabel ('Transmission [dB]');
axis tight
title ('MZI transfer function');
figure(4);
neff_fit_sim = neff_sim(lambda*1e6);

12

UBC EECE 403 Report

13

dndlambda_sim=diff(neff_fit_sim)./diff(lambda); dndlambda_sim=[dndlambda_sim,
dndlambda_sim(end)];
ng_sim=(neff_fit_sim - lambda .* dndlambda_sim);
plot(lambda*1e6, ng_sim,'g', 'LineWidth',3);
xlabel ('Wavelength [\mum]');
ylabel ('Group index, n_g');
axis tight
title ('Group index');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% code of the data analysis program


clf
% Enter the Dropbox URL here. Make sure it has a =1 at the end:
url =
'https://www.dropbox.com/sh/lqo7348gkunvboc/AADk739hMnu7wwFNfHRKcIDOa/Data/Q1/pedro_MZ
I0_236_Scan1.mat?dl=1';
dL = 418; % [micron] Path length difference in the MZI
PORT=2; % Which Fibre array port is the output connected to?
% %a=websave('mzi.mat',url); % get data from Dropbox
% %load('mzi.mat');
% load('pedro_MZI3_249_Scan1');
% % Data is stored in variable "scanResults".
% % There are two columns - wavelength (1), and amplitude (2)
% lambda=scanResults(1,PORT).Data(:,1)/1e9;
% amplitude=scanResults(1,PORT).Data(:,2);
%
% % Curve fit data to a polynomial for baseline correction
% p=polyfit((lambda-mean(lambda))*1e6, amplitude, 4);
% amplitude_baseline=polyval(p,(lambda-mean(lambda))*1e6);
%
% % Perform baseline correction to flatten the spectrum
% % Use the curve polynomial, and subtract from original data
% amplitude_corrected = amplitude - amplitude_baseline;
% amplitude_corrected = amplitude_corrected + max(amplitude_baseline) max(amplitude);
% figure(1);
% plot (lambda*1e6, amplitude_corrected);
% xlabel ('Wavelength [\mum]');
% ylabel ('Transmission [dB]');
% axis tight
% title ('Experimental data (baseline corrected)');
%
% % data only within the wavelength range of interest.
% lambda_min = min(lambda); % Can limit the analysis to a range of wavelengths
% lambda_max = max(lambda);
% if the data on the edges is noisy
% lambda_max = 1.57e-6;
% lambda1=lambda_min:min(diff(lambda)):lambda_max;
% amplitude=interp1(lambda, amplitude_corrected, lambda1,'linear');
% lambda=lambda1;
% amplitude(find(amplitude==-inf))=-50; % check if there are -infinity data points
% figure(2);

UBC EECE 403 Report


%
%
%
%
%

plot (lambda*1e6, amplitude);


xlabel ('Wavelength [\mum]');
ylabel ('Transmission [dB]');
axis tight
title ('Experimental data (baseline corrected, wavelength range)');

PORT=2; % Which Fibre array port is the output connected to?


FONTSIZE=20;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Loopback data:
%a=websave('loopback.mat',url_loopback); % get data from Dropbox
%load('loopback.mat');
load('pedro_calibrate3_244_Scan1');
% Data is stored in variable "scanResults".
% There are two columns - wavelength (1), and amplitude (2)
lambda=scanResults(1,PORT).Data(:,1)/1e9;
amplitude=scanResults(1,PORT).Data(:,2);
figure(1);
plot (lambda*1e6, amplitude);
title ('Calibration loopback');
xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)
ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE)
hold all;
% Fit the data with a polynomial
p=polyfit((lambda-mean(lambda))*1e6, amplitude, 5);
amplitude_LOOPBACK=polyval(p,(lambda-mean(lambda))*1e6);
plot (lambda*1e6, amplitude_LOOPBACK);
% find wavelength range with usable data, in the loopback
loopback_IL = max(amplitude);
new_lambda_i=find(amplitude>loopback_IL-10);
lambda=lambda(new_lambda_i);
lambda_min = min(lambda);
lambda_max = max(lambda);
amplitude=amplitude(new_lambda_i);
% refit the loopback
LOOPBACK=polyfit((lambda-mean(lambda))*1e6, amplitude, 4);
amplitude_LOOPBACK=polyval(LOOPBACK,(lambda-mean(lambda))*1e6);
plot (lambda*1e6, [amplitude_LOOPBACK],'r-','Linewidth',5);
axis tight;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MZI data:
%a=websave('mzi.mat',url_mzi); % get data from Dropbox
%load('mzi.mat');
load('pedro_MZI0_236_Scan1.mat');
lambda1=scanResults(1,PORT).Data(:,1)/1e9;
amplitude=scanResults(1,PORT).Data(:,2);
figure(2);
plot (lambda1*1e6, amplitude);

14

UBC EECE 403 Report


title ('MZI (raw data)');
xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)
ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MZI data - calibrated
%
% data only within the bandwidth of interest.
lambda=lambda_min:min(diff(lambda1)):lambda_max;
amplitude=interp1(lambda1, amplitude, lambda,'linear');
amplitude(find(amplitude==-inf))=-50;
% calibrate data
amplitude_cal=amplitude-polyval(LOOPBACK,(lambda-mean(lambda))*1e6);
figure(3);
plot (lambda*1e6, amplitude_cal);
title ('MZI (calibrated with loopback)');
xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)
ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE)

% Define the MZI transfer function


% - as a Taylor expansion around the central wavelength
% - Use units of [microns] keeps the variables closer to 1.
% - These make the curve fitting easier.
lambda0 = mean(lambda)*1e6;
% use Matlab anonymous functions
% effective index:
neff = @(nx, lambda) ...
(nx(1) + nx(2).*(lambda-lambda0) + nx(3).*(lambda-lambda0).^2);
% neff([2.4, -1, 0], 1.56) % test it.
% alpha = 1e-3; % propagation loss [micron^-1]
% complex propagation constant
beta = @(nx, alpha, lambda) ...
(2*pi*neff(nx, lambda)./lambda - 1i*alpha/2*ones(1,length(lambda)) );
% beta([2.4, -1, 0], 1e-3, [1.56, 1.57]) % test it.
% MZI transfer function
T_MZI = @(X, lambda) ...
(10*log10( 0.25* abs(1+exp(-1i*beta(X(1:3), X(4), lambda)*dL)).^2) +X(5) );
% T_MZI([2.4, -1, 0, 1e-3], [1.56, 1.57]) % test it.
% initial function for fitting
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nx_init = [2.96, -1, 0];
%%%%%%%%%%%% CHANGE THE FIRST PARAMETER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
alpha_init = 1e-3; % propagation loss [micron^-1]
x0=[nx_init, alpha_init, 0];
figure(4);
plot (lambda*1e6, amplitude);
hold all;
plot(lambda*1e6, T_MZI(x0, lambda*1e6),'LineWidth',3);
xlabel ('Wavelength [\mum]');
ylabel ('Transmission [dB]');
axis tight

15

UBC EECE 403 Report


title ('MZI model (initial parameters)');
% Curve fit:
[xfit,resnorm] = lsqcurvefit(T_MZI,x0,lambda*1e6,amplitude);
xfit
r=corrcoef(amplitude,T_MZI(xfit, lambda*1e6));
r2=r(1,2).^2
figure(5);
%%%%%%%%%%%%%%%%%%%%%%%%%%%5
% the wavelength range of interest.
lambda_min_sim = 1.535; % Units [m, microns]
lambda_max_sim = 1.575;
lambda_step_sim = 0.01e-3; % wavelength step [microns]
% Typical minimum step for a tunable laser is 1-10 pm.
lambda_sim=lambda_min_sim:lambda_step_sim:lambda_max_sim;
% Effective index:
% - as a Taylor expansion around the central wavelength, lambda0
%2.447629110745169 -1.129195305378686 -0.038532116464539
lambda0_sim = 1.55; n1_sim=2.447629110745169; n2_sim=-1.129195305378686; n3_sim=0.038532116464539; % these are constants from the waveguide model.
neff_sim = @(lambda) ...
(n1_sim + n2_sim.*(lambda-lambda0_sim) + n3_sim.*(lambda-lambda0_sim).^2);
% Complex propagation constant
alpha_sim = 1e-3; % propagation loss [micron^-1]; constant
beta_sim = @(lambda) ...
(2*pi*neff_sim(lambda)./lambda - 1i*alpha_sim/2*ones(1,length(lambda)) );

% MZI transfer function


T_MZI_sim = @(L1, L2, lambda) ...
( 0.25* abs(exp(-1i*beta_sim(lambda)*L1)+exp(-1i*beta_sim(lambda)*L2)).^2);
% plot, and check if this is as expected:
L1=70;
L2=488; % Units [m, microns], variable
T_MZI_dB = 10*log10(T_MZI_sim(L1, L2, lambda_sim));
plot(lambda_sim, T_MZI_dB,'LineWidth',3);
hold on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
plot (lambda*1e6, amplitude);
hold all;
plot(lambda*1e6, T_MZI(xfit, lambda*1e6),'LineWidth',3);
xlabel ('Wavelength [\mum]');
ylabel ('Transmission [dB]');
axis tight
title ('MZI model (fit parameters)');
% Check if the fit is good. If so, find ng
if (ge(r2,0.8))
% plot ng curve
figure(6);
neff_fit = neff(xfit(1:3),lambda*1e6);

16

UBC EECE 403 Report


dndlambda=diff(neff_fit)./diff(lambda); dndlambda=[dndlambda, dndlambda(end)];
ng=(neff_fit - lambda .* dndlambda);
plot(lambda*1e6, ng, 'LineWidth',4);
hold on;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
neff_fit_sim = neff_sim(lambda*1e6);
dndlambda_sim=diff(neff_fit_sim)./diff(lambda); dndlambda_sim=[dndlambda_sim,
dndlambda_sim(end)];
ng_sim=(neff_fit_sim - lambda .* dndlambda_sim);
plot(lambda*1e6, ng_sim,'g', 'LineWidth',3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xlabel ('Wavelength [\mum]');
ylabel ('Group index, n_g');
axis tight
title ('Group index (from MZI fit)');
% waveguide parameters at lambda0
ng0 = xfit(1) - lambda0*xfit(2)
end

17

Das könnte Ihnen auch gefallen