Mastering FPGA can get a good job. For experienced staff, using FPGA can make the design very flexible. Mastering FPGA design, it is very easy to design single board hardware (not system design), especially when you are in college, it looks as friendly as the logical sequence diagram of gobbledygook. However, it is difficult to get started with FPGA, because unlike software design, almost all designs can be completed as long as there is a computer. FPGA design is directly related to hardware, which requires real debugging instruments, such as oscilloscope. These hardware devices are generally expensive, which creates a certain entry threshold. Newcomers will encounter some problems or difficulties when getting started. Because there is no debugging equipment, they can't locate the problem and may give up in the end. In fact, if someone gives some advice at this time, this threshold will be easy to pass. I have been designing with FPGA for many years, but I am far from proficient. I am only familiar with it. Here, I write down my understanding of the learning steps of FPGA for reference only. If there are any mistakes, please discuss and correct them.
FPGA learning steps 1. Sharp tools make good work.
Computers are indispensable. At present, Altera and xilinx are two companies that are widely used in FPGA. You can choose to install quartusII or ISE software. This is a necessary software environment. Hardware environment also needs downloader and target board. Although some people say that you can learn FPGA without downloader and target board, it is always an armchair strategist. It's like talking about a girlfriend, talking all the time, talking on the phone, not even holding hands. Can you say that someone is your friend? Although it costs money to build a hardware environment, think about it. The hardware environment is hundreds of dollars at most. If you really master the design of FPGA, the starting salary is not only so much higher than others. How much is this cost?
The second step of FPGA learning: be familiar with verilog language or vhdl language, and skillfully use quartusII or ISE software.
VHDL and verilog have their own advantages. Choose one and recommend verilog. Skillful use of design software, know how to compile, simulate and download. I don't want to sign up for some initial training courses unless you are rich or lucky enough to meet a high-level training teacher and want to share your experience with others. Otherwise, I always feel like an idiot after training. The initial stage can be completed by using network resources.
The third step of FPGA learning: design a small code and download it to the target board to see the results.
At this time, you can design a simplest program, such as lighting a lamp. If the light is flashing, you have started. If the flash plug-in can be downloaded to the FPGA at this time, the FPGA program can be started from flash, indicating that you have successfully completed the simplest design of the FPGA and can proceed to the next step.
The fourth step of FPGA learning: design a slightly more complicated code and download it to the target board to see the results.
You can design a UART program, which has reference on the Internet. You should know RS232 protocol and the logic analyzer built in FPGA. Download a serial debugging assistant online and debug it. If the communication is successful, congratulations, the level has improved, and move on to the next step.
The fifth step of FPGA learning: design complex code and download it to the target board to see the results.
For example, sdram program, there are also references on the Internet, and this design is a bit difficult. You can debug sdram through serial port, store the data of serial port in sdram, and then read back. If successful, you will be familiar with FPGA design.
The sixth step of FPGA learning is to design a high-speed interface, such as ddr2 or high-speed serial interface.
This requires a very good understanding of the physical characteristics of FPGA, and to understand the design methods such as timing constraints, as well as a large number of original documents. This part is successful, then you have a deep grasp of the physical interface of FPGA, and you are a design master.
The seventh step of FPGA learning is to design a complex protocol.
Such as USB, PCI Express, image codec, etc. , the overall grasp and logical division of the exercise system. After doing this, you will be a first-class master.
FPGA learning step 8, learning and relearning.
I don't know what to study. I only know that "there is no end to learning, and there are mountains outside the mountains."
At present, many FPGA engineers have not found a suitable one. I think many people have gone astray from the beginning. Let me also talk about the situation of beginners learning FPGA design. I think it is possible to become a master if you start from the foundation and have a solid foundation.
I think FPGA learning has the following steps:
Step 1: Learn about the structure of FPGA, what FPGA is and what is in the chip. Don't take a development board from the beginning and program it according to other people's things. Many development boards are poorly written, and I have designed development boards for some time. I think, to a great extent, the development board is misleading children. However, the genuine development board code provided by the original factory is excellent and can be used for reference. Only by understanding the internal structure of FPGA can we understand why Verilog and C write in different ways.
Step 2: Master the process of FPGA design. Know what you are doing every step of the way and why. Many people are just a few steps. What's so strange about this? Hehe, I think at least half of people don't know the difference between synthesis and translation.
Knowing the structure and design flow of FPGA, it is possible to know how to optimize the design, improve the speed and reduce resources. Don't be impatient, don't spend time on choosing which language and which company's chip. Language is just an expression. What matters is what you think. Without a good guiding ideology, no matter how well you use the language, you are only a person who understands the language.
Step 3: Start learning code. I suggest that people who want to learn code go to Altera or Xilinx's website to learn the original engineer's code. Don't go into a misunderstanding from the beginning.
Step 4: Templates are very important. Whether fpga resources can be used efficiently depends on understanding the structure of FPGA, understanding the logical functions and basic mechanisms to be realized, and using the correct template. The internal device types of FPGA are relatively single. With a good template, your logic can be efficiently synthesized into a structure that FPGA is good at expressing.
The main thing to do FPGA is to have the idea of circuit. As a beginner, you may not be familiar with devices, so you should be familiar with the knowledge of digital circuits. FPGA is composed of basic structures such as flip-flops, lookup tables and interconnection lines. In fact, what we see in the code are NAND gates and flip-flops.
Don't equate verilog with C language, the two are basically two different things, and there is no comparability.
What kind of circuits should be thought of when writing programs, such as counters and selector tri-state gates. Understanding time sequence and logic is a jumping thing. You can draw time sequence when you don't think clearly in the early stage of design, so that your thinking will be clearer. In addition, simulation is very important. Don't load the program on FPGA after writing it. First, simulate it, especially for larger programs. Imagine that you are making an asic. There is no second chance, so you must do a good simulation. There are still many novices who don't know whether to choose vhdl or verilog for language learning. Verilog is their personal preference. Of course vhdl is not good. Anyway, all they wrote was circuits. Then, of course, don't spend too much time on language grammar. Verilog is concise, and almost 90% of circuits can be written by mastering assign, always, case and if else. The above are my humble opinions on FPGA learning, hoping to help everyone.