TELE2010A Digital Systemkonstruksjon

Like dokumenter
Synkron logikk. Sekvensiell logikk; to typer:

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

Tilstandsmaskiner (FSM) Kapittel 5

Store design. Kapittel 6

Avdeling for ingeniørutdanning Institutt for teknologi

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

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

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

INF 3430/4430. Simuleringsmetodikk

INF3430/4431. VHDL byggeblokker og testbenker

INF 3430/4430. Simuleringsmetodikk

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

Kombinatorisk og synkron logikk. Kapittel 4

INF 3430/4431. Simuleringsmetodikk

IN1020. Sekvensiell Logikk

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

INF3430. VHDL byggeblokker og testbenker

Løsningsforslag INF1400 H04

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:

MAX MIN RESET. 7 Data Inn Data Ut. Load

INF3430 Høsten ChipScope PRO - En kort innføring

Entities and architectures. Kapittel 3

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

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

Versjon2.0/ ChipScope PRO - En kort innføring

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

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

INF3430/4430. Grunnleggende VHDL

UNIVERSITETET I OSLO

Det matematisk-naturvitenskapelige fakultet. INF4431 Digital systemkonstruksjon

INF1400. Sekvensiell logikk del 1

INF3430. VHDL byggeblokker og testbenker forts.

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Forelesning 6. Sekvensiell logikk

Forelesning 7. Tilstandsmaskin

INF3340/4340. Synkrone design Tilstandsmaskiner

INF1400. Sekvensiell logikk del 1

INF2270. Sekvensiell Logikk

INF3430/4431. VHDL byggeblokker og testbenker forts.

LØSNINGSFORSLAG 2006

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

INF3340. Tilstandsmaskiner

INF3340/4431. Tilstandsmaskiner

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

INF3430/4431. VHDL byggeblokker og testbenker forts.

Agenda Funksjoner og prosedyrer. Funksjoner

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

Zelio Soft grunnkurs. Zelio Logic reléerstatter programmering

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

INF1400. Tilstandsmaskin

Prøveeksamen 2. Elektronikk 24. mars Løsningsforslag

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

UNIVERSITETET I OSLO

Øving 7: Løsningsforslag (frivillig)

UNIVERSITETET I OSLO

Kapittel 5 Tilstandsmaskin

INF1400. Tilstandsmaskin

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

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

Digitalstyring sammendrag

Repetisjon digital-teknikk. teknikk,, INF2270

Det matematisk-naturvitenskapelige fakultet

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

PLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ

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

VEILEDNING TIL LABORATORIEØVELSE NR 8

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

IN1020. Obligatorisk oppgave 1. Formål

UNIVERSITETET I OSLO

TFE4101 Krets- og Digitalteknikk Høst 2016

EKSAMEN Emnekode: ITD13012

F4 IN HDL. Yngve Hafting,

C:\web\service-elektronikk\fagprover\Anders\flashlite_program_Anders.pas Page 1

Oppgave 1 (Flanke- og nivåstyrte vipper)

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Simulering - Sannsynlighet

Appendiks 7 Konstanter og variabler til kap. 6

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

MONTERING AV FORSTERKERBRAKETT OG FESTEBRAKETT FOR GM 800 & GM1000 PORTÅPNERE TIL GRANDAL GARASJEPORTER

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

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

Plotting av data i grafer

VH Service Software. Dette dokumentet forteller deg i korte trekk hvilke funksjoner denne programvaren har, basert på følgende menyvalg:

Felix og Herbert. Felix og Herbert. Introduksjon

I oppgave 1 skal det prøves ut en binærteller i en integrert krets (IC). Telleren som skal brukes er SN74HC393N, hvor

EKSAMEN I FAG TFE4101 KRETS- OG DIGITALTEKNIKK

Eksamen i emne TFE4110 DIGITALTEKNIKK MED KRETSTEKNIKK

Løsningsforslag til 1. del av Del - EKSAMEN

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

Oppgaver uke 1: Løsningsforslag

F = a bc + abc + ab c + a b c

Datakonvertering. analog til digital og digital til analog

Øvingsforelesning 1 Python (TDT4110)

Øving 1 ITD Industriell IT

Mattespill Nybegynner Python PDF

Transkript:

TELE2010A Digital Systemkonstruksjon Øving 3/2015 Del 1, Teller: Husk å arbeide i det lokale arbeidsområdet på disken. Kopier filene til serveren når dere er ferdig for å kunne bruke dem neste gang. max_tall CE Teller_gen tiere enere Start et nytt design i A-HDL, som du kaller oving_3. Åpne zip-fila som er lagt ut. Velg new-file i A-HDL, marker at det er vhdl-kode, gå til mappa med filene og marker dem. Huk av for «Make local copy.». Telleren til høyre skal lages. Vi skal til slutt ende opp med et sett med tellere som kan brukes for å registrere tiden i en stoppeklokke. Clk R Figur 1: En generisk teller For å lage klokken trenger vi tellere som teller 0-9, 0-59 og 0-99. Tellerne skal ha en synkron reset som setter tellerverdien til 0 når den er lav. Tellerne bruker den samme klokke og resetsignal. Klokken har en frekvens på 100 Hz. For å kunne synkronisere tellerne med hverandre er det nødvendig med et count_enable-signal. Tellerne skal derfor også ha en inngang count_enable (ce) som er aktivt når det er '1'. Reset (R) har prioritet. Telleren skal telle på positiv klokkeflanke. Vis R er '0' skal den gå til 0. Hvis R er '1' og CE er 1 skal den telle. Når den kommer til maksimalverdien, skal den skifte til 0, ellers øker den verdien med 1. Dersom CE er '0' skal den ikke telle. Symbol for telleren er vist i Figur 1. Det er lagt ut en prosjektfil på itslearning. Entity for telleren er gitt her: library ieee; use ieee.std_logic_1164.all; entity teller_gen is generic (max_tall : integer := 59); port (clk, ce, R : in std_logic; tiere : out integer range 0 to max_tall/10; enere : out integer range 0 to 9); end entity; Vi skal først lage en oppførselsbeskriv for telleren. Denne arkitekturbeskrivn er komplett, med eventuelle skrivefeil og word-hjelp. ;-) 1 eller '1'. architecture oppforsel of teller_gen is Øving 3/2015 TELE201A Digital systemkonstruksjon Side 1 av 5

-- Ingen signal. -- Vi trenger en prosess som våkner og evaluerer når -- klokkesignalet skifter verdi fra 0 til 1. T: process (clk) is - må ha en lokal tellerverdi: variable teller : integer range 0 to 59; -- Telleren resettes dersom R er 0. -- Når ce er 1 settes den til 0 dersom teller -- er max_tall, ellers teller den en opp. -- Det er brukt synkron reset. if rising_edge(clk) then -- teller på positiv -- klokkeflanke. if r = '0' then teller := 0; elsif ce = '1' then if teller = max_tall then teller := 0; teller := teller + 1; -- Tellerverdien er bestemt, legger den inn i -- de to utgangssignalene. -- Tierverdien finnes ved å ta en -- heltallsdivisjon med 10. -- Enerne finnes ved å ta en modulo-divisjon -- med 10. Resten fra divisjonen er svaret. -- NB! Dette kan bare brukes for simulering! tiere <= teller/10; enere <= teller mod 10; end architecture; Kompiler denne koden og simuler ved hjelp av bølgeformvinduet i A-HDL. Bruk Stimulators for å angi signalverdier. 1. Åpne et bølgeformvindu (New waveform). 2. Velg teller_gen(oppforsel) som aktiv krets 3. Simulate > initialize 4. Trekk signalene du vil se på over i bølgeformvinduet. 5. Høyreklikk på clk, r og ce og sett opp pådrag for simuleringen ved hjelp av valget Stimulators. Bruk Kokke for clk og keyboard for de to andre. Bruk R for r og C for ce. Klikk på Apply for hvert enkelt pådrag. Bruk gjerne 10 MHz for clk. Øving 3/2015 TELE201A Digital systemkonstruksjon Side 2 av 5

6. Kjør simuleringen lenge nok til at telleren teller rundt. Dette vil være avhengig av hvor lang klokkeperioden er. Prøv med ce = '0' og '1' og sjekk at den fungerer som tenkt, ved å se om telleren stopper eller fortsetter. Kjør simulatoren i noen klokkeperioder for de forskjellige innstillingene. Husk å gi r = '0' mens du teller, for å sjekke at kretsen lar seg nullstille. Del 2, Flere prosesser: Den første telleren er en oppførselsmodell. Vi skal nå lage en strukturmodell som det er mulig å syntetiseres til hardware. Vi skal bruke den samme entityen, men en ny arkitektur. Telleren skal telle fra 0 til max_tall med to prosesser. En som teller enere og en som teller tiere. Enertelleren må telle så lenge ce = '1'. Tiertelleren skal telle når ce = '1' og enertelleren viser 9. architecture struktur of teller_gen is -- Vi trenger interne signal for tellerverdiene. -- Vi må også ha et signal for synkronisering -- mellom enere og tiere og et signal for -- nullstilling av telleren. signal sig_tiere : integer range 0 to 5; signal sig_enere : integer range 0 to 9; signal sig_synkroniser, nullstill : std_logic; -- Konstanter som viser maksverdier, beregnet fra -- den generiske porten. constant c_siste_tier : integer := max_tall/10; constant c_siste_ener : integer := max_tall mod 10; -- Kretsen skal ha to prosesser som teller på positiv -- flanke på clk. -- En for sig_enere og en for sig_tiere. -- Enertelleren skal telle når ce er '1'. -- Tiertelleren skal telle når ce er '1' og -- enertelleren viser 9. Tellerene skal nullstilles -- etter maxverdien. maxverdien finnes ved -- å sjekke om begge tellerverdiene er lik den -- aktuelle maksverdien. Øving 3/2015 TELE201A Digital systemkonstruksjon Side 3 av 5

-- Prosessen for å telle enere er komplett. -- Diskuter med sidemannen hvorfor den er slik. p_enere: process (clk) is if r = '0' then sig_enere <= 0; elsif ce = '1' then if sig_enere = 9 then sig_enere <= 0; sig_enere <= sig_enere + 1; -- Gjør ferdig prosessen under som skal telle -- sig_tiere. p_tiere: process (clk) is -- Fullfør koden. -- Ta med synkron reset og la telleren telle -- fra 0 til c_siste_tier dersom ce er '1' og -- sig_enere er 9. -- Så en prosess som lager et signal for -- nullstilling av telleren når den -- har kommet til maksimal verdi: p_nullstill: process (sig_tiere, sig_enere) is if (sig_tiere = c_siste_tier and sig_enere = c_siste_ener) then nullstill <= '1'; nullstill <= '0'; -- Kopler de interne tellerverdiene til -- utgangssignalene. tiere <= sig_tiere; enere <= sig_enere; end architecture; Så skal vi lage en klokke som bruker den strukturerte arkitekturen. Øving 3/2015 TELE201A Digital systemkonstruksjon Side 4 av 5

Gjør ferdig synkroniseringsprosessene. Del 4, Testbenk: Nå har vi to modeller av telleren. En basert på oppførselsmodellen og en basert på strukturbeskrivn. Vi kan se på oppførselsbeskrivn som en beskriv av hvordan vi ønsker at telleren skal oppføre seg. Den viser bare inngangssignal og utgangssignal. Strukturbeskrivn av telleren er en rtl-beskriv som er det vi ønsker å implementere. Neste trinn blir da å sjekke om disse beskrivne oppfører seg likt. Dette gjør vi med en testbenk. Testbenken inneholder de to arkitekturene, en prosess for å sette opp testsignalene, og en prosess for å sjekke om utgangene er like. Når testen avsluttes vil det skrives en melding i konsollvinduet. Koden er vedlagt, men ikke testet skikkelig. Når dere er ferdige med simuleringen med A-HDL og dere mener at kretsen oppfører seg riktig, registrerer dere dette på itslearning. Skriv et labnotat som dokumenterer at kretsen virker. Ta med nødvendige figurer og kode. Fortell hvordan dere verifiserte at kretsen virket. Frist: 29. september 2015 kl 23:59. Øving 3/2015 TELE201A Digital systemkonstruksjon Side 5 av 5