Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

MORGAN STATE UNIVERSITY DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING EEGR.2

ID: 2085828 • Letter: M

Question

MORGAN STATE UNIVERSITY DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING EEGR.215 Materials and Devices Fall 2017 Credits-4 LAB 2: Positioning of Fermi Level Flow Diagram Due: September 13, 2017 Lab Due: September 27. 2017 OBJECTIVE In this exercise the student will use Matlab or Excel to solve problems to plot the positioning of the Fermi Level as a function of doping and temperature. EQUIPMENT: Matlab and Excel. Directions: Complete the following problem below. Use Matlab or Excel to create a program to plot the positioning of the Fermi level as a function of doping and temperature. Include your final Matlab code or Excel spreadsheet with assignment submission. Make sure to label all axes Discuss plots and summarize results. Refer to assignment submittal guideline sheet. Any copying of programs will result in a NO GRADE for the copier and the person from which the work was copied. (NO Exceptions )This lab will be serve as 2 lab grades! Due Date: September 27, 2017 (Please note Flow Diagram due September 13, 2017) In class, we derived quantitatively how the electron and hole concentrations change as the Fermi energy level moves through the bandgap energy where, kT kT These expressions are based upon the probability that an available state is occupied or empty. In like manner, we can apply probability statistics to obtain expressions for the number of ionized donor and acceptor energy states where,

Explanation / Answer

function varargout = FermiLevel(varargin) %This m-file gives information about some of the semiconductor fundamentals %namely, the Fermi-Dirac Integral, Energy Bandgap vs. Temperature, Intrinsic %Carrier Density, and Fermi Level position in Si, Ge, and GaAs as a function %of temperature and doping concentration (In these figures, the dependence %of the Bandgap and Fermi intrinsic level on temperature is also shown). %For the calculation of the Fermi level, the charge neutrality equation is %solved numerically assuming Fermi-Dirac statistics instead of Maxwell-Boltzmann %statistics. For the foregoing reason, the program can be used to calculate %the Fermi Level position either for nondegenerate or degenerate semiconductors. %It is posible to change the doping concentration to a specific value in %Fermi_Level.m (line 9) %Journals: %Ref 1: Solid State Electronics, 25, 1067 (1982) %Ref 2: Semiconductor Physical Electronics, Sheng S. Li. pp 89 %Ref 3: Physica Status Solidi(b) vol. 188, 1995, pp 635-644 %Books: %Semiconductor Physical Electronics %Second Edition. Springer %Sheng S. Li %Advanced Semiconductor Fundamentals %Second Edition. Prentice Hall %Robert F. Pierret % Edit the above text to modify the response to help FermiLevel % Last Modified by GUIDE v2.5 20-Aug-2009 13:46:33 % Author: Ernesto Momox Beristain % email: emomox@essex.ac.uk % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @FermiLevel_OpeningFcn, ... 'gui_OutputFcn', @FermiLevel_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT global k J mo h gD gA; k =8.617E-5; J=1.602E-19; mo=9.109E-31; h=6.626E-34; gD=2; gA=4; % --- Executes just before FermiLevel is made visible. function FermiLevel_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to FermiLevel (see VARARGIN) % Choose default command line output for FermiLevel handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes FermiLevel wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = FermiLevel_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; %%ButonforSilicon % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) menuSiDon=get(handles.popupmenu1,'value'); switch menuSiDon case 1 %no option available case 2 ED=0.034;%Li DonImpu='Li'; case 3 ED=0.043;%Sb DonImpu='Sb'; case 4 ED=0.046;%P DonImpu='P'; case 5 ED=0.054;%As DonImpu='As'; case 6 ED=0.071;%Bi DonImpu='Bi'; end menuSiAcc=get(handles.popupmenu2,'value'); switch menuSiAcc case 1 %no option available case 2 EA=0.044;%B AccImpu='B'; case 3 EA=0.069;%Al AccImpu='Al'; case 4 EA=0.073;%Ga AccImpu='Ga'; case 5 EA=0.16;%In AccImpu='In'; case 6 EA=0.25;%Tl AccImpu='Tl'; end %Fermi_Level(mdn, mdp, ED, EA, Material, EgO, alpha, beta, guess) Fermi_Level(1.084,0.55,ED,EA,' Silicon',1.17,4.73E-4,636,0.55) text(611.5,0.509,'Ec'); text(611.5,-0.528,'Ev'); text(611.5,-0.029,'Ei'); text(20.26,0.215,'n-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(20.26,0.15,strcat('Donor Impurity: ',DonImpu),'FontWeight','bold'); text(20.26,-0.193,'p-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(20.26,-0.26,strcat('Acceptor Impurity: ',AccImpu),'FontWeight','bold'); % --- Executes on selection change in popupmenu1. function popupmenu1_Callback(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu1 % --- Executes during object creation, after setting all properties. function popupmenu1_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu2. function popupmenu2_Callback(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu2 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu2 % --- Executes during object creation, after setting all properties. function popupmenu2_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %%ButtonforGe % --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) menuGeDon=get(handles.popupmenu5,'value'); switch menuGeDon case 1 %no option available case 2 ED=0.0093;%Li DonImpu='Li'; case 3 ED=0.0096;%Sb DonImpu='Sb'; case 4 ED=0.012;%P DonImpu='P'; case 5 ED=0.013;%As DonImpu='As'; case 6 ED=0.18;%S DonImpu='S'; end menuGeAcc=get(handles.popupmenu6,'value'); switch menuGeAcc case 1 %no option available case 2 EA=0.01;%B AccImpu='B'; case 3 EA=0.01;%Al AccImpu='Al'; case 4 EA=0.01;%Tl AccImpu='Tl'; case 5 EA=0.011;%Ga AccImpu='Ga'; case 6 EA=0.011;%In AccImpu='In'; end %Fermi_Level(mdn, mdp, ED, EA, Material, EgO, alpha, beta, guess) Fermi_Level(0.561,0.29,ED,EA,' Germanium',0.744,4.77E-4,235,0.35) text(610.5,0.272,'Ec'); text(610.5,-0.272,'Ev'); text(610.5,-0.03,'Ei'); text(20.26,0.115,'n-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(20.26,0.062,strcat('Donor Impurity: ',DonImpu),'FontWeight','bold'); text(20.26,-0.066,'p-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(20.26,-0.12,strcat('Acceptor Impurity: ',AccImpu),'FontWeight','bold'); % --- Executes on selection change in popupmenu5. function popupmenu5_Callback(hObject, eventdata, handles) % hObject handle to popupmenu5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu5 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu5 % --- Executes during object creation, after setting all properties. function popupmenu5_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu6. function popupmenu6_Callback(hObject, eventdata, handles) % hObject handle to popupmenu6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu6 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu6 % --- Executes during object creation, after setting all properties. function popupmenu6_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu6 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %%ButtonforGaAs % --- Executes on button press in pushbutton4. function pushbutton4_Callback(hObject, eventdata, handles) % hObject handle to pushbutton4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) menuGaAsDon=get(handles.popupmenu8,'value'); switch menuGaAsDon case 1 %no option available case 2 ED=0.0058;%Si DonImpu='Si'; case 3 ED=0.0059;%Se DonImpu='Se'; case 4 ED=0.006;%Ge DonImpu='Ge'; case 5 ED=0.006;%S DonImpu='S'; case 6 ED=0.006;%Sn DonImpu='S'; case 7 ED=0.03;%Te DonImpu='Te'; end menuGaAsAcc=get(handles.popupmenu7,'value'); switch menuGaAsAcc case 1 %no option available case 2 EA=0.026;%C AccImpu='C'; case 3 EA=0.028;%Be AccImpu='Be'; case 4 EA=0.028;%Mg AccImpu='Mg'; case 5 EA=0.031;%Zn AccImpu='Zn'; case 6 EA=0.035;%Si AccImpu='Si'; case 7 EA=0.035;%Cd DonImpu='Cd'; end %Fermi_Level(mdn, mdp, ED, EA, Material, EgO, alpha, beta, guess) Fermi_Level(0.068,0.47,ED,EA,' Gallium Arsenide',1.519,5.41E-4,204,0.7) text(604.3,0.6458,'Ec'); text(604.3,-0.6458,'Ev'); text(604.3,0.08,'Ei'); text(10.66,0.18,'n-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(10.66,0.13,strcat('Donor Impurity: ',DonImpu),'FontWeight','bold'); text(8.29,-0.12,'p-type','FontWeight','bold','FontSize',12,'FontAngle','italic') text(8.29,-0.18,strcat('Acceptor Impurity: ',AccImpu),'FontWeight','bold'); % --- Executes on selection change in popupmenu7. function popupmenu7_Callback(hObject, eventdata, handles) % hObject handle to popupmenu7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu7 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu7 % --- Executes during object creation, after setting all properties. function popupmenu7_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on selection change in popupmenu8. function popupmenu8_Callback(hObject, eventdata, handles) % hObject handle to popupmenu8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: contents = get(hObject,'String') returns popupmenu8 contents as cell array % contents{get(hObject,'Value')} returns selected item from popupmenu8 % --- Executes during object creation, after setting all properties. function popupmenu8_CreateFcn(hObject, eventdata, handles) % hObject handle to popupmenu8 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end %%ButtonforFermiIntegral % --- Executes on button press in pushbutton5. function pushbutton5_Callback(hObject, eventdata, handles) % hObject handle to pushbutton5 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %FERMI-DIRAC INTEGRAL %of order 1/2 %This program compares the Fermi Integral of order 1/2 when evaluated with %the algorithm of Ref 1, Ref 2, and Ref 3. hand=figure; set(hand,'Name','Fermi-Dirac Integral','NumberTitle','off','Color',[0.65 0.81 0.82]); screen=get(0,'ScreenSize'); width=screen(4); large=screen(3); set(hand,'position',[50,50,large-750,width-145]); centerfig %Ref 1: Solid State Electronics, 25, 1067 (1982) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% n=-8:0.2:8; %(Greek letter eta) F=(exp(-n)+3*sqrt(pi/2)*((n+2.13)+((abs(n-2.13)).^2.4+9.6).^(5/12)).^(-3/2)).^-1; Ref1=semilogy(n,F,'b','LineWidth',3); grid on, axis([-8 8 1E-4 20]),hold on set(Ref1,'DisplayName','Ref 1'); %Ref 2: Semiconductor Physical Electronics, Sheng S. Li. pp 89 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for ind=1:length(n) if n(ind)-4 && n(ind)=1 && n(ind) 0. range=sqrt(eta(cont)+64.);end; h=0.5; nmax=range/h; sum=0.; if aj== (-0.5) sum=1./(1.+exp(-eta(cont)));end; for i=1:nmax u=i*h; ff=2.*(u^(2.*aj+1))/(1.+exp(u*u-eta(cont))); sum=sum+ff;end; %Trapezoidal Summation ends %============================================================== % Pole correction for trapezoidal sum begins pol=0.; npole=0; % Fix the starting value of BK1 to start while loop bk1=0; while bk1 0; tk=aj*atan(bk/eta(cont)); end; rk=- (rho^aj); tk=tk+0.5*atan(t2/t1); if eta(cont) < 0 rk= -rk; end; ak=(2.*pi/h)*sqrt(0.5*(rho+eta(cont))); bk1=(2.*pi/h)*sqrt(0.5*(rho-eta(cont))); if bk1