====== Basys3 Abacus Demo (Legacy) ====== === Important! === This is a legacy demo, see the updated version of this demo [[learn:programmable-logic:tutorials:basys-3-abacus:start|here]]. {{:basys3:abacus_multiply.jpg?600|}} ===== Overview ===== ==== Features Used ==== | ^ Not Used ^ Used ^ ^ 16 user switches | | X | ^ 16 user LEDs | | X | ^ 5 user pushbuttons | | X | ^ 4-digit 7-segment display | | X | ^ 4 Pmod connectors | X | | ^ XADC Analog input | X | | ^ 12-bit VGA output | X | | ^ USB-UART Bridge | X | | ^ Serial Flash for application data | X | | ^ USB HID Host with mouse | X | | ^ USB HID Host with keyboard | X | | ==== Description ==== Abacus demonstration project that implements several arithmetic operations using the Basys3's switches, LEDs, buttons and 7-segment display. See this video for instructions on building the project from only source files. {{youtube>6_GxkslqbcU?large }} ------- ===== Prerequisites ===== ===Skills=== * **Basic familiarity with Vivado** * //This experience can be found by walking through our "Getting Started with Vivado" guide// ===Hardware=== * **Basys3 FPGA board** * **Micro-USB cable** ===Software=== * **Vivado Design Suite 2015.X** * //Newer/older versions can be used, but the procedure may vary slightly// ----- ===== Downloads ===== Basys 3 Support Repository -- [[https://github.com/Digilent/Basys3/archive/master.zip|ZIP]] [[https://github.com/Digilent/Basys3|GIT Repo]] ------ ===== How to... ===== ==== 1. Generate the Project ==== >1.1) Download the repository linked in the download section and place it in the location of your choosing. >1.2) Generate the **Abacus** project in the Projects folder by following this guide before continuing: [[vivado:github|How to Generate a Project from Digilent's Github]] ==== 2. Build the Project ==== >2.1) Click **Generate Bitstream** on the left hand menu towards the bottom. Vivado will run through both Run Synthesis and Run Implementation before it generates the bitstream automatically. > >Note: If you want, you can click each step by itself in the order of **Run Synthesis**, **Run Implementation** and then **Generate Bitstream**. > >{{:basys3:buildflow.png?600|}} ==== 3. Program the Board ==== >3.1) Once you have generated your bit file, Click on the hardware manager and connect to your board by choosing the local server option. > >{{:basys3:device_connected.png?600|}} >3.2) Click program to load the abacus demo onto your Basys3. ==== 4. Run the Project ==== To run all the features of this demo, all you will need is your programmed Basys3. The abacus can preform 4 arithmatic functions on two 8-bit numbers. Switches 15-8 represent input A. Switches 7-0 represent input B. The abacus works by setting the slide switches to your desired operands and then selecting an operation with the buttons. The result will be displayed on the 7 segment display. On startup, the display will read 0. {{:basys3:abacus_startup.jpg?300| "This is a caption" }} >4.1) Subtraction (BTNU) > >When BTNU is pressed down, this activates subtraction. This function uses the formula A - B. While the button is held down, the display will show a static number that will also display whether it is positive or negative. When BTNU is released, the result will start to scroll through the LEDs. > >{{:basys3:abacus_subtract_held.jpg?300|}}{{:basys3:abacus_subtract_held_neg.jpg?300|}} {{:basys3:abacus_subtract_scroll.jpg?300|}} >4.2) Multiplication (BTND) > >When BTND is pressed down, this activates multiplication. This function uses the formula A * B. While the button is >held down, the display will show the product until the user releases BTND. The display will then return to whatever >was last scrolling. > >{{:basys3:abacus_multiply.jpg?300|}} > >The abacus calculating 3*3 >4.3) Division (BTNR) > >When BTNR is pressed down, this activates division. This function uses the formula A / B. While the button is held down, the display will show the quotient until the user releases BTNR. The display will then return to whatever was last scrolling. > >{{:basys3:abacus_division.jpg?300|}} > >The abacus calculating 16 / 2 >4.4) Modulo/Remainder (BTNL) > >When BTNL is pressed down, this activates modulo. This function uses the formula A % B. While the button is held down, the display will show the remainder until the user releases BTNL. The display will then return to whatever was last scrolling. > >{{:basys3:abacus_modulo.jpg?300|}} > >The abacus calculating 17 % 2 {{tag>legacy}}