Beginner’s guide to Basic-graphics-music examples

These are examples to demonstrate labs sessions for systemverilog-homework which are portable systemverilog
examples for FPGA and ASIC.

FPGA Field Programmable Gate Array is a type of integrated circuit that can be programmed multiple times.
It consists of an array of programmable logic blocks and interconnects that can be configured to perform
various digital functions. FPGAs are commonly used in applications where flexibility, speed, and parallel
processing capabilities are required, such as in telecommunications, automotive and aerospace.

ASIC, Application Specific Integrated Circuit, this is an integrated circuit chip designed for specific use
for instance, telecommunications, automotive etc.

These examples facilitate learning for beginners by:-

  1. Removing EDA and FPGA vendor complexity and restrictions.
  2. Compensating the gap between academia and industry in solving microarchitectural problems
    necessary for a career in ASIC design, building CPU, GPU and networking chips.
  3. Reducing the barrier of entry for them or a person who is transitioning to FPGA/ASIC design.

Requirements:-

  1. Ubuntu 23.10,supports latest icarus verilog 12, other versions of linux are supported also.
  2. git.
  3. FPGA board, the examples support 30 boards with FPGAs from Xilinx,Altera, Gowin and Lattice and
    aim to be compatible with open-source ASIC design tools.

A List of boards for various FPGA vendors:-

List of boards

Step 1 download Intel Quartus

 

Go to and download Quartus Lite Edition 23.1. This version needs no license to generate files to program the FPGA

download page

Step 2 Running the installer

Right click on installer and select properties and set installer executable as program.

Open terminal at that location and type ./installer_name and press ENTER  installer GUI should open

Select Devices depending on board you have check add on button, agree to license and click download.

GUI

download progress

Installation Completed

download done

Step 3 Running Quartus

 

Double click on desktop icon OR Navigate to installation directory in bin directory in command line and type

 $ ./quartus

GUI

Step 4 Installing git

 

Open terminal and type

 $  sudo apt-get install git

Step 5 git clone Basic-graphics-music

 

In terminal, at a desired location clone the main directory from github

$  git clone https://github.com/yuri-panchul/basics-graphics-music

Step 6 Setup and Sellecting FPGA board.

 

Connect your FPGA board via usb cable

board connection

Open the cloned directory on your pc in terminal

CLI

Use

$  git pull

command To update to the new version then,

Run the bash script

$ ./check_setup_and_choose_fpga_board.bash

Sellect the corresponding number of your boards DE10-lite is 16 and press ENTER The number might change depending on cloned version of the directory. Some old boards that are not supported by Quartus 23.1 can be used by of the software.

Board sellection

Choose N when prompted with choice to use Qurtus GUI The reason for N is because you what to run one example after which you can try the rest.

CLI choice

Step 7 Running Shift register example

 

Navigate to shift register example by typing

$  cd labs/08_shift_register

08 shift register example location

To Run synthesis in CLI run the script

$  ./03_synthesize_for_fpga.bash

Run synthesis script

During synthesis a directory Run is generated, containing necessary files for programming the FPGA, after which the
programmer is run by the same script to program the board using the files. After a successful!! synthesis the response should be as bellow.

success display

Ensure all the LED switches are off All switches should be down because the left switch is used as a reset.

board with switches off

The image bellow illustrates how a shift register works.

register

Press Reset button, KEY 0 to observe how logic 1 get shifted accross the registers If you use another board,
not DE10-Lite, reset might be allocated to another button.

board after reset pressed

You can run other scripts in the directory depending on what you want to do

Date 2024-06-21