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

Relevanta dokument
VHDL och laborationer i digitalteknik

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

VHDL 1. Programmerbara kretsar

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

std_logic & std_logic_vector

Simulering med ModelSim En kort introduktion

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

Konstruktion av digitala system - VHDL

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Digitalteknik syntes Arne Linde 2012

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

DESIGN AV SEKVENTIELL LOGIK

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

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

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

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

Digital elektronik CL0090

Konstruktionsmetodik för sekvenskretsar

VHDL2. Sekvensnätsexemplet

DIGITALTEKNIK. Laboration D172

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

VHDL2. Sekvensnätsexemplet

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

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

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

Simulering med ModelSim En kort introduktion

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

KOMBINATORISKA FUNKTIONER...1

L15 Introduktion modern digital design

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

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

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

LABORATIONSINSTRUKTION LABORATION

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

Tenta i Digitalteknik

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

Programmerbar logik och VHDL. Föreläsning 4

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Tenta i Digitalteknik

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

KALKYLATOR LABORATION4. Laborationens syfte

Programmerbar logik och VHDL. Föreläsning 1

Tenta i Digitalteknik

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

Tenta i Digitalteknik

Sekvensnät. William Sandqvist

DESIGN AV KOMBINATORISK LOGIK

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

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

Tenta i Digitalteknik

Digital elektronik CL0090

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

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

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

Digitala elektroniksystem

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

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

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

LAB VHDL-programmering

IE1205 Digital Design: F9: Synkrona tillståndsautomater

Översikt, kursinnehåll

Digitalteknik syntes. Digitalteknik syntes Arne Linde 2012

Digitala projekt Elektro- och informationsteknik

Tentamen i IE1204/5 Digital Design Torsdag 29/

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

Sekvensnät i VHDL del 2

Omtentamen IE Digital Design Måndag 14/

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

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

IE1205 Digital Design: F7 : Kombinatorik

VHDL3. Angående buffer

Tenta i Digitalteknik

Exempel på ett litet Ada-program

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Generering av analoga signaler från XSV300

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

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

Tentamen Grundläggande programmering

Tentamen i Digitalteknik, EITF65

Tentamen i IE Digital Design Fredag 21/

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

Digital Design IE1204

Tentamen i Digitalteknik 5p

Quine McCluskys algoritm

SEKVENSKRETSAR. Innehåll

Tenta i Digitalteknik

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

IE1204/IE1205 Digital Design

Tentamen IE Digital Design Måndag 23/

Digital Design IE1204

LABORATION TSEA22 DIGITALTEKNIK D

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Transkript:

1 Digitalteknik, fortsättningskurs Föreläsning 2-2012 VHDL Very High Speed Integrated Circuit Hardware Description Language VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit

VHDL & Verilog : Två HDL språk för hårdvarukonstruktion VHDL. Syntaxen liknar programmeringsspråket ADA. VHDL standardiserades 1987 IEEE Standard VHDL Language Reference Manual. Utges av IEEE. Verilog. Ursprung CAD-industrin. Språken har likartade modelleringsmöjligheter men olika syntax. Utökning av VHDL för analoga kretsar: - VHDL-AMS (VHDL- Analog Mixed Signal ) - Verilog-A, Verilog-AMS

Hårdvarubeskrivande språk VHDL, Verilog : RTL-nivå & Grind-nivå. För ASIC, FPGA, CPLD. SystemC : Klassbibliotek till C++. Möjliggör högre abstraktionsnivå än VHDL ( Transaction-Level Modelling ) SystemVerilog : Ursprung Verilog. Beskrivning/Specifikation/ Dokumentation av hårdvara. Simulering av hårdvara. Syntes av hårdvara.

Beskrivningar i VHDL Struktur och beteende Strukturbeskrivning VHDL koden beskriver systemet såsom en samling sammankopplade komponenter. Kan vara hierarkisk eller flat. Beteendebeskrivning VHDL koden beskriver funktionen på systemet eller komponenten, utan att beskriva strukturen på densamma. Struktur och beteende kan blandas i samma VHDL beskrivning. Struktur : Närmare realiseringen. Beteende : Mindre mängd detaljer. Medger snabbare simulering och modellering på högre abstraktionsnivå. 4

5 Entity ENTITY fulladder IS PORT(A:IN STD_LOGIC; B:IN STD LOGIC; Cin:IN STD LOGIC; S:OUT STD_LOGIC; Cout:OUT STD_LOGIC); END fulladder; Entiteten beskriver portarna mot omvärlden för kretsen.

6 Architecture ARCHITECTURE behave OF and2 IS BEGIN Cout<= (A and B) or (A and Cin) or (B and Cin); S<=A xor B xor Cin END behave; Architecture beskriver funktionen inuti kretsen.

7 Varför VHDL? VHDL används för att kunna kontrollera att man har kopplat rätt genom att simulera kretsen Kunna beskriva stora konstruktioner på ett enkelt sätt och sedan generera kretsen genom syntes Möjliggör strukturerade beskrivningar av en krets VHDL öka abstraktionsnivån

8 VHDL Ett starkt typat språk Signaler modelleras m.h.a. olika datatyper, t.ex. bit, har värdet 0 eller 1, (används sällan) bit_vector, flera bitar ( 0000, 1111 används sällan) std_logic, används normalt för att representera en digital signal type std_logic is ( U, X, 0, 1, Z, W, L, H, - ) std_logic_vector, används för bussar (tex. 01010101, UUUUUUUU, ZZZZZZZZ, etc). Är en vektor med element av typen std_logic. Type: std_logic_vector is array (NATURAL range <>) of std_logic

VHDL basics cont. Enumeration types cont. Standard logic unsigned Resten av raden är kommentar TYPE std_ulogic IS ( U, -- uninitialized X, -- forcing unknown 0, -- forcing zero 1, -- forcing one Z, -- high impedance W, -- weak unknown L, -- weak zero H, -- weak one - ); -- don t care Relevant för simulering Relevant för compilatorn Tecken saknar betydelse för enstaka bitar Standard logic är vår rekomindation för alla binära signaler

10 VHDL Ett starkt typat språk boolean (false,true) integer (2 komplement representation, tex. -66, 134, 645533, -899) Signed, unsigned Character ( A, B, C,.., 0, 1, 2,.) Uppräkningstyper, tex. type states is (S1,S2,S3,S4);

VHDL bibliotek. Kompilerade VHDL-komponenter lagras default i WORK biblioteket. WORK är ett symboliskt namn. Ofta döper man också katalogen till work. Biblioteken WORK och STD är alltid synliga för kompilatorn. Andra bibliotek som skall användas måste specificeras. Detta göres i koden före de delar som vill använda dem. Tex: library My_Lib; use My_Lib.Mina_Typer.ALL; 11

12 VHDL Hierarkin

13 VHDL std_logic. Typen std_logic finns definierad i paketet IEEE Dessa båda rader skall alltid finnas före varje entity som använder typen för att std_logic skall kunna användas: Library IEEE; use IEEE.std_logic_1164.all;

14 VHDL use ieee.std_logic_unsigned.all Då kan vanliga aritmetiska operatorer (tex +, -, * ) användas för std_logic typer. Motsvarande för tal med tecken: byt mot signed. S <= A+B; (resultatet får inte överskrida vektorns område) S,A och B är av typen std_logic_vector,

15 VHDL Signaltilldelningar Följande tilldelningar är också tillåtna a <= B 110010 -- identisk med 110010 b <= X A32F -- hex-tal, endast bitvektor f <= O 725 -- oktalt tal, end. bitvektor är vektorerna definierade med std_logic måste en konverteringsfunktion användas: f <= std_logic_vector (X A32F )

16 VHDL Signaltilldelningar Aggregate signal a,b : std_logic_vector (7 downto 0); a <= (others => 0 ); -- identiskt med följande a <= 00000000 ;

17 Parallellt - sekventiellt a b x y begin x <= a; y <= b; x <= b; -- fel end; begin p0 : process (a,b) is begin x <= a; y <= b; x <= b; end process p0; end; a b x y

18 VHDL std_ulogic Det resulterande värdet hos en signal av typen std_logic bestäms av en resolveringsfunktion ( resolved i subtype deklarationen ovan), vilken i detta fall finns definierad i paketet ieee.std_logic_1164.

19 begin with cntrl select -- en 4/1 multiplexer ut <= a when 00, b when 01, c when 10, d when 11, X when others; end; Parallellt - sekventiellt begin p0 : process (cntrl,a,b,c,d) is begin case cntrl is when 00 => ut<= a; when 01 => ut <= b; when 10 => ut <= c; when 11 => ut <= d; when others => ut<= X ; end case; end process p0; end; ut

20 Parallellt satser. When-satsen. begin -- en 2/4 avkodare z <= 0001 when a = 00 else 0010 when a = 01 else 0100 when a = 10 else 1000 when a = 11 else XXXX ; end;

21 Sekventiell VHDL (If-satsen) If-satser kan användas i den sekventiella delen av VHDL De får inte placeras i den parallella delen av VHDL-koden syntaxen är IF villkor THEN sats(er); ELSE andra sats(er); END IF; en process i VHDL innehåller sekventiella satser (I parallell VHDL används when else i stället )

22 Sekventiell VHDL (If-satsen) If sats, med fler villkor syntaxen är IF villkor THEN sats(er); ELSE IF nytt villkor THEN andra sats(er); END IF; END IF; Varje if avslutas med end if; else if kan sammanskrivas som elsif elsif får inte avslutas med end if;

23 Implicit memory Process (Sel, x2) begin if Sel = 1 then f <= x2; endif; end process; Om Sel < > 1 så behålls det gamla värdet på f! p0 : process (LD, D) is begin if (LD = 1 ) then Q <= D; end if; end process p0;

24 För syntesen Vippor IF Clk'EVENT AND Clk='1' THEN end if;

p0 : process (Reset,Clk) is begin IF Reset = 0' THEN Q <= '0'; VHDL En flank-triggad D-vippa med asynkron reset ELSIF Clk'EVENT AND Clk='1' THEN Q <= D; END IF; end process p0; Clk D 25 Q

-- Synkron Reset p0 : PROCESS (Clk) IS BEGIN IF Clk'EVENT AND Clk='1' THEN IF Reset = '1' THEN -- Kod som sätter systemet i ett -- väldefinierat tillstånd ELSIF -- Det som ska göras! END IF; END PROCESS p0; 26

27 library ieee; use ieee.std_logic_1164.all; entity reg is generic (n : NATURAL := 4); port (D : in std_logic_vector (n-1 downto 0); Clk, Reset : in std_logic; Q : out std_logic_vector (n-1 downto 0)); end entity reg; architecture behavioural of reg is begin p0 : process (Clk, Reset) is begin IF Reset = '1' THEN Q <= (OTHERS => '0'); ELSIF Clk'EVENT AND Clk='1' THEN Q <= D; END IF; end process p0; end architecture behavioural; n-bitars Register

28 VHDL Variabler kan vara av samma typer som signaler deklareras och används i sekventiella delen uppdateras omgående har inget värde utanför processen tilldelas med := operatorn

29 Räknare på 2 sätt library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt is port (Clk, Reset : in std_logic; Q : out std_logic_vector (3 downto 0)); end entity cnt; Clk Reset Q

30 architecture arch_cnt of cnt is begin p0 : process (Clk, Reset) is variable cnt : std_logic_vector (3 downto 0); begin if Reset = '1' then cnt := (others => '0'); elsif Clk'EVENT and Clk='1' then cnt := cnt+1; end if; Q <= cnt; end process p0; end architecture arch_cnt; architecture arch_cnt of cnt2 is begin p0 : process (Clk, Reset) is variable cnt : std_logic_vector (3 downto 0); begin if Reset = '1' then cnt := (others => '0'); elsif Clk'EVENT and Clk='1' then cnt(3) := cnt(3) xor (cnt(2) and cnt(1) and cnt(0)); cnt(2) := cnt(2) xor (cnt(1) and cnt(0)); cnt(1) := cnt(1) xor cnt(0); cnt(0) := not cnt(0); end if; Q <= cnt; end process p0; end architecture arch_cnt;

31 VHDL Syntes. Klockade processer skall vara känsliga på en flank. Använd funktionerna Clk'EVENT AND Clk='1' eller Clk= 0'!. Gör rimlighetsanalys på antal grindar och antal vippor. Studera grindschemat efter syntes. Think Hardware Tänk i hårdvara då du skriver VHDL-koden.

http://model.com/

33 Arbetsgång vid simulering skriv in koden med texteditor kompilera filen simulera konstruktionen: 1. Ange insignalers värden (i en testbänk eller i simulatorn) 2. Välj vilka signaler som skall studeras 3. Kör simuleringen 4. Jämför utsignalerna mot förväntat resultat ModelSim/QuestaSim (Mentor Graphics Inc) används hos oss.

34 Work dinfil, välj signalerna (Add to wave) force clk 1 50ns, 0 100ns -repeat 100ns force reset 1 10ns, 0 20ns run 2000ns

35 Do - filer Ett sätt att testa konstruktionen på är men en.do fil. Skriv in kommandona i en text fil Spar den som namn.do (bra om den ligger i samma projekt biblioteket som resten) Kör: do namn.do i Transcript fönstret -- tst_cnt.do -- datum namn restart -f force clk 1 50ns, 0 100ns -repeat 100ns force reset 1 10ns, 0 20ns run 2000ns

36 Ex: BCD räknarfrossa! Implementera en två bitars BCD på två olika vis (i samma entitet) 1. Med case, Synkron reset 2. Med if then else, Asynkron reset Alla skall ha CE (Klock enable), LD (load) och CE_OUT

37 Implementera en två bitars BCD på två olika vis (i samma entitet) Med case, Synkron reset Alla skall ha CE (Klock enable), LD (load) och CE_OUT library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt_bcd is port (Clk, Reset, CE, LD: in std_logic; CEU1, CEU2 : out std_logic; Din : in std_logic_vector (7 downto 0); Q1 : out std_logic_vector (7 downto 0); Q2 : out std_logic_vector (7 downto 0)); end entity cnt_bcd;

architecture arch_cnt of cnt_bcd is begin cnt1 : process (Clk) is variable cnt : std_logic_vector (7 downto 0); begin if Clk'EVENT and Clk='1' then if Reset = '1' then cnt := (others => '0'); elsif CE='1' then if LD='1' then cnt := Din; else Synkron reset skall ha CE (Klock enable), LD (load) 38

case cnt(3 downto 0) is when "1001" => cnt(3 downto 0) := "0000"; case cnt(7 downto 4) is when "1001" => cnt(7 downto 4) := "0000"; when others => cnt(7 downto 4):= cnt(7 downto 4) +1; end case; when others => cnt(3 downto 0):= cnt(3 downto 0) +1; end case; 39 architecture arch_cnt of cnt_bcd is begin cnt1 : process (Clk) is variable cnt : std_logic_vector (7 downto 0); begin if Clk'EVENT and Clk='1' then if Reset = '1' then cnt := (others => '0'); elsif CE='1' then if LD='1' then cnt := Din; else

40 Q1<=cnt; if(cnt = "10011001") then CEU1<='1'; else CEU1<='0'; end if; end process cnt1;

architecture arch_cnt of cnt_bcd is begin cnt1 : process (Clk) is variable cnt : std_logic_vector (7 downto 0); begin if Clk'EVENT and Clk='1' then if Reset = '1' then cnt := (others => '0'); elsif CE='1' then if LD='1' then cnt := Din; else case cnt(3 downto 0) is when "1001" => cnt(3 downto 0) := "0000"; case cnt(7 downto 4) is when "1001" => cnt(7 downto 4) := "0000"; when others => cnt(7 downto 4):= cnt(7 downto 4) +1; end case; when others => cnt(3 downto 0):= cnt(3 downto 0) +1; end case; end if; -- LD=1 end if; -- Reset end if; -- Clk Q1<=cnt; if(cnt = "10011001")then CEU1<='1'; else CEU1<='0'; end if; end process cnt1; 41

Implementera en två bitars BCD på två olika vis (i samma entitet) Med if then else, Asynkron reset Alla skall ha CE (Klock enable), LD (load) och CE_OUT 42 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt_bcd is port (Clk, Reset, CE, LD: in std_logic; CEU1, CEU2 : out std_logic; Din : in std_logic_vector (7 downto 0); Q1 : out std_logic_vector (7 downto 0); Q2 : out std_logic_vector (7 downto 0)); end entity cnt_bcd;

if Reset = '1' then cnt := (others => '0'); elsif Clk'EVENT and Clk='1' then 43 if cnt(3 downto 0)= "1001" then cnt(3 downto 0) := "0000"; if cnt(7 downto 4) = "1001" then cnt(7 downto 4) := "0000"; else cnt(7 downto 4):= cnt(7 downto 4) +1; end if; -- cnt (7 downto 4) else cnt(3 downto 0):= cnt(3 downto 0) +1; end if; -- cnt(3 downto 0)

cnt2 : process (Clk, Reset) is end if; -- cnt(3 downto 0) variable cnt : std_logic_vector (7 downto 0); end if; -- LD=1 begin end if; -- Clk if Reset = '1' then end if; -- Reset cnt := (others => '0'); Q2<=cnt; elsif Clk'EVENT and Clk='1' then if(cnt = "10011001")then CEU2<='1'; if CE='1' then else CEU2<='0'; if LD='1' then end if; cnt := Din; end process cnt2; else if cnt(3 downto 0)= "1001" then cnt(3 downto 0) := "0000"; if cnt(7 downto 4) = "1001" then cnt(7 downto 4) := "0000"; else cnt(7 downto 4):= cnt(7 downto 4) +1; end if; -- cnt (7 downto 4) else cnt(3 downto 0):= cnt(3 downto 0) +1; 44

45 Simulera med do - fil restart -f (add wave clk) force clk 1 50ns, 0 100ns -repeat 100ns force reset 1 10ns, 0 20ns run 2000ns

46

47 VHDL Signaltilldelningar Concatenation & signal a,b : std_logic_vector (3 downto 0); signal c : std_logic; a <= 1 & b (3) & b (1 downto 0); b <= e & f; --e och f är tvåbitarsvektorer

48 Att välja olika realiseringar av en funktion A B C Z 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 0 Två nivå realisering (vi räknar inte inverterarna) Fler nivå realisering (Grindar med färre ingångar) XOR

49 Vilken realisering är bäst? Minska antalet ingångar Litteral : insignal (inverterad eller inte) Kostnad 2 transistorer per litteral Färre litteraler innebär färre transistorer Mindre kretsar Färre ingångar medför snabbare grindar Fan-in är i vissa teknologier begränsade Minska antalet grindar Färre grindar mindre kretsar Påverkar direkt produktionskostanden Reducera antalet grindnivåer Färre nivåer snabbare (Minsta fördröjning kräver ofta fler grindar) Hur balanserar vi mellan storlek och hastighet. Verktyg som ger olika lösningar Logik minimering Logik optimering

50 Sammanfattning VHDL används till Beskrivning/Specifikation/ Dokumentation av hårdvara. Simulering av hårdvara. Syntes av hårdvara. Entity - Architecture

Sammanfattning forts. 51 VHDL Ett starkt typat språk Bibliotek: Library IEEE; use IEEE.std_logic_1164.all; use ieee.std_logic_unsigned.all; Signaltilldelningar <= Variabel tilldelning :=

Sammanfattning forts. Paralell - Sekventiell kod name : process (<List>) is begin with X select case <expression> is y<= q0 when 00, when <choice> => <Statements>; qn when others; [when others =>..;] end case; 52

Sammanfattning forts. Paralell - Sekventiell kod target <= value_ex when cond else name : process (<List>) is begin if <condition> then value_ex [when cond]; <Statements>; [elsif <condition> then <Statements>; ] [else <Statements>; ] end if; 53

Sammanfattning forts. Implicit memory 54 Värdet behålls om ingen tilldelning sker. D-vippa (Register/räknare mm) IF Clk'EVENT AND Clk='1' THEN Asynkron Reset cnt2 : process (Clk, Reset) is begin if Reset = '1' then <Reset Statements > elsif Clk'EVENT and Clk='1' then <Statements>; end if;

Sammanfattning forts. Synkron Reset 55 cnt2 : process (Clk) is begin if Clk'EVENT and Clk='1' then if Reset = '1' then <Reset Statements > else <Statements>; end if; -- Reset end if; -- Clk'EVENT

Sammanfattning forts. Clock Enable 56 cnt2 : process (Clk) is begin if Clk'EVENT and Clk='1' then if CE = '1' then <Statements>; end if; -- CE

57 Nästa föreläsning Kombinatoriska nät Lite repetition + Karnaughdiagram(4-6var), flera utgångar Quine-McCluskey + intro tid Glöm inte att anmäla er till laborations tillfällena!