Obsah:

Tenbitový počítač - VHDL: 4 kroky
Tenbitový počítač - VHDL: 4 kroky

Video: Tenbitový počítač - VHDL: 4 kroky

Video: Tenbitový počítač - VHDL: 4 kroky
Video: 10 nejužitečnějších aplikací na PC 2024, Listopad
Anonim
Desetibitový počítač - VHDL
Desetibitový počítač - VHDL

Výrobce: Tyler Starr a Ezzeedden Gazali

Úvod

Tento projekt byl dokončen jako součást finálního projektu pro CPE 133 v Cal Poly SLO. Je to skvělý projekt pro někoho, kdo chce pochopit, jak počítače fungují na nejnižší úrovni a jak plní své úkoly. Projekt je modelován podle 8bitového počítače SAP popsaného v knize Alberta Malvino Digital Computer Electronics. Zvýšili jsme však počítač na 10 bitů, abychom mohli implementovat více operačních kódů (operačních kódů). Uživatel může naprogramovat počítač tak, aby provedl sadu operací zadáním určitých pokynů.

Architektura systému a obvodu:

Počítač je napsán ve VHDL a bude obsažen na desce Basys 3 od společnosti Digilent. Vstupy budou mapovány na přepínače ve spodní části desky. Pro funkce Reset a Zápis budou použity dva hmatové přepínače. Výstup bude zobrazen na 7segmentovém displeji desky.

Počítač bude rozdělen na menší obvody (moduly), které zvládají různé operace. Každý modul bude podrobně vysvětlen v následujících krocích.

Krok 1: Materiály

Materiály
Materiály

K tomuto projektu je potřeba pouze deska Basys3 FPGA od společnosti Digilent a kabel micro USB pro připojení desky k počítači.

Krok 2: Blokové schéma obvodových modulů

Blokové schéma obvodových modulů
Blokové schéma obvodových modulů
Blokové schéma obvodových modulů
Blokové schéma obvodových modulů
Blokové schéma obvodových modulů
Blokové schéma obvodových modulů

Výše uvedené blokové diagramy ukazují různé moduly obvodů, které tvoří 10bitový počítač. Níže jsou uvedeny popisy jednotlivých částí/modulů zobrazených na obrázcích výše.

Počitadlo programů

Popis vstupů: vstup je 5bitový vstup pro načtení čísla do čítače programu. Cp, když je čítač vysoký, počítá s padajícími hranami hodin. Clr resetuje čítač na 0. Ep, když je vysoký, čítač vydává aktuální počet. Sp když je čítač vysoký, nastaví počet na číslo na vstupu

  • Popis výstupů:

    výstup je kopie počtu pro použití na LED 0-15. Count vydává aktuální počet.

  • Celkové umístění v systému: Tento čítač sleduje umístění paměti, ve které je program. Všechny programy začínají na adrese paměti 00000 (0) a jdou až na 11111 (31), pokud není použito zastavení. V příkazech na skok programový čítač pokračuje v počítání od adresy, na kterou program skočí.

Vstup MUX

  • Popis vstupů: Adresa převezme vstup z přepínačů 11 až 15. MAR převezme vstup z 10bitového registru použitého jako MAR. Program ovládá, který vstup má být směrován na výstup.
  • Popis výstupů: výstup směruje vybraný vstup do RAM.
  • Celkové umístění v systému: Tento MUX určuje, zda má být adresa směrována z přepínačů nebo ze sběrnice do RAM. V programovém režimu je směrována adresa z přepínačů a v provozním režimu je směrována adresa ze sběrnice.

ramMUX

  • Popis vstupů: userInput je vstup, který uživatel zadá během režimu programu. aRegInput jsou data obsažená v registru A, která se používají během operace přesunu. ovládání je výběr pro tento MUX.
  • Popis výstupů: výstup je 10bitový datový vstup do RAM.
  • Celkové umístění v systému: Tento MUX vydává 10bitová vstupní data, která jsou použita v modulu RAM. Když je řídicí bit vysoký, MUX vydává data, která uživatel zadal v programovém režimu. Když je řídicí bit nízký, MUX vydává data na řídicí sběrnici.

ramModule

  • Popis vstupů: inputData jsou data uložená v paměti RAM. inputAddress je umístění, kde jsou data ukládána. program indikuje, zda je počítač v režimu programu nebo spuštění. readWrite označuje, zda probíhá operace čtení nebo zápisu. notCE je řídicí bit pro modul RAM. tah označuje, že se provádí operace přesunu.
  • Popis výstupů: outputDataToBus jsou data, která jdou z RAM do sběrnice. outputData a výstupní adresa jsou data a adresy, které jdou do registru instrukcí.
  • Celkové místo v systému: RAM umožňuje uložení programu a dat v paměti před spuštěním programu. Jakmile je program spuštěn, RAM přijme adresu z MAR a odešle data na této adrese na sběrnici.

adresaROM

  • Popis vstupů: opCode je vstup obsahující adresu operačního kódu, který provádí počítač
  • Popis výstupů: opCodeStart je adresa paměti, která označuje první umístění mikroinstrukce příslušného opCode.
  • Celkové umístění v systému: Tento modul přebírá zablokované mikroinstrukce a vydává umístění paměti, které odpovídá začátku této sekvence mikroinstrukce.

ringCounter

  • Popis vstupů: reset nastaví čítač zpět na 100 000 (první „stav T“). Clk zvyšuje počítadlo o jeden na klesající hraně hodin. NOP indikuje, že aktuální stav/cyklus je cyklus „žádná operace“.
  • Popis výstupů: count je výstup čítače.
  • Celkové umístění v systému: Kruhový čítač ovládá přednastavitelný čítač a vymezuje šest mikrokroků v každém cyklu instrukcí (T1-T6).

předpočítač

  • Popis vstupů: opCodeStart je paměťové umístění mikro instrukcí pro prováděný opCode. T1 resetuje čítač na 0, když je vysoký. Když je T3 vysoká, načte se opCodeStart a počet pokračuje z tohoto místa po zbývající 3 cykly (T4-T6). Clr nastaví čítač na 0. Clk zvyšuje čítač o jeden na sestupné hraně.
  • Popis výstupů: controlWordLocation vydává paměťové místo řídicího slova, které má být provedeno.
  • Celkové místo v systému: Každý operační kód má 3 mikro instrukce. Počítadlo se zvyšuje o 1 počínaje 0 pro první 3 cykly (cyklus načítání). Čítač je potom spuštěn kroužkovým čítačem k načtení adresy na opCodeStart a po zbývající 3 cykly se zvýší o 1. Tímto způsobem preCounter řídí sekvenci mikro instrukcí, které mají být provedeny.

controlROM

  • Popis vstupů: controlWordLocation je adresa controlWord, kterou bude controlROM vydávat. NOP označuje, že se jedná o umístění „bez operace“.
  • Popis výstupů: controlWord je řídicí slovo, které umožňuje/zakazuje různým počítačovým modulům provádět požadovanou operaci.
  • Celkové umístění v systému: Tento modul dekóduje umístění paměti z preCounteru a vydá controlWord pro požadovanou operaci.

ALU

  • Popis vstupů: A a B jsou vstupy z registru A a registru B, na kterých ALU provádí aritmetické a logické operace. Když je aktivní odčítání, znamená to, že B se odečítá od A.
  • Popis výstupů: výsledek je výsledkem sečtení A a B, nebo odečtením B od A. Výstupy greaterThan, lessThan a equalTo indicate if (AB, nebo A = B) a jsou použity v modulu podmíněného skoku. chyba indikuje přetečení nebo podtečení, když je aktivní.
  • Celkové místo v systému: ALU obsahuje logiku pro aritmetické a logické operace prováděné počítačem. Tento modul může sčítat a odčítat dvě 10bitová binární čísla. ALU může také určit, zda A> B, A

podmíněnéJmp

  • Popis vstupů: inputCount se používá k zablokování aktuálního počtu. inputAddress se používá k zablokování adresy, na kterou by se skočilo. loadFromRegister when low latches inputAddress. loadCount když low západky inputCount. když je outputEnable nízká, výstup je nastaven na adresu, na kterou se má skočit. gT, iT a eQ určují, která podmínka se kontroluje. greaterThan, lessThan, a equalTo jsou vstupy z ALU indikující výsledek srovnání mezi A a B. Na stoupající hodinové hraně Clk jsou inputCount a inputAddress načteny do registrů.
  • Popis výstupů: outputJmp je adresa, na které bude čítač programu číst.
  • Celkové umístění v systému: tento modul zpracovává podmíněné a nepodmíněné skoky pro počítač. Na základě vstupů gT, iT a eQ modul určuje, kterou podmínku zkontrolovat a zda je tato podmínka pravdivá nebo nepravdivá. Pokud je podmínka pravdivá, vydá adresu instrukce, na kterou se má skočit, v opačném případě vydá počet další instrukce.

binToBCD

  • Popis vstupů: očíslujte 10bitové číslo pro převod na binární kódované desetinné číslo.
  • Popis výstupů: stovky číslic na místě stovek binárního čísla. desítky číslic na místě desítek binárního čísla. jedničky číslice v jedničce binárního čísla.
  • Celkové umístění v systému: Tento modul převádí 10bitové číslo z výstupního registru na BCD, aby náš čtyřmístný ovladač displeje zobrazoval číslo v desítkové soustavě na 7segmentovém displeji.

fourDigitDriver

  • Popis vstupů: číslo je 16bitový binární vstup, který je veden do dekodéru. inClk jsou vnitřní hodiny desek Basys a používají se pro dělič hodin. RST resetuje hodiny používané k zadávání číslic.
  • Popis výstupů: anoda určuje, které místo číslic bude osvětleno. číslice je číslo vstupu do dekodéru.
  • Celkové umístění v systému: Tento modul pohání dekodér k výstupu čísla BCD na displej.

dekodér

  • Popis vstupů: inputNumber je číslice, která pochází z ovladače a která bude dekódována.
  • Popis výstupů: katody určují, které katody budou zapnuty pro zobrazení požadované číslice.
  • Celkové umístění v systému: Tento modul dekóduje číslici, která má být zobrazena na 7segmentovém displeji.

fourDigitDisplay

  • Popis vstupů: číslo je číslo, které se má zobrazit na 7segmentovém displeji. chyba indikuje, kdy by se na displeji mělo zobrazit „Err“. Clk je hodinový signál, na kterém běží displej. Tento signál musí mít přibližně 60 Hz, aby displej mohl zobrazit všechna 4místná místa současně.
  • Popis výstupů: anoda určuje, které místo číslic je povoleno. katoda určuje, které katody jsou aktivovány pro zobrazení požadované číslice.
  • Celkové umístění v systému: Tento modul zobrazuje číslo na 7segmentovém displeji. Informace o tom, které katody a anody aktivují používání displeje, najdete v návodu k obsluze desky Basys 3. Když je chybový bit vysoký, na displeji se zobrazí „Err“.

výstup MUX

  • Popis vstupů: progModeInput určuje, které diody LED jsou během režimu programování zapnuty. runModeInput určuje, které LED diody jsou zapnuty během režimu běhu. modeSelect je výběrový nebo řídicí bit pro MUX.
  • Popis výstupů: ledOutput udává, které LED diody budou zapnuty.
  • Celkové umístění v systému: V závislosti na režimu, ve kterém je počítač (program nebo rum), MUX zapne různé diody. V režimu programu (modeSelect je '0'), MUX zapne LED diody, aby připomínaly umístění paměti, ve kterém se počítač nachází a co obsahuje. V provozním režimu (modeSelect je '1') se MUX používá k ladění, ale lze jej nastavit tak, aby zobrazoval cokoli jiného.

hodinyDivider

  • Popis vstupů: stop načte pět MSB bitů ze sběrnice, aby detekoval příkaz k zastavení ('11111') a zastaví hodiny. inputClk je interní hodinový signál desky Basys 3.
  • Popis výstupů: ouputClk jsou nové hodiny, které byly zpomaleny.
  • Celkové místo v systému: Tyto hodiny slouží ke zpomalení počítače, aby uživatel mohl určit, co se děje. Hodiny mohou běžet mnohem rychleji, ale aktuálně jsou nastaveny na 2 Hz.

triStateBuffer

  • Popis vstupů: Din je 5bitový vstup do vyrovnávací paměti. Ep je kontrolní bit.
  • Popis výstupů: Dout je 5bitový výstup vyrovnávací paměti
  • Celkové umístění v systému: Když je aktivní řídicí bit Ep, výstup odebírá vyrovnávací paměť. Když kontrolní bit není aktivní, vyrovnávací paměť nevydává nic.

tenBitDRegister

  • Popis vstupů: Dbus je vstup, na který má registr vstupovat. Clk umožňuje registru číst data na rostoucí hodinové hraně. ARST nastaví registr na 0 asynchronně. Když je outputEnable nízká, výstupem je obsah registru. Když je hodnota readIn nízká, registr se zastaví na sběrnici Dbus na rostoucí hodinové hraně.
  • Popis výstupů: Qbus je výstup z registru
  • Celkové umístění v systému: Register se používá vícekrát v celém počítači a slouží k ukládání informací při provádění operací.

FiveBitDRegister

  • Popis vstupů: Dbus je vstup, na který je registr. Clk umožňuje registru číst data na rostoucí hodinové hraně. ARST nastaví registr na 0 asynchronně. Když je outputEnable nízká, výstupem je obsah registru. Když je hodnota readIn nízká, registr se zastaví na sběrnici Dbus na rostoucí hodinové hraně.
  • Popis výstupů: Qbus je výstup z registru.
  • Celkové umístění v systému: Register se používá vícekrát v celém počítači a slouží k ukládání informací při provádění operací.

Krok 3: Kód

Níže je složka obsahující omezení a zdrojové soubory pro 10bitový počítač.

Krok 4: Ukázka a ukázkový kód

Výše uvedené video ukazuje, jak naprogramovat 10bitový počítač na desce FPGA Basys 3. Níže je také přiložen soubor PDF obsahující operační kódy a ukázkový program.

Doporučuje: