Sisukord:

Kümme bitist arvutit - VHDL: 4 sammu
Kümme bitist arvutit - VHDL: 4 sammu

Video: Kümme bitist arvutit - VHDL: 4 sammu

Video: Kümme bitist arvutit - VHDL: 4 sammu
Video: «Развлечение с музыкой и программированием», Коннор Харрис и Стивен Крюсон 2024, Juuli
Anonim
Kümme bitist arvutit - VHDL
Kümme bitist arvutit - VHDL

Teinud: Tyler Starr ja Ezzeedden Gazali

Sissejuhatus

See projekt viidi lõpule CPE 133 lõpliku projekti raames Cal Poly SLO -s. See on suurepärane projekt kellelegi, kes soovib mõista, kuidas arvutid oma madalaimal tasemel töötavad ja kuidas oma ülesandeid täidavad. Projekt on modelleeritud Albert Malvino raamatus Digital Computer Electronics kirjeldatud 8-bitise SAP-arvuti järgi. Siiski oleme suurendanud arvutit 10-bitiseks, et võimaldada rakendada rohkem op-koode (operatsioonikoode). Kasutaja saab programmeerida arvuti teatud toimingute tegemiseks, sisestades teatud juhised.

Süsteemi ja vooluahela arhitektuur:

Arvuti on kirjutatud VHDL -is ja see asub Digilent Basys 3 tahvlil. Sisendid kaardistatakse tahvli põhjas olevatele lülititele. Lähtestamise ja kirjutamise funktsioonide jaoks kasutatakse kahte kombatavat lülitit. Väljund kuvatakse plaadi 7 segmendi ekraanil.

Arvuti jaotatakse väiksemateks vooluahelateks (mooduliteks), mis tegelevad erinevate toimingutega. Iga moodulit selgitatakse üksikasjalikult järgmistes etappides.

Samm: materjalid

Materjalid
Materjalid

Selle projekti jaoks on vaja ainult Basile3 FPGA -plaati Digilentilt ja mikro -USB -juhet, mis ühendab tahvli arvutiga.

2. samm: vooluahela moodulite plokkskeem

Lülitusmoodulite plokkskeem
Lülitusmoodulite plokkskeem
Vooluahela moodulite plokkskeem
Vooluahela moodulite plokkskeem
Lülitusmoodulite plokkskeem
Lülitusmoodulite plokkskeem

Ülaltoodud plokkskeemid näitavad 10-bitise arvuti erinevaid vooluahelate mooduleid. Allpool on toodud ülaltoodud diagrammidel näidatud iga üksiku osa/mooduli kirjeldus.

Programmiloendur

Sisendite kirjeldus: sisend on 5 -bitine sisend numbri laadimiseks programmi loendurisse. Cp kui kõrge loendur loeb langevatele kella servadele. Clr lähtestab loenduri väärtusele 0. Ep, kui kõrge loendur väljastab vooluarvu. Sp kui kõrge loendur seab loenduse sisendil olevale numbrile

  • Väljundite kirjeldus:

    väljund on loenduri koopia kasutamiseks LED-idel 0-15. Loend väljastab praeguse loenduse.

  • Üldine koht süsteemis: see loendur jälgib programmi mälukohta. Kõik programmid algavad mäluaadressilt 00000 (0) ja lähevad kuni 11111 (31), kui peatamist ei kasutata. Hüppeavaldustes loeb programmiloendur edasi aadressilt, kuhu programm hüppab.

Sisend MUX

  • Sisendite kirjeldus: Aadress võtab sisendi lülititelt 11 kuni 15. MAR võtab sisendi 10 -bitisest registrist, mida kasutatakse MAR -ina. Programm juhib, millist sisendit väljundisse suunata.
  • Väljundite kirjeldus: väljund suunab valitud sisendi RAM -i.
  • Üldine koht süsteemis: see MUX määrab, kas suunata aadress lülititelt või siinilt RAM -i. Programmirežiimis suunatakse lülitite aadress ja töörežiimis bussi aadress.

ramMUX

  • Sisendite kirjeldus: userInput on sisend, mille kasutaja sisestab programmirežiimis. aRegInput on A -registris sisalduvad andmed, mida kasutatakse teisaldamise ajal. selle MUX -i jaoks on valitud juhtimine.
  • Väljundite kirjeldus: väljund on 10-bitine andmete sisend RAM-i.
  • Üldine koht süsteemis: see MUX väljastab 10-bitiseid sisendandmeid, mida kasutatakse RAM-moodulis. Kui juhtbitt on kõrge, väljastab MUX andmed, mille kasutaja sisestas programmirežiimis. Kui juhtbitt on madal, väljastab MUX andmed juhtbussile.

ramModule

  • Sisendite kirjeldus: inputData on RAM -i salvestatud andmed. inputAddress on koht, kuhu andmed salvestatakse. programm näitab, kas arvuti on programmi- või käivitusrežiimis. readWrite näitab, kas toimub lugemis- või kirjutamistoiming. notCE on RAM -mooduli juhtbitt. käik näitab, et liigutustoimingut teostatakse.
  • Väljundite kirjeldus: outputDataToBus on andmed, mis lähevad RAM -ist siinile. outputData and output Address on andmed ja aadress, mis lähevad käsuregistrisse.
  • Üldine koht süsteemis: RAM võimaldab programmi ja andmete salvestamist mällu enne programmi käivitamist. Kui programm töötab, saab RAM MAR -lt aadressi ja väljastab selle aadressi andmed siinile.

addressROM

  • Sisendite kirjeldus: opCode on sisend, mis sisaldab arvuti poolt kasutatava opkoodi aadressi
  • Väljundite kirjeldus: opCodeStart on mäluaadress, mis näitab vastava opCode esimest mikrokäskude asukohta.
  • Üldine koht süsteemis: see moodul võtab lukustatud mikrokäskluse ja väljastab mälukoha, mis vastab selle mikrokäskude jada algusele.

ringCounter

  • Sisendite kirjeldus: lähtestamine seab loenduri tagasi 100000 -le (esimene "T -olek"). Clk suurendab langeva kella serva loendurit ühe võrra. NOP näitab, et praegune olek/tsükkel on tsükkel "ei tööta".
  • Väljundite kirjeldus: loendur on loenduri väljund.
  • Üldine koht süsteemis: rõngasloendur juhib eelseadistatud loendurit ja piiritleb kuus käsitsükli kuut mikrotappi (T1-T6).

eelloendur

  • Sisendite kirjeldus: opCodeStart on teostatava opCode mikrojuhiste mälukoht. T1 lähtestab loenduri 0 -le, kui see on kõrge. Kui T3 on kõrge, laaditakse opCodeStart ja loendamine jätkub sellest kohast ülejäänud 3 tsükli jooksul (T4-T6). Clr määrab loenduri 0. Clk suurendab langeva serva loendurit ühe võrra.
  • Väljundite kirjeldus: controlWordLocation väljastab käivitatava juhtsõna mälukoha.
  • Üldine koht süsteemis: igal op-koodil on 3 mikrojuhendit. Loendur suureneb 1 võrra, alustades 0 -st esimese 3 tsükli jooksul (toomistsükkel). Seejärel käivitab loendur helina loendur, et laadida aadress opCodeStarti ja suurendatakse ülejäänud 3 tsükli jooksul 1 võrra. Sel viisil juhib eelloendur mikrokäskude jada.

controlROM

  • Sisendite kirjeldus: controlWordLocation on controlWordi aadress, mida controlROM väljastab. NOP näitab, et asukoht on toiminguta.
  • Väljundite kirjeldus: controlWord on juhtsõna, mis võimaldab/keelab erinevatel arvutimoodulitel soovitud toimingu.
  • Üldine koht süsteemis: see moodul dekodeerib mälukoha eelloendurilt ja väljastab soovitud toimingu jaoks controlWordi.

ALU

  • Sisendite kirjeldus: A ja B on registri A ja registri B sisendid, millele ALU teostab aritmeetilisi ja loogilisi toiminguid. Kui lahutamine on aktiivne, näitab see, et B lahutatakse A -st.
  • Väljundite kirjeldus: tulemus on A ja B lisamise või A -st lahutamise tulemus. Väljundid suuremad kui väiksemad kui võrdsed, et näidata, kas (AB või A = B) ja neid kasutatakse tingimusliku hüppe moodulis. tõrge näitab aktiivset üle- või allavoolu.
  • Üldine koht süsteemis: ALU sisaldab arvuti aritmeetiliste ja loogiliste toimingute loogikat. See moodul saab liita ja lahutada kaks 10-bitist kahendnumbrit. ALU saab ka kindlaks teha, kas A> B, A

tingimuslikJmp

  • Sisendite kirjeldus: inputCount kasutatakse praeguse arvu lukustamiseks. inputAddressi abil lukustatakse aadress, millele hüpataks. loadFromRegister kui madalad riivid inputAddress. loadCount, kui madalad riivid inputCount. kui outputEnable on madal, on väljund seatud aadressile, kuhu hüpata. gT, iT ja eQ määravad, millist tingimust kontrollitakse. suuremad kui vähem, vähem ja võrdsed on ALU sisendid, mis näitavad A ja B võrdluse tulemust. Clk tõusva kella serval loetakse registrid inputCount ja inputAddress registritesse.
  • Väljundite kirjeldus: outputJmp on aadress, mida programmi loendur loeb.
  • Üldine koht süsteemis: see moodul tegeleb arvuti jaoks tingimuslike ja mittetingimustega hüpetega. Sisendite gT, iT ja eQ põhjal määrab moodul kindlaks, millist tingimust kontrollida ja kas see tingimus on tõene või vale. Kui tingimus on tõene, väljastab see käsu aadressi, kuhu hüpata, vastasel juhul väljastab järgmise käsu loenduri.

binToBCD

  • Sisendite kirjeldus: nummerdage 10 -bitine number, mis teisendatakse binaarkodeeritud kümnendkohaks.
  • Väljundite kirjeldus: sadu binaarnumbri sadade koha numbreid. kümnendkoha number kahendarvu kümnendas kohas. need on kahendnumbri ühe kohal olev number.
  • Üldine koht süsteemis: see moodul teisendab 10 -bitise numbri väljundregistrist BCD -ks, et meie neljakohaline kuvaridraiver näitaks numbrit kümnendkohana 7 -segmendilisel ekraanil.

fourDigitDriver

  • Sisendite kirjeldus: number on 16 -bitine binaarsisend, mis suunatakse dekoodrisse. inClk on Basys -plaatide sisemine kell ja seda kasutatakse kellajagurina. RST lähtestab numbrite juhtimiseks kasutatud kella.
  • Väljundite kirjeldus: anood määrab, millise numbriga koht valgustatakse. number on dekoodri sisendnumber.
  • Üldine koht süsteemis: see moodul juhib dekoodri BCD numbri kuvamiseks ekraanile.

dekodeerija

  • Sisendite kirjeldus: inputNumber on number, mis tuleb draiverilt ja mis dekodeeritakse.
  • Väljundite kirjeldus: katoodid määravad, millised katoodid soovitud numbri kuvamiseks sisse lülitatakse.
  • Üldine koht süsteemis: see moodul dekodeerib numbri, mis tuleb kuvada 7 segmendi ekraanil.

fourDigitDisplay

  • Sisendite kirjeldus: number on number, mis kuvatakse 7 segmendi ekraanil. tõrge näitab, millal ekraanil peaks olema kiri "Err". Clk on kella signaal, mis näitab, et ekraan töötab. See signaal peab olema umbes 60 Hz, et ekraanil saaks korraga kuvada kõiki neljakohalisi kohti.
  • Väljundite kirjeldus: anood määrab kindlaks, milline numbrikoht on lubatud. katood määrab, millised katoodid aktiveeritakse soovitud numbri kuvamiseks.
  • Üldine koht süsteemis: see moodul kuvab numbri 7 segmendi ekraanil. Vaadake Basys 3 tahvli kasutusjuhendist teavet selle kohta, millised katoodid ja anoodid ekraani kasutamiseks aktiveeruvad. Kui vea bitt on kõrge, kuvatakse ekraanil "Err".

väljundMUX

  • Sisendite kirjeldus: progModeInput määrab, millised LED -id lülitatakse programmeerimisrežiimi ajal sisse. runModeInput määrab, millised LED -id on töörežiimi ajal sisse lülitatud. modeSelect on MUX -i valiku- või juhtbitt.
  • Väljundite kirjeldus: ledOutput näitab, millised LED -id lülitatakse sisse.
  • Üldine koht süsteemis: Sõltuvalt arvuti režiimist (programm või rumm) lülitab MUX sisse erinevad LED -id. Programmirežiimis (modeSelect on '0') lülitab MUX sisse LED -id, et meenutada arvuti mälukohta ja seda, mida see sisaldab. Töörežiimis (modeSelect on '1') kasutatakse silumiseks MUX -i, kuid selle saab seadistada kuvama kõike muud.

kellajagur

  • Sisendite kirjeldus: stop loeb bussist viis MSB -bitti, et tuvastada seiskamiskäsk ('11111') ja peatab kella. inputClk on Basys 3 plaadi sisemine kella signaal.
  • Väljundite kirjeldus: ouputClk on uus aeglustatud kell.
  • Üldine koht süsteemis: seda kella kasutatakse arvuti aeglustamiseks, et kasutajal oleks võimalik toimuvat kindlaks teha. Kell võib töötada palju kiiremini, kuid praegu on see seatud 2 Hz -le.

triStateBuffer

  • Sisendite kirjeldus: Din on 5 -bitine sisend, mis läheb puhvrisse. Ep on juhtbitt.
  • Väljundite kirjeldus: Dout on puhveri 5 -bitine väljund
  • Üldine koht süsteemis: kui juhtbitt Ep on aktiivne, väljastab puhver sisendi. Kui juhtbitt pole aktiivne, ei väljasta puhver midagi.

tenBitDRegister

  • Sisendite kirjeldus: Dbus on sisend, kuhu register on suunatud. Clk võimaldab registril lugeda andmeid tõusva kella serva kohta. ARST määrab registri asünkroonselt väärtusele 0. Kui outputEnable on madal, on väljundiks registri sisu. Kui ReadIn on madal, lukustab register Dbus tõusva kella serva.
  • Väljundite kirjeldus: Qbus on registri väljund
  • Üldine koht süsteemis: registrit kasutatakse arvutis mitu korda ja seda kasutatakse toimingute tegemisel teabe salvestamiseks.

fiveBitDRegister

  • Sisendite kirjeldus: Dbus on sisend, kuhu register on suunatud. Clk võimaldab registril lugeda andmeid tõusva kella serva kohta. ARST määrab registri asünkroonselt väärtusele 0. Kui outputEnable on madal, on väljundiks registri sisu. Kui ReadIn on madal, lukustab register Dbus tõusva kella serva.
  • Väljundite kirjeldus: Qbus on registri väljund.
  • Üldine koht süsteemis: registrit kasutatakse arvutis mitu korda ja seda kasutatakse toimingute tegemisel teabe salvestamiseks.

3. samm: kood

Allpool on kaust, mis sisaldab 10-bitise arvuti piiranguid ja lähtefaile.

4. samm: demo ja näidiskood

Ülaltoodud video näitab, kuidas programmeerida 10-bitist arvutit Basys 3 FPGA-plaadil. Allpool on lisatud ka pdf, mis sisaldab op-koode ja näidisprogrammi.

Soovitan: