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

Relevanta dokument
Exempel 9.3. Present. Output. w w Next state

Simulering med ModelSim En kort introduktion

VHDL och laborationer i digitalteknik

DESIGN AV SEKVENTIELL LOGIK

IE1205 Digital Design: F9: Synkrona tillståndsautomater

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

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

std_logic & std_logic_vector

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

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

D2 och E3. EDA321 Digitalteknik-syntes. Fredag den 13 januari 2012, fm i M-salarna

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

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

Digital elektronik CL0090

Omtentamen IE Digital Design Måndag 14/

Tentamen i IE1204/5 Digital Design Torsdag 29/

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

Tentamen i IE1204/5 Digital Design måndagen den 15/

Konstruktionsmetodik för sekvenskretsar

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

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

Sekvensnät Som Du kommer ihåg

KALKYLATOR LABORATION4. Laborationens syfte

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Simulering med ModelSim En kort introduktion

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

Tentamen i IE1204/5 Digital Design onsdagen den 5/

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

LAB VHDL-programmering

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

VHDL 1. Programmerbara kretsar

DIGITALTEKNIK. Laboration D172

Asynkrona sekvensmaskiner

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

Tentamen med lösningar i IE1204/5 Digital Design Torsdag 29/

Sea-Doo SPARK. Modellernas serienummer: Produkt: Vattenskoter Märke: Sea-Doo Spark 2014 Beslut

Tenta i Digitalteknik

IE1204 Digital Design

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

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

Programmerbar logik och VHDL. Föreläsning 4

Tentamen IE Digital Design Fredag 13/

Omtentamen med lösningar i IE1204/5 Digital Design Fredag 10/

Sekvensnät i VHDL del 2

Tenta i Digitalteknik

Design av mindre digitala system. Föreläsning Digitalteknik, TSEA52 Mattias Krysander Institutionen för systemteknik

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

Konstruktion av digitala system - VHDL

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

Tentamen i IE Digital Design Fredag 21/

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

Tenta i Digitalteknik

VHDL2. Sekvensnätsexemplet

KOMBINATORISKA FUNKTIONER...1

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

Digital Design IE1204

Digital Design IE1204

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

VHDL2. Sekvensnätsexemplet

IE1204/5 Digital Design typtenta

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

Tentamen IE Digital Design Måndag 23/

Tenta i Digitalteknik

IE1204/5 Digital Design typtenta

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

Tentamen IE1204 Digital Design Måndag 15/

Simulera med ModelSim

LABORATIONSINSTRUKTION LABORATION

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

Flaskautomaten Ett design-exempel av Ingo Sander

Tentamen IE Digital Design Fredag 15/

Tentamen med lösningar i IE Digital Design Fredag 21/

Omtentamen med lösningar IE Digital Design Måndag 14/

Tentamen med lösningar i IE1204/5 Digital Design Måndag 27/

Digital Design IE1204

LEJON LABORATION3. Laborationens syfte

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

Digital elektronik CL0090

Tentamen med lösningar för IE1204/5 Digital Design Torsdag 15/

Tenta i Digitalteknik

Tentamen med lösningar IE Digital Design Måndag 23/

Digital Design IE1204

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

Tenta i Digitalteknik

Digitala projekt Elektro- och informationsteknik

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

Tentamen med lösningar IE Digital Design Fredag 13/

SEKVENSKRETSAR. Innehåll

Digitalteknik syntes Arne Linde 2012

Tentamen med lösningar i IE Digital Design Fredag 15/

Digital Design IE1204

Översikt, kursinnehåll

VHDL3. Angående buffer

L15 Introduktion modern digital design

DESIGN AV KOMBINATORISK LOGIK

Repetition delay-element

Digital- och datorteknik, , Per Larsson-Edefors Sida 1

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

IE1204/IE1205 Digital Design

Transkript:

9.17 Vi översätter beskrivningen till ett flödesdiagram, Figur E9.17a -c -c z=1 E A z=1 E A z=0 z=0 z=0 D z=0 D Figur E9.17a Flödesdiagram B z=0 B z=0 C z=0 C z=0 som vi i sin tur översätter till en flödestabell, Figur E9.17b. sent put Pre- Next state Out- Vi ser att tillstånden är redan sorterade i grupper med olika utsignaler, state 00 01 10 11 z A A* B D - 0 bara tillstånd E har avvikande utsignal. Vi ser också att vi kan vi har B A B* - C 0 inga tillstånd med stabila tillstånd C - B D C* 0 och don t care-tillstånd i samma positioner. Vad vi kan göra är att se om D A - D* E 0 E A E* D E* 1 vi kan slå ihop några rader utan att Figur E9.17b Flödestabell deras innehåll kommer i konflikt med varandra. Ur flödestabellen så får vi sammanfogningsdiagrammet (merging diagram) i Figur E9.17c och kan slå samman tillstånd A, B och C. Figur E9.17c Sammanfogningsdiagram Sida 1

Vi får den reducerade flödestabellen i Figur E9.17d Vi ger de olika vägarna till stabila tillstånd nummer och får Figur E9.17e. Från denna tabell kan vi rita translationsgraf, Figur E9.17f Figur E9.17d Flödestabell Present Next state Output state 00 01 10 11 z A A* A* D A* 0 D A - D* E 0 E A E* D E* 1 Present Next state Output state 00 01 10 11 z A 1* 2* 4 3* 0 D 1-4* 6 0 E 1 5* 4 6* 1 Figur E9.17e Reducerad flödestabell Tre tillstånd bör vi kunna koda med hjälp av två tillståndsvariabler. Vi ser dock att vi har övergångar mellan alla tillstånd vilket betyder att vi inte har någon hasardfri tillståndskodning där bara en variabel i taget får slå om. Låt oss se om vi kan ändra flödestabellen utan att ändr funktionen. Det ser ut att vara enklast att göra något åt den övergång som sker bara i en situation, dvs övergången rån E till A. Vi kan göra så att vi låter övergången från E i stället gå till D och då detta inte är ett stabilt tillstånd så går vi direkt över till tillstånd A som vi önskar. Vi får den nya translationsgrafen, Figur E9.17g ochden nya flödestabellen, Figur E9.17h Figur E9.17f Translationsgraf Figur E9.17g Translationsgraf Sida 2

Låt oss ge tillstånden kodning. Då vi har två tilståndsbitar så har vi fyra koder att välja bland men vi kan inte välja fritt eftersom vi måste undvika övergångarna 01, 10 och 00, 11. Låt oss välja kodningarna 00, 01 och 10 med 00 i mitten dvs i tillstånd D. Vi får flödestabellen Figur E9.17i Present Next state Output state 00 01 10 11 z A A* A* D A* 0 D A - D* E 0 E D E* D E* 1 Figur E9.17d Flödestabell Present state Next state Output 00 01 10 11 y 1 y 0 Y 1 Y 0 Y 1 Y 0 Y 1 Y 0 Y 1 Y 0 z 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 - - 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 Figur E9.17i Reducerad flödestabell med tilståndskodning Här får vi vara försiktig Present Next state Output så att inte don t care state positionen ställer till 00 01 10 11 något om vi optimerar fel. Vi definierar denna y 1 y 0 Y 1 Y 0 Y 1 Y 0 Y 1 Y 0 Y 1 Y 0 z position genom att låta 0 1 0 1 0 1 0 0 0 1 0 tillståndsmaskinen 0 0 0 1 0 0 0 0 1 0 0 stanna i sitt tillstånd om 1 0 0 0 1 0 0 0 1 0 1 vi får detta villkor. Vi Figur E9.17i Reducerad flödestabell med tilståndskodning fr flödestabellen i Figur E9.17j. Vi använder Karnaughdiagram för att ta fram våra logiska uttryck Figur E9.17k Karnaughdiagram för Y 1 Figur E9.17l Karnaughdiagram för Y 0 Sida 3

Y 1 = c y1 y0 + w c y0 Y 0 = c y1 y0 + w y1 y0 + w y1 y0 z = y 1 Figur E9.17m Karnaughdiagram för z Och vi får kopplingen i Figur E9.17m Figur E9.17n Realiserad koppling Sida 4

Vi kan också tänka oss att använda oss av en Mealymodell vilket betyder att vi har möjlighet att slå samman tillstånd med olika utsignal. Låt oss se på vår flödestabell, Figur E9.17b som vi upprepar i Figur E9.17o. Vi ser att vi för en Mealymodell har några fler möjligheter som inte fanns i Mooremodellen. Vi får sammanfogningsdiagrammet i Figur E9.17p där vi ser att vi förutom att slå samman tillstånden A, B och C även kan slå samman tillstånden D och E. Vilket gör att vi bara får två tillstånd men vår reducerade flödestabell måste kompletteras med kollumner som indikerar att utsignalen styrs av insignalerna och inte bara i vilket tillstånd vi befinner oss. Output Present Next state state 00 01 10 11 z A A* B D - 0 B A B* - C 0 C - B D C* 0 D A - D* E 0 E A E* D E* 1 Figur E9.17o Flödestabell Present Next state Output z state 00 01 10 11 00 01 10 11 A A* A* D A* 0 0 0 0 D A D* D* D 0 1 0 1 Figur E9.17p Sammanfogningsdiagram Vi får den reducerade flödestabellen Figur E9.17q. Då det bara återstår två tillstånd så innebär detta att vi klarar oss med ett enda logiskt uttryck för att beskriva tillståndet och dessutom behöver vi ett logiskt villkor för vår utsignal. Vi skriver om den reducerade tillståndstabellen och tillståndskodar genom att ersätta A och D med logiska värden, Figur E9.17q Figur E9.17q reducerad flödestabell Present Next state, Y Output z state, y 00 01 10 11 00 01 10 11 0 0* 0* 1 0* 0 0 0 0 1 0 1* 1* 1 0 1 0 1 Tabell E9.17r Reducerad flödestabell med tillståndskodning Vi kan bestämma de logiska uttrycken med hjälp av Karnaughdiagram Sida 5

Figur E9.17s Karnaughdiagram för Y Figur E9.17t Karnaughdiagram för z Y = w c + w y + c y z = c y Vi får kopplingen i Figur E9.17t Låt oss skriva VHDL-kod för de fyre tillståndsnmaskinerna. Koden kan skrivas som en beteendemässig eller en strukturell modell. I det första fallet beskriver vi funktionen medan vi i det andra fallet beskriver logiken. Vi får först för den beteendemässiga Mooremaskinen -- ex9_17_moore_beh.vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex9_17_moore_beh IS PORT(Resetn,w,c:IN STD_LOGIC; z :OUT STD_LOGIC); END ex9_17_moore_beh; ARCHITECTURE arch_ex9_17_moore_beh OF ex9_17_moore_beh IS TYPE state_type IS (A,D,E); SIGNAL state:state_type; PROCESS(w,c,Resetn) Sida 6

IF Resetn='0' THEN state <= A; CASE state IS IF (w='1' AND c='0') THEN state <= D; state <= A; WHEN D => IF (w='0' AND c = '0') THEN state <= A; ELSIF (w='1' AND c = '1') THEN state <= E; state <= D; WHEN E => IF (w='0' AND c = '0') THEN state <= A; ELSIF (w='1' AND c = '0') THEN state <= D; state <= E; END CASE; PROCESS(state) CASE state IS z <= '0'; WHEN D => z <= '0'; WHEN E => z <= '1'; END CASE; END arch_ex9_17_moore_beh; och för den beteendemässiga Mealymaskinen får vi Sida 7

-- ex8_17_mealy_beh.vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex9_17_mealy_beh IS PORT(Resetn,w,c:IN STD_LOGIC; z :OUT STD_LOGIC); END ex9_17_mealy; ARCHITECTURE arch_ex9_17_mealy_beh OF ex9_17_mealy_beh IS TYPE state_type IS (A,B); SIGNAL state:state_type; PROCESS(w,c,Resetn) IF Resetn='0' THEN state <= A; CASE state IS IF (w='1' AND c='0') THEN state <= B; state <= A; WHEN B => IF (w='0' AND c = '0') THEN state <= A; state <= B; END CASE; PROCESS(state,w,c) CASE state IS z <= '0'; WHEN B => IF c='1' THEN z <= '1'; z <= '0'; Sida 8

END CASE; END arch_ex9_17_mealy_beh; och vi skriver en do-fil för simulering i Modelsim. Vi kan använda samma simuleringsfil för bådea beteendemässiga modeller -- ex9_17_moore_or_mealy_beh.do restart -f -nowave view signals wave add wave Resetn w c state z force c 0 0, 1 50ns -repeat 100ns force c 0 force Resetn 0 run 225ns force Resetn 1 force w 1 run 500ns run 200ns force w 1 run 250ns run 200ns Låt oss nu skriva VHDL-kod för den strukturella Mooremaskinen -- ex9_17_moore_struct.vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex9_17_moore_struct IS PORT(Resetn,w,c:IN STD_LOGIC; z :OUT STD_LOGIC); END ex9_17_moore_struct; ARCHITECTURE arch_ex9_17_moore_struct OF ex9_17_moore_struct IS SIGNAL Y_signal:std_logic_vector(1 DOWNTO 0); Y_signal(1) <= '0' WHEN resetn = '0' (w AND c AND NOT(Y_signal(0))) OR (c AND Y_signal(1) AND NOT(Y_signal(0))); Y_signal(0) <= '0' WHEN resetn = '0' (c AND NOT(Y_signal(1)) AND Sida 9

Y_signal(0)) OR (NOT(w) AND NOT(Y_signal(1)) AND Y_signal(0)) OR (NOT(w) AND NOT(Y_signal(1)) AND NOT(Y_signal(0))); z <= Y_signal(1); END arch_ex9_17_moore_struct; Och vi får för den strukturella Mealymodellen -- ex9_17_mealy_struct.vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex9_17_mealy_struct IS PORT(Resetn,w,c:IN STD_LOGIC; z :OUT STD_LOGIC); END ex9_17_mealy_struct; ARCHITECTURE arch_ex9_17_mealy_struct OF ex9_17_mealy_struct IS SIGNAL Y_signal:std_logic; Y_signal <= '0' WHEN resetn = '0' (w AND NOT(c)) OR (w AND Y_signal) OR (c AND Y_signal); z <= c AND Y_signal; END arch_ex9_17_mealy_struct; Vi kan använda samma do-fil för att simulera de tcå strukturella modellerna även om Y_signal i det ena fallet är en vektor och i det andra en enda signal -- ex9_17_moore_or_mealy_struct.do restart -f -nowave view signals wave add wave Resetn w c Y_signal z force c 0 0, 1 50ns -repeat 100ns force c 0 force Resetn 0 run 225ns force Resetn 1 force w 1 run 500ns run 200ns Sida 10

force w 1 run 250ns run 200ns Vi kan också lägga in de fyra tillståndsmaskinerna i samma VHDL-fil för att kunna jämföra utsignalerna men då måste vi göra några små ändringar för att skilja de två tillståndsmaskinerna åt. Vi måste införa olika signalnamn. Vi får -- ex9_17.vhdl LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY ex9_17 IS PORT(Resetn,w,c:IN STD_LOGIC; z_moore_beh,z_mealy_beh,z_moore_struct, z_mealy_struct:out STD_LOGIC); END ex9_17; ARCHITECTURE arch_ex9_17 OF ex9_17 IS -- Moore beteende TYPE state_moore_beh_type IS (A,D,E); SIGNAL state_moore_beh:state_moore_beh_type; TYPE state_mealy_beh_type IS (A,B); -- Mealy beteende SIGNAL state_mealy_beh:state_mealy_beh_type; -- Moore struct SIGNAL Y_Moore_struct:std_logic_vector(1 DOWNTO 0); -- Mealy struct SIGNAL Y_Mealy_struct:std_logic; Moore_beteende_process: PROCESS(w,c,Resetn) IF Resetn='0' THEN state_moore_beh <= A; CASE state_moore_beh IS IF (w='1' AND c='0') THEN state_moore_beh <= D; state_moore_beh <= A; WHEN D => IF (w='0' AND c = '0') THEN Sida 11

state_moore_beh <= A; ELSIF (w='1' AND c = '1') THEN state_moore_beh <= E; state_moore_beh <= D; WHEN E => IF (w='0' AND c = '0') THEN state_moore_beh <= A; ELSIF (w='1' AND c = '0') THEN state_moore_beh <= D; state_moore_beh <= E; END CASE; z_moore_beteende_process: PROCESS(state_Moore_beh) CASE state_moore_beh IS z_moore_beh <= '0'; WHEN D => z_moore_beh <= '0'; WHEN E => z_moore_beh <= '1'; END CASE; Mealy_beteende_process: PROCESS(w,c,Resetn) IF Resetn='0' THEN state_mealy_beh <= A; CASE state_mealy_beh IS IF (w='1' AND c='0') THEN state_mealy_beh <= B; state_mealy_beh <= A; WHEN B => IF (w='0' AND c = '0') THEN state_mealy_beh <= A; Sida 12

state_mealy_beh <= B; END CASE; z_mealy_beteende_process: PROCESS(state_Mealy_beh,w,c) CASE state_mealy_beh IS z_mealy_beh <= '0'; WHEN B => IF c='1' THEN z_mealy_beh <= '1'; z_mealy_beh <= '0'; END CASE; --Moore struct Y_Moore_struct(1) <= '0' WHEN resetn = '0' (w AND c AND NOT(Y_Moore_struct(0))) OR (c AND Y_Moore_struct(1) AND NOT(Y_Moore_struct(0))); Y_Moore_struct(0) <= '0' WHEN resetn = '0' (w AND c AND Y_Moore_struct(0)) OR (c AND NOT(Y_Moore_struct(1)) AND Y_Moore_struct(0)) OR (NOT(w) AND NOT(c) AND NOT(Y_Moore_struct(1))); z_moore_struct <= Y_Moore_struct(1); --Mealy struct Y_Mealy_struct <= '0' WHEN resetn = '0' (w AND NOT(c)) OR (w AND Y_Mealy_struct) OR (c AND Y_Mealy_struct); z_mealy_struct <= c AND Y_Mealy_struct; END arch_ex9_17; Vi får också göra några små ändringar i do-filen -- ex9_17.do Sida 13

restart -f -nowave view signals wave add wave Resetn w c state_moore_beh state_mealy_beh Y_Moore_struct Y_Mealy_struct z_moore_beh z_mealy_beh z_moore_struct z_mealy_struct force c 0 0, 1 50ns -repeat 100ns force c 0 force Resetn 0 run 225ns force Resetn 1 force w 1 run 500ns run 200ns force w 1 run 250ns run 200ns Då vi simulerar filen så kommer vi att se att vi inte får exakt samma tidsförlopp i de fyra fallen Sida 14