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

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

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

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

Konstruktion av digitala system - VHDL

Konstruktionsmetodik för sekvenskretsar

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

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

Simulering med ModelSim En kort introduktion

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

LABORATION DATORKONSTRUKTION TSEA83 UART. Namn och personnummer. Version: (OS)

DESIGN AV SEKVENTIELL LOGIK

VHDL2. Sekvensnätsexemplet

Tentamen i IE1204/5 Digital Design onsdagen den 5/

Digital elektronik CL0090

Tentamen i IE1204/5 Digital Design onsdagen den 5/

KALKYLATOR LABORATION4. Laborationens syfte

VHDL2. Sekvensnätsexemplet

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

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

VHDL och laborationer i digitalteknik

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

Försättsblad till skriftlig tentamen vid Linköpings universitet

VHDL 1. Programmerbara kretsar

Sekvensnät. William Sandqvist

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

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

std_logic & std_logic_vector

TSEA22 Digitalteknik 2019!

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

LiTH Lab1: Asynkron seriell dataöverföring via optisk länk Laboration 1. Asynkron seriell dataöverföring via optisk länk

Datorkonstruktion. Datorkonstruktion 2018, 8hp

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

Tentamen. TSEA22 Digitalteknik 5 juni, 2015, kl

Tenta i Digitalteknik

Simulering med ModelSim En kort introduktion

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

LABORATIONSINSTRUKTION LABORATION

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

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

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

LABORATION TSEA22 DIGITALTEKNIK D

Programmerbar logik och VHDL. Föreläsning 4

VHDL3. Angående buffer

Omtentamen IE Digital Design Måndag 14/

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

Laboration i digitalteknik Introduktion till digitalteknik

Tenta i Digitalteknik

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

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

Tenta i Digitalteknik

Digitala projekt Elektro- och informationsteknik

IE1205 Digital Design: F9: Synkrona tillståndsautomater

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

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

LABORATIONSINSTRUKTION LABORATION. Räknare och skiftregister med sekvensiell VHDL. LAB NR Ver KURS. Digitalteknik INNEHÅLL. 1.

Sekvensnät i VHDL del 2

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Introduktion till Xilinx CPLD och ISE WebPack 6.2 Version NV

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

Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1

KOMBINATORISKA FUNKTIONER...1

TSEA22 Digitalteknik 2019!

Digital elektronik CL0090

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

Översikt, kursinnehåll

Ett minneselements egenskaper. F10: Minneselement. Latch. SR-latch. Innehåll:

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

Tentamen IE Digital Design Måndag 23/

IE1204/5 Digital Design typtenta

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

Digital Design IE1204

Tentamen i IE Digital Design Fredag 21/

Vad är en UART? Universal Asynchronous Receiver Transmitter parallella seriella parallell åttabitars signal mest signifikant bit

DIGITALTEKNIK. Laboration D172

Tenta i Digitalteknik

IE1204/5 Digital Design typtenta

Digitalteknik F12. Några speciella automater: register räknare Synkronisering av insignaler. Digitalteknik F12 bild 1

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

Digitala system EDI610 Elektro- och informationsteknik

Minneselement,. Styrteknik grundkurs. Digitala kursmoment. SR-latch med logiska grindar. Funktionstabell för SR-latchen R S Q Q ?

Låskretsar och Vippor

DIGITALTEKNIK I. Laboration DE2. Sekvensnät och sekvenskretsar

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

Tentamen i IE1204/5 Digital Design Torsdag 29/

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

LABORATION TSEA22 DIGITALTEKNIK D

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

L15 Introduktion modern digital design

Digital Design IE1204

Tentamen IE Digital Design Fredag 13/

Generering av analoga signaler från XSV300

Tenta i Digitalteknik

Tentamen i Grundläggande ellära och digitalteknik ETA 013 för D

LABORATION. Datorteknik Y

Tentamen i Digitalteknik 5p

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

PARALLELL OCH SEKVENTIELL DATABEHANDLING. Innehåll

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

Styrteknik distans: Minneselement, register, räknare, AD-omv D4:1

Examens arbete 10-poäng C-nivå Mälardalens Högskola Testbed for a semi-full-custom mixed signal ASIC

Transkript:

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

2 Dagens föreläsning Kursinformation för HT2. Digitaltekniska byggblock Introduktion av SR-vippa och register. Exempel på design av digitala system. Sändare för asynkron seriell överföring Ping-pong spel. Introduktion till laboration 4 (miniprojekt)

Kursinformation för HT2

4 Information om HT2, 2 hp Kurshemsida: http://www.isy.liu.se/edu/kurs/tsea52/ Kursmoment Föreläsning 1-2 lösning av större uppgifter Lab/miniprojekt görs i par, Pass 1-3: 2h, anmälan Restpass 4h, drop-in

Kursinformation Modelsim och Xilinx finns i salarna: Freja, Grinden Ni ska ha access till Grinden. Logga in och kör Modelsim och Xilinx på ixtab med studentkonto och Studentlösenord (Linux, Mac) > ssh -Y LiU-ID@ixtab.edu.isy.liu.se > module load mentor/modeltech10.4c > vsim > module load xilinx/14.7i > ise På Windows kan man ladda hem t ex mobaxterm för att få en ssh-client.

6 Handledare Petter Källström, petter.kallstrom@liu.se Narges Mohammadi Sarband, narges.mohammadi.sarband@liu.se

Digitaltekniska byggblock

8 Digitaltekniska byggblock (använd dessa) MUX Komparator ROM Räknare AND/OR-grindar + inverterare D-vippa T-vippa Enpulsare med synkronisering Komponenternas kod i pdf:en Digitaltekniska byggblock.

9 SR-vippan Funktion set = reset = 0 => q + = q set = 1 => q + = 1 reset = 1 => q + = 0 process(clk) begin if rising_edge(clk) then if (set = '1') then q <= '1'; elsif (reset = '1') then q <= '0'; end process; Dominerande set i exemplet: set > reset

10 Skiftregister signal q, data_in : std_logic_vector(3 downto 0); process(clk) begin if rising_edge(clk) then if (load = '1') then q <= data_in; elsif (shift_enable = '1') then if (shift_left = '1') then q <= q(2 downto 0) & right_in; else q <= left_in & q(3 downto 1); end process; Dominerande load LOAD>SE

Design av mindre digitala kretsar

Asynkron seriell kommunikation Vid asynkron seriell överföring finns ingen gemensam klocka och bitarna skickas seriellt efter varandra. Signal Sändare Data_out Data_in Mottagare GND GND Signal Mottagaren ska sampla mitt på bitarna. För korrekt mottagning måste mottagaren Identifiera när startbiten börjar (fallande flank) Känna till datatakten på meddelandet (baudraten)

13 Sändare Bygg en sändare som får information om fyra bitar från ett tangentbord och sänder ut detta seriellt. Formatet ska vara Startbit, databitar samt en stoppbit. Pågående sändning ska ej avbrytas och indikeras med LED (Busy).

14 Insignaler Strobe not_busy Baudrate Synk+enpuls enable Synk+enpuls strobe_ep baudrate_ep Data_in strobe_ep Reset asynkron clear 4 Register LOAD 4 data

15 Sändning/tillstånd Styr sändningen med en räknare som räknar antalet Baudratepulser q. Reset asynkron load 96 q Data_out Busy q 6 q 5 q 4 q 3 q 2 q 1 q 0 0-15 Startbit 1 000 XXXX 16-31 Data(0) 1 001 XXXX 32-47 Data(1) 1 010 XXXX 48-63 Data(2) 1 011 XXXX 64-79 Data(3) 1 100 XXXX 80-95 Stoppbit 1 101 XXXX 96 1 0 110 0000 baudrate_ep strobe_ep CE CLR 7 7-bitsräknare q: 0-> 96 LOAD 96 q 96 = not_busy Prioritet: Asynkon LOAD > CLR > LOAD > CE

16 Utsignaler Reset asynkron load 96 q Data_out Busy q 6 q 5 q 4 q 3 q 2 q 1 q 0 0-15 Startbit=0 1 000 XXXX baudrate_ep CE 16-31 data(0) 1 001 XXXX strobe_ep CLR 32-47 data(1) 1 010 XXXX 48-63 data(2) 1 011 XXXX 7 64-79 data(3) 1 100 XXXX 80-95 Stoppbit=1 1 101 XXXX 96 1 0 110 0000 3 mux_address = (q 6,q 5,q 4 ) Busy=not(not_busy) 0 0 data(0) 1 data(1) 2 data(2) 3 data(3) 4 0 5 1 6 7-bitsräknare q: 0-> 96 LOAD 96 q 96 4 = not_busy Data_out

Analys 17

Blockschema Reset asynkron load 96 18 Strobe not_busy Baudrate Synk+enpuls enable Synk+enpuls strobe_ep baudrate_ep baudrate_ep strobe_ep CE CLR 7 7-bitsräknare q: 0-> 96 LOAD 96 q 96 = not_busy Data_in strobe_ep Reset asynkron clear 4 Register LOAD 4 data 3 mux_address = (q 6,q 5,q 4 ) 0 0 data(0) 1 data(1) 2 data(2) 3 data(3) 4 0 5 1 6 4 Data_out Busy=not(not_busy)

19 Översätt blockschema till VHDL-kod library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity transmitter is Port (, Baudrate, Reset, Strobe : in std_logic; Data_in : in std_logic_vector(3 downto 0); Busy, Data_out : out std_logic); end entity transmitter; architecture Behavioral of transmitter is signal begin end architecture Behavioral;

20 Insignaler signal baudrate_sync1, baudrate_sync2, baudrate_ep : std_logic; signal strobe_sync1, strobe_sync2, strobe_ep : std_logic; process() begin if rising_edge() then baudrate_sync1 <= Baudrate; baudrate_sync2 <= baudrate_sync1; strobe_sync1 <= Strobe; strobe_sync2 <= strobe_sync1; end process; Strobe not_busy Baudrate Synk+enpuls enable Synk+enpuls baudrate_ep <= baudrate_sync1 and (not baudrate_sync2); strobe_ep <= strobe_sync1 and (not strobe_sync2) and not_busy; strobe_ep baudrate_ep

21 Indata signal data : std_logic_vector(3 downto 0); process(,reset) begin if (Reset = '1') then data <= "0000"; elsif rising_edge() then if (strobe_ep = '1') then data <= Data_in; end process; Data_in strobe_ep Reset asynkron clear 4 Register LOAD 4 data

Räknare signal q : unsigned(6 downto 0); signal not_busy : std_logic; Reset asynkron load 96 22 process(,reset) begin if (Reset = '1') then q <= "1100000"; elsif rising_edge() then if (strobe_ep = '1') then q <= "0000000"; -- CLR baudrate_ep strobe_ep elsif (not_busy = '1') then -- LOAD 96 q <= "1100000"; -- to_unsigned(96,7) elsif (baudrate_ep = '1') then -- CE q <= q + 1; end process; not_busy <= '1' when (q = 96) else '0'; CE CLR 7 7-bitsräknare q: 0-> 96 LOAD 96 q 96 = not_busy Prioritet: Asynkon LOAD > CLR > LOAD > CE

23 Utsignaler signal mux_address : std_logic_vector(2 downto 0); mux_address <= std_logic_vector(q(6 downto 4)); with mux_address select Data_out <= '0' when "000", -- Startbit data(0) when "001", -- Databit 0 data(1) when "010", -- Databit 1 data(2) when "011", -- Databit 2 data(3) when "100", -- Databit 3 '1' when "101", -- Stoppbit '1' when others; -- Idle (not busy) mux_address = (q 6,q 5,q 4 ) 3 0 0 data(0) 1 data(1) 2 data(2) 3 data(3) 4 1 5 1 6 Data_out Busy=not(not_busy) Busy <= not (not_busy);

Alternativ med skiftregister Strobe not_busy Baudrate Synk+enpuls enable Synk+enpuls strobe_ep baudrate_ep not_busy baudrate_ep Reset asynkron clear CE 4-bitsräknare CLR counter RCO Reset asynkron load 6 24 next data strobe_ep next Reset asynkron load 1 7 Register LOAD Shift right (SR) data(0) Data_out next CE strobe_ep CLR bit_counter 3-bitsräknare LOAD 6 3 6 = not_busy data(6 downto 0) = 1 & 1 & Data_in & 0; Busy=not(not_busy)

Ping-pong spel

26 Ping-pong spel En Boll, markerad med en tänd lysdiod, ska förflyttas fram och tillbaka över en spelplan bestående av en rad lysdioder. Spelet fortgår så länge de bägge spelarna trycker ned sin knapp exakt då bollen befinner sig i respektive ändläge.

2018-11-16 27 Spelregler 1. Den vänstra spelaren börjar att serva vid spelets start. 2. Serve markeras med stillastående boll på den servandes sida, samt med en LED (Serve). 3. Bollen börjar att röra sig då knappen trycks ned. 4. Om en spelare trycker ner knappen exakt när bollen är i ändläget börjar bollen röra sig i andra riktningen och det blir den andra spelarens tur. 5. Om en spelare trycker för tidigt eller om bollen går ut, vinner den andre bollen. 6. Den som vinner en boll får ett poäng och får serva. 7. Knapptryckningar av spelaren som inte är i tur ska ignoreras. 8. Insignalen Speed ska bestämma hur fort bollen rör sig.

28 Insignaler Låt dir_l vara ett tillstånd så att: dir_l = 1: bollen går åt vänster, vänster spelares tur dir_l = 0: bollen går åt höger, höger spelares tur Player_L dir_l Synk+enpuls enable player_l_ep Player_L ska bara kunna påverka spelet när det är dennes tur, dvs då dir_l = 1. Player_R not(dir_l) Synk+enpuls enable player_r_ep Player_R ska bara kunna påverka spelet när det är dennes tur, dvs då dir_l = 0. Speed not(serve_local) Reset Synk+enpuls enable D Q reset_sync speed_ep speed_ep styr när bollen ska flytta ett steg Bollen rör sig bara när det inte är serve. Låt serve_local vara en intern signal = Serve.

29 Tillstånd set_serve_l reset_sync set_serve_r reset_sync CE CLR CE CLR 4-bitsräknare L_S_local 4-bitsräknare R_S_local 4 4 Score_L Score_R När en spelare vinner en boll får den serven och en poäng. Låt set_serve_l/r initiera serve. Inför en signal move som initierar en bollförflyttning. set_serve_l move dir_l 01000000 00000010 8 8 LOAD SE L/R LOAD 8-bitars skiftregister, q q 7 q 6 q 5 q 4 q 3 q 2 q 1 q 0 LED set_dir_l set_serve_r set_dir_r set_serve set_not_serve S Q R S Q R dir_l serve_local

2018-11-16 30 Speed Boll flyttar Problem: speed_ep player_l_ep player_l_ep Bollen hoppar vidare olika snabbt beroende på när knappen trycks ner i förhållande till när speed_ep-pulserna kommer. Lösning: Räkna 16 speedpulser innan förflyttning. speed_ep player_l_ep player_l_ep speed_counter 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 Nu hoppar bollen vidare i princip lika fort.

31 Speed_counter speed_ep move CE CLR 4-bitsräknare RCO speed_counter speed_rco

32 Styrsignaler speed_ep move CE CLR 4-bitsräknare RCO speed_counter speed_rco set_serve_l reset_sync CE CLR 4-bitsräknare L_S_local 4 Score_L set_dir_l set_dir_r S Q R dir_l set_serve_r reset_sync set_serve_l move dir_l CE CLR 8 LOAD SE L/R q 7 4-bitsräknare R_S_local 8-bitars skiftregister, q q 6 q 5 q 4 q 3 q 2 q 1 4 8 q 0 Score_R 01000000 00000010 LOAD LED set_serve set_not_serve set_serve_r S Q R Styrsignaler: set_serve_l set_serve_r set_serve set_not_serve move set_dir_l set_dir_r serve_local

33 Flödesdiagram När det finns för många scenarion för att rita tidsdiagram kan flödesdiagram vara ett alternativ. Tolkning Om vi är i tillstånd q=0 och signalen x blir 1 så blir signalen u = 1 i samma klockintervall och i nästa klockintervall blir q=1 Tillstånd: q = 0 Signal som styr övergång: x Mealy utsignal: u Nästa tillstånd: q = 1 Om x = 0 följ den vänstra pilen om x=1 följ den högra pilen. =0 x =1

Programflöde och styrsignaluttryck reset_sync 34 set_serve_l: set_dir_l, set_serve, load q 6, CE Score_L set_serve_r: set_dir_r, set_serve, load q 1, CE Score_R dir_l = 1, serve_local = 1, q 6 player_l_ep set_dir_r, set_not_serve CLR Score_L, CLR Score_R dir_l = 0, serve_local = 1, q 1 player_r_ep set_dir_l, set_not_serve dir_l = 0, serve_local = 0 set_not_serve_delayed move: CLR speed_counter speed_rco q i, dir_l = 0 q 0 =0 q 1 player_r_ep =1 set_dir_l speed_rco set_dir_r dir_l = 1, serve_local = 0 set_not_serve_delayed move: CLR speed_counter q i, dir_l = 1 player_l_ep =1 q =0 6 q 7 set_serve_l = reset_sync or q 0 or (player_r_ep and (not q 1 )) set_serve_r = q 7 or (player_l_ep and (not q 6 )) set_serve = set_serve_l or set_serve_r set_not_serve = serve_local and (player_l_ep or player_r_ep) move = set_not_serve_delayed or speed_rco set_dir_l = set_serve_l or player_r_ep set_dir_r = set_serve_r or player_l_ep set_not_serve D Q set_not_serve_delayed

35 Insignaler process() begin if rising_edge() then player_l_sync1 <= Player_L; player_l_sync2 <= player_l_sync1; player_r_sync1 <= Player_R; player_r_sync2 <= player_r_sync1; speed_sync1 <= Speed; speed_sync2 <= speed_sync1; reset_sync <= Reset; end process; Player_L dir_l Player_R not(dir_l) Speed not(serve_local) Reset Synk+enpuls enable Synk+enpuls enable Synk+enpuls enable player_l_ep <= player_l_sync1 and (not player_l_sync2) and dir_l; player_r_ep <= player_r_sync1 and (not player_r_sync2) and not(dir_l); speed_ep <= speed_sync1 and (not speed_sync2) and (not serve_local); D Q reset_sync player_l_ep player_r_ep speed_ep

36 Speed counter process() begin if rising_edge() then if (move = '1') then speed_counter <= "0000"; elsif (speed_ep = '1') then speed_counter <= speed_counter + 1; end process; speed_ep move CE CLR 4-bitsräknare speed_counter speed_rco <= '1' when ((speed_ep = '1') and (speed_counter = 15)) else '0'; RCO speed_rco

37 Skiftregistret process() begin if rising_edge() then if (set_serve_l = '1') then q <= "01000000"; elsif (set_serve_r = '1') then q <= "00000010"; elsif (move = '1') then if (dir_l = '1') then q <= q(6 downto 0) & '0'; else q <= '0' & q(7 downto 1); end process; LED <= q(6 downto 1); set_serve_l move dir_l 01000000 00000010 8 8 LOAD SE L/R LOAD 8-bitars skiftregister, q q 7 q 6 q 5 q 4 q 3 q 2 q 1 q 0 LED set_serve_r

38 Serve process() begin if rising_edge() then if (set_serve = '1') then serve_local <= '1'; elsif (set_not_serve = '1') then serve_local <= '0'; end process; Serve <= serve_local; set_serve set_not_serve set_not_serve process() begin if rising_edge() then set_not_serve_delayed <= set_not_serve; end process; S Q R D Q serve_local Serve set_not_serve_delayed

39 Direction process() begin if rising_edge() then if (set_dir_l = '1') then dir_l <= '1'; elsif (set_dir_r = '1') then dir_l <= '0'; end process; set_dir_l set_dir_r S Q R dir_l

40 Score set_serve_l reset_sync CE CLR 4-bitsräknare L_S_local 4 Score_L set_serve_r reset_sync CE CLR 4-bitsräknare R_S_local 4 Score_R process() begin if rising_edge() then if (reset_sync = '1') then L_S_local <= "0000"; elsif (set_serve_l = '1') then L_S_local <= L_S_local + 1; end process; Score_L <= std_logic_vector(l_s_local); process() begin if rising_edge() then if (reset_sync = '1') then R_S_local <= "0000"; elsif (set_serve_r = '1') then R_S_local <= R_S_local + 1; end process; Score_R <= std_logic_vector(r_s_local);

41 Styrsignaler set_serve_l = reset_sync or q 0 or (player_r_ep and (not q 1 )) set_serve_r = q 7 or (player_l_ep and (not q 6 )) set_serve = set_serve_l or set_serve_r set_not_serve = serve_local and (player_l_ep or player_r_ep) set_serve_l <= reset_sync or q(0) or (player_r_ep and (not q(1))); set_serve_r <= q(7) or (player_l_ep and (not q(6))); set_serve <= set_serve_l or set_serve_r; set_not_serve <= serve_local and (player_r_ep or player_l_ep); move <= set_not_serve_delayed or speed_rco; set_dir_l <= player_r_ep or set_serve_l; set_dir_r <= player_l_ep or set_serve_r; move = set_not_serve_delayed or speed_rco set_dir_l = set_serve_l or player_r_ep set_dir_r = set_serve_r or player_l_ep

Lab 4/miniprojekt

43 Lab 4 Bland annat konstruera ett digitalt tidtagarur. Olika klockor Systemklocka 8 MHz Klocka som styr uppdateringsfrekvens på display (variabel frekvens) Klocka som styr tidräkning 100 Hz Synkronisera klockpulser med systemklockan: synkronisering + enpulsning

44 Examination Vid examination ska logiskt blockschema, VHDL-kod samt korrekt fungerande krets uppvisas. Logiskt blockschema med block enligt dokumentet digitaltekniska byggblock och enklare logiska uttryck. Egendesignade sekvenskretsar förutom krets också dokumenteras med tillståndsdiagram. VHDL-kod Varje block ska motsvara ett kodavsnitt, t ex en processsats/sekvenskrets Överensstämmande signalnamn i blockschema och kod.

Lycka till med den avslutande laborationen! Digitalteknik Mattias Krysander www.liu.se