Digital Design Learning Path

This is the best article I have read about the learning route of learning IC, thank you seniors. The purpose of reprinting here is to record your own learning! ! !

Original link: https://www.elecfans.com/d/1917862.html

1. To get started, you must first master HDL (HDL=verilog+VHDL).

The first sentence is: If you haven't learned mathematics, learn mathematics first . Then you can choose verilog or VHDL. If you have a C language foundation, it is recommended to choose VHDL.

Because verilog is too much like C, it is easy to confuse, and in the end you will find that you spend a lot of time distinguishing the two languages ​​instead of learning how to use it.

Of course, if you can turn your thinking around, you can also choose verilog. After all, verilog is used more in China.

Next, first find this example to copy the code . The significance of copying code is to be familiar with grammar rules and compilers (also known as synthesizers) . Commonly used integrated development environments include: Intel's Quartus, Xilinx's ISE and Vivado, Design Compiler, Synopsys' VCS, iverilog under Linux, and Lattice's Diamond , Microchip's Libero, Synplify pro, and then imitate and write, and finally write it without reading a book. After compiling the code, open the RTL diagram to see what kind of circuit is synthesized.

HDL is a hardware description language, which highlights the characteristics of hardware, so you should use digital thinking to think about HDL instead of C language or other high-level languages. If you can't understand this sentence, you can read "What is hardware and what is software". At this stage, the recommended textbook is "Verilog HDL Advanced Digital Design" or "VHDL for Logic Synthesis".

If you can write a three-stage state machine without reading a book, you can enter the next stage.

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 them when you encounter some grammar problems.

Data preparation:

  • 0. Digital +verilog basics
  • 1. Code example
  • 2. "What is hardware and what is software"
  • 3. "Verilog HDL Advanced Digital Design"
  • 4. "verilog_IEEE Official Standard Manual-2005_IEEE_P1364"
  • 5、《IEEE Standard VHDL Language_2008》

2. Independently complete small and medium-scale digital circuit design.

Now, you can design some digital circuits, like traffic lights, keyboards, DDS, etc.,

The recommended teaching material is "Verilog HDL Application Programming Intensive Lecture".

At this stage, what you have to do is: give you an index requirement or a timing diagram, and you can use HDL to design a circuit to achieve 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 have mastered HDL, because it is useless if you buy it back.

Here you don’t need to download the code every time the compilation is passed. Let’s use modelsim simulation (in addition to QuestaSim, NC verilog, Diamond’s Active-HDL, VCS, Debussy/Verdi and other simulation tools). If the simulation fails, then you don’t need to download it. Yes, definitely not.

It is enough to master the simple testbench here . The recommended textbook is "WRITING TESTBENCHES Functional Verification of HDL Models".

Data preparation:

  • 1. "Verilog HDL Application Design Examples Intensive Lecture"
  • 2、《WRITING TESTBENCHES Functional Verification of HDL Models》

3. Master the design methods and design principles.

You may find that your synthesized circuit, while correct, has many caveats. At this time, you have to learn

  • Synchronous design principles , optimized circuits , 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" and "Altera FPGA/CPLD Design" second edition of the basic and advanced chapters.

Learn to speed up compilation (incremental compilation, LogicLock) , static timing analysis (timequest) , **embedded logic analyzer (signaltap)** even if you pass the level. If there is something you don't understand, you can skip it temporarily, because this part still needs enough practice to have a deeper understanding.

  • The Definitive Guide to FPGAs
  • "Altera FPGA/CPLD Design"

Fourth, learn to improve development efficiency.

Because the editor functions of Quartus and ISE are too weak, it affects the 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 your own DO files to make the simulation automatic. The recommended textbook is "TCL/TK Introductory Classic".

You may back up your code manually, but professionals use version controller Git, which can improve work efficiency.

The file comparer Beyond Compare is also a relatively commonly used tool, and Git also has a comparison function.

In addition, you can also use System Verilog instead of 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", "System Verilog1800-2012 Grammar Manual".

After mastering TCL/TK, you can learn virtual Jtag (ISE also has a similar tool) to make your own debugging tool. In addition, if you have time, it is best to learn a python script, which means once and for all.

Fifth, strengthen the theoretical basis.

At this time, you already know how to use FPGA, but there are still many things you can't do (for example, FIR filter, PID algorithm, OFDM, etc.), because you haven't learned the theory well. I roughly divide it into several directions for your reference, followed by the theoretical courses to be mastered.

  • 1. Signal processing - signal and system, digital signal processing, multi-sampling rate signal processing, digital image processing, modern digital signal processing, blind signal processing, adaptive filter principle, radar signal processing.

  • 2. Interface application - such as: UART, SPI, IIC, USB, CAN, PCIE, Rapid IO, DDR, TCP/IP, SPI4.2 (10G Ethernet interface), SATA, optical fiber, DisplayPort, HDMI.

  • 3. Wireless Communication—Signal and System, Digital Signal Processing, Communication Principle, Basics of Mobile Communication, Stochastic Process, Information Theory and Coding.

  • 4. CPU design - computer composition principle, single-chip microcomputer, computer architecture, compilation principle, RISC-V.

  • 5. Instrumentation - analog electronic technology, high-frequency electronic circuits, electronic measurement technology, principles and applications of intelligent instruments.

  • 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, H.265

Now you find that FPGA involves so much knowledge, you can choose a direction you are interested in, 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, math and English are inevitable.

Sixth, learn to use MATLAB simulation.

When designing FPGA algorithms, MATLAB will be used more or less, such as CRC coefficient matrix, FFT, digital filter coefficients, various tables and text processing, etc. In addition, MATLAB can also be used to debug HDL (by comparing the calculation results of MATLAB with the calculation results of HDL step by step, you can know where the problem is). The recommended textbooks are "MATLAB Collection" and Du Yong's "MATLAB and FPGA Realization of Digital Filters".

  • "MATLAB Collection"
  • "MATLAB and FPGA Realization of Digital Filter"

7. Sufficient practice.

At this time, you have read the chip manual at least a few times (available on the official website), and then you can do a certain amount of practice for your own direction.

  • Maintain a good code style during the period,
  • Increase the readability of component instantiation statements,
  • Draw a flowchart/sequence diagram,
  • Get into the habit of writing documentation.

for example:

  • The communication class can be used as a modulation and demodulation algorithm,
  • Instruments can be used as bus analyzers and so on.

However, these algorithms are just formulas and block diagrams in the book, which are far from the actual ones, and you may even feel that the things in the book are superficial. Then, you can find some relevant information on HowNet, Baidu Library, EETOP Forum, opencores, ChinaAET, SCI-HUB, Q group sharing, and blogs (friends outside the school can buy a HowNet account on Taobao).

In fact, when you reach this stage, you have reached the professional level, and you can learn more about cutting-edge technologies when you have time, which will help your career planning.

During work, you may need to pay attention to many protocols and industry standards. Protocols can be found on EETOP, and standards (such as: national standards GB and GB/T, international standards ISO) recommend "Standard Network" and "Standard Sharing Network" .

Eight, image processing. (This part is only written 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 to learn PS, have a general understanding of image processing, know the basic concepts of various image formats, histograms, hues, channels, filters, stitching, etc., and be able to use it. This part is 0 foundation, the purpose is to let everyone have a perceptual understanding of image processing, instead of deriving various formulas at the beginning. 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 simply call the function, 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. The basic theory of image processing. This part of the theory requires basics such as advanced numbers, complex variables, linear algebra, signals and systems, and digital signal processing. If the foundation is not good, it is recommended to supplement the basics first. You can put aside the theories that you don't understand for a while, and maybe you will be enlightened naturally after you learn it. "Digital Image Processing" is recommended.

  • 4. Image processing based on FPGA. Apply the theory learned above to FPGA, if you have the level of the seventh stage, you will easily complete the image algorithm design independently (image processing is inseparable from the interface, the fifth stage above ). If you don't have a development board, please refer to "Verilog reads bmp pictures". Recommended "FPGA-based embedded image processing system design", "FPGA-based digital image processing principles and applications".

  • 5. Further study mathematics. To advance to a higher level in the algorithm, more mathematics is bound to be required, so it is recommended to learn real analysis, general content analysis, wavelet analysis, etc. here.

The following two stages are introduced to interested friends.

Nine, the end of digital electricity is analog electricity.

Now the things inside the FPGA are beyond your control, but if the signal goes out of the FPGA, you have no control over it.

At this time, you must learn analog electronics well. for example:

  • circuit analysis,
  • analog electronics,
  • High Frequency Circuit,
  • PCB design,
  • EMC、
  • AND,
  • PI and so on,

If you can design an FPGA development board with two pieces of DDR3, you will pass the test.

Ten, there is no end to learning.

Being able to reach this level means that you are already very good, but there is still a lot to learn, because FPGA often needs to interact with CPU, that is to say, you have to communicate with software engineers frequently, so you also need to know 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,
  • The upper computer (QT, C#, JAVA) can be learned, anyway, there is no end to learning.

11. Other issues.

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 general soft-core performance is about the same as that of Cortex M3 or M4. It is very uneconomical in engineering to use something as expensive as FPGA to make a CPU with general performance. It's better to add another M3.

  • 2. Adding a soft core may affect other logic functions. This is when the resources are not very sufficient, coupled with the soft core, it 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 it is very likely that it will not be useful.

b. Why is it not recommended to learn ZYNQ or SOC with 0 basics?

  • 1. It is easy to make people feel sympathetic. Pyongering psychology means that a person covers up and makes up for his own shortcomings in this area by exaggerating the excellence of people who are close to him, so as to obtain psychological balance. I am learning something very powerful, and then feel that I am very powerful, but this is just an illusion.

  • 2. To get started, you should learn as simple as possible, either concentrate on ARM or FPGA. This makes it easier to have a sense of accomplishment and boost confidence.

  • 3. The application fields of ZYNQ and SOC are not wide, and many people have never heard of this kind of thing, which leads to disadvantages in job hunting.

  • 4. The compilation time of the development tool is long, which wastes a lot of time.

  • 5. Most of the work is only responsible for one aspect, which means that on the other hand, it is very likely that it will not be useful.

c. Why do you still need to write HDL when there are already so many IP cores?

  • 1. Those who ask this kind of question are usually students. They have never made products or encountered engineering problems.

  • 2. The IP core is not omnipotent and cannot meet all needs.

  • 3. Minimize the use of closed-source IP cores. Once something goes wrong, this kind of black box is likely to make the product difficult to produce.

  • 4. In-depth understanding of the bottom level can make better use of the higher level. This law can be applied to all programming languages.

おすすめ

転載: blog.csdn.net/weixin_45264425/article/details/130311644