Obsah:
- Krok 1: Materiály
- Krok 2: Blokový diagram obvodových modulov
- Krok 3: Kód
- Krok 4: Ukážka a ukážkový kód
Video: Desať bitový počítač - VHDL: 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Vyrobili: Tyler Starr a Ezzeedden Gazali
Úvod
Tento projekt bol dokončený ako súčasť konečného projektu CPE 133 v spoločnosti Cal Poly SLO. Je to skvelý projekt pre niekoho, kto chce pochopiť, ako počítače fungujú na najnižšej úrovni a ako plnia svoje úlohy. Projekt je modelovaný podľa 8-bitového počítača SAP popísaného v knihe Alberta Malvina Digitálna počítačová elektronika. Počítač sme však zvýšili na 10 bitov, aby sme mohli implementovať viac operačných kódov (prevádzkových kódov). Užívateľ môže naprogramovať počítač tak, aby vykonával sadu operácií, zadaním určitých pokynov.
Architektúra systému a obvodu:
Počítač je napísaný vo VHDL a bude obsiahnutý na doske Basys 3 od spoločnosti Digilent. Vstupy budú mapované na prepínače v spodnej časti dosky. Na funkciu resetovania a zápisu budú použité dva hmatové prepínače. Výstup sa zobrazí na 7 -segmentovom displeji dosky.
Počítač bude rozdelený na menšie obvody (moduly), ktoré zvládajú rôzne operácie. Každý modul bude podrobne vysvetlený v nasledujúcich krokoch.
Krok 1: Materiály
Na tento projekt potrebujete iba dosku Basys3 FPGA od spoločnosti Digilent a kábel micro USB na pripojenie dosky k počítaču.
Krok 2: Blokový diagram obvodových modulov
Blokové schémy vyššie zobrazujú rôzne obvody, ktoré tvoria 10-bitový počítač. Nasledujú popisy jednotlivých častí/modulov uvedených na vyššie uvedených diagramoch.
Počítadlo programov
Popis vstupov: vstup je 5 -bitový vstup na načítanie čísla do počítadla programov. Cp, keď je počítadlo vysoko, počíta s padajúcimi hranami hodín. Clr vynuluje počítadlo na 0. Ep, keď je vysoké, čítač vydá aktuálny počet. Sp keď je počítadlo vysoké, počítadlo nastaví počet na číslo na vstupe
-
Popis výstupov:
výstup je kópiou počtu na použitie na LEDS 0-15. Počet vydá aktuálny počet.
- Celkové umiestnenie v systéme: Tento počítadlo sleduje umiestnenie pamäte, v ktorej sa program nachádza. Všetky programy začínajú na adrese pamäte 00000 (0) a idú až na 11111 (31), pokiaľ sa nepoužije zastavenie. V skokových príkazoch čítač programu naďalej počíta od adresy, na ktorú program skočí.
Vstup MUX
- Popis vstupov: Adresa preberá vstup z prepínačov 11 až 15. MAR preberá vstup z 10 -bitového registra používaného ako MAR. Program riadi, ktorý vstup má smerovať k výstupu.
- Popis výstupov: výstup smeruje zvolený vstup do pamäte RAM.
- Celkové umiestnenie v systéme: Tento MUX určuje, či má byť adresa smerovaná z prepínačov alebo zo zbernice do pamäte RAM. V programovom režime je smerovaná adresa z prepínačov a v prevádzkovom režime je smerovaná adresa zo zbernice.
ramMUX
- Popis vstupov: userInput je vstup, ktorý užívateľ zadá počas režimu programu. aRegInput sú údaje obsiahnuté v registri A, ktoré sa používajú počas operácie presunu. ovládanie je výberom pre tento MUX.
- Popis výstupov: výstup je 10-bitový vstup údajov do pamäte RAM.
- Celkové umiestnenie v systéme: Tento MUX vydáva 10-bitové vstupné údaje, ktoré sa používajú v module RAM. Keď je kontrolný bit vysoký, MUX vydáva údaje, ktoré užívateľ zadal v programovom režime. Keď je riadiaci bit nízky, MUX vydáva údaje na riadiacej zbernici.
ramModule
- Popis vstupov: inputData sú údaje uložené v pamäti RAM. inputAddress je miesto, kde sú uložené údaje. program indikuje, či je počítač v programe alebo v režime spustenia. readWrite označuje, či prebieha operácia čítania alebo zápisu. notCE je riadiaci bit pre modul RAM. ťah znamená, že sa vykonáva operácia presunu.
- Popis výstupov: outputDataToBus sú údaje, ktoré prechádzajú z pamäte RAM na zbernicu. outputData a výstupná adresa sú údaje a adresa, ktoré idú do registra inštrukcií.
- Celkové miesto v systéme: RAM umožňuje uloženie programu a údajov do pamäte pred spustením programu. Akonáhle je program spustený, RAM prijme adresu z MAR a pošle údaje na tejto adrese do zbernice.
addressROM
- Popis vstupov: opCode je vstup obsahujúci adresu operačného kódu, ktorý vykonáva počítač
- Popis výstupov: opCodeStart je adresa pamäte, ktorá označuje prvé umiestnenie mikroinštrukcie zodpovedajúceho opCode.
- Celkové miesto v systéme: Tento modul preberá zablokované mikroinštrukcie a vydáva miesto v pamäti, ktoré zodpovedá začiatku sekvencie mikroinštrukcií.
ringCounter
- Popis vstupov: reset resetuje počítadlo späť na 100 000 (prvý „stav T“). Clk zvyšuje počítadlo o jeden na klesajúcej hrane hodín. NOP naznačuje, že aktuálny stav/cyklus je cyklus „žiadna prevádzka“.
- Popis výstupov: count je výstup počítadla.
- Celkové umiestnenie v systéme: Krúžkový čítač riadi prednastaviteľný čítač a vymedzuje šesť mikrokrokov v každom inštrukčnom cykle (T1-T6).
predpočítač
- Popis vstupov: opCodeStart je pamäťové miesto mikroinštrukcií pre práve vykonávaný opCode. T1 vynuluje počítadlo na 0, keď je vysoké. Keď je T3 vysoká, zavedie sa opCodeStart a počítanie pokračuje z tohto miesta zostávajúce 3 cykly (T4-T6). Clr nastaví počítadlo na 0. Clk zvýši počítadlo po jednom na klesajúcej hrane.
- Popis výstupov: controlWordLocation vydáva umiestnenie pamäte riadiaceho slova, ktoré sa má vykonať.
- Celkové miesto v systéme: Každý operačný kód má 3 mikroinštrukcie. Počítadlo sa zvyšuje o 1, počínajúc 0, počas prvých 3 cyklov (cyklus načítania). Počítadlo je potom spustené krúžkovým čítačom na načítanie adresy na opCodeStart a po zvyšné 3 cykly sa zvýši o 1. Predbežný čítač týmto spôsobom riadi postupnosť mikroinštrukcií, ktoré sa majú vykonať.
controlROM
- Popis vstupov: controlWordLocation je adresa controlWord, ktorú bude controlROM vydávať. NOP naznačuje, že ide o miesto „bez prevádzky“.
- Popis výstupov: controlWord je riadiace slovo, ktoré umožňuje/zakazuje rôznym počítačovým modulom vykonať požadovanú operáciu.
- Celkové umiestnenie v systéme: Tento modul dekóduje miesto v pamäti z predpočítača a na výstup privádza kontrolné slovo pre požadovanú operáciu.
ALU
- Popis vstupov: A a B sú vstupy z registra A a registra B, na ktorých ALU vykonáva aritmetické a logické operácie. Keď je aktívny odčítanie, znamená to, že B sa odpočítava od A.
- Popis výstupov: výsledok je výsledok sčítania A a B alebo odčítania B od A. Výstupy greaterThan, lessThan a equToTo, ak (AB alebo A = B) označujú, či sa používajú v module podmieneného skoku. chyba indikuje pretečenie alebo podtečenie, keď je aktívny.
- Celkové miesto v systéme: ALU obsahuje logiku aritmetických a logických operácií vykonávaných počítačom. Tento modul môže sčítať a odčítať dve 10-bitové binárne čísla. ALU môže tiež určiť, či A> B, A
podmienenéJmp
- Popis vstupov: inputCount sa používa na zablokovanie aktuálneho počtu. inputAddress sa používa na zaistenie adresy, na ktorú by sa malo skočiť. loadFromRegister, keď nízke západky inputAddress. loadCount when low latches inputCount. keď je outputEnable nízka, výstup je nastavený na adresu, na ktorú sa má skočiť. gT, iT a eQ určujú, ktoré podmienky sa kontrolujú. greaterThan, lessThan a equTo sú vstupy z ALU indikujúce výsledok porovnania medzi A a B. Na stúpajúcej hodinovej hrane Clk sa inputCount a inputAddress načítajú do registrov.
- Popis výstupov: outputJmp je adresa, na ktorej bude čítač programu čítať.
- Celkové umiestnenie v systéme: tento modul zvláda podmienené aj nepodmienečné skoky pre počítač. Na základe vstupov gT, iT a eQ modul určuje, ktorá podmienka sa má skontrolovať a či je podmienka pravdivá alebo nepravdivá. Ak je podmienka pravdivá, vydá adresu inštrukcie, na ktorú sa má skočiť, v opačnom prípade vydá počet ďalších inštrukcií.
binToBCD
- Popis vstupov: očíslujte 10 -bitové číslo, ktoré chcete previesť na binárne kódované desatinné miesto.
- Popis výstupov: stovky číslic na mieste stoviek binárneho čísla. desiatky číslic na mieste desiatok binárneho čísla. tie číslice na mieste jednotiek binárneho čísla.
- Celkové umiestnenie v systéme: Tento modul prevádza 10 -bitové číslo z výstupného registra na BCD, aby náš štvormiestny ovládač displeja zobrazoval číslo v desatinnom formáte na 7 -segmentovom displeji.
fourDigitDriver
- Popis vstupov: číslo je 16 -bitový binárny vstup, ktorý je vedený do dekodéra. inClk sú interné hodiny na doskách Basys a používajú sa na rozdelenie hodín. RST vynuluje hodiny používané na zadávanie číslic.
- Popis výstupov: anóda určuje, ktoré miesto číslice bude osvetlené. číslica je vstupné číslo do dekodéra.
- Celkové umiestnenie v systéme: Tento modul poháňa dekodér na výstup čísla BCD na displej.
dekodér
- Popis vstupov: inputNumber je číslica, ktorá pochádza z ovládača a ktorá bude dekódovaná.
- Popis výstupov: katódy určujú, ktoré katódy budú zapnuté, aby sa zobrazila požadovaná číslica.
- Celkové umiestnenie v systéme: Tento modul dekóduje číslicu, ktorá sa má zobraziť na 7 -segmentovom displeji.
fourDigitDisplay
- Popis vstupov: číslo je číslo, ktoré sa má zobraziť na 7 -segmentovom displeji. chyba indikuje, kedy by sa na displeji malo zobrazovať „Err“. Clk je hodinový signál, na ktorom je displej zapnutý. Tento signál musí byť okolo 60 Hz, aby displej mohol zobrazovať všetky 4 číslice súčasne.
- Popis výstupov: anóda určuje, ktoré miesto pre číslice je povolené. katóda určuje, ktoré katódy sú aktivované na zobrazenie požadovanej číslice.
- Celkové miesto v systéme: Tento modul zobrazuje číslo na 7 -segmentovom displeji. Informácie o tom, ktoré katódy a anódy sa aktivujú pri používaní displeja, nájdete v návode na obsluhu dosky Basys 3. Keď je chybový bit vysoký, na displeji sa zobrazí „Err“.
výstup MUX
- Popis vstupov: progModeInput určuje, ktoré diódy LED sú zapnuté počas režimu programovania. runModeInput určuje, ktoré diódy LED sú zapnuté počas režimu spustenia. modeSelect je výberový alebo riadiaci bit pre MUX.
- Popis výstupov: ledOutput udáva, ktoré diódy LED budú zapnuté.
- Celkové umiestnenie v systéme: V závislosti od režimu, v ktorom je počítač (program alebo rum), MUX zapne rôzne diódy. V programovom režime (modeSelect je '0') MUX zapne LED diódy, aby sa podobali umiestneniu pamäte, v ktorom sa počítač nachádza a čo obsahuje. V prevádzkovom režime (modeSelect je '1') sa MUX používa na ladenie, ale dá sa nastaviť tak, aby zobrazoval čokoľvek iné.
hodinyDivider
- Popis vstupov: stop načíta päť MSB bitov zo zbernice, aby zistil príkaz na zastavenie („11111“) a zastaví hodiny. inputClk je vnútorný hodinový signál dosky Basys 3.
- Popis výstupov: ouputClk sú nové hodiny, ktoré boli spomalené.
- Celkové miesto v systéme: Tieto hodiny slúžia na spomalenie počítača, aby používateľ mohol určiť, čo sa deje. Hodiny môžu bežať oveľa rýchlejšie, v súčasnosti sú však nastavené na 2 Hz.
triStateBuffer
- Popis vstupov: Din je 5 -bitový vstup prechádzajúci do vyrovnávacej pamäte. Ep je riadiaci bit.
- Popis výstupov: Dout je 5 -bitový výstup vyrovnávacej pamäte
- Celkové miesto v systéme: Keď je riadiaci bit Ep aktívny, vyrovnávacia pamäť vydáva vstup. Keď riadiaci bit nie je aktívny, vyrovnávacia pamäť nevydáva nič.
tenBitDRegister
- Popis vstupov: Dbus je vstup, na ktorý je register. Clk umožňuje registru čítať údaje na stúpajúcej hrane hodín. ARST nastaví register na 0 asynchrónne. Keď je outputEnable nízky, výstupom je obsah registra. Keď je hodnota readIn nízka, register zaistí Dbus na stúpajúcej hrane hodín.
- Popis výstupov: Qbus je výstup z registra
- Celkové miesto v systéme: Register sa používa viackrát v počítači a slúži na ukladanie informácií pri vykonávaní operácií.
päťBitDRegister
- Popis vstupov: Dbus je vstup, na ktorý je register. Clk umožňuje registru čítať údaje na stúpajúcej hrane hodín. ARST nastaví register na 0 asynchrónne. Keď je outputEnable nízky, výstupom je obsah registra. Keď je hodnota readIn nízka, register zaistí Dbus na stúpajúcej hrane hodín.
- Popis výstupov: Qbus je výstup z registra.
- Celkové miesto v systéme: Register sa používa viackrát v počítači a slúži na ukladanie informácií pri vykonávaní operácií.
Krok 3: Kód
Nasleduje priečinok obsahujúci obmedzenia a zdrojové súbory pre 10-bitový počítač.
Krok 4: Ukážka a ukážkový kód
Vyššie uvedené video ukazuje, ako naprogramovať 10-bitový počítač na doske Basys 3 FPGA. PDF s operačnými kódmi a ukážkovým programom je tiež priložené nižšie.
Odporúča:
Nastavenie Raspberry Pi 4 cez prenosný počítač/počítač pomocou ethernetového kábla (bez monitora, bez Wi-Fi): 8 krokov
Nastavte Raspberry Pi 4 cez prenosný počítač/počítač pomocou ethernetového kábla (bez monitora, bez Wi-Fi): Pri tomto nastavení budeme pracovať s Raspberry Pi 4 Model-B s 1 GB RAM. Raspberry-Pi je jednodoskový počítač používaný na vzdelávacie účely a projekty pre domácich majstrov za prijateľnú cenu, vyžaduje napájanie 5 V 3A. Prevádzkové systémy podobné
Raspberry Pi MMA8452Q 3-osový 12-bitový/8-bitový digitálny akcelerometer Python výučba: 4 kroky
Trojosový 12-bitový/8-bitový digitálny akcelerometer Raspberry Pi MMA8452Q Python Výukový program: MMA8452Q je inteligentný, trojosový, kapacitný, mikroobrábaný akcelerometer s nízkym výkonom a 12 bitovým rozlíšením. Flexibilné programovateľné možnosti pre používateľov sú k dispozícii pomocou vstavaných funkcií v akcelerometri, konfigurovateľných na dve prerušenia
3-osový 12-bitový/8-bitový digitálny akcelerometer Raspberry Pi MMA8452Q Java návod: 4 kroky
Trojosový 12-bitový/8-bitový digitálny akcelerometer Raspberry Pi MMA8452Q Java: MMA8452Q je inteligentný, trojosový, kapacitný, mikroobrábaný akcelerometer s nízkym výkonom a 12 bitovým rozlíšením. Flexibilné programovateľné možnosti pre používateľov sú k dispozícii pomocou vstavaných funkcií v akcelerometri, konfigurovateľných na dve prerušenia
Mikro: bitový detektor úrovne šumu: 3 kroky
Mikro: bitový detektor úrovne šumu: Toto je len krátky príklad pre detektor hladiny hluku založený na mikro: bite a Pimoroni enviro: bite. Mikrofón na enviro: bite zisťuje úroveň zvuku a z výslednej hodnoty pozíciu na matici LED 5x5 sa vypočíta a
Mojich desať najužitočnejších tipov a trikov na Breadboard: 9 krokov (s obrázkami)
Mojich desať najlepších najužitočnejších tipov a trikov na Breadboard: Na zemi je 6 palcov snehu a vy ste zavalení v dome. Na chvíľu ste stratili motiváciu pracovať na svojom lasere na rezanie kovov vedenom GPS. Na vašom obľúbenom webe neboli žiadne nové projekty, ktoré by podnietili váš int