YURI: This text has to be edited
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:-
- Removing EDA and FPGA vendor complexity and restrictions.
- Compensating the gap between academia and industry in solving microarchitectural problems necessary for a career in ASIC design, building CPU, GPU and networking chips.
- Reducing the barrier of entry for them or a person who is transitioning to FPGA/ASIC design.
You only need a few things to get started:
- Get a compatible FPGA board.
- Install drivers and required software.
- Download or checkout this repository on Windows, Linux, or macOS.
- Run
06_choose_another_fpga_board.bash
to select your board. - Run
03_synthesize_for_fpga.bash
to synthesize, place, and program your board all in one go.
That's it! You're now running Verilog example code on real hardware. Press buttons on the board and check for LEDs to light up accordingly.
- Follow the instructions for Windows, Linux, or macOS to set up your environment.
- Optional: Configure VSCode:
- Install these extensions: 🔧 TODO: Verilog extensions configuration
- Recommended extensions: GitHub Pull Requests and GitHub Repositories
- Checkout this GitHub repository. Check out
Git Cheat Sheet if you need additional help
Optionally, switch to a
new_graphics
branch to get access to the bleeding edge features. - Select the right board:
Type number corresponding to your board and press Enter.
cd ./labs/1_basics/1_01_and_or_not_xor_de_morgan/ ./06_choose_another_fpga_board.bash
- Synthesize, place and program the board using a
Git Bash:
If all goes well, you should see the LEDs on your board light up according to the example.
cd ./labs/1_basics/1_01_and_or_not_xor_de_morgan/ ./03_synthesize_for_fpga.bash
As long as you do not change your hardware, you only need to
run 03_synthesize_for_fpga.bash
script after the first time setup.
Examples are not fully compatible with a WSL. You're welcome to try at your own risk and peril. See documentation.
- Required: Download and install Git for Windows.
⚠️ We recommend on the "Adjusting your PATH environment" step to select "Use Git and optional Unix tools from the Windows Command Prompt".
- Required: Bash: Compatibility is only verified with Bash installed as part of the Git for Windows package.
- Recommended: Download and install VScode
- Open Git Bash from the Start menu or from a right-click context menu in any folder (if you enabled it during installation).
- Alternatively, you can use VSCode:
- Optionally: Set it as a default in Settings > Features > Terminal > Integrated > Default Profile > Windows > Git Bash.
- Open a new Git Bash as a one-off by clikcing on the dropdown arrow next to the plus icon in the terminal panel and selecting Git Bash.
You can tell that it's a Git Bash terminal if you see a prompt that looks like this:
user@hostname MINGW64 /c/Users/user/Documents/basics-graphics-music/ (master)
$
You may need to install git if not alredy installed:
sudo apt-get install git
You can use any terminal including built-in.
No special stesps are required. You can use any terminal including built-in.
- Optional: If you hit issues with
bash
, you may have a version older than is currently supported. If so, you can use Homebrew'sbash
instead:brew install bash
To support educators worldwide, we support a wide variety of hardware across all manufacturers and price ranges, with several dozen different variants in total. See ./boards for more information.
If you do not know where to start:
- Gowin SiPeed Tang Nano 9K is a solid and affordable starter board.
🔧 Work in progress. Please, double-check information for your board online. Your contributions are welcome.
Not all boards include everything on the same board. To compensate for this we use external boards and hardware to extend input and output capabilities. The most common external hardware is:
- All variants: INMP441 I2S microphone
- Almost all variants: PCM5102 I2S stereo audio DAC. Some boards do not require an external DAC as they have an on-board DAC (Tang Nano 20K)
tm1638
orno_tm1638
: with and without TM1638: 8-digit 7-segment display with 8 buttons (enabled intm1638
variants)hdmi
: HDMI on-board outputlcd_480_272
: 40-pin 480x272 LCD displaylcd_800_480
: 40-pin 800x480 LCD displayyosys
: The same hardware, but uses Yosys open source toolchain instead of a proprietary one.
This repository was used during the following events:
Hacker Dojo in Mountain View, California in 2024
ADA University in Baku, Azerbaijan in 2024
LaLambda 2023 in Tbilisi, Georgia
AUCA & Siemens EDA seminar in Bishkek, Kyrgyzstan in 2022
Школа синтеза цифровых схем / The School of Synthesis of the Digital Circuits, 2020