VHDL 1. Programmerbara kretsar

Relevanta dokument
Konstruktion av digitala system - VHDL

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

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

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 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

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

Konstruktionsmetodik för sekvenskretsar

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

VHDL2. Sekvensnätsexemplet

std_logic & std_logic_vector

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

DIGITALTEKNIK. Laboration D172

VHDL2. Sekvensnätsexemplet

VHDL och laborationer i digitalteknik

Programmerbar logik och VHDL. Föreläsning 1

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

L15 Introduktion modern digital design

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

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

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

KOMBINATORISKA FUNKTIONER...1

Datorkonstruktion. Datorkonstruktion 2018, 8hp

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

DESIGN AV SEKVENTIELL LOGIK

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

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

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

LABORATIONSINSTRUKTION LABORATION

Digitala projekt Elektro- och informationsteknik

Digital elektronik CL0090

Sekvensnät. William Sandqvist

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

Digitalteknik syntes Arne Linde 2012

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

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

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

Simulering med ModelSim En kort introduktion

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

Programmerbar logik och VHDL. Föreläsning 4

Digital elektronik CL0090

Digital Design IE1204

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

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

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

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

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

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

KALKYLATOR LABORATION4. Laborationens syfte

IE1204/IE1205 Digital Design

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

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

VHDL3. Angående buffer

IE1204/5 Digital Design typtenta

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

LABORATION TSEA22 DIGITALTEKNIK D

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

Digital Konstruktion TSEA43. Ingemar Ragnemalm 2001, Olle Seger 2003-,

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

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

Tenta i Digitalteknik

Digital Design IE1204

Sekvensnät i VHDL del 2

Omtentamen IE Digital Design Måndag 14/

Programable Logic Devices

Digital Design IE1204

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

IE1204/5 Digital Design typtenta

Digitala elektroniksystem

Tenta i Digitalteknik

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

Tentamen IE Digital Design Måndag 23/

INTRODUKTION TILL VIVADO

IE1205 Digital Design: F9: Synkrona tillståndsautomater

LABORATIONSINSTRUKTION

Institutionen för systemteknik, ISY, LiTH. Tentamen i. Tid: kl

Exempel på tentamensfrågor Digitalteknik

TSEA22 Digitalteknik 2019!

Digital Design IE1204

Generering av analoga signaler från XSV300

Tenta i Digitalteknik

Tentamen i IE Digital Design Fredag 21/

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

LABORATION TSEA22 DIGITALTEKNIK D

Översikt, kursinnehåll

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

Tentamen i Digital Design

DESIGN AV KOMBINATORISK LOGIK

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

Tentamen i IE1204/5 Digital Design Torsdag 29/

Introduktion till syntesverktyget Altera Max+PlusII

Tenta i Digitalteknik

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

IE1205 Digital Design: F7 : Kombinatorik

Digital Design IE1204

LAB VHDL-programmering

Transkript:

VHDL 1 Programmerbara kretsar CPLD FPGA VHDL Kombinatorik with-select-when when-else Sekvensnät process case if-then-else Programmerbara kretsar PLD = programmable logic device CPLD = complex PLD, i princip flera PLD-er på ett chip ex: 108 vippor + 540 produkttermer FPGA = field programmable gate array, komplexa kretsar upp till flera miljoner grindar. Ex: 20000 vippor + komb.logik + 32 2 kb RAM + 32 DSP (mult+ack) 2 1

En notation x y & xy betyder x y & xy 3 x 0 x 1 x 2 clk Princip för en PLD 1 1 1 3 produkttermer ELLER-plan q 1 q 0 x & 0 x 1 & q 0 x 0 x 2 & q 0 OCH-plan 1 1 >=1 >=1 q 0 + = x 0 x 1 +q 0 x 0 x 2 q 0 + u u = x 0 x 1 +q 0 4 2

En allmän CPLD En samling PLDer på ett chip med programmerbara hopkopplingar 5 CPLD Xilinx 9572 - blockschema 6 3

General FPGA chip architecture Dessutom 32 x 2kB RAM 32 x DSP (mult + add) Andra FPGA-er innehåller CPU-er CLB = configurable logic block 7 Vad innehåller en CLB? Logik görs med LUT (look up table) fyll i sanningstabellen i ett minne Korskoppling många 6 LUT 2278 1 4 LUT 8 vippor 1 8 4

VHDL =VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuit Ett programspråk för att: Syntetisera (Xilinx) Simulera (ModelSim) Hårdvara Kurvor 9 Varför VHDL? Hantera komplexitet VHDL-koden kan simuleras Beskrivning på flera olika abstraktionsnivåer Ökad produktivitet snabbare än schemaritning återanvändbar kod Modernt programmeringsspråk Rikt, kraftfullt Parallellt, ADA-liknande, starkt typat, overloading Ej objektorienterat 1) a+b 2) Kedja av heladderare 3) Bygg adderare med NANDgrindar 10 5

VHDL nackdelar? Svårt att lära sig? Delmängd för syntes : 1-2 dagar! Avancerade simuleringar : 1-2 månader Nytt sätt att tänka Lätt att hamna i mjukvarutänkande! FPGA-n, CPLD-n är inte en processor för VHDL VHDL är inte sekvensiellt utan parallellt Tilldelning, variabler betyder inte samma sak som i andra prog.språk Gör så här: Tänk hårdvara och gör ett blockschema Översätt till VHDL 11 Hur ser ett VHDL-program ut? entity namn1 is -- beskrivning av in- och utgångar end entity namn1; Gränssnitt mot omvärlden architecture namn2 of namn1 is -- beskrivning av interna signaler Innehåll -- beskrivning av funktion end architecture namn2; VHDL är inte case sensitive, små eller stora bokstäver spelar ingen roll, ej heller mellanslag. 12 6

VHDL för kombinatoriska nät entity cnet is port(a,b: in std_logic; c: out std_logic); end entity cnet; a b & 1 y x 1 c architecture firsttry of cnet is signal x,y:std_logic; c <= x nor y; x <= a and b; y <= a or b; end architecture firsttry; Parallellt exekverande satser. När ex a ändras så blir x<=a and b och y<= a or b, vilket gör att c<= x nor y. Ordningen spelar ingen roll. 13 Vad betyder ett VHDL-program? Syntetisering (Xilinx) x <= a and b; betyder att en OCH-grind kopplas in mellan trådarna a,b och x Endast en tilldelning på x tillåten. Simulering (ModelSim) x <= a and b; är en parallellt exekverande sats som körs om a,b ändras Än så länge är ordningen mellan satserna oviktig Programmera aldrig i VHDL! Tänk hårdvara => översätt till VHDL 14 7

En multiplexer entity mux is port( d: in std_logic_vector(0 to 3); s: in std_logic_vector (1 downto 0); y: out std_logic); end entity mux; d(0) d(1) d(2) d(3) y s(1) s(0) 15 Multiplexern, forts architecture booleq of mux is signal noll,ett,tva,tre: std_logic; noll <= not s(1) and not s(0) and d(0); ett <= not s(1) and s(0) and d(1); tva <= s(1) and not s(0) and d(2); tre <= s(1) and s(0) and d(3); y <= noll or ett or tva or tre; end architecture booleq; d(0) d(1) d(2) d(3) & & & & noll >=1 s(1) s(0) 16 8

Multiplexern, forts VHDL har en sats som precis motsvarar en mux: architecture behavior1 of mux is with s select y <= d(0) when 00, d(1) when 01, d(2) when 10, d(3) when others; end architecture behavior1; Lägg märke till: det finns enn <= i satsen. enn rad är sann 17 with-select-when Är en parallell sats, concurrent statement Endast utanför process with (styrsignal) select (utsignal) <= (uttryck 1) when (signalvärde 1), (uttryck 2) when (signalvärde 2),... (uttryck n-1) when (signalvärde n-1), (uttryck n) when others; OBS: samtliga värden på styrsignal måste täckas! 18 9

Multiplexern, forts architecture behavior2 of mux is y <= d(0) when s = 00 else d(1) when s = 01 else d(2) when s = 10 else d(3); end architecture behavior2; 19 when-else Är en parallell sats, concurrent statement Endast utanför process (signal) <= (Signal1) when (Villkor1) else (S 2 ) when (V 2 ) else... (S N-1 ) when (V N-1 ) else (S N ); Lägg märke till: det finns enn <= i satsen. noll eller flera villkor är sanna = 1 + S 2 V 1 V 2 + 20 10

Kommentar: Både with-select-when och when-else kan uttrycka vilken Boolesk funktion (K-nät) som helst! signal x: std_logic_vector(2 downto 0); signal u: std_logic; -- man kan skriva så här with x select u <= 1 when 011, 1 when 101, 1 when 110, 1 when 111, 0 when others; x[0] x[1] x[2] >= 2 u -- eller så här u <= 1 when x=3 else 1 when x>4 else 0 ; -- eller 21 Exempel: BCD -> 7-segment 0 x u bcd 4 7 5 4 6 1 2 3 x u 0000 0111111 0001 0000110...... 22 11

Exempel: BCD -> 7-segment entity bcd is port ( x : in std_logic_vector(3 downto 0); u : out std_logic_vector(6 downto 0)); end bcd; architecture sanningstabell of bcd is with x select u <= "0111111" when "0000", "0000110" when "0001", "1011011" when "0010", "1001111" when "0011", "1100110" when "0100", "1101101" when "0101", "1111100" when "0110", "0000111" when "0111", "1111111" when "1000", "1100111" when "1001", "1111001" when others; end sanningstabell; 23 Vad har vi så långt? entity beskriver gränssnittet architecture beskriver innehållet Mellan och end har vi parallella satser. vanlig signaltilldelning c <= a and b; with-select-when är en mux. when-else är en generaliserad mux. Ovanstående används för kombinatorik utanför process-satsen 24 12

Vad kommer nu? VHDL för sekvensnät, process-satsen case-when if-then-else Endast inuti process-sats! 25 Sekvensnät en D-vippa entity de is port(d,clk: in STD_LOGIC; q: out STD_LOGIC); end de; architecture d_vippa of de is if rising_edge(clk) then q <= d; end d_vippa; Processen exekveras när clk ändras sensitivity list q uppdateras på positiv clk-flank I en -sats gäller (med rising_edge(clk)) 26 => alla VL får en vippa på sig! 13

Vad blir detta? if rising_edge(clk) then y <= x; z <= y; Låt y=0, z=0. Sätt x=1 och klocka en gång. Då blir väl z=y=1? 27 Så här blir det! Inuti klockad process x y z y <= x; z <= y; y + = x; z + = y; y = y+; z = z+; 28 14

Simulering Så här är det: (eller så här gör ModelSim): 1) Evaluera nästa värde sekvensiellt y + = x z + = y 2) Uppdatera parallellt y = y + z = z + Det finns de som säger: Koden inom processen exekveras sekvensiellt! Akta er för dem! if rising_edge(clk) then y <= x; z <= y; 29 x Till slut if rising_edge(clk) then y <= x; z <= y; z <= not y; Är faktiskt OK! Men skriv inte så! y z -- 1 if rising_edge(clk) then y <= x; -- 2 if rising_edge(clk) then z <= y; -- 3 if rising_edge(clk) then z <= not y; 2 och 3 ihop går inte! 30 15

Ett exempel if rising_edge(clk) then y <= x; if (y= 1 ) then z <= 1 ; else z <= 0 ; if rising_edge(clk) then y <= x; z <= 1 when (y= 1 ) else 0 ; Ger båda samma funktion för z? Nej, z till vänster kommer en klockpuls senare än z till höger. 31 Ett annat exempel Bygg ett sekvensnät, som ger utsignalen 1 när insignalen varit 1 i minst tre klockcykler i rad. 1(0) 1(0) 00 0(0) 01 11 0(0) 0(0) 1(1) 10 0(0) 1(1) 32 16

x d q+ D l u q Sekvensnät - Mealy clk entity sn is port(x,clk: in std_logic; u: out std_logic); end sn; architecture booleq2 of sn is signal q: std_logic_vector(1 downto 0); -- delta: nästa-tillstånd -- lambda: utsignal end booleq2; 33 case-when Endast inuti process Måste beskriva vad som händer för alla värden på styrsignal motsvarar with-select-when, men är kraftfullare case (styrsignal) is when (värde 1) => (sats 1); when (värde 2) => (sats 2);... when (värde n-1) => (sats n-1); when others => (sats n); end case; 34 17

if-then-else if (uttryck 1) then (sats 1) elsif (uttryck 2) then (sats 2) elsif (uttryck n-1) then (sats n-1) else (sats n) Endast inuti process motsvarar when-else, men är kraftfullare 35 Vi slår ihop d-nätet och tillståndsvipporna 1(0) 1(0) 1(1) 00 0(0) 01 11 0(0) 0(0) 10 0(0) 1(1) x d q+ D l u q clk 36 18

d-nätet och tillståndsvipporna -- delta: nästa-tillstånd if rising_edge(clk)then case q is when 00 => if x= 1 then q <= 01 ; else q <= 00 ; when 01 => if x= 1 then q <= 11 ; else q <= 00 ; when 11 => if x= 1 then q <= 10 ; else q <= 00 ; when 10 => if x= 1 then q <= 10 ; else q <= 00 ; when others => q <= 00 ; end case; 37 l-ekvationerna ska vara kombinatorik 1(0) 1(0) 00 0(0) 01 11 0(0) 0(0) 1(1) 10 0(0) 1(1) x d q+ D l u q clk 38 19

K-nät utanför processen l-ekvationen u <= 1 when q= 11 and x= 1 else 1 when q= 10 and x= 1 else 0 ; eller optimerat (fixas av syntesverktyget): u <= x and q(1); Kommentar: and funkar alltså på typerna std_logic och boolean 39 entity sn is port(x,clk: in std_logic; u: out std_logic); end sn; architecture booleq2 of sn is signal q: std_logic_vector(1 downto 0); -- delta if rising_edge(clk) case q is when 00 => if x= 1 then q <= 01 ; when 01 => if x= 1 then q <= 11 ; else q <= 00 ; when 11 => if x= 1 then q <= 10 ; else q <= 00 ; when 10 => if x= 0 then q <= 00 ; when others => q <= 00 ; end case; Komplett kod -- lambda u <= x and q(1); end booleq2; 40 20

Mera om VHDL Mealy, Tappero: Free Range VHDL, freerangefactory.org Kevin Skahill: VHDL for programmable logic, Addison-Wesley 41 21