Digitalteknik F8. Shannonexpansionen och NOR-labben. Digitalteknik F8 bild 1

Relevanta dokument
Digitalteknik F4. NOR-labben. Digitalteknik F1b bild 1

SMD033 Digitalteknik. Digitalteknik F1 bild 1

Digital- och datorteknik

Digital elektronik CL0090

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Quine McCluskys algoritm

TDDC74 Programmering, abstraktion och modellering DUGGA 1

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Digitalteknik F2. Digitalteknik F2 bild 1

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

HI1024 Programmering, grundkurs TEN

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Uppgift 1a (Aktiekurser utan poster)

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Laborationshandledning

Java, klasser, objekt (Skansholm: Kapitel 2)

Kontrollera att följande punkter är uppfyllda innan rapporten lämnas in: Första sidan är ett försättsblad (laddas ned från kurshemsidan)

Problemlösning och funktioner Grundkurs i programmering med Python

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Metoder (funktioner) Murach s: kap Winstrand Development

Tentamen i IE1204/5 Digital Design onsdagen den 5/

DIGITALTEKNIK I. Laboration DE1. Kombinatoriska nät och kretsar

2 februari 2016 Sida 1 / 23

Digital- och datorteknik

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Handledning för konstruktion av tabeller och diagram med Excel

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 6 pekare och pekare tillsammans med arrayer

Repetition TSIU05 Digitalteknik Di/EL. Michael Josefsson

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

HI1024 Programmering, grundkurs TEN

JavaScript del 5 Funktioner

I dag: Blockstruktur, omgivningar, problemlösning

Datorteknik 2 (AVR 2)

Algoritmer, datastrukturer och komplexitet

Facit till övningsuppgifter Kapitel 4 Kombinatoriska nät Rita in funktionen i ett Karnaughdiagram och minimera

TDIU01 - Programmering i C++, grundkurs

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Tentamen i Digital Design

Procedurer och villkor

TDDC74 Programmering, abstraktion och modellering DUGGA 2

Introduktion till xdigiflex-simulatorn

Tentamen i Digitalteknik 5p

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 6: Introduktion av listor

TDDC74 Programmering: Abstraktion och modellering Datortenta

Föreläsning 4: Poster

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Digital- och datorteknik

Matematik 3c Kap 2 Förändringshastighet och derivator

Uppgift 1 (grundläggande konstruktioner)

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12

Sta. Sta. Sta. ulricaelisson.se. Scratch STARTA PROVA KODEN KÖR! TIPS. Rita en ny sprite. Eller välj en från mappen

Uppgift 1 ( Betyg 3 uppgift )

PNSPO! Använda NJ med NS System Memory. 14 mars 2012 OMRON Corporation

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Objektorienterad programmering D2

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Lab5 för prgmedcl04 Grafik

Applikationsexempel Timer med tryckknapp

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

DIGITALTEKNIK. Laboration D161. Kombinatoriska kretsar och nät

TDDC74 Programmering, abstraktion och modellering. Tentamen

KALIBRERINGS MENY. För att komma tillbaka till Mätfunktionerna håll inne M -knappen 3s. eller vänta 1 min. 1 =MOD. 9.6 KBaud

Digitalteknik F9. Automater Minneselement. Digitalteknik F9 bild 1

Dynamisk programmering. Dynamisk programmering. Dynamisk programmering. Dynamisk programmering

Tentamen i. TDDC67 Funktionell programmering och Lisp

TAIU07 Matematiska beräkningar med Matlab

Systemkonstruktion LABORATION REALTIDSPROGRAMMERING

Tillämpad Programmering (ID1218) :00-13:00

OMTENTAMEN I GRUNDLÄGGANDE STATISTIK FÖR EKONOMER

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Objektorienterad programmering

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

Föreläsning 2 (kap 3): Diskreta stokastiska variabler

HI1024 Programmering, grundkurs TEN

Uppgift 1 ( Betyg 3 uppgift )

D0013E Introduktion till Digitalteknik

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

kl Tentaupplägg

Tentamen i Digitalteknik TSEA22

Funktionens deklaration

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

Första sidan är ett försättsblad (laddas ned från kurshemsidan) Alla frågor som nns i uppgiftstexten är besvarade

Kryptokorsordslösare Programmeringsmetodik DV (period 2) Inlämningsuppgift 1

Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator

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

Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer

Våra enkla funktioner eller procedurer

Föreläsning G60 Statistiska metoder

KOMPLETTERANDE HEMTENTAMEN TDDB53

Transkript:

Digitalteknik F8 Shannonexpansionen och NOR-labben Digitalteknik F8 bild 1

Shannonexpansionen En flernivå - syntesmetod! Progammässigt: En naturlig rekursiv tillämpning Digitalteknik F8 bild 2

Grundide : Mycket enkel! ƒ Digitalteknik F8 bild 3

grundide : ƒ Digitalteknik F8 bild 4

grundide : ƒ Digitalteknik F8 bild 5

Fortsätt på samma sätt: Enkla! Digitalteknik F8 bild 6

Slutresultatet (den naiva varianten) Hur många nivåer max? 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 Digitalteknik F8 bild 7

Med lite optimering...... kan vi vika ihop ett träd och spara en massa grindar! 1 0 1 0 Digitalteknik F8 bild 8

Shannonexpansionen Den formella biten Digitalteknik F8 bild 9

Shannonexpansionen Givet en funktion ƒ: ƒ(a,b,c,...,x,...z) Välj en invariabel (Vi väljer X här) ƒ = X * ƒ Den negativa cofaktorn + X * ƒ x=0 x=1 Den positiva cofaktorn Digitalteknik F8 bild 10

Cofaktorerna Negativ cofaktor: Ta uttrycket för f: ƒ(a,b,...,x,...z) och ersätt alla X f = ƒ(a,b,...,0,...z) x=0 med 0 Positiv cofaktor: Ta uttrycket för f: ƒ(a,b,...,x,...z) och ersätt alla X f = ƒ(a,b,...,1,...z) x=1 med 1 Digitalteknik F8 bild 11

Så här blir den fullständiga funktionen: f X X * + X * f x=0 f x=1 Digitalteknik F8 bild 12

Ett exempel: f = (A + B) * (A + C) f A=0 f A=1 (0 + B) * (0 + C) (1 + B) * C 1 * C C (1 + B) * (1 + C) (0 + B) * 1 0 + B B Digitalteknik F8 bild 13

Shannon ger att f = A * f A=0 + A * f A=1 dvs f = A C + AB Utgångsfunktionen: f = (A + B) * (A + C) f = A A + A C + AB + BC =0 f = A C + AB konsensus Digitalteknik F8 bild 14

Summering: 1. Varje cofaktor har en variabel mindre än ursprungsfunktionen -> processen måste terminera 2. Cofaktorerna klistras samman med hjälp av den borttagna variabeln Fråga att besvara: Hur ser klistret ut? Digitalteknik F8 bild 15

Klisterfunktionen f Vad är detta? X X * + X * Negativ cofaktor Positiv cofaktor Digitalteknik F8 bild 16

Vi ritar om lite... Positiv cofaktor & 1 f Negativ cofaktor & X 1 Digitalteknik F8 bild 17

... och lite till: Positiv cofaktor Negativ cofaktor 1 0 f En 2:1-multiplexer (enkel att bygga med 2-ing. NOR) X Digitalteknik F8 bild 18

Slutträdet då? f 1 0 1 0 C D 1 0 C En riktig flernivåkrets 1 0 A 1 0 A 1 0 1 0 1 0 0 1 B Digitalteknik F8 bild 19

Utgå från en funktionstabell: f: 1 0 1 1 1 0 0 0 1 1-0 1. Välj en variabel. Valet är viktigt - men det finns inte någon god regel... Digitalteknik F8 bild 20

Beräkna cofaktorerna till variabeln: f: 1 0 1 1 1 0 0 0 1 1-0 f B=0 f B=1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 Digitalteknik F8 bild 21

Hur tolkar man... 1. Om mängden rader en tom mängd? dvs inga rader där f = 1, dvs f = 0! 0 2. Vad betyder det om vi har valt samtliga variabler men mängden rader inte är tom? dvs f = 1! 1 Digitalteknik F8 bild 22

Exempel 1 A - f A=0 f A=1 0 1 Resultat: f 0 1 A En rad - men inga variabler kvar En rad - men inga variabler kvar 1 1 Det är uppenbart att detta kan optimeras! f = 1 A=0 f = 1 A=1 1 f Digitalteknik F8 bild 23

Exempel 2: A 1 f A=0 f A=1 Resultat: f Tom! 1 0 1 A Tom mängd! En rad - men inga variabler kvar Optimera! 0 1 f = 0 A=0 f = 1 A=1 A f Digitalteknik F8 bild 24

Sammanfattning: Givet en tabell: 1 0 1 1 1 0 0 0 1 1-0 1. Välj en invariabel - och håll reda på att den valts 2. Använd den valda variabeln och dela upp tabellen 3. Upprepa steg 1 och steg 2 tills invariablerna är slut Digitalteknik F8 bild 25

Äntligen - Ett vettigt exempel på en rekursiv tillämpning - En chans att öva lite! Digitalteknik F8 bild 26

Huvudprogrammet 1. Initiera (töm) MUX-samlingen 2. work(f, out, -); 3. Eventuella optimeringar 4. Spotta ut grindarna Digitalteknik F8 bild 27

Work Work( Tabell_in Namn_förslag Egentligt_namn) (funktionstabell in) (in) (ut) Vi skall se hur detta kan se ut... Digitalteknik F8 bild 28

work - fall 1-2 work ( Tabell, Namn_in, Namn_ut ); 1. Tom? Då: Strunta i Namn_in! Namn_ut := 0 Avsluta. 2. Redan valt alla variabler? Då: Strunta i Namn_in! Namn_ut := 1 ; Avsluta. Digitalteknik F8 bild 29

work - 3:e fallet work ( Tabell, Namn_in, Namn_ut ); 3:e fallet: måste räkna vidare: A: Välj en ledig variabel B: f0 <-- negativa cofaktorn C: f1 <-- positiva cofaktorn D: Hitta på ett namn --> LO E: Hitta på ett namn --> HI Två anrop: F: work( f0, LO, RES_0 ); G: work( f1, HI, RES_1 ); H: Namn_ut := New_Mux (namn_förslag_in, Hjälpfunktion vald_var, RES_0, RES_1); Digitalteknik F8 bild 30

WORK är klar...... men vad gör New_Mux??? Digitalteknik F8 bild 31

Vi har skapat: men vilket namn har denna ledare? Vald variabel 0 1 RES_0 RES_1 Digitalteknik F8 bild 32

Vi måste lagra våra muxar: Var In_0 In_1 Utnamn Mux-tabellen fylls efterhand med muxar! Vi skapar aldrig en ny mux om vi kan dela en befintlig. (Vi delar på utgångar.) Digitalteknik F8 bild 33

New_Mux New_mux ( Förslag, Var, In_0, In_1 ); 1: Använd bara dessa tre parametrar för att söka i tabellen efter matchande mux. 2a: Vi hittar en match: - Strunta i föreslaget namn. - Returnera namnet från tabellen! 2b: Vi hittar ingen match: - Lägg till en ny mux i tabellen. - Använd det föreslagna namnet till den nya muxen. Digitalteknik F8 bild 34

Optimeringar? Internt i New_Mux: m A K K Detta är slöseri med komponenter! Skapa inte någon mux! Returnera K! Digitalteknik F8 bild 35

Sista steget: Omvandla mux-tabellen till en (förmodligen större) NOR-grindtabell Undvik redundanta grindar! Digitalteknik F8 bild 36

Tänk på vad ni gör... Borde ni lägga till lite Quine-McClusky? Digitalteknik F8 bild 37

Det som är mest avgörande? Den ordning som ni väljer variabler i! Digitalteknik F8 bild 38