L15 Introduktion modern digital design
Upplägg LP2 F15 Introduktion till modern digital design F16 Kombinatoriska nät i VHDL F17 Sekvensnät i VHDL F18 Gästföreläsning (Advenica, fortsättningskurser) F19 Konstruktion av datorsystem Labb 4 Stopp Watch 1 labbtillfälle Labb 5 Microprocessor (datorsystem) 2 labbtillfällen
Tidigare i LP1 Tillståndsdiagram Tillståndskodning Tabeller Karnaugh-diagram Booleska funktioner Diskreta komponenter Ledningar
och resultatet Tidskrävande Ibland fungerade det inte Fel i tabeller Fel i Karnaugh-diagram Felkopplat Intel core i7 ~500 000 000 grindar Vi behöver andra verktyg för att konstruera mer komplexa (större) kretsar
Abstraktionsnivåer Hög abstraktionsnivå System Moduler Grindar Transistorer Låg abstraktionsnivå
System-nivå Mål: Uppdelning av systemet i mindre delsystem Gränssnitt och kommunikation mellan delsystem Byggblock Processorer Minnen Moduler Intellectual properties (IP) Hög abstraktionsnivå Få detaljer om hur blocken är uppbyggda
Modul-nivå Mål: Beskriva hur och när information/data förflyttas mellan moduler Byggblock Adderare Komparator Register (parallellkopplade D-vippor) Moduler konstruerade av enkla grindar och D-vippor Abstrakta signaler: heltal, tillstånd, databussar Kallas även Register-Transfer level (RT-level)
Exempel Konstruktion på modul-nivå Konstruera en modulo-6 räknare enligt specifikation till höger med hjälp av komponenter nedan r 2 r 2 Beteende 0 0 Nollställ 0 1 +2 1 0 +3 1 1 +1 3-bit Multiplexer 3-bit Adder 3-bit Register Nollställs om CLR=0
Grind-nivå Mål: Realisera moduler Byggblock Grindar (AND, NOT, etc) D-vippor Digitala signaler Samband mellan in- och utsignaler beskrivs med Booleska ekvationer Race conditions Optimering (carry-look-a-head, )
Transistor-nivå Mål: Realisera grindar och D-vippor Låg abstraktionsnivån Byggblock Transistorer Resistorer Kondensatorer etc. Analogt system Kontinuerliga signaler Mycket detaljerad beskrivning
Olika sätt att betrakta ett system på Funktion Addera A och B, spara resultat i C Struktur ALU 8-bit int Minne Fysiskt utseende
Funktion Fokus på att beskriva sambandet mellan in-och utsignaler Systemet betraktas som en svart låda Den interna implementeringen är ointressant 16 siffrig knappsats 4 siffrig kod Lås upp om koden är Öppna/Lås 1234 Motorstyrt dörrlås
Struktur Beskriver systemets interna uppbyggnad Exempelvis ett kretsschema Vilka komponenter består systemet av Hur är olika komponenter ihopkopplade 16 siffrig knappsats Knappsatsavkodare Komparator Drivkrets för motor Kodminne
Fysiska utseende Beskriver systemets fysiska karaktäristik Fysisk storlek för komponenter Fysisk placering av komponenter Hur är den anslutningen mellan komponenter utformad Ger en mer detaljerad beskrivning av systemet
Översikt abstraktionsnivåer Funktion System spec. Struktur Algoritmer Tillsåndsmasnkin Booleska ekv Subsystem Adderare Grindar Transistorer Transistorer-layout Grind-layout Fysiskt utseende Tillverknings spec.
Design flöde under labbar System spec. Om ett lejon går ut från buren ska lampan fara tändas Funktion Struktur Fysiskt utseende
Design flöde Specifikation Funktion Fysisk utformning Syntes Gå från hög till låg abstraktionsnivå Fysik design Hur ska komponenter placeras Energiförsörjning. Verifikation Testning
Specifikation Om ett lejon går ut från buren ska lampan fara tändas Vad ska kretsen göra Hur snabbt den utföra det Finns det begränsningar på den fysiska storleken Energiförbrukning
Syntes Görs vanligtvis stegvis Högnivå-syntes Modul-nivå-syntes Grind-nivå-syntes Syntes för underliggande hårdvara Ex. CMOS Mer detaljerad beskrivning
Verifikation och testning Verifikation Uppfyller systemet specifikationen? Funktionalitet och prestanda Görs efter varje syntes Testning Fungerar slutprodukten som det är tänkt? Fysiska defekter kan uppstå vid tillverkning
Fysisk design Beroende av vilken teknologi som används Konfigurerbar logik LP2 Processorer (mjukvara C, C++) Datorteknik Digital-Signal-Processor (DSP) mjukvara C, C++ Application-Specific-IC (ASIC) logik på kisel
Application-Specific-IC ASIC Kretsens fysiska utformning bestäms vid tillverkning och kan inte ändras. Full-custom ASIC Standard-cell ASIC Gate array ASIC
Konfigurerbara kretsar Kretsens fysiska utformning kan i viss grad bestämmas av användaren PLD Programmable Logic Device CPLD Complex Programmable Logic Device FPGA Field Programmable Gate Array
Programmable-Logic Device (PLD) Programmerbar anslutning
FPGA Anslutningar till omvärlden Konfigurerbara logikblock Anslutning mellan ledningar och block konfigureras
FPGA - Logikblock A B C Q 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 LUT LUT D D Konfigurerbar Lock-Up-Table (LUT)
Nexys 4 - FPGA development board
ARTIX7 (FPGA) 800 000 Lejonburar 126 800 D-vippor Eng. Flip-Flip (FF)
Jämförelse av teknologier Energiförbrukning Flexibilitet Prestanda Flexibilitet Kostnad Flexibilitet
Electronic-Design-Automation (EDA) Kan utföra vissa designsteg Syntes Fysisk design Algoritmer för att optimera designen Kan INTE omvandla en dålig design till en bra! I den här kursen använder vi Vivado från tillverkaren Xilinx
Vivado Källfiler som beskriver systemet Designflöde Spec
Simulering/verifiering i Vivado Testbench A= 1 B= 0 Wait 10ms; A= 0 Insignaler Design Interna signaler Utsignaler
Hadware-Decriptive-Language (HDL) Används för att beskriva kretsar In- och utsignaler Parallella operationer Anslutningar mellan block Beskriva beteende och struktur hos en krets Verilog SystemVerilog VHDL SystemC... Vi kommer att använda VHDL i denna kurs
VHDL Very high speed integrated circuit HDL Utvecklades av US Department of Defencse under 1980-talet Syftet var att standardisera dokumentation av hårdvara Senare utvecklades verktyg för att simulera och utföra syntes Endast en delmängd av VHDL kan användas för syntes
Vanlig programmering vs. HDL:s Källkod Källkod Här slutar likheterna! Kompilator Syntes Maskinkod Hårdvara
VHDL Struktur av källfil Library Entity Architecture Bibliotek som används i källfilen Beskrivning av kretsens utseende Beskrivning av kretsens funktion och uppbyggnad library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity circuit1 is.... end circuit1; architecture behav of circuit1 is.... begin.... end behav; I VHDL gös ingen skillnad på stora och små bokstäver
VHDL - Entity Likt symbolen för en komponent Kretsens yttre utseende Vad heter kretsen Vilka insignaler har den Vilka utsignaler har den
VHDL - Entity Kretsnamn bestäms av utvecklaren G1 G2 clock lejonbur FARA entity lejonbur is port ( G1 : in STD_LOGIC; G2 : in STD_LOGIC; FARA : out STD_LOGIC; ); end lejonbur; clock : in STD_LOGIC Regler: Börjar med en bokstav A-Z Får innehålla A-Z, 0-9 och _ Max ett _ i rad Får inte sluta med _ God praxis: Källfilen har samma namn som kretsen Ex: Kretsnamn: lejonbur Filnamn: lejonbur.vhd
VHDL - Entity Namn på in- och utsignaler G1 G2 clock lejonbur FARA entity lejonbur is port ( G1 : in STD_LOGIC; G2 : in STD_LOGIC; FARA : out STD_LOGIC; ); end lejonbur; clock : in STD_LOGIC Regler: Börjar med en bokstav A-Z Får innehålla A-Z, 0-9 och _ Max ett _ i rad Får inte sluta med _ God praxis: Använd meningsfulla namn Ex. clk_100mhz, clk_50mhz istället för clk1, clk2
VHDL - Entity Signalens riktning sett inifrån kretsen in eller out entity lejonbur is port ( G1 : in STD_LOGIC; G2 : in STD_LOGIC; FARA : out STD_LOGIC; ); end lejonbur; clock : in STD_LOGIC G1 G2 clock lejonbur Insignaler är read-only inne i kretsen Utsignaler är write-only inne i kretsen Signaltyp STD_LOGIC STD_LOGIC_VECTOR FARA
VHDL Några signaltyper Några typer i VHDL BIT : kan anta värdena 0 och 1 STD_LOGIC : kan anta 0, 1 och 7 andra värden STD_LOGIC_VECTOR : vektor av STD_LOGIC Varför ska vi använda STD_LOGIC istället för BIT?
Signalvärden Värdena 1 och 0 räcker inte för att beskriva verkliga ledningar Logisk 1 Logisk 0 Okänt (kortslutning) Inget värde Med signaltypen STD_LOGIC kan vi modellera alla dessa fall
STD_LOGIC Signaltyp som modellerar verkliga signaler/lednignar 9 olika värden, vi använder 5 av dessa 1 : logisk 1 0 : logisk 0 X : okänt U : inget värde - : dont-care Syntes verktyget kommer inte att tillåta att en signal antar värdet X eller U då detta kan förstöra FPGA:n
Signalvärden vid simulering Klocksignal sig1= 1 sig4 inget värde sig3 kortsluten
VHDL - Architecture Beskriver hur kretsen fungerar Kretsens interna struktur Kretsens beteende Kan beskrivas på olika abstraktionsnivåer Samma funktion kan beskrivas på olika sätt
VHDL - Architecture Arkitekturens namn bestäms av utvecklaren Vilken krets (entity) den tillhör architecture behav of lejonbur is begin FARA <= G1 and G2; end behav;