Date: Sep 13, 2021
Click Count: 40
FPGA as a high-tech, due to its special structure, repeatable programming, short development cycle, more and more favored by the electronics enthusiasts, its application has gradually spread to all walks of life. Therefore, more and more students or engineers want to cross the door of FPGA to master this technology. Various development boards and training courses are available on the network, as if to tell you that if you don't know FPGA, you are out. So what basic knowledge must we have to play FPGA? How to learn FPGA it? Here we slowly come.
FPGA (Field-Programmable Gate Array), that is, the field-programmable gate array. See the two words programming code farmer smiled, is not programming, that is our strong point. And wait, this programming is not the other programming. It is important to distinguish between FPGA programming and software programming.
Software programming, the processor will translate the language into various control signals, to control the internal circuitry to complete an operation or operation. So how does FPGA programming work? Regardless of the differences between the Altera and Xlinix FPGAs, the basic unit is similar, consisting of a truth table and a D flip-flop. Changing the value of the truth table changes the logic function, and then any timing logic is implemented by combining it with the D flip-flop.
So our programming of FPGA is actually to modify these truth tables and connection relationships to make them form a special truth table to achieve a specific function. This is fundamentally different from software programming that runs a program step by step. To play with FPGAs, you must understand the internal workings of FPGAs and learn how to use these units to implement complex logic designs.
HDL (Hardware DescripTI on Language), hardware description language. By the name we can see that HDL is a "description" language, which is fundamentally different from C language. The HDL language is a textual description of the hardware circuit. When we read an HDL program, we should be able to reflect a complete hardware circuit structure in our minds.
On the other hand, we have a clear idea of the circuit to be implemented before we write the HDL language. So the HDL language is just a tool to describe the specific circuit in our mind, and it's not the language but the logic circuit design that makes the FPGAs work. Don't get stuck on whether I should learn VHDL or Verilog, which language is better to learn these problems. If the focus of learning FPGA is on learning the language and memorizing some syntax, it is naturally the wrong focus.
Language in daily use will become more and more proficient, do not need to spend a long dedicated time to learn. Of course, a good reference material that can be easily consulted at any time will be very helpful.
In the end, FPGA is a bunch of digital logic combined together to achieve a specific function. So digital circuit basics is fundamental. If you even flip-flops, combinational circuits, timing circuits, competition, burr and other basic concepts are still incomprehensible, then playing FPGA can only be a fool's dream fantasy. We must learn the basics of digital circuits well this course, the basic digital circuits are familiar with the heart.
These foundations to play a solid, and then to the deeper direction of development. When you can extract the structure of the algorithm from the abstract algorithm, and then decompose it into concrete modules and implement it through hardware circuits, then even from the rookie level into the old bird level.
This point should be said to be the most important. Learning FPGA, must have hardware design ideas. In software programming, for example, one second to achieve 5 times multiplication, the system requires 50 times a second multiplication how to do, we will optimize the code as much as possible, so that the code is more concise and efficient, or increase the system main frequency, so that the system runs faster. But this is not the way we think in FPGAs.
In the FPGA implementation of a multiplier is not enough, then I will achieve two implementation of three to meet the system requirements; I can pipeline design; serial operation is not fast enough, I can first serial and conversion, and then parallel processing ...... as long as the FPGA resources are enough, I can make full use of resources to meet the system requirements. Because in my hands is a bunch of hardware resources, I want to do is to combine them into a good circuit.
The criteria for evaluating how well a hardware description language is written are completely different from those for other software programming languages. Therefore, you must abandon some of the inherent ideas of software programming and learn to solve problems in a hardware way. Always remind yourself that you are designing a circuit, not a line of empty code. This is a very difficult hurdle for many people who do software programming.
FPGAs have been learning for a long time and are still struggling with whether it is better to use if_else statements or case statements. And can not see through the surface of these statements to the specific circuit they represent. Only when you have established the hardware design idea, you can learn FPGA more deeply.
I often answer technical problems encountered by beginners in the learning process in FPGA-related technical forums and FPGA technical exchange QQ groups, and I find that many beginners are impatient to learn FPGA, always eager to achieve.
In the process of learning FPGA design technology, although the enthusiasm of learning is very high at the beginning, but really persist until "learn" but few, in addition to the factors of students' personal perseverance, another important reason is the lack of good learning tutorials guidance and lack of correct learning method guidance.
The original learning threshold of FPGA is quite high compared to microcontroller, plus the lack of handy series of tutorial materials and correct learning methods, which adds more difficulties for beginners to learn FPGA, many beginners gradually lose interest and confidence in learning FPGA because they can not find a way to start.
This series of tutorials is mainly divided into the use of FPGA development tools, verilog language learning, FPGA underlying hardware interpretation, SDRAM read and write control, digital signal processing.
The use of FPGA development tools: examples of XILINX development tools Vivado and GOWIN development tools to explain the FPGA development process, to help engineers without FPGA development experience to start FPGA development. Because to master the technology of FPGA, solid theoretical knowledge is not enough, buy an FPGA development board, more hands-on practice is particularly important.
verilog language learning: mainly for beginners to master the hardware description language, combined with specific project examples, master verilog for a variety of abstract design levels from the gate level to the switch level of digital system modeling. Through this tutorial learning is mainly for beginners to master the verilog language.
FPGA underlying hardware interpretation: combined with XILINX and GOWIN and other device comparison analysis, so that students in understanding the underlying structure of the hardware to master the characteristics, similarities and differences of the actual FPGA.
SDRAM read and write control: original factory examples to explain the FPGA, master read and write operations and write commands, etc. At the same time, students will be guided to complete the skilled operation of SDRAM read/write control based on Gowan Semiconductor's "Bee" family.
Digital Signal Processing: In-depth discussion of the basic concepts of digital signal processing and their applications with practice. Including representation, fixed point, truncation and other methods.
FPGA is easy to start proficient difficult. To get started, buy a development board to follow the routines to go through, in fact, a good solid foundation behind to a smooth ride.