Mundarija:

O'n bitli kompyuter - VHDL: 4 qadam
O'n bitli kompyuter - VHDL: 4 qadam

Video: O'n bitli kompyuter - VHDL: 4 qadam

Video: O'n bitli kompyuter - VHDL: 4 qadam
Video: Скачать Windows 10 БЕСПЛАТНО с официального сайта на русском 2024, Noyabr
Anonim
O'n bitli kompyuter - VHDL
O'n bitli kompyuter - VHDL

Muallif: Tayler Starr va Ezzeedden Gazali

Kirish

Ushbu loyiha Cal Poly SLOda CPE 133 uchun yakuniy loyiha doirasida yakunlandi. Bu kompyuterlar eng past darajada ishlashini va o'z vazifalariga qanday erishishini tushunmoqchi bo'lganlar uchun ajoyib loyihadir. Loyiha Albert Malvinoning "Digital Computer Electronics" kitobida tasvirlangan 8 bitli SAP kompyuteri asosida modellashtirilgan. Biroq, biz ko'proq operatsion kodlarni (operatsion kodlarni) amalga oshirish uchun kompyuterni 10 bitgacha oshirdik. Foydalanuvchi ma'lum ko'rsatmalarni kiritish orqali kompyuterni bir qator operatsiyalarni bajarishga dasturlashi mumkin.

Tizim va davr arxitekturasi:

Kompyuter VHDL -da yozilgan va Digilent -dan Basys 3 doskasida bo'ladi. Kirishlar taxtaning pastki qismidagi kalitlarga moslashtiriladi. Qayta tiklash va yozish funktsiyalari uchun ikkita sensorli kalit ishlatiladi. Chiqish taxtaning 7 segmentli displeyida ko'rsatiladi.

Kompyuter turli operatsiyalarni bajaradigan kichikroq sxemalarga (modullarga) bo'linadi. Har bir modul quyidagi bosqichlarda batafsil tushuntiriladi.

1 -qadam: materiallar

Materiallar
Materiallar

Bu loyihani amalga oshirish uchun Digilent -dan Basys3 FPGA platasi va kartani kompyuterga ulash uchun mikro USB sim kerak bo'ladi.

2 -qadam: O'chirish modullarining blok diagrammasi

O'chirish modullarining blok diagrammasi
O'chirish modullarining blok diagrammasi
O'chirish modullarining blok diagrammasi
O'chirish modullarining blok diagrammasi
O'chirish modullarining blok diagrammasi
O'chirish modullarining blok diagrammasi

Yuqoridagi blok-diagrammalarda 10-bitli kompyuterni tashkil etuvchi turli sxemalar modullari ko'rsatilgan. Yuqorida diagrammalarda ko'rsatilgan alohida qismlar/modullarning har biri uchun tavsiflar berilgan.

Dastur hisoblagichi

Kirish tavsifi: kirish - bu dastur taymeriga raqamni yuklash uchun 5 bitli kirish. Cp yuqori bo'lganda, taymer tushayotgan soat qirralarini hisoblaydi. Clr hisoblagichni 0 ga qaytaradi. Hisoblagich joriy hisobni baland chiqarganda. Sp baland bo'lganda hisoblagich kirishni raqamiga o'rnatadi

  • Chiqishlarning tavsifi:

    chiqish-bu LEDlarning 0-15 da ishlatish uchun hisoblangan nusxasi. Hisoblash joriy sonni chiqaradi.

  • Tizimdagi umumiy joy: Bu hisoblagich dastur joylashgan xotira manzilini kuzatib boradi. Barcha dasturlar 00000 (0) xotira manzilidan boshlanadi va to'xtab qolmasa, 11111 (31) gacha ko'tariladi. O'tish bayonotlarida dastur hisoblagichi dastur o'tayotgan manzildan hisoblashni davom ettiradi.

MUX kiritish

  • Kirish ta'rifi: Manzil 11 dan 15 gacha kalitlardan ma'lumotlarni oladi. MAR 10 bitli registrdan MAR sifatida ishlatiladi. Dastur qaysi kirishni chiqishga yo'naltirishni boshqaradi.
  • Chiqishlarning tavsifi: chiqish tanlangan kirishni RAMga yo'naltiradi.
  • Tizimdagi umumiy joy: Bu MUX manzilni kalitlardan yoki avtobusdan RAMga yo'naltirishni aniqlaydi. Dastur rejimida kommutatorlarning manzili yo'naltiriladi va ish rejimida avtobusning manzili yo'naltiriladi.

ramMUX

  • Kirish tavsifi: userInput - bu foydalanuvchi dastur rejimida kiritadigan kirish. aRegInput - bu A registridagi ma'lumotlar, bu harakat paytida ishlatiladi. nazorat - bu MUX uchun tanlov.
  • Chiqishlarning tavsifi: chiqish-bu RAMga 10-bitli ma'lumotlarni kiritish.
  • Tizimdagi umumiy joy: Bu MUX RAM modulida ishlatiladigan 10-bitli ma'lumotlarni chiqaradi. Boshqaruv biti baland bo'lganda, MUX foydalanuvchi dastur rejimida kiritgan ma'lumotlarni chiqaradi. Boshqaruv biti past bo'lganda, MUX boshqaruv avtobusidagi ma'lumotlarni chiqaradi.

ramModule

  • Kirish tavsifi: inputData - bu RAMda saqlanadigan ma'lumotlar. inputAddress - bu ma'lumotlar saqlanadigan joy. dastur kompyuterning dastur yoki ish rejimida ekanligini ko'rsatadi. readWrite o'qish yoki yozish operatsiyasi sodir bo'lganligini ko'rsatadi. notCE - RAM modulining boshqaruv biti. harakat, harakatlanish jarayoni bajarilishini ko'rsatadi.
  • Chiqishlarning tavsifi: outputDataToBus - bu RAMdan avtobusga o'tadigan ma'lumotlar. outputData va output Address - bu ko'rsatmalar registriga kiruvchi ma'lumotlar va manzil.
  • Tizimdagi umumiy joy: RAM, dastur ishga tushgunga qadar dastur va ma'lumotlarni xotirada saqlashga imkon beradi. Dastur ishlagandan so'ng, RAM MAR -dan manzil oladi va shu manzildagi ma'lumotlarni avtobusga chiqaradi.

manzil ROM

  • Kirish tavsifi: opCode - bu kompyuter tomonidan bajariladigan kodning manzilini o'z ichiga olgan kirish
  • Chiqishlarning tavsifi: opCodeStart-bu tegishli opCode-ning birinchi mikro-ko'rsatma joyini ko'rsatadigan xotira manzili.
  • Tizimdagi umumiy joy: Bu modul mikroko'rsatmani yopib qo'yadi va shu mikro yo'riqnomaning boshlanishiga mos keladigan xotira joyini chiqaradi.

ringCounter

  • Kirish tavsifi: reset hisoblagichni 100000 ga qaytaradi (birinchi "T holati"). Clk hisoblagichni tushayotgan soat chetida birma -bir oshiradi. NOP joriy holat/tsikl "ishlamaydigan" tsikl ekanligini ko'rsatadi.
  • Chiqishlarning tavsifi: hisoblash - bu hisoblagichning chiqishi.
  • Tizimdagi umumiy joy: halqa hisoblagichi oldindan o'rnatilgan hisoblagichni boshqaradi va har bir buyruq tsiklida oltita mikro qadamni belgilaydi (T1-T6).

oldindan hisob -kitob

  • Kirishlarning tavsifi: opCodeStart-bu bajariladigan opCode uchun mikro yo'riqnomalarning xotira joyi. T1 yuqori bo'lganda hisoblagichni 0 ga qaytaradi. T3 baland bo'lganda, opCodeStart yuklanadi va qolgan 3 tsikl uchun hisob shu joydan davom etadi (T4-T6). Clr hisoblagichni 0 ga o'rnatadi. Yiqilish chekkasida birma -bir qadam ortadi.
  • Chiqishlarning tavsifi: controlWordLocation bajariladigan nazorat so'zining xotira joyini chiqaradi.
  • Tizimdagi umumiy joy: Har bir kodda 3 ta mikro yo'riqnoma mavjud. Hisoblagich dastlabki 3 tsikl uchun 0 dan boshlab 1 ga oshadi. Hisoblagich qo'ng'iroq hisoblagichi yordamida opCodeStart -ga manzilni yuklaydi va qolgan 3 tsikl uchun 1 ga ko'payadi. Shu tarzda, oldindan hisoblagich bajariladigan mikro yo'riqnomalar ketma-ketligini nazorat qiladi.

nazorat qilish

  • Kirishlarning tavsifi: controlWordLocation - bu controlROM chiqaradigan controlWord manzili. NOP bu joy "ishlamaydigan" joy ekanligini ko'rsatadi.
  • Chiqishlarning tavsifi: controlWord - bu turli xil kompyuter modullarini kerakli operatsiyani bajarishga imkon beradigan/o'chiradigan boshqaruv so'zi.
  • Tizimdagi umumiy joy: Ushbu modul xotira joyini oldindan hisoblagichdan ochadi va kerakli ish uchun controlWord -ni chiqaradi.

ALU

  • Kirishlarning tavsifi: A va B - bu A va B registrlarining kirishlari, ALU arifmetik va mantiqiy amallarni bajaradi. Chiqarish faol bo'lganda, bu B dan A dan chiqarilishini ko'rsatadi.
  • Chiqishlarning tavsifi: natija A va B ni qo'shish yoki A dan B ni olib tashlash natijasidir, agar (AB, yoki A = B) bo'lsa va shartli o'tish modulida ishlatilsa, kattaroq, kamroqThan va tengTutiladi. xato, faol bo'lganda, ortiqcha yoki to'kilganligini ko'rsatadi.
  • Tizimdagi umumiy joy: ALU kompyuter tomonidan bajariladigan arifmetik va mantiqiy operatsiyalar mantig'ini o'z ichiga oladi. Bu modul ikkita 10-bitli ikkilik sonlarni qo'shish va olib tashlashi mumkin. ALU A> B, A ekanligini ham aniqlashi mumkin

shartliJmp

  • Kirish tavsifi: inputCount joriy hisobni ushlab turish uchun ishlatiladi. inputAddress o'tish kerak bo'lgan manzilni qulflash uchun ishlatiladi. loadFromRo'yxatdan o'tish tugmalari past bo'lganida ro'yxatdan o'ting. loadCount past bo'lganida inputCount. outputEnable past bo'lsa, chiqish to.gT, iT va eQ ga o'tish uchun manzilga o'rnatiladi, qaysi shart tekshirilayotganini aniqlaydi. kattaThan, kamroqThan va tengTo - bu ALUdan kirishlar A va B o'rtasidagi taqqoslash natijasini ko'rsatadi, Clkning ko'tarilgan soat chetida inputCount va inputAddress registrlarga o'qiladi.
  • Chiqishlarning tavsifi: outputJmp - bu dastur hisoblagichi o'qiladigan manzil.
  • Tizimdagi umumiy joy: bu modul kompyuter uchun shartli va shartsiz sakrashlarni boshqaradi. GT, iT va eQ kirishlar asosida modul qaysi shartni tekshirish kerakligini va bu shart to'g'ri yoki noto'g'ri ekanligini aniqlaydi. Agar shart to'g'ri bo'lsa, u o'tish uchun ko'rsatma manzilini chiqaradi, aks holda keyingi ko'rsatmaning sonini chiqaradi.

binToBCD

  • Kirish tavsifi: ikkilik kodli o'nli kasrga aylantirish uchun 10 bitli raqamni raqamlang.
  • Chiqishlarning tavsifi: ikkilik sonning yuzlab joyidagi yuzlab raqam. ikkilik sonning o'nlik joyidagi o'nlik raqam. ikkilik sonning bir joyidagi raqam.
  • Tizimdagi umumiy joy: Bu modul 10 -raqamli chiqish registridan BCD -ga o'zgartiradi, shuning uchun bizning to'rt xonali displey drayveri raqamni 7 segmentli displeyda o'nli kasrda ko'rsatishi mumkin.

fourDigitDriver

  • Kirish tavsifi: raqam - bu 16 -bitli ikkilik kirish, dekoderga o'tkaziladi. inClk - bu Basys platalarining ichki soati va soatni ajratish uchun ishlatiladi. RST raqamlarni haydash uchun ishlatiladigan soatni tiklaydi.
  • Chiqishlarning tavsifi: anod qaysi raqamli joy yoritilishini aniqlaydi. raqam - bu dekoderning kirish raqami.
  • Tizimdagi umumiy joy: Ushbu modul dekoderni BCD raqamini displeyga chiqarishga undaydi.

dekoder

  • Kirish tavsifi: inputNumber - bu haydovchidan keladigan va kodi hal qilinadigan raqam.
  • Chiqishlarning tavsifi: katodlar kerakli raqamni ko'rsatish uchun qaysi katodlar yoqilishini aniqlaydi.
  • Tizimdagi umumiy joy: Ushbu modul 7 segmentli displeyda ko'rsatiladigan raqamni ochadi.

fourDigitDisplay

  • Kirish tavsifi: raqam - 7 segmentli displeyda ko'rsatiladigan raqam. xato qachon displeyda "Err" yozilishi kerakligini ko'rsatadi. Clk - displey ishlayotgan soat signalidir. Bu signal 60 Gts atrofida bo'lishi kerak, shuning uchun displey bir vaqtning o'zida 4 ta raqamli joyni ko'rsatishi mumkin.
  • Chiqishlarning tavsifi: anod qaysi raqamli joy yoqilganligini aniqlaydi. katod kerakli raqamni ko'rsatish uchun qaysi katodlar faollashtirilganligini aniqlaydi.
  • Tizimdagi umumiy joy: Bu modul 7 segmentli displeyda raqamni ko'rsatadi. Displeyni ishlatish uchun qaysi katod va anodlar faollashishi haqida ma'lumot olish uchun Basys 3 doskasining foydalanish qo'llanmasiga qarang. Xato biti baland bo'lsa, displeyda "Err" ko'rsatiladi.

chiqishMUX

  • Kirish tavsifi: progModeInput dasturlash rejimida qaysi LEDlar yoqilganligini aniqlaydi. runModeInput ish rejimida qaysi LEDlar yoqilganligini aniqlaydi. modeSelect - MUX uchun tanlash yoki boshqarish biti.
  • Chiqishlarning tavsifi: ledOutput qaysi LED yoqilishini ko'rsatadi.
  • Tizimdagi umumiy joy: Kompyuter rejimiga qarab (dastur yoki rom) MUX turli xil LEDlarni yoqadi. Dastur rejimida (modeSelect '0'), MUX kompyuterda joylashgan xotira joyiga va undagi narsalarga o'xshash bo'lishi uchun LEDni yoqadi. Ishlash rejimida (modeSelect '1'), MUX disk raskadrovka uchun ishlatiladi, lekin boshqa biror narsani ko'rsatadigan qilib sozlash mumkin.

soatDivider

  • Kirish tavsifi: stop to'xtatish buyrug'ini ('11111') aniqlash uchun avtobusdan beshta MSB bitini o'qiydi va soatni to'xtatadi. inputClk - Basys 3 platasining ichki soat signalidir.
  • Chiqishlarning tavsifi: ouputClk - sekinlashtirilgan yangi soat.
  • Tizimning umumiy o'rni: Bu soat kompyuterni sekinlashtirishi uchun foydalanuvchiga nima bo'layotganini aniqlash imkonini beradi. Soat ancha tez ishlashi mumkin, ammo hozirda u 2 Gts ga sozlangan.

triStateBuffer

  • Kirishlar tavsifi: Din - buferga kiruvchi 5 bitli kirish. Ep - bu nazorat biti.
  • Chiqishlarning tavsifi: Dout - buferning 5 bitli chiqishi
  • Tizimdagi umumiy joy: Ep boshqaruv elementi faol bo'lsa, bufer kirishni chiqaradi. Boshqaruv biti faol bo'lmaganida, bufer hech narsa chiqarmaydi.

tenBitDRegister

  • Kirish tavsifi: Dbus - bu registrga kiruvchi kirish. Clk, registrga soatlarning tez ko'tarilishidagi ma'lumotlarni o'qish imkonini beradi. ARST registrni asinxron tarzda 0 ga o'rnatadi. OutputEnable past bo'lsa, registrning tarkibi chiqish hisoblanadi. ReadIn past bo'lganda, registr Dbusni ko'tarilgan soat chetida ushlab turadi.
  • Chiqishlarning tavsifi: Qbus - registrning chiqishi
  • Tizimdagi umumiy joy: Registr kompyuterda bir necha marta ishlatiladi va operatsiyalarni bajarishda ma'lumotlarni saqlash uchun ishlatiladi.

fiveBitDRegister

  • Kirish tavsifi: Dbus - bu registrga kiruvchi kirish. Clk, registrga soatlarning tezligi to'g'risidagi ma'lumotlarni o'qish imkonini beradi. ARST registrni asinxron tarzda 0 ga o'rnatadi. OutputEnable past bo'lsa, registrning tarkibi chiqish hisoblanadi. ReadIn past bo'lganda, registr Dbusni ko'tarilgan soat chetida ushlab turadi.
  • Chiqishlarning tavsifi: Qbus - registrning chiqishi.
  • Tizimdagi umumiy joy: Registr kompyuterda bir necha marta ishlatiladi va operatsiyalarni bajarishda ma'lumotlarni saqlash uchun ishlatiladi.

3 -qadam: kod

Quyida 10 bitli kompyuter uchun cheklov va manba fayllari joylashgan papka.

4 -qadam: Demo va namuna kodi

Yuqoridagi videoda 10 bitli kompyuterni Basys 3 FPGA doskasida qanday dasturlash mumkinligi ko'rsatilgan. Quyida op kodlari va namunaviy dasturni o'z ichiga olgan pdf ilova qilingan.

Tavsiya: