Some misunderstandings in FPGA learning

Source: Internet
Author: User

Reproduced from the network, the author is unknown.

I have many years of work on the FPGA study of QQ group administrators, a lot of new recruits for a long time are always repeating asked some very simple but let the novice puzzled questions. As administrators often to the novice to popularize the basic knowledge, but very unfortunate is a lot of rookie with a impetuous mentality to learn FPGA, always anxious. Coupled with a large number of domestic waste materials on the FPGA misleading, so many beginners have never been able to get started. Why do a large number of people think that FPGAs are difficult to learn? As the renowned FPGA provider Altera authorized Gold Trainer, the administrator is determined to open a detailed explanation of the novice think FPGA difficult to learn several reasons.

1, not familiar with the internal structure of the FPGA, do not understand the basic principles of programmable logic devices. Why can FPGAs be programmed? I'm afraid a lot of rookie don't know, they don't want to know. Because they think it's irrelevant. They subconsciously think that programmable, it must be like writing software. The idea of software programming is ingrained, and seeing Verilog or VHDL is like seeing a C language or other software programming language. One of the reading, the analysis of the strips. If these novices always refuse to understand why the FPGA is programmable, not to understand the internal structure of the FPGA, it would be impossible to learn the FPGA. Although EDA software is now very advanced, like writing software as Tiger can be integrated out of something, but perhaps only God knows what the EDA software finally integrated out of what. Maybe a light, running a horse is OK. This is why a lot of rookie learned N long after the reason is still a rookie. So why can FPGAs be "programmed"? First come to know what is called "Cheng". The revelation "Cheng" is just a bunch of 01 coding with a certain meaning. Programming, in fact, is to write these 01 encodings. But we now have a lot of development tools, usually not directly write these 01 encodings, but rather in the form of high-level language, and finally by the development tools to convert to this 01 encoding. For software programming, the processor will have a dedicated decoding circuit that translates these 01 codes into a variety of control signals, and then controls the internal circuitry to complete one operation or another. So the software is a one-piece read, because the operation of the software is done step-by-step. And the FPGA's programmable, the essence also relies on these 01 codes realizes its function change, but the difference is the FPGA can complete the different function, does not rely on like the software to translate 01 encoding to control an arithmetic circuit, the FPGA does not have these things. The FPGA's internal main three blocks: Programmable logic unit, programmable wiring and programmable IO module. What is a programmable logic unit? The basic structure of some kind of memory (SRAM, flash, etc.) made of 4 input or 6 input 1 output ground "truth table" plus a D trigger composition. Any one 4 input 1 output combinational logic circuit, there is a corresponding "truth table", the same if using such a memory made of 4 input 1 output "truth table", only need to modify its "truth table" internal value can be equivalent to any 4 input 1 output combination logic. What are these "truth table" internal values? That's the 01 code. What if I want to implement a sequential logic circuit? This is no D flip-flop, any timing logic can be converted to a combined logic +d trigger to complete. But this only achieves 4 input 1 output logic circuit, usually the size of the logic circuit that is quite large oh. What about that? This is the time to use a programmable connection. There's a lot of memory control over these connections.Link points, by overwriting the value of the corresponding memory, you can determine which lines are connected and which lines are disconnected. This allows the combination of many programmable logic units to form large logic circuits. The last is the programmable Io, which is actually the FPGA as a chip-level use must pay attention to. Any chip must have an input pin and an output pin. Programmable IO can optionally define a non-dedicated pin (the FPGA has a dedicated non-user-available test, download pin) for input or output, and the level standard for IO can be set. In a word, the FPGA is programmable because it can be made into a "truth table" through a special 01 code and combine these "truth tables" to achieve large-scale logical functions. Without understanding the internal structure of the FPGA, you cannot understand how the final code changes into the FPGA. It is not possible to gain insight into how the FPGA can be fully utilized. Now the FPGA, not only the front of the three block, there are many dedicated hardware functional units, how to use these units to achieve complex logic circuit design, from the novice to master the road must be overcome obstacles. And all of this, we must start with understanding the FPGA internal logic and its working principle.

  2, the wrong understanding of HDL language, how can not see the hardware structure. The full name of the HDL language is: Hardware Description Language, notice the word Description, not design. Why should foreigners use the word description instead of design? Because HDL is really not used to design hardware, it's only used to describe hardware. The description of the word accurately reflects the nature of the HDL language, which is just a textual representation of a known hardware circuit, and only describes the future of the circuit in the form of text. Before writing the language, the hardware circuit should have been designed. Language is simply the conversion of this design into a form of literal expression. But a lot of people do not understand, since the hardware has been designed out, directly take to the production department is over, why also to convert to text expression form and then through the EDA tool these cumbersome flow? In fact, this is a lot of beginners do not understand the design of the abstract level of the problem, any design including what clothing, machinery, advertising design has an abstract level of the problem. Take the advertising design, the original design may be a concept, design this concept is also an idea, from the end of the advertising is still very far. Hardware design also has different levels of abstraction, each level needs to be designed. The highest level of abstraction is the algorithm level, followed by the architecture level, the Register transport level, the gate level, the physical layout level. The advantage of using HDL is that we have designed a register transfer level of the circuit, then the HDL described later into the form of text, the remaining to a lower level of conversion can let EDA tools to do, which greatly reduces the workload. This is the concept of synthesis, that is, the description of the hardware unit at this level of abstraction can be understood by EDA tools and converted to the underlying gate-level circuit or other structure of the circuit. In FPGA design, this is described as an abstract level of opinion as HDL language, you can use the FPGA development software into the FPGA internal logic function Realization form described in question 1. HDL can also describe a higher level of abstraction such as an algorithmic or architectural level, but currently limited by the development of EDA software, EDA software can not understand such a high level of abstraction, so HDL describes such a level of abstraction can not be converted to a lower level of abstraction, which is called non-synthesis. So in reading or writing HDL language, especially the synthesis of HDL, should not see the language itself, but to see the language behind the corresponding hardware circuit structure. If you see the HDL is always a line of code, then this person will never get rid of the rookie's fate. If one day the code is no longer a line of code but a piece of hardware module, then congratulations out of the rookie level, into the bird level of not so dish.

3, FPGA itself is not what, everything is outside the FPGA this is probably the most difficult to understand the novice FPGA place. Who is the FPGA for? Many schools are explained to students majoring in microelectronics or integrated circuit design, in fact, this is just a lot of schools are limited by the funds, not to sell professional integrated circuit design tools and use FPGA tools instead. In fact, the FPGA is for the design of electronic systems engineers use. These engineers usually use the existing chips together to complete an electronic device, such as base station, set-top box, video surveillance equipment. When the existing chip can not meet the requirements of the system, it is necessary to use FPGA to quickly define a chip that can be used. Previously said, the FPGA can not be some "truth table", triggers, various connections and some hardware resources, electronic system engineers use FPGA design is nothing but to consider how to combine these resources to achieve a certain logical function, It doesn't have to be like an IC design engineer to always be concerned about whether the chip can be manufactured in the end. In essence, there is no difference between using an existing chipset to synthesize different electronic systems, just to focus on the underlying resources. To use the FPGA is still simple, because it is nothing more than those resources, in understanding the front two points and then make a test board, run the experiment, do something simple is possible. And really want to use the FPGA, that light understanding point FPGA knowledge is far from enough. Because ultimately, how to combine the resources within the FPGA and what functions are needed to meet the needs of the system, you need to know more and more extensive knowledge. At present, the application of FPGA is mainly three directions: the first direction, but also the traditional direction of communication equipment is mainly used for high-speed interface circuit design, this direction is mainly used FPGA processing high-speed interface protocol, and complete high-speed data transmission and exchange. Such applications usually require the use of FPGA with high-speed transceiver interface, but also require the designer to understand the high-speed interface circuit design and high-speed digital circuit board level design, with emc/emi design knowledge, as well as a good analog circuit foundation, need to solve the high-speed transmission process generated by the signal integrity problems. FPGA initially and to the current most widely used in the field of communication, on the one hand, communication needs high-speed communication protocol processing, on the other hand, the communication protocol is modified at any time, very unsuitable to make a special chip. This makes it the first choice for FPGAs that have the flexibility to change functionality. So far more than half of FPGA applications are also in the communications industry. The second direction, which can be referred to as the direction of digital signal processing or the direction of mathematical calculation, because in large part this direction has greatly exceeded the scope of signal processing. Early in 2006, for example, it was heard that the United States used FPGAs for financial data analysis, and later saw examples of using FPGAs for medical data analysis. In this direction, FPGA designers are required to have a certain degree of mathematical skills, to understand and improve the more complex mathematical algorithms, and the use of FPGA internalThe source enables it to become the actual operational circuit. In the field of wireless signal processing, channel codec and image signal processing in the field of communication, the research in other fields is being carried out, the reason why there is not a lot of practical reasons or because of the study of finance, learning medicine do not understand this thing. However, recently found that there are many electronic engineering, computer science and technology in Europe and the United States into the financial industry, the financial signal processing, I believe that with the increase in the number of people, FPGA in other areas of the mathematical computing function will be better, and I am also interested in doing some of these aspects of research. But the domestic study of finance, the study of medical science is not even the use of mathematics, it is needless to use the FPGA to help them to complete the math _ operation, the problem is only to discuss again. The third direction is the so-called sopc direction, in fact, in the strict sense that this is already in the scope of FPGA design, but the use of FPGA platform to build an embedded system of the underlying hardware environment, and then the designer is mainly in the above embedded software development. The design of the FPGA itself is quite small. However, if it involves the need to do special algorithm acceleration in the FPGA, actually need to use the second direction of knowledge, and if the need to design a dedicated interface circuit needs to use the first direction of knowledge. The current SOPC direction is far less than the first and second direction, the main reason is because the Sopc FPGA-based, or in the FPGA internal resources to implement a "soft" processor, or embedded in the FPGA inside a processor core. But most of the embedded design is software-centric, with the existing hardware development, most of the interface has been standardized, do not need such a large FPGA logic resources to design too complex interface. At present, it seems that sopc related development tools are still very imperfect, with arm as a representative of the various types of embedded processor development tools have been deeply rooted in, most of the arm-based SOC chip provides most standard interface, a large number of series of single-chip microcomputer/ Embedded processors provide the hardware acceleration circuitry required by the relevant industry, and there is really little to be done specifically for custom hardware applications. It is usually in some specialty industries that there is a very urgent need in this area. Even now Xilinx will arm's hard core into the FPGA, I believe that the current situation will not be greatly improved, do not forget a lot of the old 8-bit microcontroller is also embedded in the field of mixing, embedded mainly not by the hardware differences and more rely on software differences to reflect value. What I used to watch was the idea of Cypress's PSOC. Unlike the SOPC series, PSoC's thought history is embedded in the SOC chip to embed such a small piece of FPGA, which can actually meet the embedded micro-hardware interface differences, such as the use of a 4 USB, and the usual processor does not provide so much, You can use such an FPGA to provide multiple USB interfaces. and another application needs6 UART can also be done in the same way. For embedded design companies, they only need to stock a single chip, which can meet a variety of small variations in these designs. Its main differentiation is still done through software. But at present Cypress is too closed, if it uses arm as the processor core, with its complete tool chain. At the same time, open IP cooperation, so that a large number of third-party to provide it with IP design, in fact, is very promising. But at present Cypress the day is afraid not to be very good, PSoC's thought also does not know when can glow.     

4, the knowledge of digital logic is fundamental. No matter in which direction of FPGA, the support of digital logic knowledge is inseparable. The FPGA is a way of implementing digital logic. If even the most basic knowledge of digital logic is problematic, the desire to learn FPGA is just a castle in the ground. And this is precisely the problem that many novices are unwilling to face. Digital logic is the basic knowledge of any major in electrical and electronic engineering, and it is a course that must be learned. Many people just study, test a test, finished. If you can not know the digital logic knowledge in the heart, develop good design habits, learning FPGA to the end is still mirrors water in the moon, is always an empty. The above four is only my current summary of the Novice in the study of FPGA is the easiest place to run, FPGA learning in fact, like learning go, learn how to Lazi on the board is easy, become a master is even more difficult. To really be a Changhao Li like that, in addition to hard research, I'm afraid I really need a little talent.

Some misunderstandings in FPGA learning

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: 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.