Kombinatorisk og synkron logikk. Kapittel 4

Like dokumenter
Synkron logikk. Sekvensiell logikk; to typer:

Tilstandsmaskiner (FSM) Kapittel 5

Entities and architectures. Kapittel 3

Agenda Funksjoner og prosedyrer. Funksjoner

VHDL En kjapp introduksjon VHDL. Oversikt. VHDL versus C(++)/Java

INF3430/4431. VHDL byggeblokker og testbenker

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

UNIVERSITETET I OSLO

INF3430/4431. VHDL byggeblokker og testbenker forts.

INF3430/4430. Kombinatoriske og sekvensielle byggeblokker implementert i VHDL :57

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430. Fasit eksamen Høst Oppgave 1 6. Oppgave A B C D E 1 X X 2 X 3 X X 4 X X 5 X X 6 X

Oppgave 1 En 4-input Xilinx LUT med innhold 9009 (hex) realiserer en: A xor-xor-or B xor-xor-nand C xor-xor-nor D xor-xor-and E xor-xor-xor

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4431. Introduksjon til VHDL Spartan starterkit Spartan-3 FPGA

Avdeling for ingeniørutdanning Institutt for teknologi

Dagens temaer. Dagens temaer er hentet fra P&P kapittel 3. Motivet for å bruke binær representasjon. Boolsk algebra: Definisjoner og regler

INF3430 Høsten ChipScope PRO - En kort innføring

Versjon2.0/ ChipScope PRO - En kort innføring

TELE2010A Digital Systemkonstruksjon

Repetisjon digital-teknikk. teknikk,, INF2270

Dagens temaer. Sekvensiell logikk: Kretser med minne. D-flipflop: Forbedring av RS-latch

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

Fys 3270/4270 høsten Laboppgave 2: Grunnleggende VHDL programmering. Styring av testkortets IO enheter.

Det matematisk-naturvitenskapelige fakultet. INF4431 Digital systemkonstruksjon

INF3340/4340. Synkrone design Tilstandsmaskiner

Datamaskiner og operativsystemer =>Datamaskinorganisering og arkitektur

INF3340/4431. Tilstandsmaskiner

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Kort repetisjon fra forrige gang. Kombinatorisk logikk

INF 3430/4430. Viktige momenter i syntese og for valg av teknologi

INF3430/4431 Høsten Laboppgave 2 VHDL-programmering Funksjoner og prosedyrer/bibliotek Styring av sjusegmenter

INF3340. Tilstandsmaskiner

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

UNIVERSITETET I OSLO

F4 IN HDL. Yngve Hafting,

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

Appendiks 7 Konstanter og variabler til kap. 6

UNIVERSITETET I OSLO

En mengde andre typer som DVD, CD, FPGA, Flash, (E)PROM etc. (Kommer. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til:

INF1400 Kap4rest Kombinatorisk Logikk

Løsningsforslag INF1400 H04

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

Hva gikk vi gjennom forrige uke? Omid Mirmotahari 3

Digitalstyring sammendrag

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

MAX MIN RESET. 7 Data Inn Data Ut. Load

UNIVERSITETET I OSLO

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Prøveeksamen 2. Elektronikk 24. mars Løsningsforslag

Ferdighetsmål: Kunne forenkle boolske uttrykk Kunne implementere flerinputs-porter med bare 2-inputs porter

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Løsningsforslag til eksamen i INF2270

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

INF 3430/4431. Simuleringsmetodikk

INF1400. Karnaughdiagram

Læringsmål og pensum. if (be): else (not_to_be):

ITPE2400/DATS2400: Datamaskinarkitektur

INF2270. Boolsk Algebra og kombinatorisk logikk

Eksamensoppgave i TFE4141 Design av Digitale System 1 Examination paper for TFE4141 Design of Digital Systems 1

IN1020. Sekvensiell Logikk

Andre funksjoner som NAND, NOR, XOR og XNOR avledes fra AND, To funksjoner er ekvivalente hvis de for alle input-kombinasjoner gir

INF 3430/4430. Simuleringsmetodikk

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

INF1400. Sekvensiell logikk del 1

Øvingsforelesning 1 Python (TDT4110)

Del 1 En oversikt over C-programmering

EKSAMEN I FAG TFE4101 KRETS- OG DIGITALTEKNIKK

INF1400. Sekvensiell logikk del 1

INF1400 Kap 02 Boolsk Algebra og Logiske Porter

Forelesning 2. Boolsk algebra og logiske porter

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

4 kombinatorisk logikk, løsning

Løsningsforslag til regneøving 6. a) Bruk boolsk algebra til å forkorte følgende uttrykk [1] Fjerner 0 uttrykk, og får: [4]

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Forelesning 6. Sekvensiell logikk

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

UNIVERSITETET I OSLO

Høgskoleni østfold EKSAMEN. Emnekode: Emne: ITD13012 Datateknikk (deleksamen 1, høstsemesteret) Dato: Eksamenstid: kl til kl.

MAT1030 Diskret matematikk

FYS 3270(4270) Data-assistert konstruksjon av kretselektronikk (tidligere Fys 329) Fys3270(4270)

Transkript:

Kombinatorisk og synkron logikk Kapittel 4

Eksempel; FIFO First-In-First-Out Eksempelet i boka er en noe redusert fifo (mangler empty flag, full flag osv.), men har de viktigste elementene Denne FIFOen har plass til 8 ord med en bredde på 9 bit

FIFO (I) library ieee; use ieee.std_logic_1164.all; use work.std_arith.all; For å kunne bruke std_logic og std_logic_vector For å kunne addere integer til std_logic_vector (fra Warp) entity fifo8x9 is port( clk, rst: in std_logic; rd, wr, rdinc, wrinc: in std_logic; rdptrclr, wrptrclr: in std_logic; data_in: in std_logic_vector(8 downto 0); data_out: out std_logic_vector(8 downto 0)); end fifo8x9;

architecture archfifo8x9 of fifo8x9 is type fifo_array is array(7 downto 0) of std_logic_vector(8 downto 0); signal fifo: fifo_array; signal wrptr, rdptr: std_logic_vector(2 downto 0); signal en: std_logic_vector(7 downto 0); signal dmuxout: std_logic_vector(8 downto 0); Deklarasjoner begin -- fifo register array: reg_array: process (rst, clk) begin if rst = '1' then for i in 7 downto 0 loop fifo(i) <= (others => '0'); end loop; elsif (clk'event and clk = '1') then if wr = '1' then for i in 7 downto 0 loop if en(i) = '1' then fifo(i) <= data_in; else fifo(i) <= fifo(i); end if; end loop; end if; end if; Setter alle bit til logisk verdi 0 Beholder verdien; ikke nødvendig å ha med! end process; Fifo(II)

-- read pointer read_count: process (rst, clk) begin if rst = '1' then rdptr <= (others => '0'); elsif (clk'event and clk='1') then if rdptrclr = '1' then rdptr <= (others => '0'); elsif rdinc = '1' then rdptr <= rdptr + 1; end if; end if; end process; -- write pointer write_count: process (rst, clk) begin if rst = '1' then wrptr <= (others => '0'); elsif (clk'event and clk='1') then if wrptrclr = '1' then wrptr <= (others => '0'); elsif wrinc = '1' then wrptr <= wrptr + 1; end if; end if; end process; Øker read-pointer med én Fifo (III) Øker write-pointer med én

-- FIFO register selector decoder with wrptr select en <= "00000001" when "000", "00000010" when "001", "00000100" when "010", "00001000" when "011", "00010000" when "100", "00100000" when "101", "01000000" when "110", "10000000" when others; -- 8:1 output data mux with rdptr select dmuxout <= fifo(0) when "000", fifo(1) when "001", fifo(2) when "010", fifo(3) when "011", fifo(4) when "100", fifo(5) when "101", fifo(6) when "110", fifo(7) when others; Dataflow Fifo (IV) For alle andre mulige kombinasjoner (husk at std_logic har 9 mulige verdier!) Behavioral -- three-state control of outputs three_state: process (rd, dmuxout) begin if rd = '1' then data_out <= dmuxout; else data_out <= (others => 'Z'); end if; end process; end archfifo8x9;

Kombinatorisk logikk Kombinatorisk logikk lages av logiske porter (f.eks. nand), hvor output kun bestemmes av nåværende input (ikke hukommelse!) Beskrives i behavioral, dataflow og structural statements I eksemplet med fifo finner vi behavioral beskrivelse med sekvensiell if-then-else i en process. dataflow beskrivelse med concurrent with-select-when uten process-beskrivelse.

Structural description Dataflow Dataflow Behavioral

Bruk av concurrent statements concurrent statements brukes utenfor process Utføres concurrently = samtidig Rekkefølgen på concurrent statements vilkårlig Brukes i dataflow og structural descriptions 3 hovedtyper concurrent statements i dataflow beskrivelser boolske ligninger with-select-when when-else

Bruk av boolske ligninger Multiplekser

Bruk av boolske ligninger (II) Passer bra å bruke boolske likninger her!

Logiske operatorer and, or, not, nand, nor, xor og xnor er predefinert for typene bit og boolean IEEE 1164 bruker disse operatorene i std_ulogic og std_logic Logiske operatorer har IKKE presedens i VHDL, derfor kreves det parenteser i multilevel logikk A + B C ok i boolsk algebra p.g.a presedens X <= A or B and C gir feilmelding i VHDL kompilatoren A + (B C) Rett skrivemåte i VHDL (A + B) C Presedens i boolsk algebra: () not and or +

with-select-when NB! Alle verdier av selection_signal må listes opp med when, og de må være mutually exclusive Eksempel 4 til 1 multiplekser s er av type std_logic, som har 9 mulige verdier. Gir totalt 81 mulige verdier ved simulering. (for syntese er 11 eneste meningsfulle verdi)

when-else NB! signal_name tilordnes verdien til første condition som er sann. Dvs. innebygd prioritet. Eksempel 4 til 1 multiplekser

j tilordnes verdien w når a er satt høy, selv om b, c og/eller d også er satt høy(e). Dvs. a har prioritet over b, c og d

Relasjonsoperatorer Likhet : = Ulikhet : /= Størrelsesoperatore: < <= > >= Arrayer bare like hvis de har lik lengde og hvert element i begge arrayer er like Resultatet av relasjonsoperatore er boolsk (true/false) Eksempel: signal a : std_logic_vector(7 downto 0). if a = 3 then Vil gi feilmelding, fordi a er std_logic, mens 3 er en integer

Overloaded operators Operator overloading vil si å definere samme operator for forskjellige datatyper eller blanding av datatyper. Pakken numeric_std i IEEE1076.3 definerer overloading av = operatoren for typene signed og integer, og unsigned og natural Pakken std_arith i Cypress biblioteket inneholder for oss de viktigste overload operatorene mellom std_logic og integer. ( +, -, >, <, = operatorene) Bruk pakkene for operator overloading gitt av leverandøren av synteseverktøyet Må bruke use for å gjøre pakkene synlige use work.numeric_std.all; use work.std_arith.all;

Overloaded operators, eksempel Overload tillater deg å bruke flere typer i et uttrykk

Bruk av komponenter i et hierarkisk design Spesifiserer koblingen av komponenter og signaler i designet Gjøres med port map(), som kan koble på to ulike måter navn posisjon Når output fra en komponent skal kobles til input på en annen komponent, må det skje via en intern signallinje!

Sekvensielle statements if-then-else Brukes i prosesser, funksjoner og prosedyrer NB! Rekkefølgen på signaltilordninger har betydning for hvordan logikken syntetiseres Funksjonelt identiske prosesser

Sekvensielle statements & prosesser Kombinatorisk logikk krever at alle signaler/ signalnavn må være med i sensitivitetslista! Hvis et design har flere prosesser, utføres disse i parallell (samtidig) og samtidig med andre concurrent statements i arkitekturen! Inne i prosessen derimot, er signaltilordningen sekvensiell

Generell syntaks med flere conditions Eksempel - multiplekser

Adressedekoder 0001 0001 0100 0010 0100 0100 1000 1000 0000 0000 Hexadesimal verdi case-when Binær verdi