Digitaalsüsteemid     IAS0150

2 0 2 4

ARVUTUSALGORITM   ja selle   MODELLEERIMINE   (simuleerimine) kirjelduskeeles VHDL


1.   Algoritmi graafskeemi   ja   operatsiooniseadme struktuurskeemi koostamine

Kodutöö #2 ülevaatlik tutvustamine toimub tavaliselt   9.?  või  10.?  või  11.? nädala  praktikumitunnis  (aprilli alguses?).
Koostada algoritmi graafskeemina (AGS) järgnevas tabelis määratud algoritm ja esitada ka sellega kokkusobiv operatsioonseadme struktuurskeem (algoritmis vajalikud kõik registrid ja summaatorid..., nendevahelised ühendused, juhtsignaalid (juhtkäsud   y  nooltena) —   mida juhtsignaalid mõjutavad / kuhu rakenduvad...)
AGSi iga juhtkäsu y   ja tingimuskontrolli kohta esitada ka 1...2-lauseline selgitav kommentaar.
AGSi ja struktuurskeemi jooniste vormistusele erinõudeid pole — see peab olema arusaadav;   autori enda hinnangu kohaselt korrektne.
Kõikides esitusviisides, tähistustes, süntaksis, . . . .   võib juhinduda loengus olnud näidetest.

  • Koostada kirjelduskeeles   VHDL   seade, mis realiseerib kodutöö algoritmi. Simulatsiooni demonstreerimisel (praktikumitunnis arvutiklassis) võib kasutada suvalist simulaatorit. Simulatsiooni (vahe)tulemused / registrite sisud   tuleb väljastada ekraanile vabaltvalitud, kuid arusaadaval kujul.

    Kodutöö #2  oma algoritmi modelleerimisel VHDL-s on soovitav lähtuda  suurima ühisteguri arvutamise näitest — [mini.pld.ttu.ee/~lrv/gcd], mille testpink on väikeste mugandustega kasutatav suvalise algoritmi testimiseks.
    Eelduseks on andmete sisestamine abisignaali 'rst' = 0  puhul ja signaali 'rdy' seadmine 1-ks  arvutuse valmimisel.

      Matr. nr.  
    käsitletav   algoritm
    x x x x 34
    x x x x 47
    x x x x 60
    x x x x 73
    x x x x 86
    x x x x 99
    x x x x 00
    x x x x 33
    x x x x 13
    x x x x 26
    x x x x 39
    x x x x 52
    x x x x 65
    x x x x 78
    x x x x 25
    Korrutamine alates kõrgematest järkudest.  
    Operandid on positiivsed 2ndtäisarvud, mille pikkus on antud   tehteoperandide tabelis.
    Resultaat on sama pikkusega nagu operandid.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    x x x x 21
    x x x x 72
    x x x x 22
    x x x x 35
    x x x x 48
    x x x x 61
    x x x x 74
    x x x x 87
    x x x x 01
    x x x x 19
    x x x x 46
    x x x x 06
    x x x x 14
    x x x x 27
    x x x x 40
    x x x x 53
    x x x x 66
    x x x x 79
    Suvalise märgiga arvude vahetu korrutamine (s.o. operande ei teisendata korrutamistsükli ajaks positiivseteks).
    Operandid on märgiga 2ndtäisarvud, mille pikkus ja neg. operandi kodeering   (IAS0150 :   ainult  täiendkood )   on antud   tehteoperandide tabelis.
    Resultaat on sama pikkusega nagu operandid.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    x x x x 07
    x x x x 85
    x x x x 36
    x x x x 49
    x x x x 62
    x x x x 75
    x x x x 88
    x x x x 97
    x x x x 02
    x x x x 32
    x x x x 15
    x x x x 28
    x x x x 41
    x x x x 54
    x x x x 67
    x x x x 80
    x x x x 93
    Korrutamine Booth'i algoritmiga
    Operandid on märgiga 2ndtäisarvud, mille pikkus on antud   tehteoperandide tabelis.
    Negatiivsed operandid on täiendkoodis.
    Resultaat on sama pikkusega nagu operandid.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    x x x x 51
    x x x x 12
    x x x x 20
    x x x x 91
    x x x x 23
    x x x x 84
    x x x x 71
    x x x x 03
    x x x x 16
    x x x x 59
    x x x x 29
    x x x x 42
    x x x x 55
    x x x x 68
    x x x x 81
    x x x x 94
    Korrutamine kahe kohaga üheaegselt   (s.o. ühes korrutustsüklis analüüsitakse korrutaja kahte naaberjärku).
    Operandid on positiivsed 2ndtäisarvud, mille pikkus on antud   tehteoperandide tabelis.
    Resultaat on sama pikkusega nagu operandid.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    x x x x 24
    x x x x 37
    x x x x 50
    x x x x 63
    x x x x 76
    x x x x 98
    x x x x 89
    x x x x 09
    x x x x 04
    x x x x 45
    x x x x 17
    x x x x 30
    x x x x 43
    x x x x 56
    x x x x 69
    x x x x 82
    x x x x 95
    Jagamine jäägi taastamisega
    Operandid on märgiga 2ndtäisarvud, mille pikkus on antud   tehteoperandide tabelis.
    Resultaadiks olevad jagatis ja jääk on mõlemad sama pikkusega täisarvud nagu on ka operandide pikkus.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    (algoritmi modelleerimisel operandidega:   A1  jagada operandiga B1  ja  A2   jagada operandiga B2  )
    x x x x 38
    x x x x 11
    x x x x 64
    x x x x 77
    x x x x 90
    x x x x 92
    x x x x 10
    x x x x 08
    x x x x 05
    x x x x 58
    x x x x 18
    x x x x 31
    x x x x 44
    x x x x 57
    x x x x 70
    x x x x 83
    x x x x 96
    Jagamine jäägi taastamiseta
    Operandid on märgiga 2ndtäisarvud, mille pikkus on antud   tehteoperandide tabelis.
    Resultaadiks olevad jagatis ja jääk on mõlemad sama pikkusega täisarvud nagu on ka operandide pikkus.
    Algoritm peab korrektselt töötama suvaliste operandide korral (mis mahuvad etteantud formaati), mitte ainult modelleerimiseks/simuleerimiseks kasutatud operandide A1 A2 B1 B2 korral.
    (algoritmi modelleerimisel operandidega:   A1  jagada operandiga B1  ja  A2   jagada operandiga B2  )

    Algoritmi töötamise "käsitsi" modelleerimine / simuleerimine   —   vabatahtlik

    mittekohustuslik lisa:
    Sõltumatult VHDL-modelleerimisest võib (lisaks sellele) soovikorral modelleerida oma algoritmi töötamist ka sammukaupa "käsitsi"   —   näiteks nendesamade isiklike ühe või kahe operandipaariga   samast isiklike tehteoperandide tabelist.

    Algoritmi "käsitsi modelleerimine" oma operandidega on vabatahtlik kontrolliv lisategevus. Kes otsustab sellise "käsitsimodelleerimise" teha ja soovib oma edukad modelleerimistulemused (registrisisude muutumised algoritmisammudel) ka tekstiredaktoris vormistada, siis võib need tulemused soovikorral ka  esitada / üleslaadida  koos  Kodutöö #2  vormistatud aruandega.

    Kokku võib  Kodutöö#2  eest saada kuni  15 hindepunkti.

    Algoritmi "käsitsimodelleerimist" tasub (soovikorral) teha oma isiklike tehteoperandide paariga:
    operandidega A1 ja B1 ja / või operandidega A2 ja B2 , näidates kõikide kasutuselolevate registrite sisu pärast nende igat muutumist algoritmi töö käigus.
    Selleks koostada "registriväärtuste veerg" :   veeru igale reale üks registriväärtus, kuid veerge tohib leheküljel olla ka mitu   ( . . . sest neid mahub lk laiusesse mitu veergu).

    Kui algoritm muudab oma töösammul mingit registrit, siis lisandub jada lõppu selle registri uus väärtus.
    näide   (kui operandide ehk "registri" pikkuseks on 10 järku):
    RgA = 0110010011
    RgB = 0100001001
    RgC = 0001100110
    . . . . .
    näide:
    kui RgA sisu on praegusel hetkel   RgA = 0110010011
    . . . . ja algoritmis toimub järgmisena RgA nihe paremale :   R1(0.RgA)
    . . . . siis registriväärtuste jadasse lisandub järjekordne uus rida, mis näitab RgA uut sisu (pärast nihet) :
    RgA = 0011001001

    Registriväärtuste jadas näidata ära ka iteratiivsete tsüklite "piirid" (kus eelmine algoritmitsükkel lõppeb ja algab uus tsükkel).

    Oma algoritmi "käsitsi" simuleerimise eesmärk on kontrollida, kas ta annab (isiklike operandide jaoks)  õige arvutustulemuse :
    hinnata simuleerimistulemuseks saadud 2ndkuju õigsust, teisendades ta 10ndkujule ja võrreldes tehte oodatava 10ndväärtusega / tulemusega.
    Kodutöö#2 on täielik ja võib saada maksimaalsed punktid  (kuni 15 punkti)   ka siis, kui seda vabatahtlikku "käsitsi" simuleerimise / modelleerimise lisa ei tehta ega ei esitata.

    Kodutöö#2  VORMISTUS   —   aruandefail

    Kodutöö kirjutatakse-vormistatakse suvalise meelepärase tekstiredaktoriga
    ja
    esitatakse (eelistatult .PDF) failina   õppeaine IAS0150  moodle' keskkonnas   (mitte ei saadeta e-mailiga).

    Kaasaegsed editorid võimaldavad .PDF-kuju salvestada "kergelt"   —   näiteks Save As . . .  salvestuskäsk võib omada   . . .pdf ( Portable Document Format)   valikut.
    . . . või on editoril olemas  Export to .PDF
    Alternatiivina on saadaval  .PDF-generaatorid ka printerite nimekirja  —   kus .PDF-fail tekkib  "spetsiaalse printeri"  valimisel  operatsioonisüsteemi  printerite nimekirjast.

    dokumendifaili     t i i t e l l e h t :

    Dokumendifailiks vormistatud (ja Moodle's esitatavas) #2 kodutöös sisaldub:
    — oma algoritmi nimi  (milline algoritm kodutöö#2  kuuest algoritmist ?)  ja  selle  graafskeem  (AGS)  koos käskude / juhtsignaalide tähistega   y1   y2 . . . . ja nende lühiselgitustega.   AGS koosneb tavaliselt  ristkülikutest  (üksikud  käsud  millest algoritm koosneb)  ja   rombidest  ( tingimuste kontrollid  algoritmis — määravad algoritmi  "hargnemised" ) ;
    — operatsiooniseadme struktuurskeem  (koos rakendatud juhtsignaalidega y1   y2   y3 . . . . — nooled näitavad, millistele skeemikomponentidele rakenduvad juhtsignaalid y) ;
    vabatahtlik lisa :   algoritmi "käsitsi simuleerimisel" või arvutisimulatsioonil genereerunud: registrite sisude / muutuste jada ;
    — simuleeriv / modelleeriv VHDL kood   ( asjakohased selgitused-kommentaarid lähteksti ridade kohta on tervitatavad . . . .   autori enda valikul ) ;
    — VHDL-simulaatori  runtime'  kõikide tulemuste  screenshotid   (koos asjakohaste selgitustega-kommentaaridega screenshot-ide kohta, autori enda valikul . . . .   soovikorral võib screenshot pildi peale lisada / kirjutada / joonistada   käsitsi juurde märkusi, viitamisi / nooli , selgitusi . . . .   autori enda valikul ) ;
    . . . . kui tunned et screenshot ekraanipilt paigutatuna A4 laiusele on liiga "kokkusurutud" ja väike :  tähed ja arvud on äkki vähenenud halvasti nähtavaks  -  siis keera pilt (enne dokumenti lisamist) 90 kraadi "püsti", misjuhul on screenshot pildi jaoks saadaval kogu A4 leheküljekõrgus.
    — hea vormistuse juurde sobib ka  kokkuvõte, milles autor esitab omapoolse hinnangu oma tulemustele.

    Hindamine

    Kodutöö #2 võib saada maksimaalselt   15   hindepunkti, mis arvestub aine lõpphinde punktisummasse.

    Tähtaeg

    KODUTÖÖ #2   vormistatud aruande esitamise  (moodle's  üleslaadimise)  tähtaeg on  15. õppenädalal lõpp   ( 2024 :   pühap.  12. mai)  
    Tähtaegselt esitatud / üleslaaditud  Kodutöö#2  vormistatud aruanne võib saada kuni 15 punkti;
    Kodutöö#2  esitatud / üleslaaditud  aruanne  ei kuulu kaitsmisele, kui teda selgesõnaliselt ei määrata kaitsmisele :   kaitsmist ei toimu, kui hindepunktid  (kuni 15)  laekuvad  moodlesse  kehtima
    ja
    hindepunktide selgitused / kommentaarid  üleslaaditud kodutöö juures  ei räägi midagi kaitsmisvajadusest.
    Kui  Kodutöö#2  saab punkte alla maksimumi, siis hinde juures on tavaliselt olemas  ka selgitused-kommentaarid, mis nimetavad ära  selliste punktide põhjused.

    maksimumpunktide saamine   e i   t ä h e n d a ,   et töös  kõik õige oli

    Hilinenud töö saab vähem hindepunkte:
    1...2 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 14 hindepunkti;
    3...4 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 13 hindepunkti;
    5...6 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 12 hindepunkti;
    7...8 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 11 hindepunkti;
    9...10 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 10 hindepunkti;
    11...12 päeva võrra hilinenult esitatud Kodutöö#2  võib saada kuni 9 hindepunkti;
    üle 12 päeva hilinenult esitatud Kodutöö#2  võib saada kuni 8 hindepunkti;


    JÕUDU TÖÖLE !