Giter VIP home page Giter VIP logo

alu-computing-unit's Introduction

ALU computing unit

Popis

4-bitová aritmeticko-logická jednotka se dvěma vstupy A a B a výstupem Y s přenosem C. Jednotka může provádět 16 různých operací (viz tabulka).

Jednotce lze ručně nastavit vstupní příznak carry, který je u některých operací použit. Výsledná data (včetně vstupů) jsou zobrazena na šestnácti LED diodách a také na čtyřmístném sedmisegmentovém displeji. Všechny vstupní hodnoty se nastavují pomocí přepínačů, které jsou umístěny na externí rozšiřující desce společně s LED diodami.

Vývoj probíhal na vývojových deskách CoolRunner-II (CLPD) a Zybo (FPGA). Obě desky jsou od firmy Digilent. Program běží na obou deskách nezávisle, pouze na desce Zybo je nutné snížit vstupní hodinový kmitočet (na 10 kHz) a invertovat výstupy (carry, carry_in, parity).


CoolRunner-II Starter Board [1]


Zybo Zynq-7000 ARM/FPGA SoC Trainer Board [2]


Rozšiřující deska s tlačítky, přepínači a LED diodami

Zadání

ALU jednotka s vlastní sadou početních/logických/binárních operací, viz např. 74181

Zapojení


Zapojení ALU jednotky s deskou Zybo

Schéma externího hardware připojeného k desce Zybo. Vlevo displej, vpravo LED diody a přepínače.

Řídící signály ALU

Řídící signálFunkcePopis
0x0 Y = A + B Součet
0x1 Y = A - B Rozdíl
0x2 Y = A + 1 Inkrementace
0x3 Y = A - 1 Dekrementace
0x4 Y = A + B + C Součet s přenosem
0x5 Y = A - B - C Rozdíl s přenosem
0x6 Y = A or B Logický součet
0x7 Y = A and B Logický součin
0x8 Y = A xor B Exkluzivní logický součet
0x9 Y = not A Logická negace
0xA Y = A >> 1 Rotace vpravo
0xB Y = A << 1 Rotace vlevo
0xC Y = (A + C) >> 1 Rotace vpravo s přenosem
0xD Y = (A - C) << 1 Rotace vlevo s přenosem
0xE Y = A'H <=> A'L Přehození nejvyššího a nejnižšího čtvrbytu
0xF Y = A mul B Součin

Funkční bloky

Sčítačka Numericky sečte hodnoty na vstupech A, B a výsledek uloží do Y. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je ignorován.
Odčítačka Numericky odečte hodnotu na vstupu B od vstupu A a výsledek uloží do Y. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je ignorován.
Inkrementace Numericky inkrementuje hodnotu na vstupu A o jedničku. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je ignorován.
Dekrementace Numericky dekrementuje hodnotu na vstupu A o jedničku. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je ignorován.
Sčítačka s přenosem Numericky sečte hodnoty na vstupech A, B a výsledek uloží do Y. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je přičten k výsledku Y.
Odčítačka s přenosem Numericky odečte hodnotu na vstupu B od vstupu A a výsledek uloží do Y. Příznak přenosu je uložen do C. Vstupní příznak přenosu C je odečten od výsledku Y.
Logický součet Provede logický součet hodnot na vstupu A a B. Výsledek uloží do Y.
Logický součin Provede logický součin hodnot na vstupu A a B. Výsledek uloží do Y
Exkluzivní logický součet Provede logický exkluzivní součet hodnot na vstupu A a B. Výsledek uloží do Y.
Logická negace Provede logickou negaci hodnoty na vstupu A. Výsledek uloží do Y.
Rotace vpravo Provede rotaci hodnoty na vstupu A o jeden bit vpravo. Výsledek uloží do Y. Nejnižší bit je uložen do C. Vstupní příznak C je ignorován.
Rotace vlevo Provede rotaci hodnoty na vstupu A o jeden bit vlevo. Výsledek uloží do Y. Nejvyšší bit je uložen do C. Vstupní příznak C je ignorován.
Rotace vpravo s přenosem Provede rotaci hodnoty na vstupu A o jeden bit vpravo. Výsledek uloží do Y. Nejnižší bit je uložen do C. Vstupní příznak C je uložen na nejvyšší pozici.
Rotace vlevo s přenosem Provede rotaci hodnoty na vstupu A o jeden bit vlevo. Výsledek uloží do Y. Nejvyšší bit je uložen do C. Vstupní příznak C je uložen na nejnižší pozici.
Přehození bitů Provede vzájemné přehození bitů na vstupu A. Výsledek uloží do Y. Shodné s rotací vpravo nebo vlevo o dva bity.
Násobička Numericky vynásobí hodnotu na vstupu A s hodnotou na vstupu B. Výsledek uloží do Y. Příznak C signalizuje, že výsledek obsahuje numerickou hodnotu vyšší než 15. Na výstup Y jsou přivedeny vždy 4 nejnižší bity.
Parita výsledku Signalizuje lichý počet jedniček ve výsledku.
Jednotka ovládání displeje Řídí čtyřmístný sedmi-segmentový displej se společnou anodou. Segmenty displeje jsou aktivní v nule. Frekvence signálu clk musí být nejméně 10 kHz.
Výsledná ALU jednotka Celkové vstupy a výstupy jednotky.
Vstupy number_a a number_b slouží k nastavení čísel se kterými se budou provádět operace. Vstupem control_sig se nastavuje operace, kterou chceme provádět. Hodnoty se nastavují pomocí přepínačů.
Výstupy number_a, number_b, control_sig a alu_result slouží k binární reprezentaci hodnot, použity jsou LED diody.
Výstupy disp_digit a disp_sseg slouží k dekadickému zobrazení hodnot na 7segmentovém displeji.

Některé části (disp_mux) jsou doplněné šablony od pana Frýzy [3].

RTL schéma jednotky

Celkové zjednodušenéVíce podrobné

Video

Alu jednotka

Prezentace

Prezentace ve formátu PDF
Prezentace ve formátu PPTX

Zdroje

  1. https://reference.digilentinc.com/_media/reference/programmable-logic/coolrunner-ii/cr2-2.png
  2. https://www.electronicdesign.com/sites/electronicdesign.com/files/uploads/2014/03/104431_fig3-digilent-zybo.png
  3. https://gitlab.com/tomas.fryza/vhdl-examples

alu-computing-unit's People

Contributors

tom2238 avatar

Stargazers

 avatar  avatar

Forkers

linoks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.