Source: Internet Compilation
Learning FPGA yields different answers depending on the level of the learner. First, let me say that those who say not to use development boards are beginners.
I categorize FPGA proficiency into four levels: egg level, beginner level, intermediate level, and expert level. The questioner is likely at the egg level! They know nothing. Many who receive high praise are often at the beginner level. Of course, I will tell you how to become a beginner. In the future, I will also write about how to progress from beginner to intermediate.
1) Familiarize yourself with the syntax; you don’t need to know everything, but you should remember a few classic timing and logic circuit description methods.
2) Get acquainted with three classic circuit descriptions and simulations. Simulation is not very important; when I started learning, I didn’t study that at all because if you are only doing interfaces, it’s not very useful. It’s faster to use ChipScope to grab data. Simulation is mainly for those working on algorithms or larger projects. The three classic circuits are: frequency divider, counter (which can be used as a clock), and sequence detector.
This way, you will be basically familiar with the development environment.
3) Run a light on the board to familiarize yourself with the clock resource usage and the principles of hardware usage on a board.
4) Understand that learning FPGA is primarily not about programming! There is no such thing as programming!! Verilog is a hardware description language! Description!! When writing code, you must have a circuit diagram in your mind!! The main focus of FPGA learning is hardware and algorithms!! Software can at most account for 10%!
As long as you can complete the above tasks, congratulations, you have entered the beginner category and can complete some module designs under the condition that others have designed the FPGA solution. In fact, many employees hired by Huawei have similar FPGA skills at the beginning.
Let’s first write about what intermediate-level engineers need to know, and later I will answer how to achieve that.
1) You must be very familiar with FPGA logic resources, especially clock resources.
2) Those working on algorithms must be familiar with the use of Sysgen. It sounds easy, but drawing diagrams in Sysgen is not that simple; you need to be familiar with using various filters, and the theoretical knowledge required is quite substantial.
3) Fully understand the top-down design principles of FPGA and be able to write a moderately detailed FPGA design specification.
4) Be familiar with timing optimization, timing closure, area constraints, etc., and be able to apply them in programming to solve the “unscientific” problems that beginners cannot solve. In simple terms, you should know how to use PlanAhead and those features in ISE that you haven’t encountered yet. Generally, beginners only know how to program in ISE, compile it by default, and then download it, using ChipScope to grab data to check.
5) Be familiar with commonly used FPGA interfaces; you don’t need to know how to program all of them, but you should know what their functions are. For example, ADC, DAC, serial ports, EMIF, etc. Also, be familiar with the working principles of commonly used chips around FPGA like DSP.
6) Be familiar with hardware design; at least know how to plan IO on the bank, how to plan global clocks, and regional clocks, etc.
7) You should be familiar with using signal sources, oscilloscopes, and spectrum analyzers!
Once you are familiar with these, you are likely at the intermediate level.
To become an expert, you need to have experience with at least ten FPGA design projects, solving core issues in medium to large projects, and you must have worked on large systems rather than just small boards.
Entering the field is not that easy. I believe that to start, you must know what FPGA is for, what it can do, and how it compares to ARM, DSP, X86, and GPU in terms of advantages.
Let me briefly mention that FPGA currently has three main areas:
1) High-speed interface design for communication. Generally, the speed is too high, requiring FPGA to separate high-speed digital signals, making them easier to process, transmit, and store.
2) Digital signal processing, including image processing, radar signal processing, medical signal processing, etc. The advantage is good real-time performance, trading area for speed, and being much faster than CPU.
3) SOPC. However, I personally think this area is not very mainstream.
Basically, over 60% is used for communication interfaces, which is also the most suitable and advantageous area for FPGA. 30% is for signal processing. In many cases, signal processing is also due to the need for an FPGA for interface in a system, not wanting to spend more money or effort on buying a DSP!
For the advantages of each chip, please search for it yourself.
Postscript
I am actually quite happy to hear criticisms. Some say my level is that of a higher beginner. Strictly speaking, that is not wrong. Simulation has always been an aspect I have neglected. I admit that saying simulation is not important is incorrect. Simulation can generally improve the efficiency of an excellent FPGA engineer’s work, and some basic errors can be reflected immediately. Especially for those unfamiliar with FPGA syntax, simulation is necessary. After all, a larger FPGA program can take several hours to compile. However, please view simulation reasonably; beginners have to learn both programming and simulation. The key is that even if the simulation is correct, it may not be right in practice! This can undermine confidence.
When conditions allow, you can directly capture signals to see waveforms, which is more accurate. This can significantly shorten the cycle of completing a simple project. Generally, beginner-level projects can be written directly without much error. Therefore, I mentioned that simulation is not very important for beginners. Each person should view the issue based on their current stage!
Generally, it takes about 1-2 years to reach the beginner level I mentioned, and 3-5 years to reach the intermediate level! Whether one can become an expert depends on personal talent. I have been learning FPGA for about two years, have worked on two large projects, and have lost track of the small projects, placing me between beginner and intermediate. I am familiar with various aspects of FPGA work but not proficient. I welcome exchanges and critiques from experts.
Click to read the original text for more information