Talaan ng mga Nilalaman:

Ten Bit Computer - VHDL: 4 Hakbang
Ten Bit Computer - VHDL: 4 Hakbang

Video: Ten Bit Computer - VHDL: 4 Hakbang

Video: Ten Bit Computer - VHDL: 4 Hakbang
Video: | VHDL code of 4 bit Up counter | How to write vhdl code of 4 bit up counter 2024, Nobyembre
Anonim
Ten Bit Computer - VHDL
Ten Bit Computer - VHDL

Ginawa ni: Tyler Starr at Ezzeedden Gazali

Panimula

Ang proyektong ito ay nakumpleto bilang bahagi ng huling proyekto para sa CPE 133 sa Cal Poly SLO. Ito ay isang mahusay na proyekto para sa isang taong naghahanap upang maunawaan kung paano gumana ang mga computer sa kanilang pinakamababang antas at kung paano nila nakakamit ang kanilang mga gawain. Ang proyekto ay na-modelo pagkatapos ng 8-bit SAP computer na inilarawan sa aklat ni Albert Malvino na Digital Computer Electronics. Gayunpaman, nadagdagan namin ang computer sa 10-bit upang payagan ang pagpapatupad ng higit pang mga op code (mga operating code). Maaaring i-program ng gumagamit ang computer upang magsagawa ng isang hanay ng mga pagpapatakbo sa pamamagitan ng pag-input ng ilang mga tagubilin.

System at Circuit Architecture:

Ang computer ay nakasulat sa VHDL at makakapaloob sa board ng Basys 3 mula sa Digilent. Ang mga input ay maima-map sa mga switch sa ilalim ng board. Dalawang tactile switch ang gagamitin para sa pag-andar ng I-reset at Isulat. Ipapakita ang output sa display ng 7 segment ng board.

Ang computer ay masisira sa mas maliit na mga circuit (modules) na hahawak sa iba't ibang mga operasyon. Ang bawat modyul ay ipapaliwanag nang detalyado sa mga sumusunod na hakbang.

Hakbang 1: Mga Kagamitan

Mga Kagamitan
Mga Kagamitan

Ang kailangan lang para sa proyektong ito ay ang Basys3 FPGA board mula sa Digilent at isang micro USB wire upang ikonekta ang board sa iyong computer.

Hakbang 2: I-block ang Diagram ng Mga Module ng Circuit

I-block ang Diagram ng Mga Module ng Circuit
I-block ang Diagram ng Mga Module ng Circuit
I-block ang Diagram ng Mga Module ng Circuit
I-block ang Diagram ng Mga Module ng Circuit
I-block ang Diagram ng Mga Module ng Circuit
I-block ang Diagram ng Mga Module ng Circuit

Ang mga diagram ng block sa itaas ay nagpapakita ng iba't ibang mga module ng circuit na bumubuo sa 10-bit na computer. Nasa ibaba ang mga paglalarawan para sa bawat isa sa mga indibidwal na bahagi / modyul na ipinakita sa mga diagram sa itaas.

Counter ng Programa

Paglalarawan ng Mga Input: ang input ay isang 5 bit na input para sa pag-load ng isang numero sa counter ng programa. Cp kapag mataas ang bilang ng counter sa pagbagsak ng mga gilid ng orasan. Nagre-reset ang Clr ng counter sa 0. Ep kapag mataas ang counter ay naglalabas ng kasalukuyang bilang. Sp kapag mataas ang counter ay itinakda ang bilang sa bilang sa input

  • Paglalarawan ng Mga Output:

    ang output ay isang kopya ng bilang para magamit sa LEDS 0-15. Bilangin outputs ang kasalukuyang bilang.

  • Pangkalahatang Lugar sa System: Sinusubaybayan ng counter na ito ang lokasyon ng memorya na nasa programa. Nagsisimula ang lahat ng mga programa sa memorya ng 00000 (0) at umakyat sa 11111 (31), maliban kung gagamitin ang isang paghinto. Sa mga pahayag ng pagtalon, ang counter ng programa ay patuloy na bilangin mula sa address kung saan tumatalon ang programa.

Mag-input ng MUX

  • Paglalarawan ng Mga Input: Kinukuha ng address ang input mula sa switch 11 hanggang 15. Kinukuha ng MAR ang input mula sa 10 bit register na ginamit bilang isang MAR. Kinokontrol ng programa kung aling input ang patungo sa output.
  • Paglalarawan ng Mga Output: mga ruta ng output na napiling input sa RAM.
  • Pangkalahatang Lugar sa System: Tinutukoy ng MUX na ito kung i-ruta ang address mula sa mga switch o sa bus patungo sa RAM. Sa mode ng programa ang address mula sa mga switch ay inililipat at sa run mode ang address mula sa bus ay inililipat.

ramMUX

  • Paglalarawan ng Mga Input: ang userInput ay ang input na ipinasok ng gumagamit sa panahon ng mode ng programa. aRegInput ay ang data na nilalaman sa isang rehistro, ginagamit ito sa panahon ng isang operasyon ng paglipat. ang control ay ang piliin para sa MUX na ito.
  • Paglalarawan ng Mga Output: ang output ay ang 10-bit na input ng data sa RAM.
  • Pangkalahatang Lugar sa System: Ang MUX na ito ay naglalabas ng 10-bit na data ng pag-input na ginagamit sa module ng RAM. Kapag ang control bit ay mataas, ang MUX ay naglalabas ng data na ipinasok ng gumagamit sa mode ng programa. Kapag ang control bit ay mababa, ang MUX ay naglalabas ng data sa control bus.

ramModule

  • Paglalarawan ng Mga Input: ang inputData ay ang data na nakaimbak sa RAM. Ang inputAddress ay ang lokasyon kung saan itinatago ang data. Ipinapahiwatig ng programa kung ang computer ay nasa programa o run mode. readWrite ay nagpapahiwatig kung ang isang pagbasa o pagsusulat na operasyon ay nangyayari. Ang notCE ay ang control bit para sa module ng RAM. isinasaad ng paglipat na isinasagawa ang isang operasyon sa paglipat.
  • Paglalarawan ng Mga Output: outputDataToBus ay ang data na napupunta mula sa RAM papunta sa bus. outputData at output Address ay ang data at address na pupunta sa rehistro ng pagtuturo.
  • Pangkalahatang Lugar sa System: Pinapayagan ng RAM ang programa at imbakan ng data sa memorya bago tumakbo ang isang programa. Kapag ang programa ay tumatakbo, ang RAM ay tumatanggap ng isang address mula sa MAR at output ng data sa address na iyon sa bus.

addressROM

  • Paglalarawan ng Mga Input: ang opCode ay ang input na naglalaman ng address ng opcode na isinasagawa ng computer
  • Paglalarawan ng Mga Output: ang opCodeStart ay ang address ng memorya na nagpapahiwatig ng unang lokasyon ng micro-pagtuturo ng kaukulang opCode.
  • Pangkalahatang Lugar sa System: Kinukuha ng modyul na ito ang naka-lat na micro-instruction at inilalabas ang lokasyon ng memorya na tumutugma sa pagsisimula ng pagkakasunud-sunod ng micro-instruction na iyon.

ringCounter

  • Paglalarawan ng Mga Input: ang pag-reset ay nagtatakda ng counter pabalik sa 100000 (ang unang "estado ng T"). Ang Clk ay nagdaragdag ng counter ng isa sa isang bumabagsak na gilid ng orasan. Ipinapahiwatig ng NOP na ang kasalukuyang estado / ikot ay isang "walang operasyon" na ikot.
  • Paglalarawan ng Mga Output: ang bilang ay ang output ng counter.
  • Pangkalahatang Lugar sa System: Kinokontrol ng ring counter ang pre-settable counter at inilalarawan ang anim na mga micro-step sa bawat cycle ng pagtuturo (T1-T6).

preCounter

  • Paglalarawan ng Mga Input: ang opCodeStart ay ang lokasyon ng memorya ng mga micro-tagubilin para sa opCode na isinasagawa. Ire-reset ng T1 ang counter sa 0 kapag ito ay mataas. Kapag ang T3 ay mataas, ang opCodeStart ay na-load at ang bilang ay nagpapatuloy mula sa lokasyon na iyon para sa natitirang 3 cycle (T4-T6). Itinakda ni Clr ang counter sa 0. Ang mga pagtaas ng clk ng counter ng isa sa isang nahuhulog na gilid.
  • Paglalarawan ng Mga Output: ang controlWordLocation ay naglalabas ng lokasyon ng memorya ng control word na naisasagawa.
  • Pangkalahatang Lugar sa System: Ang bawat op-code ay may 3 micro-tagubilin. Ang counter ay nagdaragdag ng 1 na nagsisimula sa 0 para sa unang 3 cycle (fetch cycle). Ang counter pagkatapos ay pinalitaw ng ring counter upang mai-load ang address sa opCodeStart at dagdagan ng 1 para sa natitirang 3 cycle. Sa ganitong paraan kinokontrol ng preCounter ang pagkakasunud-sunod ng mga micro-tagubilin na naisakatuparan.

controlROM

  • Paglalarawan ng Mga Input: controlWordLocation ay ang address ng controlWord na ilalabas ng controlROM. Ipinapahiwatig ng NOP na ang lokasyon ay isang lokasyon na "walang operasyon".
  • Paglalarawan ng Mga Output: controlWord ay ang control word na nagbibigay-daan sa / hindi paganahin ang iba't ibang mga module ng computer upang maisakatuparan ang isang nais na operasyon.
  • Pangkalahatang Lugar sa System: Ini-decode ng modyul na ito ang lokasyon ng memorya mula sa preCounter at inilalabas ang controlWord para sa nais na operasyon.

ALU

  • Paglalarawan ng Mga Input: Ang A at B ay ang mga input mula sa Magrehistro A at Magrehistro B kung saan ginagawa ng ALU ang pagpapatakbo ng aritmetika at lohika. Kapag ang pagbabawas ay aktibo, ipinapahiwatig nito na ang B ay binabawas mula sa A.
  • Paglalarawan ng Mga Output: ang resulta ay ang resulta ng pagdaragdag ng A at B, o pagbawas ng B mula sa A. Ang mga output na mas malakiThan, lessThan, at pantay upang maipahiwatig kung (AB, o A = B) at ginagamit sa kondisyunal na module ng pagtalon. error ay nagpapahiwatig ng isang overflow o underflow kapag aktibo.
  • Pangkalahatang Lugar sa System: Naglalaman ang ALU ng lohika para sa pagpapatakbo ng arithmetic at lohika na isinasagawa ng computer. Ang modyul na ito ay maaaring magdagdag at magbawas ng dalawang 10-bit na mga binary number. Maaari ring matukoy ng ALU kung A> B, A

may kondisyonJmp

  • Descriptoin ng Mga Input: ang inputCount ay ginagamit upang mailagay ang kasalukuyang bilang. Ginagamit ang inputAddress upang mailagay ang address na tatalon sa. loadFromRegister kapag mababa ang latches inputAddress. loadCount kapag mababa ang latches inputCount. kapag ang outputEnable ay mababa ang output ay nakatakda sa address upang tumalon sa.gT, iT, at eQ matukoy kung aling kondisyon ang nasuri. mas malakiThan, lessThan, at pantayTo ang mga input mula sa ALU na nagpapahiwatig ng resulta ng paghahambing sa pagitan ng A at B. Sa tumataas na gilid ng orasan ng Clk ang inputCount at inputAddress ay binabasa sa mga rehistro.
  • Paglalarawan ng Mga Output: ang outputJmp ay ang address na babasahin ng counter ng programa.
  • Pangkalahatang Lugar sa System: humahawak ang modyul na ito ng mga kondisyonal at di-kondisyon na paglukso para sa computer. Batay sa mga input ng gT, iT, at eQ, tinutukoy ng modyul kung aling kundisyon ang susuriin at kung ang kondisyong iyon ay totoo o hindi. Kung totoo ang kundisyon, maglalabas ito ng address ng tagubilin upang tumalon, kung hindi man, naglalabas ito ng bilang ng susunod na tagubilin.

binToBCD

  • Paglalarawan ng Mga Input: bilangin ang numero ng 10 bit upang mai-convert sa binary na naka-code na decimal.
  • Paglalarawan ng Mga Output: daan-daang digit sa daan-daang lugar ng binary number. sampu ang digit sa sampung lugar ng binary number. isa ang digit sa mga lugar ng binary number.
  • Pangkalahatang Lugar sa System: Ang modyul na ito ay nagko-convert ng 10 bit number mula sa output register sa BCD upang maipakita ng aming apat na digit na driver ng display ang numero sa decimal sa 7 segment na display.

apat naDigitDriver

  • Paglalarawan ng Mga Input: ang numero ay ang 16 bit na binary input na hinihimok sa decoder. Ang inClk ay ang panloob na orasan ng Basys boards at ginagamit para sa isang divider ng orasan. Ire-reset ng RST ang orasan na ginamit upang himukin ang mga digit.
  • Paglalarawan ng Mga Output: tinutukoy ng anode kung aling digit na lugar ang ililiawan. ang digit ay ang input number sa decoder.
  • Pangkalahatang Lugar sa System: Hinahatid ng modyul na ito ang decoder upang i-output ang numero ng BCD sa display.

decoder

  • Paglalarawan ng Mga Input: ang inputNumber ay ang digit na nagmula sa driver at na mai-decode.
  • Paglalarawan ng Mga Output: tinutukoy ng mga cathode kung aling mga cathode ang bubuksan upang maipakita ang nais na digit.
  • Pangkalahatang Lugar sa System: Ang module na ito ay nagde-decode ng digit na ipapakita sa 7 segment na pagpapakita.

apatDigitDisplay

  • Paglalarawan ng mga pag-input: ang numero ay ang bilang na ipapakita sa 7 segment na pagpapakita. Ipinapahiwatig ng error kung kailan dapat mabasa ng display ang "Err". Ang clk ay ang signal ng orasan na tumatakbo ang display. Ang signal na ito ay dapat na nasa paligid ng 60 Hz upang ang display ay maaaring ipakita ang lahat ng 4 na digit na mga lugar nang sabay-sabay.
  • Paglalarawan ng Mga Output: tinutukoy ng anode kung aling digit na lugar ang pinapagana. Tinutukoy ng katod kung aling mga cathode ang pinapagana upang ipakita ang nais na digit.
  • Pangkalahatang Lugar sa System: Nagpapakita ang modyul na ito ng isang numero sa 7 segment na pagpapakita. Sumangguni sa manu-manong tagubilin ng board ng Basys 3 para sa impormasyon kung aling mga cathode at anode ang nag-o-aktibo upang magamit ang display. Kapag ang error bit ay mataas, ipinapakita ng display ang "Err".

outputMUX

  • Paglalarawan ng Mga Input: tumutukoy ang progModeInput kung aling mga led ang nakabukas sa panahon ng mode ng programa. Tinutukoy ng runModeInput kung aling mga led ang nakabukas sa panahon ng run mode. Ang modeSelect ay ang piliin o kontrolin ang bit para sa MUX.
  • Paglalarawan ng Mga Output: ipinahiwatig ng ledOutput kung aling mga led ang bubuksan.
  • Pangkalahatang Lugar sa System: Nakasalalay sa mode na nasa computer ang (programa o rum), bubuksan ng MUX ang iba't ibang led's. Sa mode ng programa (ang modeSelect ay '0'), ang MUX ay nagbukas ng led's upang maging katulad ng lokasyon ng memorya na nasa loob ng computer at kung ano ang nilalaman nito. Sa run mode (modeSelect ay '1'), ang MUX ay ginagamit para sa pag-debug ngunit maaaring itakda upang ipakita ang anupaman.

relo ng orasan

  • Paglalarawan ng Mga Input: ihihinto ng pagbasa ang limang mga bitbit na MSB mula sa bus upang makita ang isang huminto na utos ('11111') at ihihinto ang orasan. Ang inputClk ay ang panloob na signal ng orasan ng Basys 3 board.
  • Paglalarawan ng Mga Output: ouputClk ay ang bagong orasan na pinabagal.
  • Pangkalahatang Lugar sa System: Ang orasan na ito ay ginagamit upang pabagalin ang computer upang gawing posible para sa gumagamit na matukoy kung ano ang nangyayari. Ang orasan ay maaaring tumakbo nang mas mabilis, subalit, kasalukuyan itong nakatakda sa 2 Hz.

triStateBuffer

  • Paglalarawan ng Mga Input: Din ay ang 5 bit input na papunta sa buffer. Ep ang control bit.
  • Paglalarawan ng Mga Output: Ang Dout ay ang 5 bit na output ng buffer
  • Pangkalahatang Lugar sa System: Kapag ang control bit Ep ay aktibo, ang buffer ay naglalabas ng input. Kapag ang control bit ay hindi aktibo, ang buffer ay hindi naglalabas ng anuman.

tenBitDRegister

  • Paglalarawan ng Mga Input: Ang Dbus ay ang input kung saan dapat magparehistro. Pinapayagan ng Clk ang rehistro na basahin ang data sa isang tumataas na gilid ng orasan. Itinakda ng ARST ang rehistro sa 0 nang hindi magkakasabay. Kapag ang outputEnable ay mababa, ang mga nilalaman ng rehistro ay ang output. Kapag readIn ay mababa, ang rehistro latches Dbus sa tumataas na gilid ng orasan.
  • Paglalarawan ng Mga Output: Ang Qbus ay ang output ng rehistro
  • Pangkalahatang Lugar sa System: Ang rehistro ay ginagamit ng maraming beses sa buong computer at ginagamit upang mag-imbak ng impormasyon kapag gumaganap ng mga operasyon.

fiveBitDRegister

  • Paglalarawan ng Mga Input: Ang Dbus ay ang input kung saan dapat magparehistro. Pinapayagan ng Clk ang rehistro na basahin ang data sa isang tumataas na gilid ng orasan. Itinakda ng ARST ang rehistro sa 0 nang hindi magkakasabay. Kapag ang outputEnable ay mababa, ang mga nilalaman ng rehistro ay ang output. Kapag readIn ay mababa, ang rehistro latches Dbus sa tumataas na gilid ng orasan.
  • Paglalarawan ng Mga Output: Ang Qbus ay ang output ng rehistro.
  • Pangkalahatang Lugar sa System: Ang rehistro ay ginagamit ng maraming beses sa buong computer at ginagamit upang mag-imbak ng impormasyon kapag gumaganap ng mga operasyon.

Hakbang 3: Code

Nasa ibaba ang isang folder na naglalaman ng pagpilit at mga mapagkukunang file para sa 10-bit na computer.

Hakbang 4: Demo at Sample Code

Ipinapakita ng video sa itaas kung paano i-program ang 10-bit computer sa Basys 3 FPGA board. Ang isang pdf na naglalaman ng mga op-code at isang sample na programa ay nakakabit din sa ibaba.

Inirerekumendang: