DESIGN AV SEKVENTIELL LOGIK

Relevanta dokument
std_logic & std_logic_vector

VHDL och laborationer i digitalteknik

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

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

Konstruktionsmetodik för sekvenskretsar

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

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

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

IE1205 Digital Design: F9: Synkrona tillståndsautomater

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

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

Programmerbar logik och VHDL. Föreläsning 4

Sekvensnät. William Sandqvist

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

VHDL2. Sekvensnätsexemplet

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

Konstruktion av digitala system - VHDL

SEKVENSKRETSAR. Innehåll

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

VHDL2. Sekvensnätsexemplet

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

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

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

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

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

VHDL 1. Programmerbara kretsar

VHDL3. Angående buffer

KOMBINATORISKA FUNKTIONER...1

Digital Design IE1204

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

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

LABORATIONSINSTRUKTION LABORATION

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

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

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tentamen i IE1204/5 Digital Design onsdagen den 5/

KALKYLATOR LABORATION4. Laborationens syfte

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

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

Digital elektronik CL0090

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

Tenta i Digitalteknik

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

DIGITALTEKNIK. Laboration D172

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2

Digital Design IE1204

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

Tenta i Digitalteknik

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

Digitala elektroniksystem

Digital Design IE1204

Simulering med ModelSim En kort introduktion

Digital Design IE1204

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

TSEA22 Digitalteknik 2019!

Omtentamen IE Digital Design Måndag 14/

TSEA22 Digitalteknik 2019!

Digitalteknik syntes Arne Linde 2012

Sekvensnät Som Du kommer ihåg

Digital Design IE1204

Digitala projekt Elektro- och informationsteknik

L15 Introduktion modern digital design

Tenta i Digitalteknik

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

Tenta i Digitalteknik

Tentamen IE1204 Digital Design Måndag 15/

Tentamen IE Digital Design Måndag 23/

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

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

Sekvensnät i VHDL del 2

LAB VHDL-programmering

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

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

DESIGN AV KOMBINATORISK LOGIK

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

Digital Design IE1204

Tenta i Digitalteknik

IE1204/IE1205 Digital Design

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

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

Sekvensnät vippor, register och bussar

LABORATION TSEA22 DIGITALTEKNIK D

Studiehandledning. Digitalkonstruktion 5p

Översikt, kursinnehåll

Tenta i Digitalteknik

Digital elektronik CL0090

Tentamen IE Digital Design Fredag 15/

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

FIFO-kostruktion baserat på ett enkel-ports SRAM Yusuf Duman

Tenta i Digitalteknik

Tentamen med lösningar IE Digital Design Måndag 23/

Tentamen IE Digital Design Fredag 13/

Digital Design IE1204

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Minnet. Minne. Minns Man Minnet? Aktivera Kursens mål: LV3 Fo7. RAM-minnen: ROM PROM FLASH RWM. Primärminnen Sekundärminne Blockminne. Ext 15.

Tentamen i IE Digital Design Fredag 21/

IE1204 Digital Design

Generering av analoga signaler från XSV300

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

Transkript:

DESIGN AV SEKVENTIELL LOGIK Innehåll Timing i synkrona nätverk Synkrona processer i VHDL VHDL-kod som introducerar vippor (flip-flops) och latchar Initiering av register Mealy- och Moore-maskiner i VHDL Räknare, register, RAM/ROM FSMD FSM med Dataflöde 1

TIMING I SYNKRONA SYSTEM Generell modell för ett synkront system t C-Q och t SETUP är fördröjningar i vipporna Q1 D2 Q2 Kombinatorisk logik t SETUP C t C-Q t LOGIC C En klockcykel är summan av fördröjningarna: T t C Q t LOGIC t SETUP t MARGIN Q1 D2 t C-Q t LOGIC t MARGIN t SETUP Utan någon tidsmarginal får vi den högsta möjliga klockfrekvensen: f max 1 T min t C Q t 1 LOGIC t SETUP 2

SYNKRONA PROCESSER I VHDL Synkrona processer Kallas även klockade processer Alla aktiveras samtidigt vid den aktiva klockflanken Signaltilldelning i en synkron process resulterar i vippor inputs outputs clock 3

EXEMPEL: POSITIVE EDGE- TRIGGERED D-FF I VHDL library ieee; use ieee.std_logic_1164.all d DFF q entity dff IS port (d, clk : in std_logic; q : buffer std_logic); end dff; architecture behavior of dff is process(clk) clk if (clk event and clk = 1 ) then q <= d; else q <= q; clk event end process; end behavior; clk event and clk= 1 clk 4

FLER EXEMPEL PÅ VIPPOR architecture dataflow of pos_dff is q <= d when (clk event and clk= 1 ) else q; end dataflow; D Q architecture dataflow of neg_dff is q <= d when (clk event and clk= 0 ) else q; End dataflow; D Q 5

EXEMPEL: D-LATCH architecture dataflow of dlatch is q <= d when (clk = 1 ) else q; end dataflow; D Q 6

EXEMPEL: KOD SOM INTRODUCERAR VIPPOR I DESIGNEN Skriv en funktion som lagrar ett 8-bitars tal i ett register om talet är större än 10. Om talet är mindre än 10 ska istället registret få värdet 10. entity load_ge_10 is port ( clk : in std_logic; d : in std_logic_vector (7 downto 0); q : out std_logic_vector (7 downto 0)); end load_ge_10; architecture rtl of load_ge_10 is process (clk) if (clk'event and clk = '1') then if d > 10 then q <= d; else q <= conv_std_logic_vector(10,8); end process; end rtl; d 10 10 2:1 MUX 0 1 Signaltilldelning resulterar i introduktion av vippor. d>10 clk q 7

INITIERING AV VIPPOR När systemet startar måste vipporna initieras Två sorters initiering Synkron reset/preset Asynkron reset/preset Exempel: synkron reset if (clk event and clk = 1 ) then if reset = 1 then q <= 0 ; else q <= d; D Q reset 8

FORTS. INITIERING AV VIPPOR Exempel: Asynkron reset process (clk, reset) if reset = 1 then q <= 0 ; elsif (clk event and clk = 1 ) then q <= d; end process; D Q reset Exempel: Asynkron preset process (clk, preset) if preset = 1 then q <= 1 ; elsif (clk event and clk = 1 ) then q <= d; end process; D Q preset 9

DESIGN AV TILLSTÅNDSMASKINER Arbetsflöde för manuell design Skapa ett tillståndsdiagram som beskriver problemet Ta fram en tillståndstabell Koda tillstånden Ta fram en transitionstabell Välj minneselement (D-,T-,JK-?) Ta fram en excitationstabell Ta fram booleska uttryck för och Designa kretsen på grindnivå 10

DESIGN AV TILLSTÅNDSMASKINER Automatisk syntes Ta fram ett tillståndsdiagram för problemet Skriv VHDL-kod som beskriver problemet Automatisk syntes genomför kodningen av tillståndstabellen, och genererar en netlist på grind-nivå 11

EXEMPEL PÅ TILLSTÅNDSMASKIN I VHDL architecture rtl of fsm_simple is type state_type is (start, r1, r2); signal state : state_type; A=1 A=0 Moore -- rtl update_state : process (clk, reset) -- process fsm if reset = '0' then state <= start; elsif clk'event and clk = '1' then case state is when start => if A = '0' then state <= start; else state <= r1; when r1 => if A = '0' then state <= r1; else state <= r2; when r2 end case; end process update_state; output_logic : process(state) case state is when start => z <= '0'; when r1 => z <= '1'; when r2 => z <= '0'; end case; end process output_logic; end rtl; => if A = '0' then state <= r2; else state <= start; start z=0 r2 z=0 A=0 A=1 r1 z=1 A=1 A=0 12

MEALY-MASKIN I VHDL architecture mealy of fsm2 is type state is (S1, S2, S3, S4); signal present_state, next_state: state; process (ain, present_state) CASE present_state IS when s1 => if (ain = 1 ) then yout <= 0 ; next_state <= s4; else yout <= 1 ; next_state <= s3; when s2 => yout <= 1 ; next_state <= s3; when s3 => yout <= 1 ; next_state <= s1; when s4 => if (ain = 1 ) then yout <= 1 ; next_state <= s2; else yout <= 0 ; next_state <= s1; end case; end process; process wail until rising_edge(clk); present_state <= next_state; end process; end mealy; ain=-/ yout=1 ain=0/yout=0 S1 ain present_state S3 ain=1/ yout=0 ain=0/ yout=1 S4 S2 ain=-/yout=1 Q D ain=1/ yout=1 yout next_state 13

RÄKNARE I VHDL Modulo-8 räknare library ieee; use ieee.std_logic_1164.all; use work.numeric_std.all; entity modulo8 IS PORT(clk: in std_logic; cnt: buffer unsigned (7 downto 0)); END modulo8; architecture rtl of count8 is process (clk) if rising_edge(clk) then cnt <= cnt +1; end if end process; end rtl; 14

SHIFT-REGISTER I VHDL entity shift_r is port ( clk, resetn, d_in, shift_en : in std_logic; shift_out : out std_logic_vector(3 downto 0)); end shift_r; architecture rtl of shift_r is signal shift_reg: std_logic_vector(3 downto 0); process (clk, resetn) if resetn = '0' then shift_reg <= (others=>'0'); elsif clk'event and clk = '1' then if shift_en='1' then shift_reg(3 downto 1) <= shift_reg(2 downto 0); -- shift_reg <= shl(shift_reg, "1"); -- shift_reg <= shift_reg sll 1; shift_reg(0) <= d_in; end process; d_in shift_out shift_en resetn Alternativa metoder shift_out <= shift_reg; end rtl; 15

MINNEN I VHDL Ett RAM eller ROM kan designas på två sätt Använd datatypen array Använd ett fördefinierat makro för minneskretsen 16

EXEMPEL: 4 8 ROM I VHDL library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ROM is port ( address : in std_logic_vector(1 downto 0); dout : out std_logic_vector(7 downto 0)); end ROM; architecture rtl of ROM is type rom_table is array (0 to 3) of std_logic_vector(7 downto 0); constant rom_contents : rom_table := rom_table'("00101111", "11010000", "01101010", "11101101"); -- rtl dout <= rom_contents(conv_integer(address)); end rtl; 17

EXEMPEL #1: RAM I VHDL architecture rtl of rmodul is component RAM4_8 port ( din: in std_logic_vector(7 downto 0), address0, address1, we : in std_logic; dout : out std_logic_vector(7 downto 0)); end component; Definiera en förexisterande RAMmodul som finns i ett library -- rtl ram1: RAM4_8 port map ( din => d, address0 => a0, address1 => a1, we => we, dout => q) end rtl; d a0 a1 we RAM4_8 din dout address0 address1 we q 18

EXEMPEL #2: RAM I VHDL library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ram32_16 is port ( addr : in std_logic_vector(4 downto 0); clk, we_n : in std_logic; din : in std_logic_vector(15 downto 0); dout : out std_logic_vector(15 downto 0)); end ram32_16; architecture rtl of ram32_16 is type ram_type is array (31 downto 0) of std_logic_vector(15 downto 0); signal ram_array : ram_type; Definiera en matris RAM32_16 process(clk) if clk'event and clk='1' then if we_n='0' then ram_array(conv_integer(addr)) <= din; end process; dout <= ram_array(conv_integer(addr)); end rtl; din addr we_n dout 19

KOMPONENTER I EN DIGITAL DESIGN En digital design har generellt Minst en kontrollenhet (FSM) Minst en enhet för dataflöde Till exempel: adderare, multiplikator, komparator Register for tillfällig lagring av variabler Ofta har en design flera kontrollenheter och flera enheter för dataflöden Designmodell: FSM med dataflöde Beskriver funktionen för en design med både kontrollenhet och dataflöde 20

FSM MED DATAFLÖDE Kontrollingångar Kontrollsignaler Dataingångar Kontrollenhet Enhet för dataflöde Kontrollutgångar Statussignaler Datautgångar Kontrollingångar Dataingångar FSMD Kontrollutgångar Datautgångar 21

DESIGNEXEMPEL Designa en funktion som beräknar: y a x b Typ Beskrivning #bits D in, data Positiva heltalsvärden för a, x och b i sekvens 8 start in, control Påbörja beräkningen av Y, active high 1 busy out, control Indikera att enheten är upptagen med att beräkna 1 Y out, data Det beräknade värdet av Y 17 reset in, control Initiera enheten 1 clk start D a = 5 x = 3 b = 10 busy Y Y=25 22

FORTS. DESIGNEXEMPEL D start reset clk Y = a x + b Y busy Externa kontrollsignaler som styr enheten reset start interna kontrollsignaler Externa datasignaler D Control unit storea storepr Datapath Extern kontrollsignal busy Y 23

FORTS. DESIGNEXEMPEL Start=0 D a = 5 x = 3 b = 10 D start Start=1 busy = 0 storea = 0 storepr = 0 clk storea EN geta busy = 1 storea = 1 storepr = 0 A X multax busy = 1 storea = 0 storepr = 1 clk storepr EN addb busy = 1 storea = 0 storepr = 0 A X + B A X+B Y 24

SAMMANFATTNING I en generell design används ofta modellen för FSMD Designflöde Specificera vilken algoritm som ska implementeras Identifiera Vilka komponenter som krävs för dataflödet Vilka tillstånd som krävs för kontrollenheten Vilka kontrollsignaler som krävs för dataflödet Vilka statussignaler som krävs för kontrollenheten Utveckla Tillståndsdiagram för kontrollenheten Blockdiagram för dataflödet 25

SLUT PÅ FÖRELÄSNING 7 Innehåll Timing i synkrona nätverk Synkrona processer i VHDL VHDL-kod som introducerar vippor (flip-flops) och latchar Initiering av register Mealy- och Moore-maskiner i VHDL Räknare, register, RAM/ROM FSMD FSM med Dataflöde 26