Date: May 12, 2021
Click Count: 2493
As a kind of high-tech, FPGA can be re-programmed due to its special structure and has a short development cycle. It is more and more favored by electronic enthusiasts, and its application has gradually spread to all walks of life. Therefore, more and more students or engineers hope to step into the door of FPGA to master this technology. There are so many development boards and training courses on the Internet, as if you are telling you that if you don't understand FPGA, you just OUT. So what basic knowledge do we have to have to play FPGA? How to learn FPGA? Let's talk slowly below.
Since we want to play with FPGA, the most important thing for us is of course to understand what FPGA. FPGA (Field-Programmable Gate Array), that is, field programmable gate array. The farmer laughed when he saw the two words of programming. Isn't it programming? That's our strength. Wait a minute, this programming is not another programming. It is necessary to distinguish FPGA programming from software programming.
For software programming, the processor will translate the language into various control signals one by one to control the internal circuits to complete one operation or operation. So how is FPGA programming achieved? Regardless of the difference between Altera and Xlinix FPGAs, the basic units are similar, and they are all composed of truth tables and D flip-flops. Changing the value of the truth table changes the logic function, and then realizes any sequential logic by combining with the D flip-flop.
So our programming of FPGA is actually to modify these truth tables and connection relations, so that they form a special truth table to realize specific functions. This is essentially different from software programming to run the program step by step. If you want to play with FPGA, you must understand the internal working principle of FPGA and learn how to use these units to realize complex logic design.
HDL (Hardware DescripTI on Language), hardware description language. We can see from the name that HDL language is a "description" language, which is essentially different from C language. A correct understanding of the meaning of the description is very helpful for learning the HDL language. The HDL language only describes the hardware circuit in text. When we read HDL programs, we should be able to reflect a complete hardware circuit structure in our minds.
On the other hand, we have a clear concept of the circuit to be implemented before we write the HDL language. Therefore, HDL language is just a tool to describe the specific circuits in our minds. What plays with FPGA is not language but logic circuit design. Don't worry about whether I should learn VHDL or Verilog, which language is better to learn these issues. If you put the focus of learning FPGA on language learning and memorize some grammar by rote, it will naturally be the wrong point.
The language will become more and more proficient in daily use, and there is no need to spend a long time to learn. Of course, a good reference material can be easily inquired at any time will be very helpful.
After all, FPGA is just a bunch of digital logic combined to achieve specific functions. So the basic knowledge of digital circuits is fundamental. If you don’t even know the basic concepts of flip-flops, combinational circuits, sequential circuits, competition, glitches, etc., then playing with FPGAs can only be a fantasy. We must learn the basics of digital circuits well, and we must be familiar with basic digital circuits.
Lay these foundations firmly, and then develop in a deeper direction. When can the structure of the algorithm be extracted from the abstract algorithm, and then decomposed into specific modules and realized through hardware circuits, at this time, even if it has stepped from the rookie level to the veteran level.
This should be said to be the top priority. To learn FPGA, you must have hardware design ideas. In software programming, for example, if 5 multiplications can be realized in 1 second, what should we do if the system requires 50 multiplications in 1 second? We will optimize the code as much as possible to make the code more concise and efficient, or improve the system Frequency to make the system run faster. But we are not in this way of thinking in FPGA.
Implementing one multiplier in FPGA is not enough, then I will implement two and three to meet the system requirements; I can design the pipeline; the serial operation mode is not fast enough, I can convert serial to parallel first, and then do the processing in parallel .As long as the FPGA resources are sufficient, I can make full use of the resources to meet the system requirements. Because what I have in my hands is a bunch of hardware resources, what I want to do is to combine them into a useful circuit.
The standards for evaluating the quality of hardware description languages are completely different from those of other software programming languages. Therefore, we must abandon some inherent ideas of software programming and learn to use hardware to solve problems. Always remind yourself that what you are designing is a circuit, not lines of empty code. This is a difficult hurdle for many people who do software programming.
FPGA has been learning for a long time and still wondering whether to use if_else statement or case statement? Instead of seeing the circuits they specifically represent through these sentences. Only when the hardware design concept is established, it is possible to learn FPGA more deeply.
The author often answers the technical problems encountered by beginners in the FPGA technology forum and FPGA technology exchange QQ group. I find that many beginners learn FPGA with an impetuous mentality and are always eager for success.
In the process of learning FPGA design technology, although the enthusiasm for learning was very high at the beginning, there are very few who really persisted until "learning". In addition to the personal perseverance of the students, there is another important reason why there is no good learning tutorial. Guidance and lack of guidance on correct learning methods.
The threshold for learning FPGA is much higher than that of single-chip microcomputers. Coupled with the lack of manual series of tutorial materials and correct learning methods, this makes it more difficult for beginners to learn FPGA. Many beginners find it difficult to learn FPGA. I can't get started and I gradually lose my interest and confidence in learning FPGA.
This series of tutorials are mainly divided into the use of FPGA development tools, verilog language learning, FPGA underlying hardware interpretation, SDRAM read and write control, and digital signal processing;
Use of FPGA development tools: Examples explain the XILINX development tools Vivado and GOWIN development tools to explain the FPGA development process, and help engineers without FPGA development experience get started with FPGA development. Because to master FPGA technology, solid theoretical knowledge is far from enough. It is even more important to buy an FPGA development board and practice more hands-on practice.
Verilog language learning: Mainly let beginners master the hardware description language, combined with specific project examples, master verilog for digital system modeling of a variety of abstract design levels from the gate level to the switch level. Learning through this tutorial is mainly for beginners to master the verilog language.
Interpretation of FPGA low-level hardware: Combining comparative analysis of XILINX and GOWIN devices, let students grasp the characteristics, similarities and differences of actual FPGAs while understanding the underlying structure of the hardware.
SDRAM read-write control: The original factory example explains FPGA, masters read-write operations and write commands, etc. At the same time, instruct students to complete the proficient operation of SDRAM read-write control based on Gowin Semiconductor's "Little Bee" family.
Digital signal processing: discuss the basic concepts and applications of digital signal processing in a profound and simple way with practice. Including representation, fixed-point, cut-off and other methods.
Getting started with FPGA is simple and difficult to master. If you want to get started, buy a development board and follow the routines. In fact, only after a solid foundation can be achieved.
<< Previous: Xilinx-7 Series FPGA high-speed transceiver use learning
1
2
3
4
5
6
7
8
9
10
Comparison of the latest released FPGAs from Xilinx, Intel, and Lattice
CPLD XA9500XL Family 800 Gates 36 Macro Cells 0.35um Technology 3.3V Automotive 44-Pin VQFP
CPLD XA9500XL Family 1.6K Gates 72 Macro Cells 64.5MHz 0.35um Technology 3.3V Automotive 44-Pin VQFP
FPGA Virtex-4 FX Family 19224 Cells 90nm (CMOS) Technology 1.2V
FPGA Virtex-4 FX Family 19224 Cells 90nm Technology 1.2V 672-Pin FCBGA
FPGA Virtex-4 FX Family 41904 Cells 90nm Technology 1.2V 672-Pin FCBGA
Support