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

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

INF3340/4340. Synkrone design Tilstandsmaskiner

INF3340. Tilstandsmaskiner

Tilstandsmaskiner (FSM) Kapittel 5

Synkron logikk. Sekvensiell logikk; to typer:

INF3340/4431. Tilstandsmaskiner

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

INF3430/4430. Grunnleggende VHDL

UNIVERSITETET I OSLO

INF1400 Kap4rest Kombinatorisk Logikk

Kombinatorisk og synkron logikk. Kapittel 4

Dataveier og optimalisering. Kapittel 9

Repetisjon digital-teknikk. teknikk,, INF2270

INF3430. VHDL byggeblokker og testbenker

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

INF1400. Tilstandsmaskin

IN1020. Sekvensiell Logikk

INF2270. Sekvensiell Logikk

INF3430/4431. VHDL byggeblokker og testbenker

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

Store design. Kapittel 6

FYS 3270(4270) Data-assistert konstruksjon av kretselektronikk (tidligere Fys 329) Fys3270(4270)

Forelesning 7. Tilstandsmaskin

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

Forelesning 5. Diverse komponenter/større system

INF1400. Tilstandsmaskin

Programmerbar logikk. CPLD og FPGA. Fys3270(4270)

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

INF3430/4431. VHDL byggeblokker og testbenker forts.

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

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

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

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

Øving 7: Løsningsforslag (frivillig)

INF3430/4431. Viktige momenter i syntese og for valg av teknologi Chipscope

UNIVERSITETET I OSLO

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:

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

Løsningsforslag INF1400 H04

Eksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

TFE4101 Krets- og Digitalteknikk Høst 2016

Løsningsforslag til regneøving 6. a) Bruk boolsk algebra til å forkorte følgende uttrykk [1] Fjerner 0 uttrykk, og får: [4]

LØSNINGSFORSLAG 2006

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

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

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

Forelesning 6. Sekvensiell logikk

MIK 200 Anvendt signalbehandling, Lab. 5, brytere, lysdioder og logikk.

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

INF1400. Sekvensiell logikk del 1

Kontinuasjonseksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

Fys 3/4270 høsten Beskrivelse av Fys 3/4270 Cypress Testkort

INF3430/4431. VHDL byggeblokker og testbenker forts.

INF1400. Sekvensiell logikk del 1

INF3430. VHDL byggeblokker og testbenker forts.

INF3430/4431 Høsten Laboppgave 4 System on Chip (SoC) konstruksjon

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

MAX MIN RESET. 7 Data Inn Data Ut. Load

IN1020. Logiske porter om forenkling til ALU

Datamaskiner og operativsystemer =>Datamaskinorganisering og arkitektur

Kontinuasjonseksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Entities and architectures. Kapittel 3

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

Kapittel 5 Tilstandsmaskin

INF 3430/4430. Simuleringsmetodikk

ITPE2400/DATS2400: Datamaskinarkitektur

INF 3430/4430. Simuleringsmetodikk

VEILEDNING TIL LABORATORIEØVELSE NR 4

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

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

Oppgave 1 (Flanke- og nivåstyrte vipper)

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

Oppsummering av digitalteknikkdelen

1. del av Del - EKSAMEN

INF3430/INF4431 Høsten Laboppgave 3 ASM Flytskjema Bruk av moduler i et system og design av tilstandsmaskin

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

1 (vekt 10%) +5V. Rb Out. (Ron)

TELE2010A Digital Systemkonstruksjon

Det matematisk-naturvitenskapelige fakultet

Gruppe(r): 2EY Eksamenstid, fra-til: Eksamensoppgaven består av. Antall sider: 4 (Inkludert denne)

Hva gikk vi gjennom forrige uke? Omid Mirmotahari 3

NY EKSAMEN Emnekode: ITD13012

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

EKSAMEN I FAG TFE4101 KRETS- OG DIGITALTEKNIKK, LF DIGITALTEKNIKKDELEN AV EKSAMEN (VERSJON 1)

Høgskoleni østfold EKSAMEN. Dato: Eksamenstid: kl til kl. 1200

Løsningsforslag i digitalteknikkoppgaver INF2270 uke 5 (29/1-4/2 2006)

Kontinuasjonseksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

Forelesning 9. Registre, tellere og minne

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

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

Eksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK. Lørdag 5. juni Tid kl. 09:00 13:00. Digital sensorveiledning

RAPPORT LAB 3 TERNING

UNIVERSITETET I OSLO

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Transkript:

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

Innledning. Målet med denne laboppgaven er at dere skal lære å lage enkle hardware beskrivelser i VHDL, samt å lage testbencher for å simulere disse. Øvingen er delt opp i ett antall deloppgaver med stigende vanskelighetsgrad. For hver deloppgave skal du følge samme design flyt som i laboppgave 1, med to viktige tillegg: 1. Du skal selv lage VHDL kode. 2. Du skal selv lage VHDL testbench for VHDL simulering. Framgangsmåte ved VHDL koding. Arbeidet med å lage en hardware beskrivelse i VHDL, kan deles inn i tre hovedmomenter: Danne seg en korrekt bilde av problemstillingen. Les oppgave teksten nøye. Studer kretsskjemaet til testkortet og databladene til inngående komponenter. Tegn et forenklet blokkskjema over testkortet hvor bare de elementene som skal benyttes er tatt med Strukturere en løsning. Den konstruksjonen du skal implementere i CPLD en har et ytre grensesnitt mot de andre komponentene på testkortet, og en indre struktur. Det ytre grensesnittet, i form av innsignaler og utsignaler, tilsvarer entity deklarasjonen i en VHDL beskrivelse. Den indre strukturen tilsvarer VHDL beskrivelsens architecture del. Det er ofte hensiktsmessig å dele opp den indre strukturen i en dataveistruktur og en kontrollstruktur. Dataveistrukturen inneholder elementer som registre, addere, multipleksere som er sammenkoblet med databusser. Denne strukturen er velegnet til å beskrives i blokkskjema. Hvis strukturen er kompleks, lønner det seg å dele den opp i mindre blokker Kontrollogikkens innsignaler og utsignaler kan beskrives i blokkskjema sammen med dataveistrukturen. Den indre oppbyggingen beskrives bedre i form av: sannhetstabeller, boolske ligninger og tilstandsdiagrammer. Deler av arbeidet med å strukturere konstruksjonen kan med fordel utføres ved å bruke muligheten å skrive kommentarer i VHDL kildefilen. Kode den strukturerte løsningen i VHDL Med utgangspunkt i en veldokumentert struktur skal det normalt være en grei jobb å lage en fungerende kode. Testbench for VHDL simulering., Det sentrale spørsmålet ved utformingen av testbench'en er hvilke testvektorer man må generere for å få en fullstendig simulering av kretsens oppførsel. Avhengig av kretsens kompleksitet kan dette vare en meget enkel eller meget vanskelig oppgave. 2

I mange tilfeller er det lurt å ta utgangspunkt i en tabell med alle relevante innsignal kombinasjoner og forventede utsignal verdier. Rapport. For deloppgave skal dere levere : VHDL kildefil. VHDL testbench Plot fra Post-Jedec timing simulering der dette er mulig, ellers plot fra funksjonell simulering. Kortfattede kommentarer til simuleringsresultatene. 3

Oppgave 1. f e a g d b c dec a b c d e f g dec Alle segmentene i hvert 7- segment har felles anode. Et enables ved å åpne PMOS transistor ved en lav gatespenning, Seg7en(i) <= 0 ;. Da får den felles anoden positiv (5V) spenning. Et enkelt segment vil da lyse dersom katoden får en lav spenning. Seg7en(i) i=3,2,1,0 Vcc(5V) Lag en simuleringsmodell av displayene. ene er en såpass sentral modul på testkortet at det kan være hensiktsmessig å ha en egen simuleringsmodell for disse. Tallene skal vises hexadesimalt, og når et segment er slukket skal modellen vise Z (høyimpedant tilstand) for dette segmentet. Dersom flere segmenter er enablet samtidig skal modellen vise X (unknown). Modellen kan legges inn som en komponent i testbencher i senere oppgaver. ene kan modelleres enklest ved å kombinere alle segmentene og transistorer som styrer hvert enkelt segment i et entitet/arkitektur par. Modellen skal være rent funksjonell uten noen tidsforsinkelser. Innsignaler: a,b,c,d,e,f,g, (som kan være samlet i en vektor), og seg7en(3 downto 0). Vi ser bort fra dioden som kan vise desimalpunktum. Utsignaler: seg3(3 downto 0), seg2(3 downto 0), seg1(3 downto 0), seg0(3 downto 0). Veiledning: Lag en sannhetstabell for et segment. La tabellen være utgangspunkt for din VHDL-kode. Oppgave 2. Lag et lite VHDL program, som implementerer en kombinatorisk funksjon mellom Hex rotary switch S1 og 7_segment_0, slik at displayet viser verdien til S1 hexadesimalt. 4

Veiledning: Lag en tabell som viser tilstanden til hvert enkelt segment for samtlige verdier til S1 switchen. NB! Husk å enable (disable de andre segmentene) ved å styre SEG7EN signalene. Oppgave 3. Lag et VHDL program, som implementerer en kombinatorisk funksjon mellom følgende delar av testkortet: Hex rotary switcher S1 og S2. Trykknappene S3, S4 og S5. To av displayene. Den kombinatoriske funksjonen skal implementeres etter følgende sannhetstabell: Inputs Outputs S3 S5 S4 7-seg 1 7-seg 0 Reset Inp2 Inp1 0 X X Av Av 1 0 0 Av Av 1 0 1 S2* Av 1 1 0 Av S1* 1 1 1 Av Av *Det er den hexadesimale verdien av S2 og S1 som skal vises på ene. Veiledning: Lag et blokkskjema som viser dataveiene fra trykknapper og rotary switcher til displayene. Bruk dette blokkskjemaet for å lage VHDL koden. Oppgave 4. I denne oppgaven skal dere modifisere kontrollen av displayene fra oppgave 3, slik at to av ene er aktive samtidig. Dette er mulig få til ved å lage en løkke konstruksjon som aktiverer de 2 displayene i sekvens, og der frekvensen til løkken er tilstrekkelig høy til at de 2 displayene lyser samtidig. En slik løkke kan implementeres ved hjelp av en teller. De forskjellige displayene skal vise følgende verdier: _1: Verdien av rotary switch S2. _0: Verdien av rotary switch S1. Veiledning: Lag et blokkskjema som viser dataveiene fra S1 og S2 til displayene. Hvordan skal telleren brukes? Hvor mange bits må telleren ha? 5

Oppgave 5. Utvid oppgave 4 til å bli en entitet med fire s datakilder: Data0, Data1, Data2 og Data3, og der verdien fra kildene skal vises samtidig på de fire ene. Inputs: Clk, Reset, Data0(3 downto 0), Data1(3 downto 0), Data2(3 downto 0), Data3(3 downto 0) Outputs: a,b,c,d,e,f og g og Seg7en(3 downto 0) Denne entiten skal kun simuleres, men skal gjenbrukes i oppgaver senere der den skal inngå som en byggekloss. Oppgave 6 1 (Frivillig). Benytt entiteten fra deloppgave 5 der vi henter datakildene fra: 1. Data0: Register med samplet verdi av S1. Skal vises på 7-seg 3 2. Data1: Register med samplet verdi av S2. Skal vises på 7-seg 2 3. Data2: Register med samplet verdi av en s teller (tellera). Skal vises på 7-seg 1 4. Data3: Register med samplet verdi av en s teller (teller B). Skal vises på 7-seg 0 Teller A og teller B skal være free running og klokkes av 10 MHz oscillatoren. Samplingen skal utføres hver gang trykknapp S4 blir trykket inn. Observer at det skal bare samples en gang uansett hvor lenge knappen holdes nedtrykt! Samplingen skal implementeres ved hjelp av en enkel tilstandsmaskin (state machine). Veiledning: Lag et blokkskjema som viser dataveiene Samplingen skal utføres ved å generere en clock enable puls til de fire sample registerene Hvor lang skal sample pulsen være? Hvor mange tilstander må tilstandsmaskinen ha? 1 Dersom man får problemer i oppgave 6 les kommentarer bakerst i oppgave teksten. 6

Kommentar til laboppgave 2: Multiplexing av displayene kan realiseres på mange måter. Det viser seg å være problematisk å få implementert en fornuftig løsning i CPLD en. Dette henger sammen med to ting: 1. Låste pinnenummer 2. Delte produktermer mellom makroceller. Dette er avhengig av arkitekturen til CPLD en. Figuren under viser en implementasjon som er maskimal sløsing av ressurer i CPLD en, ja, i hvilken som helst arkitektur. s kilder 4-1 mux () Vi har fire sett med binær til funksjoner. Hver og en av disse tar enormt mye plass. (Prøv å se på ligningene i rapportfil og tell opp antall produkttermer som skal til for å dekode hvert segment så får dere en idè om dette) Videre så multiplekses disse mot segmentene og da må dere benytte en 7-bits 4-1 multiplexer. Dette er også unødvendig ressurskrevende. En mye mere effektiv løsning er å først multiplekse s kildene for deretter å dekode utgangene fra multipleksereren. 7

4 bit 4-1 mux (4 bit) s kilder Resultat: En binær til funksjon og en enklere multplexer og identisk funksjonalitet. Men vi får også problemer med å implementere denne i kretsen, og spørsmålet er hva som eksakt er problemet: Problemet her henger sammen at både multiplekseren og funksjonen er kombinatoriske funksjoner. Optimaliseringsalgoritmene i Warp2 forsøker å optimalisere disse funksjonene til en felles funksjon. Det betyr at vi sitter igjen med en veldig bred (mange produkttermer) kombinatorisk funksjon som gjør at vi ikke får plass. Vi kan si at det er en svakhet i disse optimaliseringsalgoritene som gjør at løsningen blir for dårlig optimaliserert i forhold til arkitekturen i kretsen (og i forhold til at pinner er løst). Vanskeligheten henger sammen med at CY7C374 har produktermer som er delt mellom flere macroceller, slik at hver macrocelle effektivt ikke har så mange til egen rådighet. Merk at enhver arkitektur vil på et eller annet punkt ha en begrensning på dette punktet. Løsning på problemet er å på en eller annen måte få skilt logikken til multiplekseren fra logikken til en. Dette kan vi gjøre ved hjelp av registre som vist i figuren under. Dette er en vanlig benyttet teknikk og kalles pipelining, og er meget benyttet for å ikke få for bred logikk. I FPGA arkitekturer er pipelining helt essensielt for å ikke få for lange forsinkelser og dermed nedsatt klokkefrekvens og ytelse (se side 502-> i læreboka). 8

4 bit muxout CLk s register s kilder 4-1 mux (4 bit) En annen måte, som er Warp2 spesifikk, er å benytte et Warp2 syntesedirektivet synthesis_off: 4 bit muxout Attribute synthesis_off of muxout:signal is true; Legges inn kontrollfilen s kilder 4-1 mux (4 bit) La oss si at utgangen av multiplekseren har navnet muxout. Ved å legge inn følgende linje i kontrolfilen for kretsen: Attribute synthesis_off of Muxout:signal is true; vil Warp2 la være å optimalisere logikken for multiplexeren sammen med logikken for 7- segment en, og er dermed fri til å benytte forskjellige deler av kretsen til de to logiske blokkene. Alle disse tingene skal vi snakke mere om på forelesningene som omhandler syntese og design implementasjon. 9