Layoutgenerator för serie/parallell-omvandlare

Relevanta dokument
Automatiserad panoramasekvensdetektering på Narratives platform

Automatization of test rig for microwave ovens

Master Thesis. Study on a second-order bandpass Σ -modulator for flexible AD-conversion Hanna Svensson. LiTH - ISY - EX -- 08/ SE

ChiliChallenge. Utveckling av en användbar webbapplika on. ChiliChallenge Development of a web applica on with good usability

Institutionen för datavetenskap Department of Computer and Information Science

Utveckling av webbsida för lokala prisjämförelser med användbarhetsmetoder

Ritning av industribyggnad med dokumentation av elcentraler

Dokumentation av elritningar i en byggnad

Laddningsomkopplare för två batterier

Dokumentation av elinstallationer i en byggnad

!"# " $"% & ' ( )* + 2' (

Inkoppling av manöverdon för servicekörning av kran 481

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

Strategiska överväganden vid tillbyggnation - Ekonomiska och hållfasthetsmässiga konsekvenser utifrån snölastreglering

Arbetsprov för nyanställda inom el- och automationsteknik

Det här är inte en porslinssvan - Ett grafiskt kampanjkoncept för second hand-butiker med välgörenhetssyfte

Konstruktion och undersökning av effektsnåla slumptalsgeneratorer

Självkalibrering av varvtalsregulator

Analys av anslutningsresor till Arlanda

Riktlinjer för kontrollutrustning

Uppdatera produktkalkyler och verifiera elektriska komponenter i styrskåp till luftavfuktare

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Implementering av standardceller med låg effektförbrukning. Oscar Rasmusson

LAYOUT-GENERATOR FÖR SIFFER- SERIELL TVÅPORTSADAPTOR

3D visualisering av Silverdal

Sekvensnät. William Sandqvist

Tentamen i Digitalteknik, EITF65

Sekvensnät vippor, register och bussar

Laborationshandledning

Arbete med behörighetsadministration och åtkomstkontroll i större företag

Laborationshandledning

Kliniskt datainsamlingssystem med beslutsstöd - Användarutredning och gränssnitt för Sahlgrenskas akutintag

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Tenta i Digitalteknik

F5 Introduktion till digitalteknik

Sekvensnät i VHDL del 2

Elsäkerhetsanalys samt dokumentation av elinstallationer

Tenta i Digitalteknik

Tentamen i Digital Design

DIGITALTEKNIK. Laboration D172

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

Laboration i digitalteknik Introduktion till digitalteknik

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

Introduktion till syntesverktyget Altera Max+PlusII

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

IE1204 Digital Design

Försättsblad till skriftlig tentamen vid Linköpings universitet

Grindar och transistorer

Nätverksutbildning för bibliotekarier samt museioch arkivpersonal

VHDL och laborationer i digitalteknik

Grundläggande A/D- och D/A-omvandling. 1 Inledning. 2 Digital/analog(D/A)-omvandling

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

IE1205 Digital Design: F9: Synkrona tillståndsautomater

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

TSEA22 Digitalteknik 2019!

Låskretsar och Vippor

DIGITALTEKNIK I. Laboration DE2. Sekvensnät och sekvenskretsar

Digital elektronik CL0090

VHDL 1. Programmerbara kretsar

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Digital elektronik CL0090

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Ett urval D/A- och A/D-omvandlare

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

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Talrepresentation. Heltal, positiva heltal (eng. integers)

Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

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

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

Försättsblad till skriftlig tentamen vid Linköpings Universitet

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

Konstruktionsmetodik för sekvenskretsar

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

Tentamen i Digitalteknik, TSEA22

EDUCATE - ett europeiskt hypertextbaserat utbildningspaket

Informationssäkerhetsmedvetenhet

FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM

Digitalteknik F12. Några speciella automater: register räknare Synkronisering av insignaler. Digitalteknik F12 bild 1

A/D- och D/A- omvandlare

Beijer Electronics AB 2000, MA00336A,

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

TSEA22 Digitalteknik 2019!

IE1205 Digital Design: F6 : Digital aritmetik 2

Styrteknik: Grundläggande logiska funktioner D2:1

Tenta i Digitalteknik

IE1204/IE1205 Digital Design

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

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

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

KALKYLATOR LABORATION4. Laborationens syfte

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

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

LOG/iC2. Introduction

(2B1560, 6B2911) HT08

Tentamen med lösningar i IE1204/5 Digital Design Måndag 27/

Simulering med ModelSim En kort introduktion

DIGITALA TAL OCH BOOLESK ALGEBRA

Digital elektronik CL0090

Transkript:

Layoutgenerator för serie/parallell-omvandlare Examensarbete utfört i Elektroniksystem vid Linköpings Tekniska Högskola av Per Mårtensson LiTH-ISY-EX-ET-0267-2003 Linköping 2003

Layoutgenerator för serie/parallell-omvandlare Examensarbete utfört i Elektroniksystem vid Linköpings Tekniska Högskola av Per Mårtensson LiTH-ISY-EX-ET-0267-2003 Handledare: Erik Backenius Examinator: Mark Vesterbacka

Avdelning, Institution Division, Department Institutionen för Systemteknik 581 83 LINKÖPING Datum Date 2003-09-12 Språk Language X Svenska/Swedish Engelska/English Rapporttyp Report category Licentiatavhandling X Examensarbete C-uppsats D-uppsats Övrig rapport ISBN ISRN LITH-ISY-EX-ET-0267-2003 Serietitel och serienummer Title of series, numbering ISSN URL för elektronisk version http://www.ep.liu.se/exjobb/isy/2003/267/ Titel Title Författare Author Layoutgenerator för serie/parallell-omvandlare A layout generator for serial/parallel conversion Per Mårtensson Sammanfattning Abstract I digitala kretsar kan både bit-parallella och bit-seriella interface förekomma.t ex kan en integrerad digital krets (IC-krets) internt använda sig av bit-parallella aritmetiska kretsar medan dess kommunikation med andra integrerade kretsar sker bit-seriellt. Genom att använda seriell kommunikation mellan IC-kretsar kan antalet ben på kapslarna effektivt begränsas. Detta examensarbete gick ut på att göra en layoutgenerator för generering av en parametriserbar serie/parallellomvandlare och en parallell/serieomvandlare. När en krets använder sig av både bit-seriell och bit-parallell representation av data behövs dessa för att omvandla mellan formaten. In digital circuits both bit-parallel and bit-serial interfaces can occur. For example, an integrated digital circuit can use bit-parallel arithmetic circuits internally while its communication with other integrated circuits is bit serial. By using serial communication between IC:s the number of pins on the packages can be effectively limited. The purpose of this final project work was to create a layout generator for generation of a parametrizable serial/parallel converter and a parallel/serial converter. If a circuit uses both bit-serial and bit-parallel representation of data these are needed to convert between the formats. Nyckelord Keyword serie/parallell, modulgenerator, SKILL, parametriserbar, layout serial/parallel module generator, SKILL, parametrizable, layout

INNEHÅLLSFÖRTECKNING 1 INLEDNING... 1 1.1 Bakgrund...1 1.2 Uppgift...1 1.3 Rapportens innehåll...2 2 VERKTYG OCH PROGRAMSPRÅK... 3 2.1 Virtuoso Layout Editor...3 2.2 SKILL...4 2.3 Övriga...5 3 TEORI... 7 3.1 Serie/Parallellomvandlare...7 3.1.1 Skiftregister...8 3.1.2 Parallellt register...8 3.1.3 Kontrollkrets...9 4 IMPLEMENTERING... 11 4.1 Layouter och kretsscheman...11 4.1.1 D-vippan...11 4.1.2 Räknaren...12 4.1.2.1 Nollställningsbar D-vippa...14 4.1.3 Komparator...15 4.1.4 Cellbibliotek och layoutregler...17 4.1.5 Tekniska problem i Cadence...18 4.2 Programkodning...19 4.2.1 Parallellt register och skiftregister...19 4.3 Körexempel...23

5 RESULTAT... 25 5.1 Mål och resultat...25 5.2 Problem...25 5.3 Förslag på förbättringar...26 6 REFERENSER... 27

Kapitel 1 Inledning 1 1 INLEDNING 1.1 Bakgrund I digitala kretsar kan både bit-parallella och bit-seriella interface förekomma. T ex kan en digital integrerad krets (IC-krets) internt använda sig av bitparallella aritmetiska kretsar medan dess kommunikation med andra integrerade kretsar sker bit-seriellt. Genom att använda seriell kommunikation mellan IC-kretsar kan antalet ben på kapslarna effektivt begränsas. Det är inte enkelt att besvara vilken bit-representation som är effektivast vid olika tillämpningar, vilket inte heller utreds i rapporten. En påtaglig skillnad är dock att bit-seriell aritmetik i regel tar en betydligt mindre yta i anspråk än motsvarande bit-parallell aritmetik. När en krets använder sig av både bit-parallell och bit-seriell representation av data, så krävs kretsar som utför omvandling mellan formaten. 1.2 Uppgift En modulgenerator för en parametriserbar serie/parallell(s/p)-omvandlare skulle skapas m h a Cadencesystemets kommandospråk SKILL[2]. En modulgenerator är ett program som genererar t ex en elektrisk krets med hjälp av ett programspråk, i detta fallet SKILL. Med parametriserbar menas här att användaren av programmet ska kunna bestämma ordlängden på ordet som skall omvandlas. I detta fall är ordlängden begränsad till mellan 2 och 255 bitar. Tillhörande räknare och kontrollenhet för att styra S/P-omvandlaren skulle också skapas. Nödvändiga standardceller att använda i modulgeneratorn saknades, så den första uppgiften var att tillverka dessa.

2 Layoutgenerator för serie/parallell-omvandlare 1.3 Läsanvisningar Rapporten riktar sig främst till de som läst grundläggande kurser inom elektroteknik och digitala kretsar. Förklaringar av grundläggande logiska funktioner och liknande ges inte här utan får inhämtas på annat håll. I rapportens andra kapitel kommer en genomgång av de program och programspråk som använts. Teorin bakom uppgiften tas upp i kapitel tre. Kapitel fyra behandlar arbetsgången och problem, och hur dessa lösts. Kapitel fem innehåller resultat och förslag på förbättringar.

Kapitel 2 Verktyg och programmeringsspråk 3 2 VERKTYG OCH PROGRAMMERINGSSPRÅK 2.1 Virtuoso Layout Editor Cadence Virtuoso Layout Editor (Virtuoso)[4] används för att konstruera integrerade kretsar. Det kan i början verka ganska krångligt och svårt att hantera men efter att ha arbetat ett tag med det börjar det framstå som väl genomtänkt och ganska lättarbetat. I Cadence finns det tre huvudsakliga vyer att skapa kretsar i: layout, schema och symbol, där symbol är den enklaste beskrivningen av en krets och layouten den mest invecklade (se figur 2.1). I Cadence Schematic Editing kan man snabbt skapa kretsscheman som enkelt överförs till simuleringsprogrammet SpectreS i Affirma Analog Circuit Design Environment. Figur 2.1: En inverterare i de tre olika vyerna: layout, schema och symbol.

4 Layoutgenerator för serie/parallell-omvandlare I Virtuoso läggs transistorer och ledningar ut för hand. Vid skapandet av stora kretsar blir detta väldigt tidskrävande. Man kan istället skriva in kommandoord vid Cadenceprompten. Dessa kommandon är definierade i programspråket SKILL. 2.2 SKILL SKILL-kommandon kan skrivas och exekveras direkt i Cadence. Det finns även möjlighet att exekvera hela filer bestående av SKILL-kommandon direkt i Cadence. SKILL är ett scriptspråk vilket innebär att det inte behöver kompileras, vilket har både sina för och nackdelar. Den stora fördelen är att det går att köra filen med programkod direkt i Cadence. Nackdelen är hanteringen av fel, där det endast ges ett felmeddelande utan någon närmare förklaring av felet eller någon referens till var i koden felet har uppkommit. I en fil med hundratals rader kod kan det således ta lång tid att hitta felet, vilket gör programmerandet ineffektivt. SKILL kan användas till att skapa layouter på grindnivå t ex en NAND eller NOR-grind eller som är fallet i detta arbete till att koppla ihop redan färdiga layouter och skapa parametriserbara större kretsar. SKILL påminner mycket om C. Erfarenhet i C-programmering underlättar SKILL-användandet eftersom syntaxen till stor del är lika i de båda programspråken. Loopar, aritmetiska och logiska funktioner m m fungerar nästan uteslutande som i C, men det finns dessutom funktioner som enbart är till för att redigera och lägga till saker i layouten, t ex lägga ut ledare eller instanser eller flytta på en instans så att den får elektrisk kontakt med en annan instans. En sak som kan orsaka problem i SKILL är att alla variabler var de än definieras blir globala. Detta kan dock avhjälpas genom att göra dem till lokala med kommandot prog((a b c) ).

Kapitel 2 Verktyg och programmeringsspråk 5 2.3 Övriga All SKILL-kod är skriven i texteditorn nedit som är mycket lätthanterlig och dessutom har ett SKILL-mod som gör programmeringen lättare. SKILLmoden ger texten olika färger för funktioner, fördefinierade ord och kommatering vilket gör koden lättöverskådlig. Något som saknas är automatisk intendering vilket hade underlättat läsningen av koden ytterligare. Rapporten är skriven i Framemaker, som är ett ordbehandlingsprogram ganska likt word. Har man från början en formatmall att använda flyter arbetet på smidigt och det är lätt att få rapporten snygg. Större delen av figurerna i rapporten är skapade i Dia, vilket är ett enkelt ritprogram utan särkilt många funktioner men som fungerar bra för enklare figurer.

6 Layoutgenerator för serie/parallell-omvandlare

Kapitel 3 Teori 7 3 TEORI 3.1 Serie/parallellomvandlare S/P-omvandlaren är uppbyggd av ett skiftregister, ett parallellt register och en kontrollkrets enligt figur 3.1. Ordet skiftas in seriellt i skiftregistret och räknaren håller reda på hur många bitar som skiftats in. När samtliga bitar finns på plats i skiftregistret skickar kontrollkretsen en unloadsignal till det parallella registret. Det parallella registret behövs för att utgångarna på skiftregistret förändras för varje klockpuls då bitarna skiftas genom skiftregistret. När registret får unload-signalen släpper det igenom alla bitar vid rätt tidpunkt och det seriella ordet kommer ut i parallell form. d0, d1, d2,.,. dn Skiftregister d 0 d 1 d 2 dn Clk Kontroll- Block Clk Load Parallellt register Unload d 0 d 1 d 2 d n Figur 3.1: Serie/parallellomvandlare med skiftregister, parallellt register, kontrollblock, styrsignaler och datasignaler.

8 Layoutgenerator för serie/parallell-omvandlare 3.1.1 Skiftregister Skiftregistret är uppbyggt av kaskadkopplade D-vippor som i figur 3.2. Ordet som skall omvandlas skiftas steg för steg genom skiftregistret för varje klockpuls. D-vippan läser ingången när klockan är låg. När klockan slår om till hög flyttas värdet på ingången över till utgången. När n+1 bitar har skiftats in ligger varje bit i ordet på utgången på en D-vippa i samma ordning som det skiftades in. d0, d1, d2,.,. dn D Q D Q D Q D Q Clk Clk Clk Clk Dff1 Dff2 Dff3 Dffn d 0 d 1 d 2 dn Figur 3.2: Serie in - parallell ut skiftregister med kaskadkopplade D-vippor och klocksignal. 3.1.2 Parallellt register Det parallella registret fungerar som en dörr gentemot skiftregistret. Utan registret skulle bitarna på de parallella utgångarna variera för varje klockpuls. Men med hjälp av registret ligger signalerna på skiftregistrets parallella utgångar instängda tills hela ordet har skiftats in, där efter öppnas dörren och det parallella ordet släpps igenom registret. Det fungerar så att till skillnad från skiftregistret som matas med en kontinuerlig klocksignal, matas D- vippornas klockingångar i registret med en konstant låg signal, ända tills hela ordet är inskiftat i skiftregistret. Sedan lyfts unload-signalen upp till hög i en halv period och D-vipporna släpper igenom det parallella ordet. Registret är uppbyggt som i figur 3.3 med statiska D-vippor.

Kapitel 3 Teori 9 d 0 d 1 d 2 d n D Q D Q D Q D Q Clk Clk Clk Clk Dff1 Dff2 Dff3 Dffn Unload d d d d 0 1 2 n Figur 3.3: Parallell in - parallell ut register med statiska D-vippor och Unloadsignal. 3.1.3 Kontrollkrets Räknarens uppgift är se till att rätt antal bitar skiftas in i skiftregistret innan de läses av det parallella registret. Kontrollogiken jämför räknarens utsignaler med det binära talet för antalet bitar i det omvandlade ordet. När dessa stämmer överens nollställs räknaren samtidigt som kontrollsignalen unload sätts hög. Detta medför att det parallella registret öppnas och det parallella ordet kan läsas på utgången. Kontrollkretsens uppbyggnad behandlas närmare i kapitel 4.

10 Layoutgenerator för serie/parallell-omvandlare

Kapitel 4 Implementering 11 4 IMPLEMENTERING 4.1 Layouter och kretsscheman 4.1.1 D-vippan D-vippan som används i S/P-omvandlaren är en statisk master-slave vippa som är uppbyggd av 26 transistorer enligt figur 4.1. Den använder en extern enfas klocka för att skapa en intern klocksignal och dess invers. M1 M5 M9 M13 D M2 M6 1 M10 M14 1 1 Q M3 1 M7 M11 1 M15 Clk M4 M8 M12 M16 Figur 4.1: Statisk CMOS master-slave D-vippa. D-vippan var den första kretsen som konstruerades på layoutnivån. Efter att ha studerat en standardcell sattes kanalbredden på N-transistorerna till 0.5 µm respektive 1 µm och P-transistorerna till 1 µm respektive 2 µm. D-vippans layout ses i figur 4.2. D-vippans storlek satte måtten för de övriga layouterna

12 Layoutgenerator för serie/parallell-omvandlare som alla är 12.5 µm från överkant på spänningskällan, vdd-ledaren, till underkant på jord, gnd-ledaren. Anledningen till mellanrummet mellan jord respektive vdd-ledaren är att transistorernas storlek har minskats från ursprungslayouten. Detta skapade inga problem då yttermåtten på D-vippan inte har förändrats. Hade däremot transistorerna ökat i storlek hade detta skapat stora problem vid genereringen av kretsen, då detta hade krävt att alla standardceller hade behövts dimensionerats om. Figur 4.2: Layout av statisk D-vippa. 4.1.2 Räknaren Till S/P-omvandlaren krävs en räknare som genererar en styrsignal. Räknaren är i detta fall en synkron binär-räknare. För en 3 bitars räknare fås följande sekvens 000, 001, 010, 011, 100, 101, 110, 111, 000...osv. Med synkron menas att räknaren styrs av en klocka. Det finns också

Kapitel 4 Implementering 13 asynkrona räknare, vilka styrs av speciella styrsignaler. Varje bit i räknaren är uppbyggd av en D-vippa, en XOR och en AND-grind (se figur 4.3). I layouten av räknaren sitter ytterligare en XOR-krets kopplad till utgången på räknarbiten (se figur 4.4). XOR-kretsen är en del av kontrollnätet som jämför räknarens utsignaler med ordlängden. Genom att implementera XORkretsen i räknardelen underlättas väsentligt genereringen av hela räknaren och kontrollogiken. Indatats ordlängd representeras av ett binärt tal vars bitar jämförs med utsignalen från räknaren enligt figur 4.6. Clk reset Cin XOR Dffr out & Cout Figur 4.3: Blockschema över en bit i räknaren. Figur 4.4: Layout av en bit i räknaren med integrerad XOR-krets tillhörande komparatorn.

14 Layoutgenerator för serie/parallell-omvandlare Vänstra ingången Cin i räknaren fungerar som en enablesignal. Så länge den är hög räknar kretsen upp från noll tills att den nollställs och börjar sedan om igen. Cout från den första biten kopplas till Cin på nästföljande o s v. Den sista Cout-signalen används inte. 4.1.2.1 Nollställningsbar D-vippa D-vippan i räknaren är samma krets som den som används i registren med den enda skillnaden att den går att nollställa. Detta har åstadkommits genom att en resetkrets (se figur 4.5) kopplats till ingången på vippan. Insignalen reset är aktivt låg, vilket betyder att transmissionsgrinden är öppen så länge resetsignalen är hög, vilket ger att utsignalen är lika med insignalen In. N- transistor M4 leder så länge resetsignalen är hög medan P-transistor M3 styrs av den inverterade resetsignalen och leder så länge den är låg. Denna koppling krävs för att få fullt sving på utsignalen. När resetsignalen är låg stängs de båda övre transistorerna M3 och M4, medan transistor M5 börjar leda. Resetsignalen är kopplad till alla bitar i räknaren vilket gör att hela räknaren nollställs och börjar om från noll när resetsignalen blir låg. In reset M1 M3 M4 OUT M2 M5 Figur 4.5: Resetkrets med inverterare och transmissionsgrindar.

Kapitel 4 Implementering 15 4.1.3 Komparator För att detektera att räknaren har räknat upp till rätt värde används en komparator. Komparatorns insignaler består av räknarens utsignal och en fix insignal. Utsignalen från komparatorn är återkopplad till räknaren. I de fall ordet är lika med 2 n -1 nollställer räknaren sig själv men komparatorn måste ändå finnas med i kretsen på grund av att den även styr signalen unload till registret. Räknarens utsignaler jämförs med ett fixt tal vilket är antalet bitar i ordet som skall omvandlas. Om ordet som skall omvandlas t.ex. är 11 bitar långt jämför komparatorn räknarens utgångar med det binära talet 1011. Komparator Clk 1 Reset enable XOR Dffr XOR & 1 0 XOR Dffr XOR & & 1 XOR Dffr XOR & Unload Figur 4.6: 3-bitars räknare med komparator som räknar till fem och sedan nollställer. Resetsignalen är aktivt låg och unloadsignalen till registret är aktivt hög. Komparatorn består av flera XOR-grindar (se figur 4.7) och en avslutande OR-grind. XOR-grindarna är lika många som antalet bitar i räknaren. För att inte behöva seriekoppla mer än 2 transistorer används endast 2- ingångarskretsar för att realisera OR-funktionen. Detta försvårar genereringen av komparatorn om den har fler än 2 ingångar då man måste använda sig av flera olika logiska grindar, beroende på antalet ingångar.

16 Layoutgenerator för serie/parallell-omvandlare M1 M2 M5 M6 M7 M8 A B M9 A B M3 M4 M10 Figur 4.7: XOR-krets som används i räknare och komparator. Exempelvis, till en 5-ingångars OR-grind behövs två NOR, en NAND och en OR-grind enligt figur 4.8. Att göra på detta sätt är inte bara mer komplicerat programmeringsmässigt, det krävs även fler transistorer än om man skulle generera en 5-ingångars NOR-grind med efterföljande inverterare som i figur 4.9. Men kretsen får på detta sätt bättre prestanda m a p tröskelspänningar. A B 1 & C D E 1 1 Y Figur 4.8: 5-ingångars OR-grind uppbyggd av 2-ingångars NOR, NAND och OR-grindar

Kapitel 4 Implementering 17 A B C D Y E A B C D E Figur 4.9: 5-ingångars NOR-grind med inverterare på utgången. 4.1.4 Cellbibliotek och layoutregler I den 0,18 µm-teknologi som använts finns det sex metallager och ett polylager att tillgå. I standardcellerna har layouten begränsats till att enbart använda första och andra metallagret samt polylagret. Detta för att underlätta ledningsdragningen vid ihopkopplandet av celler i större layouter. Alla vddoch gnd-ledare är i metallager ett. I standarcellerna är i så stor utsträckning som möjligt ledningarna av metall ett dragna vertikalt och ledningarna av metall två dragna horisontellt, detta för att ytterligare underlätta ledningsdragningen. Ingångar och utgångar på de olika standarcellerna är också anpassade så att de ligger på samma höjd och har gemensam vertikal mittpunkt med vdd- och gnd-terminalerna. Detta underlättar programmeringen då det i de flesta fall bara behöver dras räta ledningar mellan celler. De standardceller som finns i biblioteket är: NOR, NAND, inverterare, d-vippa och XOR. OR och AND skapas enklast med en NOR eller NAND följd av en inverterare. Standardcellerna är gjorda för hand i Virtuoso Layout Editor och har standardiserad höjd och terminalnamn (se figur 4.10). Detta underlättar väsentligt programmeringen av modulgeneratorn då det går att återanvända stora delar kod bara genom att ändra vissa små detaljer. Ursprungslayouten av D-vippan blev 12,5 µm hög.

18 Layoutgenerator för serie/parallell-omvandlare Resterande celler konstruerades i samma höjd. Bredden varierar dock men det har liten betydelse då alla celler implementeras med jord- och vdd-ledarna horisontellt. Matningsspännig-(vdd) och jord-(gnd) ledarna är 1 µm breda. vdd1 1um vdd2 In 12,5um Out gnd1 gnd2 Figur 4.10: Layoutskiss för standardcellernas mått och utseende. 4.1.5 Tekniska problem i Cadence Vid skapandet av standardcellerna uppkom flera återkommande problem som inte verkar gå att komma undan i Cadence. Det största och mest tidskrävande att rätta till är off grid -problem som innebär att en ledning, kontakt eller terminal m m hamnar 0.01 µm fel åt något håll, antingen vertikalt eller horisontellt. Detta problem löses enklast genom att ändra koordinaterna i instansens propertyfunktion. Det går oftast inte att åtgärda för hand vilket medför att det tar lång tid att rätta till.

Kapitel 4 Implementering 19 4.2 Programkodning 4.2.1 Parallellt register och skiftregister Det parallella registret och skiftregister genereras till stora delar på samma sätt p g a deras likformiga uppbyggnad. D-vipporna som skapades i layouteditorn kopplas med hjälp av programspråket SKILL ihop till ett parallellt register och ett skiftregister. Detta sker i huvudsak i en eller två forloopar beroende på hur många bitar registren ska bestå av. För att avgöra detta används följande kod. c_temp=round(sqrt(n)) if( oddp(c_temp) then c=(c_temp+1)/2 r=round((n/c)-0.5) rest=n-(r*c) ) if( evenp(c_temp) then c=c_temp/2 r=round((n/c)-0.5) rest=n-(r*c) ) Antalet bitar representeras av n. Antalet kolumner och rader representeras av c respektive r. Roten ur n avrundat till närmsta heltal läggs i variabeln c_temp. Om c_temp är ett udda tal utförs algoritmen i den första if-satsen. Där sätts antalet kolumner till (c_temp+1)/2. Ettan adderas för att c ska bli ett heltal. Sedan avgörs hur många rader som skall genereras genom satsen round((n/c)-0.5). Resten som inte kan bli mer än en rad är alltså n-(r*c). Om antalet bitar är ett jämnt tal utförs algoritmen i den andra if-satsen. Dessa algoritmer utförs för att få en önskad symmetri i kretsen. I detta fall skall de båda registerna efter ihopkoppling få en så kvadratisk form som möjligt. Hade symmetrin inte varit väsentligt hade programmerandet kunnat förenklats avsevärt genom att enbart lägga ut D-vipporna på en enda lång rad eller kolumn.

20 Layoutgenerator för serie/parallell-omvandlare För att göra dragningen av ledningarna mellan vipporna så enkel som möjligt läggs de ut enligt figur 4.11. Detta medför att varannan rad måste läggas upp och ned för att vdd och gnd ledarna skall komma emot varandra. Detta gör också att det inte blir några tomrum mellan D-vipporna och arean minimeras således. Detta klaras av med en if-sats som kontrollerar om radnumret är ett jämnt eller ett udda tal. Shiftregister Parallellt register d0 d0, d1, d2,..,d7 Dff Dff Dff Dff d1 Dff Dff Dff Dff d2 d3 d4 Dff Dff Dff Dff d5 Dff Dff Dff Dff d6 d7 Figur 4.11: Blockschema över layouten av en 8-bitars S/P-omvandlare utan kontrollogik. Genereringen av registren bygger i huvudsak på två forloopar, den ena inne i den andra. Den yttre forloopen räknar upp variabeln i som är antalet rader som registret innehåller. I den inre forloopen, som räknar upp antalet kolumner, sker all generering av celler. Detta sker med hjälp av olika if-satser som kontrollerar var i registret processen är och hur D-vipporna skall läggas ut just där.

Kapitel 4 Implementering 21 for(så länge inte antalet rader överstigs for(så länge inte antalet kolumner överstigs ett antal if satser som bl.a. kontrollerar om: det är ett udda eller jämnt radnummer första eller sista biten i en rad det är sista biten i sista raden o.s.v. ) ) Layouten av ett 9-bitars parallellregister visas i figur 4.12. För att minska antalet använda lager vid ledningsdragningen används metallager 2 till att dra lodräta ledningar från utgångar och ingångar. Programmet räknar ut vilken position i y-led varje lodrät ledning skall dras till och placerar där en övergång mellan metallager 2 och 3. Därifrån dras sedan ledningar i metallager 3 till kanterna på kretsen.

22 Layoutgenerator för serie/parallell-omvandlare Met 1 Met 2 Met 3 Overgang mellan tva metallager d0 d1 d2 Vdd d0 d1 d2 Gnd Gnd d3 d4 d3 d5 d4 d5 Vdd Vdd d6 d6 d7 d8 d7 d8 Gnd Figur 4.12: Layoutskiss av 9-bitars parallellregister med ingångar till vänster och utgångar till höger.

Kapitel 4 Implementering 23 4.3 Körexempel Figur 4.13 visar en layout genererad av modulgeneratorn. Till vänster ses de båda registren och till höger räknaren och kontrollkretsen. skiftregister parallellt register räknare kontrollkrets Figur 4.13: Genererad layout av en 8-bitars serie/parallellomvandlare.

24 Layoutgenerator för serie/parallell-omvandlare

Kapitel 5 Resultat och förslag på förbättringar 25 5 RESULTAT OCH FÖRSLAG PÅ FÖRBÄTTRINGAR 5.1 Mål och resultat Målet med examensarbetet var att skapa en modugenerator för generering av dels en serie/parallell-omvandlare, men också en parallell/serie-omvandlare. Andra delen av arbetet blev aldrig färdigställt p g a tidsbrist. Resultatet av examensarbetet är en layoutgenerator skriven i SKILL för en serie/parallell-omvandlare med en kapacitet av upp till 256-bitars ordlängd. Ett standardcellbibliotek har också skapats i Cadence Layout Editor och innehåller förutom grundläggande logiska grindar även en D-vippa, en nollställbar D-vippa och en XOR-grind. 5.2 Problem De problem som uppstod berodde oftast på bristande förkunskaper om hur programmet arbetar. Cadence är ett kraftfullt redskap och att skaffa all den kunskap och erfarenhet som krävs för att kunna utföra ett optimalt arbete i Cadence fanns det inte tid för inom exjobbets ramar. Skapandet av modulgeneratorn hade kunnat förbättras och programmeringstiden avsevärt förkortats om större kunskaper om språket och bättre kunskaper i programmering funnits.

26 Layoutgenerator för serie/parallell-omvandlare 5.3 Förslag på förbättringar En av de stora förbättringar som kan göras i modulgeneratorn är att anpassa SKILL-programmet så att det går att använda en godtycklig D-vippa med ett givet interface. I nuvarande version måste D-vipporna ha ett visst utseende med ingångar och utgångar på vissa givna platser. Kan man ändra på detta blir koden väsentligt enklare att anpassa till olika layouter av D-vippor. Ett exempel är mellanrummet mellan transistorerna och jord respektive transistorerna och vdd-ledarna. Som det är nu kan kretsen inte komprimeras p g a att programmet kräver att höjden är 12,5 µm. En annan förbättring som kan göras är att komprimera programkoden som inte är optimalt skriven m a p kompakthet.

Kapitel 6 Referenser 27 6 REFERENSER [1] Hemert, Lars-Hugo (1992), Digitala kretsar. Andra upplagan. Studentlitteratur, Lund. ISBN 91-44-00099-5 [2] Hjalmarson, Emil (2001), Introduction to skill. Linköping. [3] Kang, Sung-Mo & Leblebici, Yusuf (1999), CMOS Digital Integrated Circuits Analysis and Design. Andra upplagan. Mc Graw Hill, Boston. ISBN 0-07-292507-8 [4] Andreani, Pietro & Molund, Stefan & Zejnic, Rifat (1999), CADENCE 4.4 En sammanfattning. Lunds Tekniska Högskola, Tillämpad elektronik. [5] Björnlert, Calle (2001), Modulgenerator för effektsnåla serie/parallellomvandlare. Examensarbete vid ISY, Linköpings Universitet, Linköping. Reg. nr.: LiTH-ISY-EX-ET-0198 [6] Almquist, Tobias (2002), Layout-generator för sifferseriell tvåportsadaptor. Examensarbete vid ISY, Linköpings Universitet, Linköping. Reg. nr.: LiTH-ISY-EX-ET-0242-2002

På svenska Detta dokument hålls tillgängligt på Internet eller dess framtida ersättare under en längre tid från publiceringsdatum under förutsättning att inga extra-ordinära omständigheter uppstår. Tillgång till dokumentet innebär tillstånd för var och en att läsa, ladda ner, skriva ut enstaka kopior för enskilt bruk och att använda det oförändrat för ickekommersiell forskning och för undervisning. Överföring av upphovsrätten vid en senare tidpunkt kan inte upphäva detta tillstånd. All annan användning av dokumentet kräver upphovsmannens medgivande. För att garantera äktheten, säkerheten och tillgängligheten finns det lösningar av teknisk och administrativ art. Upphovsmannens ideella rätt innefattar rätt att bli nämnd som upphovsman i den omfattning som god sed kräver vid användning av dokumentet på ovan beskrivna sätt samt skydd mot att dokumentet ändras eller presenteras i sådan form eller i sådant sammanhang som är kränkande för upphovsmannens litterära eller konstnärliga anseende eller egenart. För ytterligare information om Linköping University Electronic Press se förlagets hemsida http:// www.ep.liu.se/ In English The publishers will keep this document online on the Internet - or its possible replacement - for a considerable time from the date of publication barring exceptional circumstances. The online availability of the document implies a permanent permission for anyone to read, to download, to print out single copies for your own use and to use it unchanged for any non-commercial research and educational purpose. Subsequent transfers of copyright cannot revoke this permission. All other uses of the document are conditional on the consent of the copyright owner. The publisher has taken technical and administrative measures to assure authenticity, security and accessibility. According to intellectual property law the author has the right to be mentioned when his/her work is accessed as described above and to be protected against infringement. For additional information about the Linköping University Electronic Press and its procedures for publication and for assurance of document integrity, please refer to its WWW home page: http:// www.ep.liu.se/ Per Mårtensson