DESIGN AV KOMBINATORISK LOGIK

Relevanta dokument
VHDL och laborationer i digitalteknik

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

DESIGN AV SEKVENTIELL LOGIK

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

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

Digital elektronik CL0090

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

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

Tentamen i IE1204/5 Digital Design onsdagen den 5/

VHDL 1. Programmerbara kretsar

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Simulering med ModelSim En kort introduktion

Tenta i Digitalteknik

Digitalteknik syntes Arne Linde 2012

LABORATIONSINSTRUKTION LABORATION

Talrepresentation. Heltal, positiva heltal (eng. integers)

Tentamen i IE1204/5 Digital Design Torsdag 29/

Tenta i Digitalteknik

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

Konstruktion av digitala system - VHDL

Digital elektronik CL0090

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

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

VHDL2. Sekvensnätsexemplet

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

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

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

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

Tenta i Digitalteknik

KALKYLATOR LABORATION4. Laborationens syfte

VHDL2. Sekvensnätsexemplet

std_logic & std_logic_vector

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

IE1204 Digital Design

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

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

Omtentamen IE Digital Design Måndag 14/

Digitala elektroniksystem

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

Tenta i Digitalteknik

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

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

DIGITALTEKNIK. Laboration D172

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

Tenta i Digitalteknik

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

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

Tenta i Digitalteknik

Styrteknik: Binära tal, talsystem och koder D3:1

Digital- och datorteknik

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

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

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

IE1205 Digital Design: F6 : Digital aritmetik 2

Digital Design IE1204

Omtentamen med lösningar IE Digital Design Måndag 14/

LAB VHDL-programmering

Tenta i Digitalteknik

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

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

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

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

Konstruktionsmetodik för sekvenskretsar

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

Tentamen med lösningar i IE1204/5 Digital Design Torsdag 29/

Binär addition papper och penna metod

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

Hur implementera algoritmerna på maskinnivå - datorns byggstenar

LABORATIONSINSTRUKTION LABORATION. Räknare och skiftregister med sekvensiell VHDL. LAB NR Ver KURS. Digitalteknik INNEHÅLL. 1.

Digital Aritmetik Unsigned Integers Signed Integers"

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

Digital- och datorteknik

LEJON LABORATION3. Laborationens syfte

Digitala projekt Elektro- och informationsteknik

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

Laboration i digitalteknik Datablad

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

DIGITALA TAL OCH BOOLESK ALGEBRA

Definition av kombinatorisk logik Olika sätt att representera kombinatorisk logik Minimering av logiska uttryck

Sekvensnät. William Sandqvist

KOMBINATORISKA FUNKTIONER...1

Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga

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

Adderare. Digitalteknik 7.5 hp distans: 4.6 Adderare 4.45

Datoraritmetik. Binär addition papper och penna metod. Binär subtraktion papper och penna metod. Binär multiplikation papper och penna metod

Digitalteknik EIT020. Lecture 15: Design av digitala kretsar

Översikt, kursinnehåll

PARITETSKONTROLL. Om generatorn i vidstående exempel avkänner ett jämt antal ettor ger den en nolla ut. Detta innebär att överföringen

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

Tentamen IE Digital Design Fredag 15/

Laboration i digitalteknik Datablad

Programmerbar logik och VHDL. Föreläsning 4

Digitalteknik och Datorarkitektur 5hp

Generering av analoga signaler från XSV300

Tentamen i IE Digital Design Fredag 21/

SEKVENSKRETSAR. Innehåll

IE1204/IE1205 Digital Design

ÖH kod. ( en variant av koden används i dag till butikernas streck-kod ) William Sandqvist

Föreläsning 8: Aritmetik och stora heltal

Transkript:

DESIGN AV KOMBINATORISK LOGIK Innehåll Fördröjninar i kombinatorisk loik Byblock för kombinatorisk loik Multilexer / De-multilexer Kodare / Avkodare Aritmetiska Funktioner

GATE-DELAYS Gate-delay är tiden det tar för en ändrin å en inån att resultera i en ändrin å utånen. A B & Z t LH Proaation delay Low-to-Hih A Hih-to-Low B Z t LH t HL t HL Mäts från där sinalen nådde 5% av sitt slutiltia värde. Coyriht (c) Miun 4

FÖRDRÖJNINGAR I KOMBINATORISK LOGIK Bestäm fördröjninen i ett kombinatoriskt nätverk. Loisk funktion A B f C D C B A D t -cf f t -df Fördröjninar för alla sinalväar: t HL-af, t LH-af t HL-bf, t LH-bf t HL-cf, t LH-cf t HL-df, t LH-df Den länsta väen I nätverket (t -cf eller t -df ): T -cf =. +.35 +.47 ns =.3 ns Gate delays från datablad Gate Inv and or3 Delay tlh =. thl =.9 tlh =.3 thl =.35 tlh =.47 thl =.43 Coyriht (c) Miun 4 3

MULTIPLEXER / DEMULTIPLEXER Väljer varifrån oerand A tas A A B B Väljer varifrån oerand B tas Sa MUX MUX Sb A B Sum Väljer var summan ska skickas (S eller S) DEMUX Ss S S Coyriht (c) Miun 4 4

4-TO- MULTIPLEXER I VHDL architecture rtl of mux4_ is bein -- rtl rocess (I, I, I, I3, S, S) variable sel: bit_vector( downto ); bein -- rocess comb sel := S & S; case sel is when "" => Y <= I; when "" => Y <= I; when "" => Y <= I; when others => Y <= I3; end case; end rocess; end rtl; Alla inånar 4- Multilexer Konkatenerar bitarna till en bitvektor så att man enkelt kan hantera casesatserna I I I I3 S S Y Coyriht (c) Miun 4 5

GENERELL N -TO- MULTIPLEXER library IEEE; use IEEE.STD_LOGIC_64.all; use IEEE.STD_LOGIC_ARITH.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity muxn_ is eneric ( N : inteer := 3); -- lo(number of inuts) ort ( I: in std_loic_vector((**n - ) downto ); S: in std_loic_vector(n- downto ); Y : out std_loic); end muxn_; architecture rtl of muxn_ is bein -- rtl rocess (I, S) variable v_s : inteer; bein v_s := conv_inteer(s); Y <= I(v_S); end rocess; end rtl; Möjliör arametriserade komonenter N n - Multilexer Konverterar sinalen S från bitvektor till Inteer (v_s) Använd v_s för att avöra vilken av inånarna som ska tilldelas till utånen Y. I S N Y Coyriht (c) Miun 4 6

DEMULTIPLEXER -4 Demultilexer Y architecture rtl of demux_4 is bein rocess (A, S, S) S bein case S&S is when "" => Y <= A; Y <= ; Y <= ; Y3 <= ; when "" => Y <= ; Y <= A; Y <= ; Y3 <= ; when "" => Y <= ; Y <= ; Y <= A; Y3 <= ; when others => Y <= ; Y <= ; Y <= ; Y3 <= A; end case; end rocess; end rtl; A S Y Y Y3 Coyriht (c) Miun 4 7

AVKODARE I ALLMÄNHET Avkodare (Decoder) Kombinatoriskt nät med en eller fler inånar, och fler än en utån. Antalet inånar är samma eller färre än antalet utånar. Konverterar en inut-code till en outut-code One-to-one main För varje inut-code finns det endast en outut-code Avkodare Inut-code Outut-code Coyriht (c) Miun 4 8

AVKODARE/KODARE I ALLMÄNHET Kodare/Avkodare Binary Gray BCD- One-hot Any code Binary Gray BCD One-hot Any code Coyriht (c) Miun 4 9

-4 BINÄR AVKODARE I VHDL architecture rtl of decoder 4 is bein -- rtl I rocess (I, I) I variable I : bit_vector( downto ); bein -- rocess I := I & I; case I is when "" => Y3 <= ; Y <= ; Y <= ; Y <= ; when "" => Y3 <= ; Y <= ; Y <= ; Y <= ; when "" => Y3 <= ; Y <= ; Y <= ; Y <= ; when "" => Y3 <= ; Y <= ; Y <= ; Y <= ; end case; end rocess; end rtl; -4 decoder Y Y Y Y3 Coyriht (c) Miun 4

N-TO- N BINÄR AVKODARE entity decoder_n_m is eneric ( n : inteer := 3; -- number of inuts m : inteer := 8); -- number of oututs (=**n) ort ( I: in std_loic_vector(n- downto ); Y: out std_loic_vector(m- downto ) ); end decoder_n_m; n n to n decoder Konverterar sinalen I till en inteer I Y n architecture rtl of decoder_n_m is bein rocess(i) variable v_i: inteer; -- inteer values for inut bein v_i := conv_inteer(i); Y <= conv_std_loic_vector(**v_i,m); end rocess; end architecture; Konverterar det avkodade värdet från inteer till en m-bitars bitvektor. Coyriht (c) Miun 4

EXEMPEL PÅ AVKODARE 7-sement dislay LED (Liht Emittin Diode) Drivkretsar Avkodare LCD (Liquid Crystal Dislay) BCD inut-tal Coyriht (c) Miun 4

7-SEGMENT DISPLAY Varje sement är en LED som kan slås å searat För att visa siffran 5 ska sementen a, f,, c och d lysa. Coyriht (c) Miun 4 3

AVKODARE FÖR 7-SEGM. DISPLAY Inut-kod: BCD (tal från till 9) Outut-kod: 7-sements-kod Nr D C B A a b c d e f 3 4 5 6 7 8 9 A B C D a b c d e f Coyriht (c) Miun 4 4

7-SEGMENTS DISPLAY Common anode Common cathode Oututs är active low Oututs är active hih Coyriht (c) Miun 4 5

7-SEGMENTS AVKODARE I VHDL Generell avkodare Kan driva både Common cathode och Common anode dislayer entity ss_decoder is eneric ( cc_ca : bit := ); ort ( Ai, Bi, Ci, Di: in bit; a, b, c, d, e, f, : out bit ); end ss_decoder; / Ai Bi Ci Di cc_ca a b c d e f Väljer om avkodaren driver en common cathode eller en common anode dislay Coyriht (c) Miun 4 6

FORTS. 7-SEGMENT AVKODARE I VHDL architecture rtl of ss_decoder is bein -- rtl rocess (Ai, Bi, Ci, Di) variable BCD_strin : bit_vector(3 downto ); variable control_strin : bit_vector(6 downto ); bein -- rocess BCD_strin := Di & Ci & Bi & Ai; case BCD_strin is when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when "" => control_strin := ""; when others => control_strin := ""; end case; Skaa en bitvektor för inut-koden Coyriht (c) Miun 4 7

FORTS. 7-SEGMENT AVKODARE I VHDL -- Common Cathode if cc_ca = then a <= control_strin(6); b <= control_strin(5); c <= control_strin(4); d <= control_strin(3); e <= control_strin(); f <= control_strin(); <= control_strin(); -- Common Anode else a <= not control_strin(6); b <= not control_strin(5); c <= not control_strin(4); d <= not control_strin(3); e <= not control_strin(); f <= not control_strin(); <= not control_strin(); end if; end rocess; end rtl; Sinaler är active hih för common cathode Sinaler är active low för common anode, och måste inverteras Coyriht (c) Miun 4 8

EXEMPEL PÅ ANVÄNDNING AV BINÄR 4- KODARE Enhet 3 larm 4- kodare Enhet larm Enhet larm u 3 u u u a a A= Enhet larm Enhet larmar A= Vad händer om två enheter larmar samtidit? Coyriht (c) Miun 4 9

PRIORITETSKODARE Inånarna har inbördes rioritet När fler än en inån är aktiv så enereras en kod för den inån som har höst rioritet Exemel: Låt insinal 3 ha höst rioritet, näst höst, o.s.v rioriterin 4- kodare c 3 c c c 3 u 3 u u u a a 3 = c 3 = c c 3 = c c 3 c = c c 3 c c Coyriht (c) Miun 4

PRIORITETSKODARE Inbördes rioritet för inånarna Om fler än en inut är aktiv enereras en kod för inånen med höst rioritet rioencoder library IEEE; use IEEE.STD_LOGIC_64.all; entity rioencoder is ort ( C3, C, C, C: in std_loic; A, A : out std_loic); end rioencoder; riority c 3 c c c 3 4- coder u 3 u u u a a Coyriht (c) Miun 4

FORTS. PRIORITETSKODARE architecture rtl of rioencoder is bein -- rtl rocess (C3, C, C, C) variable out_vector : std_loic_vector( downto ); bein if C3= then out_vector := "; elsif C = then out_vector := "; elsif C = then out_vector := "; elsif C= then out_vector := "; end if; A <= out_vector(); A <= out_vector(); end rocess; end rtl; Coyriht (c) Miun 4

ADDERARE Carry-Rile Adder Enkel Lånsam a N- b N- a 3 b 3 a b a b a b c out a b FA c out c in a b FA c out c in a b FA c out c in a b FA c out c in a b FA c out c in c in s N- s 3 s s s Fördröjnin för en n- bitars adderare är nt FA Coyriht (c) Miun 4 3

CARRY-LOOKAHEAD-ADDER Snabb adderare Accelererar beräkninen av carry-bitarna Princi: Betrakta flera bitar å samma ån. Exemel: + X Y + X Y S S I en carry-rile adderare betraktar vi endast en bit i taet, och resultatet från föreående osition används. I en Carry-Lookahead Adderare betraktas även bitarna i osition när vi tar fram carry in för osition. Coyriht (c) Miun 4 4

LOGIK FÖR CARRY-LOOKAHEAD Loik för att beräkna carry-bitarna + X Y S x i y i x i- y i- x i+ y i+ a b FA c in Carry-Lookahed Loic c i S i Seciell loik för att beräkna carry Coyriht (c) Miun 4 5

LOGIK FÖR CARRY-LOOKAHEAD Loik för Carry-Lookahead baseras å två funktioner Carry enerate: i x i y i Addition i osition i enererar en carry om den roducerar en carry= oberoende av värdena å x i-, y i-, x, y, c Carry roaate: i x i y i Addition i osition i roaerar en carry om den roducerar en carry= (c i+ ) när x i-, y i-, x, y, c roducerar en carry-in (C i =) Ett ste i adderaren enererar en carry (c i+ ): c i i i c i Om inånarna (x i, y i ) antinen enererar en carry ( i =) eller det steet roaerar ett carry-in från ett tidiare ste ( i =) Coyriht (c) Miun 4 6

EXEMPEL: FUNKTIONER FÖR PROPAGATE OCH GENERATE X + Y i i i c i x x i i i i i y y i c X Y + C S Addition utan carry-roaation Coyriht (c) Miun 4 7

Coyriht (c) Miun 4 UTVECKLA UTTRYCK FÖR CLA-LOGIK 8 Utveckla uttryck för c, c, c 3 och c 4 c c c c ( ) c c 3 c c ( ) c c 3 3 3 4 c c ( ) 3 3 c 3 3 3 3 3 c c, c, c 3 och c 4 är funktioner av och

-BIT CLA ADDERARE X[-8] Y[-8] X[7-4] Y[7-4] X[3-] Y[3-] P G P G Länsta fördröjnin P G P[-8] G[-8] P[7-4] G[7-4] P[3-] G[3-] CLA-L C8 CLA-L C4 CLA-L X[-8] Y[-8] C[-8] X[7-4] Y[7-4] C[7-4] X[3-] Y[3-] C[3-] ADD ADD ADD S[-8] S[7-4] S[3-] Coyriht (c) Miun 4 9

EXEMPEL: SYNTETISERING AV EN ADDERARE VHDLdescrition Delay Constraints 35 Delay [ns] CLA adder Rile adder 5 Synthesis tool Area CLA adder 7 Gatenetlist Reort file Rile adder Coyriht (c) Miun 4 3

ADDERARE I VHDL library IEEE; use IEEE.STD_LOGIC_64.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity add is eneric ( N : inteer := 3); Inkluderas så att + funerar för datatyen std_loic ort ( X, Y : in std_loic_vector(n- downto ); S : out std_loic_vector(n- downto ); Cout : out std_loic); end add; architecture rtl of add is bein -- rtl add_sub : rocess (X, Y) variable sum : std_loic_vector(n downto ); bein -- rocess add_sub sum := ( & X) + ( & Y); S <= sum(n- downto ); Cout <= sum(n); end rocess add; end rtl; &X används eftersom + ska returnera en summa å N+ bitar Sum (S) är de N minst sinifikanta bitarna Carry-out är den mest sinifikanta biten Coyriht (c) Miun 4 3

MULTIPLIKATION I VHDL library IEEE; use IEEE.STD_LOGIC_64.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity multilicator is eneric ( N : inteer := 3); ort ( X, Y : in std_loic_vector(n- downto ); P : out std_loic_vector(*n- downto ); end multilicator; architecture rtl of multilicator is bein -- rtl rocess (X, Y) bein -- rocess P <= X*Y; end rocess; end rtl; Inkluderas så att * funerar för datatyen std_loic Antalet bitar i rodukten är summan av antalet bitar hos oeranderna Coyriht (c) Miun 4 3

SLUT PÅ FÖRELÄSNING 5 Innehåll Fördröjninar i kombinatorisk loik Byblock för kombinatorisk loik Multilexer / De-multilexer Kodare / Avkodare Aritmetiska Funktioner Coyriht (c) Miun 4 33