Tartalomjegyzék:
- 1. lépés: Anyagok
- 2. lépés: Az áramköri modulok blokkdiagramja
- 3. lépés: Kód
- 4. lépés: Demo és mintakód
Videó: Tíz bites számítógép - VHDL: 4 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Készítette: Tyler Starr és Ezzeedden Gazali
Bevezetés
Ez a projekt a Cal Poly SLO CPE 133 végleges projektjének részeként fejeződött be. Nagyszerű projekt azok számára, akik szeretnék megérteni, hogyan működnek a számítógépek a legalacsonyabb szinten, és hogyan érik el feladataikat. A projekt az Albert Malvino Digital Computer Electronics című könyvében leírt 8 bites SAP számítógép után készült. A számítógépet azonban 10 bitesre növeltük, hogy több op kódot (működési kódot) lehessen megvalósítani. A felhasználó bizonyos utasítások megadásával programozhatja a számítógépet bizonyos műveletek végrehajtására.
Rendszer és áramkör architektúra:
A számítógép VHDL nyelven íródott, és a Digilent Basys 3 tábláján lesz. A bemenetek a kártya alján található kapcsolókhoz lesznek hozzárendelve. A Reset és Write funkciókhoz két tapintható kapcsolót használnak. A kimenet megjelenik a tábla 7 szegmenses kijelzőjén.
A számítógép kisebb áramkörökre (modulokra) lesz bontva, amelyek különböző műveleteket végeznek. Az egyes modulokat részletesen ismertetjük a következő lépésekben.
1. lépés: Anyagok
Ehhez a projekthez csak a Digilent Basys3 FPGA -kártyája és egy mikro -USB -vezeték szükséges az alaplap számítógéphez való csatlakoztatásához.
2. lépés: Az áramköri modulok blokkdiagramja
A fenti blokkdiagramok a 10 bites számítógépet alkotó különböző áramkörmodulokat mutatják be. Az alábbiakban a fenti ábrákon látható egyes alkatrészek/modulok leírása található.
Program számláló
A bemenetek leírása: a bemenet egy 5 bites bemenet, amely számokat tölt be a programszámlálóba. Cp, ha magas a számláló a leeső óraélre számít. A Clr visszaállítja a számlálót 0. Ep -re, ha magas a számláló az aktuális számot adja ki. Sp, ha a számláló magas, a számot a bemeneten lévő számra állítja
-
Kimenetek leírása:
A kimenet a számlálás másolata a 0-15 LED-eken való használatra. A Count az aktuális számot adja ki.
- Általános hely a rendszerben: Ez a számláló nyomon követi a program memóriahelyét. Minden program a 00000 (0) memóriacímmel kezdődik és 11111 (31) -ig megy, hacsak leállítást nem használ. Az ugrás utasításokban a programszámláló továbbra is attól a címtől számol, amelyre a program ugrik.
Bemenet MUX
- Bemenetek leírása: A cím a 11 -től 15 -ig terjedő kapcsolótól veszi a bemenetet. A MAR átveszi a bemenetet a MAR -ként használt 10 bites regiszterből. A program vezérli, hogy melyik bemenetet kell a kimenethez irányítani.
- A kimenetek leírása: a kimenet a kiválasztott bemenetet a RAM -hoz irányítja.
- Általános hely a rendszerben: Ez a MUX határozza meg, hogy a címet a kapcsolókból vagy a buszból a RAM -ba irányítja. Program módban a kapcsolók címét továbbítják, és üzemmódban a busztól érkező címet.
ramMUX
- A bemenetek leírása: userInput az a bemenet, amelyet a felhasználó programmódban ad meg. Az aRegInput az A regiszterben található adatok, amelyeket egy költöztetési művelet során használnak. a vezérlő a kiválasztott ehhez a MUX -hoz.
- A kimenetek leírása: a kimenet a 10 bites adatbevitel a RAM-ba.
- Általános hely a rendszerben: Ez a MUX adja ki a RAM-modulban használt 10 bites bemeneti adatokat. Ha a vezérlőbit magas, a MUX kimeneti adatok, amelyeket a felhasználó program módban adott meg. Ha a vezérlő bit alacsony, a MUX az adatokat a vezérlő buszon adja ki.
ramModule
- A bemenetek leírása: inputData a RAM -ban tárolt adatok. Az inputAddress az a hely, ahol az adatokat tárolják. program jelzi, ha a számítógép program vagy futás üzemmódban van. A readWrite jelzi, hogy olvasási vagy írási művelet történik -e. A notCE a RAM modul vezérlő bitje. A mozgatás azt jelzi, hogy mozgatási műveletet hajtanak végre.
- A kimenetek leírása: outputDataToBus azok az adatok, amelyek a RAM -ból a buszba kerülnek. outputData and output Address azok az adatok és címek, amelyek az utasításregiszterbe kerülnek.
- Általános hely a rendszerben: A RAM lehetővé teszi a programok és adatok tárolását a memóriában a program futtatása előtt. A program futása után a RAM kap egy címet a MAR -tól, és ezen a címen adja ki az adatokat a busznak.
addressROM
- Bemenetek leírása: Az opCode az a bemenet, amely a számítógép által végrehajtott opcode címét tartalmazza
- A kimenetek leírása: Az opCodeStart az a memóriacím, amely a megfelelő opCode első mikroutasítási helyét jelzi.
- Általános hely a rendszerben: Ez a modul átveszi a reteszelt mikroutasítást, és kiadja a memóriahelyet, amely megfelel a mikroutasítási sorozat kezdetének.
ringCounter
- Bemenetek leírása: a reset visszaállítja a számlálót 100000 -re (az első "T állapot"). Clk eggyel növeli a számlálót az eső óra szélén. A NOP azt jelzi, hogy az aktuális állapot/ciklus "nincs művelet" ciklus.
- A kimenetek leírása: a count a számláló kimenete.
- Általános hely a rendszerben: A gyűrűszámláló vezérli az előre beállítható számlálót, és körvonalazza a hat mikrolépést minden utasításciklusban (T1-T6).
preCounter
- Bemenetek leírása: Az opCodeStart a végrehajtandó opCode mikroutasítások memóriahelye. A T1 visszaállítja a számlálót 0 -ra, ha magas. Ha a T3 magas, az opCodeStart betöltődik, és a számlálás onnan folytatódik a fennmaradó 3 ciklusban (T4-T6). A Clr 0 -ra állítja a számlálót.
- A kimenetek leírása: controlWordLocation a végrehajtandó vezérlőszó memóriahelyét adja ki.
- Általános hely a rendszerben: Minden op-kód 3 mikroutasítást tartalmaz. A számláló 1 -gyel növekszik 0 -tól kezdve az első 3 ciklusban (lekérési ciklus). A számlálót ezután a csengetési számláló aktiválja, hogy betöltse a címet az opCodeStart -ra, és 1 -el növeli a fennmaradó 3 ciklus során. Ily módon az előszámláló vezérli a végrehajtandó mikroutasítások sorrendjét.
controlROM
- Bemenetek leírása: controlWordLocation a controlWord címe, amelyet a controlROM fog kiadni. A NOP azt jelzi, hogy a hely "művelet nélküli" hely.
- A kimenetek leírása: controlWord az a vezérlőszó, amely lehetővé teszi/letiltja a különböző számítógépes modulokat a kívánt művelet végrehajtásához.
- Általános hely a rendszerben: Ez a modul dekódolja a memória helyét az előszámlálóból, és kimeneti a controlWord -ot a kívánt művelethez.
ALU
- Bemenetek leírása: Az A és a B az A regiszter és a B regiszter bemenetei, amelyeken az ALU elvégzi az aritmetikai és logikai műveleteket. Ha a kivonás aktív, ez azt jelzi, hogy B -t kivonják A -ból.
- A kimenetek leírása: az eredmény A és B hozzáadása, vagy B kivonása A -ból. A nagyobbThan, lessThan és hiba túl- vagy alulfolyást jelez aktív állapotban.
- Általános hely a rendszerben: Az ALU tartalmazza a számítógép által végrehajtott aritmetikai és logikai műveletek logikáját. Ez a modul össze tud adni és kivonni két 10 bites bináris számot. Az ALU azt is meghatározhatja, hogy A> B, A
feltételesJmp
- A bemenetek leírása: inputCount az aktuális szám rögzítésére szolgál. Az inputAddress az ugrott cím rögzítésére szolgál. loadFromRegister, amikor alacsony reteszek inputAddress. loadCount amikor alacsony reteszek inputCount. amikor a outputEnable alacsony, a kimenet a címre van állítva, ahová ugrani lehet. gT, iT és eQ határozzák meg, hogy melyik állapotot ellenőrzik. nagyobb, mint kevesebb, és egyenlő, hogy az ALU bemenetei jelzik az A és a B összehasonlítás eredményét.
- A kimenetek leírása: outputJmp az a cím, amelyet a programszámláló beolvas.
- Általános hely a rendszerben: ez a modul feltételes és nem feltételes ugrásokat kezel a számítógép számára. A gT, iT és eQ bemenetek alapján a modul meghatározza, hogy melyik feltételt kell ellenőrizni, és hogy ez a feltétel igaz vagy hamis. Ha a feltétel igaz, akkor kiadja az utasítás címét, amelyre ugrani kell, ellenkező esetben a következő utasítás számát adja ki.
binToBCD
- Bemenetek leírása: számolja meg a 10 bites számot, amelyet binárisan kódolt tizedesre kell konvertálni.
- A kimenetek leírása: százas számjegy a bináris szám százas helyén. tízes számjegy a bináris szám tízes helyén. a kettes a bináris szám egyes helyén.
- Általános hely a rendszerben: Ez a modul átalakítja a 10 bites számot a kimeneti regiszterből BCD -re annak érdekében, hogy négyjegyű kijelző -illesztőprogramunk a számot decimális formában jelenítse meg a 7 szegmenses kijelzőn.
fourDigitDriver
- Bemenetek leírása: a szám a 16 bites bináris bemenet, amelyet a dekódoló hajt meg. Az inClk a Basys táblák belső órája, amelyet óraosztónak használnak. Az RST visszaállítja a számjegyek vezérléséhez használt órát.
- A kimenetek leírása: az anód határozza meg, hogy melyik számjegyű hely kerül megvilágításra. számjegy a dekódoló bemeneti száma.
- Általános hely a rendszerben: Ez a modul hajtja a dekódert, hogy a BCD számot megjelenítse a kijelzőn.
dekódoló
- Bemenetek leírása: inputNumber az illesztőprogramból származó szám, amely dekódolásra kerül.
- A kimenetek leírása: a katódok határozzák meg, hogy mely katódok kapcsolnak be a kívánt számjegy megjelenítéséhez.
- Általános hely a rendszerben: Ez a modul dekódolja a 7 szegmenses kijelzőn megjeleníteni kívánt számjegyet.
fourDigitDisplay
- Bemenetek leírása: szám a 7 szegmenses kijelzőn megjelenítendő szám. hiba jelzi, hogy mikor kell a kijelzőn az "Err" feliratot olvasni. A Clk az órajel, amelyen a kijelző működik. Ennek a jelnek körülbelül 60 Hz -nek kell lennie, hogy a kijelző mind a 4 számjegyű helyet egyszerre tudja megjeleníteni.
- Kimenetek leírása: az anód határozza meg, hogy melyik számjegy hely engedélyezett. A katód határozza meg, hogy mely katódok aktiválódnak a kívánt számjegy megjelenítéséhez.
- Általános hely a rendszerben: Ez a modul egy számot jelenít meg a 7 szegmenses kijelzőn. A Basys 3 tábla használati útmutatójában talál információt arról, hogy mely katódok és anódok aktiválódnak a kijelző használatához. Ha a hiba bit magas, a kijelzőn az "Err" felirat látható.
kimenet: MUX
- Bemenetek leírása: A progModeInput határozza meg, hogy mely ledek kapcsolnak be programozási módban. A runModeInput meghatározza, hogy mely LED -ek vannak bekapcsolva futás közben. modeSelect a MUX kiválasztó vagy vezérlő bitje.
- A kimenetek leírása: ledOutput jelzi, hogy mely ledek kapcsolnak be.
- Általános hely a rendszerben: A számítógép módjától (program vagy rum) függően a MUX különböző LED -eket kapcsol be. Program módban (modeSelect '0'), a MUX bekapcsolja a ledeket, hogy hasonlítson a számítógép memóriahelyére és a benne lévő tartalomra. Futtatás üzemmódban (modeSelect '1') a MUX hibakeresésre szolgál, de beállítható bármi más megjelenítésére.
clockDivider
- Bemenetek leírása: a stop leolvassa az öt MSB bitet a buszról, hogy érzékelje a leállítási parancsot ('11111'), és leállítja az órát. Az inputClk a Basys 3 kártya belső órajele.
- A kimenetek leírása: Az ouputClk az új óra, amelyet lelassítottak.
- Általános hely a rendszerben: Ez az óra a számítógép lelassítására szolgál, hogy a felhasználó meghatározhassa, mi történik. Az óra sokkal gyorsabban tud futni, azonban jelenleg 2 Hz -re van beállítva.
triStateBuffer
- Bemenetek leírása: A Din az 5 bites bemenet, amely a pufferbe kerül. Az Ep a vezérlő bit.
- A kimenetek leírása: A Dout a puffer 5 bites kimenete
- Általános hely a rendszerben: Amikor az Ep vezérlőbit aktív, a puffer kimeneti a bemenetet. Ha a vezérlőbit nem aktív, a puffer nem ad ki semmit.
tenBitDRegister
- Bemenetek leírása: A Dbus az a bemenet, amelyhez a regiszter tartozik. A Clk lehetővé teszi a regiszter számára az adatok olvasását az emelkedő óra szélén. Az ARST aszinkron módon 0 -ra állítja a regisztert. Ha az outputEnable alacsony, a regiszter tartalma a kimenet. Ha a ReadIn alacsony, a regiszter reteszeli a Dbus -t az emelkedő óra szélén.
- Kimenetek leírása: A Qbus a regiszter kimenete
- Általános hely a rendszerben: A regisztert többször használják a számítógépen, és információkat tárolnak a műveletek végrehajtása során.
fiveBitDRegister
- Bemenetek leírása: A Dbus az a bemenet, amelyhez a regiszter tartozik. A Clk lehetővé teszi a regiszter számára az adatok olvasását az emelkedő óra szélén. Az ARST aszinkron módon 0 -ra állítja a regisztert. Ha az outputEnable alacsony, a regiszter tartalma a kimenet. Ha a ReadIn alacsony, a regiszter reteszeli a Dbus -t az emelkedő óra szélén.
- Kimenetek leírása: A Qbus a regiszter kimenete.
- Általános hely a rendszerben: A regisztert többször használják a számítógépen, és információkat tárolnak a műveletek végrehajtása során.
3. lépés: Kód
Az alábbiakban egy mappa tartalmazza a 10 bites számítógép korlátozásait és forrásfájljait.
4. lépés: Demo és mintakód
A fenti videó bemutatja, hogyan kell programozni a 10 bites számítógépet a Basys 3 FPGA kártyán. Az op-kódokat és a mintaprogramot tartalmazó pdf is csatolva található az alábbiakban.
Ajánlott:
Arduino Nano-MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő oktatóanyag: 4 lépés
Arduino Nano-MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő oktatóanyag: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Python bemutató: 4 lépés
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Python bemutató: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Java oktatóanyag: 4 lépés
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Java oktatóanyag: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
8 bites számítógép a kenyértáblán Áttekintés: 3 lépés
8 bites számítógép a kenyértáblán Áttekintés: A projekt célja az volt, hogy jobban megértsem a számítógép architektúráját, a hardvertervezést és a szerelési szintű nyelveket. Mivel az egyetemen juniorként tanultam informatikai mérnököt, nemrég végeztem el elektronika, laboratóriumok és
DIY MusiLED, zenével szinkronizált LED-ek egy kattintásos Windows és Linux alkalmazással (32 bites és 64 bites). Könnyen újratelepíthető, könnyen használható, könnyen hordozható: 3 lépés
DIY MusiLED, zenével szinkronizált LED-ek egy kattintásos Windows és Linux alkalmazással (32 bites és 64 bites). Könnyen újratelepíthető, könnyen használható, könnyen hordozható: Ez a projekt segít 18 LED (6 piros + 6 kék + 6 sárga) LED-ek csatlakoztatásában az Arduino Boardhoz, és elemezni a számítógép hangkártyájának valós idejű jeleit, és továbbítani azokat a LED -ek, hogy felgyújtsák őket az ütéshatásoknak megfelelően (pergő, magas kalap, rúgás)