Բովանդակություն:

Տասը բիթանոց համակարգիչ - VHDL ՝ 4 քայլ
Տասը բիթանոց համակարգիչ - VHDL ՝ 4 քայլ

Video: Տասը բիթանոց համակարգիչ - VHDL ՝ 4 քայլ

Video: Տասը բիթանոց համակարգիչ - VHDL ՝ 4 քայլ
Video: 10 ՏՐԱՄԱԲԱՆԱԿԱՆ ՀԱՆԵԼՈՒԿՆԵՐ ԵՒ ԳԼՈՒԽԿՈՏՐՈՒԿՆԵՐ, ՈՐՈՆՔ ԿՄԱՐԶԵՆ ՁԵՐ ՈՒՂԵՂԸ 2024, Հուլիսի
Anonim
Տասը բիթանոց համակարգիչ - VHDL
Տասը բիթանոց համակարգիչ - VHDL

Պատրաստված է ՝ Թայլեր Սթար և Էզզեդդեն Գազալի

Ներածություն

Այս նախագիծը ավարտվել է որպես Cal Poly SLO- ում CPE 133- ի վերջնական ծրագրի մի մաս: Դա հիանալի նախագիծ է մեկի համար, ով ցանկանում է հասկանալ, թե ինչպես են համակարգիչներն աշխատում իրենց ամենացածր մակարդակում և ինչպես են նրանք կատարում իրենց խնդիրները: Նախագիծը մոդելավորվել է Ալբերտ Մալվինոյի թվային համակարգչային էլեկտրոնիկա գրքում նկարագրված 8-բիթանոց SAP համակարգչի հիման վրա: Այնուամենայնիվ, մենք համակարգիչը հասցրել ենք 10 բիթի ՝ ավելի շատ op կոդերի (գործառնական կոդերի) իրականացման հնարավորություն տալու համար: Օգտագործողը կարող է համակարգչին ծրագրել մի շարք գործողություններ կատարելու միջոցով ՝ մուտքագրելով որոշակի հրահանգներ:

Համակարգի և շրջանային ճարտարապետություն

Համակարգիչը գրված է VHDL- ով և տեղադրվելու է Digilent- ի Basys 3 տախտակին: Մուտքերը քարտեզագրվելու են տախտակի ներքևի անջատիչների վրա: Վերականգնելու և գրելու գործառույթների համար կօգտագործվի երկու շոշափելի անջատիչ: Արդյունքը կցուցադրվի տախտակի 7 հատվածի էկրանին:

Համակարգիչը կքայքայվի ավելի փոքր սխեմաների (մոդուլների), որոնք կարգավորում են տարբեր գործողություններ: Յուրաքանչյուր մոդուլ մանրամասն կբացատրվի հետևյալ քայլերում:

Քայլ 1: Նյութեր

Նյութեր
Նյութեր

Այս նախագծի համար անհրաժեշտ է Digilent- ի Basys3 FPGA տախտակը և միկրո USB մետաղալար `տախտակը ձեր համակարգչին միացնելու համար:

Քայլ 2. Շրջանակային մոդուլների արգելափակման դիագրամ

Շրջանակային մոդուլների արգելափակման դիագրամ
Շրջանակային մոդուլների արգելափակման դիագրամ
Շրջանակային մոդուլների արգելափակման դիագրամ
Շրջանակային մոդուլների արգելափակման դիագրամ
Շրջանակային մոդուլների արգելափակման դիագրամ
Շրջանակային մոդուլների արգելափակման դիագրամ

Վերևի բլոկ-դիագրամները ցույց են տալիս 10-բիթանոց համակարգիչը կազմող տարբեր սխեմաների մոդուլներ: Ստորև բերված են վերը նշված դիագրամներում ներկայացված առանձին մասերի/մոդուլների նկարագրությունները:

Countրագրի հաշվիչ

Մուտքերի նկարագրություն. Մուտքագրումը 5 բիթանոց մուտք է `համարը ծրագրի հաշվիչում բեռնելու համար: Cp երբ բարձր հաշվիչը հաշվում է ժամացույցի եզրերի անկման վրա: Clr- ը հաշվիչը զրոյացնում է 0. Ep- ի դեպքում, երբ բարձր հաշվիչը դուրս է բերում ընթացիկ հաշվարկը: Sp երբ բարձր հաշվիչը սահմանում է թիվը մուտքագրվող թվի վրա:

  • Արդյունքների նկարագրություն.

    ելքը հաշվարկի պատճեն է ՝ LEDS 0-15-ով օգտագործելու համար: Հաշվարկը թողարկում է ընթացիկ հաշվարկը:

  • Ընդհանուր տեղը համակարգում. Այս հաշվիչը հետևում է ծրագրի գտնվելու վայրում գտնվող հիշողության վայրին: Բոլոր ծրագրերը սկսվում են 00000 (0) հիշողության հասցեից և բարձրանում մինչև 11111 (31), եթե դադար չի օգտագործվում: Անցման հայտարարություններում ծրագրի հաշվիչը շարունակում է հաշվել այն հասցեից, որտեղից ծրագիրը ցատկում է:

Մուտք MUX

  • Մուտքերի նկարագրություն. Հասցեն վերցնում է մուտքը 11 -ից 15 -ը անջատիչներից: Controlsրագիրը վերահսկում է, թե որ մուտքն է ելք դեպի երթուղի:
  • Արդյունքների նկարագրություն. Ելքը ուղղորդում է ընտրված մուտքը RAM- ին:
  • Ընդհանուր տեղ համակարգում. Այս MUX- ը որոշում է, թե արդյոք անջատիչներից կամ ավտոբուսից հասցեն ուղարկել RAM: Programրագրի ռեժիմում անջատիչներից հասցեն ուղղորդվում է, իսկ գործարկման ռեժիմում `երթուղու երթուղին:

ramMUX

  • Մուտքերի նկարագրություն. aRegInput- ը գրանցամատյանում պարունակվող տվյալներն են, որոնք օգտագործվում են տեղափոխման գործողության ժամանակ: Այս MUX- ի համար վերահսկիչն ընտրված է:
  • Ելքների նկարագրություն. Ելքը RAM- ի 10-բիթանոց տվյալների մուտքագրումն է:
  • Ընդհանուր տեղ համակարգում. Այս MUX- ը թողարկում է 10-բիթանոց մուտքային տվյալները, որոնք օգտագործվում են RAM մոդուլում: Երբ հսկիչ բիթը բարձր է, MUX- ը թողարկում է տվյալները, որոնք օգտագործողը մուտքագրել է ծրագրի ռեժիմում: Երբ հսկիչ բիթը ցածր է, MUX- ը տվյալները դուրս է բերում կառավարման ավտոբուսի վրա:

ram Մոդուլ

  • Մուտքերի նկարագրություն. InputData- ն RAM- ում պահվող տվյալներն են: inputAddress- ն այն վայրն է, որտեղ տվյալները պահվում են: ծրագիրը ցույց է տալիս, արդյոք համակարգիչը գտնվում է ծրագրի կամ գործարկման ռեժիմում: readWrite- ը ցույց է տալիս ընթերցման կամ գրելու գործողություն, թե ոչ: notCE- ը RAM մոդուլի կառավարման բիթն է: move- ը ցույց է տալիս, որ շարժման գործողություն է կատարվում:
  • Արդյունքների նկարագրություն. OutputDataToBus- ն այն տվյալներն են, որոնք RAM- ից անցնում են ավտոբուս: outputData և ելքային հասցեն այն տվյալները և հասցեն են, որոնք գնում են հրահանգների գրանցամատյան:
  • Ընդհանուր տեղը համակարգում. RAM- ը թույլ է տալիս ծրագրի և տվյալների պահեստավորում հիշողության մեջ մինչև ծրագրի գործարկումը: Theրագիրը գործարկելուց հետո RAM- ը ստանում է հասցե MAR- ից և տվյալ հասցեով տվյալները դուրս է բերում ավտոբուս:

հասցե ROM

  • Մուտքերի նկարագրություն. OpCode- ը այն մուտքն է, որը պարունակում է այն կոդի հասցեն, որը կատարվում է համակարգչի կողմից
  • Ելքերի նկարագրություն. OpCodeStart- ը հիշողության հասցեն է, որը ցույց է տալիս համապատասխան opCode- ի առաջին միկրո-հրահանգի գտնվելու վայրը:
  • Ընդհանուր տեղը համակարգում. Այս մոդուլը վերցնում է փակված միկրո-հրահանգը և դուրս է բերում հիշողության վայրը, որը համապատասխանում է այդ միկրո-ցուցումների հաջորդականության սկզբին:

ringCounter

  • Մուտքերի նկարագրություն. Վերականգնումը հաշվիչը վերադարձնում է 100000 -ի (առաջին «T վիճակը»): Clk- ը մեկ առ մեկ ավելացնում է հաշվիչը ժամացույցի անկման եզրին: NOP- ը ցույց է տալիս, որ ընթացիկ վիճակը/ցիկլը «առանց գործողության» ցիկլ է:
  • Արդյունքների նկարագրություն. Հաշվարկը հաշվիչի ելքն է:
  • Ընդհանուր տեղը համակարգում. Օղակաձեւ հաշվիչը վերահսկում է նախապես կարգավորվող հաշվիչը և սահմանում վեց միկրո քայլերը յուրաքանչյուր հրահանգի ցիկլում (T1-T6):

preCounter

  • Մուտքերի նկարագրություն. OpCodeStart- ը opCode- ի համար իրականացվող միկրո-հրահանգների հիշողության վայրն է: T1- ը հաշվիչը 0 -ի է վերադարձնում, երբ այն բարձր է: Երբ T3- ը բարձր է, opCodeStart- ը բեռնվում է, և հաշվարկը շարունակվում է այդ վայրից մնացած 3 ցիկլերի համար (T4-T6): Clr- ը հաշվիչ է 0 -ի դիմաց: Clk- ը մեկ առ մեկ հաշվիչ է ընկնող եզրին:
  • Output- ների նկարագրություն.
  • Ընդհանուր տեղը համակարգում. Յուրաքանչյուր բաց կոդ ունի 3 միկրո-հրահանգ: Առաջին 3 ցիկլերի համար հաշվիչը ավելանում է 1 -ով `սկսած 0 -ից (բերման ցիկլ): Հետո հաշվիչը գործարկվում է օղակաձև հաշվիչի կողմից `հասցեն բեռնելու համար opCodeStart- ում և ավելանում է 1 -ով` մնացած 3 ցիկլերի համար: Այս կերպ preCounter- ը վերահսկում է իրականացվելիք միկրո-հրահանգների հաջորդականությունը:

controlROM

  • Մուտքերի նկարագրություն. NOP- ը նշում է, որ գտնվելու վայրը «առանց գործողության» վայր է:
  • Ելքների նկարագրություն.
  • Համակարգի ընդհանուր տեղ.

ALU

  • Մուտքերի նկարագրություն. A և B են մուտքերը A և B գրանցամատյաններից, որոնց վրա ALU- ն կատարում է թվաբանական և տրամաբանական գործողություններ: Երբ հանումն ակտիվ է, դա ցույց է տալիս, որ B- ն հանվում է A- ից:
  • Արդյունքների նկարագրություն. Արդյունքը A և B ավելացնելու կամ B- ն A.- ից հանելու արդյունքն է: Արդյունքները ավելի մեծ, քան քիչ և հավասար Նշելու համար, եթե (AB, կամ A = B) և օգտագործվում են պայմանական ցատկման մոդուլում: սխալը ցույց է տալիս արտահոսքի կամ արտահոսքի ակտիվ լինելը:
  • Համակարգի ընդհանուր տեղը. ALU- ն պարունակում է համակարգչի կողմից իրականացվող թվաբանական և տրամաբանական գործողությունների տրամաբանությունը: Այս մոդուլը կարող է գումարել և հանել երկու 10-բիթանոց երկուական թվեր: ALU- ն կարող է նաև որոշել, թե A> B, A

պայմանական Jmp

  • Մուտքերի նկարագրություն. InputCount- ը օգտագործվում է ընթացիկ հաշիվը փակելու համար: inputAddress- ն օգտագործվում է այն հասցեն փակելու համար, որի վրա կարելի էր անցնել: loadFromRegister երբ ցածր սողնակներ են մուտքագրում Հասցե: loadCount երբ ցածր կողպում է inputCount. երբ outputEnable- ը ցածր է, ելքը սահմանվում է հասցեով ՝ անցնելու դեպի goT, iT և eQ, թե որ պայմանն է ստուգվում: ավելի մեծ, ավելի քիչ, և հավասար ՏԵ are են ALU- ի մուտքերը, որոնք ցույց են տալիս A- ի և B- ի համեմատության արդյունքը:
  • Արդյունքների նկարագրություն. OutputJmp այն հասցեն է, որտեղ ծրագրի հաշվիչը կկարդա:
  • Ընդհանուր տեղ համակարգում. Այս մոդուլը կարգավորում է համակարգչի համար պայմանական և ոչ պայմանական թռիչքները: Հիմնվելով gT, iT և eQ մուտքերի վրա ՝ մոդուլը որոշում է, թե որ պայմանը ստուգել և արդյոք այդ պայմանը ճշմարիտ է կամ կեղծ: Եթե պայմանը ճշմարիտ է, այն դուրս է բերում դեպի այն անցնելու հրահանգի հասցե, հակառակ դեպքում այն դուրս է բերում հաջորդ հրահանգի հաշվարկը:

binToBCD

  • Մուտքերի նկարագրություն. Համարակալեք 10 բիթանոց համարը ՝ երկուական կոդավորված տասնորդական դարձնելու համար:
  • Ելքների նկարագրություն. Հարյուրավոր թվանշան երկուական թվի հարյուրավոր տեղում: տասնյակ թվանշանը երկուական թվի տասնյակ տեղում: մեկը երկնիշ թվի մեկ տեղում թվանշանն է:
  • Ընդհանուր տեղը համակարգում. Այս մոդուլը 10 բիթանոց համարը փոխակերպում է ելքային գրանցամատյանից BCD- ի, որպեսզի մեր քառանիշ ցուցադրման վարորդը տասնորդական համարը ցուցադրի 7 հատվածի ցուցադրման վրա:

FourDigitDriver

  • Մուտքերի նկարագրություն. Թիվը 16 բիթանոց երկուական մուտքն է, որը մղվում է դեպի ապակոդավորիչ: inClk- ը Basys- ի տախտակների ներքին ժամացույցն է և օգտագործվում է ժամացույցի բաժանարարի համար: RST- ն վերականգնում է թվերը քշելու համար օգտագործվող ժամացույցը:
  • Ելքների նկարագրություն. Անոդը որոշում է, թե որ թվանշանի տեղը կլուսավորվի: թվանշանը ապակոդավորման մուտքային թիվն է:
  • Ընդհանուր տեղը համակարգում. Այս մոդուլը ապակոդավորիչին մղում է BCD համարը ցուցադրել էկրանին:

ապակոդավորիչ

  • Մուտքերի նկարագրություն. InputNumber- ն այն թվանշանն է, որը գալիս է վարորդից և որը վերծանվելու է:
  • Ելքների նկարագրություն. Կաթոդները որոշում են, թե որ կատոդները միացված կլինեն ցանկալի թվանշանը ցուցադրելու համար:
  • Ընդհանուր տեղը համակարգում. Այս մոդուլը վերծանում է այն թվանշանը, որը պետք է ցուցադրվի 7 հատվածի էկրանին:

FourDigitDisplay

  • Մուտքերի նկարագրություն. Համարը այն թիվն է, որը կցուցադրվի 7 հատվածի էկրանին: սխալը ցույց է տալիս, երբ էկրանը պետք է կարդա «Err»: Clk- ը ժամացույցի ազդանշան է, որի վրա ցուցադրումը աշխատում է: Այս ազդանշանը պետք է լինի մոտ 60 Հց, որպեսզի ցուցադրումը կարողանա միաժամանակ ցույց տալ բոլոր 4 նիշանոցները:
  • Ելքների նկարագրություն. Անոդը որոշում է, թե որ թվանշանի տեղն է միացված: կաթոդը որոշում է, թե որ կատոդներն են ակտիվացված ՝ ցանկալի թվանշանը ցուցադրելու համար:
  • Ընդհանուր տեղը համակարգում. Այս մոդուլը ցուցադրում է թիվ 7 հատվածի էկրանին: Տե՛ս Basys 3 տախտակի հրահանգների ձեռնարկին ՝ տեղեկություններ ստանալու համար, թե որ կաթոդներն ու անոդներն են ակտիվանում ՝ էկրանն օգտագործելու համար: Երբ սխալի բիթը բարձր է, էկրանին ցուցադրվում է «Err»:

ելք MUX

  • Մուտքերի նկարագրություն. ProgModeInput- ը որոշում է, թե որ ledերն են միացված ծրագրավորման ռեժիմի ընթացքում: runModeInput- ը որոշում է, թե որ led- երն են միացված գործարկման ռեժիմի ընթացքում: modeSelect- ը MUX- ի ընտրված կամ կառավարման բիթն է:
  • Ելքների նկարագրություն. LedOutput- ը ցույց է տալիս, թե որ led- երը կմիացվեն:
  • Համակարգի ընդհանուր տեղը. Կախված համակարգչի ռեժիմից (ծրագիր կամ ռոմ), MUX- ը միացնելու է տարբեր լուսադիոդներ: Programրագրի ռեժիմում (ռեժիմի ընտրությունը '0' է), MUX- ը միացնում է լուսադիոդները `հիշեցնելու այն հիշողության վայրը, որտեղ գտնվում է համակարգիչը և այն, ինչ այն պարունակում է: Գործարկման ռեժիմում (modeSelect- ը '1' է), MUX- ը օգտագործվում է վրիպազերծման համար, բայց կարող է սահմանվել որևէ այլ բան ցուցադրելու համար:

ժամացույցի բաժանում

  • Մուտքերի նկարագրություն. Կանգառը կարդում է ավտոբուսից հինգ MSB բիթ ՝ կանգառի հրամանը հայտնաբերելու համար («11111») և կանգնեցնում ժամացույցը: inputClk- ը Basys 3 տախտակի ներքին ժամացույցի ազդանշանն է:
  • Արդյունքների նկարագրություն. OuputClk- ը դանդաղեցված նոր ժամացույցն է:
  • Ընդհանուր տեղը համակարգում. Այս ժամացույցը օգտագործվում է համակարգիչը դանդաղեցնելու համար, որպեսզի օգտագործողը հնարավորություն տա որոշելու, թե ինչ է կատարվում: Theամացույցը կարող է շատ ավելի արագ աշխատել, այնուամենայնիվ, այն ներկայումս սահմանված է 2 Հց:

triStateBuffer

  • Մուտքերի նկարագրությունը. Din- ը բուֆերի մեջ մտնող 5 բիթանոց մուտքագրումն է: Ep- ը վերահսկման բիթն է:
  • Արդյունքների նկարագրություն. Dout- ը բուֆերի 5 բիթանոց ելքն է
  • Ընդհանուր տեղը համակարգում. Երբ վերահսկիչ բիթը ակտիվ է, բուֆերը թողարկում է մուտքը: Երբ հսկիչ բիթը ակտիվ չէ, բուֆերը ոչինչ չի թողնում:

tenBitDRegister

  • Մուտքերի նկարագրություն. Dbus- ը մուտքն է, որին պետք է գրանցամատյանը: Clk- ն թույլ է տալիս ռեգիստրին կարդալ ժամացույցի աճող եզրին գտնվող տվյալները: ARST- ը գրանցամատյանը 0 է սահմանում ասինքրոն: Երբ outputEnable- ը ցածր է, գրանցամատյանի բովանդակությունը ելք է: Երբ readIn- ը ցածր է, գրանցամատյանը ամրացնում է Dbus- ը ժամացույցի բարձրացող եզրին:
  • Արդյունքների նկարագրություն. Qbus- ը գրանցամատյանի արդյունքն է
  • Ընդհանուր տեղ համակարգում. Գրանցամատյանը մի քանի անգամ օգտագործվում է ամբողջ համակարգչում և օգտագործվում է տեղեկատվություն պահելու համար գործողություններ կատարելիս:

fiveBitDRegister

  • Մուտքերի նկարագրություն. Dbus- ը մուտքն է, որին պետք է գրանցամատյանը: Clk- ն թույլ է տալիս ռեգիստրին ընթերցել ժամացույցի աճող եզրին գտնվող տվյալները: ARST- ը գրանցամատյանը 0 է սահմանում ասինքրոն: Երբ outputEnable- ը ցածր է, գրանցամատյանի բովանդակությունը ելք է: Երբ readIn- ը ցածր է, գրանցամատյանը ամրացնում է Dbus- ը ժամացույցի բարձրացող եզրին:
  • Արդյունքների նկարագրություն. Qbus- ը գրանցամատյանի արդյունքն է:
  • Ընդհանուր տեղ համակարգում. Գրանցամատյանը մի քանի անգամ օգտագործվում է ամբողջ համակարգչում և օգտագործվում է տեղեկատվություն պահելու համար գործողություններ կատարելիս:

Քայլ 3: Կոդ

Ստորև բերված է մի թղթապանակ, որը պարունակում է 10-բիթանոց համակարգչի սահմանափակումներն ու աղբյուրները:

Քայլ 4: Դեմո և ընտրանքային ծածկագիր

Վերոնշյալ տեսանյութը ցույց է տալիս, թե ինչպես ծրագրավորել 10-բիթանոց համակարգիչը Basys 3 FPGA տախտակին: Ստորև կցվում է նաև op- կոդերը պարունակող PDF ֆայլ և օրինակելի ծրագիր:

Խորհուրդ ենք տալիս: