7754 views|22 replies

165

Posts

0

Resources
The OP
 

Recommended reading: How to learn FPGA [Copy link]

 
Hello everyone. It's time for daily learning again. Recently, many people have asked me how to learn FPGA, so let's talk about it today. 1. To get started, you must first master HDL (HDL=Verilog+VHDL). The first sentence is: If you haven't learned digital electronics yet, learn digital electronics first. Then you can choose Verilog or VHDL. If you have a basic knowledge of C language, it is recommended to choose VHDL. Because Verilog is too similar to C, it is easy to confuse. In the end, you will find that you spend a lot of time distinguishing between the two languages instead of learning how to use it. Of course, if you can turn your mind around, you can also choose Verilog, after all, Verilog is more used in China. Next, first find an example to copy the code. The significance of copying the code is to be familiar with the grammatical rules and compilers (the compiler here is the silicon compiler, also called the synthesizer. Commonly used compilers are: Quartus, ISE, Vivado, Design Compiler, Synopsys's VCS, Iverilog, Lattice's Diamond, Microsemi/Actel's Libero, Synplify pro), and then imitate and write, and finally you can write it without reading the book. After compiling the code, open the RTL diagram and see what kind of circuit is synthesized. HDL is a hardware description language, which highlights the hardware feature. Therefore, you should think about HDL with digital electronics thinking, rather than using C language or other high-level languages. If you don’t understand this sentence, you can read "What is Hardware and What is Software". At this stage, the recommended textbooks are "Verilog Legend", "Verilog HDL Advanced Digital Design" or "VHDL for Logic Synthesis". You can enter the next stage if you can write a three-stage state machine without reading the book. In addition, you must prepare the official documents of Verilog or VHDL, "verilog_IEEE Official Standard Manual-2005_IEEE_P1364", "IEEE Standard VHDL Language_2008", so that you can check it when you encounter some grammar problems. 2. Independently complete the design of small and medium-scale digital circuits. Now, you can design some digital circuits, such as traffic lights, electronic pianos, DDS, etc. The recommended textbook is Xia Lao's "Verilog Digital System Design Tutorial" (3rd edition). At this stage, what you need to do is: given an indicator requirement or timing diagram, you can use HDL to design a circuit to implement it. Here you need a development board, you can choose Altera's cyclone IV series, or Xilinx's Spantan 6. Don't buy a development board before you master HDL, because it's useless even if you buy it. Here you don't need to download the code every time the compilation passes. We use modelsim simulation (there are also simulation tools such as QuestaSim, NC verilog, Diamond's Active-HDL, VCS, Debussy/Verdi, etc.). If the simulation fails, then there is no need to download it, it will definitely not work. Here you just need to master a simple testbench. The recommended textbook is "WRITING TESTBENCHES Functional Verification of HDL Models". 3. Master the design methods and design principles. You may find that although the circuit you synthesized is correct, it has many warnings. At this time, you have to learn the synchronization design principles, optimize the circuit, whether it is speed priority or area priority, how to design the clock tree, how to synchronize two different frequency clocks, etc. The recommended textbooks are "FPGA Authoritative Guide", "IP Core Journal - Digital Logic Design Ideas", and "Altera FPGA/CPLD Design" Second Edition Basic and Advanced. Learn to speed up the compilation speed (incremental compilation, LogicLock), static timing analysis (timequest), and embedded logic analyzer (signaltap) to pass the level. If you don't understand something, you can skip it temporarily, because this part still requires sufficient practice to have a deeper understanding. Fourth, learn to improve development efficiency. Because the editor functions of Quartus and ISE are too weak, it affects development efficiency. Therefore, it is recommended to use the code snippet function in the Sublime text editor to reduce repetitive labor. Modelsim is also a commonly used simulation tool. Learn TCL/TK to write DO files suitable for yourself, so that simulation becomes automated. The recommended textbook is "TCL/TK Entry Classic". You may back up the code manually, but professionals use version controllers, so in order to improve work efficiency, you must master GIT. The file comparator Beyond Compare is also a commonly used tool. In addition, you can also use System Verilog to replace testbench, which will be more efficient. If you are doing IC verification, you must master System Verilog and verification methodology (UVM). The recommended textbooks are "Writing Testbenches using SystemVerilog", "The UVM Primer", and "System Verilog1800-2012 Syntax Manual". After mastering TCL/TK, you can learn virtual Jtag (ISE also has similar tools) to make your own debugging tools. In addition, if you have time, it is best to learn python. Scripts mean once and for all. 5. Strengthen the theoretical foundation. At this time, you can already use FPGA, but there are still many things you can't do (for example, FIR filters, PID algorithms, OFDM, etc.) because you haven't learned the theory well. I will roughly divide it into several directions for your reference, and the following are the theoretical courses to be mastered. 1. Signal processing-signals and systems, digital signal processing, digital image processing, modern digital signal processing, blind signal processing, adaptive filter principles, radar signal processing 2. Interface applications-such as: UART, SPI, IIC, USB, CAN, PCIE, Rapid IO, DDR, TCP/IP, SPI4.2 (10G Ethernet interface), SATA, optical fiber, DisplayPort 3. Wireless communication - signal and system, digital signal processing, communication principle, mobile communication foundation, random process, information theory and coding 4. CPU design - computer composition principle, single chip microcomputer, computer architecture, compilation principle 5. Instrumentation - analog electronic technology, high frequency electronic circuit, electronic measurement technology, intelligent instrument principle and application 6. Control system - automatic control principle, modern control theory, process control engineering, fuzzy controller theory and application 7. Compression, coding, encryption - number theory, abstract algebra, modern coding technology, information theory and coding, introduction to data compression, applied cryptography, audio information processing technology, digital video coding technology principle Now you find that FPGA involves so much knowledge. You can choose a direction of interest, but it is very likely that you will use the knowledge of several directions in your work, so the more theory you learn, the better. If you want to go to the next level, mathematics and English are inevitable. 6. Learn to use MATLAB simulation. When designing FPGA algorithms, MATLAB will be used more or less, such as CRC coefficient matrix, digital filter coefficients, various tables and text processing. In addition, MATLAB can also be used to debug HDL (by comparing the calculation results of MATLAB with those calculated by HDL step by step, you can know where the problem is). The recommended textbooks are "MATLAB Collection" and Du Yong's "MATLAB and FPGA Implementation of Digital Filters". 7. Sufficient practice. At this time, you have read the chip manual at least several times (available on the official website), and then you can do a certain amount of practice in your own direction (during this period, you should maintain a good code style, increase the readability of component instantiation statements, draw flow charts/timing diagrams, and develop the habit of writing documents). For example: communication can do modulation and demodulation algorithms, instrumentation can do bus analyzers, etc. However, these algorithms are only given formulas and block diagrams in the book, which are very different from the actual ones. You may even feel that the things in the book are very superficial. Then, you can find some relevant information on CNKI, Baidu Library, EETOP Forum, opencores, ChinaAET, Q Group Sharing, and blogs (friends outside the school can buy a CNKI account on Taobao). In fact, when you reach this stage, you have reached a professional level. If you have time, learn more about cutting-edge technologies, which will help your career planning. At work, you may need to pay attention to many protocols and industry standards. The protocols can be found on EETOP, and the standards (such as national standards GB and GB/T, international standards ISO) are recommended on "Standards Network" and "Standard Sharing Network". 8. Image processing. (This part is only for friends who want to learn image processing, and it is also a route from shallow to deep) 1. Photoshop. Spend one or two weeks learning PS, have a general understanding of image processing, know the basic concepts such as various image formats, histograms, hue, channels, filters, splicing, and be able to use it. This part is zero-based, the purpose is to let everyone have a perceptual understanding of image processing, rather than deriving various formulas right away. Recommend "Photoshop CS6 Complete Self-study Tutorial". 2. Image processing based on MATLAB or OpenCV. Those with C/C++ foundation can learn OpenCV, otherwise, it is recommended to learn MATLAB. At this stage, you only need to learn to call functions simply, and you don't need to delve into the details of the implementation for the time being. Recommend "Digital Image Processing Matlab Edition" and "Learning OpenCV". 3. Basic theory of image processing. The theory of this part requires the foundation of advanced mathematics, complex variables, linear algebra, signals and systems, digital signal processing, etc. If the foundation is not good, it is recommended to make up for the foundation first. You can also put aside the theories that you don’t understand for the time being. Maybe you will naturally open your mind after learning them later. Recommended "Digital Image Processing". 4. Image processing based on FPGA. Apply the theories learned before to FPGA. If you have the level of the previous seventh stage at this time, you will easily complete the image algorithm design independently (image processing is inseparable from the interface, which is mentioned in the fifth stage above). Recommended "Design of Embedded Image Processing System Based on FPGA" and "Principles and Applications of Digital Image Processing Based on FPGA". 5. Further study of mathematics. To go to a higher level in algorithms, more mathematics is necessary, so it is recommended to learn real analysis, generalized analysis, wavelet analysis, etc. The following two stages are introduced to friends who are interested. 9. The end of digital electronics is analog electronics. Now the things inside FPGA are not difficult for you, but once the signal leaves FPGA, you can't control it. At this time, you must learn analog electronics well. For example: circuit analysis, analog electronic technology, high-frequency electronic circuits, PCB design, EMC, SI, PI, etc. If you can design an FPGA development board with two DDR3 chips, you have passed the level. For specific learning routes, please refer to "How to Learn Hardware Design - Theory" and "How to Learn Hardware Design - Practice" in this blog. 10. Learning is endless. If you can reach this level, it means that you are already very good, but there are still many things to learn, because FPGA often interacts with CPU, which means that you have to communicate with software engineers frequently, so you also have to understand some software knowledge. For example, ARM (Xilinx's ZYNQ and Altera's SOC will use ARM's hard core, please refer to "How to Learn Embedded Software" in this blog), DSP, Linux, Android, and host computer (QT, C#, JAVA) can all be learned. Anyway, learning is endless. 11. Other questions. a. Why is it not recommended to learn soft cores such as NIOS II and MicroBlaze? 1. The price-performance ratio is not high. The performance of a general soft core is about the same as that of Cortex M3 or M4. It is not cost-effective to use something as expensive as FPGA to make a CPU with average performance. It is better to add another M3. 2. Adding a soft core may affect the functions of other logics. This is when resources are not very sufficient, and adding a soft core makes layout and routing quite difficult. 3. The soft core is not open source, and it is not easy to debug when a bug occurs. 4. It is rarely used in engineering and is very likely to be useless. b. Why is it not recommended to learn ZYNQ or SOC from scratch? 1. It is easy to make people feel like a follower. The follower mentality refers to a person who conceals and makes up for his or her own shortcomings in this area by exaggerating the excellence of people who are close to him or her, so as to gain psychological balance. You are learning something very powerful, and then you feel that you are very powerful, but this is just an illusion. 2. You should learn as simple things as possible when you are getting started, either concentrate on learning ARM or concentrate on learning FPGA. This will make it easier to have a sense of accomplishment and enhance confidence. 3. The application fields of ZYNQ and SOC are not wide, and many people have never heard of such things, which leads to disadvantages in job hunting. 4. The compilation time of development tools is long, which wastes a lot of time. 5. Most of the work is only responsible for one aspect, that is to say, the other side is likely to be useless. c. Why do we still need to write HDL when there are so many IP cores? 1. Those who ask this kind of question are generally students. They have not made products and have not encountered engineering problems. 2. IP cores are not omnipotent and cannot meet all needs. 3. Try to use closed-source IP cores as little as possible. Once a problem occurs, this black box is likely to make the product difficult to produce. 4. A deep understanding of the bottom level can better use the higher level. This rule can be applied to all programming languages. Let's talk about this today, everyone, keep going. This content is original by EEWORLD forum netizen 大辉哥0614. If you need to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the sourceThis is the end of today's chat, everyone, keep up the good work. This content was originally created by EEWORLD forum user 大辉哥0614. If you want to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the sourceThis is the end of today's chat, everyone, keep up the good work. This content was originally created by EEWORLD forum user 大辉哥0614. If you want to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the source3. Basic theory of image processing. This part of the theory requires the foundation of advanced mathematics, complex variables, linear algebra, signals and systems, digital signal processing, etc. If the foundation is not good, it is recommended to make up for the foundation first. The theories that you don’t understand can be put aside for the time being, and perhaps you will naturally open your mind after learning them later. "Digital Image Processing" is recommended. 4. Image processing based on FPGA. Apply the theories learned previously to FPGA. If you have the level of the previous seventh stage at this time, you will easily complete the image algorithm design independently (image processing is inseparable from the interface, which is mentioned in the fifth stage above). "Design of Embedded Image Processing System Based on FPGA" and "Principle and Application of Digital Image Processing Based on FPGA" are recommended. 5. Further study of mathematics. To go to a higher level in algorithms, more mathematics is necessary, so it is recommended to learn real analysis, generalized analysis, wavelet analysis, etc. The following two stages are introduced to friends who are interested. 9. The end of digital electronics is analog electronics. Now the things inside FPGA are not difficult for you, but once the signal leaves FPGA, you can't control it. At this time, you must learn analog electronics well. For example: circuit analysis, analog electronic technology, high-frequency electronic circuits, PCB design, EMC, SI, PI, etc. If you can design an FPGA development board with two DDR3 chips, you have passed the level. For specific learning routes, please refer to "How to Learn Hardware Design - Theory" and "How to Learn Hardware Design - Practice" in this blog. 10. Learning is endless. If you can reach this level, it means that you are already very good, but there are still many things to learn, because FPGA often interacts with CPU, which means that you have to communicate with software engineers frequently, so you also have to understand some software knowledge. For example, ARM (Xilinx's ZYNQ and Altera's SOC will use ARM's hard core, please refer to "How to Learn Embedded Software" in this blog), DSP, Linux, Android, and host computer (QT, C#, JAVA) can all be learned. Anyway, learning is endless. 11. Other questions. a. Why is it not recommended to learn soft cores such as NIOS II and MicroBlaze? 1. The price-performance ratio is not high. The performance of a general soft core is about the same as that of Cortex M3 or M4. It is not cost-effective to use something as expensive as FPGA to make a CPU with average performance. It is better to add another M3. 2. Adding a soft core may affect the functions of other logics. This is when resources are not very sufficient, and adding a soft core makes layout and routing quite difficult. 3. The soft core is not open source, and it is not easy to debug when a bug occurs. 4. It is rarely used in engineering and is very likely to be useless. b. Why is it not recommended to learn ZYNQ or SOC from scratch? 1. It is easy to make people feel like a follower. The follower mentality refers to a person who conceals and makes up for his or her own shortcomings in this area by exaggerating the excellence of people who are close to him or her, so as to gain psychological balance. You are learning something very powerful, and then you feel that you are very powerful, but this is just an illusion. 2. You should learn as simple things as possible when you are getting started, either concentrate on learning ARM or concentrate on learning FPGA. This will make it easier to have a sense of accomplishment and enhance confidence. 3. The application fields of ZYNQ and SOC are not wide, and many people have never heard of such things, which leads to disadvantages in job hunting. 4. The compilation time of development tools is long, which wastes a lot of time. 5. Most of the work is only responsible for one aspect, that is to say, the other side is likely to be useless. c. Why do we still need to write HDL when there are so many IP cores? 1. Those who ask this kind of question are generally students. They have not made products and have not encountered engineering problems. 2. IP cores are not omnipotent and cannot meet all needs. 3. Try to use closed-source IP cores as little as possible. Once a problem occurs, this black box is likely to make the product difficult to produce. 4. A deep understanding of the bottom level can better use the higher level. This rule can be applied to all programming languages. Let's talk about this today, everyone, keep going. This content is original by EEWORLD forum netizen 大辉哥0614. If you need to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the source3. Basic theory of image processing. This part of the theory requires the foundation of advanced mathematics, complex variables, linear algebra, signals and systems, digital signal processing, etc. If the foundation is not good, it is recommended to make up for the foundation first. The theories that you don’t understand can be put aside for the time being, and perhaps you will naturally open your mind after learning them later. "Digital Image Processing" is recommended. 4. Image processing based on FPGA. Apply the theories learned previously to FPGA. If you have the level of the previous seventh stage at this time, you will easily complete the image algorithm design independently (image processing is inseparable from the interface, which is mentioned in the fifth stage above). "Design of Embedded Image Processing System Based on FPGA" and "Principle and Application of Digital Image Processing Based on FPGA" are recommended. 5. Further study of mathematics. To go to a higher level in algorithms, more mathematics is necessary, so it is recommended to learn real analysis, generalized analysis, wavelet analysis, etc. The following two stages are introduced to friends who are interested. 9. The end of digital electronics is analog electronics. Now the things inside FPGA are not difficult for you, but once the signal leaves FPGA, you can't control it. At this time, you must learn analog electronics well. For example: circuit analysis, analog electronic technology, high-frequency electronic circuits, PCB design, EMC, SI, PI, etc. If you can design an FPGA development board with two DDR3 chips, you have passed the level. For specific learning routes, please refer to "How to Learn Hardware Design - Theory" and "How to Learn Hardware Design - Practice" in this blog. 10. Learning is endless. If you can reach this level, it means that you are already very good, but there are still many things to learn, because FPGA often interacts with CPU, which means that you have to communicate with software engineers frequently, so you also have to understand some software knowledge. For example, ARM (Xilinx's ZYNQ and Altera's SOC will use ARM's hard core, please refer to "How to Learn Embedded Software" in this blog), DSP, Linux, Android, and host computer (QT, C#, JAVA) can all be learned. Anyway, learning is endless. 11. Other questions. a. Why is it not recommended to learn soft cores such as NIOS II and MicroBlaze? 1. The price-performance ratio is not high. The performance of a general soft core is about the same as that of Cortex M3 or M4. It is not cost-effective to use something as expensive as FPGA to make a CPU with average performance. It is better to add another M3. 2. Adding a soft core may affect the functions of other logics. This is when resources are not very sufficient, and adding a soft core makes layout and routing quite difficult. 3. The soft core is not open source, and it is not easy to debug when a bug occurs. 4. It is rarely used in engineering and is very likely to be useless. b. Why is it not recommended to learn ZYNQ or SOC from scratch? 1. It is easy to make people feel like a follower. The follower mentality refers to a person who conceals and makes up for his or her own shortcomings in this area by exaggerating the excellence of people who are close to him or her, so as to gain psychological balance. You are learning something very powerful, and then you feel that you are very powerful, but this is just an illusion. 2. You should learn as simple things as possible when you are getting started, either concentrate on learning ARM or concentrate on learning FPGA. This will make it easier to have a sense of accomplishment and enhance confidence. 3. The application fields of ZYNQ and SOC are not wide, and many people have never heard of such things, which leads to disadvantages in job hunting. 4. The compilation time of development tools is long, which wastes a lot of time. 5. Most of the work is only responsible for one aspect, that is to say, the other side is likely to be useless. c. Why do we still need to write HDL when there are so many IP cores? 1. Those who ask this kind of question are generally students. They have not made products and have not encountered engineering problems. 2. IP cores are not omnipotent and cannot meet all needs. 3. Try to use closed-source IP cores as little as possible. Once a problem occurs, this black box is likely to make the product difficult to produce. 4. A deep understanding of the bottom level can better use the higher level. This rule can be applied to all programming languages. Let's talk about this today, everyone, keep going. This content is original by EEWORLD forum netizen 大辉哥0614. If you need to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the source3. Use closed-source IP cores as little as possible. Once a problem occurs, this black box may cause the product to fail. 4. A deep understanding of the lower level will allow you to better use the higher level. This rule can be applied to all programming languages. That's all for today, everyone. This content was originally created by EEWORLD forum user 大辉哥0614. If you need to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the source3. Use closed-source IP cores as little as possible. Once a problem occurs, this black box may cause the product to fail. 4. A deep understanding of the lower level will allow you to better use the higher level. This rule can be applied to all programming languages. That's all for today, everyone. This content was originally created by EEWORLD forum user 大辉哥0614. If you need to reprint or use it for commercial purposes, you must obtain the author's consent and indicate the source

This post is from EE_FPGA Learning Park

Latest reply

I studied it for a while and gave up.   Details Published on 2019-9-16 14:21
Personal signature想学FGPA,至芯科技 昭哥带你学,联系方式:15201114008
 

1903

Posts

0

Resources
2
 
Learned
This post is from EE_FPGA Learning Park
 
 

5979

Posts

8

Resources
3
 
Good experience, there is a lot of content, it can be scary. Study hard and practice more. If you have questions, ask more. I think you can get the hang of it slowly.
This post is from EE_FPGA Learning Park
Personal signature生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

13

Posts

0

Resources
4
 
After reading it, there are too many things to learn, so I'd better give up!
This post is from EE_FPGA Learning Park
 
 
 

3

Posts

0

Resources
5
 
Thanks for sharing!
This post is from EE_FPGA Learning Park
 
 
 

3

Posts

0

Resources
6
 
Thanks for sharing
This post is from EE_FPGA Learning Park
 
 
 

1

Posts

0

Resources
7
 
How about FPGA as a postgraduate student?
This post is from EE_FPGA Learning Park
 
 
 

1

Posts

0

Resources
8
 
After learning analog electronics, I came back to learn FPGA~~~
This post is from EE_FPGA Learning Park
 
 
 

2

Posts

0

Resources
9
 
Learned
This post is from EE_FPGA Learning Park
 
 
 

2

Posts

0

Resources
10
 
Learned: loveliness:
This post is from EE_FPGA Learning Park
 
 
 

2

Posts

0

Resources
11
 
I have a wide range of knowledge. Thanks for sharing. It's exactly what I need.
This post is from EE_FPGA Learning Park
 
 
 

122

Posts

0

Resources
12
 
This post is from EE_FPGA Learning Park
 
 
 

19

Posts

0

Resources
13
 
Study~ Study~
This post is from EE_FPGA Learning Park
 
 
 

83

Posts

0

Resources
14
 
This makes the newbies despair.
This post is from EE_FPGA Learning Park
 
 
 

1

Posts

0

Resources
15
 
good
This post is from EE_FPGA Learning Park
 
 
 

23

Posts

2

Resources
16
 
I'm so tired
This post is from EE_FPGA Learning Park
 
 
 

11

Posts

0

Resources
17
 
It looks so complicated, it's hard to get started
This post is from EE_FPGA Learning Park
 
 
 

869

Posts

0

Resources
18
 
I have learned a lot. The OP is awesome. I support the OP.
This post is from EE_FPGA Learning Park
 
 
 

83

Posts

0

Resources
19
 
Sweep a large area with a stick
This post is from EE_FPGA Learning Park
 
 
 

122

Posts

0

Resources
20
 
Top wave
This post is from EE_FPGA Learning Park
 
 
 

Guess Your Favourite
Find a datasheet?

EEWorld Datasheet Technical Support

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号
快速回复 返回顶部 Return list