Kazalo:

Deset bitni računalnik - VHDL: 4 koraki
Deset bitni računalnik - VHDL: 4 koraki

Video: Deset bitni računalnik - VHDL: 4 koraki

Video: Deset bitni računalnik - VHDL: 4 koraki
Video: FPGA UART Tx Demonstration 2024, Julij
Anonim
Deset bitni računalnik - VHDL
Deset bitni računalnik - VHDL

Izdelala: Tyler Starr in Ezzeedden Gazali

Uvod

Ta projekt je bil zaključen kot del končnega projekta za CPE 133 na Cal Poly SLO. To je odličen projekt za nekoga, ki želi razumeti, kako računalniki delujejo na najnižji ravni in kako dosegajo svoje naloge. Projekt je oblikovan po 8-bitnem računalniku SAP, opisanem v knjigi Albert Malvino Digital Computer Electronics. Vendar smo računalnik povečali na 10 bitov, da omogočimo izvajanje več op kod (operacijskih kod). Uporabnik lahko računalnik programira za izvajanje niza operacij z vnosom določenih navodil.

Arhitektura sistema in vezja:

Računalnik je napisan v VHDL in bo na plošči Basys 3 podjetja Digilent. Vhodi bodo preslikani v stikala na dnu plošče. Za funkcijo Ponastavi in Zapiši bosta uporabljeni dve tipalni stikali. Izhod bo prikazan na 7 -segmentnem zaslonu plošče.

Računalnik bo razdeljen na manjša vezja (module), ki upravljajo različne operacije. Vsak modul bo podrobno razložen v naslednjih korakih.

1. korak: Materiali

Materiali
Materiali

Za ta projekt potrebujete le ploščo Basys3 FPGA podjetja Digilent in žico mikro USB za povezavo plošče z računalnikom.

2. korak: Blokovna shema modulov vezja

Blokovna shema modulov vezja
Blokovna shema modulov vezja
Blokovna shema modulov vezja
Blokovna shema modulov vezja
Blokovna shema modulov vezja
Blokovna shema modulov vezja

Zgornji diagram prikazuje različne module vezja, ki sestavljajo 10-bitni računalnik. Spodaj so opisi vsakega od posameznih delov/modulov, prikazanih na zgornjih diagramih.

Števec programov

Opis vhodov: vhod je 5 -bitni vhod za nalaganje številke v programski števec. Cp, ko je visoko števec šteje na padajočih robovih ure. Clr ponastavi števec na 0. Ep, ko je števec visok, prikaže trenutno število. Sp, ko je visoko števec nastavi štetje na število na vhodu

  • Opis izhodov:

    izhod je kopija števila za uporabo na LEDS 0-15. Count prikaže trenutno število.

  • Splošno mesto v sistemu: Ta števec beleži pomnilniško lokacijo, v kateri je program. Vsi programi se začnejo na pomnilniškem naslovu 00000 (0) in segajo do 11111 (31), razen če je uporabljena zaustavitev. V izjavah o skoku števec programa še naprej šteje od naslova, na katerega program skoči.

Vhod MUX

  • Opis vhodov: Naslov sprejema vhod iz stikal 11 do 15. MAR sprejema vhod iz 10 -bitnega registra, ki se uporablja kot MAR. Program nadzoruje, kateri vhod usmeriti na izhod.
  • Opis izhodov: izhod usmerja izbrani vhod v RAM.
  • Splošno mesto v sistemu: Ta MUX določa, ali naslov usmeriti od stikal ali vodila do RAM -a. V programskem načinu je naslov iz stikal preusmerjen, v načinu delovanja pa naslov iz vodila.

ramMUX

  • Opis vhodov: userInput je vnos, ki ga uporabnik vnese med programskim načinom. aRegInput so podatki v registru A, ki se uporabljajo med premikanjem. nadzor je izbira za ta MUX.
  • Opis izhodov: izhod je 10-bitni vnos podatkov v RAM.
  • Splošno mesto v sistemu: Ta MUX odda 10-bitne vhodne podatke, ki se uporabljajo v modulu RAM. Ko je kontrolni bit visok, MUX prikaže podatke, ki jih je uporabnik vnesel v programskem načinu. Ko je krmilni bit nizek, MUX odda podatke na krmilno vodilo.

ramModule

  • Opis vhodov: inputData so podatki, shranjeni v RAM -u. inputAddress je lokacija, kjer so shranjeni podatki. program označuje, ali je računalnik v programskem ali načinu delovanja. readWrite označuje, ali pride do operacije branja ali pisanja. notCE je kontrolni bit za modul RAM. premik označuje, da se izvaja premik.
  • Opis izhodov: outputDataToBus so podatki, ki gredo od RAM -a do vodila. outputData in output Address so podatki in naslov, ki gredo v register navodil.
  • Splošno mesto v sistemu: RAM omogoča shranjevanje programov in podatkov v pomnilniku pred zagonom programa. Ko se program zažene, RAM prejme naslov iz MAR -a in podatke na tem naslovu odda v vodilo.

naslovROM

  • Opis vhodov: opCode je vnos, ki vsebuje naslov kode op, ki jo izvaja računalnik
  • Opis izhodov: opCodeStart je pomnilniški naslov, ki označuje prvo mesto mikro-navodil ustrezne opCode.
  • Splošno mesto v sistemu: Ta modul sprejme zapečatena mikro navodila in prikaže pomnilniško lokacijo, ki ustreza začetku tega zaporedja mikro-navodil.

ringCounter

  • Opis vhodov: ponastavi števec nazaj na 100000 (prvo "stanje T"). Clk poveča števec za enega na padajočem robu ure. NOP označuje, da je trenutno stanje/cikel cikel "brez delovanja".
  • Opis izhodov: count je izhod števca.
  • Splošno mesto v sistemu: števec obročev upravlja vnaprej nastavljen števec in razčlenjuje šest mikrokorakov v vsakem ciklu navodil (T1-T6).

predštevec

  • Opis vhodov: opCodeStart je pomnilniška lokacija mikro navodil za opCode, ki se izvaja. T1 ponastavi števec na 0, ko je visok. Ko je T3 visok, se naloži opCodeStart in štetje se nadaljuje s tega mesta za preostale 3 cikle (T4-T6). Clr nastavi števec na 0. Clk poveča števec za enega na padajočem robu.
  • Opis izhodov: controlWordLocation prikaže pomnilniško lokacijo kontrolne besede, ki jo je treba izvesti.
  • Splošno mesto v sistemu: Vsaka op-koda ima 3 mikro navodila. Števec se v prvih 3 ciklih (cikel pridobivanja) poveča za 1, začenši z 0. Števec nato sproži števec zvonjenja, da naloži naslov na opCodeStart, in se za preostale 3 cikle poveča za 1. Na ta način predštevec nadzoruje zaporedje mikro-navodil, ki jih je treba izvesti.

controlROM

  • Opis vhodov: controlWordLocation je naslov controlWord, ki ga bo controlROM izpisal. NOP označuje, da je lokacija "brez operacije".
  • Opis izhodov: controlWord je kontrolna beseda, ki različnim računalniškim modulom omogoča/onemogoči izvajanje želene operacije.
  • Splošno mesto v sistemu: Ta modul dekodira pomnilniško lokacijo iz predštevalnika in odda krmilno besedo za želeno operacijo.

ALU

  • Opis vhodov: A in B sta vhoda iz registra A in registra B, na katerem ALU izvaja aritmetične in logične operacije. Ko je odštevanje aktivno, pomeni, da se B odšteje od A.
  • Opis izhodov: rezultat je rezultat seštevanja A in B ali odštevanja B od A. Izhodi većiThan, lessThan in equTo označujejo, če (AB ali A = B) in se uporabljajo v modulu pogojnega skoka. napaka označuje preliv ali pretok, ko je aktiven.
  • Splošno mesto v sistemu: ALU vsebuje logiko za aritmetične in logične operacije, ki jih izvaja računalnik. Ta modul lahko sešteje in odšteje dve 10-bitni binarni številki. ALU lahko tudi ugotovi, ali je A> B, A

conditionalJmp

  • Opis vhodov: inputCount se uporablja za zaklepanje trenutnega štetja. inputAddress se uporablja za zaklepanje naslova, na katerega bi skočili. loadFromRegister pri nizkih zapah inputAddress. loadCount pri nizkih zapahih inputCount. ko je outputEnable nizek, je izhod nastavljen na naslov za skok na. gT, iT in eQ določi, kateri pogoj se preverja. Večji, manjši in enaki To so vhodi iz ALU, ki označujejo rezultat primerjave med A in B. Na naraščajočem urnem robu Clk se inputCount in inputAddress prebereta v registre.
  • Opis izhodov: outputJmp je naslov, ki ga bo bral programski števec.
  • Splošno mesto v sistemu: ta modul obravnava pogojne in brezpogojne skoke za računalnik. Na podlagi vhodov gT, iT in eQ modul določi, kateri pogoj je treba preveriti in ali je ta pogoj resničen ali napačen. Če je pogoj resničen, bo izpisal naslov ukaza, na katerega morate skočiti, sicer pa prikaže število naslednjega ukaza.

binToBCD

  • Opis vhodov: oštevilčite 10 -bitno število za pretvorbo v binarno kodirano decimalko.
  • Opis izhodov: stotine števka na mestu stotine binarnega števila. desetice števka na mestu desetice binarnega števila. ena števka na mestu ena binarnega števila.
  • Splošno mesto v sistemu: Ta modul pretvori 10 -bitno število iz izhodnega registra v BCD, tako da lahko naš štirimestni gonilnik zaslona prikaže številko v decimalni obliki na 7 -segmentnem zaslonu.

fourDigitDriver

  • Opis vhodov: številka je 16 -bitni binarni vhod, ki se napaja v dekoder. inClk je notranja ura Basys deske in se uporablja za delilnik ure. RST ponastavi uro, ki se uporablja za premikanje številk.
  • Opis izhodov: anoda določa, katera številka bo osvetljena. digit je vhodna številka dekoderja.
  • Splošno mesto v sistemu: Ta modul poganja dekoder za oddajo BCD številke na zaslon.

dekoder

  • Opis vhodov: inputNumber je številka, ki prihaja iz gonilnika in ki bo dekodirana.
  • Opis izhodov: katode določajo, katere katode bodo vklopljene za prikaz želene številke.
  • Splošno mesto v sistemu: Ta modul dekodira številko, ki bo prikazana na 7 -segmentnem zaslonu.

fourDigitDisplay

  • Opis vhodov: številka je številka, ki se prikaže na 7 -segmentnem zaslonu. napaka označuje, kdaj naj se na zaslonu prikaže "Err". Clk je signal ure, na katerem zaslon deluje. Ta signal mora biti okoli 60 Hz, da lahko na zaslonu hkrati prikažejo vsa 4 -mestna mesta.
  • Opis izhodov: anoda določa, katera številka je omogočena. cathode določa, katere katode so aktivirane za prikaz želene številke.
  • Splošno mesto v sistemu: Ta modul prikazuje številko na 7 -segmentnem zaslonu. Za informacije o tem, katere katode in anode se aktivirajo za uporabo zaslona, glejte priročnik z navodili za ploščo Basys 3. Ko je bit napake visok, se na zaslonu prikaže "Err".

outputMUX

  • Opis vhodov: progModeInput določa, kateri LED so vklopljeni med načinom programiranja. runModeInput določa, kateri LED -ji so vklopljeni v načinu delovanja. modeSelect je izbirni ali kontrolni bit za MUX.
  • Opis izhodov: ledOutput označuje, kateri LED bodo vklopljeni.
  • Splošno mesto v sistemu: Odvisno od načina, v katerem je računalnik (program ali rum), bo MUX vklopil različne LED diode. V programskem načinu (modeSelect je '0') MUX prižge LED diode, da spominjajo na pomnilniško mesto, v katerem je računalnik, in kaj vsebuje. V načinu delovanja (modeSelect je '1') se MUX uporablja za odpravljanje napak, lahko pa ga nastavite tako, da prikaže karkoli drugega.

delilnik ure

  • Opis vhodov: stop prebere pet bitov MSB iz vodila, da zazna ukaz za zaustavitev ('11111') in ustavi uro. inputClk je notranji signal ure na plošči Basys 3.
  • Opis izhodov: ouputClk je nova ura, ki je bila upočasnjena.
  • Splošno mesto v sistemu: Ta ura se uporablja za upočasnitev računalnika, da uporabnik lahko ugotovi, kaj se dogaja. Ura lahko deluje veliko hitreje, vendar je trenutno nastavljena na 2 Hz.

triStateBuffer

  • Opis vhodov: Din je 5 -bitni vhod, ki gre v medpomnilnik. Ep je kontrolni bit.
  • Opis izhodov: Dout je 5 -bitni izhod medpomnilnika
  • Splošno mesto v sistemu: Ko je kontrolni bit Ep aktiven, medpomnilnik odda vhod. Ko kontrolni bit ni aktiven, medpomnilnik ne odda nič.

tenBitDRegister

  • Opis vhodov: Dbus je vhod, na katerega naj bo register. Clk omogoča registru, da bere podatke na naraščajočem robu. ARST nastavi register na 0 asinhrono. Ko je outputEnable nizek, je vsebina registra izhodna. Ko je readIn nizek, register zaskoči Dbus na naraščajočem robu ure.
  • Opis izhodov: Qbus je izhod registra
  • Splošno mesto v sistemu: Register se uporablja večkrat v računalniku in se uporablja za shranjevanje informacij pri izvajanju operacij.

register petBitDR

  • Opis vhodov: Dbus je vhod, na katerega naj bo register. Clk omogoča registru, da bere podatke na naraščajočem robu. ARST nastavi register na 0 asinhrono. Ko je outputEnable nizek, je vsebina registra izhodna. Ko je readIn nizek, register zaskoči Dbus na naraščajočem robu ure.
  • Opis izhodov: Qbus je izhod registra.
  • Splošno mesto v sistemu: Register se uporablja večkrat v računalniku in se uporablja za shranjevanje podatkov pri izvajanju operacij.

3. korak: Koda

Spodaj je mapa z omejitvami in izvornimi datotekami za 10-bitni računalnik.

4. korak: Demo in vzorčna koda

Zgornji video prikazuje, kako programirati 10-bitni računalnik na plošči Basys 3 FPGA. Spodaj je priložen tudi pdf z op-kodami in vzorčnim programom.

Priporočena: