Agenda Funksjoner og prosedyrer. Funksjoner

Like dokumenter
INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Kombinatorisk og synkron logikk. Kapittel 4

Synkron logikk. Sekvensiell logikk; to typer:

Entities and architectures. Kapittel 3

INF3430. VHDL byggeblokker og testbenker forts.

INF3430/4431. VHDL byggeblokker og testbenker forts.

INF3430/4431. VHDL byggeblokker og testbenker forts.

Store design. Kapittel 6

Tilstandsmaskiner (FSM) Kapittel 5

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

INF3430/4431. VHDL byggeblokker og testbenker

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

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

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

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/4430. Grunnleggende VHDL

INF3430. VHDL byggeblokker og testbenker

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

INF 3430/4431. Simuleringsmetodikk

TELE2010A Digital Systemkonstruksjon

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

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

INF 3430/4430. Simuleringsmetodikk

INF 3430/4430. Simuleringsmetodikk

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

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

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

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

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

INF5110 Obligatorisk Oppgave 2 del 2. Andreas Svendsen SINTEF. 23. April Oversikt

Hjemmeeksamen 2 i INF3110/4110

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Dagens tema: Sjekking

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

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Kapittel 1 En oversikt over C-språket

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

Øvingsforelesning 5 Python (TDT4110)

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

TDT4110 IT Grunnkurs Høst 2015

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

INF2810: Funksjonell Programmering

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering

Øvingsforelesning 5 Python (TDT4110)

Datatyper og typesjekking

Datatyper og typesjekking

Det matematisk-naturvitenskapelige fakultet. INF4431 Digital systemkonstruksjon

Datatyper og typesjekking

UNIVERSITETET I OSLO

Semantisk Analyse del I

Datatyper og typesjekking

Vi skal se på lambda-uttrykk. Følgende er definerte og vil bli brukt gjennom oppgaven

Semantisk Analyse del III

IN 147 Program og maskinvare

Appendiks 7 Konstanter og variabler til kap. 6

Del 1 En oversikt over C-programmering

Obligatorisk Innlevering 2

Utførelse av programmer, metoder og synlighet av variabler i JSP

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

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

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

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

Del 4 Noen spesielle C-elementer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler. - 3rd edition: Kapittel Professor Alf Inge Wang

MAX MIN RESET. 7 Data Inn Data Ut. Load

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

INF Oblig 2 semantikksjekk og kodegenerering

Løsningsforslag til eksamen i IN147(A)

Statisk semantisk analyse - Kap. 6

Viktig. Rettet i koden. Oppgaven. Obligatorisk oppgave 2 - Kort om oppgaven og litt informasjon. Fredrik Sørensen OMS-gruppen, IfI

Nytt prosjekt og programlogikk

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Statisk semantisk analyse - Kap. 6

File: C:\My Documents\fagprove\tp\klokke.txt , 08:42:20

Kap.4 Funksjoner. Tre viktig ting ifm. funksjoner: parameter (input) oppskrift (body) for å beregne resultat (output)

Dagens tema: Sjekking (obligatorisk oppgave 3)

F4 IN HDL. Yngve Hafting,

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

INF5110. Oblig 2 presentasjon

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

TDT4110 IT Grunnkurs Høst 2012

Læringsmål og pensum. Intro til returverdifunksjoner: Generering av tilfeldige tall 27/09/16

Del 3. Pekere RR 2016

Velkommen til INF2100. Bakgrunnen for INF2100. Hva gjør en kompilator? Prosjektet. Jeg er Dag Langmyhr

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

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

INF3430/4430 Høsten Designflyt Utviklingsverktøyene Modelsim og Xilinx ISE

Transkript:

Aga Funksjoner og prosedyrer Funksjoner Operatorer Standard funksjoner/operatorer Overloading Package og Package body Operator inferencing Prosedyrer Side 1

Funksjoner(1) Benyttes mye i modeller for simulering Høynivå beskrivr for beregninger type konvertering Funksjoner som har anvr for syntese inkluderer Type konvertering Bruk av funksjoner som alternativ til komponent instansiering Overload operatorer og funksjoner Mange nyttige funksjoner definert i standard pakker (packages) IEEE 1076 IEEE 1164 (std_logic_1164) Synopsys biblioteker (støttet av de fleste synteseverktøy, ikke Warp2) IEEE 1076.3 (Syntese standard) Side 2

Funksjoner(2) Funksjons beskriv Kan bare ha input signaler som parametre Returner kun èn verdi (dette kan være et signal eller en vector) Sekvensiell beskriv Kan ikke ha wait statement Kan ikke definere signaler internt Funksjons deklarasjon en funksjon deklareres i den deklarative regionen av en arkitektur eller den deklarative regionen av en process Architecture func of functest Architecture func of functest -- Deklarasjoner -- Deklarasjoner bl2bit(a: BOOLEAN) bit bl2bit(a: BOOLEAN) bit bl2bit; bl2bit; -- Start of architecture -- Start of architecture func; func; Side 3

Funksjoner(3) Funksjons deklarasjoner Kan også deklareres i et package/package body par. package package my_func my_func bl2bit(a:boolean) bl2bit(a:boolean) bit; bit;.... Flere Flere funksjoner funksjoner my_func; my_func; -- -- Package Package body body package package body body my_func my_func bl2bit(a:boolean) bl2bit(a:boolean) bit bit a a 1 ; 1 ; 0 ; 0 ; bl2bit; bl2bit; -- -- Flere Flere funksjoner funksjoner.. my_func; my_func; Side 4

Funksjoner(4) Problematke beskrivr Bruk av variabler er ikke veldefinert i syntese og anbefales derfor ikke. Ikke garantert at alle synteseverktøy klarer den type beskriv maj(vec:bit_vector) maj(vec:bit_vector) bit bit variable variable tmp; tmp; tmp:0; tmp:0; for for i i in in vec range vec range loop loop vec(i) vec(i) 1 1 tmp:tmp+1; tmp:tmp+1; loop; loop; tmp > (vec high)/2 tmp > (vec high)/2 ( 1 ) ( 1 ) ( 0 ); ( 0 ); maj; maj; Side 5

Operatorer Operatorer defineres på samme måte som funksjoner, men ved: <operatornavn> Operatorer benyttes forskjellig fra funksjoner: Function Function + + (a,b (a,b :std_logic_vector) :std_logic_vector) std_logic_vector; std_logic_vector;.... sum sum a a + + b; b; ----- ----- add add (a,b):std_logic_vector) (a,b):std_logic_vector) std_logic_vector; std_logic_vector;.... sum sum add(a,b); add(a,b); Side 6

Bruk av funksjonsbibliotek Et package/package body par kan være kompilert til work use work.my_func.all; use work.my_func.all; -- eller -- eller -- use.work.my_func.bl2bit; -- dersom bare bl2bit skal gjøres synlig -- use.work.my_func.bl2bit; -- dersom bare bl2bit skal gjøres synlig entity... entity... architecture... architecture... signal a: BOOLEAN; signal a: BOOLEAN; signal b: bit; signal b: bit; b bl2bit(a); b bl2bit(a); architecture..; architecture..; eller til et annet bibliotek. Dette må ha et logk navn. Vi antar my_lib. library mylib; library mylib; use my_lib.my_func.all; use my_lib.my_func.all; -- eller -- eller -- use.my_lib.my_func.bl2bit; -- dersom bare bl2bit skal gjøres synlig -- use.my_lib.my_func.bl2bit; -- dersom bare bl2bit skal gjøres synlig Det logke navnet g i det aktuelle verktøyet og gjenspeiles gjerne i lagerstrukturen til verktøyet Side 7

Overloading(1) Overloading betyr å definere samme operator, funksjon eller prosedyre for forskjellige datatyper eller blanding av datatyper. VHDL-analyse/syntese programmet skiller de forskjellige overload operatorene, funksjonene eller prosedyrene fra hverandre ved å se på datatypen til de aktuelle parametre og sammenligner dem med de formelle parametrene. Side 8

Overloading(2) De kan være forskjellig antall parametre i de forskjellige overload operatorene, funksjonene eller prosedyrene. Pakken std_arith i Cypress biblioteket inneholder for oss de viktigste overload operatorene mellom std_logic og integer. ( +, -, >, <, - operatorene) Side 9

Overloading(3) Det finnes en rekke standard biblioteker med overload operatorer, funksjoner og prosedyrer i IEEE 1164 og 1076.3 IEEE 1164 Package std_logic_1164 Synopsys biblioteker (kompilert til IEEE) IEEE1076.3 Package std_logic_unsigned Package std_logic_signed Package std_logic_arith Package numeric_std NB! Det er viktig å sjekke ut hva det aktuelle synteseverktøyet støtter. De forskjellige synteseverktøyene kan ha organert dse bibliotekene forskjellig. Det betyr at man må re library use clause i VHDL-filen som skal synteteres. Side 10

Operator inferencing(1) Istedenfor å generere likninger kan synteseverktøyet identere operatorer eller funksjoner og generere en optimalert og teknologi-spesikk modul Denne prosessen kalles operator inferencing eller module generation. Use Use Cypress.std_arith.all; Cypress.std_arith.all;.... If If ab ab ; ; x x + + y; y; x+y x+y ab Side 11

Operator inferencing(2) loadable: loadable: process process (clk,ld) (clk,ld) ring_edge(clk) ring_edge(clk) (ld (ld 1 ) 1 ) c c d; d; c c c c + + 1; 1; process; process; c+1 d counter regter c ld Side 12

Prosedyrer Kan ere flere enn èn verdi Retur skjer via prosedyreparametre Parametre som skal eres må være deklarert som mode out eller inout. Kun sekvensiel konstruksjon Kan ha wait statement Størrr på vektorer defineres av aktuelle parametre Deklareres på samme steder som funksjoner og operatorer procedure procedure dff dff ( ( signal signal d: d: std_logic_vector; std_logic_vector; signal clk, rst: std_logic; signal clk, rst: std_logic; signal signal : : out out std_logic_vector) std_logic_vector) rst rst '1' '1' -- -- (others (others > > 0 ) 0 ) ikke ikke lov lov ; ; for for i i in in d range d range loop loop (i) (i) '0'; '0'; loop; loop; els els clk'event clk'event and and clk clk '1' '1' d; d; procedure; procedure; Side 13

Nyttige prosedyrer i testbench er Pakkenen std_textio fra IEEE og std_logic_textio fra Synopsys inneholder en rekke nyttige prosedyrer for å lese fra fil og skrive til fil: Bits og vectorer (som enkeltbit) read write octalt format oread owrite hexadesimalt format hread hwrite Dse finnes i en rekke overloadede utgaver Side 14