[Switch] Is FPGA's "programmable" confusing to you?

Source: Internet
Author: User

Any hardware engineer is familiar with FPGA, just like C language is a required course for software engineers. As long as it is an electronic-related student, you must learn the programmable logic course. The full name of FPGA is field programmable gate array, a field programmable gate array, which is a product of further development on the basis of PAL, gal, EPLD and other programmable devices.


From the appearance, programmable can really describe the characteristics of FPGA, but it also makes many beginners take a lot of detours. When it comes to programming, we can't help but think of coding, because the idea of software programming is already deep-rooted in engineers. Therefore, many beginners will ask the same question: Which of the two hardware programming languages is required? Even if it is clear which design language you want to learn, it will jump into the vast syntax and go astray. Some beginners write a lot of code and run n tests on the demo board. However, they still don't understand FPGA or even the difference between FPGA and SCM. Why? In fact, one reason is that the word "programmable" is confusing. That is to say, the essence of FPGA is not clear. Therefore, there is no way to learn FPGA. It is a waste of time, but it still fails to achieve the effect.

FPGA is a semi-customized circuit in the field of dedicated Integrated Circuits (ASIC). It not only solves the shortcomings of the custom circuit, but also overcomes the shortcomings of the limited number of door circuits of the original programmable devices. Therefore, from the bottom layer, FPGA is still in the category of integrated circuits. In terms of the current technology, FPGA development projects are all designed based on digital circuits. Therefore, FPGA's "programmable" means implementing different digital circuit logics. This is essentially different from the so-called software programming! In the final analysis, FPGA design is circuit design. Therefore, it is very important for each FPGA engineer to have a circuit in his mind during design! So how can we effectively learn FPGA? In fact, it is very simple. As long as you start from the following seven points, step by step, and over time, you will be able to easily design FPGA.

1.
First, you must understand the structure and performance of FPGA. Different manufacturers and FPGA chips of different generations have different structures and performance, but they cannot be separated. At the beginning, we started from mastering several typical high-end chips, such as Altera's Stratix III and Xilinx's Virtex 5. Then, it's easy to learn about other chips. As for lattice and actel chips, it is not too late to know when using them, because it is more effective to learn mainstream things! Many textbooks on FPGA use several commonly used chips as an example to describe the basic structure and principles of FPGA. After reading it, Beginners always feel that it is too abstract and cloud-based. Therefore, in order to deeply understand FPGA, a solid digital circuit foundation must be established! In a digital circuit, the most basic is the logic and timing. Engineers must understand the relationship between FPGA's internal logical structure and the basic circuit structure of digital circuits. For example, the logic of any combination of four input signals can be achieved through the 4-input LUT provided by FPGA. If Xilinx chip is used, the shift register can be achieved through cascade of multiple triggers, or through LUT. Generally, beginners can design the correct logic, but it is easy to ignore timing. In the I/O port design, timing-related defects are critical to the product and affect the product reliability. Therefore, after understanding the structure, you must also pay attention to some important timing parameters of the chip, such as the establishment time of the I/O port clock, the retention time, and the delay time from the trigger to the output, and the highest frequency of the chip's internal clock. Only by fully understanding the structure and performance of the chips used can a reasonable system be designed to ensure the reliability and stability of FPGA design. The extensive documentation provided by FPGA vendors is a good learning material.

2.
Since FPGA is "programmable", it is naturally inseparable from programming languages. In fact, most early engineers used schematic input for logical design, which is closer to circuit design. This design method has high requirements on designers, and is not conducive to transplantation and maintenance. Therefore, VHDL and Tilde are becoming more and more popular. The two languages are superior to each other, except that the development of OpenGL is better than that of VHDL, and will be in line with the future system logic. They are all hardware description languages. Since it is called a hardware description language, it is naturally different from programming in the software world. Therefore, beginners cannot learn it as a software programming language. Otherwise, they will give it away. If you are only engaged in FPGA Logic Design and simple functional simulation, you only need to learn the simplest syntax. The syntax used to write verification scripts is not required. The language is just a tool. Especially in hardware design, the Code is not well written, and it is not important. The most important thing is the design idea. Remember, FPGA engineers are designing circuits, not programming "!

3.
Many engineers talk about the importance of algorithms and think that they must understand many algorithms. That's right. Good algorithms are like powerful tools for design. However, the research on algorithms and how to implement algorithms are two different concepts. It is the engineer's responsibility to study algorithms in mathematics and to implement algorithms. This does not mean that FPGA engineers do not need to study algorithms, but emphasize their responsibilities. Different algorithms have different requirements for our research and understanding of their principles. For example, 8B/10B encoding, as long as you know where to use it, is enough, ready-made IP core can be called directly. However, algorithms such as FEC coding and decoding can only be implemented after the basic principles are understood. For algorithms, FPGA engineers focus on "How to implement "!. In addition to algorithms, design methods commonly used in logical design must be understood, such as ping-pong operations, pipeline design, and time-sharing. There are also common logic modules, such as Asynchronous FIFO and state machines, which are actually the most basic things in digital circuits. However, for beginners, FPGA design may not be used correctly.

4. FPGA design must be supported by a good design process. After writing the code, it is necessary to spend a lot of time doing complete functional simulation and verification. However, some engineers do not pay much attention to simulation and verification, but can't wait to debug the board. After encountering a bug, you can fix it in the Code. If you are lucky enough, the bug is resolved on the surface. But the real underlying reasons may not be found, leaving a hidden danger to the product. A good design process requires that most bugs be solved in the preliminary work. functional simulation and verification are very effective and important steps. In addition to simulation verification, integration and wiring must also be emphasized, which requires us to carefully view the compilation report and timing report, because many timing problems can be reflected in the report. Sometimes, when some engineers encounter timing problems, they only need to reverse the clock to adjust the phase relationship between the data and the clock, or modify the integrated and wiring parameters, they still cannot solve the problem. Especially in the design with high-speed clock, in most cases, we only need to modify the logic in the code to meet the timing requirements of the design. These problems can be solved only after careful analysis of the report. In addition, timing simulation is unnecessary for most synchronization logic designs. This step can be omitted completely.


5.
At present, the three major development directions of FPGA are SOC, high-speed I/O and DSP. In a limited period of time, it is necessary to select a field to focus on. Only with a clear goal can we make more investment. SOC design requires designers to have a better understanding of software programming, CPU principles, and even operating systems, because SOC is a system that combines hardware and software. High-speed I/o design requires designers to master a lot of basic knowledge of analog circuits and some common communication protocols, such as SDH, GBE, PCI-E and so on. The use of FPGA in the DSP field is a development direction that has emerged in recent years. FPGA, due to its inherent parallel characteristics, can implement a module with a high computational workload in DSP algorithms with high efficiency. It is very suitable for emerging applications that require increasingly high DSP performance, such as video and image processing, designers need to master common digital signal processing algorithms. These three directions are completely different. Do not swallow them! "Skill industry is dedicated", and it is difficult for senior engineers to achieve achievements in multiple directions. Of course, it would be better to have a deep research in one field and have a certain understanding of the other two fields.

6.
An excellent FPGA engineer must be "Professional and versatile ". The so-called "one major" is of course the professional depth in the field of FPGA design, while the "multi-energy" is to require engineers to understand and master other professional fields. For example, for designing a SoC system, the C language must be learned. Otherwise, the architecture of the On-chip system may be unreasonable. In addition, engineers who design high-speed I/O ports need to understand the principle design and PCB design of the circuit board. Only by understanding the concepts related to the analog circuit, such as pre-weighting, balancing, and impedance matching, can we be comfortable in the design and debugging.

7.
The last and most difficult point is the key to moving towards senior engineers. FPGA design requires a good system architecture solution and reasonable modularization. This helps FPGA debugging and maintenance, and facilitates joint development by many people. Especially when using large-scale FPGA, this is also the top-down design method. To divide a large and complex design into several small modules, the layers should be distinct and not flat, which requires the designers to have a comprehensive and profound understanding of the design. A messy design is disastrous for later maintenance, especially for the successor who wants to modify a logic. From this point of view, you can find answers to all questions for beginners. What does FPGA learn? It is the design of the learning system-level circuit. Therefore, the development direction of FPGA engineers is System Engineers.

If you have a deep understanding of the above seven points, you will be able to see the essence of FPGA. The rapid changes in the market require that electronic products be highly sensitive to the market. The time from product design to market launch is getting shorter and shorter, and FPGA is indispensable in the market. In addition, FPGA also plays an indispensable role in the face of cost down. In today's era, FPGA has been widely used in communication, data processing, networks, instruments, industrial control, military, aerospace, and other fields. With the further reduction of power consumption and cost, FPGA will also enter more application fields. We believe that FPGA engineers will certainly have a broader display space.

[Switch] Is FPGA's "programmable" confusing to you?

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.