Entities and architectures. Kapittel 3

Like dokumenter
Kombinatorisk og synkron logikk. Kapittel 4

Synkron logikk. Sekvensiell logikk; to typer:

INF3430/4431. VHDL byggeblokker og testbenker

Tilstandsmaskiner (FSM) Kapittel 5

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

Agenda Funksjoner og prosedyrer. Funksjoner

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

INF3430/4431. VHDL byggeblokker og testbenker forts.

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

INF 3430/4431. Simuleringsmetodikk

INF 3430/4430. Viktige momenter i syntese og for valg av 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

TELE2010A Digital Systemkonstruksjon

INF3430/4431. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

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

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

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

INF 3430/4430. Simuleringsmetodikk

UNIVERSITETET I OSLO

Avdeling for ingeniørutdanning Institutt for teknologi

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

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

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

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

INF3340/4340. Synkrone design Tilstandsmaskiner

INF3340. Tilstandsmaskiner

Løsningsforslag INF1400 H04

F4 IN HDL. Yngve Hafting,

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

UNIVERSITETET I OSLO

Repetisjon digital-teknikk. teknikk,, INF2270

UNIVERSITETET I OSLO

INF3340/4431. Tilstandsmaskiner

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

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

Appendiks 7 Konstanter og variabler til kap. 6

UNIVERSITETET I OSLO

ITPE2400/DATS2400: Datamaskinarkitektur

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

Beskrivelse av programmeringsspråket Compila15 INF Kompilatorteknikk Våren 2015

Det matematisk-naturvitenskapelige fakultet. INF4431 Digital systemkonstruksjon

Simulering, syntese og verifikasjon (Max kap. 19)

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

MAX MIN RESET. 7 Data Inn Data Ut. Load

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

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

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Datamaskiner og operativsystemer =>Datamaskinorganisering og arkitektur

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

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

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

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

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

IN1020. Logiske porter om forenkling til ALU

INF1400. Karnaughdiagram

INF2270. Datamaskin Arkitektur

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

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

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

Hjemmeeksamen 2 i INF3110/4110

Dagens tema: Sjekking

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Kapittel 1 En oversikt over C-språket

Øvingsforelesning 5 Python (TDT4110)

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

Beskrivelse av programmeringsspråket Simpila INF Kompilatorteknikk Våren 2012

Arbeidskrav 1. Se fremdriftsplanen for innleveringsfrist. Emneansvarlig: Olav Dæhli 1

TwidoSuite kommunikasjon

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

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

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

INF2270. Sekvensiell Logikk

Transkript:

Entities and architectures Kapittel 3

VHDL program Én fil

Entities and architectures Entity declaration og architecture body Analogi til en IC: Entiteten beskriver interfacet til omgivelsen (pakkens tilkoblingspinner) Arkitekturen beskriver entitetens funksjonalitet (kretsens interne logikk)

Template - Entitet/Arkitektur entity model_name is port ( list of inputs and outputs ); end model_name; Samme navn som fila, f.eks test.vhd architecture architecture_name of model_name is begin... VHDL concurrent statements... end architecture_name ; concurrent = samtidig

Et enkelt eksempel; komparator -- eqcomp4 is a four bit equality comparator entity eqcomp4 is port (a, b : in std_logic_vector(3 downto 0); equals: out std_logic); end eqcomp4; MSB [a(3) a(2) a(1) a(0)] [b(3) b(2) b(1) b(0)] architecture dataflow of eqcomp4 is begin equals <= '1' when (a = b) else '0'; end dataflow; <= settes lik

Entitet deklarasjon; 4 bits adder

Ports Hvert I/O-signal i en entity declaration blir referert til som port, analogt til en pinne i et skjema eller en pinne på en IC (integrert krets) Sett av porter definert for en entity er referert til som port declaration Hver port som deklareres må ha navn, retning (mode) og data type navn mode type

Navn Første del av deklarasjonen er navnet Lovlige navn kan settes sammen av a b c.z 0 1..9 _ (underscore) med følgende begrensing alltid start med bokstav siste karakter bokstav eller tall 2 underscore etter hverandre ikke tillatt ingen forskjell på små og store bokstaver TcK = tck

Retning (mode) In - flyt inn i entity Out - flyt ut av entity, ikke feedback Buffer - flyt ut av entity, feedback tillatt Inout - for bidireksjonale signaler

Data typer boolean, bit, bit_vector og integer er typer for syntese fra IEEE 1076/93 IEEE std_logic_1164 med blant annet std_logic, std_logic_vector, std_ulogic, std_ulogic_vector Må gjøres synlig med library og use

Architecture bodies Hver architecture body er assosiert til en entity declaration architecture body viser hvordan konstruksjonen virker VHDL tillater å skrive i forskjellige stiler: Behavioral (oppførselsbeskrivelse) Dataflow Structural description Kombinasjon av disse

Kode-stiler: Structural description Dataflow Dataflow Behavioral (Bruke den kodestilen som passer best!)

NB! Forskjeller HW og SW I software utføres operasjoner i sekvens I hardware utføres operasjoner i parallell (samtidig) Derfor kan vi IKKE kode hardware som vi koder software!

Behavioral (I) Høy-nivå beskrivelse 1 library ieee; 2 use ieee.std_logic_1164.all; 3 entity eqcomp4 is port( 4 a, b: in std_logic_vector(3 downto 0); 5 equals: out std_logic); 6 end eqcomp4; 7 8 architecture behavioral of eqcomp4 is 9 begin 10 comp: process (a, b) 11 begin 12 if a = b then 13 equals <= '1'; 14 else 15 equals <= '0'; 16 end if; 17 end process comp; 18 end behavioral; Sensitivitetsliste Sekvensielle statements

Behavioral (II), annen skrivemåte 1 architecture behavioral of eqcomp4 is 2 begin 3 comp: process (a, b) 4 begin 5 equals <= '0'; Default verdi 6 if a = b then 7 equals <= '1'; 8 end if; 9 end process comp; 10 end behavioral; NB! Signalene settes rett før prosessen terminerer Rekkefølgen på statement er viktig! Bare siste tilordning av samme signal har virkning!

Dataflow (I) Bruker ikke process! 1 -- eqcomp4 is a four bit equality comparator 2 library ieee; 3 use ieee.std_logic_1164.all; 4 entity eqcomp4 is port( 5 a, b: in std_logic_vector(3 downto 0); 6 equals: out std_logic); 7 end eqcomp4; 8 9 architecture dataflow of eqcomp4 is 8 begin 9 equals <= '1' when (a = b) else '0'; 10 end dataflow when - else

Dataflow (II) library ieee; use ieee.std_logic_1164.all; entity eqcomp4 is port( a, b: in std_logic_vector(3 downto 0); equals: out std_logic); end eqcomp4; architecture bool of eqcomp4 is begin equals <= not(a(0) xor b(0)) and not(a(1) xor b(1)) and not(a(2) xor b(2)) and not(a(3) xor b(3)); end bool; Boolske likninger Unødvendig tungvinn måte å beskrive en komparator på!

Structural descriptions - Hierarkisk beskrivelse Består av en VHDL nettliste, som sier hvordan komponentene skal kobles sammen. Når en entitet brukes inne i en annen entitet, kalles den er komponent; eksempler her er xnor2 og and4 Entitet deklarasjonen og arkitetkur body for xnor2 og and4 finnes i en egen fil Sier hvordan komponentene skal kobles sammen

Structural descriptions Tungvinn måte å lage en komparatoren på! Store design derimot må man dele opp i håndterbare delkomponenter! Gjør at hver delkomponent kan simuleres og verifiseres individuellt Skjematisk representasjon av VHDL koden på forrige side

Sammenligning av architectural beskrivelser Hvordan avviker resultatet etter syntese og fitting for en designbeskrivelse fra en annen? Ulike designbeskrivelser (spesielt for komplekse design) kan resultere i ulik resursbruk i den programmerbare logikken fordi: Hvordan koden optimaliseres avhenger av synteseverktøyet (se fig. 3.6) Noen synteseverktøy utnytter kretsen interne arkitektur bedre enn andre Fitting / place and route verktøyet gjør kanskje ikke optimale valg med tanke på å utnytte kretsens ressurser. Ulike designbeskrivelser kan altså produsere forskjellige, men funksjonelt ekvivalente, kretsimplementasjoner!

Fremgangsmåte for å tifredsstille desingkravene Behavioral og dataflow (med when-else eller with-select-when) den enkleste og raskeste måte å beskrive et design på. Hvis du etter syntese av behavioral koden tilfredsstiller ytelseskravene, er du ferdig! Hvis ikke, prøv med direktiver til synteseverktøyet for å optimalisere koden. Hjelper ikke dette heller, ta i bruk kretsprodusent-spesifikke bibliotekkomponenter for å optimalisere kritiske deler av designet. Men, dette gjør at VHDL-koden ikke lenger er teknologiuavhengig!

Utførsel av process Prosessen utføres når et av signalene i sensitivitetslista har en endring i verdi (en event). Da utføres de sekvensielle signaltilordningene suksessivt. Prosessen fortsetter til siste signaltilordning er utført, og terminerer seg selv. Signalene oppdateres rett før prosessen terminerer! Prosessen utføres ikke igjen før et av signalene i sensitivitetslista på nytt har en event. process (sensitivitetsliste) < deklarasjoner> begin <signal tilordning1>.. <signal tilordning n> end process;

Modeller for syntese versus modeller for simulering; utførelse av process Ingen sensitivitetsliste Syntese Simulering Ignoreres vanligvis av synteseverktøyet

Ufullstendige sensitivitetslister Riktig skrivemåte! Simulering av proc4 og proc5 gir forskjelling resultat! Ved simulering av proc5 utføres ikke prosessen selv om c endrer verdi Synteseverktøyet vil gjøre et av to: Alltid bruke en sensitivitetsliste som inneholder alle signaler til høyre for signaltilordningen (<=). Det gir samme implementasjon av proc4 og proc5 Gi en feilmelding om at syntese ikke er mulig p.g.a mangler i sensitivitetslista Sørg for å skrive koden slik at simulering og syntese gir samme resultat!

Timing av signaler

Simuleringssyklus feil oppførsel Initialverdi: x <= 0 og a_bus <= 00000000 Et signal oppdateres rett før prosessen terminerer! Det er bare siste signaltilordning som har effekt!

Flere drivere av samme signal For å beregne en verdi av y kreves en resolution funksjon. Mer om dette senere X = ubestemt

Busser Resolution funksjoner brukes på simulering av busser Nyttig at simulatoren kan indikere en ubestem verdi X hvis to/flere entiteter driver bussen samtidig med motsatte logiske nivåer. To entiteter kan ikke drive bussen samtidig! Mens en entitet driver bussen, må de andre entiteten være i en three-state (høy impedans) tilstand! Ingen mening med udefinert verdi X i syntese! y <= X

Metalogiske verdier i brukt i syntese Don t care : - High impedanse value: Z Don t care brukt for å redusere logikken: Gir redusert logikk NB! Simulatoren tolker - som en verdi, mens synteseverktøyet tolker - som et wild card som kan representere 0 eller 1 Bruk av høy-impedans verdi:

Identifiers (Navn) Identifiers settes sammen av a b c.z 0 1..9 _ (underscore) med følgende begrensing kan ikke bruke VHDL reserverte ord alltid start med bokstav siste karakter bokstav eller tall 2 underscore etter hverandre ikke tillatt ingen forskjell på små og store bokstaver

Eksempler Identiske skrivemåter Eksempler på tillate Identifiers Ulovelige navn:

Data objects Constants - øker lesbarheten til koden constant width: integer := 8; Signals en forbindelseslinje eller et minneelement signal count: std_logic_vector (3 downto 0); Variables syntese av variable ikke veldefinert variable result: std_logic := 0 ; Files Aliases ikke et nytt objekt

Mer om signaler og variable Signaler: Signaltilordning: <= Initialverdier tilordnet signaler har ikke mening for syntese (vil ikke nødvendigvis matche power-on tilstanden til minneelementet) signal count: std_logic_vector (3 downto 0) : = 0101 ; Variable: Kan brukes i prosesser, funksjoner og prosedyrer I simulering brukes de for høy-nivå modellering I syntese brukes de som indeksvariable og midlertidig lagring av data. Variabeltilordning: : = Variabletilordning er øyeblikkelig ( i motsetning til signaltilordning i en process) FY!

Signal

Eksempel på bruk av Variable

scalar og composite 4 kategorier scalar Data typer Enumeration - mye brukt i tilstandsmaskiner type states is (idle, preamble, data, jam, nosfd, error); integer variable a: integer range 0 to 255 Physical - tid eneste predefinerte type, ikke brukt i syntese ns, us, ms osv Floating - som regel ikke støttet i syntese 2 kategorier composite array types - flere elemeter av samme type record types - flere elementer av ulik type

Array 2-dimensjonale arrayer nyttig til å lage tabeller

Datatypen std_logic 1164 Ikke støttet i syntese Three-state Subtypen std_logic er resolved std_ulogic (verdier på drivere som er koblet sammen bestemt av en resolution table

Types og subtypes Subtype kan brukes for å lage deltyper (undertyper) av allerede definerte typer Eksempel: subtype std_logic is resolved std_ulogic;

Attributes event attribute: clk'event and clk = '1 range attribut variable a: integer range 0 to 255

Kode med noen vanlige feil entity many_errors is port --line 1 a: bit_vector(3 to 0); --line 2 b: out std_logic_vector(3 downto 0); --line 3 c: in bit_vector(5 downto 0);) --line 4 end many_errors --line 5 line 6 architecture not_so_good of many_errors --line 7 begin --line 8 my_label: process --line 9 begin --line 10 if c = x"f" then --line 11 b <= a --line 12 else --line 13 b <= '0101'; --line 14 end if --line 15 end process; --line 16 end not_so_good --line 17

Uten feil library ieee; use ieee.std_logic_1164.all; entity many_errors is port ( --line 1 a: in std_logic_ vector(3downto 0); --line 2 b: out std_logic_vector(3 downto 0); --line 3 c: in bit_vector(5 downto 0)); --line 4 end many_errors; --line 5 --line 6 architecture not_so_good of many_errors is --line 7 begin --line 8 my_label: process(c, a) --line 9 begin --line 10 if c = 001111 then --line 11 b <= a; --line 12 else --line 13 b <= 0101 ; --line 14 end if; --line 15 end process; --line 16 end not_so_good; --line 17