Lab 1 i INF3410 Prelab: a) EKV modellen ble modellert i Matlab, der EKV.m er brukes til å lage en funksjon av drainsource strømmen. Reverse bias strøm trekkes i fra forward bias strøm, noe som danner grunnlaget for å modellere drain-source strømmen. EKV.m blir brukt som referanse til de andre oppgavene i denne rapporten. EKV.m function Ids = EKV(Is, Vto, n, Vt, Vg) If = [0:0.1:5]; Ir = [0:0.1:5]; Vs = 0; Vd = 5; If_tmp = (Vg-Vto-n*Vs)./(2*n*Vt); If = Is*log(1+exp(If_tmp)).^2; Ir_tmp = (Vg-Vto-n*Vd)./(2*n*Vt); Ir = Is*log(1+exp(Ir_tmp)).^2; Ids = If-Ir; Til oppgave a) ble følgende Matlab kode brukt: Lab_1_oppg_1.m Vt = 26e-3; Is = 100e-9; n = 1.3; Vto = 0.7; Vg = [0:0.01:5]; Ids = EKV(Is, Vto, n, Vt, Vg); Vi valgte å bruke noen standard parametere for en nmos transistor. Vdd er satt til 5V, Vs=0V og Vgs varierer fra 0 til 5V. Grafene kan sees på neste side og ser fornuftige ut med denne EKV modellen. - 1 av 17 -
I lineær skala får vi en drain-source strøm etter terskelspenning (0,7V), litt under 1*10^-6A. Denne stiger eksponensielt med gate-source spenningen. Den logaritmiske grafen går lineært fram til terskel spenningen går over til kvadratisk og ender opp i eksponensielt mot en fast strøm verdi. - 2 av 17 -
b) Vi simulerte en transistor med 10µm bredde og 1µm lengde. Simuleringen ble innført i MATLAB sammen med EKV modellen. Deretter ble EKV modellen justert til å ligne den simuleringen fra CADENCE. Ut i fra grafen fra Cadence simulering kunne vi se at Vt0 var omtrent 0,5V. n=1,5 ble brukt for god inversjon. Prøvde å få grafen til å ligne Cadence simuleringen, der Cox og Is fikk henholdsverdier på 3,7E-3 F/(m^2) og 2500e-9A. Lab_1_oppg_2.m Vg = [0:0.01:5]; Vt = 26e-3; Vto = 0.5; W=10e-6; L=1e-6; u=0.05; n = 1.3; Cox=3.7e-3; B = u*cox*(w/l); Is = 2*B*Vt^2; Ids = EKV(Is, Vto, n, Vt, Vg); Ids_sim = load('lab_1_oppg_2_ids_2.txt'); plot(vg, Ids, Vg, Ids_sim(:,2)) semilogy(vg, Ids,Vg, Ids_sim(:, 2)). - 3 av 17 -
EKV modellen er veldig glatt og fin, men EKV modellen modellerer også sterk inversjon. I svak inversjon i logaritmisk graf så ser vi at den modellerte EKV modellen er veldig fin i forhold til CADENCE. Forskjellen mellom simulering og modellering er ikke stor, men den er tydelig i svak inversjon. Cadence vil simulere en mer realistisk økning av Ids i sterk inversjon, mens EKV modellen vil være nøyaktig i svak inversjon. - 4 av 17 -
c) Vi koblet opp en 50kΩ motstand og tørrkjørte programmet med spenningskilde for å sjekke at det ble korrekt. Lab_1_oppg_3.m: %HP3631 = GPIB_InstrInit('HP3631', 5) %K6512=GPIB_InstrInit('K6512',8) K6512_SetMode('A',K6512); HP3631_Operate(HP3631); Vin =[0:0.01:1] Ir = [0:0.01:1] HP3631_SetVolt(1, 0, HP3631); for i=1:length(vin), HP3631_SetVolt(1, Vin(i), HP3631); pause(0.25) Ir(i) = K6512_ReadQuick(K6512); end plot(vin, Ir) HP3631_Disable(HP3631); Strøm spenning forholdet er lineært, som forventet. Vi har bevist at scriptet vårt fungerer bra og kan brukes til MOS transistor oppgave. - 5 av 17 -
MOS Transistor Transfer Characteristics: d) Vi brukte scriptet i fra c) oppgaven og tørrkjørte dette i forveien. Vi valgte å sette drain source spenningen på tre forskjellige nivåer: 2V, 5V og 9V. Vdd var satt til 15V. Figurene viser at forskjellene på disse Vds spenningene var svært små. Fra figuren ser vi at det ikke er store forskjeller mellom spenningsverdiene. 9V er tydelig størst, mens de to andre er veldig nærme hverandre - 6 av 17 -
I figuren nedenfor ser vi nmos karakteristikken for logaritmisk skala. Det er ikke store forskjellen mellom spenningene, men det er tydelig hva som er svak og sterk inversjon. Inversjonsområdene har blitt tegnet inn etter en definisjon: Svak inversjon er ca 100mV under terskelspenning og sterk inversjon er ca 100mV over terskelspenning. e) Drain-source karakteristikken for krets oppsett for pmos ser slik ut: - 7 av 17 -
f) Kretsoppsettet for f) er forklart i e) oppgaven. Ellers brukes samme kode for å kjøre voltmeteret fra Matlab kommando. Legg merke til Vsd ved 2V. Den er nå under terskelspenning og transistoren fungerte ikke ved den spenningen. Det er pga av transistoren aldri ble slått helt på, fordi source-drain spenningen ikke var høyere enn terskelspenningen. Terskelspenning er ca 3,7V Vsg. g) Sammenligner vi nmos og pmos ser vi at de er omvendt i karakteristikk. pmos er på ved 0V spenning i Vgs, mens nmos er samtidig av ved 0V Vgs. For å sammenligne terskelspenning har vi at nmos har ca 1,45V terskelspenning (Vgs), mens pmos har ca 3,7V terskelspenning (Vsg). Forskjellen i transistorene kan spores tilbake ved at de har forskjellig doping, og dermed en forskjellig mobilitet i kanalen mellom source og drain. µn= 0,05m^2/Vs og µp=0,0175m^2/vs. Hvis vi ser på småsignal modell i aktivt område har vi følgende: - 8 av 17 -
Den effektive spenningen er den reelle spenningen man får når man går over terskelspenning. For at transistor skal være på, må denne være større enn null. Har brukt en småsignal modell fra aktivt område og bevist at effektiv spenning for n og p transistor avhenger kun av dopingen på transistorene så lenge bredde og lengde på de er like. - 9 av 17 -
Matching to simulated behavior h) Ved å justere EKV modellen kom vi veldig nær målte verdier av nmos transistoren i MC14007 transistor pakken. Vi har bredde på 10µ, lengde 1µ, og Cox på 1.9e-3 F/m^2. Slope faktor n ble satt til 0,9. Figurene viser hvor nærme vi kom: Lab_1_oppg_h2.m: Vt = 26e-3; n = 0.9; Vto = 1.5; Vg = [0:0.05:5]; W = 10e-6; L= 1e-6; u = 0.05; Cox = 1.9e-3; B = u*cox*(w/l); Is = 2*B*Vt^2; Ids = EKV(Is, Vto, n, Vt, Vg); load('maaling_nmos.mat'); plot(vg, Ids, Vg, Id) semilogy(vg, Ids, Vg, Id) Ylim([10^-14 10^-2]) g) - 10 av 17 -
i) Formelen e = 100*(Id-Ids)/Ids ble brukt for å regne ut relativ feil. Ids er EKV modelleringen, mens Id er målingene. Ut av formelen ble målingene sammenlignet med EKV modellen. Lab_1_oppg_i.m: Vt = 26e-3; n = 0.9; Vto = 1.5; Vg = [0:0.05:5]; W = 100e-6; L= 10e-6; u = 0.05; Cox = 1.9e-3; B = u*cox*(w/l); Is = 2*B*Vt^2; - 11 av 17 -
Ut i fra grafen kan vi se at det er mange Vgs spenninger der måling og modell er relativt like. Ved 1.2 til 1.45V Vgs har vi opphav til en stor feil fordi målingene av transistoren i dette området er vanskelig (vi har nano og mikro ampere målinger), og derfor er det vanskelig å få nøyaktige målinger, sammenlignet med en perfekt modell i svak inversjon. I moderat inversjon er målingsresultatene litt lavere enn EKV modell, mens i sterk inversjon er de veldig like hverandre. Opphav til feilkilder er: 1. Datablad oppgir ikke prosessparametere, har derfor gjettet på passende verdier. 2. Strømmåling er vanskelig i området under mikroampere. Lab_1_oppg_i.m: Vt = 26e-3; n = 0.9; Vto = 1.5; Vg = [0:0.05:5]; W = 100e-6; L= 10e-6; u = 0.05; Cox = 1.9e-3; B = u*cox*(w/l); Is = 2*B*Vt^2; Ids = EKV(Is, Vto, n, Vt, Vg); load('maaling_nmos.mat'); %fordi noen målinger ga negativ strøm må målte verdier settes lik modellens. for i=1:101, if Id(i) < 0 Id(i) = Ids(i); end end %Det er en feil i første måling, så denne må også settes lik modellens. Id(1) = Ids(1); e = 100*(Id-Ids)./Ids; plot(vgs, e) j) I denne oppgaven brukte vi Cadence og justerte parameterene til bredde og lengde for å passe de målte resultatene. Da fikk vi en figur som så slik ut; - 12 av 17 -
Feilen blir relativt stor i forhold til hverandre, men den blir bedre når vi øker Vgs spenningen. Dette skyldes at terskelspenning til Cadence simuleringen er mye større enn den målte terskelspenningen. I denne sammenheng ble det da vanskelig å kunne justere relativ feil til å kunne komme nær i verdier. Cadence simulering med matlab: Lab_1_oppg_j.m: load('maaling_nmos.mat'); Ids = load('simulering_nmos.txt'); Id_malt = Id; Id_simulert = Ids(:, 2)'; Vgs = Ids(:, 1)'; plot(vgs, Id_simulert, Vgs, Id_malt); e = abs((id_malt./id_simulert)-1)*100; plot(e) - 13 av 17 -
k) I denne oppgaven skulle vi bruke transistoren som strømkilde ved å bruke en source spenning samt et potmeter mellom gate og source. Potmeteret kunne vi justere til å være mellom 3 og 4V, noe som gav en gate-source spenning som vi selv kunne velge. Source spenningen ble brukt til å variere strøm fra transistoren. Source spenningen ble sveipet fra 0 til 3.5V for 3.5V Vgs, og 0 til 4V for 4V Vgs. Samtidig ble Vds satt til 5V. Resultatet av de målte strømverdiene ble det tatt roten av for å kunne finne specific current. Lab_1_oppg_k.m: %HP3631 = GPIB_InstrInit('HP3631', 5) %K6512=GPIB_InstrInit('K6512',8) K6512_SetMode('A',K6512); HP3631_Operate(HP3631); Vs =[0:0.05:4]; % antall steps = 101. Id_malt = [0:0.05:4]; % Setter fast spenning til 5V på kanal 1. HP3631_SetVolt(1, 5, HP3631); HP3631_SetVolt(2, 0, HP3631); for i=1:length(vs), HP3631_SetVolt(2, Vs(i), HP3631); pause(0.25) Id_malt(i) = sqrt(k6512_readquick(k6512)); end plot(vs, Id_malt) semilogy(vs, Id_malt) save('malt_k2_nmos.mat'); HP3631_Disable(HP3631); Deretter ble de målte verdiene brukt til å finne stigningstallet til roten av strømmen som funksjon av source spenning. Dette er det samme som å finne gradienten og bruke formelen (y1-y2)/(x1-x2). For å få mest linearitet ble et stort sprang i source spenning brukt. Nedenfor vises koden som ble brukt for å regne ut stigningstall ved 3.5V Vgs, og 4.0V Vgs. Lab_1_oppg_k2.m: VT = 26e-3 DId_1 = (Id_malt(31)-Id_malt(1))/(Vs(31)-Vs(1)) Is_1 = DId_1^2*4*VT^2 DId_2 = (Id_malt(41)-Id_malt(2))/(Vs(41)-Vs(2)) Is_2 = DId_2^2*4*VT^2-14 av 17 -
Ved bruk av formler regnet vi ut at Is var 1.84µA ved 3.5V Vgs og 1.79µA ved 4.0 V Vgs. - 15 av 17 -
l) I denne oppgaven skal vi bruke en zero biased treshold voltage extractor krets. Potmeteret ble brukt til å justere strømmen til å være lik halve specific current. Vi velger å bruke Is=1.815µA for å ta snittet mellom de to målingene fra k) oppgaven. Is/2 er da 0.91µA. Vi koblet opp med følgende krets: Lab_1_oppg_l.m: K6512_SetMode('V',K6512); HP3631_Operate(HP3631); Vg = [0:0.05:3]; % antall steps = 101. Vp = [0:0.05:3]; % Setter fast spenning til 5V på kanal 1. HP3631_SetVolt(1, 5, HP3631); HP3631_SetVolt(2, 0, HP3631); for i=1:length(vg), HP3631_SetVolt(2, Vg(i), HP3631); pause(0.25) Vp(i) = K6512_ReadQuick(K6512); end plot(vg, Vp) save('malt_l1_nmos.mat'); HP3631_Disable(HP3631); - 16 av 17 -
Ut i fra bildet kan vi se at zero biased terskel spenning er ca 1,85V. Y-aksen viser source-bulk spenning. Når source-bulk spenning ikke lenger er null, så får vi en body effekt i transistoren som prøver å opprettholde denne endringen. Derfor kan vi finne ut hvordan Vt0 er ut i fra denne grafen. Grunnen til en ulineær overgang mellom 1,5V til ca 2,2V er fordi transistoren i den ideelle strømkilden ikke er ideell. Ved veldig lav spenning så vil ikke transistoren trekke strøm slik den skal fordi det er vanskelig for transistoren å være ideelt nærme null ohm. Derfor vil vi få ulinæer sammenheng fordi transistoren ikke kan fungere som en ideell motstand ved såpass lav motstand. - 17 av 17 -