理解原理图是每个硬件工程师的基本功,但面对复杂的电路图时,很多人都会感到困惑和挫败。其实,问题的根源往往不在于原理图本身有多复杂,而在于我们缺乏有效的阅读方法。在本文中,我们将探讨如何通过结构化的思维和模块化的逻辑,来提升对原理图的理解,从而更轻松地掌握电路设计的核心要点。
1. 缺乏结构化框架
当原理图在整体上缺乏结构化框架时,阅读体验会像在一个杂乱无章的房间里寻找物品,耗时费力且容易出错。如果我们设计的原理图没有结构化框架,不仅自己难以理解,其他人阅读时也会遇到困难。
如下图所示。一个原理图将FPGA、DDR、AD/DA等关键模块独立展示在各自的页面上,这种做法就像将房间内的物品进行分类摆放,使得查找和理解变得简单易行。而如果原理图缺乏这种结构化布局,阅读起来会非常费劲。
因此,在绘制原理图时,我们应当优先采用结构化的框架设计,这不仅能使我们的设计更清晰,也能让其他人阅读时更加方便。为了达到这一目的,常见的方法是使用Block Diagram(模块图)。在原理图的第二页或首页呈现整个单板的整体框架。例如,在下图所示的单板原理图中,Top层就展示了系统的原理框图。通过这种方式,可以明确各个模块之间的关系,使得后续的分析和理解变得更加直观和高效。
通过对比之前提到的两个单板命名,我们可以明显感受到,结构化的原理图更易于理解。这也解释了为什么很多人觉得某些原理图难懂。
那如果我们真的遇到没有结构化框架的原理图,有什么方法可以帮助我们理解呢?答案就是——引入结构化思维。即使别人画出的十几页原理图缺乏结构化,我们也可以通过自主划分来添加结构。以下是五种常见的框架类型,可用于分解和分析原理图:
电源模块通常是原理图中最基本且重要的部分,但它们也可能造成干扰。因此,我们可以先将电源模块划分出来,单独分析。通常情况下,复杂的原理图会涉及多路电源,我们可以将同类型的电源模块归类,从而减少它们对其他部分的干扰。
比如,在上面的原理图中,可以把这四个page视为电源模块。在查看其他部分的原理图时,可以暂时不关注这些电源模块,甚至可以跳过它们。只有在需要专门研究电源拓扑时,才回过头来详细分析每个page内容。
协议类主要包括常见的UART、I2C、SPI、RS232、RS485、USB等。在分析这些协议的原理图时,我们无需深入理解协议的工作原理或时序关系。关键是知道每种协议的信号线数,以及各器件的主从关系。例如,对于I2C和SPI,主要是确认每种协议的信号线配置及主从设备的连接即可。
以Flash模块为例,我们只需要了解四根数据线、片选和时钟信号分别连接到哪些器件。至于CLK频率等细节,可以在掌握了整体原理图功能后再进行深入了解。如果在细节上纠结,例如SPI为什么有四根数据线而不是两根,可以等到对整体原理图有了基本认识后,再回头处理这些问题。这种方法有助于避免因过度关注细节而造成的混淆。
系统类原理图通常涉及FPGA、SOC等核心控制器,尽管在PCB设计时可能较为复杂,但其最小系统相对固定,因此理解难度并不大。常见的系统结构是FPGA+DDR+Flash,或SOC+DRR+eMMC/Flash。看到SOC或CPU这类主控器时,应首先想到缓存和存储单元,这是系统类必备的三要素。
普通类的原理图通常较为简单,主要涉及少量GPIO驱动的外设,如蜂鸣器、按键和LED等。这些外设本身配置简单,因此理解起来较为轻松。
对于这种类型的原理图,我们只需知道哪个MCU控制了这些外设。至于信号的高低电平控制,可以暂时不必关注,后续结合软件和业务逻辑来进一步理解这些细节会更为清晰。
附加类信息主要是对整个原理图的补充说明。在复杂单板的原理图中,通常会在开头列出单板原理图的总页数以及每一页的名称。在结尾,还会有一页用来记录原理图的创建时间、修改版本等信息,便于后续参考。
虽然这些附加信息能帮助我们更快地理解原理图,但不必过多关注这些细节。专注于核心内容更有助于我们掌握整体设计的要点。
无论是什么样的原理图,都可以用上面的逻辑框架来拆解。整体上会对单板的原理图有结构上的认识,知道这个单板包含哪些模块,包含几个CPU,有哪些协议类的器件等等。
3.模块化逻辑与细节处理
过于纠结细节也会影响对原理图的理解。以一幅包含SOC的原理图为例,硬件需要配合软件才能正常工作,而软件则涉及到逻辑设计。如果我们完全不了解NXP Demo板的功能,仅凭电路图很难看懂其工作原理
虽然我们可以通过数据手册了解芯片的核心功能,但对于其具体信号的工作原理,如什么时候拉高、什么时候拉低,如果不清楚具体的应用场景,很难准确理解。因此,过分关注细节反而会让我们迷失方向。我们只需了解核心控制器件实现了哪些控制即可,不必纠结于实现的细枝末节。
这就是上面说的第二点,在细上没有使用模块化的逻辑。其实我们只需要知道,这个器件实现哪些控制就可以,至于细节方面到底如何实现,可以不需要特别在意。
无论这种原理图如何变化,我们都可以将其模块化,如下图所示
可能不是每个模块都在原理图中呈现,像有些ADC器件内部就集成了滤波器之类的功能电路,但是模块化后,就是三个部分,传感器,信号调理,ADC。
再比如,上面提到的Flash原理图,看起来和平时的不一样。
若不熟悉具体器件的使用,可能会影响理解。例如,Flash有X1、X2、X4三种数据传输模式,分别对应标准、双路、四路SPI。如果我们能提前掌握这些知识,就不会在细节上过多纠结。
模块化逻辑的缺乏也会增加理解难度。如果不知道哪些模块之间存在关联,容易将无关信息混杂在一起,导致混乱和误解。因此,在处理细节时,应以模块化的逻辑为指导,重点关注核心功能,避免过多纠缠于细节。
在阅读原理图时,结构化思维和模块化逻辑是理解的关键。通过建立整体框架和掌握模块间的逻辑关系,我们可以更高效、更准确地解读复杂的电路设计。这不仅有助于提高工作效率,还能避免因细节纠结而产生的困惑。无论是绘制原理图还是阅读他人的设计,这种方法都将帮助我们更好地理解和应用电子设计。