The content is from Andrew Zhang, a senior FAE at Junlong Technology.
Organized by Chip Home.
1. Question: What do you think is the most important thing to learn before diving into FPGA?
Andrew: Typically, those of us working with FPGAs deal with digital circuits. To get started, one must first learn and master the very basics of digital circuits and HDL (Hardware Description Language). However, this is merely the prerequisite; it is far from sufficient. In my humble opinion, to enter the field, one should at least master a simulation and development debugging process for an FPGA; one should also understand some analog circuit knowledge and the testing methods for hardware parameters that are often required to measure, such as power ripple, clock jitter, and signal quality; one should at least be proficient in one schematic and layout design software to analyze and debug circuit modules on the circuit board, such as power, clock, memory, configuration, I/O, and high-speed transceiver modules; and one should also grasp a microcontroller development process, as projects often have some configuration control requirements that can be implemented using an external microcontroller or built-in ARM cores or other soft CPUs, which is simple and convenient. Given my limited knowledge, I won’t elaborate further on other aspects here.
Now, let me summarize the general process for beginners learning FPGA for your reference; experienced experts may skip this:
-
First, you need to have a development platform and prepare everything required; sharpening the axe does not delay the work of cutting wood.
For example, Altera’s Quartus II software, development boards, and configuration debugging tools like USB Blaster, as well as simulation software like ModelSim SE. The software can be downloaded online, and there are plenty of harmonious methods to obtain licenses for entry-level functions; development boards and USB Blasters can be borrowed or purchased, and for those with strong hands-on skills, it’s also possible to design one yourself. For beginners, it is recommended to find a development board that comes with detailed accompanying tutorials.
-
For beginners, following a structured learning approach is often the fastest method of learning.
Even if you follow along without fully understanding, at least you will become familiar with the development process and be able to get things running. When you first get your development board, it can be quite overwhelming. At this point, it is advisable to clarify the functions of the various modules on the schematic according to the accompanying tutorial and analyze the circuit principles of the FPGA’s surrounding circuits, including power, clock, reset, configuration, GPIO, and connectors. Then, according to the process introduced in the accompanying tutorial, get the accompanying test project running. At this stage, you should familiarize yourself with the processes involved in FPGA development, including RTL input, synthesis, pre-simulation, layout and routing, post-simulation, and configuration debugging. During the learning process, it is inevitable to encounter some unfamiliar ‘difficult problems’; do not lose heart, persistence is key. Of course, at this point, some friends may start to complain about lengthy or poorly written tutorials, or when they encounter English tutorials they find difficult to understand, they may begin to work in isolation, hitting walls every day, gradually losing interest and confidence. When the dust settles on your development board, how can you boast about your rich FPGA experience when job-hunting?
-
Once you are familiar with the development process.
Next, you can analyze or rewrite the code or modules from the original tutorial, targeting specific functional modules, and use some of the software’s built-in debugging components to help verify whether the results meet expectations, such as SignalTap II, etc. Regardless of whether it’s a factory single board or one made by FPGA enthusiasts, the accompanying examples will often include classic circuit implementation cases, such as basic frequency dividers, simple I2C communication, SRAM read/write control, and slightly more complex SDRAM read/write control, etc. Carefully analyze how others write code to achieve the observed timing, and at the same time, read the timing description chapters in the corresponding module manuals or internal component documentation for comparison and analysis. Look up debugging insights shared by others on blogs, papers, etc., until you understand and master them, and appropriately take notes to summarize, as the saying goes, frequent notes prevent forgetfulness, for reference to others or to your future self.
-
Relying solely on self-study can sometimes block your thoughts and cause brain freeze.
Therefore, joining some study groups or professional discussion circles is necessary; the benefits outweigh the drawbacks. For example, electronic enthusiast forums, FPGA industry QQ groups, sharing insights, asking questions, and discussing life. This process may also lead to misdirection; some friends may indulge too much in the joy of socializing and become addicted to the tide of irrelevant chatter. It is advisable to focus your energy on study and research during learning and work, and not to fall into the boring chatter of the masses. In addition to online communication, everyone can also participate in offline salon activities organized by communities like electronic enthusiasts, engaging in face-to-face discussions while possibly making good friends. When discussing problems with others, the goal is to solve them, and the process requires some skills. It is recommended to list the device model, software version, symptoms observed, simulation debugging waveforms, methods tried, and possible causes analyzed for the friends who can help you to quickly analyze the reasons and provide solutions. Helping others is a kindness, not an obligation. If no one can help you, don’t lose heart; keep thinking of other ways.
-
Once you have a bit of foundation, you can choose some projects to practice.
This not only enhances your FPGA development skills but also builds confidence, solidifies experience, and demonstrates value. Constantly fiddling with the development board can confine your thinking to the small ‘trap’ involved with it; in reality, the development board is merely a learning tool. No matter how familiar you are with the development board, it only means you are familiar with a few small modules on it. FPGAs are widely used, and related products are emerging endlessly, creating numerous job and market opportunities. If you only focus on theory without practice, it would truly be a waste of time and life.
2. Question: What are the requirements for working in FPGA development?
Andrew: Frankly speaking, this question is difficult to answer; the requirements vary greatly among different companies, products, project teams, and research personnel. However, we can discuss it. The relationship between the company and research is a two-way choice. Companies require products to have certain technical advantages and stability, capable of timely market release covering specific industries, while research needs the company to provide reasonable compensation and benefits according to the contract. In large companies, the division of labor is relatively clear; FPGA engineers need to cooperate with system engineers, algorithm engineers, software engineers, hardware engineers, and testing engineers to complete the functional design and stability testing of product boards. Since it is not a one-person battle, teamwork becomes even more crucial. Moreover, large companies often have strategic partnerships with chip suppliers, obtaining corresponding support resources that are much better in terms of strength and speed compared to ordinary companies, which is greatly beneficial for honing FPGA technical skills.
To work in such companies, I believe one needs to cultivate:
-
Self-learning ability.
If the company has relevant training, seize the opportunity to learn well; if not, one must strengthen professional knowledge during work hours, making oneself an indispensable talent. Additionally, it is important to note that a company is not a school; they need employees who can get things done, not just those who talk big without action.
-
Communication and coordination skills.
When encountering difficult problems, it is essential to initiate group discussions for diagnosis promptly. Do not stubbornly bear it alone; this adds pressure on yourself and affects project development progress. When necessary, involve the chip supplier’s support team for joint discussion and analysis. It is crucial to recognize one’s shortcomings, respect the opinions and suggestions of other team members, and frequently exercise communication and coordination skills to prepare for future team leadership.
-
Stress resistance.
FPGA development is notoriously challenging, ranking at the top of main control chips (CPU, DSP, FPGA, dedicated chips, etc.). Chip manufacturers are continuously upgrading device software to meet market demands, which can be a disaster for R&D. However, to enhance the competitiveness of the final product and our own value, we must learn and master this. Additionally, company projects often proceed strictly according to expected timelines, and when encountering difficulties, overtime is a must. Therefore, we should exercise regularly, read more, and cultivate hobbies to alleviate the frustrations of project development. It is a disgrace to the industry when companies focus solely on work efficiency, treating R&D as a machine for overtime, leading to reports of R&D personnel committing suicide.
-
Career planning ability.
In large companies, job tasks are singular, and there are high demands for professional depth. One must gradually plan and adjust their future path, aiming for professional depth to become a technical expert, or for professional breadth to become a system engineer, or shift to roles outside of technology. Be proactive in your work, and once you choose a path, walk it well. Avoid being indecisive, merely filling positions, and coasting through good times; when facing situations like the current wave of layoffs in foreign companies, such as Nokia, Cisco, and Microsoft, it becomes significantly harder for those who have been complacent to find re-employment. Everything is subject to cause and effect; working hard for the company is equivalent to working hard for your future. As long as one has the ability, there will always be opportunities to start their own business and create more social value in the future.
In small companies, there is a high degree of freedom, and the position of an FPGA engineer is often not common. Engineers often need to fulfill various roles based on project requirements, handling hardware, software, logic, and mechanical models together. On the surface, this may seem like a mixed bag of tasks, and newcomers often feel like they are just going through the motions. However, small companies have their advantages; the complexity of products is relatively low, and the speed of project development is faster, allowing for a greater sense of achievement, which is a stark contrast to the sense of helplessness sometimes felt in large companies. Furthermore, due to the smaller scale of small companies, the possibility of directly competing with large companies is low; they often produce supplementary products around large company platforms or create new niche products that large companies are unwilling or have yet to notice. As R&D personnel, being able to directly or indirectly engage with end-industry applications provides a clear understanding of product functionalities and industry research, making it easier to start a business in the future and develop more niche industry products.
In small companies, I believe one needs to cultivate:
-
A holistic view of product design.
Proactively research product application needs, integrate existing solutions, and speculate on possible improvements to develop and design product highlights that win market share in niche industries. The technical content of the product itself is not high, so there is no need to get bogged down in technical details; as long as it can be implemented and produce products, that is the value of R&D.
-
Technical breadth.
Familiarize yourself with commonly used chip platforms and popular implementation solutions. During product design, try to choose mature chip platforms and architectures to reduce product development risks and investments.
-
Communication skills.
Small company owners generally do not pay much attention to R&D, and the investment in R&D is limited. Often, the R&D team consists of only a few members. A long-term lack of communication can lead some friends to appear dull and introverted, which can harm their future careers. It is essential to seek opportunities to communicate with people from other departments in the company and avoid painting oneself into a corner. Actively participating in offline salons and activities can help develop communication skills.
-
Patience.
Life is long, and the future is bright; the survivors are the kings. As the saying goes, ‘Love the line you are in,’ opportunities are always reserved for those who are prepared.
3. Question: What professional skills should a junior engineer possess?
Andrew: As for the professional skills required for FPGA engineers, opinions vary. I mentioned several in my answer to the first question. Here, I will specifically list my personal views for reference:
-
Timing design and simulation capability.
Timing is a designed aspect; some common circuit modules must be mastered, such as pipeline operations, state machines, local bus interfaces, and memory read/write timing design. There are countless FPGA-related books; I recommend two: “FPGA Prototyping by Verilog Examples,” by American-Chinese author Pong P. Chu, which serves as a foundational textbook for Verilog based on the Xilinx Spartan3E development kit, available for download as a PDF online; another book, which has a Chinese translation published, can be purchased on Amazon, authored by Kris, translated by Meng Xianyuan, titled “Advanced FPGA Design: Architecture, Implementation, and Optimization.” This book is excellent and concise, though the translation could be improved. These two can serve as ‘red books’ for learning FPGA methodologies.
-
Circuit debugging capability.
A stable product is built on continuous debugging and improvement. Be proficient in using common testing tools, such as multimeters, oscilloscopes, and logic analyzers. Familiarity with debugging tools provided by FPGA manufacturers can significantly enhance FPGA design efficiency, such as SignalTap II mentioned earlier. It’s also advisable to master auxiliary debugging tools, such as serial ports and network packet analysis tools, etc. There are many small tools related to electronic design; choose those that suit your work needs.
-
Document reading and writing abilities.
As an FPGA engineer, you will inevitably deal with the English documentation of device software. When reading documents, it is crucial to clarify which documents and chapters to read and where to find them. I can’t cover all of this in one go, but I once posted a list of ALTERA FPGA resources on a forum, which received a lot of attention and is still a hot topic. It is advisable to proactively communicate with FAE (Field Application Engineer) from relevant chip manufacturers to obtain effective technical support; of course, documents need to be read by oneself; others cannot read them for you forever. Additionally, internal technical accumulation in the company and document writing are necessary. Some tools need to be mastered, such as waveform drawing tools like TimeGen or Timing Designer, and word processing software like Word or WPS, etc. Regarding document construction, some companies do not emphasize it much, but documents are very important and necessary for team internal reviews and future references.
-
Presentation and communication skills.
As the saying goes, ‘talking without practice is a false skill, practicing without talking is a foolish skill; both talking and practicing is the true skill.’ Internal team discussions about product requirements, solution planning, and problem diagnosis all require presentation and communication skills. Even when asking the boss for a raise, it is necessary to present one’s achievements effectively.
4. Question: What have been your biggest difficulties and challenges since you started your career? Can you share your experiences and thoughts with us?
Andrew: For me personally, the biggest difficulty and challenge in learning FPGA occurred during my university years. Due to being overly obsessed with web design in high school, I neglected my studies and ended up at a not-so-prestigious engineering university. After the first year, I did not return home for the summer vacation and was introduced by a fellow villager to a DSP group organized by a teacher. There were two groups in the team: one was researching fingerprint recognition based on TI DSP, and the other was studying ALTERA FPGA, using the DE1 development board from Altera. At that time, I had just finished studying circuits and was curious about the MATLAB experiments in the appendix, so I played with MATLAB for a while to solve circuit problems. I knew nothing about DSP or digital circuits, and since there were more people studying DSP in the group, I was assigned to the FPGA group. In just two months over the summer, the teacher assigned us tasks from MIT’s ‘Digital Signal Processing Experiment Based on MATLAB’ and we also self-studied parts of the ‘Digital Circuits’ chapters, learning the basic operational processes of Quartus II. By the first semester of my sophomore year, I had managed to run through the few experimental examples that came with the DE1 development board, marking my entry into the field. At that time, I had no idea what FPGAs could do; I was simply fascinated. The teacher often introduced us to learning methods and assigned experimental tasks, and the rest was self-study. Unfortunately, our teacher disappeared for unknown reasons, and I have not heard from him since. Since few people in the school understood FPGAs, I consulted many teachers, most of whom were focused on microcontrollers and DSP. I also emailed Junlong Technology and Arrow Electronics, but ultimately received no replies. Therefore, starting from my sophomore year, I was purely self-learning FPGA. This was the biggest difficulty and challenge on my FPGA learning journey.
Fortunately, I discovered the blog of Oomusou, who had previously worked in software. At that time, he was in his 30s, studying for a master’s degree at NTU while serving as a teaching assistant for undergraduate FPGA experiments. He wrote hundreds of blog posts detailing the experimental steps and insights based on the DE series development boards. I thoroughly researched and experimented with most of his blog posts. His writings were primarily aimed at guiding the undergraduate FPGA experimental courses at NTU and followed a thesis format, discussing principles and code explanations in detail, with all referenced content clearly cited. This self-study experience had a profound impact on me. Later, I diligently studied SOPC systems and the Nios II soft processor, joining the renowned ‘SOPC Technology Alliance’ QQ group, where the group leader, Brother Teng Long, Zhang Jingxiu, is the author of ‘SOPC System Design and Practice.’ In this group, I met many FPGA enthusiasts, and we have maintained our relationships to this day. Therefore, I believe in the immense power of the internet; no matter where you are, as long as you are interested, you can self-learn any technology, and my personal experience is a vivid case.
Finally, I would like to summarize my FPGA learning insights using a quote from the old gentleman Yang Zhenning: ‘True feelings lead to insightful articles.’ First, one must have genuine interest to learn and explore; interest is the first teacher. Then, if you can achieve some small results independently or in collaboration while studying and researching, such as participating in electronic competitions to realize some feasible functions that reflect your ideas, that would be a brilliant insight, creating your own accumulation and highlights. Lastly, writing articles means continuously learning from project practices over the years, gradually solidifying into a certain level of professional cultivation, embedding your thoughts into product development and design.
5. Question: What stages do you think exist in the process of growing from a ‘Junior’ engineer to a ‘Senior’ engineer?
Andrew: This topic is challenging and profound, and I may not be able to handle it well. I believe that from a product design perspective, junior engineers may only cover some basic designated functional module development and design, which can be quite challenging. They may need to seek guidance from more experienced colleagues, and their independence in work needs to be gradually strengthened. The products they develop may not be comprehensively considered. However, they have advantages; they are young, eager to learn, proactive, and do not have obvious outdated thinking patterns or bad work habits; they only lack work experience. If the company has a good talent development mechanism, becoming a senior engineer is just a matter of time. In contrast to junior engineers, senior engineers are more adept at working on system architecture levels; they may not be more proficient at the execution level than junior engineers, but they are battle-hardened and have a deep understanding of industry applications, able to sensitively identify potential needs in the industry and timely translate them into product project development architectures and plans. They are strategic talents and indispensable pillars of R&D companies.
Generally speaking, during the junior engineer stage, what they can do is assist others, perform some assigned tasks, and study the implementation of certain specific, potentially referenceable project modules while gradually accumulating development experience from verified project modules. The next step is to independently undertake and complete some planned projects with specific indicators and unique insights and professional insights. This process may vary in time span depending on different companies and products. Ultimately, quantitative changes lead to qualitative changes; as more projects are developed, the understanding of industry applications becomes clearer, naturally elevating them to the level of a senior engineer.
6. Question: Who have influenced you in your life, and what insights have you gained from them?
Andrew: Many people, primarily my teachers and friends at different stages of my life. They have taught me to learn from others’ strengths, acknowledge my weaknesses, and showcase my uniqueness.
7. Question: As a senior FAE, what are your thoughts on this role?
Andrew: There is a small story that you may be familiar with. Once, a person went to see a doctor, saying he felt very depressed, that life was cruel and harsh, and he felt very lonely in this threatening world. The doctor said, ‘Don’t worry, there’s a famous clown in town who tells all the jokes. After watching his performance, you won’t feel troubled anymore.’ The person cried and said, ‘But doctor, I am that clown.’ This story may be exaggerated, but I believe it reflects, to some extent, the current state of consulting support personnel, and FAE may be no exception.
FAE is the most sincere friend of R&D personnel! They recommend the most advanced and suitable technical solutions to R&D personnel, help solve one technical problem after another, and promptly point out potential issues and avoidance methods; while accelerating product development speed, they also indirectly transmit some R&D pressures. Thus, when different pressures converge on a single FAE, the pressure on them also increases. Sometimes, they may not respond to your emails or answer your calls promptly; that’s because they are too busy, so please don’t curse them; be patient and wait.
FAE is a highly challenging job! Especially for proactive device FAEs. They need to maintain a proactive learning spirit, digest the latest technologies from chip manufacturers promptly, and disseminate them to R&D friends; they require good mental and physical stamina to respond and reply to various technical questions from different companies, projects, and R&D personnel within a short time.
FAE is a fortunate job! They can access diverse industry applications and learn from various R&D personnel, gaining insights into their precious and brilliant development design philosophies.