0 votes
in VHDL by (200 points)

What is the best way to start learning VHDL? How do I begin?

3 Answers

0 votes
by (1.8k points)

Best Way To Learn VHDL

Here's what I recommend that you do to learn VHDL:

1. Take a class, if you are in school see if there is one available and take it. The structured learning approach is one of the best ways to learn under the direct guidance of a teacher. Plus, getting a grade will drive you to complete the course.

2. If classes aren't avaible, take an online course. There are plenty of great courses out there on the internet where you can learn a new language. Of course, it will be up to you to complete the lessons and do the exercises. Plus, you probably won't have direct guidance or someone that you can ask questions and get thorough responses.

3. Buy a book on VHDL. There are a few good ones out there, but they are a bit outdated. When I was learning, I personally used these and found them helpful:

a) Circuit Design with VHDL by Pedroni
b) FPGA Prototyping by VHDL Examples: Xilinx Spartan-3 Version by Chu
c) Coworkers have used VHDL Primer by Bhasker

Naturally, these are a little bit out of date. And the Spartan-3 is pretty old and not recommended for new designs. The code in the books is still relevant though.

4. Buy a development board. Yes, they are expensive for FPGAs, so what? The skill pays a lot of money too! Digilent Inc is one of my favorite websites for getting some cool dev boards and add ons.

For a beginner, consider the Arty A7 board: https://store.digilentinc.com/arty-a7-artix-7-fpga-development-board-for-makers-and-hobbyists/

It's got simple interfaces like switches, buttons, and LEDs, as well as DDR3 and Ethernet. Plus, you can buy some add ons to do whatever you want through that website.

5. If you work somewhere that has people that do VHDL, then go ask them to cut you off a small project that you can tackle by yourself. Part of the journey of being an FPGA designer is completing the circle by giving back and teaching newer folks. So there are experienced people in your work place that have a need to teach so that they can close the loop on their own journey. Engage them.

6. Do a home project. The best way to learn is usually by self directed projects. Only you know what you're good at and what your limitations are, so by doing a home project, you can really push your limits without the risk of messing up in your job. This is the method I have used for decades to learn.

7. Read through and participate in the questions and answers on this website. It's a great way to test your understanding and grow your knowledge.
0 votes
by (500 points)

The answer to this question is very subjective. I'll try to describe my learning process in steps and what I found most helpful.

1. Study the fundamentals of digital electronic circuits such as: Flip Flops, Multiplexer, RAM, Logic Gates, etc...The amount of books and Internet resources on this subject is endless.
2. Download a VHDL aware text editor ( Notepad ++ is a popular choice ) and describe these simple logic components using VHDL. Again books and Internet resources can help a lot.
3. Get access to a simulation software - such as Modelsim or Vivado Simulator ( Free version are available for download on-line ).
4. Learn how to write a VHDL test-bench.
5. Simulate the simple circuits you described in VHDL. Try to change the code and see how it reflects the simulation results.
6. Read about how to write a state machine. Compare the methods of using one vs 2 process.
7. Learn about a simple communication protocol ( For example SPI or UART ). Write the code for it and simulate it.
8. At this stage, it's time to buy a cheap evaluation board. Both Intel & Xilinx have offering at ranges < $50.
9. Try to design a simple application - such as writing a simply led blinking software.
10. When you feel comfortable - try implementing the UART / SPI from step 7 on real hardware.

A few things to consider :

- The learning curve is steep. More than learning to program C for example. But with enough effort - you'll be able to do amazing things.
- VHDL - IS NOT a software programming language. You should ALWAYS remember that by writing VHDL code you're actually "drawing" digital electronic circuits with words.
- The Internet is your best friend. Technical forums such as this website, stackoverflow and edaboard can be of GREAT help as long as you ask correctly.

0 votes
by (500 points)

The best way is to learn VHDL while working with it. You need real tasks to understand what to do with and how to use VHDL. Without this the study will be some kind of academic theory only.

Hardware Coder Community

© 2022 by Hardware Coder. User contributions are licensed under cc by-sa 4.0 with attribution required. Attribution means a link to the question, answer, user, etc on this site.

This site is owned and operated by Hardware Coder in McKinney, Texas.

Send Us A Message
About Us

By using this site, you agree to the following:

Privacy Policy
Terms and Conditions
DMCA Policy
Earnings Disclaimer
Legal Disclaimer