{"id":2156,"date":"2016-09-08T17:24:08","date_gmt":"2016-09-08T15:24:08","guid":{"rendered":"http:\/\/priit.ati.ttu.ee\/?page_id=2156"},"modified":"2017-11-13T18:12:50","modified_gmt":"2017-11-13T16:12:50","slug":"itk-alu","status":"publish","type":"page","link":"http:\/\/priit.ati.ttu.ee\/?page_id=2156","title":{"rendered":"Praktikum IV"},"content":{"rendered":"<p style=\"text-align: right;\">\n    <!-- WP Last Modified by Dogan Ucar (https:\/\/www.dogan-ucar.de). -->\n    <!-- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;-->\n    <!-- 2016 - 2026 Dogan Ucar. -->Last modified: 2017-11-13 18:12:50<\/p>\n<h2>ALU disain ja s\u00fcntees<\/h2>\n<p>ALU ehk aritmeetika-loogika seade on tuttav juba <a href=\"http:\/\/www.pld.ttu.ee\/~teet\/itarvutid_paevane_13.html\" target=\"_blank\" rel=\"noopener\">Arvutite <\/a>ainest. Kellel asi meelest l\u00e4inud, siis tasub meeles pidada vana t\u00f5de &#8220;kordamine on tarkuse ema&#8221;.<\/p>\n<p>Antud praktikumi eesm\u00e4rgiks on iseseisvalt koostada VHDL keeles nelja operatsiooni teostav ning neljabitiseid arve t\u00f6\u00f6tlev ALU. Joonisel 1 on ALU struktuurskeem. ALU operatsioonid on igale tudengile ettem\u00e4\u00e4ratud ning leiab <a href=\"#task\">siit<\/a>.<\/p>\n<div id=\"attachment_1180\" style=\"width: 564px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/priit.ati.ttu.ee\/wp-content\/uploads\/2014\/09\/joonis1.png\"><img aria-describedby=\"caption-attachment-1180\" loading=\"lazy\" class=\"wp-image-1180 size-full\" src=\"http:\/\/priit.ati.ttu.ee\/wp-content\/uploads\/2014\/09\/joonis1.png\" alt=\"Joonis 1. ALU struktuurskeem.\" width=\"554\" height=\"543\" srcset=\"http:\/\/priit.ati.ttu.ee\/wp-content\/uploads\/2014\/09\/joonis1.png 554w, http:\/\/priit.ati.ttu.ee\/wp-content\/uploads\/2014\/09\/joonis1-300x294.png 300w\" sizes=\"(max-width: 554px) 100vw, 554px\" \/><\/a><p id=\"caption-attachment-1180\" class=\"wp-caption-text\">Joonis 1. ALU struktuurskeem.<\/p><\/div>\n<h2>T\u00f6\u00f6 k\u00e4ik<\/h2>\n<ul>\n<li>M\u00f5ista operatsioone, mida sinu ALU peab teostama. Iga operatsioon ei pruugi teostamiseks kasutada m\u00f5lemat sisendit (A ja B).<\/li>\n<li>T\u00f6\u00f6 paremaks alustamiseks on eelnevalt juba valmis tehtud nii <a href=\"http:\/\/priit.ati.ttu.ee\/I207\/toplevel.vhdl\" target=\"_blank\" rel=\"noopener\">olem <\/a>kui ka <a href=\"http:\/\/priit.ati.ttu.ee\/I207\/testbench.vhdl\" target=\"_blank\" rel=\"noopener\">testpingi <\/a>struktuur.<\/li>\n<li>Programmeeri ALU teostama vastavaid operatsioone.\n<ul>\n<li>ALU peab olema programmeeritud struktuurselt\u00a0(5 komponenti)\u00a0nagu n\u00e4idatud Joonisel 1.<\/li>\n<li>Funktsiooni 1 programmeerimisel v\u00f5ib kasutada teeki <strong><code class=\"vhdl\">std_logic_unsigned<\/code><\/strong> v\u00f5i\u00a0<strong><code class=\"vhdl\">std_logic_arith<\/code><\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li>Programmeeri testpink nii, et iga operatsioon saaks testitud. <strong>\u00dchtlasi v\u00f5iks igal operatsioonil olla v\u00e4hemalt 4\u00a0testi.<\/strong> Soovituslik\u00a0on testida \u00fcks eriolukord (summeerides nulle) ja \u00fcks tavaline (2+2=4).<\/li>\n<li>Demonstreeri oma tulemust \u00f5ppej\u00f5ule = suuline kaitsmine.<\/li>\n<li>Koostada n\u00f5utud vormis aruanne, mis peab sisaldama sisulist selgitust ALU t\u00f6\u00f6p\u00f5him\u00f5ttest ning teostatavatest operatsioonidest, koostatud ALU l\u00e4htekoodi ning simulatsioonipilti k\u00f5ikide operatsioonide kohta.<\/li>\n<li>Koosta n\u00f5utud vormistuses aruanne, ning saada see \u00f5ppej\u00f5ule enne n\u00f5utud t\u00e4htaega!<\/li>\n<li>Tee tunni l\u00f5pus test:<\/li>\n<li><a href=\"https:\/\/goo.gl\/forms\/XLD3mmJSAkHEksHw1\">Esmasp\u00e4ev 16.00<\/a><\/li>\n<li><a href=\"https:\/\/goo.gl\/forms\/gPUdBUFk6nwIi1xC2\">Kolmap\u00e4ev 8.15<\/a><\/li>\n<\/ul>\n<h2>\u00dclesannete kirjeldused<\/h2>\n<ol>\n<li>Funktsioon 1\n<ul>\n<li>A cmp B (v\u00f5rdlustehe) &#8211; Sisendite v\u00f5rdlemine. Kui A &gt; B v\u00e4ljund 0010, kui A = B v\u00e4ljund 0000, kui A &lt; B v\u00e4ljund 0001.<\/li>\n<li>A + B (aritmeetiline liitmine) &#8211; Sisendite A ja B summeerimine, \u00fclekannet madalamast j\u00e4rgust ei ole ning lippu \u00fclet\u00e4itumise kohta ei ole vaja.<\/li>\n<li>A &#8211; B (aritmeetiline lahutamine) &#8211; Sisendi B lahutamine sisendist A. Lihtsuse huvides olgu A alati suurem kui B, mis t\u00e4hendab, et laenulippu kasutada vaja ei ole.<\/li>\n<li>A, B cnt 1 \u2013 Sisenditest A ja B \u00fchtede loendamine. N\u00e4iteks A = 1100 ja B = 0111, siis v\u00e4ljund = 5.<\/li>\n<li>A, B cnt 0 \u2013 Sisenditest A ja B nullide loendamine. N\u00e4iteks A = 1100 ja B = 0111, siis v\u00e4ljund = 3.<\/li>\n<\/ul>\n<\/li>\n<li>Funktsioon 2\n<ul>\n<li>shr A (nihe paremale) &#8211; Sisendi A nihutamine \u00fchev\u00f5rra paremale ning vasakult tuleb sisse v\u00e4\u00e4rtus 0. N\u00e4iteks A = 0110 -&gt; shr (A) = 0011.<\/li>\n<li>shl A (nihe vasakule) &#8211; Sisendi A nihutamine \u00fchev\u00f5rra vasakule ning paremalt tuleb sisse v\u00e4\u00e4rtus 0. N\u00e4iteks A = 0110 -&gt; shl (A) = 1100.<\/li>\n<li>rol A (ringnihe vasakule) &#8211; Sisendi A nihutamine \u00fchev\u00f5rra vasakule ning paremalt tuleb sisse sisendi A k\u00f5ige k\u00f5rgem bitt. N\u00e4iteks A = 1001 -&gt; rol (A) = 0011.<\/li>\n<li>ror A (ringnihe paremale) &#8211; Sisendi A nihutamine \u00fchev\u00f5rra paremale ning vasakult tuleb sisse sisendi A k\u00f5ige madalam bit. N\u00e4iteks A = 1001 -&gt; ror (A) = 1100.<\/li>\n<\/ul>\n<\/li>\n<li>Funktsioon 3\n<ul>\n<li>clr A, B (seada s\u00f5na A B-nda biti v\u00e4\u00e4rtuseks &#8216;0&#8217;) &#8211; Sisend B saab omada v\u00e4\u00e4rtusi (xx t\u00e4histab, et vastavate bittide v\u00e4\u00e4rtus meid ei huvita) xx00, xx01, xx10, xx11, mis m\u00e4\u00e4ravad \u00e4ra, mitmes bitt A-st keeratakse nulliks. N\u00e4iteks A = 1111, B = xx10 (k\u00fcmnendkoodis 2, ehk siis kolmas bitt), clr A, B = 1011.<\/li>\n<li>set A, B (seada s\u00f5na A B-nda biti v\u00e4\u00e4rtuseks &#8216;1&#8217;) &#8211; Sisend B saab omada v\u00e4\u00e4rtusi (xx t\u00e4histab, et vastavate bittide v\u00e4\u00e4rtus meid ei huvita) xx00, xx01, xx10, xx11, mis m\u00e4\u00e4ravad \u00e4ra, mitmes bitt A-st keeratakse \u00fcheks. N\u00e4iteks A = 0000, B = xx11 (k\u00fcmnendkoodis 3, ehk siis neljas bitt), set A, B = 1000.<\/li>\n<li>xor A, B (inverteerida s\u00f5na A B-nda biti v\u00e4\u00e4rtus) &#8211; Sisend B saab omada v\u00e4\u00e4rtusi (xx t\u00e4histab, et vastavate bittide v\u00e4\u00e4rtus meid ei huvita) xx00, xx01, xx10, xx11, mis m\u00e4\u00e4ravad \u00e4ra, mitmes bitt A-st keeratakse \u00fcmber. N\u00e4iteks A = 0110, B = xx01 (k\u00fcmnendkoodis 1, ehk siis teine bitt inverteeritakse), xor A, B = 0100.<\/li>\n<\/ul>\n<\/li>\n<li>Funktsioon 4\n<ul>\n<li>K\u00f5ik tehted on loogikatehted.<\/li>\n<li>Enda matrikkli numbrile vastava \u00fclesande leiad <a href=\"http:\/\/www.diskmat.ee\/kodo.htm\">SIIT!<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2>FPGA s\u00fcntees<\/h2>\n<p>Alates s\u00fcgisest 2016 on \u00fcles seatud FPGAl baseeruv kauglabor (kolled\u017ei tudengi diplomit\u00f6\u00f6). Kauglabori eesm\u00e4rk on anda tudengitele v\u00f5imalus programmeeritud VHDL koodi ka s\u00fcnteesida ning laadida FPGAle. Juhitav FPGA arenduskomplekt on <a href=\"http:\/\/store.digilentinc.com\/nexys-3-spartan-6-fpga-trainer-board-limited-time-see-nexys4-ddr\/\" target=\"_blank\" rel=\"noopener\">Digilent Nexys 3<\/a>. Koodi s\u00fcnteesimiseks tuleb:<\/p>\n<ol>\n<li>Laadida oma arvutisse <a href=\"http:\/\/www.xilinx.com\/products\/design-tools\/ise-design-suite\/ise-webpack.html\" target=\"_blank\" rel=\"noopener\">Xilinx ISE 14.7 WebPack<\/a> programm<\/li>\n<li>Avada meie pakutud <a href=\"http:\/\/priit.ati.ttu.ee\/I207\/playground_example.zip\" target=\"_blank\" rel=\"noopener\">n\u00e4idis projekt<\/a> Xilinx ISE programminga ning lisada\/muuta programm eelnevalt loodud koodiga<\/li>\n<li>Uurida programmi <a href=\"http:\/\/priit.ati.ttu.ee\/?page_id=2046\" target=\"_blank\" rel=\"noopener\">kasutusjuhendit<\/a>, kompileerida kood ning teha &#8220;Generate programming file&#8221;<\/li>\n<li>Leida projektikataloogist &#8220;.bit&#8221; l\u00f5puga fail ning laadida kauglabori keskkonda<\/li>\n<li>Registreeruda aadressil <a href=\"http:\/\/playground.itcollege.ee\/playground-web\/login?redirect=http:\/\/playground.itcollege.ee\/playground-ui\/&amp;lang=en\" target=\"_blank\" rel=\"noopener\">playground.itcollege.ee<\/a>, m\u00e4\u00e4rata omale aeg ning laadida .bit fail keskkonnas<\/li>\n<li>Emuleerida nuppude vajutamist ning veenduda, et s\u00fcnteesitud kood t\u00f6\u00f6tab FPGAl \u00f5igesti<\/li>\n<\/ol>\n<p>Vastuseid k\u00fcsimustele, et mis on FPGA leiab nii Googlest kui ka Youtube keskkonnast. \u00dcks video, kus <a href=\"https:\/\/www.youtube.com\/watch?v=8POZhFHxBLs\" target=\"_blank\" rel=\"noopener\">v\u00f5rreldakse mikrokontrollerit ning FPGAd<\/a>.<\/p>\n<h2>\u00dclesannete tabel<\/h2>\n<p><a name=\"task\"><\/a><br \/>\n<iframe src=\"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vToBy1SjHZUEJl6zGoWvOP-CO-ECwKqlS_GZ1l6D7IiwM0khgon7Dno5rDOH1fJ1OcUAdP1HonxiulW\/pubhtml?gid=1499187691&amp;single=true&amp;widget=true&amp;headers=false\" width=\"1550\" height=\"1825\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ALU disain ja s\u00fcntees ALU ehk aritmeetika-loogika seade on tuttav juba Arvutite ainest. Kellel asi meelest l\u00e4inud, siis tasub meeles pidada vana t\u00f5de &#8220;kordamine on tarkuse ema&#8221;. Antud praktikumi eesm\u00e4rgiks on iseseisvalt koostada VHDL keeles nelja operatsiooni teostav ning neljabitiseid arve t\u00f6\u00f6tlev ALU. Joonisel 1 on ALU struktuurskeem. ALU operatsioonid on igale tudengile ettem\u00e4\u00e4ratud ning [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":978,"menu_order":4,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/pages\/2156"}],"collection":[{"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2156"}],"version-history":[{"count":14,"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/pages\/2156\/revisions"}],"predecessor-version":[{"id":2578,"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/pages\/2156\/revisions\/2578"}],"up":[{"embeddable":true,"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=\/wp\/v2\/pages\/978"}],"wp:attachment":[{"href":"http:\/\/priit.ati.ttu.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}