Application of Modular Thinking in Circuit Design
Designing a project from a system perspective, rather than just drawing a circuit board or devising a scheme.
Background
In software development, we often encounter a variety of complex data and situations. If left unattended, as the development progresses, the code entropy will increase dramatically. Functions and libraries have emerged to address such problems. By encapsulating the code layer by layer, we obtain a well-organized system, taking a global view without concerning ourselves with unnecessary details.
Drawing a parallel to hardware circuit design, the underlying building blocks correspond to discrete components, and the modules that implement specific functions are akin to function encapsulation. At the global level, various modules can be called upon to form a class of circuit solutions. The encapsulation and reusability concept enables us to design circuits systematically, from top to bottom, much like constructing a kingdom.
Note: The term "encapsulation" in the first paragraph is a computer programming term, while in the subsequent text, it refers to a circuitry term.
Component Layer
At the component level, it is essential to standardize the specifications of each element (component) as much as possible. My personal solution is to use component symbols/PCB packages that appear in my circuit designs from a library I've personally compiled.
Some might wonder why we need to do redundant work when most component symbols and packages can be easily found online, and some individuals have already organized over 90% of components into libraries. As the saying goes, the foundation determines the superstructure. For instance, what kind of symbol for a particular chip facilitates wiring, which package for a specific inductor is more readily available, which MOS package allows for effective heat dissipation, and so on. Even the most skilled individuals' standards may not fully suit your needs. Establishing your own standards and building your house on your land is the wisest course of action.
Functional Module Layer
Building upon the foundation of discrete components, we can create various functional modules. The purpose of these modules is to facilitate rapid development. For example, in many projects, I often require voltage regulation circuits. I can select the most efficient solutions, package them as modules based on data sheets, provide function interfaces (input/output ports), and label attributes (regulation current/efficiency, etc.). When needed, I don't need to worry about the internal workings of the functional module. It's like assembling building blocks; I stack them at the top level when designing a project plan.
Altium Designer offers the ability to create snippets. We can encapsulate the functional modules we encounter in our daily work, making them easy to retrieve in the future.
Project Layer
At the project plan level, the modular thinking is quite evident. Through hierarchical schematic design in Altium Designer, we can focus on the interfaces of each module and directly manipulate the interfaces to achieve the overall circuit's functionality. In this design mode, the coupling between modules is not high, allowing for easy replacement of modules that perform a specific function. Multiple channels of functionality can also be achieved through module reuse. Well-structured projects have many benefits for subsequent PCB modular layout and multi-channel wiring reuse, making troubleshooting and updates easier in the future.
References and Acknowledgments
- Thoughts on Programming
- linyuxuanlin/Power_Lib_Altium (A personal compilation of schematic and footprint libraries)
- linyuxuanlin/Modularity_of_Functional_Circuit (Personal drawings of functional circuit modules)
- Multi-Sheet and Multi-Channel Design
- In-Depth Discussion on Modular Firmware Architecture for Microcontrollers
Article Author: Power Lin
Original Source: https://wiki-power.com
Copyright Statement: This article is licensed under the CC BY-NC-SA 4.0 license. Please attribute the source when republishing.
This post is translated using ChatGPT, please feedback if any omissions.