This is a free beginners series to FPGA development. Throughout the course we will be using the Tang Nano 9K development board created by Sipeed.
This board was chosen as it packs a very powerful FPGA core in a very compact and affordable package, so for beginners you won't have to worry about size problems or optimizing your design, allowing you to focus on learning and building cool projects.
This series uses a completely open source toolchain which makes development open / fast and lightweight.
Learn by example with our on-going series of articles showcasing how to use FPGAs in your next project.
Get the Hardware
You can find everything you need to follow along with all the articles in the Tang Nano 9K series from our store.Take me There
- Installation & Getting Started - goes over the process of getting setup, installing the toolchain and goes over the basics to programming a basic example on the Tang Nano 9K.
- Debugging & UART - goes through common debugging methods when working on the tang nano or really any FPGA and we go through the process of creating a UART module to communicate with a computer.
- OLED 101 - The first mini project creating an OLED text engine core. This part covers creating the physical driver to interface and display images on an OLED screen.
- Creating a Text Engine - A continuation of the OLED mini project, implementing a text core which allows us to render ASCII text to pixels on the screen using font files.
- Data Conversion & Visualization - Part 3 of the OLED mini project, shows ways to convert binary numbers into different formats and how to visualize them on the OLED display.
- Reading from the External Flash - Learn about the external flash storage IC onboard the Tang Nano 9K and how to program and read data from it in your applications. In this section we build a hex viewer for the flash memory as an example project which reads data by address.
- Generating Random Numbers - Dive into LFSRs and how they can be used to generate pseudo random numbers. In this section as an example use-case we build a scrolling graph by plotting the random numbers on screen.
- Sharing Resources - A look at the problem of sharing common resources as-well as different methods on how to safely share resources between components and the pros and cons for each method.
- I2C, ADC and Micro Procedures - Designing modules in layers, using nested state machines to create the right building blocks for simplifying your overall design. In this article we build modules for the ADS1115 ADC and the I2C protocol to get analog values into our digital circuits.
- Our First CPU - This section goes through the entire process of creating a general purpose CPU core on the tang nano. In this section we will build in instruction set architecture, a cpu core and an assembler to allow us to write, compile and run software on the tang nano.
- Composite Video - This article dives through the classic composite video protocol and how to implement the NTSC 240p video standard to draw grayscale images on screen.
Projects with the Tang Nano 9K that may require extra components / might not be supported yet by the Open source toolchain:
- Project EDID - Exploration into the EDID protocol used by HDMI screens for identifying the display and the functionality the screen supports.
These articles with extra info going outside the scope of the main series: