AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja



Samankaltaiset tiedostot
AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 5, ratkaisuja

VHDL Tehtävä 1 : JK-Kiikku toteutettu IF:llä

Verilogvs. VHDL. Janne Koljonen University of Vaasa

21~--~--~r--1~~--~--~~r--1~

2_1----~--~r--1.~--~--~--,.~~

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

Digitaalitekniikka (piirit), kertaustehtäviä: Vastaukset

VHDL-piirikuvaus ja simulointi Quartus II ja ModelSim Altera Edition -ohjelmilla

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Digitaalitekniikka (piirit) Luku 14 Sivu 1 (16) Sekvenssipiirit. Kombinaatiopiiri. Tilarekisteri

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

Harjoitustehtävien ratkaisut

VHDL-kuvauskieli. Digitaalitekniikka (piirit) Luku 17 Sivu 1 (33)

Harjoitustyö - Mikroprosessorit Liikennevalot

Sekvenssipiirin tilat

BL40A17x0 Digitaalielektroniikka A/B: Ohjelmoitavat logiikkapiirit

c) loogiset funktiot tulojen summana B 1 = d) AND- ja EXOR-porteille sopivat yhtälöt

Digitaalilaitteen signaalit

Joni Heikkilä PYROLYYSIGENERAATTORIN AUTOMAATIO-OHJAUS OHJELMOITAVALLA LOGIIKKAPIIRILLÄ

Ajattelemme tietokonetta yleensä läppärinä tai pöytäkoneena

Autotallin ovi - Tehtävänanto

V H D L. Very high speed integrated circuits Hardware Description Language

ELEC-C3240 Elektroniikka 2

TKT-1220 Tietokonearitmetiikka I PC-harjoitus 1

Versio: FIN Langaton painonappi. Käyttäjän käsikirja

Digitaalitekniikan matematiikka Luku 3 Sivu 1 (19) Kytkentäfunktiot ja perusporttipiirit

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

Synkronisten sekvenssipiirien suunnittelu

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

GREDDY PROFEC B SPEC II säätäminen

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

Peruspiirejä yhdistelemällä saadaan seuraavat uudet porttipiirit: JA-EI-portti A B. TAI-EI-portti A B = 1

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Ohjelmoi Arduino Grovella

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

Fortum Fiksu Mittaava, etäohjattava sähkökytkin sisäkäyttöön Käyttöohjeet

kwc Nirni: Nimen selvennys : ELEKTRONIIKAN PERUSTEET 1 Tentti La / Matti Ilmonen / Vastaukset kysymyspapereille. 0pisk.

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

FYSP105 / K3 RC-SUODATTIMET

Ajastin tarjoaa erilaisia toimintoja, kuten "Clock Display", "sekuntikello", "lähtölaskenta", "CountUp", "jaksoajastimen ja "Fight Gone Bad" -ajastin.

Pikaohje Aplisens APIS type 1X0 ja 2XO

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Digitaalitekniikka (piirit) Metropolia / AKo Joitakin vinkkejä harjoitustyö 2:n aihesiin Aihe Tuloja Lähtöjä Sitten vinkkejä

Arduino. Kimmo Silvonen (X)

F = AB AC AB C C Tarkistus:

BL40A1711 Johdanto digitaaleketroniikkaan: Sekvenssilogiikka, pitopiirit ja kiikut

Toiminnallinen määrittely versio 1.2

c) loogiset funktiot tulojen summana B 1 = C 2 C 1 +C 1 C 0 +C 2 C 1 C 0 e) logiikkakaavio

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Inputs: b; x= b 010. x=0. Elektroniikkajärjestelmät ETT_2068

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

PROXIMITY /etälukijat CZ-EMM3 CZ-EMM4

Successive approximation AD-muunnin

Esimerkkitentin ratkaisut ja arvostelu

P I C A X E O H J E L M O I N T I

Käyttö- ja asennusohje

WehoFloor RF LCD 868MHz & laajennusmoduuli 4 tai 6 kanavalle

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

UML -mallinnus TILAKAAVIO

1 Aritmeettiset ja geometriset jonot

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

OHJE D C.docx

LEGO EV3 Datalogging mittauksia

KAUKO-OHJATTAVA OHJAUSKESKUS

Konsolin näytössä näkyy käytettäessä ohjaavia viestejä, joita kannattaa tämän ohjeen lisäksi seurata.

Digitaalitekniikka (piirit) Luku 18 Sivu 1 (32) Rekisterit ja laskurit R C1 SRG4 R C1/ CTRDIV16 1R G2 2CT=15 G3 C1/2,3 + CT 3

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

TAMPEREEN TEKNILLINEN YLIOPISTO


Digitaalinen eropainekytkin DPS Käyttöohje

A/D-muuntimia. Flash ADC

Sekvenssipiirin tilat. Synkroninen sekvenssipiiri ? 1 ? 2

PROBYTE CONTROL GSM. GSM/SMS-hälytys- ja ohjauslaite. GSM Control 7/11/01 sivu 1/5

HARJOITUSTYÖ: LabVIEW, Valokennoportti

Digitaalitekniikan matematiikka Luku 6 Sivu 1 (20) Kombinaatiopiirit & & A B A + B

Signaalien datamuunnokset. Näytteenotto ja pito -piirit

UNICARD ACR-201 UNICARD 1. JOHDANTO

Turo Id MIKROPROSESSORIJÄRJESTELMÄN SUUNNITTELU FPGA:LLA

Java-kielen perusteita

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Harjoitus 6: Simulink - Säätöteoria. Syksy Mat Sovelletun matematiikan tietokonetyöt 1

Paikantavan turvapuhelimen käyttöohje

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Arduino. Kimmo Silvonen (X)

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Operaatiovahvistimen vahvistus voidaan säätää halutun suuruiseksi käyttämällä takaisinkytkentävastusta.

I2S-VÄYLÄLIITYNNÄN TOTEUTUS FPGA- PIIRILLE. Joel Junttila. Ohjaaja: Jukka Lahti

Kirjoita ohjelma jossa luetaan kokonaislukuja taulukkoon (saat itse päättää taulun koon, kunhan koko on vähintään 10)

Yleishimmentimellä varustetun, uppoasennettavan WMR-252-vastaanottimen käyttöopas

PROBYTE CONTROL GSM GSM/SMS-hälytys- ja ohjauslaite

Esimerkki 1: Kahviautomaatti.

YLEISTÄ ALOITUS. Laitteen kuvaus. Näytön kuvaus. Laitteen käynnistäminen ja sammuttaminen UP = YLÖS DOWN = ALAS BACK = TAKAISIN

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 12. tammikuuta 2012

Puhallinmoottorinohjaimen käsipäätteen käyttöohje, TBLZ-2-75, SILVER C

Digitaalitekniikan matematiikka Harjoitustehtäviä

Transkriptio:

AUTO3030 Digitaalitekniikan jatkokurssi, harjoitus 2, ratkaisuja s2009 1. D-kiikku Toteuta DE2:lla synkroninen laskukone, jossa lasketaan kaksi nelibittistä lukua yhteen. Tulos esitetään ledeillä vasta, kun käyttäjä painaa KEY0-näppäintä. entity H2T1 is port(x,y : in std_logic_vector(3 downto 0); flush : in std_logic; -- KEY0 z: out std_logic_vector(4 downto 0)); end H2T1; -- Yhteenlasku architecture arch of H2T1 is signal temp1, temp2 : std_logic_vector(4 downto 0); process(flush, x, y) temp1 <= '0' & x; temp2 <= '0' & y; if falling_edge(flush) then -- Nappi invertoitu -> falling_edge z <= temp1 + temp2; 2. Tilakone Toteuta DE2:lla seuraava tilakone: Painettaessa KEY0 tilakone palaa alkutilaansa. KEY1 seuraava tila. Alkutilassa yksikään ledi ei pala. Kun SW0 = 1 ( 0 ), seuraavassa tilassa palaa yksi punainen ledi enemmän (vähemmän). Ledejä sytytetään järjestyksessä LEDR0, LEDR1,, kunnes kaikki punaiset ledit palavat. Vastaavasti ledejä sammutetaan käänteisessä järjestyksessä. Kokeile tilamuuttujana/signaalina sekä Natural että std_logic_vector -tyyppejä. Vertaa resurssien käyttöä sekä piiritoteutusta. Toteutetaan tilakone kahdella prosessilla, jotka kommunikoivat signaalin avulla. Ensimmäinen prosessi huolehtii tilasiirtymistä, toinen ulostuloista. Tila talletetaan joko Natural- tai std_logic_vector-muuttujaan. std_logic_vector-muuttujaan voidaan jälleen hyödyntää IEEE.std_logic_unsigned-kokoelman yhteenlaskua. entity H2T2 is port(direction: in std_logic; -- SW0 reset, nextstate: in std_logic; -- KEY0, KEY1 ledit: out std_logic_vector(17 downto 0)); jako@uwasa.fi 1

end H2T2; architecture arch of H2T2 is signal state : std_logic_vector(4 downto 0); --signal state : Natural; process(reset, nextstate, direction) state <= (others => '0');--0; elsif falling_edge(nextstate) then if state<18 and direction = '1' then state <= state+1; elsif state>0 and direction = '0' then state <= state-1; state <= state; state <= state; -- Ulostulojen ohjaus process(state) ledit <= (others => '0'); for i in 0 to 17 loop if i<=state-1 then ledit(i) <= '1'; end loop; Ulostulojen ohjaus on tehty mahdollisimman geneerisesti. Tarkoituksena on siis sytyttää kaikki ledit nollasta i 1:een. Huomaa, että for-silmukan rajat pitää olla vakioita. Ei voida kirjoittaa: for i in 0 to i-1 loop ledit(i) <= '1'; end loop; koska piiritoteutus ei voi muuttua syötteen perusteella. Tämä rajoite voidaan kuitenkin kiertää iflauseella, jonka piiritoteutus voidaan tehdä jokaiselle indeksille (ks. RTL Viewer). Havaitaan, että Natural-tyypin käyttäminen johtaa resurssien tuhlaukseen. 3. Kello/Taajuudenjakaja Käytä DE2:n 50 MHz kelloa. Tee taajuudenjakaja, jolla vilkutat lediä esim. 1 s välein. Toteuta esim. parilla switchillä ohjaus, joilla voit säätää kellotaajuutta. Kokeile taajuudenjakajassa sekä Natural että std_logic_vector -tyyppejä. Tehdään ensin yksi 10-bittinen taajuudenjakaja. jako@uwasa.fi 2

-- Taajuudenjakaja entity H2T3 is reset, SW0, SW1: in std_logic; -- reset = KEY0 led: out std_logic); end H2T3; architecture arch of H2T3 is signal clock_24414, clock_12, clock_out, clock_1 : std_logic; -- 10-bittinen taajuudenjakaja 50 MHz/(2*1024) -> 24414 Hz process(reset, clock_50) variable count : std_logic_vector(9 downto 0); clock_24414 <= '0'; elsif rising_edge(clock_50) then if count < 1023 then clock_24414 <= not clock_24414; led <= clock_50; Havaitaan, että piiri muodostuu vakiolla lisäämisestä, muistipiiristä, vakioon vertaamisesta, multiplekseristä, jolla muistiin kirjoitetaan joko yhteenlaskupiirin tulos tai vakio (0), sekä ulostuloa ohjaavasta kiikusta. Toteutus ei muutu, vaikka käytettäisiin Natural-tyyppiä. Tehdään lopullinen taajuudenjakaja kolmella sarjankytketyllä piirillä, joista viimeisessä laskurin maksimiarvoa voidaan muuttaa. Huomaa, että tässä toteutuksessa temp-muuttuja, voi muuttua kesken kellojaksonkin. jako@uwasa.fi 3

-- Taajuudenjakaja entity H2T3 is reset, SW0, SW1: in std_logic; -- reset = KEY0 led: out std_logic); end H2T3; architecture arch of H2T3 is signal clock_24414, clock_12, clock_out, clock_1 : std_logic; -- 10-bittinen taajuudenjakaja 50 MHz/(2*1024) -> 24414 Hz process(reset, clock_50) variable count : std_logic_vector(9 downto 0); clock_24414 <= '0'; elsif rising_edge(clock_50) then if count < 1023 then clock_24414 <= not clock_24414; -- 10-bittinen taajuudenjakaja 24414 Hz/(2*1024) -> 11,9 Hz process(reset, clock_24414) variable count : std_logic_vector(9 downto 0); clock_12 <= '0'; elsif rising_edge(clock_24414) then if count < 1023 then clock_12 <= not clock_12; -- 4-bittinen säädettävä taajuudenjakaja process(reset, clock_12, SW0, SW1) variable count : std_logic_vector(3 downto 0); jako@uwasa.fi 4

variable temp : std_logic_vector(1 downto 0); temp := SW1 & SW0; clock_out <= '0'; elsif rising_edge(clock_12) then case temp is -- f = 11,9 Hz/(2*10) when "00" => if count < 10 then count := count + 1; -- f = 11,9 Hz/(2*8) when "01" => if count < 8 then count := count + 1; -- f = 11,9 Hz/(2*6) when "10" => if count < 6 then count := count + 1; -- f = 11,9 Hz/(2*4) when "11" => if count < 4 then when others => clock_out <= clock_out; end case; led <= clock_out; 4. Peli Muunna tehtävän 2 tilakone peliksi tehtävän 3 avulla. Pelissä on tarkoituksena pitää ledipylvästä mahdollisimman keskellä eli että 9 10 lediä palaisi. Voit keksiä peliin myös esim. pistelaskurin. jako@uwasa.fi 5

Toteutuksessa voidaan käyttää suoraan edellisten tehtävien piirejä. Käytetään rakenteellista piirin esitystapaa: -- Ledipeli: tarvitsee tilakone.vhd ja taajuudenjakaja.vhd entity ledipeli is reset, SW0, SW1, SW17: in std_logic; -- reset = KEY0 -- SW0 ja SW1 ohjaavat taajuutta. SW17 ohjaa tilakoneen suuntaa. ledit: out std_logic_vector(17 downto 0)); end ledipeli; architecture arch of ledipeli is component taajuudenjakaja is reset, SW0, SW1: in std_logic; -- reset = KEY0 led: out std_logic); end component; component tilakone is port(direction: in std_logic; -- SW0 reset, nextstate: in std_logic; -- KEY0, KEY1 ledit: out std_logic_vector(17 downto 0)); end component; -- Sisäinen kello: taajuudenjakajasta tilakoneelle signal clock_1 : std_logic; u1: taajuudenjakaja port map(clock_50, reset, SW0, SW1, clock_1); u2: tilakone port map(sw17, reset, clock_1, ledit); Peli-iloa! jako@uwasa.fi 6