IE1205 Digital Design: F7 : Kombinatorik

Relevanta dokument
PLD (tex. PAL) Typiskt 8 st logikelement Teknik: AND-OR array. William Sandqvist

Digital Design IE1204

Digital Design IE1204

VHDL 1. Programmerbara kretsar

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

Digitalteknik, fortsättningskurs Föreläsning VHDL Very High Speed Integrated Circuit Hardware Description Language

VHDL och laborationer i digitalteknik

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Konstruktion av digitala system - VHDL

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

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

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

std_logic & std_logic_vector

Digitalteknik syntes Arne Linde 2012

Konstruktionsmetodik för sekvenskretsar

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Programmerbara kretsar och VHDL 1. Föreläsning 9 Digitalteknik, TSEA22 Oscar Gustafsson, Mattias Krysander Institutionen för systemteknik

Programmerbara kretsar och VHDL. Föreläsning 10 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Angående buffer. clk clear >=1 =9?

DESIGN AV SEKVENTIELL LOGIK

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

VHDL2. Sekvensnätsexemplet

Tentamen i IE1204/5 Digital Design onsdagen den 5/

L15 Introduktion modern digital design

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tenta i Digitalteknik

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

Digital elektronik CL0090

Tenta i Digitalteknik

Digital Design IE1204

VHDL2. Sekvensnätsexemplet

Tenta i Digitalteknik

IE1205 Digital Design: F4 : Karnaugh-diagrammet, två- och fler-nivå minimering

Digital elektronik CL0090

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

Mintermer. SP-form med tre mintermer. William Sandqvist

DIGITALTEKNIK. Laboration D172

Transistorn en omkopplare utan rörliga delar

Programmerbar logik och VHDL. Föreläsning 1

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

IE1204 Digital Design

IE1205 Digital Design: F11: Programmerbar Logik, VHDL för Sekvensnät

D2 och E3. EDA321 Digitalteknik-syntes. Fredag den 13 januari 2012, fm i M-salarna

VHDL testbänk. Mall-programmets funktion. Låset öppnas när tangenten 1 trycks ned och sedan släpps. William Sandqvist

VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

Tenta i Digitalteknik

Digital Design IE1204

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

Översikt, kursinnehåll

Strukturell VHDL. Grundläggande kunskaper om. och TESTBÄDD. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg ver 1.

KALKYLATOR LABORATION4. Laborationens syfte

Tenta i Digitalteknik

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Sekvensnät. William Sandqvist

Simulering med ModelSim En kort introduktion

KOMBINATORISKA FUNKTIONER...1

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

Digital Design IE1204

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

DESIGN AV KOMBINATORISK LOGIK

Digital Design IE1204

Tenta i Digitalteknik

Chalmers ekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 2 - VHDL

Digitala elektroniksystem

Digital Design IE1204

Tentamen i IE1204/5 Digital Design måndagen den 15/

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

D0013E Introduktion till Digitalteknik

Läsminne Read Only Memory ROM

Maurice Karnaugh. Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist

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

Chalmers Tekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 1 - VHDL

Digitala projekt Elektro- och informationsteknik

Tentamen i Digital Design

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

-c wc. Pre- Next state Out- Vi ser att tillstånden är redan sorterade i grupper med olika utsignaler,

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

IE1204/IE1205 Digital Design

Digital Design IE1204

VHDL3. Angående buffer

Digital Design IE1204

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

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

Flödesschema som visar hur man använder Quartus II.

Tentamen i IE1204/5 Digital Design Torsdag 29/

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

F5 Introduktion till digitalteknik

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

Tenta i Digitalteknik

Tentamen i Digitalteknik 5p

Digital Design IE1204

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

INTRODUKTION TILL VIVADO

Datorkonstruktion. Datorkonstruktion 2018, 8hp

Talrepresentation. Heltal, positiva heltal (eng. integers)

Design av mindre digitala system. Föreläsning Digitalteknik, TSEA52 Mattias Krysander Institutionen för systemteknik

IE1205 Digital Design: F9: Synkrona tillståndsautomater

LABORATION TSEA22 DIGITALTEKNIK D TSEA51 DIGITALTEKNIK Y. Konstruktion av sekvenskretsar med CPLD. Version: 2.2

Transkript:

IE25 Digital Design: F7 : Kombinatorik

PLD (te. PAL) Programmable Logic Device (Programmable Array Logic) Typiskt 8 st logikelement Teknik: AND-OR array

CPLD (te. MAX) Comple Programmable Logic Device Typiskt 64 Macroceller Teknik: AND-OR array (större MAX har MUXtree teknik)

Grindar med många ingångar? CMOS NAND VDD VQ PAL-matrisen har grindar med så många ingångar att man måste rita dem med ett förenklat ritsätt VA VB VC Alla måste leda för = långsamt om det är många ingångar VSS

Lika illa med CMOS NOR CMOS NOR Alla måste leda för = långsamt om det är många ingångar En måste leda för = snabbt

Snabbt men hög effektförlust NMOS NOR Kan användas för många ingångar, men NMOS drar mycket mer effekt än CMOS! Pull-Up resistor ger = snabbt men Power Hungry vid Bara en måste leda för = snabbt

Stora programmerbara kretsar Det behövs således någon annan teknik som inte bygger på grindar med många ingångar, för att man ska kunna bygga stora programmerbara kretsar i CMOSteknik!

FPGA (te. Cyclone II) Typiskt 5 logikelement Teknik: MUX tree

Multipleorn MUX Med multipleorn kan man välja vilken ingång man ska koppla till utgången. MUX är numera standardkomponenten vid framtagandet av Digital logik. X Y Z S Z SX S Y

Multipleorn MUX Till höger har vi en MUX i repteknik ett April-skämt från Scientific American! X Y Z S Z SX S Y

Logiska funktioner med MUX Hur kan följande funktioner implementeras med en 2: Multipleor? Z Z Z Z NOT AND OR XOR? X Z Y S Z SX S Y

Snabbfråga Hur skall vi koppla ingångarna för att implementera en inverterare med en MUX? Önskad funktion: z = Z Z Z Alt: A Alt: B Alt: C

Snabbfråga Hur skall vi koppla ingångarna för att implementera en AND grind med en MUX? Önskad funktion: z = y y Z y y Z Z Alt: A Alt: B Alt: C

Invertering NOT med MUX Specification: if input = then result <= if input = then result <= ; Z Z NOT Input ( )

AND-funktion med MUX Specification: Z Z AND Z SX SY

OR-funktion med MUX Z OR Z Specification: ) ( SY SX Z

XOR-funktion med MUX Specification: Z XOR Z Z SX SY

Hierarkier av Muar Z = Z s s s s

Större funktioner med MUXar Välj några av ingångarna som address-ingångar... z y f z y zy z z f...och minimera/implementera funktionen som uppstår för varje ingång. Rita nya Karnaugh-diagram om det behövs. y En (n+)-input funktion kan alltid implementeras med en mu som har n select-ingångar!

Shannon dekomposition Claude Shannon matematiker/elektrotekniker (96 2) n f n f f n f

Varning! Detta saknas i Hemert Det finns inget avsnitt om Shannon dekomposition i den svenska boken Digitala Kretsar. Läs föreläsningsmaterial och övningsmaterial om Du inte använder boken Digital Logic.

Shannon dekomposition En boolesk funktion f( n,,, ) kan delas upp enligt f ( n,...,, ) f ( n,...,,) f ( n,...,,) Funktionen kan sedan implementeras med en multipleer. n f n f f n f

Rekursivt Alla booleska funktioner f( n,,, ) kan delas upp (rekursivt) enligt f ( n,...,, ) f( n,...,,) f( n,...,,) f ( n,..., ) f( n,..., 2,) f( n,..., 2,) f f f f f f f f f osv. f f

Bevis f ( n,...,, ) f ( n,...,,) f ( n,...,,) Höger sida (eng. RHS): om = så blir den högra termen noll. Då blir f lika med den vänstra termen. om = så blir den vänstra termen noll. Då blir f lika med den högra termen. Vänster sida (eng. LHS): om = så blir f lika med f( n,...,,) om = så blir f lika med f( n,...,,) (= vänstra termen på högra sidan) (= högra termen på högra sidan) LHS=RHS

MUX networks yz Man kan se yz som en adress, till rutorna i Karnaughdiagrammet. Med / från rutorna till muens ingångar realiserar man funktionen f. f Value y z f Address Address pins

Look-up-table (LUT) Programmable cells / / f / 2 / A LUT with n inputs can realize all combinational functions with n inputs Two-input LUT

LUT för XOR-grind 2 f f 2 Two-input LUT

En enkel FPGA-cell A B C D LUT f Den enklaste FPGA-cellen är uppbyggd av en enda tabell (eng. Look-Up-Table - LUT), en D-vippa och en bypass-mu. D-vippan är en minneskrets för synkronisering kommer senare i kursen. Med bypass-muen kopplar man sig förbi D-vippan för de kretsar som inte behöver en sådan. A B C D LUT D Q CLK RESET M S D-vippa kommer snart i kursen

LUT funktionernas nummer f ( f 3, 2,, ) "" 6996 LSB Bit # 5 Bit # Bit # MSB Känner Du igen funktionen? Funktionerna som lagras i en LUT brukar numreras efter det tal som byggs upp av :orna i sanningstabellen /Karnaughdiagrammet.

LUT funktionernas nummer f ( f 3, 2,, ) "" 6996 f 6996 3 2 Nu vet Du vilken funktion som är 6996! Udda paritet! Inga hoptagningar. Med en LUT kan alla funktioner realiseras, därför är ingen av dem svårare att göra än någon annan!

Decoder (Avkodare) Används mest som address-avkodare Bara en utgång är aktiv när enable (en) är aktiv Den aktiva utgången väljs med a a en a a y y y 2 y 3 - - a a en y 3 y 2 y y 2-till-4 avkodare

Demultipleor (DMUX) Demultipleern har egentligen samma funktion som decodern, men ritas annorlunda... Ingången kopplas till en vald utgång f I s s y y y 2 y 3 - - Nu kallas en för I! I y 3 y 2 y y s s

Read-only-memory (ROM) Sel Sel / /... / / /... / Programmerbara bitar a a... a m...... Avkodare Sel 2 m En / /... / Threestate buffrar d n- d n-2... d

Encoder Encoders har motsatt funktion som en decoder, dvs den översätter 2 N bitars input till en N-bitars kod. Informationen koncentreras kraftigt Tangentbord med 256 (2 8 ) tangenter 8-bitars ASCII-kod för nedtryckt tangent 2 n inputs w w 2 n y y n n outputs

Prioritetsenkoder En Priority Encoder ger tillbaka addressen på ingången med den lägsta (eller högsta) indeen som är satt till en etta (eller nolla beroende på vad man söker efter). Om alla ingångar är blir utgången f =, annars har f värdet =. Tänk om man trycker på flera tangenter samtigt? y y y 2 y 3 f a a - - - - - - - - Nu blir det väldefinierat vad som ska hända om flera ingångar är aktiva.

Kod-konverterare Kod-konverterare översätter från en kod till en annan. Typiska eempel är Binär till BCD (Binary-Coded Decimal) Binär till Gray-kod BCD eller BIN till sju-segmentsavkodning

ÖH 8.5 Ett av segmenten g 7-segmentavkodaren består av 7 olika kombinatoriska nät, ett för varje segment. Man bör titta på Karnaughdiagrammen för alla segmenten samtidigt. Det kan finnas hoptagningar som är gemensamma för flera segment! Den optimala 7-segmentavkodaren är nog redan uppfunnen!

VHDL-introduktion VHDL är ett språk som används för att specificera hårdvara HDL - Hardware Description Language VHSIC - Very High Speed Integrated Circuit Används mest i Europa Verilog är också ett språk som används för att specificera hårdvara Används mest i USA andra sätt att beskriva hårdvara: System C, Matlab

Entity C in A B FA S C out entity fulladder is port( A,B,Cin : IN std_logic; S,Cout : OUT std_logic); end fulladder; Entiteten beskriver portarna mot omvärlden för kretsen. Kretsen som ett block.

Architecture C in A B FA S C out architecture behave of fulladder is begin S <= A or B or Cin; Cout <= (A and B) or (A and Cin) or (B and Cin); end behave; Architecture beskriver funktionen inuti kretsen.

Varför VHDL? VHDL används för att kunna kontrollera att man har tänkt rätt genom att simulera kretsen kunna beskriva stora konstruktioner på ett enkelt sätt och sedan generera kretsen genom syntes möjliggöra strukturerade beskrivningar av en krets VHDL ökar abstraktionsnivån!

Grunder i VHDL Det finns två typer av VHDL-kod VHDL för syntes: Koden ska vara input till ett syntesverktyg som omvandlar den till en implementering (t e på en FPGA) VHDL för modellering och simulering: Koden används för att beskriva ett system i ett tidigt skede. Eftersom koden kan simuleras så kan man kontrollera om det tilltänkta funktionssättet är korrekt.

VHDL hiearkin Package Generics Entity Ports Architecture Architecture Architecture (structural) Concurrent Statements Concurrent Statements Process Sequential Statements

Entitet (eng. Entity) Den primära abstraktions-nivån i VHDL kallas för entity I en beteende-beskrivning definieras entiteten genom sina svar på signaler och ingångar En beteende-modell är samma sak som en svart låda" Insidan syns inte från utsidan Entitetens beteende definieras av den svarta lådans funktionalitet Input Behavioral Entity Output

Entity forts. En entitet beskriver en komponents interface med omvärlden PORT -deklarationen indikerar om det är en in eller utgång. En entity är en symbol för en komponent. ENTITY or_gate IS PORT(, y: IN bit; q: OUT bit); END or_gate; y or_gate q Använd engelska beteckningar för variabelnamn i koden!

VHDL Port PORT-deklarationen etablerar gränssnittet (interfacet) mellan komponenten och omvärlden. En PORT-deklaration innehåller tre saker: Namnet på porten Riktningen på porten Portens datatyp Eempel: ENTITY test IS PORT( namn : riktning data_typ); END test;

De vanligaste datatyperna Skalärer (envärda signaler/variabler) bit (, ) std_logic ( U,,, X, Z, L, H, W, - ) integer real time Vektorer (flervärda signaler/variabler) bit_vector vektor av bit std_logic_vector vektor av std_logic

std_logic vs bit bit: or std_logic: 'U': uninitialized. This signal hasn't been set yet. 'X': unknown. Impossible to determine this value/result. '': logic '': logic 'Z': High Impedance 'W': Weak signal, can't tell if it should be or. 'L': Weak signal that should probably go to 'H': Weak signal that should probably go to '-': Don't care.

Architecture En architecture beskriver komponentens funktion. En entitet kan ha många arkitekturer, men endast en kan vara aktiv i taget. En arkitektur motsvarar komponentens kopplingsschema eller beteende. X y q Kod för simulering ARCHITECTURE behavior OF or_gate IS BEGIN q <= a or b after 5 ns; END behavior;

VHDL-Eempel 4/ multipleor LIBRARY ieee; USE ieee.std_logic_64.all; data_in(3) data_in(2) data_in() data_in() ce_n sel() sel() data_out ENTITY Multipleer_4 IS PORT(ce_n : IN std_logic; -- Chip En(active low) data_in : IN std_logic_vector(3 DOWNTO ); sel : IN std_logic_vector( DOWNTO ); data_out : OUT std_logic); -- TriState Output END ENTITY Multipleer_4;

VHDL-Eempel: 4/ multipleor ARCHITECTURE RTL OF Multipleer_4 IS BEGIN PROCESS(ce_n, data_in, sel) BEGIN IF ce_n = '' THEN data_out <= 'Z'; ELSE CASE sel IS Threestate! WHEN ""=> data_out <= data_in(); WHEN ""=> data_out <= data_in(); WHEN ""=> data_out <= data_in(2); WHEN ""=> data_out <= data_in(3); WHEN OTHERS => null; END CASE; END IF; END PROCESS; END ARCHITECTURE RTL;

Syntesverktyget Quartus II QuartusII Mer utförligt i kommande kurser!

Mer om VHDL Studiematerialet om syntes visar ett antal VHDL-konstruktioner och den resulterande hårdvaran Följande bilder innehåller etra material (överkurs) Kursboken ger många eempel och mer detaljerade förklaringar om VHDL

Överkurs VHDL

Signal deklarationen Signal-deklarationen används inuti arkitekturer för att deklarera interna (lokala) signaler: signal a,b,c,d : bit; signal a,b,sum : bit_vector(3 downto ); Signal-tilldelningen (eng. Signal assignment) används för att beskriva beteendet: sum <= a + b; -- assignment without delay

VHDL olika beskrivningsstilar Strukturell liknar hur man kopplar ihop komponenter Sekvensiell liknar hur man skriver vanliga datorprogram Dataflöde Parallella tilldelningar (eng. Concurrent assignments )

Sekvensiell eller Parallell kod Det finns två typer av eekvering av kod i VHDL: sekventiell och parallell Hårdvara kan alltså modelleras på två olika sätt VHDL supportar olika abstraktionsnivåer. Sekvensiell kod beskriver hårdvaran från en programmerares synvinkel och eekveras i den ordning den står i. Parallell kod eekveras oberoende av ordningen den står i och är asynkron.

Sekvensiell stil XOR-gate y q process(,y) begin if (/=y) then q <= ; else q <= ; end if; end process; Betyder not!

Dataflödes stil XOR-gate y q q <= a or b; eller i behavioural dataflow style olikhet q <= when a/=b else ;

Strukturell stil y i yi t3 t4 q u: not_gate port map (,i); u2: not_gate port map (y,yi); u3: and_gate port map (i,y,t3); u4: and_gate port map (yi,,t4); u5: or_gate port map (t3,t4,q);

Strukturell kod En komponent måste deklareras innan den kan användas in in2 out ARCHITECTURE test OF test_entity COMPONENT and_gate PORT ( in, in2 : IN BIT; out : OUT BIT); END COMPONENT;... more statements... Nödvändigt, om det inte är så att den redan finns i ett bibliotek någonstans

Instantiering Komponent instantieringen kopplar ihop komponentens interface med signalerna i arkitekturen. ARCHITECTURE test OF test_entity COMPONENT and_gate in PORT ( in, in2 : IN BIT; out : OUT BIT); in2 END COMPONENT; SIGNAL S, S2, S3 : BIT; BEGIN Gate : and_gate PORT MAP (S,S2,S3); END test; out S S2 S3

generate Generate-statement kopplar ihop många likadana element ENTITY adder IS GENERIC(N:integer) PORT(a,b:IN bit_vector(n- downto ); sum:out bit_vector(n- downto )); END adder; ARCHITECTURE structural OF adder IS COMPONENT full_adder PORT(a,b,cin:IN bit;cout,s:out bit); END COMPONENT; signal c:bit_vector(n-2 downto ); BEGIN G:for i in to N-2 generate Generera en n- bitsadderare! U:full_adder PORT MAP (a(i),b(i),c(i-),c(i),s(i)); end generate; -- G U:full_adder PORT MAP (a(),b(),,c(),s()); UN:full_adder PORT MAP (a(n-),b(n-),c(n-2),open,s(n-); END structural;

generate n-bitsadderare a n- b n- a b a b c utn- FA c inn- FA c in c ut FA c in s n- s s Fem rader kod genererar ripple-carry n-bitsadderaren från F5!

Testbänkar För att kunna test om ens konstruktion fungerar så måste man skapa en testbänk. Den har tre funktioner: Generera stimuli för simulering Applicera dessa stimuli till en entitet som skall testas Jämföra utvärden med förväntade värden Du kommer att använda en testbänk vid LAB 3. Ett tesbänksprogram kan outtröttligt prova igenom alla insignalskombinationer det orkar inte Du!

Testbänk Testbänkens ENTITY är tom. ENTITY testbench IS END testbench; ARCHITECTURE or_stimuli_ of testbench IS COMPONENT or_gate PORT(,y:IN bit; q:out bit); END COMPONENT; signal,y,u,ut2,ut3:bit; BEGIN <= not() after ns; y <= not(y) after 2 ns; U:or_gate PORT MAP (,y,ut); U2:or_gate PORT MAP (,y,ut2); U3:or_gate PORT MAP (,y,ut3); END eample; Den krets som testas används som en komponent av testbänksprogrammet Här genereras testsignalerna

Testbänk En testbänk kan markera när önskade händelser inträffar under körningen. Eller markera när oönskade händelser uppträder Resultatet av en körning med en testbänk kan sparas i en fil, som bevis att allt är ok eller som hjälp vid felsökning om det nu inte gick bra.