GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Relevanta dokument
VHDL Basics. Component model Code model Entity Architecture Identifiers and objects Operations for relations. Bengt Oelmann -- copyright

VHDL och laborationer i digitalteknik

Digitalteknik, fortsättningskurs Föreläsning VHDL Very High Speed Integrated Circuit Hardware Description Language

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

VHDL2. Sekvensnätsexemplet

Programmerbara kretsar och VHDL 2. Föreläsning 10 Digitalteknik, TSEA22 Oscar Gustafsson Institutionen för systemteknik

VHDL2. Sekvensnätsexemplet

Digital elektronik CL0090

Konstruktion av digitala system - VHDL

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Tentamen Grundläggande programmering

VHDL 1. Programmerbara kretsar

VHDL testbänk. Mall-programmets funktion. Låset öppnas när tangenten 1 trycks ned och sedan släpps. William Sandqvist

DESIGN AV SEKVENTIELL LOGIK

Hjälpmedel: Appendix A. VHDL-syntax. (bifogas detta prov) Appendix B.2. IEEE-package (bifogas detta prov)

Programmerbara kretsar och VHDL. Föreläsning 9 Digitalteknik Mattias Krysander Institutionen för systemteknik

Programmerbara kretsar och VHDL 1. Föreläsning 9 Digitalteknik, TSEA22 Oscar Gustafsson, Mattias Krysander Institutionen för systemteknik

Exempel på ett litet Ada-program

Angående buffer. clk clear >=1 =9?

Introduktion C-programmering

Strukturell VHDL. Grundläggande kunskaper om. och TESTBÄDD. UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg ver 1.

Repetition C-programmering

Programmerbara kretsar och VHDL. Föreläsning 10 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Klassdeklaration. Metoddeklaration. Parameteröverföring

std_logic & std_logic_vector

-c wc. Pre- Next state Out- Vi ser att tillstånden är redan sorterade i grupper med olika utsignaler,

TDDC77 Objektorienterad Programmering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Pascal... Pascal. Pascal... Pascal...

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Simulering med ModelSim En kort introduktion

F4. programmeringsteknik och Matlab

Beräkningsvetenskap föreläsning 2

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Objektorienterad programmering Föreläsning 4

Visual Basic, en snabbgenomgång

Översikt över Visual Basic

Tentamen i Digitala system - EDI610 15hp varav denna tentamen 4,5hp

Tentamen i Digitala system - EITA15 15hp varav denna tentamen 4,5hp

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

SMD 134 Objektorienterad programmering

Programmering A. Johan Eliasson

DESIGN AV KOMBINATORISK LOGIK

TENTAMEN TDDB53. Programmering i Ada för MI (provkod TEN2) den 7 april 2010 kl Institutionen för datavetenskap, IDA Olle Willén mars 2010

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Digitalteknik syntes Arne Linde 2012

KOMPLETTERANDE HEMTENTAMEN 2 TDDB53

Programmeringsteknik I

Styrteknik: MELSEC FX och numeriska värden

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Styrteknik: Binära tal, talsystem och koder D3:1

Parameteröverföring. Exempel. Exempel. Metodkropp

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

KOMBINATORISKA FUNKTIONER...1

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Digital elektronik CL0090

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Tentamen i IE1204/5 Digital Design onsdagen den 5/

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Tenta i Digitalteknik

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

KOMPLETTERANDE HEMTENTAMEN TDDB53

IE1205 Digital Design: F6 : Digital aritmetik 2

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Grundläggande datalogi - Övning 1

Flödesschema som visar hur man använder Quartus II.

Föreläsning 9 Innehåll

Tenta i Digitalteknik

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Föreläsning 3: Booleans, if, switch

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Konstruktionsmetodik för sekvenskretsar

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

KALKYLATOR LABORATION4. Laborationens syfte

Konstruktionsmetodik för sekvenskretsar. Föreläsning 7 Digitalteknik, TSEA22 Mattias Krysander Institutionen för systemteknik

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

Programmering för språkteknologer I, VT2012. Rum

LAB VHDL-programmering

Enkla datatyper minne

Föreläsning 3-4 Innehåll

Datatyp - mera. Begreppet värde, igen. Ett slags mått på en egenskap, eller något fenomen. Ska ges en bred tolkning!

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Transkript:

GRUNDER I VHDL Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

KOMPONENTMODELL Modell för att beskriva komponenter Externt interface Intern funktion Portar: externa kopplingar till komponenten VHDL-komponent A B C Komponentens - Beteende eller - Struktur X Y Funktion: ett antal parallella processer 2

KODMODELL VHDL-komponent Deklaration av entity Interface - Entity med portar Deklaration av architecture Funktion - architecture 3

DEKLARERA VHDL- KOMPONENTENS INTERFACE MUX 2-1 a b y entity mux2 is port ( a: in STD_LOGIC; b: in STD_LOGIC; sel: in STD_LOGIC; y: out STD_LOGIC; ); end mux2; sel 4

PORTAR I VHDL Deklarationen av Portar är den viktigaste delen i deklarationen av entity Varje port representerar Komponentens externa kopplingar (pins) Varje port har ett Port-namn Mode Datatyp En identifierare som du skapar Avgör datats riktning Vilken slags värden en port kan tilldelas 5

EN VHDL-KOMPONENTS PORTAR port definierar inputs och outputs entity mux2 is port ( a: in STD_LOGIC; b: in STD_LOGIC; sel: in STD_LOGIC; y: out STD_LOGIC; ); end mux2; in/out definierar portens mode, vilket avgör i vilken riktning data kan skickas. std_logic är datatypen som används för inputs och output 6

DE MODES EN PORT KAN HA IN OUT BUFFER INOUT Signalen går bara in till komponenten, och värdet drivs av en annan komponent. Inputsignalen används på tilldelningens högra sida: z <= a OR inport Signalen går ut från komponenten. Komponenten kan inte läsa av värdet på utgången. Används på vänster sida i tilldelningen: outport <= a OR b Signalen går ut från komponenten. Komponenten kan läsa av värdet på utgången. Kan användas på båda sidor i tilldelningen: buffer_port <= a OR b; z <= buffer_port OR c; Signalen kan gå i båda riktningar, antingen in eller ut. Komponenten kan läsa av signalens värde. -Signalen kan drivas av andra komponenter -Kan användas på båda sidor av en tilldelning 7

DEKLARATION AV ARCHITECTURE Namn på architecture Namn på entity begin end för architecture architecture mux2_arch of mux2 is begin mux2_1: process(a, b, sel) begin if sel = '0' then y <= a; else y <= b; end if; end process mux2_1; end mux2_arch; Process med sensitivity-list Sekventiella uttryck (if-then-else) i processen begin end för processen 8

ATT BESKRIVA FUNKTIONEN I ARCHITECTURE MUX 2-1 architecture mux2_arch of mux2 is begin mux2_1: process(a, b, sel) begin if sel = '0' then y <= a; else y <= b; end if; end process mux2_1; end mux2_arch; a b sel I architecture beskrivs komponentens funktion: Om sel är 0 så sätts värdet på a på utgången y. Annars (sel=1) sätts b s värde på utgången y. y 9

STRUKTUR PÅ ARCHITECTURE architecture name_arch of name is Deklaration av signaler begin Parallella uttryck Process 1 Signaler används för kommunikation mellan komponenter och parallella uttryck. Signaler kan endast deklareras på architecture-nivå (ej i processer) Parallella uttryck Process 2 Inuti en process sker exekveringen sekventiellt. Parallella uttryck end name_arch; Processer och parallella uttryck exekveras parallellt. 10

EXEMPEL PÅ PARALLELLA OCH SEKVENTIELLA UTTRYCK ENTITY ename IS Ports( a, b, c: IN bit; y, z, w: OUT bit; ); Deklarationer -- inga variabler tillåtna END ename ARCHITECTURE first OF ename IS Deklarationer -- inga variabler, men signaler är OK BEGIN y <= a AND b; PROCESS (a,b,c) Deklarationer -- inga signaler, men variabler är OK VARIABLE v: bit; BEGIN v := (a OR b); v := v AND c; w <= a XOR v; END PROCESS; z <= c XOR b; Parallella processer och uttryck Uttryck i processer är sekventiella END first; 11

IDENTIFIERARE I VHDL Identifierare (Identifiers) Är namn på saker som du skapar T.ex. namn på architectures, entities, processer, variabler, signaler Regler för namngivning Får inte vara ett reserverat ord i VHDL (t.ex. for, if) VHDL är case-insensitive Första tecknet måste vara en bokstav Sista tecknet får inte vara ett underscore (_) Man får inte ha två underscores i rad 12

OBJEKT I VHDL Objekt kan hålla ett värde Objekt har class och type Class avgör vilken slags operationer som kan utföras på objektet Type avgör vilken slags värden objektet kan hålla Objekt kan initieras (endast för simulering) De deklareras i entity, architecture, process, eller package 13

CLASSES I VHDL Signal Deras värden ändras som en funktion av tiden De har en signal-driver, och kan ses som en ledning ( wire ) Variable Deras värden ändras direkt efter tilldelning Ej tidsbundna Constant Deras värden kan ej ändras File Värden till och från en extern fil 14

DATATYPER I VHDL VHDL har strikt typkontroll Objekt med olika typer kan ej blandas Funktioner för typomvandling måste användas Två huvudsakliga kategorier av datatyper Skalär ( Scalar ) Kan tilldelas ett enstaka värde Exempel: enumeration, integer, float, physical Sammansatt ( Composite ) Kan tilldelas flera värden Exempel: array, record 15

SKALÄR Enumeration En lista med diskreta värden som en variabel kan tilldelas Ex: type weekday = (mon, tue, wed, thu, fri, sat, sun); Integer En grupp heltal positiva eller negativa En fördefinierad datatyp Integer är 32 bitar med tecken: 2 31 to +(2 31-1) När man beskriver hårdvara kan man använda ett begränsat område Ex: variable num: integer range 64 to 64 16

SKALÄR Floating-point Den fördefinierade datatypen är real 32-bits single precision Används inte för att beskriva hårdvara Resulterar i för komplex hårdvara Physical Datatyp för fysikaliska storheter Ex. time, ma, Volt Har ingen mening när man beskriver hårdvara 17

EXEMPEL PÅ ENUMERERADE DATATYPER Fördefinierade typer (1076) type boolean is (FALSE, TRUE); type bit is ( 0, 1 ); Fördefinierade typer (1164) Std_logic Std_ulogic Arrayer av dessa typer och under-typer Man kommer åt dessa typer genom att inkludera: LIBRARY ieee; USE ieee.std_logic_1164.all; 18

STD_LOGIC Definition av std_logic type std_ulogic is ( U, -- Uninitialized X -- Forcing unknown 0 -- Forcing zero 1 -- Forcing one Z -- High impedance W -- Weak unknown L -- Weak zero H -- Weak one - );-- Don t care subtype std_logic is resolved std_ulogic; library IEEE; use IEEE.std_logic_1164.all; Lägg detta först i VHDL-koden för att inkludera libraries (packages) 19

SAMMANSATTA DATATYPER Arrayer Exempel på deklarationer av 8-bitars vektorer signal s1: bit_vector(7 downto 0); variable v1: bit_vector(7 downto 0); Tilldelning av bitvektorn 11010010 s1 <= 11010010 ; v1 := 11010010 ; Least significant bit Most significant bit 20

SAMMANSATTA DATATYPER Ex: tvådimensionell array type table6x2 is array (0 to 5, 1 downto 0) of bit; constant mytable: table6x2 := ( 00, 01, 10, 11, 01, 01 ); 0 1 2 3 4 5 1 0 0 1 1 0 0 0 0 1 0 1 1 1 Ex: Bit-vektorer för binära, oktala and hexadecimala tal X A3 -- = B 1010_0011 för en 8-bits vektor O 27 -- = B 010_111 för en 6-bits vektor 21

ATTRIBUT Attribut Håller information om en signal, variabel, datatyp, funktion. Exempel #1 type bitcount is integer range 3 to +5; -3-2 -1 0 +1 +2 +3 +4 +5 bitcount left bitcount right bitcount low bitcount high 22

ATTRIBUT Exempel #2 type byte is array (7 downto 0) of std_logic; 7 6 5 4 3 2 1 0 byte left byte low byte high byte right i går från 7 ner till 0 Exempel #3 for i in byte high downto byte low loop v_byte(i) := 1 ; end loop; 23

OPERATORER I VHDL Operatorer för jämförelse Aritmetiska operationer Symbol Operation = equal /= Un-equal < Less than > Greater than <= Less-equal >= Greater-equal Symbol Operation + addition - subtraktion * multiplikation / division abs Absolute value rem remainder mod modulus ** exponent Stöds av syntetiseringsverktyg 24

SLUT PÅ FÖRELÄSNING 4 Innehåll Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse 25