Obsah:

Desať bitový počítač - VHDL: 4 kroky
Desať bitový počítač - VHDL: 4 kroky

Video: Desať bitový počítač - VHDL: 4 kroky

Video: Desať bitový počítač - VHDL: 4 kroky
Video: Bastlířské středy: Jan Pospíšil - Když procesor nestačí, FPGA zaskočí 2024, Júl
Anonim
Desať bitový počítač - VHDL
Desať bitový počítač - VHDL

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

Materiály
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ý diagram obvodových modulov
Blokový diagram obvodových modulov
Blokový diagram obvodových modulov
Blokový diagram obvodových modulov
Blokový diagram obvodových modulov
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: