Orodha ya maudhui:

Kompyuta kumi kidogo - VHDL: 4 Hatua
Kompyuta kumi kidogo - VHDL: 4 Hatua

Video: Kompyuta kumi kidogo - VHDL: 4 Hatua

Video: Kompyuta kumi kidogo - VHDL: 4 Hatua
Video: Harmonize - Mwaka wangu (Official Music Video) 2024, Julai
Anonim
Kompyuta kumi kidogo - VHDL
Kompyuta kumi kidogo - VHDL

Iliyoundwa na: Tyler Starr na Ezzeedden Gazali

Utangulizi

Mradi huu ulikamilishwa kama sehemu ya mradi wa mwisho wa CPE 133 huko Cal Poly SLO. Ni mradi mzuri kwa mtu anayetafuta kuelewa jinsi kompyuta zinavyofanya kazi katika kiwango cha chini kabisa na jinsi wanavyofanikisha majukumu yao. Mradi huo umeigwa baada ya kompyuta ya 8-bit ya SAP iliyoelezewa katika kitabu cha Albert Malvino cha Digital Computer Electronics. Walakini, tumeongeza kompyuta hadi bits 10 ili kuruhusu utekelezaji wa nambari zaidi za op (nambari za operesheni). Mtumiaji anaweza kupanga kompyuta kufanya seti ya shughuli kwa kuingiza maagizo fulani.

Usanifu wa Mfumo na Mzunguko:

Kompyuta imeandikwa katika VHDL na itapatikana kwenye bodi ya Basys 3 kutoka Digilent. Pembejeo zitapangwa kwa swichi zilizo chini ya ubao. Swichi mbili za kugusa zitatumika kwa kazi za Rudisha na Kuandika. Pato litaonyeshwa kwenye onyesho la sehemu 7 ya bodi.

Kompyuta itagawanywa katika nyaya ndogo (moduli) ambazo zinashughulikia shughuli tofauti. Kila moduli itaelezewa kwa undani katika hatua zifuatazo.

Hatua ya 1: Vifaa

Vifaa
Vifaa

Kinachohitajika kwa mradi huu ni bodi ya Basys3 FPGA kutoka Digilent na waya ndogo ya USB kuunganisha bodi hiyo kwenye kompyuta yako.

Hatua ya 2: Zuia Mchoro wa Moduli za Mzunguko

Mchoro wa Kuzuia Moduli za Mzunguko
Mchoro wa Kuzuia Moduli za Mzunguko
Mchoro wa Kuzuia Moduli za Mzunguko
Mchoro wa Kuzuia Moduli za Mzunguko
Mchoro wa Kuzuia Moduli za Mzunguko
Mchoro wa Kuzuia Moduli za Mzunguko

Michoro ya kuzuia hapo juu inaonyesha moduli tofauti za mizunguko ambazo hufanya kompyuta-10-bit. Chini ni maelezo kwa kila sehemu / moduli za kibinafsi zilizoonyeshwa kwenye michoro hapo juu.

Kaunta ya Programu

Maelezo ya Pembejeo: pembejeo ni pembejeo 5 kwa kupakia nambari kwenye kaunta ya programu. Cp wakati juu kaunta inahesabu juu ya kingo za saa zinazoanguka. Clr inabadilisha kukabiliana na 0. Ep wakati kaunta hutoa matokeo ya hesabu ya sasa. Sp wakati juu kaunta inaweka hesabu kwa nambari kwenye ingizo

  • Maelezo ya Matokeo:

    pato ni nakala ya hesabu ya matumizi kwenye LEDS 0-15. Hesabu matokeo ya hesabu ya sasa.

  • Mahali pa jumla katika Mfumo: Kaunta hii inafuatilia eneo la kumbukumbu ambalo programu iko. Programu zote zinaanzia kwenye anwani ya kumbukumbu 00000 (0) na kwenda hadi 11111 (31), isipokuwa kusimama kunatumika. Katika taarifa za kuruka, kaunta ya programu inaendelea kuhesabu kutoka kwa anwani ambayo programu hiyo inaruka.

Ingizo MUX

  • Maelezo ya Pembejeo: Anwani huchukua maoni kutoka kwa swichi 11 hadi 15. MAR inachukua maoni kutoka kwa rejista 10 iliyotumiwa kama MAR. Udhibiti wa programu ambayo pembejeo ya kuelekea kwenye pato.
  • Maelezo ya Matokeo: njia za pato pembejeo iliyochaguliwa kwenye RAM.
  • Mahali pa Jumla katika Mfumo: MUX hii huamua ikiwa itapeleka anwani kutoka kwa swichi au basi hadi RAM. Katika hali ya programu anwani kutoka kwa swichi imeelekezwa na katika hali ya kukimbia anwani kutoka kwa basi imepelekwa.

ramMUX

  • Maelezo ya Pembejeo: Ingizo la mtumiaji ni pembejeo ambayo mtumiaji huingia wakati wa hali ya programu. InRegInput ni data iliyo kwenye rejista ya A, hii hutumiwa wakati wa shughuli ya kusonga. udhibiti ni chaguo kwa MUX hii.
  • Maelezo ya Matokeo: pato ni pembejeo ya data 10-bit kwenye RAM.
  • Mahali pa Jumla katika Mfumo: MUX hii hutoa data ya pembejeo ya 10-bit ambayo hutumiwa katika moduli ya RAM. Wakati udhibiti kidogo uko juu, MUX hutoa data ambayo mtumiaji aliingia katika hali ya programu. Wakati udhibiti ni mdogo, MUX hutoa data kwenye basi ya kudhibiti.

ramModule

  • Maelezo ya Pembejeo: inputData ni data inayohifadhiwa kwenye RAM. inputAddress ni mahali ambapo data imehifadhiwa. mpango unaonyesha ikiwa kompyuta iko katika mpango au hali ya kukimbia. kusomaWrite inaonyesha ikiwa operesheni ya kusoma au kuandika inatokea. notCE ni kidhibiti kidogo cha moduli ya RAM. hoja inaonyesha kuwa operesheni ya kusonga inafanywa.
  • Maelezo ya Matokeo: outputDataToBus ni data ambayo huenda kutoka RAM kwenda basi. outputData na Anwani ya pato ni data na anwani ambayo huenda kwa rejista ya mafundisho.
  • Mahali kwa ujumla katika Mfumo: RAM inaruhusu uhifadhi wa programu na data kwenye kumbukumbu kabla ya programu kuanza. Mara baada ya programu kuanza, RAM hupokea anwani kutoka MAR na hutoa data kwenye anwani hiyo kwa basi.

anwaniROM

  • Maelezo ya Pembejeo: opCode ni pembejeo iliyo na anwani ya opcode ambayo inafanywa na kompyuta
  • Maelezo ya Matokeo: opCodeStart ni anwani ya kumbukumbu inayoonyesha eneo la kwanza la mafundisho madogo ya opCode inayofanana.
  • Mahali pa jumla katika Mfumo: Moduli hii inachukua maagizo madogo yaliyowekwa na hutoa eneo la kumbukumbu linalolingana na mwanzo wa mlolongo wa mafundisho hayo madogo.

ringCounter

  • Maelezo ya Pembejeo: seti upya kaunta hadi 100000 ("T state" ya kwanza). Clk inaongeza kaunta kwa moja kwenye makali ya saa inayoanguka. NOP inaonyesha kuwa hali / mzunguko wa sasa ni mzunguko wa "hakuna operesheni".
  • Maelezo ya Matokeo: hesabu ni pato la kaunta.
  • Mahali pa Jumla katika Mfumo: Kaunta ya pete inadhibiti kaunta inayoweza kutanguliwa na inafafanua hatua sita ndogo katika kila mzunguko wa maagizo (T1-T6).

preCounter

  • Maelezo ya Pembejeo: opCodeStart ni eneo la kumbukumbu ya maagizo madogo ya opCode inayotekelezwa. T1 inarudisha kaunta hadi 0 wakati iko juu. Wakati T3 iko juu, opCodeStart imepakiwa na hesabu inaendelea kutoka mahali hapo kwa mizunguko 3 iliyobaki (T4-T6). Clr inaweka kinyume na 0. Clk nyongeza inakabiliana na moja kwenye makali ya kuanguka.
  • Maelezo ya Matokeo: kudhibitiWordLocation hutoa eneo la kumbukumbu ya neno la kudhibiti litekelezwe.
  • Mahali pa jumla katika Mfumo: Kila op-code ina maagizo 3 ndogo. Kuongezeka kwa kaunta kwa 1 kuanzia saa 0 kwa mizunguko 3 ya kwanza (mzunguko wa kuchota). Kaunta inasababishwa na kaunta ya pete kupakia anwani kwenye opCodeStart na kuongezeka kwa 1 kwa mizunguko 3 iliyobaki. Kwa njia hii preCounter inadhibiti mlolongo wa maagizo madogo ya kutekelezwa.

kudhibitiROM

  • Maelezo ya Pembejeo: controlWordLocation ni anwani ya kudhibitiWord ambayo controlROM itatoa. NOP inaonyesha kuwa eneo ni "hakuna operesheni" eneo.
  • Maelezo ya Matokeo: kudhibitiWord ni neno la kudhibiti linalowezesha / kuzima moduli tofauti za kompyuta kutekeleza operesheni inayotakikana.
  • Mahali pa jumla katika Mfumo: Moduli hii huamua eneo la kumbukumbu kutoka kwa preCounter na hutoa neno la kudhibiti kwa shughuli inayotakikana.

ALU

  • Maelezo ya Pembejeo: A na B ni pembejeo kutoka kwa Sajili A na Sajili B ambayo ALU hufanya shughuli za hesabu na mantiki. Wakati kutoa inafanya kazi, inaonyesha kuwa B inachukua kutoka A.
  • Maelezo ya Matokeo: matokeo ni matokeo ya kuongeza A na B, au kutoa B kutoka A. Matokeo zaidi, kuliko chini, na sawa Ili kuonyesha ikiwa (AB, au A = B) na hutumiwa katika moduli ya kuruka ya masharti. hitilafu inaonyesha kufurika au kufurika wakati inafanya kazi.
  • Mahali pa Jumla katika Mfumo: ALU ina mantiki ya shughuli za hesabu na mantiki zinazofanywa na kompyuta. Moduli hii inaweza kuongeza na kutoa nambari mbili za 10-bit. ALU pia inaweza kuamua ikiwa A> B, A

mashartiJmp

  • Maelezo ya Pembejeo: inputCount hutumiwa kuweka hesabu ya sasa. inputAddress ni kutumika kwa latch anwani ambayo ingekuwa akaruka kwa. mzigoToka Kujiandikisha wakati pembejeo za chini za pembejeoAdress. mzigoCount wakati pembejeo za chini pembejeoCount. wakati outputEnable iko chini pato limewekwa kwa anwani ili kuruka kwa.gT, iT, na eQ kuamua ni hali gani inakaguliwa. zaidi, chini, na sawaNi pembejeo kutoka ALU zinazoonyesha matokeo ya kulinganisha kati ya A na B. Kwenye kingo ya saa inayoinuka ya Clk pembejeo ya Hesabu na pembejeo ya Anwani husomwa kwenye rejista.
  • Maelezo ya Matokeo: patoJmp ni anwani ambayo kaunta ya programu itasoma ndani.
  • Mahali pa jumla katika Mfumo: moduli hii inashughulikia kuruka kwa masharti na isiyo ya masharti kwa kompyuta. Kulingana na pembejeo gT, iT, na eQ, moduli huamua ni hali gani ya kuangalia na ikiwa hali hiyo ni ya kweli au ya uwongo. Ikiwa hali ni ya kweli, itatoa anwani ya maagizo ya kurukia, vinginevyo, inatoa hesabu ya maagizo yanayofuata.

binToBCD

  • Ufafanuzi wa Pembejeo: nambari ya nambari 10 ili ubadilishe kuwa nambari iliyodhibitiwa ya binary.
  • Maelezo ya Matokeo: mamia ya tarakimu katika sehemu ya mamia ya nambari ya binary. makumi ya tarakimu mahali pa makumi ya nambari ya binary. hizo tarakimu katika sehemu moja ya nambari ya binary.
  • Mahali pa jumla katika Mfumo: Moduli hii inabadilisha nambari 10 kutoka daftari la pato kwenda BCD ili dereva wetu wa kuonyesha tarakimu nne kuonyesha nambari katika desimali kwenye onyesho la sehemu 7.

nneDigitDriver

  • Maelezo ya Pembejeo: nambari ni pembejeo ya binary 16 ambayo inaendeshwa kwa kisimbuzi. inClk ni bodi za Basys saa ya ndani na hutumiwa kwa mgawanyiko wa saa. RST huweka upya saa inayotumika kuendesha nambari.
  • Maelezo ya Matokeo: anode huamua ni mahali gani nambari itangazwa. nambari ni nambari ya kuingiza kwa dekoda.
  • Mahali pa jumla katika Mfumo: Moduli hii inasababisha kisimbuzi kutoa nambari ya BCD kwenye onyesho.

avkodare

  • Maelezo ya Pembejeo: pembejeoNambari ni nambari ambayo hutoka kwa dereva na ambayo itasimbuliwa.
  • Maelezo ya Matokeo: cathode huamua ni cathode zipi zitawashwa ili kuonyesha nambari inayotakikana.
  • Mahali pa jumla katika Mfumo: Moduli hii huamua nambari ambayo itaonyeshwa kwenye onyesho la sehemu 7.

nneDigitDisplay

  • Maelezo ya pembejeo: nambari ni nambari inayoonyeshwa kwenye onyesho la sehemu 7. kosa linaonyesha wakati onyesho linapaswa kusoma "Kosa". Clk ni ishara ya saa ambayo onyesho linaendelea. Ishara hii inapaswa kuwa karibu 60 Hz ili onyesho liweze kuonyesha maeneo yote yenye tarakimu nne wakati huo huo.
  • Maelezo ya Matokeo: anode huamua ni nambari ipi ya nambari imewezeshwa. cathode huamua ni cathode zipi zilizoamilishwa kuonyesha nambari inayotakikana.
  • Mahali pa jumla katika Mfumo: Moduli hii inaonyesha nambari kwenye onyesho la sehemu 7. Rejelea mwongozo wa mafunzo ya bodi ya Basys 3 kwa habari ambayo cathode na anode zinawasha kutumia onyesho. Wakati hitilafu iko juu, onyesho linaonyesha "Kosa".

patoMUX

  • Ufafanuzi wa Pembejeo: runModeInput huamua ni ipi iliyoongozwa imewashwa wakati wa hali ya kukimbia. mode Chagua ni kitufe cha kuchagua au kudhibiti kwa MUX.
  • Maelezo ya Matokeo: ledOutput inaonyesha ni ipi iliyoongozwa itawashwa.
  • Mahali pa jumla katika Mfumo: Kulingana na hali ambayo kompyuta iko (mpango au ramu), MUX itawasha vipengee tofauti. Katika hali ya programu (modeSelect ni '0'), MUX inageuka kuongozwa ili kufanana na eneo la kumbukumbu ambalo kompyuta iko na kile kilichomo. Katika hali ya kukimbia (modeChagua ni '1'), MUX hutumiwa kwa utatuzi lakini inaweza kuwekwa kuonyesha kitu kingine chochote.

saaDawanyaji

  • Maelezo ya Pembejeo: simama usome biti tano za MSB kutoka kwa basi ili kugundua amri ya kusimama ('11111') na kusimamisha saa. inputClk ni ishara ya saa ya ndani ya bodi ya Basys 3.
  • Maelezo ya Matokeo: ouputClk ni saa mpya ambayo imepunguzwa.
  • Mahali kwa ujumla katika Mfumo: Saa hii hutumiwa kupunguza kompyuta ili kuwezesha mtumiaji kuamua kinachoendelea. Saa inaweza kukimbia kwa kasi zaidi, hata hivyo, kwa sasa imewekwa kwa 2 Hz.

triStateBuffer

  • Maelezo ya Pembejeo: Din ni pembejeo kidogo ya 5 inayoingia kwenye bafa. Ep ni udhibiti kidogo.
  • Maelezo ya Matokeo: Dout ni pato 5 la bafa
  • Mahali pa Jumla katika Mfumo: Wakati kidhibiti kidogo cha Ep kinatumika, bafa hutoa matokeo. Wakati udhibiti haufanyi kazi, bafa haitoi chochote.

kumiBitDRegister

  • Maelezo ya Pembejeo: Dbus ni pembejeo ambayo rejista inapaswa. Clk inaruhusu rejista kusoma katika data kwenye makali ya saa inayoinuka. ARST inaweka rejista kwa 0 asynchronously. Wakati outputEnable iko chini, yaliyomo kwenye rejista ndio pato. Wakati kusomaIn iko chini, rejista inaweka Dbus kwenye kingo za saa zinazoinuka.
  • Maelezo ya Matokeo: Qbus ni pato la rejista
  • Mahali pa jumla katika Mfumo: Rejista hutumiwa mara nyingi kwenye kompyuta na hutumiwa kuhifadhi habari wakati wa kufanya shughuli.

tanoBitDRegister

  • Maelezo ya Pembejeo: Dbus ni pembejeo ambayo rejista inapaswa. Clk inaruhusu rejista kusoma katika data kwenye makali ya saa inayoinuka. ARST inaweka rejista kwa 0 asynchronously. Wakati uzalishajiEnable ni ya chini, yaliyomo kwenye rejista ndio pato. Wakati kusomaIn iko chini, rejista inaweka Dbus kwenye kingo za saa zinazoinuka.
  • Maelezo ya Matokeo: Qbus ni pato la rejista.
  • Mahali pa jumla katika Mfumo: Rejista hutumiwa mara nyingi kwenye kompyuta na hutumiwa kuhifadhi habari wakati wa kufanya shughuli.

Hatua ya 3: Kanuni

Chini ni folda iliyo na kikwazo na faili za chanzo kwa kompyuta 10-bit.

Hatua ya 4: Maonyesho na Msimbo wa Mfano

Video hapo juu inaonyesha jinsi ya kupanga kompyuta 10-bit kwenye bodi ya Basys 3 FPGA. Pdf iliyo na misimbo ya op na programu ya mfano pia imeambatanishwa hapa chini.

Ilipendekeza: