Design av digitala kretsar



Relevanta dokument
Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Grindar och transistorer

Laboration 6. A/D- och D/A-omvandling. Lunds universitet / Fakultet / Institution / Enhet / Dokument / Datum

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

LV6 LV7. Aktivera Kursens mål:

F2: Motorola Arkitektur. Assembler vs. Maskinkod Exekvering av instruktioner i Instruktionsformat MOVE instruktionen

Elektronik. MOS-transistorn. Översikt. Då och nu. MOS-teknologi. Lite historik nmosfet Arbetsområden pmosfet CMOS-inverterare NOR- och NAND-grindar

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

ALU:n ska anslutas hur då?

Moment 1 - Analog elektronik. Föreläsning 2 Transistorn del 2

Datormodell. Datorns uppgifter -Utföra program (instruktioner) Göra beräkningar på data Flytta data Interagera med omvärlden

Digital IC konstruktion

Föreläsningsanteckningar 2. Mikroprogrammering I

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

nmosfet och analoga kretsar

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Du har följande material: 1 Kopplingsdäck 2 LM339 4 komparatorer i vardera kapsel. ( ELFA art.nr datablad finns )

Digital- och datorteknik

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Läsminne Read Only Memory ROM

F5 Introduktion till digitalteknik

Det finns en hemsida. Adressen är

Datorteknik. Tomas Nordström. Föreläsning 2. För utveckling av verksamhet, produkter och livskvalitet.

Hambley avsnitt 12.7 (7.3 för den som vill läsa lite mer om grindar) sann 1 falsk 0

F1: Introduktion Digitalkonstruktion II, 4p. Digital IC konstruktion. Integrerad krets. System. Algorithm - Architecture. Arithmetic X 2.

Digital IC konstruktion

F5 Introduktion till digitalteknik

Grundläggande datavetenskap, 4p

EDA215 Digital- och datorteknik för Z

Digital- och datorteknik

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

Föreläsningsanteckningar till Konstruktionsmetoder

Rättade inlämningsuppgifter hämtas på Kents kontor Föreläsning 4 Må , Kent Palmkvist To ,

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

Laboration D151. Kombinatoriska kretsar, HCMOS. Namn: Datum: Epostadr: Kurs:

Transistorn en omkopplare utan rörliga delar

Digital- och datorteknik

Moment 2 Digital elektronik. Föreläsning Inbyggda system, introduktion

Processor pipelining genom historien (Intel i9-intel i7)

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

En något mer detaljerad bild av en processor. De tre delarna i processorn är: Nere 3ll vänster finns e' antal register som används för a' lagra data.

Kapitel 7 Systemexempel (forts.)

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

5:2 Digitalteknik Boolesk algebra. Inledning OCH-funktionen

Digital IC konstruktion

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Föreläsning 8. MOS transistorn. IE1202 Analog elektronik KTH/ICT/EKT HT09/BM

EDA451 - Digital och Datorteknik 2010/2011. EDA Digital och Datorteknik 2010/2011

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Digital IC konstruktion

TSEA28 Datorteknik Y (och U)

Vad är elektricitet?

Ext-13 (Ver ) Exempel på RTN-beskrivning av FLEX-instruktioner

Digital- och datorteknik

System S. Datorarkitektur - en inledning. Organisation av datorsystem: olika abstraktionsnivåer. den mest abstrakta synen på systemet

Digital och Datorteknik EDA /2011. EDA 451 Digital och datorteknik 2010/2011. Uppbyggnad_och_funktion.pdf

Datorsystemteknik DVGA03 Föreläsning 8

Föreläsning 11 Fälteffekttransistor II

T1-modulen Lektionerna Radioamatörkurs OH6AG OH6AG. Bearbetning och översättning: Thomas Anderssén, OH6NT Heikki Lahtivirta, OH2LH

Digital Aritmetik Unsigned Integers Signed Integers"

Program kan beskrivas på olika abstrak3onsnivåer. Högnivåprogram: läsbart (för människor), hög abstrak3onsnivå, enkelt a> porta (fly>a 3ll en annan ar

Styrenheten 9/17/2011. Styrenheten - forts Arb s 120. LV4 Fo10. Aktivera Kursens mål: Kap 7 Blå

Datorteknik. Föreläsning 6. Processorns uppbyggnad, pipelining. Institutionen för elektro- och informationsteknologi, LTH. Mål

Digital elektronik CL0090

Tentamen i Digital Design

Föreläsning 8. MOS transistorn Förstärkare med MOS transistorn Exempel, enkel förstärkare med MOS. IE1202 Analog elektronik KTH/ICT/EKT VT11/BM

Digital- och datorteknik

IE1204 Digital Design

Läs igenom hela laboration 5 innan du börjar beskriva instruktionsavkodaren i VHDL!

Digitala System: Datorteknik ERIK LARSSON

Vad är elektricitet?

FÖRELÄSNING 3. Förstärkaren. Arbetspunkten. Olika lastresistanser. Småsignalsschemat. Föreläsning 3

Program som ska exekveras ligger i primärminnet. Processorn hämtar instruk7on för instruk7on. Varje instruk7on, som är e= antal 1:or och 0:or, tolkas

HF0010. Introduktionskurs i datateknik 1,5 hp

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

0.1. INTRODUKTION Instruktionens opcode decodas till en språknivå som är förstålig för ALUn.

Digital- och datorteknik

Digital- och datorteknik

Introduktion till digitalteknik

Digital- och datorteknik

Olika sätt att bygga förstärkare. Differentialförstärkaren (översikt) Strömspegeln. Till sist: Operationsförstärkaren

Tentamen. Datorteknik Y, TSEA28

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

IE1205 Digital Design: F3 : CMOS-kretsen, Implementeringsteknologier. Fredrik Jonsson KTH/ICT/ES

LABORATION DATORTEKNIK D. Pipelining. Namn och personnummer. Version: (OS,OVA,AN)

Föreläsning 4/11. Lite om logiska operationer. Hambley avsnitt 12.7, 14.1 (7.3 för den som vill läsa lite mer om grindar)

Tenta i Digitalteknik

SMD033 Digitalteknik. Digitalteknik F1 bild 1

EDA Digital och Datorteknik

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Övning1 Datorteknik, HH vt12 - Talsystem, logik, minne, instruktioner, assembler

Moment 1 - Analog elektronik. Föreläsning 1 Transistorn del 1

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Facit till övningsuppgifter Kapitel 13 Anslutning av minnes- och I/O-moduler till buss 13-1

LABORATION DATORTEKNIK Y,C,I DATORTEKNIK D

Datorteknik. Den digitala automaten. En dator måste kunna räkna! Register och bussanslutning

Talrepresentation. Heltal, positiva heltal (eng. integers)

Programmerbar logik. Kapitel 4

Kombinationskretsar. Föreläsning 4 Digitalteknik Mattias Krysander Institutionen för systemteknik

Tenta i Digitalteknik

Transkript:

Föreläsningsanteckningar Föreläsning 15 - Digitalteknik Design av digitala kretsar Efter att ha studerat fundamentala digitaltekniska områden, ska vi nu studera aspekter som gränsar till andra områden. I bilden nedan beskrivs några riktningar som är väsentliga. Vi ska börja med att kort beskriva hur vi från våra byggblock i digitaltekniken kan konstruera något som liknar en enkel dator. Mjukvara Hårdvara Datorteknik Kretskonstruktion Digitalteknik Elektronik Figure 1: Digitalteknikens kopplingar mot andra områden 1 Datorers uppbyggnad Med ett antal byggblock i färskt minne, såsom multiplexer, adressavkodare, ROM, ska vi återvända till konstruktionen av en ALU, som behandlades i laboration 2. ALU:n (Arithmetic Logic Unit) är ett byggblock som är rent kombinatoriskt. ALU:n opererar på två vektorer av binära värden, vi betecknar dem som X n 1,... X 1, X 0 samt Y n 1,... Y 1, Y 0. Dessa n-bitars vektorer kan för vissa 1

aritmetiska operationer tänkas representera tal i 2-komplementform. ALU:n kan räkna ut ett stort antal olika funktioner och resultatet levereras i utsignalvektorn U = U n 1,... U 1, U 0. För att bestämma vilken funktion vi önskar att ALU:n beräknar, så har vi ett antal styrsignaler. I bilden 2 har vi angivit S 2, S 1, S 0 som tre styrsignaler. Vi har även en ytterligare insignal i C i som svarar mot carry in. Förutom utsignalen U n 1,... U 1, U 0 ger ALU:n även utsignaler i form av aggor som indikerar speciella händelser vid uträknandet av den valda funktionen. I exemplet i Figur 2 så har vi fem aggor (utsignaler), O sätts när den aritmetiska enheten genererar en overow i uträkningen; C o är en carry bit som sätts om det genereras en utgående carry vid addition. Från resultatet har vi dessutom tre aggor, Z som sätts om U = 0; P som ger pariteten av U samt S som sätts om U är negativt. MUX:en styrs av någon av styrsignalerna. Notera att detta bara är ett exempel på hur det kan se ut. Den som bygger ALU:n bestämmer vilka funktioner och aggor som ska nnas. Låt oss exempliera hur vi kan styra ALU:n. Låt styrsignalerna svara mot följande funktioner: S 2, S 1 S 0 C i Operation Funktion 000 0 U = X överför X 000 1 U = X + 1 öka X med 1 001 0 U = X + Y addera X och Y 001 1 U = X + Y + 1 addera X och Y + 1 010 0 U = X Y subtrahera X med Y(2-komplement). 100 - U = X Y bitvis AND mellan X och Y 101 - U = X Y bitvis XOR mellan X och Y 110 - U = X Y bitvis OR mellan X och Y 111 - U = X bitvis invertering av X Genom att ge insignaler S 2, S 1, S 0 = (0, 0, 1) samt C i = 0 så låter vi ALU:n beräkna X + Y. Den kommer då att leverera resultatet i utsignalen U samt ge aggorna Z, P, S, O, C o sina värden vilka beror på resultatet av uträkningen. En schematisk bild av den exemplierade ALU:n visas i Figur 2. För en generell ALU måste vi alltså veta exakt vilka operationer som kan 2

utföras samt exakt hur aggorna som utsignaler är denierade. X n 1,..., X 1, X 0 Y n 1,..., Y 1, Y 0 Flaggor Aritmetisk enhet Logisk enhet Styrsignaler O, C o AU LU S 2, S 1, S 0 C i MUX Flaggor Z, P, S U n 1,... U 1, U 0 Figure 2: Uppbyggnaden av en ALU 3

BUSS Register X Register Y Instruktionsregister IR X Y ALU S 2, S 1, S 0, C i Instruktions avkodare Z, P, S, O, C o U Flaggregister Ackumulator U Programräknare PC BUSS Figure 3: Uppbyggnaden av en CPU Tillsammans med ett antal register samt en styrande enhet så kan vi sätta ihop vad som brukar kallas en CPU (Central Processing Unit). Detta är centralenheten i en dator, datorns "hjärna", även kallad mikroprocessor. Låt oss kort beskriva hur en CPU fungerar, exemplierad i Figur 3. Till en början ser vi att in- och utsignaler till ALU:n nu är sammankopplade med register. Ett n-bitars register är helt enkelt n minneselement (D-vippor) som håller n bitar i minnet. Registret har n insignaler och n utsignaler samt minst en ytterligare insignal som kan användas för att ladda in insignalvärdet i minnet. När vi använder ALU:n är det alltså register X och Ys innehåll som är insignaler till ALU:n. På samma sätt läggs resultatet i register U 4

samt i registret som innehåller aggorna (statusregister). CPU:n kommunicerar både internt och externt med hjälp av en buss. Bussen tillåter era enheter (till exempel register) att dela på samma utsignal, dvs det är alltid högst en enhet som får generera utsignalen. Det betyder att vi måste ha styrsignaler till bussen som talar om vilken enhet som ska lägga ut sitt innehåll på bussen. Logiskt svarar detta exakt mot en multiplexer. Det är dock kostsamt att implementera bussen som en multiplexer direkt med grindar, så oftast används alternativa metoder. Ett vanligt sätt är att använda en three-state utgång till en grind. Med en three-state utgång kan utsignalen vara 0, 1 eller "högohmig". Det sistnämnda innebär i digitaltekniskt sammanhang att vi har ett avbrott på utsignalen. Det nns då en insignal som styr huruvida utsignalen är högohmig eller inte. Eekten blir alltså att bara en utsignal är inkopplad på bussen vid varje tidpunkt. Detta innebär att vi kan koppla samman era utsignaler från olika enheter på en gemensam buss så länge alla utom en av dessa utsignaler är högohmiga. CPU:n kommunicerar med ett yttre minne och hämtar in instruktioner i form av instruktionens operationskod (ett bitmönster). När operationskoden för en instruktion kommer in till CPU:n via bussen läggs den i instruktionsregistret, IR. För att veta var i det yttre minnet som CPU:n ska hämta nästa instruktion, nns ett register som innehåller adressen till nuvarande instruktion. Det kallas för Programräknare, PC, eller alternativt instruktionsräknare. När CPU:n är färdig med den nuvarande instruktionen kommer den att räkna upp programräknaren och sedan begära att få läsa minnet på den nya minnesadressen som programräknaren nu pekar på. Till sist har vi instruktionsavkodaren, den styrande enheten i CPU:n att beskriva. Instruktionsavkodare genererar styrsignalerna till alla enheterna i CPU:n, och även till enheter utanför CPU:n. Den läser först in nästa instruktion i instruktionsregistret. Beroende på vilken instruktion det är så genererar den styrsignaler för läs/skriv till register och minne samt eventuella styrsignaler till ALU:n. När den är klar ska programräknaren uppdateras och därefter läser instruktionsavkodaren in nästa instruktion och så fortsätter det. Figur 4 visar en enkel datormodell. Förutom CPU:n så har vi ett yttre minne där vi kan adressera olika adresser och läsa ut vad som nns i minnet på respektive adress. Vi har tidigare beskrivit uppbyggnaden av ett ROM minne, ett minne där vi alltså enbart kan läsa. Detta passar bra för att lagra ett antal instruktioner som vi vill exekvera. Har vi ett RWM minne så kan vi både läsa och skriva i minnet. 5

CPU Central Processing Unit Minne ROM, RWM I/O In/Ut-enheter BUSS (Databuss, Adressbuss, Styrbuss) Figure 4: En enkel dator Bussen är uppdelad i en adressbuss, där vi då lägger adressen till minnet, samt en databuss som innehåller de dataord som läses in eller ut. För att styra vilka enheter som ska vara aktiva på bussen så använder CPU:n styrbussen. I datormodellen nns också In- och Ut enheter (I/O). De fungerar liknande minnesmodulen. I/O modulen har register och/eller minne som CPU:n kan läsa eller skriva till och dessa register (minne) står i direkt anslutning till en fysisk I/O del. I en dator kan detta vara tangentbord, grakkort, etc. Avslutningsvis beskriver vi kortfattat datorns arbetssätt. Som vi beskrev ovan läses en instruktion in från minnet, den exekveras och sedan uppdateras programräknaren så att vi kan hoppa till nästa instruktion. Sekvensen av instruktioner som ska utföras kallar vi för program och detta ligger lagrat i minnet. Exempelvis kan programmet börja i minnesadress 00 00 och programpekaren börjar i detta värde när "datorn" slås på. Den första instruktionen läggs i instruktionsregistret. Instruktionen beskriver vilken operation som ska utföras och på vilken/vilka operander. Eftersom en viss instruktion svarar mot ett visst bitmönster i IR är det klokt att använda mnemonics, dvs vi använder symboliska namn istället för bitmönster när vi skriver program. En sekvens av instruktioner i formen av mnemonics brukar 6

kallas för assemblerkod, medan den binära formen som ligger i minnet kallas för maskinkod. Assemblerkoden måste översättas till maskinkod för att programmet ska kunna exekveras. Det är konstruktören av en CPU som bestämmer vilka instruktioner som ska nnas. Vissa har ett mindre antal enkla instruktioner, medan andra kan ha många mer komplicerade instruktioner. Låt oss tänka oss att vi i vårt exempel har följande. Minnet är uppdelat i ett programminne och ett dataminne, båda med 4 bitars adress. Programminnet innehåller 8 bitar per adress, dataminnet innehåller 4 bitar per adress. Instruktionerna är: bitmönster Instruktion Funktion 0000dddd LDX ladda register X med värde dddd. 0001dddd LDY ladda register Y med värde dddd. 0010dddd ADD addera X med Y, resultat i U. 0011dddd ADDC addera X, Y och bit C i statusregistret, resultat i U. 0100dddd DEC minska X med 1, resultat i U. 0101dddd JZ hoppa till adress dddd om aggan Z = 1. 0110dddd LXU ladda X med värdet av U. 0111dddd LYU ladda Y med värdet av U. 1000dddd AND bitvis AND med X och Y, resultat i U. 1001dddd XOR bitvis XOR med X och Y, resultat i U. 1010dddd OR bitvis OR med X och Y, resultat i U. 1011dddd INV bitvis invertering av X, resultat i U. 1100dddd MW skriv U i dataminnet på adress dddd. 1101dddd MRX ladda register X med värdet i dataminnet på adress dddd. 1110dddd MRY ladda register Y med värdet i dataminnet på adress dddd. 1111dddd JMP hoppa till adress dddd. Detta är bara ett enkelt exempel och många fundamentala instruktioner som skulle behövas för att göra normala operationer nns inte med. Uppgift 1: Vad gör följande program? Vad blir resultatet som lagras i minnet? (du får göra antaganden om hur instruktionerna exakt fungerar) 7

programadress Instruktion 0000 LDX, 0100 0001 LDY, 1011 0010 ADD, **** 0011 MW, 0000 0100 LDX, 0011 0101 LDY, 0001 0110 ADDC, **** 0111 MW, 0001 1000 JMP, 1000 Uppgift 2: Antag att en användare har skrivit in två tal x och y i dataminnet, position 0000 respektive 0001. Skriv ett program som räknar ut 3 x + y + 2 mod 16 och levererar resultatet i dataminnet, position 0010. 2 Grindar och transistorer Vi ska kort beskriva lite om hur vi kan bygga upp olika typer av grindar med hjälp av transistorer. Vi väljer att uteslutande diskutera MOS-transistorn, som är den grundläggande tekniken i modern kretskonstruktion. Få konstruktörer kommer i kontakt med arbete på transistornivå, men det är ändå viktigt har ha en förståelse för hur elektroniken bakom uppbyggnaden av grindar och andra digitala byggblock ser ut. Historiskt har man använt olika metoder för att konstruera integrerade logiska kretsar. Detta har gett upphov till olika logikfamiljer, där kretsar inom samma familj har liknande egenskaper vad gäller snabbhet och energiförbrukning. En föregångare till dagens teknik var DTL (diod-transistor logik). En mycket populär logikfamilj som kom fram på 60-talet var TTL (Transistor Transistor Logic). Den har haft stor betydelse för utvecklingen av digitaltekniken och innehöll ett antal standardkretsar, grindar, multiplexrar, räknare, register, och adderare. Välkänd var till exempel Texas Instruments 74-serie som började tillverkas under 60-talet. Under 80-talet kom sedan de programmerbara kretsarna, och en sådan krets kunde ersätta ett stort antal TTL-kretsar. TTL-kretsarna fasades ut ur nya konstruktioner. Dagens kretsutveckling är nästan uteslutande baserad på MOS-transistorn. MOS-transistorn (Metal Oxide Semiconductor) ck sitt startskott när Intel 8

grundades på slutet av 60-talet. Den har många attraktiva egenskaper, såsom låg eektförbrukning och hög packningstäthet, dvs vi kan få in miljontals transistorer på ett chip. MOS-transistorn (eller MOSFET transistorn som är dess fullständiga namn) nns i två typer, dels nmos (n-kanals MOS), dels pmos (p-kanals MOS). Uppbyggnaden av en nmos-transistor visas i Figur 5. Figure 5: nmos transistor Den innehåller fyra elektroder, emitter (source) S, kollektor (drain) D, styre (gate) G, samt substratet (substrate) B. Som visas i bilden så utgörs source och drainområdena av n-dopat kisel. Dessa ligger i ett p-dopat substrat. Mellan styret och substratet nns ett tunnt lager isolerande kiseldioxid. Styret tillverkades förr av metall vilket gav namnet MOS (metal oxid semiconductor), men numera används ofta polykristallint kisel. På grund av det isolerande skiktet kiseldioxid är inresistansen alltid mycket hög i styret. Spänningen på styret påverkar däremot kanalen mellan source och drain. Av många anledningar är storleken på kanalområdet (eller styret) av stor betydelse. Dels vill vi naturligtvis göra transistorn så liten som möjligt, vilket gör att vi kan få plats med er transistorer på samma yta. Men storleken har också betydelse för hur snabbt transistorn kan slå om (logiskt slå om från 0 till 1 eller tvärtom) samt hur mycket ström som går igenom transistorn 9

(vilket påverkar eektförbrukningen). Vid tillverkning av integrerade kretsar används en fotograskt teknik med fotomasker, där man bygger upp lager efter lager. Som ett mått på hur små komponenterna kan göras anger tillverkningsprocessen oftast en minsta möjliga linjebredd. Historiskt har linjebredden minskat varje gång en ny generation av tillverkningsteknik har introducerats. Idag kan vi exempelvis läsa om att en konstruktion är gjord i "55nm CMOS Technology". Vi illustrerade en nmos transistor. En pmos transistor har samma uppbyggnad men här är substratet n-dopat och source och drain-områdena är p-dopade. Den får då en annan funktion, som vi strax ska se. MOS-transistorns funktion är i vårt sammanhang som en mekanisk switch. Den kan alltså vara i ett av två lägen, SLUTEN eller ÖPPEN. Vägen mellan drain och source består av två övergångar "n till p" och sedan "p till n". Utan spänning på styret så kan detta ses som två motriktade dioder. Då respektive diod bara leder i en riktning kan ingen ström yta genom npnövergången (förutom läckström) och funktionen hos transistorn motsvarar då en öppen switch. Om det däremot läggs en positiv spänning på styret (i förhållande till substratet), så kommer elektroner från det p-dopade substratet att attraheras in i kanalområdet mellan drain och source. Om spänningen är högre än en viss tröskelspänning så nns det så många elektroner i kanalområdet att det bildas en ledare mellan source och drain-områdena. I detta fall svarar funktionen mot en sluten switch. Sammanfattningsvis, source och drainelektroderna svarar mot en switch som styrs av spänningen på styret. Med en positiv spänning högre en tröskelspänningen är switchen sluten, annars öppen. En transistor som beskrivs som ovan är av anrikningstyp. Det andra alternativet är en nmos-transistor av utarmningstyp. En sådan transistor har istället egenskapen att switchen normalt är sluten, men om en tillräckligt stor negativ spänning nns på styret så är switchen öppen. En sådan transistor tillverkas med ett n-dopat kanalområde (som då leder). Den negativa spänningen på styret stöter bort elektronerna i kanalområdet och switchen är öppen. Avslutningsvis behöver vi kort beskriva pmos-transistorn. Source och drain-områdena är p-dopade och substratet n-dopat. För att transistorn ska kunna leda mellan source och drain så måste positiva laddningsbärare, eller "hål", föras in i kanalen så att vi får en p-kanal mellan de p-dopade områdena. I en pmos-transistor av anrikningstyp får vi in "hål" i kanalområdet om vi lägger en tillräckligt stor negativ spänning på styret. Vi får en sluten switch. 10

Symbolerna för de olika transistortyperna visas i Figur 6. Figure 6: MOS transistor symboler Det nns en hel del att säga om egenskaperna hos MOS-transistorerna med avseende på bland annat omslagstider, vilket beror på kapacitansen i kretsen. 2.1 Grindar från transistorer Det nns två vanliga sätt att konstruera logiska grindar med hjälp av MOStransistorer. Den första tekniken vi diskuterar kallas för CMOS, complementary MOS och innebär att vi hela tiden använder en pmos-transistor och en nmos-transistor tillsammans. Här använder vi enbart anrikningstyp. Vi beskriver CMOS-inverteraren. Transistorernas styren är sammankopplade och bildar inverterarens ingång. Se Figur 7. 11

Figure 7: CMOS inverterare I Figur 8 visas hur inverteraren är uppbyggd i ett p-substrat. pmos transistorn nns i ett n-dopat område nedsänkt i p-substratet, en så kallad n-brunn. Figure 8: Implementation av CMOS inverterare Den alternativa tekniken som vi kort beskriver kallar vi nmos-tekniken, eller nmos med pull-up komponent. Här använder vi endast en typ av 12

transistor, i detta fall nmos-transistorn. I sin enklast beskrivning ser en inverterare ut som i Figur 9. Här har vi bara en enda transistor samt ett pullup motstånd. Om ingången är hög (V DD ) leder transistorn och spänningen på utgången dras ner till låg (om R är mycket större än resistansen för den ledande transistorn). Om å andra sidan ingången är låg så kommer utgången att ligga hög. En väsentlig skillnad mot CMOS-tekniken är att i ett statiskt läge där utsignalen ligger låg yter en ström genom resistorn. För att begränsa eekten av denna läckström krävs en stor resistans, vilket är väldigt kostsamt att implementera. Ytan som krävs är stor som era hundra MOS-transistorer. Lösningen på detta problem är att använda en transistor som aktiv pull-up, i detta fall en nmos av utarmningstyp. Vi hoppar över detaljerna i denna konstruktion. Figure 9: nmos inverterare 13

2.2 Andra grindar i CMOS och nmos Här följer bilder av hur NAND och NOR implementeras med två ingångar. Figure 10: CMOS NAND samt nmos NAND 14

Figure 11: CMOS NOR samt nmos NOR Vill vi ha en AND-grind eller en OR-grind behövs er transistorer och enklas sätter vi en inverterare på utgången av NAND eller NOR-grinden. Alltså, det är bättre att implementera en Boolesk funktion med Nand-Nand struktur än att använda And-Or. Avslutningsvis ger vi implementeringen av en XOR-grind. Som ni ser är denna mer komplex. 15

Figure 12: CMOS XOR En CMOS-inverterare kan också implementeras med three-state utgång, som diskuterats tidigare. 16