How to learn FPGA

Ad Code

How to learn FPGA

 

                      

                                                                         
Mastering FPGA can find a good job. For experienced staff, using FPGA can make the design very flexible. After mastering the FPGA design, the hardware design of the single board is very easy (not the system design), especially the logic timing diagram that looks like a bible when I was in college, it looks very friendly. However, it is difficult to get started with FPGA, because it is not like software design, as long as there is a computer, almost all designs can be completed. FPGA design is directly related to hardware and requires real debugging instruments, such as oscilloscopes. These hardware devices are generally relatively expensive, which creates a certain barrier to entry. Newcomers may encounter some problems or difficulties when getting started. Because they do not have debugging equipment and cannot locate the problem, they may give up in the end. In fact, if someone gives a little guidance at this time, this threshold can be easily passed. I have been designing with FPGA for many years, and I am far from being proficient. I am just familiar with using it. Here I write down my understanding of FPGA learning steps, just as a reference. If it is wrong, everyone is welcome to discuss and correct.
FPGA learning steps 1. If a worker wants to do a good job, he must first sharpen his tools.
A computer is essential. At present, Altera and xilinx are the two companies with more FPGA applications. You can choose to install quartusII or ISE software. This is a must-have software environment.
The hardware environment also needs a downloader and a target board. Although some people say that you can learn fpga without downloader and target board, but that is always on paper. It’s like talking about a girlfriend, always talking about it, talking on the phone, without even holding hands, can you say that she is your friend? Although it costs money to build a hardware environment, but think about it, the hardware environment can cost up to several hundred yuan , if you really master FPGA design, the starting salary is not only so much higher than others. What is this cost?
FPGA learning step 2. Be familiar with verilog language or vhdl language, and use quartusII or ISE software proficiently.
VHDL and verilog have their own advantages, choose one, it is recommended to choose verilog. Skilled use of design software, know how to compile, simulate, download and other processes.
At the initial stage, I don’t want to enroll in some training courses, unless you are rich or lucky, and you meet a high-level training teacher who wants to share your experience with others. Otherwise, you will always feel that you have been taken advantage of after the training . The introductory phase can be done using online resources.
FPGA learning step 3, design a small code, download it to the target board to see the result
At this time, you can design a program with the simplest answer, such as lighting a lamp. If the light is flashing, it means that the basic entry. If you can download the flash attached to the FPGA at this time, and the FPGA program can start from the flash, it means that you have succeeded in the simplest design of the FPGA, and you can go to the next step.
FPGA learning step 4. Design a slightly complicated code, download it to the target board to see the result.
You can design a UART program. There are references on the Internet. You need to understand the RS232 protocol and the logic analyzer built into the FPGA. Download a serial port debugging assistant from the Internet, and debug it. If the communication is successful, congratulations, the level has improved. Go to the next step.
FPGA learning step 5. Design complex code, download it to the target board to see the result.
For example, there are references on the Internet for the sdram program, but the design is a bit difficult. You can use the serial port to debug sdram, store the data in the serial port to sdram, and then read it back. If it succeeds, then you are more familiar with FPGA design
FPGA learning step 6. Design high-speed interfaces, such as ddr2 or high-speed serial interfaces
This requires a good understanding of the physical characteristics of the FPGA, as well as design methods such as timing constraints, and a large number of original documents. If this part is successful, then you have a deep grasp of the physical interface of the FPGA, and you are a design master.
FPGA learning step 7, design a complex protocol
For example, USB, PCIexpress, image codec, etc., exercise the overall grasp and logical division of the system. After completing these, you are a first-class master,
FPGA learning step 8, learning and learning
I don't know what to study, I only know that "learning is endless, there are mountains beyond mountains".
Nowadays, many FPGA engineers have not found a suitable one. I think many people have gone astray from the beginning. Let me also give some opinions to novices learning FPGA design. I think you have to start from the basics, and only with a solid foundation can you become a master.
I think the following steps must be followed in FPGA learning:
The first step: learn to understand the structure of FPGA, what exactly is FPGA, what is in the chip, don't just use a development board to program according to other people's things. The programs of many development boards are poorly written. I have also designed development boards for a period of time. I think to a large extent, development boards are misleading people. However, the authentic development board provided by the original factory has excellent code and can be used for reference. Only by understanding the internal structure of FPGA can we understand why the overall idea of ​​writing Verilog and writing C is different.
Step 2: Master the process of FPGA design. Know what each step is doing and why. Isn't it just those few steps for many people, what's so strange? Haha, I think at least half of the people don't know the difference between synthesize and traslate.
Only by understanding the structure and design process of FPGA can we know how to optimize the design, increase the speed, reduce resources, don't be impatient, and don't work hard on which language to choose and which company's chip to choose. Language is just a way of expression, what is important is your thinking, without a good guiding ideology, no matter how good the language is, it is only a person who understands the language.
Step 3: Start learning code. I suggest that anyone who wants to learn code go to Altera or Xilinx's website to learn from the original engineer's code. Don't go into the wrong place from the beginning.
Step 4: template is very important. Whether FPGA resources can be used efficiently, one is to understand the fpga structure, the other is to understand the logic function and basic mechanism to be realized, and the third is to use the correct template. The types of FPGA internal devices are relatively single. Only by using templates well can your logic be efficiently synthesized into a structure that FPGA is good at expressing:)
Doing FPGA mainly requires the idea of ​​circuits. 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, look-up tables, and interconnection lines. In fact, what we can see in the code are NAND gates and triggers. Don’t equate Verilog with C language. They are fundamentally different things. There is no comparison. What kind of circuit, counter selector tri-state gate, etc., understand timing, logic is a thing that takes one shot at a time. When you don’t think clearly in the early stage of design, you can draw a timing diagram, so that the thinking will be clearer, and you can also One is that simulation is very important. Don’t load the program into the FPGA after writing the program. First of all, you need to simulate, especially for larger programs. If you imagine that you are doing asic, there is no second chance, so you must put the simulation Well, there are still many novices who don't know whether to choose vhdl or verilog for language learning. I personally prefer verilog. It takes a lot of effort, verilog is concise and concise assign always case if else mastering these can almost write 90% of the circuit, the above are some of my humble opinions on FPGA learning, I hope it will be helpful to everyone.
Close Menu