Absolute beginner's guide to DE10-Nano
To get started with the guide, please begin here.
To just download the Debian or Arch Linux ARM (NEW) image for the DE10-Nano, please visit the releases page.
Table of Contents
- Getting Started
- Building Embedded Linux - Full Custom
- Flashing the FPGA from SD Card
- HPS and FPGA communication
- My First SoC - Simple Hardware Adder
- FPGA - SDRAM Communication
- Appendix
- FAQ
- Getting further help
- Prerequisites
Getting Started
Building Embedded Linux - Full Custom
- The Basics
- Building the Universal Bootloader (U-Boot)
- Building the Kernel
- RootFS - Choose one:
- Creating the SD Card Image
- (Optional) Setting up WIFI
Flashing the FPGA from SD Card
HPS and FPGA communication
My First SoC - Simple Hardware Adder
- Introduction
- Initial project setup
- Simple Adder
- Primer on Avalon MM
- Custom Avalon MM Components
- Wiring the Components
- Add the Simple Adder
- Writing the Software
FPGA - SDRAM Communication
- Introduction
- SDRAM Controller
- More on Avalon MM
- Avalon MM Agent/Slave - Trigger Component
- Avalon MM Host/Master - 1
- Avalon MM Host/Master - 2
- Avalon MM Host/Master - 3
Appendix
FAQ
Isn't there documentation already? Why this guide?
- Not beginner friendly - There is a lot of documentation online, but they don't always explain everything.
- Comprehensive - The ultimate goal of this site is to be comprehensive so all the information needed is available and accessible easily.
- Focused - There are several boards by Terasic and Altera which use Cyclone V and all of them vary slightly. This guide only focuses on the DE10-Nano. If you are using a DE1 or any other Cyclone V board, a lot of the content will still be applicable. But I haven't tested it, so I don't know if it will work or not.
Can I just get the image? I don't want to go through the guide to get Debian on my DE10-Nano.
Sure, You can download the SD Card image from the releases page.
How much Linux do I need to know?
You are expected to be comfortable using the command line in Linux. All the shell commands you will need will be provided in the guide. But the commands themselves won't be explained, you will need to learn more about them yourself.
Will you cover VHDL/Verilog or FPGAs in general?
No, this guide does not cover general FPGAs. There is enough information online to learn HDL as well. Basic understanding of FPGAs and HDL is expected.
I spotted a mistake!
Please let me know! Either raise an issue or submit a pull request and I will greatly appreciate it!
Getting further help
If you have a question about something, feel free to raise it as an issue and I'll try and address it. But this is a hobby for me and I can't really guarantee being able to answer it, nor do I guarantee that I will have time to answer your question.
You can also reach out to the following communities for more help:
- FPGA Subreddit - Some of the nicest people online here. I have lost track of the number of times people have asked "Which board should I get?" and yet never has the post been taken down or rudely put down.
- ##FPGA on IRC Freenode - Excellent resource for general FPGA related questions. Ask a question and do lurk around, people are busy and may not reply immediately.
- Intel community forums - Not very active, but from time to time people do reply. Sometimes support engineers from Intel will come across your post and reply, but that usually takes time.
- Rocketboards forum - Similar to the intel forums, these are not very active. But there's a lot of helpful information on the forums, so searching there is also an option when you get stuck.
Prerequisites
This document assumes no knowledge of SoCs. However, it requires a few things for you to be able to follow along:
- DE10-Nano: Obviously you need the DE10-Nano board. Most prominent electronics retailers stock it (digikey, mouser, element14) or you can purchase it directly from the Terasic website. Please don't purchase knock-offs or cheap alternatives. FPGA programming is hard enough and there are a million things that can go wrong.
- Beginner's knowledge of FPGAs - While there is some FPGA programming involved, this guide does not teach you the basics of FPGAs, HDLs etc. There are several resources available online.
- Intermediate knowledge of Linux: Linux will be the preferred OS for this guide. You should be able to navigate the terminal and know at least the basic commands of the shell.
- Serial UART: To see the bootloader commands, we will need to have a serial console like
PuTTy
orminicom
available and also connect our DE10-Nano using the USB port. - Connected to LAN: We will need the device connected to LAN so that we can ssh to it from our host computer.