ELEKTRONIK LABORATION D0. Digitalteknik. Kombinatoriska nät, VHDL, PLD. Sekvensnät beskrivna med VHDL och realiserade med PLD

Relevanta dokument
Laboration D159. Sekvensnät beskrivna med VHDL och realiserade med PLD. Namn: Datum: Epostadr: Kurs:

DIGITALTEKNIK. Laboration D172

Programmerbar logik (PLD) Programmeringsspråket VHDL Kombinatoriska funktioner i VHDL för PLD Sekvensfunktioner i VHDL för PLD

Utvecklingsprogram för att beskriva logiska funktioner med VHDL och realisera dem med PLD

Laboration D184. ELEKTRONIK Digitalteknik. Sekvensnät beskrivna med VHDL och realiserade med PLD

Introduktion till syntesverktyget Altera Max+PlusII

Simulering med ModelSim En kort introduktion

VHDL 1. Programmerbara kretsar

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Konstruktionsmetodik för sekvenskretsar

Simulering med ModelSim En kort introduktion

VHDL och laborationer i digitalteknik

Support Manual HoistLocatel Electronic Locks

KOMBINATORISKA FUNKTIONER...1

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

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

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

Programmerbar logik och VHDL. Föreläsning 4

LOG/iC2. Introduction

Installation av F13 Bråvalla

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

DIGITALTEKNIK I. Laboration DE2. Sekvensnät och sekvenskretsar

Beijer Electronics AB 2000, MA00336A,

Konstruktion av digitala system - VHDL

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

Digital elektronik CL0090

Sekvensnät i VHDL del 2

std_logic & std_logic_vector

Chalmers ekniska Högskola Institutionen för Data- och Informationsteknik. EDA 321 Digitalteknik syntes Laboration 2 - VHDL

LABORATIONSINSTRUKTION

Sekvensnät. William Sandqvist

IE1205 Digital Design: F9: Synkrona tillståndsautomater

(2B1560, 6B2911) HT08

NetBeans 5.5. Avsikt. Projektfönster

1. Unpack content of zip-file to temporary folder and double click Setup

Laboration D181. ELEKTRONIK Digitalteknik. Kombinatoriska kretsar, HCMOS v 2.1

Lösningförslag till Exempel på tentamensfrågor Digitalteknik I.

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

Det finns en handledning till kortet på hemsidan. AVR STK500.

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

2.1 Installation of driver using Internet Installation of driver from disk... 3

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

FÖRELÄSNING 8 INTRODUKTION TILL DESIGN AV DIGITALA ELEKTRONIKSYSTEM

Webbregistrering pa kurs och termin

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Laboration D151. Kombinatoriska kretsar, HCMOS. Namn: Datum: Epostadr: Kurs:

Tentamen i Digitalteknik 5p

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

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

Webbreg öppen: 26/ /

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

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

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

L15 Introduktion modern digital design

DESIGN AV SEKVENTIELL LOGIK

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

SEKVENSKRETSAR. Innehåll

NetBeans 7. Avsikt. Projektfönster

Föreläsning 4 IS1300 Inbyggda system

LABORATION TSEA22 DIGITALTEKNIK D TSEA51 DIGITALTEKNIK Y. Konstruktion av sekvenskretsar med CPLD. Version: 2.2

DIGITAL ELEKTRONIK. Laboration DE3 VHDL 1. Namn... Personnummer... Epost-adress... Datum för inlämning...

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

IE1205 Digital Design: F10: Synkrona tillståndsautomater del 2

Komma igång med Adobe Presenter ver.7

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

Digital Design IE1204

Problem som kan uppkomma vid registrering av ansökan

Sekvensnät Som Du kommer ihåg

Tenta i Digitalteknik

Quick Start Guide Snabbguide

IE1205 Digital Design: F8: Minneselement: Latchar och Vippor. Räknare

Simulera med ModelSim

Boiler with heatpump / Värmepumpsberedare

Programmerbar logik och VHDL. Föreläsning 1

Digital Design IE1204

Tenta i Digitalteknik

Laboration 1 Introduktion till Visual Basic 6.0

Preschool Kindergarten

Repetition och sammanfattning av syntes och analys av sekvensnät

Lösningsföslag till Exempel på tentamensuppgifter i Digitalteknik I

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

KALKYLATOR LABORATION4. Laborationens syfte

F5 Introduktion till digitalteknik

IE1205 Digital Design: F11: Programmerbar Logik, VHDL för Sekvensnät


Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

1. Förpackningsmaskin / Packaging machine

INTRODUKTION TILL VIVADO

c a OP b Digitalteknik och Datorarkitektur 5hp ALU Design Principle 1 - Simplicity favors regularity add $15, $8, $11

IE1204/IE1205 Digital Design

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Alias 1.0 Rollbaserad inloggning


Laborationshandledning

Calculate check digits according to the modulus-11 method

Lunds Universitet LTH Ingenjörshögskolan IDa1, IEa1 Helsingborg. Laboration nr 4 i digitala system ht-15. Ett sekvensnät. grupp. namn.

Så här skriver du ditt första program i C++

Omtentamen IE Digital Design Måndag 14/

Transkript:

UMEÅ UNIVERSITET Tillämpad fysik och elektronik Lars Wållberg/ Dan Weinehall 2005-09-14 ELEKTRONIK LABORATION D0 Digitalteknik Kombinatoriska nät, VHDL, PLD. Sekvensnät beskrivna med VHDL och realiserade med PLD Kombinatoriska nät beskrivna med VHDL och realiserade med PLD. Utvecklingsprogram Warp 2/Galaxy ver 6.0 Aktiv HDL-sim ver 3.3 Galaxy programmodul för att beskriva och realisera konstruktioner Aktiv HDL-sim för simulering Namn: Datum:

2 Inledning Logiska funktioner kan elektriskt realiseras med grindar av typen NAND, AND, OR, NOR, INV. Dessa logiska grundfunktioner tillverkas på en liten halvledarplatta, chip, som sedan kapslas i olika utföranden. Dessa kapslar kallas IC-kretsar (Integrated Circuit) och tillverkas med en mängd olika logiska funktioner och elektriska egenskaper. Under 1980-talet utvecklades en ny typ av IC-kretsar där användaren själv kunde programmera in den logiska funktion man behövde. Den typen av kretsar kallas PLD (Programmable Logic Device). Programmeringsspråk För att beskriva logiska funktioner i IC-kretsar har flera olika språkverktyg utvecklats och använts. Under 1990-talet har VHDL (Very high speed integrated circuit Hardware Description Language) blivit en av de mest använda beskrivningsspråken. VHDL utvecklades för att beskriva och simulera digitala kretsar och används numera även för att realisera (förverkliga) de logiska funktionerna elektriskt. VHDL innehåller en mängd instruktioner och språkkonstruktioner. En digital konstruktion kan därför beskrivas på flera olika sätt och ändå ge samma logiska funktion. Kursen i Digitalteknik I kommer bl.a. att ge de viktigaste grundkunskaperna för att kunna realisera enkla kombinatoriska nät beskrivna med VHDL. Flera olika beskrivningssätt kan användas i laborationerna. Senare i kursen kommer sekvenskretsar att beskrivs. Några exempel på VHDL-beskrivningar finns i ett VHDL-kompendium. VHDL I VHDL är ENTITY och ARCHITECTURE två viktiga begrepp. ENTITY betyder enhet, "helhet", och är den del i VHDL-koden som används för att beskriva en konstruktions in- och utgångar. ARCHITECTURE betyder utformning, och är den kod som beskriver enhetens logiska egenskaper, det vill säga hur ingångarna påverkar utgångarna. I denna laboration, som behandlar kombinatoriska nät, ska det som i VHDL kallas CONCURRENT STATEMENTS användas. CONCURRENT STATEMENTS betyder "samtidiga uppgifter". I de flesta andra språkkonstruktioner utförs uppgifterna sekventiellt, det vill säga i en viss turordning. Allteftersom koden körs uppdateras olika signaler. VHDL är ett parallellt språk där ordningen på instruktionerna inte spelar någon roll. Utsignalerna uppdateras inte förrän alla insignaler är stabila. Alla utsignalerna uppdateras därefter samtidigt.

3 Kort beskrivning av utvecklingsprogramvaran Warp 2 Warp2 är ett av de utvecklingsprogram där både Verilog ochvhdl kan användas för att beskriva digitala konstruktioners funktion. Tvåprogrammoduler kommer att användas. Galaxy för editering, syntaxkontroll och kompilering samt för generering av jedecfil (ett filformat som används för programmering av PLD-kapslar). Activ-HDL Sim för att simulera och kontrollera konstruktionens funktion. Om Du inte använt programvaran tidigare, följ denna instruktion. Galaxy 1. Starta Galaxy genom att dubbelklicka på programikonen. 2.1 Om det är första gången Du använder Galaxy ska först en ny mapp skapas. Mappen ska Du skapa under Warp. (C:\Warp\din_mapp) Den nya mappen ska ges ett namn som är personligt för just Dig. 2.2 Välj sedan File/New. 2.3 Ett nytt fönster visas. Välj Project [Target Device]. OK (De två andra alternativen kommer att förklaras senare.) 3 I fönstret ska först ett Project name anges. Välj t.ex. lab152_1. Under Project path ska mappadressen C:\warp\din_mapp anges. Använd gärna Browse för att placera projektet i den nya mapp Du skapat. Välj sedan att spara. 3.1 I Ditt projekt ska nu den första VHDL-koden editeras. Välj nu File/New/Text File/OK Nu kommer markören att placeras i en texteditor. En bra egenskap hos denna editor är att den känner igen så kallade reserverade ord i VHDL och ger dessa ord en annan färg. För att editorn ska få denna egenskap måste filen först sparas en gång där filnamnet har tillägget.vhd. Texteditorn har de flesta egenskaper en standard Windowsanpassad editor har. 3.2 Skriv in t.ex. nedanstående VHDL-kod i editorn. ENTITY exor IS PORT( a,b :IN bit; ut :OUT bit); END; ARCHITECTURE beh_exor OF exor IS BEGIN ut <= a XOR b; END;

4 3.3 Spara filen (File/Save) tex med namnet exor.vhd. (Förlängningen.vhd läggs inte till automatiskt om man bara skriver filnamnet. Därefter OK.) 3.4 Gå till Project/Add files och markera den fil nyss sparade filen. Klicka på add/ok 3.5 I projektfönstret adderas en ikon och ett filnamn. Bara de filer som finns i projektfönstret kan kompileras. Markera en fil i projektfönstret. Den ändrar färg till röd. 3.6 Välj sedan Compile/Selected File(s). Eftersom du valt Project [Target device] så måste en kapsel (device) väljas. Välj Device C22V10 och Package PLAC22V10D-25PC. 3.7 Nu kan kompilering av filen göras. Välj Compile/Selected File(s) 3.8 Om koden är felfri fås meddelandet Compilation successfull på meddelandelisten längst ner i fönstret Output Window. I annat fall (vanligtvis) finns fel i koden och man får meddelandet compilation failed. Programmet ger ett felmeddelande och föreslår en åtgärd i fönstret Errors & Warnings Tyvärr är felmeddelandena ofta svårtolkade och den föreslagna åtgärden inte alltid korrekt, men felet finns ofta i närheten av den rad och kolumn som anges. Rätta felen, spara och kompilera igen tills Compilation successfull meddelas. 3.7 Nu kan koden simuleras med programmet Aktive HDL Sim. Mera om detta program senare. 3.8 Gå in under Project /Set Top. Detta innebär att en fil med s.k. jedec-format skapas. Jedec är namnet på ett format som kan användas programmering av en kapsel. Välj nu åter Compile/ Selected File(s) (Om du vill, kan du t.ex. m.h.a. Windows Utforskaren själv kontrollera att en jedec-fil har skapats -./exor.jed). Simulering med Active HDL Sim 1. Starta simulatorn med att dubbelklocka på ikonen Avhdl eller genom att under fönstret tools klicka på Activ_HDL. Två fönster Waweform och Consol öppnas. Med file/open VHDL väljs nu den textfil/vhdl-kod som ska simuleras. Koden kompileras än en gång, nu för att utfilerna ska passa simulatorn. 2. Gå Waweform/Add Signals. Ett fönster med de signaler som kan simuleras visas. Använd Ctrl och en tryckning med vänster musknapp på de signaler som ska simuleras. I den ordning som de väljs kommer de att visas i Waweformfönstret. Avsluta med Add. 3. Markera en signal t.ex. a och gå till Waweform /Stimulators. Markera åter signalen a och öppna menyn Stimulator type. Välj Hot key. Gå till Press new hotkey och skriv in A och sedan Apply. Gör på samma sätt med b men välj bokstaven B som hotkey.

5 4. Stäng fönstret och gå till Simulation/Initialize simulation. Nu startas simulatorn och signalerna ges startvärden. Med tangenterna A och B kan insignalvärdena ändras under simuleringen. Ändra tiden under Waweform till 40 ns och markera den knapp (Run for) som är till vänster om tidsrutan. Ändra värden på insignalerna med hotkeytangenterna så att alla insignalkombinationer testas. Markera sedan ikonen med med en kvadrat i ett förstoringsglas. 5. Markera alla signaler och tryck sedan höger musknapp. Välj Properties. Markera: Bold/Height=40/Literal. Gå sedan till File/Print/OK. Välj utskrift på liggande A4. Programmering av small PLD-kapsel Kopiera din *.jed-fil till en diskett. Gå till programmeraren. Följ anvisningarna som finns vid programmeraren. Uppkoppling och redovisning Koppla upp och redovisa för Din handledare. Bennummer syns dels i simuleringen och dels i filen filnamn.rpt.

6 Uppgift 1 (introduktion/övning) Använd en PLD för att realisera en EXOR grind. a. Läs föregående sidor om Warp. b. Beskriv grinden med VHDL. c. Simulera funktionen d. Programmera en kapsel (PALCE 22V10-PC eller GAL22V10) e. Koppla upp och testa funktionen. Uppgiften är mycket enkel, men avser att ge grundkunskaper om VHDL och utvecklingsverktyget Warp 2. Här följer ett exempel på en typisk lösning.skriven med VHDL och BOOLEAN EQUATIONS: ENTITY exor IS PORT( a,b :IN bit; ut :OUT bit); END; ARCHITECTURE beh_exor OF exor IS BEGIN ut <= ((NOT b) AND a) or (b AND (NOT a)); END; VHDL har en bestämd syntax, d.v.s. det finns fasta regler för hur man skriver VHDLkod. Det finns en bestämd ordning, ett bestämt sätt för hur man ska skriva instruktionerna, så att programvaran kan "förstå" den uppgift/funktion man vill ha utförd. Denna syntax får man helt enkelt lära sig. Uppgift 2 Beskriv en enbits heladderare med insignalerna a 0, b 0 och C in samt utsignalerna sum och C ut. med VHDL-kod.

7 Uppgift 3 Figuren visar en enbits komparator. Beskriv en sådan i VHDL-kod med 2 ingångar, a och b, och tre utgångar som visar resultatet av komparationen enl. diagrammet. (Bara en utgång kan bli aktiv åt gången.) a b a>b a=b a<b Uppgift 4 En 4/1 multiplexer ska beskrivas med VHDL-kod. Välj själv benämningar på in och utsignaler.

8 Följande sidor är utdrag ur Active HDL-sim/Help. A stimulator is a user-defined virtual source of stimulus attached to a signal net. The definition of a stimulator specifies a waveform which is forced on the signal and its strength, that is, the way it contributes to the effective value of the signal net. There are six types of stimulators. They are briefly described below. Clock Stimulators A clock stimulator produces a rectangular wave defined by the following parameters: frequency /period initial offset time duty cycle initial value Typically, clock stimulators are used to drive clock signals. Custom Stimulators A custom stimulator produces a graphically defined waveform. You can create the waveform manually using editing features of Waveform Editor. More typically, custom stimulators use waveforms obtained in earlier simulation runs. For example, let's assume you were using a hotkey stimulator to create some waveform during a simulation run. To re-use so created waveform during subsequent simulation runs, after re-initialization you should change the type of the stimulator assigned to the signals from Hotkey to Custom. Formula Stimulators A formula stimulator produces a waveform defined by a textual formula based on a simple syntax. The waveform is defined as a sequence of value-time pairs. The time component of a pair determines the moment the stimulated signal assumes the value defined by the value component of the pair. In addition, a formula can include the repeat switch (-r) with cause that the sequence is repeated with the specified period.

9 The syntax of formulas is as follows: <value> <time> [, <value> <time>... ] [ -r <period> ] Predefined Stimulators A predefined stimulator is either a clock or formula stimulator to which a unique name has been assigned. Since the stimulator is referenced by its name, you can easily assigned it to several signals without repeating each time its definition. Value Stimulators A value stimulator drives the signal with a constant value. If you advance simulation step by step, you can change the value between steps by redefining the stimulator. Hotkey Stimulators A hotkey stimulator is similar in concept to a value stimulator but it provides a convenient mechanism for changing the forced value. To change the stimulator value you have to simply press a specific key. Pressing the key usually toggles between two signal values, for example, '0' and '1'. However, you can define a longer list of values that will be cyclically switched by the hotkey. Stimulator Strength The strength determines the way the stimulator contributes to the effective value of the signal net. There are three strength types: Deposit The value(s) applied by the stimulator overrides the current signal value produced in the simulation model. The effect endures until there is a subsequent driver transaction (in the simulation model) or until the stimulator is removed or disabled. Drive The value(s) applied by the stimulator contributes to the current signal value as if an additional driver (corresponding to the stimulator) were attached to the signal net. The effect endures until there is a subsequent driver transaction (in the simulation model) or

10 until the stimulator is removed or disabled. This option can be used only for resolved signals. Override The value(s) applied by the stimulator overrides the current signal value produced in the simulation model. The effect endures until the stimulator is removed or disabled. Applying Stimulators Active-HDL provides graphical interface for defining and applying stimulators. All stimulators are managed in the Stimulators dialog, invoked by the Waveform /Stimulators menu command. See related procedures for details. In addition, formula stimulators can be applied using the force and noforce macro commands. Copyright 1995-1998 ALDEC, Inc. Define a hotkey stimulator and assign it to a signal 1. Select the signal in the left panel of Waveform Editor window. To select more than one signal, hold down the Ctrl key while selecting. To select all signals, choose Select All from the Edit menu. 2. Click with the right mouse button and choose Stimulators from the shortcut menu. The Stimulators dialog box will open. Go to the Signals tab. The previously selected signals will be displayed in the Signals box. 3. In the Signals box, select the signal to which you want to assign the stimulator. You can select several signals if you want to assign the same stimulator to them. 4. Select Hotkey from the Stimulator type box. 5. Click within the Press new hotkey box. Next, press the desired key. Its name should appear in the box.

11 6. Select the stimulator strength from the Strength box. 7. To effectively assign the defined stimulator, click Apply. A check mark will appear in the check box located to the left of the signal name. The type of the assigned stimulator will appear to the right of the signal name in the Type column. 8. If needed, repeat steps 3-7 for other signals displayed in the Signals box. 9. Click Close to close the dialog box. NOTE: While the Stimulators dialog box is open, you can add other signals from the Waveform Editor window by clicking their names in this window. Procedures for Waveform Editor Copyright 1995-1998 ALDEC, Inc. Define a formula stimulator and assign it to a signal 1. Select the signal in the left panel of Waveform Editor window. To select more than one signal, hold down the Ctrl key while selecting. To select all signals, choose Select All from the Edit menu. 2. Click with the right mouse button and choose Stimulators from the shortcut menu. The Stimulators dialog box will open. Go to the Signals tab. The previously selected signals will be displayed in the Signals box. 3. In the Signals box, select the signal to which you want to assign the stimulator. You can select several signals if you want to assign the same stimulator to them. 4. Select Formula from the Stimulator type box. 5. Enter the desired formula in the Enter formula box.

12 6. Select the stimulator strength from the Strength box. 7. To effectively assign the defined stimulator, click Apply. A check mark will appear in the check box located to the left of the signal name. The type of the assigned stimulator will appear to the right of the signal name in the Type column. 8. If needed, repeat steps 3-7 for other signals displayed in the Signals box. 9. Click Close to close the dialog box. NOTE: While the Stimulators dialog box is open, you can add other signals from the Waveform Editor window by clicking their names in this window. Procedures for Waveform Editor Copyright 1995-1998 ALDEC, Inc.

13 Inledning Digitala logiska kretsar och nät delar man in i kombinatoriska kretsar/nät och sekvenskretsar/nät. Det som utmärker de kombinatoriska är att en viss utsignal alltid beror enbart av en viss specifik insignal. Det som utmärker sekvenskretsar och sekvensnät är att utsignalerna beror både av kretsens/nätets tidigare tillstånd och av eventuella insignaler. Grundläggande sekvenskretsar är låskretsar och vippor. Det är en mycket viktig grupp av digitala kretsar. Allt från enkla låskretsar till komplicerade microprocessorkretsar hör till kategorien sekvenskretsar. Karakteristiskt för en grundläggande sekvenskrets (vippa) är att Tillståndsmaskiner Sekvensnät kallas ofta automater eller tillståndsmaskiner. (eng. Finite State Machine, FSM). De kan indelas i två huvudgrupper, som skiljer sig åt genom vad som påverkar deras utsignaler: Mealy-maskiner Hos en Mealy-maskin beror utsignal både på insignal och tillstånd. Moore-maskiner Hos en Moore-maskin bestäms utsignal enbart av tillstånd. En Moore är ett specialfall av en Mealy. Båda dessa typer är synkrona, d.v.s en och samma klocksignal styr när tillstånd och utsignaler kan ändra värde.

14 MOORE-maskin. i0 S0/ U0 S1/ i1 U1 i0 i1 i1 i0 S2/ U2 Exempel på tillståndsdiagram som beskriver en MOORE-maskin Det som är speciellt för en MOORE-maskin är att utsignalen U endast beror av tillståndet. OBS! Nätets utsignal kan ha samma beteckning (värden) som tillstånden (vippornas tillstånd) men är inte samma sak som tillstånden (själva vippornas utsignaler). clk in Kombinatorisk krets S + Vippor eller register Kombinatorisk krets Ut S S = nuvarande tillstånd (intern signal) S+ = nästa tillstånd (intern signal) In = insignaler Ut = utsignaler Clk = klocksignal Blockschema för MOORE-maskin

15 Typisk VHDL-beskrivning av MOORE-maskin. ENTITY cnt_moore IS PORT( i :IN bit; clk :IN bit; ut :OUT bit_vector(1 DOWNTO 0) ); END; ARCHITECTURE beh_cnt_moore 0F cnt_moore IS TYPE tillst IS (s0,s1,s2,s3); SIGNAL nuv_tillst, nst_tillst :tillst; BEGIN P0: PROCESS(nuv_tillst,i) BEGIN CASE nuv_tillst IS WHEN s0 => IF i='0' THEN nst_tillst <= s1; ELSE nst_tillst <= s3; END IF; END CASE; END PROCESS; WHEN s1 => IF i='0' THEN nst_tillst <= s2; ELSE nst_tillst <= s0; END IF; WHEN s2 => IF i='0' THEN nst_tillst <= s3; ELSE nst_tillst <= s1; END IF; WHEN s3 => IF i='0' THEN nst_tillst <= s0; ELSE nst_tillst <= s2; END IF; P1: PROCESS(clk) BEGIN IF (clk'event AND clk='1 ) THEN nuv_tillst<=nst_tillst; END IF; END PROCESS; P2: PROCESS(nuv_tillst) BEGIN CASE nuv_tillst IS WHEN s0 => ut <= "00"; WHEN s1 => ut <= "01"; WHEN s2 => ut <= "10"; WHEN s3 => ut <= "11"; END CASE; END PROCESS; END;

16 Kommentarer till VHDL-koden. I ENTITY anges parametrar för in- och utgångar, vilket MODE ("typ") som gäller för dessa parametrar samt vilka värden de kan anta (bit - dvs värdena 0 och 1), ARCHITECTURE inleds med ett namn, beh_cnt_moore, och därefter den ENTITY, cnt_moore, vars funktion beskrivs. TYPE anger vilka värden en parameter kan anta. (Jämför ENTITY där i stället en MODE anges, IN, OUT e.t.c.) SIGNAL anger vilka interna parametrar som behövs för samverkan mellan processerna (nuv_tillst, nst_tillst) och vilken TYPE som parametrarna har. PROCESS är en viktig VHDL-beskrivning som kan jämföras med procedur, funktion och andra namn på sub-program i olika programmeringsspråk. En PROCESS exekveras bara om parametrar uppräknade i en sensivity list ändrar värden. Saknas sensivity list utförs aldrig programrutinen i PROCESS. P0: process(nuv_tillst,i) I processen med beteckningen P0 används en CASE-sats för att beskriva tillståndsmaskinen. Processen P0 är alltså den programdel som "översätter" tillståndsdiagrammet till VHDL-kod och kallas deklarations del. P1: process(clk) Processen beskriver när en ändring av tillstånd kan ske och kallas synkron del. I exemplet sker tillståndsändringar vid positiv klockpulsflank. P2: process(nuv_tillst) CASE-satsen i denna process används för att ange utsignalvärden vid respektive tillstånd. OBS! Här används en mera generell metod för att beskriva kombinatorisk logik. P2 kallas för kombinatorisk del. MEALY-automat. Studera koden som beskriver en MEALY-automat i häftet Grunderna i VHDL. I den sista processen kan Du se att utsignalen beror av både insignalen och det tillstånd som maskinen för nävarande befinner sig i.

17 Uppgift 1 Övningsexempel Starta Galaxy. Skapa ett nytt Projekt under din personliga mapp. Välj New för att börja skriva in en ny VHDL-fil. Skriv in VHDL-koden från typexemplet. Kompilera och Simulera. Programmera en PLD-kapsel. Prova funktionen. Uppgift 2 Jeopardy Realisera en krets som håller reda på vem av två tävlande som först trycker på "sin" knapp. Tävlingsledaren har en nollställningsknapp (RESET). När den aktiveras släcks båda lagens lampor. När sedan någon av lagen trycker på sin knapp tänds en lampa som indikerar att det laget tryckt först. a Rita tillståndsdiagram. Visa upp för handledare. b Skriv VHDL-kod. c Kompilera, simulera och programmera en 22V10 krets. d Koppla upp Redovisa skriftligt Tillståndsdiagram,VHDL-kod och simuleringsesultat praktiskt fungerande uppkoppling (visa för lab.handledare)