Programable Logic Devices



Relevanta dokument
Digital Design IE1204

Digital Design IE1204

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

VHDL 1. Programmerbara kretsar

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

Flaskautomaten Ett design-exempel av Ingo Sander

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

DESIGN AV SEKVENTIELL LOGIK

std_logic & std_logic_vector

VHDL och laborationer i digitalteknik

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

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

Konstruktionsmetodik för sekvenskretsar

Digital Design IE1204

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

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

L15 Introduktion modern digital design

Konstruktion av digitala system - VHDL

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

Digital Design IE1204

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

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

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

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

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

Digitala elektroniksystem

Programmerbar logik och VHDL. Föreläsning 1

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

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

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

DIGITALTEKNIK. Laboration D172

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

IE1205 Digital Design: F9: Synkrona tillståndsautomater

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

Digitala projekt Elektro- och informationsteknik

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

Digital elektronik CL0090

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

Sekvensnät. William Sandqvist

Tillståndsmaskiner. 1 Konvertering mellan Mealy och Moore. Ola Dahl och Mattias Krysander Linköpings tekniska högskola, ISY, Datorteknik

KOMBINATORISKA FUNKTIONER...1

Programmerbar logik och VHDL. Föreläsning 4

F5 Introduktion till digitalteknik

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

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

Flödesschema som visar hur man använder Quartus II.

LAB VHDL-programmering

LABORATIONSINSTRUKTION

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

LABORATIONSINSTRUKTION LABORATION

Datorkonstruktion. Datorkonstruktion 2018, 8hp

Sekvensnät Som Du kommer ihåg

VHDL2. Sekvensnätsexemplet

Tenta i Digitalteknik

Du ska nu skapa ett litet program som skriver ut Hello World.

Kapitel 7 Systemexempel (forts.)

Digital Design IE1204

VHDL2. Sekvensnätsexemplet

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

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

IE1204/IE1205 Digital Design

VHDL3. Angående buffer

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

Laboration VHDL introduktion

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

Läsminne Read Only Memory ROM

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

Digitalteknik syntes Arne Linde 2012

Träning i bevisföring

Programmera en NXT Robot

Digitalteknik syntes. Digitalteknik syntes Arne Linde 2012

Digital elektronik CL0090

Elektroteknik. Projektspecifikation för IR-sändare, digitalteknik 2005

F1: Introduktion Digitalkonstruktion II, 4p. Digital IC konstruktion. Integrerad krets. System. Algorithm - Architecture. Arithmetic X 2.

LABORATION TSEA22 DIGITALTEKNIK D

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

Programmerbar logik. Kapitel 4

Tenta i Digitalteknik

Transistorn en omkopplare utan rörliga delar

F5 Introduktion till digitalteknik

Att koda en magnetremsa i plastkortskrivare med inbyggd magnetkodare.

TSEA22 Digitalteknik 2019!

Tenta i Digitalteknik

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Digitalteknik F14. Programmerbara logikkretsar. Digitalteknik F14 bild 1

Digitalteknik: CoolRunner-II CPLD Starter Kit

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

KALKYLATOR LABORATION4. Laborationens syfte

Översikt, kursinnehåll

Tentamen IE1204 Digital Design Måndag 15/

Distribuerade Informationssystem VT-04

Tenta i Digitalteknik

Introduktion till syntesverktyget Altera Max+PlusII

Digital Design IE1204

IE1205 Digital Design: F3 : CMOS-kretsen, Implementeringsteknologier. Fredrik Jonsson KTH/ICT/ES

Digitalteknik: CoolRunner-II CPLD Starter Kit Med kommentarer för kursen ht 2012

Transkript:

Programable Logic Devices Under 1970-talet introducerades programmerbara logiska kretsar som betecknas programmable logic device (PLD) De bygger på en struktur med en AND-ORmatris som gör det enkelt att implementera SOP-uttryck

PLD struktur x 1 x 2 x n Input buffers and inverters x 1 x 1 x n x n P 1 AND plane P k OR plane f 1 f m

Programmable Logic Array (PLA) x 1 x 2 x 3 Både AND- och ORmatriserna är programmeringsbara P 1 OR plane P 2 P 3 P 4 AND plane f f

Programmable Array Logic (PAL) x 1 x 2 x 3 Bara AND matrisen är programmeringsbar P 1 P 2 f 1 P 3 P 4 f 2 AND plane

Registerutgångar I de tidigare PLD-kretasarna fanns det kombinatoriska utgångar registerutgångar (utgångar med en vippa) För varje krets fanns det ett fast antal kombinatoriska och registerutgångar För att öka flexibiliteten introducerade man makrocellen där man kunde välja om en utgång skulle vara en kombinatorisk eller en registerutgång

Makroceller i en PLD Select Enable Flip-flop f 1 Clock D Q Med en programmerbar multiplexer kan man välja typen av utgången To AND plane

PAL

Programmering av PLD:er

Komplexa PLD:er (CPLD) PLD:erna var ganska små ( PALCE 22V10 hade 10 vippor) För att skapa större programmerbara kretsar utvecklade man en struktur bestående av flera PLD-liknande block

CPLD (MAX)

CPLD struktur I/O block PAL-like block PAL-like block I/O block Interconnection wires I/O block PAL-like block PAL-like block I/O block

Programmering med JTAG Moderna CPLD:er (och FPGA:er) kan programmeras genom att ladda ned kretsbekrivningen (programmeringsinformationen) via en kabel Nedladdningen använder oftast en standardiserad port: JTAG-porten

JTAG programmering (a) CPLD in a Quad Flat Pack (QFP) package To computer Man kan programmera chippen när de är fastlödda på kretskortet innifrån programmeraren kan man välja ut vilket chip man vill programmera från JTAGkontakten. Printed circuit board (b) JTAG programming

FPGA kretsar CPLD:er baseras på AND-OR-matrisen och det blir svårt att göra riktigt stora kretsar FPGA (Field Programmable Gate Array) kretsarna använder en annan koncept som baseras på logiska block

FPGA-struktur

LUT-LookUp-Table Programmable cells 0/1 0/1 0/1 1 0 1 1 0 f A LUT with n inputs can realize all combinational functions with n inputs. The usual size in an FPGA is n=4 0/1 0 x 2 x 1 Two-input LUT

Ex. LUT för XOR-grind x2 x1 f 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 0 f 0 0 0 0 0 x 2 x 1 Two-input LUT

Logiskt block i FPGA Ett logiskt block i en FPGA består av en LUT, en vippa, och en mux för val av registerutgång. Select In 1 Flip-flop Out In 2 LUT D Q In 3 Clock

Förbindelsematris i FPGA x 3 f Blå kryss: Förbindelsen är programmerad Svart kryss: Förbindelsen är inte programmerad x 1 x 2 x 1 x 2 0 0 0 1 x 2 0 f 1 1 f x 0 2 3 0 f 1 f 2 0 1 1 1 f

DE2 University Board Cyclone II EP2C35 FPGA Datorteknikkursen

Cyclone II logic element

Cyclone II Family (3) Total Number of 18x18 Multipliers DE2

Stratix III Family DE3 Board

Flera processorer på en FPGA Nios II är en så kallad soft-processor (32-bit) som kan implementeras på Altera FPGA-kretsen Dagens FPGA-kretsar är så stora att flera processorer får plats på en enda FPGA-krets Nios II Nios II Mycket kraftfulla multiprocessor system kan skapas på en FPGA!

ASIC En ASIC (Application Specific Integrated Circuit) är en krets som görs i en halvledarfabrik I en full custom integrerad krets skräddarsyr man i princip hela kretsen I en ASIC har vissa arbetssteg redan gjorts för att minska design-tiden och kostnaden

ASIC, gate array I en Gate Array finns redan grindarna (eller transistorerna) på kiseln

ASIC, gate array f 1 Man skapar bara förbindelserna mellan ingångarna, grindarna, och utgångarna x 1 x 2 x 3

Jämförelser ASIC, FPGA Initial Cost Cost per part Performance Fabrication Time FPGA Low High Low Short Gate Array (ASIC) Standard Cell (ASIC) High Low High Long

Design Trade-Offs Design Time Full Custom Standard Cell Gate Array Programmable Logic Microprocessor Performance

Sekvenskretsar med VHDL Tillstånd (State) Ingångssignaler Nästa tillstånd (NEXT STATE DECODER) Tillståndsregister (STATE REGISTER) Utgångsavkodare (OUTPUT DECODER) Utgångssignaler Clk Moore-automat

Modellera Statemachine i VHDL I en Moore-automat har vi tre block Nästa-tillståndsavkodare Utgångsavkodare Tillståndsregister Dessa block exekverars parallellt

Snabbfråga

Snabbfråga

Snabbfråga

Snabbfråga

Processer i VHDL En architecture i VHDL kan innehåller flera processer Processer exekveras parallelt En process är skriven som ett sekvensiellt program

Moore-automatens processer För en Moore-automat kan vi skapa tre processer för Nästa-tillståndsavkodare Utgångsavkodare Tillståndsregister

Interna signaler Moore-automaten innehåller interna signaler för Nästa tillstånd Nuvarande tillstånd Dessa signaler deklareras i architecture-beskrivningen

Flaskautomaten i VHDL Vi använder flaskautomaten (systemstyrningen) från förra föreläsningen som konkret VHDLexempel Myntinkast (COIN RECEIVER) ACCUMU- LATOR COIN_PRESENT GT_1_EURO EQ_1_EURO LT_1_EURO DEC_ACC CLR_ACC Systemstyrning (SYSTEM CONTROL) DROP DROP_READY RETURN_10_CENT CHANGER_READY Flaskutkast (DROP BOTTLE) Myntutkast (COIN RETURN)

COIN_PRESENT GT_1_EURO EQ_1_EURO LT_1_EURO DEC_ACC CLR_ACC Reset_n Clk Flaskautomatens entity Systemstyrning (SYSTEM CONTROL) DROP Det behövs även Clk och Reset ( aktiv låg ) DROP_READY RETURN_10_CENT CHANGER_READY ENTITY Vending_Machine IS PORT ( -- Inputs coin_present gt_1_euro eq_1_euro lt_1_euro drop_ready : IN std_logic; : IN std_logic; : IN std_logic; : IN std_logic; : IN std_logic; changer_ready : IN std_logic; reset_n clk -- Outputs dec_acc clr_acc drop : IN std_logic; : IN std_logic; : OUT std_logic; : OUT std_logic; : OUT std_logic; return_10_cent : OUT std_logic); END Vending_Machine;

Flaskautomatens architecture Arkitekturen beskriver funktionen av automaten Vi definierar interna signaler för nuvarande och nästa tillstånd tre processer för nästa-tillstånds-, utgångs-avkodare och tillståndsregister

Tillståndsdiagram (a) Vänta på myntinkast (b) Registrering av myntinkast (c) Myntinkast är registrerat (3 fall) (d) Flaskutmatning (e) Nollställ summan (f) Retur 10 Cent (g) Minska summan med 10 Cent

Interna signaler Vi måste skapa en datatyp för den interna signalen Eftersom vi beskriver tillstånden använder vi en uppräkningstyp med värdena a,b,c,d,e,f,g Vi deklarerar en variabel för nuvarande tillstånd (current_state) och en för nästa tillstånd (next_state) ARCHITECTURE Moore_FSM OF Vending_Machine IS TYPE state_type IS (a, b, c, d, e, f, g); SIGNAL current_state, next_state : state_type; BEGIN -- Moore_FSM

Vi vill behålla vår fiffiga tillståndskod Om vi inte specificerar tillståndskodningen så väljer syntesverktyget kodningen Vi kan tvinga den till en viss kodning med attributer (OBS! Attributer är beroende på syntesverktyget och därmed inte portabel!) ARCHITECTURE Moore_FSM OF Vending_Machine IS TYPE state_type IS (a, b, c, d, e, f, g); -- We can use state encoding according to BV 8.4.6 -- to enforce a particular encoding (for Quartus) ATTRIBUTE enum_encoding : string; ATTRIBUTE enum_encoding OF state_type : TYPE IS "000 001 011 110 111 100 101"; SIGNAL current_state, next_state BEGIN -- Moore_FSM : state_type;

COIN_PRESENT LT_I_EURO EQ_I_EURO GT_I_EURO DROP_READY CHANGER_READY Blockschema Next State Decoder D A Clk D B Clk D D A B Output Decoder DROP RETURN_I0_CENT CLR_ACC A B D C D C DEC_ACC C Clk Signalerna A,B,C beskriver nuvarande tillstånd Signalerna D A, D B, D C beskriver nästa tillstånd

Snabbfråga

Snabbfråga

Next-State-Decoder Next-State-Decoder beskrivs som process Sensitivity list innehåller alla insignaler som aktiverar processen

Next-State-Decoder I vanliga fall innehåller sensitivity listan alla ingångar till processen NEXTSTATE : PROCESS (current_state, coin_present, gt_1_euro, eq_1_euro, lt_1_euro, drop_ready, changer_ready) - Sensitivity List BEGIN -- PROCESS NEXT_STATE

Next-State-Decoder Vi använder nu en CASE-sats för att beskriva för varje tillstånd villkoren för tillståndsändring till nästa tillstånd CASE current_state IS WHEN a => IF coin_present = '1' THEN next_state <= b; ELSE next_state <= a; END IF; WHEN b => IF coin_present = '0' THEN next_state <= c; ELSE next_state <= b; END IF;

Next-State-Decoder Vi kan förenkla beskrivningen genom att ange ett default-värde för nästa tillstånd next_state <= current_state; CASE current_state IS WHEN a => IF coin_present = '1' THEN next_state <= b; END IF; WHEN b => IF coin_present = '0' THEN next_state <= c; END IF; Det är viktigt att vi anger alla alternativ för next_state signalen. Annars får vi implicit en sats next_state <= next_state som genererar en latch.

Next-State-Decoder Vi avsluta CASE-satsen med en WHEN OTHERS sats. Här anger vi att vi ska gå till tillstånd a om vi hamnar i ett ospecificierat tillstånd WHEN g => next_state <= c; WHEN OTHERS => next_state <= a; END CASE; END PROCESS NEXTSTATE;

Utgångsavkodaren Utgångsavkodaren beskrivs som en egen process Sensitivity-listan innehåller bara nuvarande tillstånd eftersom utgångarna bara är beroende av tillståndet

Utgångsavkodaren OUTPUT : PROCESS (current_state) BEGIN -- PROCESS OUTPUT drop <= '0'; clr_acc <= '0'; dec_acc <= '0'; return_10_cent <= '0'; CASE current_state IS WHEN d => drop <= '1'; WHEN e => clr_acc <= '1'; WHEN f => return_10_cent <= '1'; WHEN g => dec_acc <= '1'; WHEN OTHERS => NULL; END CASE; END PROCESS OUTPUT;

Tillståndsregistret Tillståndsregistret modelleras som en synkron process med asynkron reset (aktiv låg) CLOCK : PROCESS (clk, reset_n) BEGIN -- PROCESS CLOCK IF reset_n = '0' THEN -- asynchronous reset (active low) current_state <= a; ELSIF clk'event AND clk = '1' THEN -- rising clock edge current_state <= next_state; END IF; END PROCESS CLOCK;

Mealy-automat? En Mealy-automat kan modelleras på samma sätt som Moore-automaten Skillnaden är att utgångsavkodaren också är beroende av insignalerna Processen som modellerar utgångssignalerna behöver också ha insignalerna i sin sensitivity list!

Mer om VHDL Kodexemplet för flaskautomaten finns på kurshemsidan Titta på studiematerialet om VHDLsyntes på kurshemsidan Både Brown/Vranesic- och Hemert-boken innehåller kodexempel