VHDL En kjapp introduksjon VHDL. Oversikt. VHDL versus C(++)/Java

Like dokumenter
Synkron logikk. Sekvensiell logikk; to typer:

Kombinatorisk og synkron logikk. Kapittel 4

INF3430. VHDL byggeblokker og testbenker forts.

INF3430/4430. Kombinatoriske og sekvensielle byggeblokker implementert i VHDL :57

INF3430/4431. VHDL byggeblokker og testbenker

INF3430/4431. VHDL byggeblokker og testbenker forts.

Repetisjon digital-teknikk. teknikk,, INF2270

INF3430. VHDL byggeblokker og testbenker

Tilstandsmaskiner (FSM) Kapittel 5

UNIVERSITETET I OSLO

INF2270. Sekvensiell Logikk

Forelesning 7. Tilstandsmaskin

VLSI (Very-Large-Scale-Integrated- Circuits) it Mer enn porter på samme. LSI (Large-Scale-Integrated-Circuits)

IN1020. Sekvensiell Logikk

INF3430/4431. VHDL byggeblokker og testbenker forts.

Entities and architectures. Kapittel 3

Høgskolen i Sør-Trøndelag Avdeling for teknologi

INF1400. Tilstandsmaskin

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and. ! Kort repetisjon fra forrige gang

Forelesning 6. Sekvensiell logikk

Kapittel 5 Tilstandsmaskin

Dagens temaer. Dagens temaer er hentet fra P&P kapittel 3. Motivet for å bruke binær representasjon. Boolsk algebra: Definisjoner og regler

INF1400. Sekvensiell logikk del 1

INF3430/4430. Grunnleggende VHDL. 11-Sep-06

INF1400. Sekvensiell logikk del 1

INF1400. Tilstandsmaskin

Løsningsforslag INF1400 H04

INF3340/4340. Synkrone design Tilstandsmaskiner

UNIVERSITETET I OSLO

Store design. Kapittel 6

INF3340. Tilstandsmaskiner

Dagens temaer. temaer hentes fra kapittel 3 i Computer Organisation. av sekvensielle kretser. and Architecture. Tilstandsdiagram.

INF3430/4430. Grunnleggende VHDL

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er

INF3340/4431. Tilstandsmaskiner

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

En mengde andre typer som DVD, CD, FPGA, Flash, (E)PROM etc. (Kommer. Hukommelse finnes i mange varianter avhengig av hva de skal brukes til:

TELE2010A Digital Systemkonstruksjon

Dagens temaer. Sekvensiell logikk: Kretser med minne. D-flipflop: Forbedring av RS-latch

Fys 3270/4270 høsten Laboppgave 2: Grunnleggende VHDL programmering. Styring av testkortets IO enheter.

Repetisjon. Sentrale temaer i kurset som er relevante for eksamen (Eksamen kan inneholde stoff som ikke er nevnt her)

Agenda Funksjoner og prosedyrer. Funksjoner

LØSNINGSFORSLAG 2006

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

Dagens tema. Dagens tema hentes fra kapittel 3 i Computer Organisation and Architecture. Sekvensiell logikk. Flip-flop er. Tellere og registre

UNIVERSITETET I OSLO

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

HØGSKOLEN I SØR-TRØNDELAG Avdeling for teknologi

Dagens temaer. Dagens temaer hentes fra kapittel 3 i Computer Organisation and Architecture. Kort repetisjon fra forrige gang. Kombinatorisk logikk

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

UNIVERSITETET I OSLO

INF 3430/4431. Simuleringsmetodikk

INF1400. Karnaughdiagram

Forelesning 9. Registre, tellere og minne

INF1400 Kap4rest Kombinatorisk Logikk

INF3430/4431 Høsten Laboppgave 2 VHDL-programmering Funksjoner og prosedyrer/bibliotek Styring av sjusegmenter

INF 3430/4430. Simuleringsmetodikk

INF 3430/4430. Simuleringsmetodikk

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Oppgave 1 (Flanke- og nivåstyrte vipper)

INF 3430/4430. Viktige momenter i syntese og for valg av teknologi

Øving 7: Løsningsforslag (frivillig)

Oppsummering digital-teknikk, teknikk, INF2270

SIE 4005, 8/10 (3. Forelesn.)

Oppgave 1 En 4-input Xilinx LUT med innhold 9009 (hex) realiserer en: A xor-xor-or B xor-xor-nand C xor-xor-nor D xor-xor-and E xor-xor-xor

INF3430. Fasit eksamen Høst Oppgave 1 6. Oppgave A B C D E 1 X X 2 X 3 X X 4 X X 5 X X 6 X

UNIVERSITETET I OSLO

Låsekretser (latch er) SR latch bygget med NOR S R latch bygget med NAND D latch. Master-slave D flip-flop JK flip-flop T flip-flop

Oppsummering av digitalteknikkdelen

Digitalstyring sammendrag

Forelesning 5. Diverse komponenter/større system

SIE 4005, 9/10 (4. Forelesn.)

PENSUM INF1400 H11. Joakim Myrvoll Johansen. Digital Design, M. Morris Mano, 4th edition

7. Hvilket alternativ (A, B eller C) representerer hexadesimaltallet B737 (16) på oktal form?

TFE4101 Krets- og Digitalteknikk Høst 2016

INF1400. Digital teknologi. Joakim Myrvoll 2014

Hva gikk vi gjennom forrige uke? Omid Mirmotahari 3

IN1020. Logiske porter om forenkling til ALU

5 E, B (16) , 1011 (2) Danner grupper a' fire bit , (2) Danner grupper a' tre bit 1 3 6, 5 4 (8)

SIE 4005, 2/10 (2. Forelesn.)

Datamaskiner og operativsystemer =>Datamaskinorganisering og arkitektur

INF2270. Boolsk Algebra og kombinatorisk logikk

- - I Aile trykte og skrevne. samt kalkulator

Løsningsforslag til eksamen i INF2270

Design med ASIC og FPGA (Max kap.7 og 18)

ITPE2400/DATS2400: Datamaskinarkitektur

Design med ASIC og FPGA (Max kap.7 og 18)

Ferdighetsmål: Kunne forenkle boolske uttrykk Kunne implementere flerinputs-porter med bare 2-inputs porter

Notater: INF2270. Veronika Heimsbakk 10. juni 2014

MAX MIN RESET. 7 Data Inn Data Ut. Load

F4 IN HDL. Yngve Hafting,

Oppgave 1 JK-flip-flop (Total vekt 20%)

Del 4 Noen spesielle C-elementer

Avdeling for ingeniørutdanning Institutt for teknologi

Del 1 En oversikt over C-programmering

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

INF3430/4431. Introduksjon til VHDL Spartan starterkit Spartan-3 FPGA

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Transkript:

Oversikt VHDL En kjapp introduksjon Definisjoner Designparadigmer Generell VHDL-struktur Dataflow -beskrivelse Structural -beskrivelse Behaviour -beskrivelse Objekter /datatyper Operatorer Tips for syntese 2 3 VHDL VHDL (Very High Speed Integrated Circuits) Hardware Description Language VHDL er en tekstlig beskrivelse av et digitalt design VHDL versus skjematisk design + Mulighet for å beskrive kretser på et høyere abstraksjonsnivå + Raskere design - Kan miste detaljkontroll på portnivå 4 Forskjeller: VHDL versus C(++)/Java VHDL beskriver ekte parallelle fysiske systemer (med portforsinkelse) - konkurrens C(++)/Java/assembler beskriver oppførsel til serielle fysiske systemer (mikroprosessor/mikrokontroller) + Parallelle systemer kan bli mye raskere enn serielle systemer - Design av ekte parallelle systemer er generelt mer krevende enn design av serielle systemer Design i VHDL krever vanligvis forståelse av den underliggende hardwaren

5 Tre VHDL abstraksjonsnivå Behavioral -beskrivelse: Beskriver i høynivå hvordan kretsen oppfører seg over tid. Beskrivelsen er ikke nødvendigvis tenkt å overføres til hardware Dataflow -beskrivelse: Beskriver kretsen hovedsakelig ved bruk av Boolske uttrykk. Overlater til kompilator å velge porter og trekke ledninger Structural -beskrivelse: Beskriver sammenkoblingen av ferdigdefinerte porter/delkretser (Trekker kun ledninger mellom portene/delkretsene), (nettliste) 6 Generell VHDL struktur - delkretser En VHDL beskrivelse består av en eller flere delkretser Hver delkrets har: 1) Entity: Et grensesnitt som definerer delkretsens innganger og utganger (pinout) 2) Architecture: En beskrivelse av delkretsens interne virkemåte Entity Architecture Delkrets Dataflow -beskrivelse Eksempel dataflow -beskrivelse Beskriver flyten av data imellom noder/registre Beskriver ofte systemet ved hjelp av Boolske uttrykk Har vanligvis ikke noe forhold til tidsbegrepet systemet som beskrives er konkurrent (ekte parallelt, men med portforsinkelse) Gir ofte godt samsvar mellom beskrivelse og hardware VHDL dataflow -beskrivelse av en delkrets Bibliotek Grensesnitt Innhold Delkrets Ekvivalent skjematisk beskrivelse 7 8

Eksempel II Eksempel III 3bits adder Interne signaler kan defineres lokalt inne i architecture blokken Deklarasjon av internt signal a s NB: Selv om programlinjene er sekvensielle definerer de et parallelt (konkurrent) system Lager binære ord (databusser) ved bruk av _vector deklarasjon b 9 10 Kondisjonell beskrivelse Kondisjonell beskrivelse when/else: Syntaks: Utgang <= verdi1 when test1 else verdi2 when test2 else verdi3; Kondisjonell beskrivelse Eksempel 4-input MUX: NB: alle tilstander bør defineres. Hvis ikke - har man mindre kontroll på det syntetiserte resultatet* Hvis flere tester slår til vil første tilordning være gjeldende (prioritet) 11 *Noen synteseverktøy implementerer latcher (kan holde utgangsverdien), andre ikke 12

13 Structural -beskrivelse Beskriver sammenkoblingen av ferdigdefinerte delkretser (component s) (Trekker kun ledningene mellom delkretsene) A B C Delkrets1 Delkrets2 Delkrets3 Delkretsene kan man enten selv definere eller hente ferdig fra bibliotek Enkle standardkomponenter som and2..and8, or2.., fdcp (D flip-flop with clear and preset), osv.. finner man i biblioteket Y 14 Structural -beskrivelse Structural -beskrivelse kan benyttes på laveste nivå ved å koble sammen porter (evt. transistorer) Structural -beskrivelse kan også brukes til å beskrive sammenkoblingen av store komplekse byggeblokker (eks. ALU / memory osv.). På denne måten kan man lage store komplekse systemer hierarkiske og oversiktelige Structural -beskrivelse Structural -beskrivelse gir hierarkisk design Pakker inn delkretser til komponenter som kan brukes som byggeblokker i andre delkretser Component delkrets1 Eksempel structural -beskrivelse Bruk av 2 ferdige bibliotekkomponenter and2 og fdcp Krets på et høyere nivå i hierarkiet Entity delkrets3 Entity delkrets1 Architecture delkrets1 Delkrets delkrets4 Delkrets Architecture delkrets3 Component delkrets2 Entity delkrets2 Architecture delkrets2 Delkrets Deklarasjon av komponentene Sammenkobling 15 16

Eksempel II Lager 2 egne underkretser ved dataflow. Setter sammen til krets på toppnivå ved structural underkrets2 mellomsignal underkrets1 Toppkrets Underkrets1 Underkrets2 Eksempel II første del av beskrivelsen underkrets1 underkrets2 17 18 Behaviour -beskrivelse Eksempel II siste del av beskrivelsen Deklarasjon av underkrets1 Deklarasjon av underkrets2 Sammenkobling Behaviour -beskrivelse er en høynivåbeskrivelse av systemets oppførsel over tid Begrepet tid skiller ofte behaviour -beskrivelse fra laverenivå-beskrivelse ( structural / dataflow ) Komplekse behaviour -beskrivelser kan ikke alltid overføres til hardware (syntetiseres) Komplekse behaviour -beskrivelser brukes ofte for å generere test bencher (simuleringsmodeller av systemet) I komplekse behaviour -beskrivelser kan man glemme den underliggende hardwaren og beskrive systemet på en måte som nærmer seg Java/C(++) 19 20

Process If-Then-Else Mekanismen process gir mulighet for sekvensiell beskrivelse En process beskriver en konkurrent enhet med mulighet for intern sekvensiell oppførsel En process kan spesifiseres med en sensitivitets-liste. Systemet processen beskriver (kan man tenke seg) starter opp hver gang en av variablene i listen forandrer verdi Et større system kan inneholde flere parallelle processer - Analogi: event driven programmering Inne i en process kan man bruke kondisjonelle tester, for eksempel if / then / elsif / else Syntaks: if test1 then uttrykk1; elsif test2 then uttrykk2; else uttrykk3; end if; 21 22 Process D latch eksempel Process D flip-flop eksempel 23 Beskrivelse av en D latch Sensitivitets-liste Processen starter opp hver gang clk eller D forandrer verdi (event) Når clk går til 1 overføres verdien på D til Q Når D forandres og clk= 1 overføres verdien på D til Q (transparent latch). 24 Beskrivelse av en D flip-flop Processen starter opp hver gang clk forandrer verdi clk event slår til når clk forandrer verdi clk event kan synes unødvendig, men er viktig for å garantere syntese av flip-flop og ikke latch Merk at på positiv clk-flanke overføres verdien på D til Q. Ellers skjer det ikke noe

25 Process MUX eksempel Beskrivelse av en 2-1 MUX Når Sel går til 0 overføres verdien på A til Q. Når Sel går til 1 overføres verdien på B til Q. Når verdien på A eller B forandres overføres selektert verdi til Q Generelt: Når alle inputsignaler er spesifisert i sensitivitets-listen og alle utganger alltid gis en verdi, syntetiseres en kombinatorisk krets 26 Generelt om processer En process kan beskrive både kombinatoriske kretser (med hukommelse) og sekvensielle kretser Vil man beskrive en kombinatorisk krets: Ta med alle inngangssignaler i sensitivitets-listen Pass på at utgangssignalene alltid blir tilordnet en verdi Vil man beskrive en sekvensiell krets: Latcher bør generelt unngås: bruk flip-flop s ved å spesifisere flanketrigging ( event) Forsøk å gjøre den sekvensielle delen så liten og oversiktlig som mulig ved å trekke kombinatoriske element ut av processen Eksempel: pseudo-random generator Mye brukt metode for pseudorandom tallgenerering Random Bit clk res bit3 25bit shiftregister bit0 Tidspunkt for signaltilordning i processer Viktig å vite: Inne i en process vil alle signaltilordninger (<=) utføres først i det øyeblikket processen terminerer ( end process linjen utføres) x clk D C Q y clk D C Q z Shift til høyre Reset (oppstart) Eksempel: signal z vil ikke nødvendigvis være lik signal x 27 28

Enumerated datatype Kan definere datatyper selv ved bruk av type Syntaks: type : egettypenavn is (hvasomhelst1, hvasomhelst2, hvasomhelstn); signal x : egettypenavn; signal y : egettypenavn; : hvasomhelst1 hvasomhelstn syntetiseres til binære signaler Mer om kondisjonelle tester For kondisjonell testing innen processer brukes ofte case Syntaks: case : signalet is when verdi1 => uttrykk1; when verdi2 => uttrykk2; when others => uttrykk3; end case; Husk å spesifisere alle mulige verdier til signalet, evt. med others Pass på at verdi1, verdi2 er forskjellige 29 30 31 Tilstandsmaskiner i VHDL VHDL er spesielt egnet til å beskrive tilstandsmaskiner En vanlig (og trygg) måte å spesifisere tilstandsmaskiner på er som følger: Lag en egen process som implementerer all kombinatorisk logikk Lag en minimal process som kun implementerer registeret (flip-floppene) innganger Kombinatorisk logikk utganger Register dennetilstand nestetilstand 32 Eksempel på tilstandsmaskin Lager en teller som teller sekvensen 5,4,3,2,1,0, 5,2 osv Telleren har reset-inngang (res) Tilstandsdiagram 1/101 X/101 nr5 nrx 1/100 1/011 1/010 1/001 0,1/000 nr4 nr3 nr2 nr1 0/101 0/100 0/011 0/010 0/001 X/101 nry res/ut Må også i VHDL ta hensyn til ubrukte tilstander nr0 Definerer navn på tilstander med type (enumerated)

Spesifiserte tilstander Ut fra register Inn til register Husk ubrukte tilstander Genererer utgangsverdi 33 Produserer neste tilstand basert på nåværende tilstand og inngangsverdi 34 Register Vanlige datatyper: Datatyper i VHDL Bit: 0, 1 Std_logic: 0, 1, -, Z, W + 4 andre Boolean true, false Type enumerated (brukerdefinert) Integer -2147483647 til +2147483647 Time eksempel: 10ns Dataobjekter i VHDL Vanlige dataobjekter i VHDL Signal - ledning/register. Tilordningssymbol: <= Variable -temporær verdi brukt innenfor process. Oppdateres umiddelbart (sekvensielt). Tilordningssymbol: := Constant - konstant definert for å lette oversikt 35 *_vector(x downto y) vektor av Bit eller Std_logic Std_logic er generelt foretrukket framfor bit Alle ovenstående datatyper bortsett fra time kan syntetiseres til fysiske ledninger / registre 36 Alle objekter ovenfor kan inneholde datatypene definert på forrige side Med tanke på syntese bør man bruke færrest mulig variable. Bruk heller signal der det er mulig

For - loop Inne i processer kan man bruke kondisjonelle løkker av type for loop Syntaks: for variabel1 in intervall loop uttrykk1; uttrykk2; : end loop; variabel1 er av type variable (umiddelbar oppdatering) og blir automatisk deklarert i løkken Eksempel: for loop partall tester P settes høy når antall 1 ere i Data bussen er et partall Intern variable Siden par er av type variable oppdateres par umiddelbart og systemet virker etter hensikten 37 38 Operatorer Tips for VHDL design Logical operators and, or, nand, nor, xor, xnor, not Relational operators =, /=, <, <=, >, >= Shift operators sll, srl, sla, sra, rol, ror Addition operators +, -, & Multiplying operators *, /, mod, rem Miscellaneous operators **, abs NB: ikke alle operatorer er definert for std_logic NB: VHDL har ikke presedens for operatorer. ( ) må brukes VHDL kan beskrive både fysiske kretser samt test bencher for simulering. VHDL er et komplekst språk, og gir mange muligheter for å lage både gode og dårlige beskrivelser. Problemet med dårlige beskrivelse kan bli: Forskjellig logisk oppførsel for syntese og hardware Dårlig kode er ikke nødvendigvis portabel i mellom forskjellige synteseverktøy. Dette gjelder også for forskjellige simuleringsverktøy 39 40

Tips for trygg syntese I Tips for trygg syntese II Bruk flip-flop s (registre) istedenfor latch er der det er mulig Bruk event for å generere flip-flop er Bruker man process til å lage kombinatorisk logikk husk å inkludere alle inngangssignalene i sensitivitets-listen, samt å tilordne utgangssignalene verdier for alle kondisjonelle valg Ikke lag processer som trigger på begge klokkeflankene Separér ut kombinatorisk logikk fra processer som beskriver sekvensielle system For tilstandsmaskiner: husk å definere hopp ut av eventuelle udefinerte tilstander Husk at if - else som ikke spesifiserer alle muligheter genererer hukommelseselement (flip-flop er) Ved bruk av when - else, husk å spesifisere alle muligheter Minimaliser bruken av variable. Begrens bruken til for -løkker Bruk helst typen Std_logic der det er mulig Ulike, men logisk like beskrivelser kan gi forskjellige hardware implementasjoner med hensyn på areal/strømforbruk/hastighet Unngå å clock gating (manipulering av klokkesignalet) Unngå direkte kombinatorisk feedback. Feedback bør gå via registre Greit å vite: VHDL skiller ikke på små og store bokstaver Husk at dette er bare en introduksjon til VHDL. Språket inneholder mange flere mekanismer og egenskaper enn beskrevet her 41 42 Oppsummering Definisjoner Designparadigmer Generell VHDL-struktur Dataflow -beskrivelse Structural -beskrivelse Behaviour -beskrivelse Objekter /datatyper Operatorer Tips for syntese 43