Sadržaj:

Deset bitni računar - VHDL: 4 koraka
Deset bitni računar - VHDL: 4 koraka

Video: Deset bitni računar - VHDL: 4 koraka

Video: Deset bitni računar - VHDL: 4 koraka
Video: ChatGPT for VHDL development? 2024, Juli
Anonim
Deset bitni računar - VHDL
Deset bitni računar - VHDL

Proizvođači: Tyler Starr i Ezzeedden Gazali

Uvod

Ovaj projekt je završen kao dio završnog projekta za CPE 133 u Cal Poly SLO. Odličan je projekt za nekoga tko želi razumjeti kako računari funkcioniraju na njihovom najnižem nivou i kako ostvaruju svoje zadatke. Projekt je modeliran po 8-bitnom SAP računaru opisanom u knjizi Alberta Malvina Digital Computer Electronics. Međutim, povećali smo računar na 10 bita kako bismo omogućili implementaciju više op kodova (operativnih kodova). Korisnik može programirati računar da izvede niz operacija unosom određenih instrukcija.

Arhitektura sistema i kola:

Računar je napisan na VHDL -u i nalaziće se na ploči Basys 3 kompanije Digilent. Ulazi će biti mapirani na prekidače na dnu ploče. Dva taktilna prekidača će se koristiti za funkcije Reset i Write. Izlaz će biti prikazan na 7 -segmentnom ekranu ploče.

Računalo će se podijeliti na manje sklopove (module) koji se bave različitim operacijama. Svaki modul će biti detaljno objašnjen u sljedećim koracima.

Korak 1: Materijali

Materijali
Materijali

Sve što je potrebno za ovaj projekat je Basys3 FPGA ploča kompanije Digilent i mikro USB žica za povezivanje ploče sa vašim računarom.

Korak 2: Blok dijagram modula kruga

Blok dijagram modula sklopa
Blok dijagram modula sklopa
Blok dijagram modula sklopa
Blok dijagram modula sklopa
Blok dijagram modula sklopa
Blok dijagram modula sklopa

Gornji blok dijagrami prikazuju različite module kola koji čine 10-bitni računar. Ispod su opisi za svaki od pojedinačnih dijelova/modula prikazanih na gornjim dijagramima.

Brojač programa

Opis ulaza: ulaz je 5 -bitni ulaz za učitavanje broja u programski brojač. Cp kada je visoko brojač računa na padajuće ivice sata. Clr resetuje brojač na 0. Ep kada je brojač visok emituje trenutni broj. Sp kada je visoko brojač postavlja broj na broj na ulazu

  • Opis izlaza:

    izlaz je kopija broja za upotrebu na LEDS 0-15. Count daje trenutni broj.

  • Ukupno mjesto u sistemu: Ovaj brojač prati memorijsku lokaciju u kojoj se program nalazi. Svi programi počinju na memorijskoj adresi 00000 (0) i idu do 11111 (31), osim ako se koristi zaustavljanje. U izrazima skoka, programski brojač nastavlja računati od adrese na koju program skače.

Ulaz MUX

  • Opis ulaza: Adresa prima ulaz sa prekidača 11 do 15. MAR uzima ulaz iz 10 -bitnog registra koji se koristi kao MAR. Program kontrolira koji ulaz usmjeriti na izlaz.
  • Opis izlaza: izlaz usmjerava odabrani ulaz u RAM.
  • Sveukupno mjesto u sistemu: Ovaj MUX određuje hoće li se adresa usmjeriti sa sklopki ili sabirnice u RAM. U programskom načinu rada adresa sa sklopki se usmjerava, a u načinu rada adresa sa sabirnice.

ramMUX

  • Opis ulaza: userInput je ulaz koji korisnik unosi tokom programskog načina rada. aRegInput su podaci sadržani u A registru, koji se koriste tokom operacije premještanja. kontrola je odabir za ovaj MUX.
  • Opis izlaza: izlaz je 10-bitni ulaz podataka u RAM.
  • Ukupno mjesto u sistemu: Ovaj MUX daje 10-bitne ulazne podatke koji se koriste u RAM modulu. Kada je kontrolni bit visok, MUX šalje podatke koje je korisnik unijeo u programskom načinu rada. Kada je kontrolni bit nizak, MUX šalje podatke na upravljačku sabirnicu.

ramModule

  • Opis ulaza: inputData su podaci pohranjeni u RAM -u. inputAddress je lokacija na kojoj se podaci pohranjuju. program pokazuje da li je računar u programskom ili radnom režimu. readWrite označava da li se događa operacija čitanja ili pisanja. notCE je kontrolni bit za RAM modul. move označava da se izvodi operacija premještanja.
  • Opis izlaza: outputDataToBus su podaci koji idu od RAM -a do sabirnice. outputData i output Address su podaci i adresa koji idu u registar instrukcija.
  • Sveukupno mjesto u sistemu: RAM omogućava skladištenje programa i podataka u memoriji prije pokretanja programa. Kada se program pokrene, RAM prima adresu iz MAR -a i šalje podatke na toj adresi na sabirnicu.

adresaROM

  • Opis ulaza: opCode je ulaz koji sadrži adresu opcode -a koji izvodi računar
  • Opis izlaza: opCodeStart je memorijska adresa koja označava prvu lokaciju mikro instrukcija odgovarajućeg opCode.
  • Sveukupno mjesto u sistemu: Ovaj modul uzima zaključanu mikro instrukciju i izbacuje memorijsku lokaciju koja odgovara početku te sekvence mikro instrukcija.

ringCounter

  • Opis ulaza: reset vraća brojač na 100000 (prvo "T stanje"). Clk povećava brojač za jedan na padajućoj ivici sata. NOP označava da je trenutno stanje/ciklus ciklus "bez operacije".
  • Opis izlaza: count je izlaz brojača.
  • Ukupno mesto u sistemu: Brojač prstenova kontroliše unapred podešeni brojač i ocrtava šest mikro-koraka u svakom ciklusu instrukcija (T1-T6).

preCounter

  • Opis ulaza: opCodeStart je memorijska lokacija mikro instrukcija za opCode koje se izvode. T1 poništava brojač na 0 kada je visok. Kada je T3 visok, opCodeStart se učitava i brojanje se nastavlja s te lokacije za preostala 3 ciklusa (T4-T6). Clr postavlja brojač na 0. Clk povećava brojač za jedan na padajućoj ivici.
  • Opis izlaza: controlWordLocation daje memorijsku lokaciju kontrolne riječi koju treba izvršiti.
  • Ukupno mjesto u sistemu: Svaki op-kod ima 3 mikro-upute. Brojač se povećava za 1 počevši od 0 za prva 3 ciklusa (ciklus preuzimanja). Brojač tada aktivira brojač zvona radi učitavanja adrese na opCodeStart i povećava se za 1 za preostala 3 ciklusa. Na ovaj način preCounter kontrolira slijed mikro instrukcija koje treba izvesti.

controlROM

  • Opis ulaza: controlWordLocation je adresa kontrolnog riječi koju će controlROM poslati. NOP označava da je lokacija "bez operacije".
  • Opis izlaza: controlWord je kontrolna riječ koja omogućava/onemogućava različite računalne module da izvedu željenu operaciju.
  • Sveukupno mjesto u sistemu: Ovaj modul dekodira memorijsku lokaciju iz predbrojača i emitira kontrolni riječ za željenu operaciju.

ALU

  • Opis ulaza: A i B su ulazi iz registra A i registra B na kojima ALU izvodi aritmetičke i logičke operacije. Kada je oduzimanje aktivno, to znači da se B oduzima od A.
  • Opis izlaza: rezultat je rezultat zbrajanja A i B ili oduzimanja B iz A. Izlazi većiThan, lessThan i equTo pokazuju da li (AB, ili A = B) i koriste se u modulu uvjetnog skoka. greška ukazuje na prelijevanje ili nedovoljno ispuštanje kada je aktivno.
  • Ukupno mjesto u sistemu: ALU sadrži logiku za aritmetičke i logičke operacije koje izvodi računar. Ovaj modul može dodati i oduzeti dva 10-bitna binarna broja. ALU takođe može utvrditi da li je A> B, A

conditionalJmp

  • Opis ulaza: inputCount se koristi za zaključavanje trenutnog brojača. inputAddress se koristi za zaključavanje adrese na koju bi se prešlo. loadFromRegister kada niska zasuna ulazeAddress. loadCount pri niskim zasunima inputCount. kada je outputEnable nizak izlaz je postavljen na adresu za skok na. gT, iT i eQ određuje koji se uvjet provjerava. većiThan, manjiTan i jednakiTu su ulazi iz ALU -a koji ukazuju na rezultat usporedbe između A i B. Na uzlaznoj ivici sata Clk inputCount i inputAddress se čitaju u registre.
  • Opis izlaza: outputJmp je adresa koju će programski brojač pročitati.
  • Sveukupno mjesto u sistemu: ovaj modul upravlja uslovnim i bezuslovnim skokovima za računar. Na osnovu ulaza gT, iT i eQ, modul određuje koji uvjet treba provjeriti i je li taj uvjet istinit ili lažan. Ako je uslov tačan, on će ispisati adresu instrukcije za skok, u suprotnom će prikazati broj sledeće instrukcije.

binToBCD

  • Opis ulaza: numerirajte 10 -bitni broj za pretvaranje u binarno kodiranu decimalu.
  • Opis izlaza: stotine znamenke na mjestu stotina binarnog broja. desetice znamenke na mjestu desetice binarnog broja. jedinice cifra na mjestima jedinica binarnog broja.
  • Ukupno mjesto u sistemu: Ovaj modul pretvara 10 -bitni broj iz izlaznog registra u BCD kako bi naš četveroznamenkasti upravljački program zaslona prikazao broj u decimalnom obliku na 7 -segmentnom zaslonu.

fourDigitDriver

  • Opis ulaza: broj je 16 -bitni binarni ulaz koji se dovodi do dekodera. inClk je unutrašnji sat Basys ploča i koristi se za razdjelnik sata. RST poništava sat koji se koristi za pokretanje znamenki.
  • Opis izlaza: anoda određuje mjesto koje će biti osvijetljeno. digit je ulazni broj dekodera.
  • Sveukupno mjesto u sistemu: Ovaj modul pokreće dekoder da prikaže BCD broj na ekranu.

dekoder

  • Opis ulaza: inputNumber je broj koji dolazi iz upravljačkog programa i koji će biti dekodiran.
  • Opis izlaza: katode određuju koje će katode biti uključene za prikaz željene znamenke.
  • Opšte mesto u sistemu: Ovaj modul dekodira cifru koja će se prikazati na 7 -segmentnom ekranu.

fourDigitDisplay

  • Opis ulaza: broj je broj koji se prikazuje na 7 -segmentnom displeju. greška označava kada bi na ekranu trebalo biti napisano "Err". Clk je signal sata na kojem ekran radi. Ovaj signal mora biti oko 60 Hz tako da zaslon može prikazati sva 4 znamenkasta mjesta istovremeno.
  • Opis izlaza: anoda određuje koje je mjesto za znamenke omogućeno. katoda određuje koje su katode aktivirane za prikaz željene znamenke.
  • Ukupno mjesto u sistemu: Ovaj modul prikazuje broj na 7 -segmentnom ekranu. Pogledajte priručnik s uputama za ploču Basys 3 za informacije o tome koje se katode i anode aktiviraju za korištenje zaslona. Kad je bit greške visok, na zaslonu se prikazuje "Err".

outputMUX

  • Opis ulaza: progModeInput određuje koji LED -ovi su uključeni tokom programiranja. runModeInput određuje koji LED diode su uključeni tokom rada. modeSelect je izborni ili kontrolni bit za MUX.
  • Opis izlaza: ledOutput označava koji će LED diode biti uključeni.
  • Sveukupno mjesto u sistemu: Ovisno o načinu rada računara (program ili rum), MUX će uključiti različite LED diode. U programskom režimu (modeSelect je '0'), MUX uključuje LED diode da liče na memorijsku lokaciju u kojoj se nalazi računar i na ono što sadrži. U načinu rada (modeSelect je '1'), MUX se koristi za otklanjanje grešaka, ali se može postaviti za prikaz bilo čega drugog.

clockDivider

  • Opis ulaza: stop čita pet MSB bitova sa sabirnice radi otkrivanja naredbe zaustavljanja ('11111') i zaustavlja takt. inputClk je unutarnji signal sata na Basys 3 ploči.
  • Opis izlaza: ouputClk je novi sat koji je usporen.
  • Sveukupno mjesto u sistemu: Ovaj sat se koristi za usporavanje rada računara kako bi korisnik mogao odrediti šta se dešava. Sat može raditi mnogo brže, međutim, trenutno je postavljen na 2 Hz.

triStateBuffer

  • Opis ulaza: Din je 5 -bitni ulaz koji ulazi u bafer. Ep je kontrolni bit.
  • Opis izlaza: Dout je 5 -bitni izlaz bafera
  • Sveukupno mjesto u sistemu: Kada je kontrolni bit Ep aktivan, bafer emitira ulaz. Kada kontrolni bit nije aktivan, međuspremnik ne emitira ništa.

tenBitDRegister

  • Opis ulaza: Dbus je ulaz na koji se nalazi registar. Clk dozvoljava registru da čita podatke na rastućoj ivici sata. ARST postavlja registar na 0 asinhrono. Kada je outputEnable nizak, sadržaj registra je izlaz. Kada je readIn nizak, registar zaključava Dbus na uzlaznoj ivici sata.
  • Opis izlaza: Qbus je izlaz registra
  • Sveukupno mjesto u sistemu: Registar se koristi više puta na cijelom računaru i koristi se za skladištenje informacija prilikom izvođenja operacija.

fiveBitDRegister

  • Opis ulaza: Dbus je ulaz na koji se nalazi registar. Clk dozvoljava registru da čita podatke na rastućoj ivici sata. ARST postavlja registar na 0 asinhrono. Kada je outputEnable nizak, sadržaj registra je izlaz. Kada je readIn nizak, registar zaključava Dbus na uzlaznoj ivici sata.
  • Opis izlaza: Qbus je izlaz registra.
  • Sveukupno mjesto u sistemu: Registar se koristi više puta na cijelom računaru i koristi se za skladištenje informacija prilikom izvođenja operacija.

Korak 3: Kodirajte

Ispod je mapa koja sadrži ograničenje i izvorne datoteke za 10-bitni računar.

Korak 4: Demo i Uzorak koda

Gornji video prikazuje kako programirati 10-bitni računar na Basys 3 FPGA ploči. PDF koji sadrži op-kodove i uzorak programa također je priložen ispod.

Preporučuje se: